1,079
edits
(→GUI: -- ad one more task) |
|||
Line 97: | Line 97: | ||
== Tools == | == Tools == | ||
=== Tools: | === Tools: Game script (bytecode) decompiler === | ||
''Technical Contact'': [[User:Fingolfin|Max Horn]] | |||
... | ''Background:'' | ||
and | |||
Most (all?) adventure engines ScummVM supports are driven by bytescode scripts, which control the game behavior. For various reasons (in particular, debugging), it's very useful to be able to take such a script and decompile it into something resembling regular code (with variables, loops, if statements etc.). We have a tool for doing this for the bytecode used by SCUMM games. This tool is called descumm. | |||
on this | |||
Currently, descumm use a relatively crude heuristic to detect "if" statements, loops and so on. In particular, it only support loops with the condition at the start (think "while(...) { ... }" ), not such with the condition at the end (as in "do { ... } while(...)" and also suffers from various other limitations (like not being able to correctly recognize "continue" and "break" statements. | |||
The whole thing is somewhat complicated by the fact that there are two main versions of this bytecode V5 and older (register based bytecode), and V6 and newer (stack based). | |||
''The Task:'' | |||
Write an improved byte decompiler for SCUMM games, based on the existing "descumm" tool. Initially, support for only one version of the SCUMM bytecode (e.g. plain V5 or V6 or V8) is needed, but everything should be designed and implemented such that it is possible to support all SCUMM versions eventually. | |||
Even better would be if the core of the decompiler was so generic that it could be reused to decompile other bytecode dialect (and hence write improved versions of the "dekyra" and "desword2" tools). | |||
A good starting point for this might be the [[http://jode.sf.net Jode]] Java bytecode decompiler, the author of which used to be on the ScummVM team. The techincal contact has several ideas on how to approach this project, too. | |||
The tool should run on at least Windows, Mac OS X and Linux. Acceptable languages include C/C++, Python, Perl, Ruby -- other languages might be OK, but please consult with us first (after all, other developers also weill have to use and maintain your code). | |||
=== Tools: Overhaul the compression tools === | === Tools: Overhaul the compression tools === |
edits