Disassembling Macromedia Director 5.0
Latest News - September 2017
Update: Thanks to Eugene's comment down below, I've started this little side-project again. We're making damn good progress too!
A lot of work had already been done in the ScummVM project to support Director, unawares to me, but it had recently fallen quiet. Eugene reached out and I'm more than happy to help! Suffice to say that I've already got a lot of D4 demos going... we're a long way off D5 though.
Keep an eye on my source repository here. Currently I'm hacking away to get momentum, but the repo will be cleaned up and made ready in due course.
Next update: I've had commit access for a while, so look towards the Director engine in ScummVM for further updates.
Next update: Progress is slow...
Why?.... Macromedia Director (now called 'Adobe Director') 5.0 was built in 1996. It was a great platform for creating multimedia presentations and this, at the time, was used by game developers as an engine to build point-and-click adventures.
One of these games was known as 'Gadget'. Now, Gadget was originally released on a single CD back in 1993, so I assume it was built under Director 3.x, but it was then re-released as a 4-CD package with better audio and visuals. In 2003 the game was also re-mastered for iOS (Apple products), providing a HD version.
Anyway, the game became part of my childhood and, although the actual story-line was very linear, everything about it drew me in. As computers progressed, the ability to run the game became more and more difficult. It got to the point now, with 64-bit operating systems, that the application just wouldn't run. Also there'd be issues with resolutions, as now our monitors are well over 4x larger than the original target screen resolutions.
Therefore my goal was to decode/decipher/disassemble the Director movie format and create an engine to play these movies on all platforms. Something like ScummVM would provide a great basis to build an engine in to and that is currently the end-goal.
How this all started...
This whole concept began because I wanted to play the game and quickly got an "Insufficient memory" error... what? I had 4GB of ram! I assumed the poor application tried to store my amount of available RAM in some tiny variable and potentially got a very negative number. I whipped out the trusty IDA Disassembler and Ollydbg debugger and got to work. Within an hour I had replaced a few bytes in the projector executable to bypass the memory check and the game was running... but it was 640x480 and I knew there was more that could be done.
Director Architecture
Director Movies are created in Macromedia Director which comes in versions for both Macintosh (68k, PPC) and Windows. These are saved as DIR files and are completely self-containing: audio, images, videos, scripts and all the rest of it are embedded in the movies. The user then has the ability to export their movie as a protected DXR or an executable projector. It seems that one can only build a projector for the platform they are working on... you must somehow open your movie in Director on other platforms to create projectors for those systems.
Anatomy of a Director Movie (WORK IN PROGRESS!)
This section will detail the structure of a Director Movie. As work has been progressing it has been noted that the main structure of the movie has stayed backwards-compatible since Director 3.x. I've therefore noted what parts relate to what versions where possible.
Updates
When? | What? |
---|---|
10th November 2011 | Initial creation of this page for the greater good. A lot of work had been happening in the background and it was time to tell the world as I knew I could lose all bytes very quickly and thought it would be safer kept online. |
January 2017 | Work starts again. Keep an eye on the source repository here. |
Structure
Below is the known structure of a Director Movie. All start locations and lengths are measured in bytes. Note that there are alpha characters throughout the data... I've replaced known characters with the codes, but also duplicated for sake of padding out the bytes.
Offset/Bytes | Explanation | |
---|---|---|
0x00 | RR II FF XX 00 00 22 F2 MM VV 99 33 | File format: RIFX, File length: 8946 bytes, Movie format: MV93 |
0x0c | ii mm aa pp 00 00 00 18 00 00 00 01 00 00 00 2C 00 00 04 C1 00 00 00 00 00 00 00 00 00 00 00 00 |
|
0x2c | mm mm aa pp 00 00 03 38 00 18 00 14 00 00 00 28 00 00 00 1A FF FF FF FF FF FF FF FF 00 00 00 0D RR II FF XX 00 00 22 F2 00 00 00 00 00 01 00 00 00 00 00 00 ii mm aa pp 00 00 00 18 00 00 00 0C 00 01 00 00 1E 90 92 84 mm mm aa pp 00 00 03 38 00 00 00 2C 00 00 00 00 1E 90 91 E4 KK EE YY ** 00 00 00 FC 00 00 03 6C 00 00 00 00 00 00 00 00 VV WW CC FF 00 00 00 50 00 00 04 70 00 00 00 00 00 00 00 00 FF XX mm pp 00 00 19 FF 00 00 04 E8 00 00 00 00 00 00 00 00 MM CC ss LL 00 00 00 3A 00 00 1E F0 00 00 00 00 00 00 00 00 SS oo rr dd 00 00 00 18 00 00 04 C8 00 00 00 00 00 00 00 00 VV WW FF II 00 00 00 77 00 00 22 0E 00 00 00 00 00 00 00 00 VV WW SS CC 00 00 00 2E 00 00 22 8E 00 00 00 00 00 00 00 00 ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 0C ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 17 ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 0B ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 0A CC AA SS ** 00 00 00 04 00 00 1F 32 00 00 00 00 00 00 00 00 ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 13 FF mm aa pp 00 00 00 4E 00 00 21 72 00 00 00 00 00 00 00 00 CC ii nn ff 00 00 00 3D 00 00 21 C8 00 00 00 00 00 00 00 00 LL cc tt xx 00 00 00 6C 00 00 20 1C 00 00 00 00 00 00 00 00 ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 14 ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 FF FF FF FF CC AA SS tt 00 00 00 D6 00 00 1F 3E 00 00 00 00 00 00 00 00 SS TT XX TT 00 00 00 2D 00 00 22 C4 00 00 00 00 00 00 00 00 ff rr ee ee 00 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 0F LL nn aa mm 00 00 00 22 00 00 21 48 00 00 00 00 00 00 00 00 LL ss cc rr 00 00 00 B0 00 00 20 90 00 00 00 00 00 00 00 00 66 31 66 00 64 00 1E 8F 1E 8D E8 98 00 00 |
This is the Memory Map of the Movie. It defines the type of each 'member' in the movie, their location in the file, their size and then two DWORDs of other information which I am yet to decode. There is also a large chunk of data at the bottom which I haven't looked into yet. (Although there is a '0x14' in the 'header' and there are 0x14 entries..) |
0x370 | KK EE YY ** 00 00 00 FC 00 0C 00 0C 00 00 00 14 00 00 00 0B 00 00 00 16 00 00 00 15 SS TT XX TT 00 00 00 0E 00 00 04 00 CC AA SS ** 00 00 00 11 00 00 04 00 CC ii nn ff 00 00 00 05 00 00 04 00 FF XX mm pp 00 00 00 10 00 00 04 00 FF mm aa pp 00 00 00 12 00 00 04 00 LL cc tt xx 00 00 00 06 00 00 04 00 MM CC ss LL 00 00 00 07 00 00 04 00 SS oo rr dd 00 00 00 04 00 00 04 00 VV WW CC FF 00 00 00 08 00 00 04 00 VV WW FF II 00 00 00 09 00 00 04 00 VV WW SS CC 00 00 00 0D 00 00 04 00 VV WW tt kk 00 00 00 0D 00 00 04 00 VV WW tt kk 00 00 00 0D 00 00 04 00 VV WW tt kk 00 00 00 0D 00 00 04 00 VV WW tt kk 00 00 00 17 00 00 04 00 cc cc ll 6D 6F 72 79 20 49 6E 73 70 65 63 74 |
Here's the actual timeline of the movie. It has two values for each cast member. At the end is a large chunk of random data... it decodes to:
mory InspectorText Inspector Which to me looks like the old memory hadn't been cleared and written to disk. The actual offset and length of this member means that this information at the end is just padding. I've adjusted my code to skip the tuple if the first DWORD is out of bounds of the expected amount of members. |
0x47c | VV WW CC FF 00 00 00 50 00 50 04 C1 00 90 00 C0 02 70 03 40 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 01 00 00 03 82 04 C1 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F 00 01 25 6C 00 00 00 3C CC B7 56 26 00 01 00 00 00 00 04 00 FF FF 00 00 |
This is a Cast Something? Unknown. |
0x4d7 | SS oo rr dd 00 00 00 18 1E 92 97 86 00 66 00 00 00 00 00 01 00 00 00 01 00 14 00 04 00 01 00 01 |
Some form of Sort Ordering? |
0x4f7 |
FF XX mm pp 00 00 19 FF 3B 20 43 6F 70 79 72 69 67 68 74 20 31 39 39 34 2D 31 39 39 36 2C 20 4D 61 63 72 6F 6D 65 64 69 61 2C 20 49 6E 63 2E 20 20 41 6C 6C 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2E 0D 3B 0D 3B 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 3B 0D 3B 20 44 65 66 61 75 6C 74 20 46 6F 6E 74 20 4D 61 70 70 69 6E 67 20 54 61 62 6C 65 20 66 6F 72 20 44 69 72 65 63 74 6F 72 20 35 2E 30 20 4D 61 63 69 6E 74 6F 73 68 20 61 6E 64 20 57 69 6E 64 6F 77 73 2E 0D 3B 0D 3B 20 54 68 69 73 20 66 69 6C 65 20 70 72 6F 76 69 64 65 73 20 61 20 66 6F 6E 74 20 6D 61 70 70 69 6E 67 20 74 61 62 6C 65 20 66 6F 72 20 44 69 72 65 63 74 6F 72 20 35 2E 30 20 66 6F 72 20 57 69 6E 64 6F 77 73 20 0D 3B 20 61 6E 64 20 4D 61 63 69 6E 74 6F 73 68 2E 0D 3B 0D 3B 20 49 66 20 61 20 63 6F 70 79 20 6F 66 20 74 68 69 73 20 66 69 6C 65 20 69 73 20 69 6E 20 74 68 65 20 73 61 6D 65 20 66 6F 6C 64 65 72 20 6F 72 20 64 69 72 65 63 74 6F 72 79 20 61 73 20 74 68 65 20 0D 3B 20 44 69 72 65 63 74 6F 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 2C 20 44 69 72 65 63 74 6F 72 20 77 69 6C 6C 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 69 6E 63 6C 75 64 65 20 74 68 69 73 20 66 6F 6E 74 20 0D 3B 20 6D 61 70 70 69 6E 67 20 74 61 62 6C 65 20 69 6E 20 65 76 65 72 79 20 6E 65 77 20 6D 6F 76 69 65 20 79 6F 75 20 63 72 65 61 74 65 2E 0D 3B 0D 3B 20 54 6F 20 61 64 64 20 74 68 69 73 20 66 6F 6E 74 20 6D 61 70 70 69 6E 67 20 74 61 62 6C 65 20 74 6F 20 61 6E 20 65 78 69 73 74 69 6E 67 20 6D 6F 76 69 65 2C 20 63 68 6F 6F 73 65 20 0D 3B 20 4D 6F 76 69 65 3A 50 72 6F 70 65 72 74 69 65 73 2E 2E 2E 20 66 72 6F 6D 20 74 68 65 20 4D 6F 64 69 66 79 20 6D 65 6E 75 2E 20 20 54 68 65 6E 20 63 6C 69 63 6B 20 4C 6F 61 64 20 66 72 6F 6D 20 46 69 6C 65 2E 20 20 0D 3B 20 55 73 65 20 74 68 65 20 64 69 61 6C 6F 67 20 62 6F 78 20 74 68 61 74 20 61 70 70 65 61 72 73 20 74 6F 20 6C 6F 63 61 74 65 20 74 68 69 73 20 66 69 6C 65 2E 0D 3B 20 0D 3B 20 4E 6F 74 65 3A 20 49 6E 20 74 68 69 73 20 66 69 6C 65 2C 20 61 20 73 65 6D 69 63 6F 6C 6F 6E 20 61 74 20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 6F 66 20 61 20 6C 69 6E 65 20 69 6E 64 69 63 61 74 65 73 0D 3B 20 61 20 63 6F 6D 6D 65 6E 74 2E 0D 3B 0D 3B 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 3B 0D 3B 20 46 4F 4E 54 20 4D 41 50 50 49 4E 47 53 20 0D 3B 0D 3B 20 46 6F 6E 74 20 6D 61 70 70 69 6E 67 73 20 73 70 65 63 69 66 79 20 77 68 69 63 68 20 66 6F 6E 74 20 61 6E 64 20 73 69 7A 65 20 73 75 62 73 74 69 74 75 74 69 6F 6E 73 20 74 6F 20 6D 61 6B 65 20 77 68 65 6E 0D 3B 20 6D 6F 76 69 6E 67 20 61 20 6D 6F 76 69 65 20 66 72 6F 6D 20 6F 6E 65 20 70 6C 61 74 66 6F 72 6D 20 74 6F 20 61 6E 6F 74 68 65 72 2E 0D 3B 0D 3B 20 54 68 65 20 66 6F 72 6D 61 74 20 66 6F 72 20 66 6F 6E 74 20 6D 61 70 70 69 6E 67 20 64 65 66 69 6E 69 74 69 6F 6E 73 20 69 73 3A 0D 3B 0D 3B 20 50 6C 61 74 66 6F 72 6D 3A 46 6F 6E 74 4E 61 6D 65 20 3D 3E 20 50 6C 61 74 66 6F 72 6D 3A 46 6F 6E 74 4E 61 6D 65 20 5B 4D 41 50 20 4E 4F 4E 45 5D 20 5B 6F 6C 64 53 69 7A 65 20 3D 3E 20 6E 65 77 53 69 7A 65 5D 0D 3B 0D 3B 20 20 20 20 53 70 65 63 69 66 79 69 6E 67 20 4D 41 50 20 4E 4F 4E 45 20 74 75 72 6E 73 20 6F 66 66 20 63 68 61 72 61 63 74 65 72 20 6D 61 70 70 69 6E 67 20 66 6F 72 20 74 68 69 73 20 66 6F 6E 74 2E 0D 3B 20 20 20 20 49 66 20 79 6F 75 20 73 70 65 63 69 66 79 20 73 69 7A 65 20 6D 61 70 70 69 6E 67 73 2C 20 74 68 65 79 20 61 70 70 6C 79 20 66 6F 72 20 54 48 41 54 20 46 4F 4E 54 20 4F 4E 4C 59 2E 0D 3B 0D 3B 20 48 65 72 65 20 61 72 65 20 73 6F 6D 65 20 74 79 70 69 63 61 6C 20 6D 61 70 70 69 6E 67 73 20 66 6F 72 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 4D 61 63 69 6E 74 6F 73 68 20 66 6F 6E 74 73 3A 0D 3B 0D 0D 4D 61 63 3A 43 68 69 63 61 67 6F 20 20 20 20 20 20 20 3D 3E 20 57 69 6E 3A 53 79 73 74 65 6D 0D 4D 61 63 3A 43 6F 75 72 69 65 72 20 20 20 20 20 20 20 3D 3E 20 57 69 6E 3A 22 43 6F 75 72 69 65 72 20 4E 65 77 22 0D 4D 61 63 3A 47 65 6E 65 76 61 20 20 20 20 20 20 20 20 3D 3E 20 57 69 6E 3A 22 4D 53 20 53 61 6E 73 20 53 65 72 69 66 22 0D 4D 61 63 3A 48 65 6C 76 65 74 69 63 61 20 20 20 20 20 3D 3E 20 57 69 6E 3A 41 72 69 61 6C 0D 4D 61 63 3A 4D 6F 6E 61 63 6F 20 20 20 20 20 20 20 20 3D 3E 20 57 69 6E 3A 54 65 72 6D 69 6E 61 6C 0D 4D 61 63 3A 22 4E 65 77 20 59 6F 72 6B 22 20 20 20 20 3D 3E 20 57 69 6E 3A 22 4D 53 20 53 65 72 69 66 22 0D 4D 61 63 3A 53 79 6D 62 6F 6C 20 20 20 20 20 20 20 20 3D 3E 20 57 69 6E 3A 53 79 6D 62 6F 6C 20 20 4D 61 70 20 4E 6F 6E 65 0D 4D 61 63 3A 54 69 6D 65 73 20 20 20 20 20 20 20 20 20 3D 3E 20 57 69 6E 3A 22 54 69 6D 65 73 20 4E 65 77 20 52 6F 6D 61 6E 22 20 31 34 3D 3E 31 32 20 31 38 3D 3E 31 34 20 32 34 3D 3E 31 38 20 33 30 3D 3E 32 34 0D 0D 3B 0D 3B 20 48 65 72 65 20 61 72 65 20 73 6F 6D 65 20 74 79 70 69 63 61 6C 20 6D 61 70 70 69 6E 67 73 20 66 6F 72 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 57 69 6E 64 6F 77 73 20 66 6F 6E 74 73 3A 0D 3B 0D 0D 57 69 6E 3A 41 72 69 61 6C 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 3E 20 4D 61 63 3A 48 65 6C 76 65 74 69 63 61 0D 57 69 6E 3A 22 43 6F 75 72 69 65 72 22 20 20 20 20 20 20 20 20 20 3D 3E 20 4D 61 63 3A 43 6F 75 72 69 65 72 0D 57 69 6E 3A 22 43 6F 75 72 69 65 72 20 4E 65 77 22 20 20 20 20 20 3D 3E 20 4D 61 63 3A 43 6F 75 72 69 65 72 0D 57 69 6E 3A 22 4D 53 20 53 65 72 69 66 22 20 20 20 20 20 20 20 20 3D 3E 20 4D 61 63 3A 22 4E 65 77 20 59 6F 72 6B 22 0D 57 69 6E 3A 22 4D 53 20 53 61 6E 73 20 53 65 72 69 66 22 20 20 20 3D 3E 20 4D 61 63 3A 47 65 6E 65 76 61 0D 57 69 6E 3A 53 79 6D 62 6F 6C 20 20 20 20 20 20 20 20 20 20 20 20 3D 3E 20 4D 61 63 3A 53 79 6D 62 6F 6C 20 20 4D 61 70 20 4E 6F 6E 65 0D 57 69 6E 3A 53 79 73 74 65 6D 20 20 20 20 20 20 20 20 20 20 20 20 3D 3E 20 4D 61 63 3A 43 68 69 63 61 67 6F 0D 57 69 6E 3A 54 65 72 6D 69 6E 61 6C 20 20 20 20 20 20 20 20 20 20 3D 3E 20 4D 61 63 3A 4D 6F 6E 61 63 6F 0D 57 69 6E 3A 22 54 69 6D 65 73 20 4E 65 77 20 52 6F 6D 61 6E 22 20 3D 3E 20 4D 61 63 3A 22 54 69 6D 65 73 22 20 31 32 3D 3E 31 34 20 31 34 3D 3E 31 38 20 31 38 3D 3E 32 34 20 32 34 3D 3E 33 30 0D 0D 3B 20 4E 6F 74 65 3A 20 57 68 65 6E 20 6D 61 70 70 69 6E 67 20 66 72 6F 6D 20 57 69 6E 64 6F 77 73 20 74 6F 20 4D 61 63 69 6E 74 6F 73 68 2C 20 43 6F 75 72 69 65 72 20 61 6E 64 20 43 6F 75 72 69 65 72 20 4E 65 77 20 0D 3B 20 6D 61 70 20 6F 6E 74 6F 20 43 6F 75 72 69 65 72 2E 20 20 57 68 65 6E 20 63 6F 6D 69 6E 67 20 62 61 63 6B 20 74 6F 20 57 69 6E 64 6F 77 73 20 6F 6E 6C 79 20 43 6F 75 72 69 65 72 20 4E 65 77 0D 3B 20 77 69 6C 6C 20 62 65 20 75 73 65 64 2E 0D 0D 3B 20 4A 61 70 61 6E 65 73 65 20 46 6F 6E 74 20 4D 61 70 70 69 6E 67 73 0D 3B 20 0D 3B 20 54 68 65 20 4D 61 63 69 6E 74 6F 73 68 20 4A 61 70 61 6E 65 73 65 20 4F 73 61 6B 61 20 66 6F 6E 74 20 69 73 20 6D 61 70 70 65 64 20 74 6F 20 61 20 57 69 6E 64 6F 77 73 20 66 6F 6E 74 2C 20 61 6E 64 20 0D 3B 20 61 6C 6C 20 57 69 6E 64 6F 77 73 20 66 6F 6E 74 73 20 61 72 65 20 6D 61 70 70 65 64 20 74 6F 20 4D 61 63 69 6E 74 6F 73 68 27 73 20 4F 73 61 6B 61 2E 20 20 4D 61 70 20 4E 6F 6E 65 20 69 73 20 75 73 65 64 0D 3B 20 62 65 63 61 75 73 65 20 6F 6E 6C 79 20 52 6F 6D 61 6E 20 66 6F 6E 74 73 20 6E 65 65 64 20 75 70 70 65 72 2D 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20 6D 61 70 70 65 64 2E 20 20 54 6F 20 70 72 65 76 65 6E 74 20 0D 3B 20 6D 61 70 70 69 6E 67 20 6F 66 20 61 6E 79 20 61 64 64 69 74 69 6F 6E 61 6C 20 4A 61 70 61 6E 65 73 65 20 66 6F 6E 74 73 2C 20 61 64 64 20 74 68 65 6D 20 74 6F 20 74 68 69 73 20 6C 69 73 74 2E 0D 3B 0D 3B 20 4E 6F 74 65 3A 20 49 66 20 79 6F 75 20 64 6F 20 6E 6F 74 20 68 61 76 65 20 61 20 4A 61 70 61 6E 65 73 65 20 73 79 73 74 65 6D 2C 20 74 68 65 20 66 6F 6E 74 20 6E 61 6D 65 73 20 62 65 6C 6F 77 20 0D 3B 20 77 69 6C 6C 20 61 70 70 65 61 72 20 74 6F 20 62 65 20 75 6E 72 65 61 64 61 62 6C 65 2E 0D 0D 4D 61 63 3A 4F 73 61 6B 61 3D 3E 57 69 6E 3A 22 95 57 8F 80 83 53 83 56 83 62 83 4E 22 20 4D 61 70 20 4E 6F 6E 65 0D 0D 57 69 6E 3A 22 82 6C 82 72 20 83 53 83 56 83 62 83 4E 22 3D 3E 4D 61 63 3A 4F 73 61 6B 61 20 4D 61 70 20 4E 6F 6E 65 0D 57 69 6E 3A 22 82 6C 82 72 20 96 BE 92 A9 22 3D 3E 4D 61 63 3A 4F 73 61 6B 61 20 4D 61 70 20 4E 6F 6E 65 0D 57 69 6E 3A 22 95 57 8F 80 83 53 83 56 83 62 83 4E 22 3D 3E 4D 61 63 3A 4F 73 61 6B 61 20 4D 61 70 20 4E 6F 6E 65 0D 57 69 6E 3A 22 95 57 8F 80 96 BE 92 A9 22 3D 3E 4D 61 63 3A 4F 73 61 6B 61 20 4D 61 70 20 4E 6F 6E 65 0D 57 69 6E 3A 22 96 BE 92 A9 22 3D 3E 4D 61 63 3A 4F 73 61 6B 61 20 4D 61 70 20 4E 6F 6E 65 0D 0D 3B 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 3B 0D 3B 20 43 48 41 52 41 43 54 45 52 20 4D 41 50 50 49 4E 47 53 0D 3B 0D 3B 20 43 68 61 72 61 63 74 65 72 20 6D 61 70 70 69 6E 67 20 65 6E 73 75 72 65 73 20 74 68 61 74 20 63 68 61 72 61 63 74 65 72 73 20 73 75 63 68 20 61 73 20 62 75 6C 6C 65 74 73 2C 20 0D 3B 20 71 75 6F 74 65 20 6D 61 72 6B 73 2C 20 61 6E 64 20 61 63 63 65 6E 74 65 64 20 63 68 61 72 61 63 74 65 72 73 20 61 6C 77 61 79 73 20 61 70 70 65 61 72 20 63 6F 72 72 65 63 74 6C 79 20 0D 3B 20 77 68 65 6E 20 74 65 78 74 20 69 73 20 6D 6F 76 65 64 20 66 72 6F 6D 20 6F 6E 65 20 70 6C 61 74 66 6F 72 6D 20 74 6F 20 61 6E 6F 74 68 65 72 2E 20 20 57 68 65 6E 20 61 20 0D 3B 20 63 68 61 72 61 63 74 65 72 20 69 73 20 6D 61 70 70 65 64 2C 20 61 20 64 69 66 66 65 72 65 6E 74 20 41 53 43 49 49 20 76 61 6C 75 65 20 69 73 20 73 75 62 73 74 69 74 75 74 65 64 20 0D 3B 20 69 6E 20 6F 72 64 65 72 20 74 6F 20 70 72 65 73 65 72 76 65 20 74 68 65 20 61 70 70 65 61 72 61 6E 63 65 20 6F 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 2E 20 20 0D 3B 0D 3B 20 43 68 61 72 61 63 74 65 72 20 6D 61 70 70 69 6E 67 73 20 61 72 65 20 75 73 65 64 20 66 6F 72 20 61 6C 6C 20 66 6F 6E 74 73 20 45 58 43 45 50 54 20 74 68 6F 73 65 20 64 65 63 6C 61 72 65 64 20 0D 3B 20 61 62 6F 76 65 20 61 73 20 4D 61 70 20 4E 6F 6E 65 2E 20 20 0D 3B 0D 3B 20 54 68 65 20 66 6F 72 6D 61 74 20 66 6F 72 20 63 68 61 72 61 63 74 65 72 20 6D 61 70 70 69 6E 67 73 20 69 73 3A 0D 3B 0D 3B 20 50 6C 61 74 66 6F 72 6D 3A 20 3D 3E 20 50 6C 61 74 66 6F 72 6D 3A 20 20 6F 6C 64 43 68 61 72 20 3D 3E 20 6F 6C 64 43 68 61 72 20 2E 2E 2E 0D 3B 0D 3B 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 61 62 6C 65 20 70 72 6F 76 69 64 65 73 20 61 20 66 75 6C 6C 20 73 65 74 20 6F 66 20 62 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 0D 3B 20 6D 61 70 70 69 6E 67 73 20 66 6F 72 20 61 6C 6C 20 41 53 43 49 49 20 76 61 6C 75 65 73 20 62 65 74 77 65 65 6E 20 31 32 38 20 61 6E 64 20 32 35 35 2E 0D 3B 0D 3B 20 4E 6F 74 65 3A 20 53 6F 6D 65 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 20 69 6E 20 62 6F 74 68 20 63 68 61 72 61 63 74 65 72 20 73 65 74 73 2E 20 0D 3B 20 48 6F 77 65 76 65 72 2C 20 74 68 65 20 62 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 6D 61 70 70 69 6E 67 20 74 61 62 6C 65 20 62 65 6C 6F 77 20 70 72 65 73 65 72 76 65 73 20 74 68 65 73 65 20 0D 3B 20 63 68 61 72 61 63 74 65 72 73 20 65 76 65 6E 20 69 66 20 74 68 65 79 20 61 72 65 20 6D 61 70 70 65 64 20 74 6F 20 61 20 64 69 66 66 65 72 65 6E 74 20 70 6C 61 74 66 6F 72 6D 20 61 6E 64 20 0D 3B 20 6C 61 74 65 72 20 72 65 2D 6D 61 70 70 65 64 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 70 6C 61 74 66 6F 72 6D 2E 0D 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 32 38 3D 3E 31 39 36 20 31 32 39 3D 3E 31 39 37 20 31 33 30 3D 3E 31 39 39 20 31 33 31 3D 3E 32 30 31 20 31 33 32 3D 3E 32 30 39 20 31 33 33 3D 3E 32 31 34 20 31 33 34 3D 3E 32 32 30 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 33 35 3D 3E 32 32 35 20 31 33 36 3D 3E 32 32 34 20 31 33 37 3D 3E 32 32 36 20 31 33 38 3D 3E 32 32 38 20 31 33 39 3D 3E 32 32 37 20 31 34 30 3D 3E 32 32 39 20 31 34 31 3D 3E 32 33 31 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 34 32 3D 3E 32 33 33 20 31 34 33 3D 3E 32 33 32 20 31 34 34 3D 3E 32 33 34 20 31 34 35 3D 3E 32 33 35 20 31 34 36 3D 3E 32 33 37 20 31 34 37 3D 3E 32 33 36 20 31 34 38 3D 3E 32 33 38 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 34 39 3D 3E 32 33 39 20 31 35 30 3D 3E 32 34 31 20 31 35 31 3D 3E 32 34 33 20 31 35 32 3D 3E 32 34 32 20 31 35 33 3D 3E 32 34 34 20 31 35 34 3D 3E 32 34 36 20 31 35 35 3D 3E 32 34 35 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 35 36 3D 3E 32 35 30 20 31 35 37 3D 3E 32 34 39 20 31 35 38 3D 3E 32 35 31 20 31 35 39 3D 3E 32 35 32 20 31 36 30 3D 3E 31 33 34 20 31 36 31 3D 3E 31 37 36 20 31 36 32 3D 3E 31 36 32 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 36 33 3D 3E 31 36 33 20 31 36 34 3D 3E 31 36 37 20 31 36 35 3D 3E 31 34 39 20 31 36 36 3D 3E 31 38 32 20 31 36 37 3D 3E 32 32 33 20 31 36 38 3D 3E 31 37 34 20 31 36 39 3D 3E 31 36 39 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 37 30 3D 3E 31 35 33 20 31 37 31 3D 3E 31 38 30 20 31 37 32 3D 3E 31 36 38 20 31 37 33 3D 3E 31 34 31 20 31 37 34 3D 3E 31 39 38 20 31 37 35 3D 3E 32 31 36 20 31 37 36 3D 3E 31 34 34 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 37 37 3D 3E 31 37 37 20 31 37 38 3D 3E 31 34 33 20 31 37 39 3D 3E 31 34 32 20 31 38 30 3D 3E 31 36 35 20 31 38 31 3D 3E 31 38 31 20 31 38 32 3D 3E 32 34 30 20 31 38 33 3D 3E 32 32 31 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 38 34 3D 3E 32 32 32 20 31 38 35 3D 3E 32 35 34 20 31 38 36 3D 3E 31 33 38 20 31 38 37 3D 3E 31 37 30 20 31 38 38 3D 3E 31 38 36 20 31 38 39 3D 3E 32 35 33 20 31 39 30 3D 3E 32 33 30 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 39 31 3D 3E 32 34 38 20 31 39 32 3D 3E 31 39 31 20 31 39 33 3D 3E 31 36 31 20 31 39 34 3D 3E 31 37 32 20 31 39 35 3D 3E 31 37 35 20 31 39 36 3D 3E 31 33 31 20 31 39 37 3D 3E 31 38 38 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 31 39 38 3D 3E 32 30 38 20 31 39 39 3D 3E 31 37 31 20 32 30 30 3D 3E 31 38 37 20 32 30 31 3D 3E 31 33 33 20 32 30 32 3D 3E 31 36 30 20 32 30 33 3D 3E 31 39 32 20 32 30 34 3D 3E 31 39 35 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 30 35 3D 3E 32 31 33 20 32 30 36 3D 3E 31 34 30 20 32 30 37 3D 3E 31 35 36 20 32 30 38 3D 3E 31 37 33 20 32 30 39 3D 3E 31 35 31 20 32 31 30 3D 3E 31 34 37 20 32 31 31 3D 3E 31 34 38 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 31 32 3D 3E 31 34 35 20 32 31 33 3D 3E 31 34 36 20 32 31 34 3D 3E 32 34 37 20 32 31 35 3D 3E 32 31 35 20 32 31 36 3D 3E 32 35 35 20 32 31 37 3D 3E 31 35 39 20 32 31 38 3D 3E 31 35 38 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 31 39 3D 3E 31 36 34 20 32 32 30 3D 3E 31 33 39 20 32 32 31 3D 3E 31 35 35 20 32 32 32 3D 3E 31 32 38 20 32 32 33 3D 3E 31 32 39 20 32 32 34 3D 3E 31 33 35 20 32 32 35 3D 3E 31 38 33 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 32 36 3D 3E 31 33 30 20 32 32 37 3D 3E 31 33 32 20 32 32 38 3D 3E 31 33 37 20 32 32 39 3D 3E 31 39 34 20 32 33 30 3D 3E 32 30 32 20 32 33 31 3D 3E 31 39 33 20 32 33 32 3D 3E 32 30 33 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 33 33 3D 3E 32 30 30 20 32 33 34 3D 3E 32 30 35 20 32 33 35 3D 3E 32 30 36 20 32 33 36 3D 3E 32 30 37 20 32 33 37 3D 3E 32 30 34 20 32 33 38 3D 3E 32 31 31 20 32 33 39 3D 3E 32 31 32 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 34 30 3D 3E 31 35 37 20 32 34 31 3D 3E 32 31 30 20 32 34 32 3D 3E 32 31 38 20 32 34 33 3D 3E 32 31 39 20 32 34 34 3D 3E 32 31 37 20 32 34 35 3D 3E 31 36 36 20 32 34 36 3D 3E 31 33 36 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 34 37 3D 3E 31 35 32 20 32 34 38 3D 3E 31 35 30 20 32 34 39 3D 3E 31 35 34 20 32 35 30 3D 3E 31 37 38 20 32 35 31 3D 3E 31 39 30 20 32 35 32 3D 3E 31 38 34 20 32 35 33 3D 3E 31 38 39 20 0D 4D 61 63 3A 20 3D 3E 20 57 69 6E 3A 20 32 35 34 3D 3E 31 37 39 20 32 35 35 3D 3E 31 38 35 20 0D 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 32 38 3D 3E 32 32 32 20 31 32 39 3D 3E 32 32 33 20 31 33 30 3D 3E 32 32 36 20 31 33 31 3D 3E 31 39 36 20 31 33 32 3D 3E 32 32 37 20 31 33 33 3D 3E 32 30 31 20 31 33 34 3D 3E 31 36 30 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 33 35 3D 3E 32 32 34 20 31 33 36 3D 3E 32 34 36 20 31 33 37 3D 3E 32 32 38 20 31 33 38 3D 3E 31 38 36 20 31 33 39 3D 3E 32 32 30 20 31 34 30 3D 3E 32 30 36 20 31 34 31 3D 3E 31 37 33 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 34 32 3D 3E 31 37 39 20 31 34 33 3D 3E 31 37 38 20 31 34 34 3D 3E 31 37 36 20 31 34 35 3D 3E 32 31 32 20 31 34 36 3D 3E 32 31 33 20 31 34 37 3D 3E 32 31 30 20 31 34 38 3D 3E 32 31 31 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 34 39 3D 3E 31 36 35 20 31 35 30 3D 3E 32 34 38 20 31 35 31 3D 3E 32 30 39 20 31 35 32 3D 3E 32 34 37 20 31 35 33 3D 3E 31 37 30 20 31 35 34 3D 3E 32 34 39 20 31 35 35 3D 3E 32 32 31 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 35 36 3D 3E 32 30 37 20 31 35 37 3D 3E 32 34 30 20 31 35 38 3D 3E 32 31 38 20 31 35 39 3D 3E 32 31 37 20 31 36 30 3D 3E 32 30 32 20 31 36 31 3D 3E 31 39 33 20 31 36 32 3D 3E 31 36 32 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 36 33 3D 3E 31 36 33 20 31 36 34 3D 3E 32 31 39 20 31 36 35 3D 3E 31 38 30 20 31 36 36 3D 3E 32 34 35 20 31 36 37 3D 3E 31 36 34 20 31 36 38 3D 3E 31 37 32 20 31 36 39 3D 3E 31 36 39 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 37 30 3D 3E 31 38 37 20 31 37 31 3D 3E 31 39 39 20 31 37 32 3D 3E 31 39 34 20 31 37 33 3D 3E 32 30 38 20 31 37 34 3D 3E 31 36 38 20 31 37 35 3D 3E 31 39 35 20 31 37 36 3D 3E 31 36 31 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 37 37 3D 3E 31 37 37 20 31 37 38 3D 3E 32 35 30 20 31 37 39 3D 3E 32 35 34 20 31 38 30 3D 3E 31 37 31 20 31 38 31 3D 3E 31 38 31 20 31 38 32 3D 3E 31 36 36 20 31 38 33 3D 3E 32 32 35 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 38 34 3D 3E 32 35 32 20 31 38 35 3D 3E 32 35 35 20 31 38 36 3D 3E 31 38 38 20 31 38 37 3D 3E 32 30 30 20 31 38 38 3D 3E 31 39 37 20 31 38 39 3D 3E 32 35 33 20 31 39 30 3D 3E 32 35 31 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 39 31 3D 3E 31 39 32 20 31 39 32 3D 3E 32 30 33 20 31 39 33 3D 3E 32 33 31 20 31 39 34 3D 3E 32 32 39 20 31 39 35 3D 3E 32 30 34 20 31 39 36 3D 3E 31 32 38 20 31 39 37 3D 3E 31 32 39 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 31 39 38 3D 3E 31 37 34 20 31 39 39 3D 3E 31 33 30 20 32 30 30 3D 3E 32 33 33 20 32 30 31 3D 3E 31 33 31 20 32 30 32 3D 3E 32 33 30 20 32 30 33 3D 3E 32 33 32 20 32 30 34 3D 3E 32 33 37 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 30 35 3D 3E 32 33 34 20 32 30 36 3D 3E 32 33 35 20 32 30 37 3D 3E 32 33 36 20 32 30 38 3D 3E 31 39 38 20 32 30 39 3D 3E 31 33 32 20 32 31 30 3D 3E 32 34 31 20 32 31 31 3D 3E 32 33 38 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 31 32 3D 3E 32 33 39 20 32 31 33 3D 3E 32 30 35 20 32 31 34 3D 3E 31 33 33 20 32 31 35 3D 3E 32 31 35 20 32 31 36 3D 3E 31 37 35 20 32 31 37 3D 3E 32 34 34 20 32 31 38 3D 3E 32 34 32 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 31 39 3D 3E 32 34 33 20 32 32 30 3D 3E 31 33 34 20 32 32 31 3D 3E 31 38 33 20 32 32 32 3D 3E 31 38 34 20 32 32 33 3D 3E 31 36 37 20 32 32 34 3D 3E 31 33 36 20 32 32 35 3D 3E 31 33 35 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 32 36 3D 3E 31 33 37 20 32 32 37 3D 3E 31 33 39 20 32 32 38 3D 3E 31 33 38 20 32 32 39 3D 3E 31 34 30 20 32 33 30 3D 3E 31 39 30 20 32 33 31 3D 3E 31 34 31 20 32 33 32 3D 3E 31 34 33 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 33 33 3D 3E 31 34 32 20 32 33 34 3D 3E 31 34 34 20 32 33 35 3D 3E 31 34 35 20 32 33 36 3D 3E 31 34 37 20 32 33 37 3D 3E 31 34 36 20 32 33 38 3D 3E 31 34 38 20 32 33 39 3D 3E 31 34 39 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 34 30 3D 3E 31 38 32 20 32 34 31 3D 3E 31 35 30 20 32 34 32 3D 3E 31 35 32 20 32 34 33 3D 3E 31 35 31 20 32 34 34 3D 3E 31 35 33 20 32 34 35 3D 3E 31 35 35 20 32 34 36 3D 3E 31 35 34 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 34 37 3D 3E 32 31 34 20 32 34 38 3D 3E 31 39 31 20 32 34 39 3D 3E 31 35 37 20 32 35 30 3D 3E 31 35 36 20 32 35 31 3D 3E 31 35 38 20 32 35 32 3D 3E 31 35 39 20 32 35 33 3D 3E 31 38 39 20 0D 57 69 6E 3A 20 3D 3E 20 4D 61 63 3A 20 32 35 34 3D 3E 31 38 35 20 32 35 35 3D 3E 32 31 36 20 0D 0D 00
|
Font Mapping... this is all ASCII... feel free to slap it into a converter to read it. |
0x1eff | MM CC ss LL 00 00 00 3A 00 00 00 0C 00 00 00 01 00 | |
0x1f41 | CC AA SS ** 00 00 00 04 00 00 00 15 | This just lists DWORDs of cast members... here there is only one, Cast member 0x15 |
0x1f4d |
CC AA SS tt 00 00 00 D6 00 00 00 07 00 00 00 AC 00 00 00 1E 00 00 00 14 1E 90 93 06 00 00 00 00 00 00 00 00 00 00 00 01 00 0E 00 00 00 00 00 00 00 28 00 00 00 28 00 00 00 28 00 00 00 28 00 00 00 28 00 00 00 3C 00 00 00 52 00 00 00 52 00 00 00 52 00 00 00 52 00 00 00 52 00 00 00 52 00 00 00 52 00 00 00 5A 00 00 00 24 00 00 00 24 06 00 00 00 00 00 00 00 00 A6 00 0B 01 1D 00 0B |
This is cast member 0x15 ... it's a button, I created it... the button has the lingo script as follows:
on mouseUp which happens to be embedded in the bytes above |
0x202b | LL cc tt xx 00 00 00 6C 1E 91 59 B2 CA F5 00 00 00 00 00 01 00 00 00 01 00 60 00 0C 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 18 00 01 00 05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 1E 90 93 06 00 00 00 19 00 04 FF FF | |
0x209f | LL ss cc rr 00 00 00 B0 1E 8F 13 B4 00 00 00 01 00 00 00 B0 00 00 00 B0 00 5C 00 00 00 01 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 FF FF 00 02 00 00 00 AC 00 00 00 02 00 00 00 00 00 66 00 00 00 00 00 66 00 01 00 00 00 66 00 01 00 00 00 90 00 00 00 14 00 00 00 98 44 00 42 01 57 01 01 00 06 00 00 00 00 01 00 00 00 07 00 00 00 5C 00 00 00 00 00 64 00 00 00 00 00 64 00 00 00 00 00 64 00 00 00 0A 00 01 00 01 00 00 00 64 00 00 00 01 00 00 00 00 00 00 00 10 4D 79 20 46 69 72 73 74 20 50 6F 70 75 70 21 00 FF FF 00 00 | |
0x2157 | LL nn aa mm 00 00 00 22 1E 92 9A 36 1E 90 92 AC 00 00 00 22 00 00 00 22 00 14 00 02 07 6D 6F 75 73 65 55 70 05 61 6C 65 72 74 |
Lingo Names? Function Names? The "00 02" is the quantity of strings to follow. Each string starts with the length, then the ASCII Characters. This example contains:
mouseUp ...these happen to be the functions I am using in my test movie. |
0x2181 | FF mm aa pp 00 00 00 4E 00 00 00 24 00 00 00 22 1E 90 64 26 00 00 00 00 00 00 00 01 00 00 00 01 00 1C 00 08 1E 90 92 02 1E 8D FD 00 00 00 00 12 00 01 00 04 1E 90 64 26 00 79 00 03 00 00 00 1E 00 00 00 22 00 12 00 00 00 06 4D 6F 6E 61 63 6F 00 13 00 00 00 00 | |
0x21d7 | CC ii nn ff 00 00 00 3D 00 00 00 04 00 04 00 00 00 00 00 00 00 00 00 00 00 0C 00 00 00 0C 00 00 00 23 00 02 00 01 00 03 00 01 00 00 00 01 15 4D 61 69 6E 48 44 3A 44 65 73 6B 74 6F 70 20 46 6F 6C 64 65 72 00 20 |
Cast Info? The "00 01" dictates the number of strings following and this particular one contains:
MainHD:Desktop Folder ..which is the last location this movie had been saved. |
0x221d | VV WW FF II 00 00 00 77 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 24 00 00 00 3B 00 00 00 3D 00 00 00 3D 00 00 00 3D 00 00 00 3D 10 53 74 65 76 65 6E 20 48 6F 65 66 65 6C 20 2D 20 00 10 53 74 65 76 65 6E 20 48 6F 65 66 65 6C 20 2D 20 00 15 4D 61 69 6E 48 44 3A 44 65 73 6B 74 6F 70 20 46 6F 6C 64 65 72 00 00 00 42 | |
0x229d | VV WW SS CC 00 00 00 2E 00 00 00 2E 00 00 00 14 00 00 00 00 00 07 00 18 00 32 01 00 00 1A 00 06 00 30 10 00 00 01 00 01 00 0A 00 3A FF 00 00 B4 01 04 00 0F 00 78 | |
0x22d3 | SS TT XX TT 00 00 00 2D 00 00 00 0C 00 00 00 0B 00 00 00 16 54 65 73 74 20 42 61 77 74 6F 6E 00 01 00 00 00 00 00 0B 00 09 00 04 00 00 00 09 00 00 00 00 00 00 |
The fun stuff: Emulation
Knowing what it is that you are actually disassembling helps massively when digging through bytes. The issue at hand was obtaining and then running the older versions of Macromedia Director. Fortunately there are some great minds around the internet who have decided to catalog and provide ancient versions of software. Some greater minds have then created emulators to faithfully reproduce hardware on different operating systems. Below I'll detail how I got specific versions of Director to run under their required operating systems.
Macromedia Director 5.0 (PowerPC) on Sheepshaver
Finding v5.0 for any platform was difficult. I found a user offering everything but the box on the Amibay.com Forums, but due to a slow response opted to purchase the application from a seller in the USA. He was to take a while for shipping, so he was kind enough to ISO it for me and I had it in a few hours! Running the software on Sheepshaver was simple enough... I actually have the original CDs for Mac OS 8 and the 8.5 upgrade. After configuring shared folders I was creating projectors and debugging them in my .NET application.
I then mucked around with other random PPC software... It was such a cool platform back in the day... when I couldn't afford it!
Macromedia Director 4.0 on Windows 2000
I am still looking for v5.0 for Windows, but haven't had any luck yet. I therefore settled for obtaining v4.0 from Vetusware and got it running under Windows 2000. I initially wanted to run it under Windows 95 or 98 but Virtual Box doesn't have 'host tools' for those operating systems. Fortunately the application runs fine under Windows 2000.
Macromedia Director 4.0/5.0/6.0 on Windows 98
Turns out that Virtual Box does indeed support Windows 98 (here's a great tutorial!). After finding my 98SE CD, I proceeded to install it and then install Director from the ISOs provided in the comments. All went well and I started creating more projectors for debugging. Note that Windows 98 hangs for ages on startup... doing network stuff I think. You'll also need the Scitech Display Doctor (as per the information in the link prior) to get a good resolution.
Macromedia Player 4.0 and 6.0A on Acorn RISC OS
This was nothing short of fun... I accidently came across an ISO containing these versions after googling over and over for v5.0 on Windows. I had used Acorn machines back in Primary school and vaguely remembered their hideous GUI. I instantly searched for emulators and found that there were quite a few available! In the end I had no idea what versions of what OS to use, so I just downloaded the first things I came across. This included the RPCEmu 'Spoon Edition', a hard disk image by the name of Lion's RISC OS Archive and then the ISO that included the software.
After dragging and dropping all the files in the correct locations I came up with a working Acorn 3.7 system!
It ended up doing nothing useful... the emulation wasn't capable of running the actual movies... but it was fun to work on. I then found a newer OS to put on the machine. It turns out that the Acorn just ran RISC OS on proprietary hardware; I assumed they actually built their own operating system. In the years between Acorn and 1999 RISC OS Open was founded and they have continued the OS development as open source. You can find a guide to install it all here. I didn't pursue it...
Update: I ended up downloading RISC OS Virtually Free (4.02 ROM Image) and, after following the somewhat tricky instructions, had a newer OS running in RPCEmu. This then allowed the random XMAS movie to play with full sound.
The file format for the movies was the same as what I had seen on Macintosh and Windows, but all attempts to drop in movies that I'd created elsewhere failed. Either way, that was enough screwing around.. I needed to get back to the actual decoding.
June 19th, 2012 - 23:45
Hi, great article! I was wondering if you would be willing to share the v5.0 for PowerPC, I’ve found myself in a very similar situation to you and want to see if I can emulate the software on my Mac to restore an old presentation.
thanks so much!
August 25th, 2012 - 20:43
Hi,
Thank you for this very interesting article !
But it seems that you removed download links.
Sad…
August 26th, 2012 - 16:59
I never actually uploaded anything… I’m still looking for the Windows version. I have pretty much given up on the whole task though, waaaaay tooo mammoth for a hobby :)
March 19th, 2013 - 07:52
I actually have the Windows versions of 5 and 6 and have uploaded them to 4shared… http://www.4shared.com/archive/HC85mc0V/Macromedia_Director_5_and_6_fo.html
January 13th, 2015 - 14:33
For fix damaged projector creation in version 6 also will help patch from Macromedia… http://download.macromedia.com/pub/updates/D6WPATCH.EXE
October 25th, 2012 - 07:06
I actually just got a copy of Macromedia Director 5.0 for Windows off of eBay, along with an upgrade version of Director 6 (also for Windows). I can make ISO images of them for you if you want.
January 11th, 2013 - 12:59
Do you know if Director 6 can open Director 4 file or not? If it does, could I have a copy of it? Many thanks!
January 21st, 2013 - 09:47
Yes, Director 6 has backward compatibility with Director 4 movies. I have made ISO images of my Director 5 and 6 Windows CDs and put them in one .7z archive. I can upload the archive to a file sharing service if you like, it’s about 350 MB.
March 13th, 2013 - 22:54
I could use an iso of the Director 5.0 for windows if you could still make one.
Thanks!
January 2nd, 2013 - 00:30
Hello there:
I have the window version (v4.0, 7.0 – 11.5), and I am looking for the Mac version 4 or 5. Is anybody willing to trade it?
January 13th, 2015 - 15:21
Hi.
Can you share 7.0 and 8.0?
June 14th, 2015 - 18:11
Here is the Director 7.0 with 7.0.2 update
http://www.mediafire.com/download/a2ektmwnil1w2af/Director7.rar
March 19th, 2013 - 07:56
Both the Mac versions of 4 and 5 have recently been uploaded to Macintosh Garden:
http://macintoshgarden.org/apps/macromedia-director-40
http://macintoshgarden.org/apps/macromedia-director-5
November 9th, 2016 - 11:24
Hey, we at ScummVM started work on Director. Could you please drop me a mail?
April 25th, 2017 - 20:32
cool to see interest in this has been renewed. Best of luck! I will continue with my efforts as well!
August 6th, 2017 - 08:17
Hi, thanks for your blog. It provided me with a little of background to create a simple python script to extract images and sounds from director Dxr files.
If you are interested in it, the source code is in:
https://github.com/System25/drxtract
August 8th, 2017 - 09:14
Come and help over at ScummVM! You’ve gotten further on a few parts of image/sound decoding than we have!
October 12th, 2017 - 08:01
The sound format in DIR files is just Macintosh snd resources, sometimes split into two chunks (sndH and sndS.) In DCR files it’s MP3, and you can rename a DCR file with sounds to .MP3 and any good media player will pick it up (since MP3 frames can be found anywhere in a file.) That is unless the author used SWA, in which case it is zlib compressed in the FGEI chunk, since Xtra assets are always zlib compressed in DCRs… but SWA is pretty much just MP3 with some extra headers to make it loop properly.
I have a giant document of notes here: https://docs.google.com/document/d/18FMRZ0EvR2uF9rKTtvt-TXyIMFIBVg13bUhmV3_iHD0/edit?usp=sharing
October 12th, 2017 - 08:31
Anthony,
Thank you very much for this! I’ve just read over your document and have a few new hints as to the data I am looking at. Feel free to also view the ScummVM source code to see what we’ve done from the reverse side of pulling the data to bits.
Steven.
November 14th, 2017 - 20:52
Hello again Steven,
I have started making a more precise specification based on my experiments. I still have a lot more that I have learned but just haven’t written down yet anywhere, so I will be updating this document later. I hope there is at least something in here that was not already known: https://docs.google.com/document/d/1jDBXE4Wv1AEga-o1Wi8xtlNZY4K2fHxW2Xs8RgARrqk/edit?usp=sharing