https://wiki.scummvm.org/api.php?action=feedcontributions&user=Djsrv&feedformat=atomScummVM :: Wiki - User contributions [en]2024-03-29T10:21:11ZUser contributionsMediaWiki 1.36.0https://wiki.scummvm.org/index.php?title=Director&diff=34007Director2022-01-02T17:27:06Z<p>Djsrv: Add info on Shockwave versioning</p>
<hr />
<div>{{EngineDescription|<br />
name=director|<br />
developer=[[User:sev|sev]], [[User:iskrich|iskrich]], [[User:djsrv|djsrv]], [[User:npjg|npjg]]|<br />
companies=[[Macromedia]]|<br />
usedBy=[[Director/Games|hundreds of games]]|<br />
dateAdded=August 4, 2016 |<br />
release=Since ScummVM 2.5.0|<br />
}}<br />
<br />
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]].<br />
<br />
== Introduction ==<br />
Started out as MacroMind VideoWorks. MacroMind was founded by Marc Canter. The name VideoWorks was changed to Director in 1987.<br />
<br />
Director underwent huge number of versions.<br />
<br />
[http://lingoworkshop.com/articles/history History of the engine].<br />
<br />
[[Director/Codenames|A bit more history of the engine codenames]]<br />
<br />
==Games and software targeted by the engine==<br />
This engine potentially targets a very large amount of games:<br />
<br />
See [[Director/Games|Director Games]] for a list of known games and software, and their current state of support in the engine.<br />
<br />
== Versions ==<br />
The Director player was the basis for the [https://en.wikipedia.org/wiki/Adobe_Shockwave Macromedia Shockwave] web plugin. Shockwave 1.0 was based on Director 4.0. The next release was Shockwave 5.0, based on Director 5.0, and from then on Shockwave's version number was tied to Director.<br />
<br />
In Japan at least D4+ was released under title マクロメディア ディレクター<br />
<br />
== File Format ==<br />
=== Archive Team's documentation ===<br />
* [http://fileformats.archiveteam.org/wiki/Shockwave_(Director) Shockwave (Director)]<br />
* [http://fileformats.archiveteam.org/wiki/Lingo_bytecode Lingo bytecode]<br />
<br />
=== Team Earthquake's documentation ===<br />
* [https://medium.com/@nosamu/a-tour-of-the-adobe-director-file-format-e375d1e063c0 A Tour of the Adobe Director File Format]<br />
* [https://docs.google.com/document/d/18FMRZ0EvR2uF9rKTtvt-TXyIMFIBVg13bUhmV3_iHD0/edit Team Earthquake Shockwave Unofficial Documentation]<br />
* [https://docs.google.com/document/d/1jDBXE4Wv1AEga-o1Wi8xtlNZY4K2fHxW2Xs8RgARrqk/edit More Director Movie File Unofficial Documentation] (has in-depth documentation of structs)<br />
* [https://github.com/Brian151/OpenShockwave OpenShockwave repo] (rather unorganized documentation and tools including a Lingo decompiler)<br />
* [https://github.com/Earthquake-Project Earthquake Project repos] (newer versions of the above)<br />
<br />
== Development and Running ==<br />
=== Running any D3 or D4 mac target ===<br />
Besides adding specific md5s, there is a shortcut for forcing a directory to be detected as a director game.<br />
<br />
Create an empty file named "D3-mac" or "D4-mac" in the game directory, and it will be detected as the respective Director version<br />
<br />
=== Starting from an arbitrary movie file ===<br />
Assuming, that you added game named 'workshop' with the method above.<br />
<br />
./scummvm --start-movie=HandV workshop<br />
<br />
Here HandV is the name of a movie in the directory. A frame number to start execution<br />
can also be added: <br />
<br />
./scummvm --start-movie=HandV@2 workshop<br />
<br />
=== Executing lingo tests ===<br />
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: <br />
./scummvm -d11 -p engines/director/lingo/tests/ directortest<br />
<br />
The option <tt>--start-movie=<script_name></tt> is also available to run a specific .lingo file.<br />
<br />
=== Executing all director movies in a directory ===<br />
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:<br />
./scummvm directortest-all-mac<br />
<br />
=== Debug flags ===<br />
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:<br />
<br />
./scummvm --debugflags=lingoexec,lingocompile,slow -d6 --start-movie=TABLE.DIR chopsuey<br />
<br />
The useful ones are:<br />
<br />
* lingoexec -- tracing Lingo execution<br />
* lingocompile -- details about Lingo script compilation<br />
* lingoparse -- turns on Bison grammar trace. Verbose. You should know what you're doing<br />
* 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<br />
* 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<br />
* fast -- removes delay between frames<br />
* bytecode -- execute precompiled bytecode instead of compiling Lingo. Lingo Workshop movies have both bytecode and script texts<br />
* loading -- produces tons of deciphered data from movie files.<br />
<br />
=== Automated Tests ===<br />
There is a CI (continuous integration) server running for Director.<br />
* [https://john.scummvm.org Buildbot server]<br />
* [https://github.com/rvanlaar/director-buildbot Buildbot server sourcecode]<br />
<br />
=== Is my game a Director Game and which version is it? ===<br />
<br />
Run the following command in the directory of your installed gamedata:<br />
<br />
grep --text -ir director|strings |egrep 'Macromedia Director [0-9]'<br />
<br />
This will show which version of Macromedia Director was used. If this yields nothing, it probably isn't a Macromedia director game.<br />
<br />
<br />
==External Links==<br />
* [https://github.com/scummvm-director/continuity fuzzie's work in Python]<br />
* [https://github.com/Deledrius/scummvm/tree/director/engines/director Early work by fuzzie/clone2727]<br />
* [https://github.com/scummvm-director/scummvm/tree/director another clone of it]<br />
* [https://en.wikipedia.org/wiki/Adobe_Director Wikipedia article on the topic]<br />
<br />
[[Category:Engines]]</div>Djsrvhttps://wiki.scummvm.org/index.php?title=Director&diff=27701Director2020-05-19T20:42:01Z<p>Djsrv: Add file format links</p>
<hr />
<div>{{EngineDescription|<br />
name=director|<br />
developer=[[User:sev|sev]], [[User:iskrich|iskrich]]|<br />
companies=[[Macromedia]]|<br />
usedBy=hundreds of games|<br />
dateAdded=August 4, 2016 |<br />
release=|<br />
}}<br />
<br />
The Macromedia Director engine was partially implemented by [[User:iskrich|iskrich]] for the [[Summer of Code|Google Summer of Code]] in 2016.<br />
<br />
== Introduction ==<br />
Director underwent huge number of versions.<br />
<br />
[http://lingoworkshop.com/articles/history History of the engine].<br />
<br />
==Games and software targeted by the engine==<br />
This engine potentially targets a very large amount of games:<br />
<br />
See [[Director/Games|Director Games]] for a list of known games and software, and their current state of support in the engine.<br />
<br />
== Versions ==<br />
In Japan at least D4+ was released under title マクロメディア ディレクター<br />
<br />
== File Format ==<br />
=== Archive Team's documentation ===<br />
* [http://fileformats.archiveteam.org/wiki/Shockwave_(Director) Shockwave (Director)]<br />
* [http://fileformats.archiveteam.org/wiki/Lingo_bytecode Lingo bytecode]<br />
<br />
=== Team Earthquake's documentation ===<br />
* [https://medium.com/@nosamu/a-tour-of-the-adobe-director-file-format-e375d1e063c0 A Tour of the Adobe Director File Format]<br />
* [https://docs.google.com/document/d/18FMRZ0EvR2uF9rKTtvt-TXyIMFIBVg13bUhmV3_iHD0/edit Team Earthquake Shockwave Unofficial Documentation]<br />
* [https://docs.google.com/document/d/1jDBXE4Wv1AEga-o1Wi8xtlNZY4K2fHxW2Xs8RgARrqk/edit More Director Movie File Unofficial Documentation] (has in-depth documentation of structs)<br />
* [https://github.com/Brian151/OpenShockwave OpenShockwave repo] (rather unorganized documentation and tools including a Lingo decompiler)<br />
* [https://github.com/Earthquake-Project Earthquake Project repos] (newer versions of the above)<br />
<br />
== Development and Running ==<br />
=== Running any D3 or D4 mac target ===<br />
Besides adding specific md5s, there is a shortcut for forcing a directory to be detected as a director game.<br />
<br />
Create an empty file named "D3-mac" or "D4-mac" in the game directory, and it will be detected as the respective Director version<br />
<br />
=== Starting from an arbitrary movie file ===<br />
Assuming, that you added game named 'workshop' with the method above.<br />
<br />
./scummvm --start-movie=HandV workshop<br />
<br />
Here HandV is the name of a movie in the directory<br />
<br />
=== Executing lingo tests ===<br />
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: <br />
./scummvm -d11 -p engines/director/lingo/tests/ directortest<br />
<br />
The option <tt>--start-movie=<script_name></tt> is also available to run a specific .lingo file.<br />
<br />
=== Executing all director movies in a directory ===<br />
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:<br />
./scummvm directortest-all-mac<br />
<br />
=== Debug flags ===<br />
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:<br />
<br />
./scummvm --debugflags=lingoexec,lingocompile,slow -d6 --start-movie=TABLE.DIR chopsuey<br />
<br />
The useful ones are:<br />
<br />
* lingoexec -- tracing Lingo execution<br />
* lingocompile -- details about Lingo script compilation<br />
* lingoparse -- turns on Bison grammar trace. Verbose. You should know what you're doing<br />
* 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<br />
* 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<br />
* fast -- removes delay between frames<br />
* bytecode -- execute precompiled bytecode instead of compiling Lingo. Lingo Workshop movies have both bytecode and script texts<br />
* loading -- produces tons of deciphered data from movie files.<br />
<br />
=== Automated Tests ===<br />
There is a CI (continuous integration) server running for Director.<br />
* [https://buildbot.projecttycho.nl Buildbot server]<br />
* [https://github.com/rvanlaar/director-buildbot Buildbot server sourcecode]<br />
<br />
=== Is my game a Director Game and which version is it? ===<br />
<br />
Run the following command in the director of your installed gamedata:<br />
<br />
grep --text -ir director|strings |egrep 'Macromedia Director [0-9]'<br />
<br />
This will show which version of Macromedia Director was used. If this yields nothing, it probably isn't a Macromedia director game.<br />
<br />
<br />
==External Links==<br />
* [https://github.com/scummvm-director/continuity fuzzie's work in Python]<br />
* [https://github.com/Deledrius/scummvm/tree/director/engines/director Early work by fuzzie/clone2727]<br />
* [https://github.com/scummvm-director/scummvm/tree/director another clone of it]<br />
* [https://en.wikipedia.org/wiki/Adobe_Director Wikipedia article on the topic]<br />
<br />
[[Category:Engines]]</div>Djsrv