New version of Scummbler (v2 r15). Changes:
- Fix "drawObject" in V3-4 (was missing 3rd argument and outputting the wrong opcode).
- Fix "getState" instruction's syntax (was originally defined as "if (getState(Local[0] == 0))", should have been "if (getState(Local[0]) == 0)").
- "debug?" instruction renamed to "debug".
- "PutCodeInString" - add support for a missing 2nd argument (as output by descumm).
- Restructure code path structure, separate out some tests.
- Added some tests based on my attempt to parse MI1 global scripts.
- Change license to MIT license.
- Update build scripts.
- Update to the manual - change info for "getState", add support e-mail to contact list.
Source:
I've discovered there are some bugs in descumm's output (introduced by yours truly). I discovered these after trying to parse all the global scripts from Monkey Island 1 VGA floppy.
Script 82 and 83 - missing 2nd argument for PutCodeInString
[0000] (27) PutCodeInString(24, );When the string is empty, descumm outputs nothing for the second argument. It should output this:
[0000] (27) PutCodeInString(24, "");Scummbler now supports either scenario.
Script 135 - unknown string function
Global script 135 contains this line:[049C] (FA) VerbOps(Var[100],[SetXY(0,Var[228]),Text("How to deal with frustration, disappointment, " + unknown8(8224) + " and irritating cynicism."),On(),Key(Var[229]);]);The "unknown8" instruction is incorrect, and can't be parsed by Scummbler. You must manually change the text like so:
[049C] (FA) VerbOps(Var[100],[SetXY(0,Var[228]),Text("How to deal with frustration, disappointment,\xFE\x08 and irritating cynicism."),On(),Key(Var[229]);]);Also, there shouldn't be a semi-colon after the "Key()" instruction, but Scummbler handles this anyway.
Script 152 - not joining string functions
[00BF] (14) print(255,[Color(Local[8]),Center(),Text(getString(VAR_HEAPSPACE)keepText())]);This line should read:
[00BF] (14) print(255,[Color(Local[8]),Center(),Text(getString(VAR_HEAPSPACE) + keepText())]);Again, you'll have to manually alter the script.