From ScummVM :: Wiki
Revision as of 21:37, 17 April 2020 by Rvanlaar (talk | contribs) (Added information about running only one lingo test file.)
Jump to navigation Jump to search
Engine developer sev, iskrich
Companies that used it Macromedia
Games that use it hundreds of games
Date added to ScummVM 2016-08-04
First release containing it None

The Macromedia Director engine was partially implemented by iskrich for the Google Summer of Code in 2016.


Director underwent huge number of versions.

History of the engine.

Games and software targeted by the engine

This engine potentially targets a very large amount of games:

See Director Games for a list of known games and software, and their current state of support in the engine.


In Japan at least D4+ was released under title マクロメディア ディレクター

Development and Running

Running any D3 or D4 mac target

Besides adding specific md5s, there is a shortcut for forcing a directory to be detected as a director game.

Create an empty file named "D3-mac" or "D4-mac" in the game directory, and it will be detected as the respective Director version

Starting from an arbitrary movie file

Assuming, that you added game named 'workshop' with the method above.

./scummvm --start-movie=HandV workshop

Here HandV is the name of a movie in the directory

Executing lingo tests

Point ScummVM to engines/director/lingo/tests, that will create target 'directortest'. Launching it will try to compile and execute all *.lingo files in that directory. The tests can also be run from the command line with:

./scummvm -d11 -p engines/director/lingo/tests/ directortest

The option --start-movie=<script_name> is also available to run a specific .lingo file.

Executing all director movies in a directory

Assuming you want to run all director movies in a given director. Create an empty file called 'lingotests-all' in that directory. Point ScummVM to that directory and add it as a game. That will run all director files in that directory. This can also be run from the commandline with:

./scummvm directortest-all-mac

Debug flags

There is a number of debugflags which could be turned on. The up-to-date list could be found in director.cpp in the DirectorEngine class constructor. You turn the flags with --debugflags=<flag>,<flag>. Please, denote, that messages are often stored at several levels, so add with something like debug level 5, e.g. -d5. Example:

 ./scummvm --debugflags=lingoexec,lingocompile,slow -d6 --start-movie=TABLE.DIR chopsuey

The useful ones are:

  • lingoexec -- tracing Lingo execution
  • lingocompile -- details about Lingo script compilation
  • lingoparse -- turns on Bison grammar trace. Verbose. You should know what you're doing
  • compileonly -- useful with test targets when we load all files in the directory. This is how we created that status table of Lingo Workshop movies
  • slow -- add 2s delay between every frame. Useful at higher debug levels, so you could see what is going on instead of munching megabytes of logs
  • fast -- removes delay between frames
  • bytecode -- execute precompiled bytecode instead of compiling Lingo. Lingo Workshop movies have both bytecode and script texts
  • loading -- produces tons of deciphered data from movie files.

External Links