Map Detectives: Data Files

A quick tour of the Map Detectives: Urban Mystery data files (SHA1 hashes). Let's see how this game is put together!

The easy bits

/Acrobat/
This directory holds the installer for a standard copy of Adobe Acrobat reader. Required because there are PDF documents supplied with the game and it was not guaranteed that the user would have access to the Internet to install a PDF reader.
/Maps/
This directory contains PDF copies of the printed maps distributed with the game CD. If you lose the original map or need extra copies for a classroom of students you can print these high-resolution versions.
/saves/
Nothing too mysterious here: it's the saved games and profiles. You'll also find TOption.txt which holds the selections from the 'Teacher Options' menu. Note that this includes the 'password' tickbox so if you've locked yourself out you can delete this file to get back in.

/Data/

Some interesting bits in this directory!

setup.exe, setupmac.command, and setup.jar together make up the installation program. It's based on a product called InstallAnywhere which was acquired by Macrovision in 2005. It's a Java-based installation wizard that bundles it's own JRE and still somehow requires native stub executables for the Windows and MacOS platforms :-( media.inf might also be part of the installer.

MD.ico and mdOLD.ico are icon files. They look identical except one is red and one is green. The metadata timestamps for these files show that MD.icon was created at 2005-06-08 15:22:08 while mdOLD.ico was created earlier at 2004-12-01 16:20:20.

newscript and shell_script are Unix shell scripts. Only shell_script does anything of interest: it takes two file names and copies data from the first to the second, translating carriage-returns (ASCII 13 / 0dh) to line feeds (ASCII 10 / 0ah). This seems to have been used to convert text files from Mac (pre-OSX) line endings to Linux/MacOS lin endings. Possibly this was used by the developers when porting the game from MacOS to OSX?

SherstonCopy.app is an interesting one: it's an OSX application but at only 14KB it can't do much. Is it part of the OSX installer? Some sort of copy protection? This one will have to be looked at another day…

Cast members and extras

So it turns out that the game is written in Macromedia Director and published as a Shockwave player executable. Director originated as a multimedia presentation product and content is authored for it using related metaphors: Director files have a 'stage' on which animated objects known as 'cast members' are moved along a 'timeline'. These are stored in .DIR Director files. Cast members can also be stored in external files and shared between multiple Director scenes. These are known, appropriately enough, as 'external cast members' and are stored in .CST files. When a Director project is exported to a compiled executable the .DIR and .CST files are compressed and repacked as .DXR and .CXT files. The game stores all it's Director and cast files in the /Appdata/ director.

Despite its name the directory /xtras/ actually has nothing to do with cast members. Director projects are programmed in a proprietary language called Lingo. It's compiled down to bytecode and the original script source is stripped from .DXR and .CXT exported files. For operations that can't be performed from Lingo, Macromedia offered a system called Xtras which are native-code libraries that expose additional features through a COM-based SDK. The xtras included with Map Detectives are:

budapi.x32
This is the third-party library Buddy API which provides access to Windows and Mac OSX system APIs. It's still for sale today and lets you use a plethora of functions. Map Detectives uses this xtra to change the screen resolution.
DirectSound.x32
MacroMix.x32
Mix Services.x32
Sound Control.x32
These xtras appear to be for controlling audio mixing and volume.
FileIo.x32
This xtra adds additional I/O functions and is used for game save/loading as well as loading game data.
Flash Agent.x32
Flash Asset.x32
Flash Asset Options.x32
Font Asset.x32
Font Xtra.x32
QT6Asset.x32
QTExport.x32
Text Asset.x32
TextXtra.x32
I believe these are xtras used for text and graphics rendering; nothing too exciting here.
Mui Dialog.x32
This is an xtra supplied with Director 6 that allows you to display and interact with themed dialog boxes. I believe Map Detectives uses this for save game dialogs as well as the 'are you sure you want to exit' prompt.
PMatic.x32
This is a third-party xtra used for printing from within the game.
Sound Import Export.x32
This is a standard Macromedia xtra but I'm not sure why it's included with the game -- possibly leftover from development?

The meat of the game: /Appdata/

This is where the majority of the game content lives. Let's take a closer look at it next time