Welcome to DirectorWiki
DirectorWiki
A structured, searchable reference for Macromedia / Adobe Director, Shockwave, and the Lingo scripting language. The content combines the official Director MX 2004 documentation corpus with original reverse-engineering research into the native runtime binaries. It is written for the people doing the work: emulator developers, preservationists, and anyone reading decompiled Lingo from an old game.
Director was discontinued in 2017 and Shockwave in 2019, leaving thousands web games without an official runtime. This wiki documents three layers of knowledge needed to keep that content running:
- The documented surface: the Lingo language and the Director scripting API as Macromedia shipped it.
- The behavioral contract: event ordering, message routing, ink compositing, hit testing, and the other semantics that documentation under-specifies but old movies depend on.
- The native truth: findings recovered from
Director.exe, Dirapi.dll, Iml32.dll, and the Shockwave players with Ghidra: symbol tables, property descriptors, compositor callbacks, presentation logic.
Evidence levels. Native Internals pages label claims by strength: manual (official documentation), native table (symbol/string tables found in binaries), native code (decompiled implementation), microtest (verified against a real Director runtime). Anything below native code is a map, not proof.
Contents#
Getting Started#
| Page | Covers |
|---|
| What is Director? | History and version timeline 1987-2019, the Director/Shockwave/Lingo/Xtra split, why preservation is hard. |
| File Formats | .dir/.dxr/.dcr/.cst/.cxt/.cct, the RIFX container and its chunks, afterburner compression, Lingo bytecode layout, projectors, signature-based identification. |
| Glossary | Definitions for every Director/Lingo term used on this wiki. |
| Links & Downloads | Director installers on archive.org, Shockwave Player, emulators, decompilers, manuals, community archives. |
Lingo Language#
| Page | Covers |
|---|
| Lingo Basics | The five script types, handlers, verbose vs dot syntax, the JavaScript syntax mode, comments and continuation. |
| Variables, Operators, Control Flow | Local/global/property scope, assignment forms, operator precedence, if/case/repeat, calling conventions, the result. |
| Data Types and Coercion | Every value type, constants, type predicates, truthiness rules, numeric/character coercion, symbols, points, rects, colors. |
| Lists and Property Lists | Both list kinds, access and mutation APIs, sorting, reference semantics, getProp vs getaProp, duplicate keys, common data-structure patterns. |
| Strings and Chunk Expressions | Chunk addressing (char/word/item/line), the itemDelimiter, chunk mutation, split/search idioms, parsing control-character-delimited network packets. |
| Parent Scripts and Objects | Parent scripts, child objects, new/rawNew, ancestor-based inheritance, the actorList, timeout objects, patterns from shipped games. |
| Behaviors | Sprite/frame behaviors, getPropertyDescriptionList, instance state, messaging between behaviors, dynamic attachment. |
| Pitfalls, Debugging, Porting | The ten classic traps, debugging technique, version differences D4-MX2004, porting rules, how to read decompiled Lingo. |
Director Concepts#
| Page | Covers |
|---|
| The Director Object Model | The Player/Movie/Cast/Score/Stage hierarchy, the _movie/_player/_mouse/_key facades, MIAWs, coordinate spaces, score-vs-Lingo authority rules. |
| Casts and Cast Members | Cast libraries, lookup by name and number (and its exact search order), member properties, registration points, runtime member creation. |
| Score, Stage, and Playback | Channels and sprite spans, drawing order, markers and navigation, tempo, transitions, palettes, score recording, film loops. |
| Sprites | Geometry and appearance properties, the transform pipeline order, puppeting, sprite names, interaction properties, decompiled-code idioms. |
| Ink Modes | All ink IDs 0-41 with per-pixel semantics, matte and mask coverage rules, background-transparent keying, blend math, hit-area effects. |
| Media Types | Bitmaps and palettes, imaging Lingo (copyPixels), fields vs text members, shapes, sound and cue points, video, Flash members, film loops, Shockwave 3D. |
| Memory, Preloading, Streaming | The lazy loading model, purge priorities, preload APIs, Shockwave streaming order, the async network API. |
Events & Messaging#
| Page | Covers |
|---|
| Event Lifecycle | Exact startup/per-frame/shutdown event order, updateStage semantics, navigation re-entry, an implementer test checklist. |
| The Message Hierarchy | Routing order through primary handlers, behaviors, cast/frame/movie scripts; pass and stopEvent; sendSprite/sendAllSprites/call; dispatcher pseudocode. |
| Input: Mouse, Keyboard, Hit Testing | All input events, state properties, hit-testing rules by ink and member type, keyboard focus, cursors, text-under-pointer APIs. |
| Timing, Timers, Synchronization | The clocks, frame-rate-independent animation, timeout objects, the classic timeout mechanism, idle, cue points, a timing checklist. |
API Reference#
| Page | Covers |
|---|
| Objects | All 48 documented scripting objects: core, media types, scripting Xtras, 3D, with roles and reference page numbers. |
| Methods A-Z | All 488 documented methods with Scripting Reference page numbers, plus an annotated table of the most frequently used. |
| Properties A-Z | All 766 documented properties with page numbers, grouped-by-purpose orientation tables. |
| Events, Keywords, Operators, Constants | The remaining 121 documented names with notes and cross-references. |
Native Internals#
Original reverse-engineering research into the MX 2004 / Shockwave binaries.
| Page | Covers |
|---|
| Native Runtime Architecture | What each binary does (Dirapi.dll, Iml32.dll, Proj.dll), the Ghidra methodology, evidence standards, documented failure modes. |
| Native Lingo Internals | Symbol interning and its ID-allocation quirks, the 169-row API registry, property descriptor records and flag bits, the descriptor executor's branch families, native error codes. |
| Native Rendering Internals | The IML32 blit route, the final compositor callback families with exact per-pixel formulas, matte/mask coverage streams, keying rules, the sprite-property-to-compositor bridge. |
| Native Stage, Input, Timing | Projector flag bits, the presentation rect recompute (CenterStage/ResizeStage), window rebinding and channel rebuilds, the input dispatch pipeline, remaining open questions. |
Preservation & Emulation#
| Page | Covers |
|---|
| Building a Director-Compatible Engine | The emulation landscape, architecture priorities, ECS mapping rules, implementation traps, an 18-point compatibility test checklist. |
| Xtras | The plugin system, distribution rules, FileIO and NetLingo, the full recovered Multiuser method table, how to shim Xtras honestly. |
Common lookups#
External resources#
The Links & Downloads page carries the full annotated list. The short version:
Agent skill downloads#
| Skill | Download | Contents |
|---|
| Director MX Reference | director-mx-reference-skill.zip | Reusable agent skill with a searchable corpus generated from this wiki, all source markdown pages, and a bundled search script. |
| Lingo Nutshell | lingo-nutshell-skill.zip | Reusable agent skill for interpreting, debugging, and preserving legacy Director Lingo code with a bundled lookup guide and source reference. |
Scope#
The content here favors what is useful for preservation: exact semantics, ordering rules, native evidence, and working Lingo idioms. Authoring-IDE minutiae and anything that does not affect runtime behavior is left out. Native Internals pages state their evidence level and keep unproven cells marked as research targets rather than fact.