44
edits
(→Games and software: Use wikitable CSS style) |
(Add information about compiling director with `--enable-asan`. The buildbot will error when finding a memory leak.) |
||
(33 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
{{EngineDescription| | {{EngineDescription| | ||
name=director| | name=director| | ||
developer=[[User:iskrich|iskrich, | developer=[[User:sev|sev]], [[User:iskrich|iskrich]], [[User:djsrv|djsrv]], [[User:npjg|npjg]], [[User:Mstea|mstea]]| | ||
companies=[[Macromedia]]| | companies=[[Macromedia]]| | ||
usedBy=hundreds of games| | usedBy=[[Director/Games|hundreds of games]]| | ||
dateAdded= | dateAdded=August 4, 2016 | | ||
release= | release=2.5.0| | ||
}} | }} | ||
The Macromedia Director engine was partially implemented by [[User:iskrich|iskrich]] for the [[Summer of Code|Google Summer of Code]] in [[Summer of Code/GSoC2016|2016]] and was further implemented by the Google Summer of Code students [[User:djsrv|djsrv]] and [[User:npjg|npjg]] in [[Summer of Code/GSoC2020|2020]] and the Google Summer of Code students djsrv and [[User:sheep|sheep]] in [[Summer of Code/GSoC2021|2021]]. | |||
== Introduction == | == Introduction == | ||
Started out as MacroMind VideoWorks. MacroMind was founded by Marc Canter. The name VideoWorks was changed to Director in 1987. | |||
Director underwent huge number of versions. | Director underwent huge number of versions. | ||
[http://lingoworkshop.com/articles/history History of the engine]. | [http://lingoworkshop.com/articles/history History of the engine]. | ||
== Games and software == | [[Director/Codenames|A bit more history of the engine codenames]] | ||
==Games and software targeted by the engine== | |||
This engine potentially targets a very large amount of games: | |||
See [[Director/Games|Director Games]] for a list of known games and software, and their current state of support in the engine. | |||
== Versions == | |||
See [[Director/Versions]] | |||
== File Format == | |||
=== Archive Team's documentation === | |||
* [http://fileformats.archiveteam.org/wiki/Shockwave_(Director) Shockwave (Director)] | |||
* [http://fileformats.archiveteam.org/wiki/Lingo_bytecode Lingo bytecode] | |||
=== Team Earthquake's documentation === | |||
* [https://medium.com/@nosamu/a-tour-of-the-adobe-director-file-format-e375d1e063c0 A Tour of the Adobe Director File Format] | |||
* [https://docs.google.com/document/d/18FMRZ0EvR2uF9rKTtvt-TXyIMFIBVg13bUhmV3_iHD0/edit Team Earthquake Shockwave Unofficial Documentation] | |||
* [https://docs.google.com/document/d/1jDBXE4Wv1AEga-o1Wi8xtlNZY4K2fHxW2Xs8RgARrqk/edit More Director Movie File Unofficial Documentation] (has in-depth documentation of structs) | |||
* [https://github.com/Brian151/OpenShockwave OpenShockwave repo] (rather unorganized documentation and tools including a Lingo decompiler) | |||
* [https://github.com/Earthquake-Project Earthquake Project repos] (newer versions of the above) | |||
== 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. A frame number to start execution | |||
can also be added: | |||
./scummvm --start-movie=HandV@2 workshop | |||
=== 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 <tt>--start-movie=<script_name></tt> 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 <tt>--debugflags=<flag>,<flag></tt>. Please, denote, that messages are often stored at several levels, so add with something like debug level 5, e.g. <tt>-d5</tt>. 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. | |||
=== Compilation === | |||
We aim for 0 memory leaks in the director engine. The automated tests will error when it detects a memory leak. To enable memory leak checks run `./configure` with `--enable-asan`. | |||
=== Automated Tests === | |||
There is a CI (continuous integration) server running for Director. | |||
* [https://john.scummvm.org Buildbot server] | |||
* [https://github.com/rvanlaar/director-buildbot Buildbot server sourcecode] | |||
=== Is my game a Director Game and which version is it? === | |||
Run the following command in the directory of your installed gamedata: | |||
grep --text -ir director|strings |egrep 'Macromedia Director [0-9]' | |||
This will show which version of Macromedia Director was used. If this yields nothing, it probably isn't a Macromedia director game. | |||
== Debugger Commands == | |||
To open the [[Debugging ScummVM|interactive debugger console]] press the key combination that is set for "Open Debugger" in the "Keymaps" tab from ScummVM options (default should be Ctrl+Alt+d). | |||
=== lingo === | |||
Opens a lingo language shell. | |||
) lingo on | |||
lingo) set a to "Hello ScummVM" | |||
lingo) put a | |||
-- "Hello ScummVM | |||
lingo) lingo off | |||
) | |||
Arguments: | |||
* lingo on - Start the interactive lingo shell | |||
* lingo off - Stop the interactive lingo shell | |||
When the shell is on when the line starts with `lingo) `. | |||
==External Links== | ==External Links== | ||
Line 84: | Line 121: | ||
* [https://github.com/scummvm-director/scummvm/tree/director another clone of it] | * [https://github.com/scummvm-director/scummvm/tree/director another clone of it] | ||
* [https://en.wikipedia.org/wiki/Adobe_Director Wikipedia article on the topic] | * [https://en.wikipedia.org/wiki/Adobe_Director Wikipedia article on the topic] | ||
* [https://www.mistys-internet.website/blog/blog/2022/01/06/do-you-speak-the-lingo/ Do You Speak the Lingo?] - blog post by Misty De Meo about the ScummVM engine's development | |||
[[Category:Engines]] | [[Category:Engines]] |
edits