Scummbler
Description
A SCUMM script compiler with support for SCUMM V3, V4, and V5. It can parse text files as output from ScummVM's descumm tool. Very useful for hacking existing LucasArts adventure games. Check out the manual for more information.
This tool is licensed under the MIT license.
License
Source Code Repository
Latest Version
- Fix "drawObject" in V3-4.
- Fix "getState" instruction's syntax.
- "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.
Downloads
These downloads are for version:
v2 r15
(2011-07-12)
(Older downloads can be found on the "History" tab)
Binaries
Source Code
Requires Python 2.5 (and modified PyParsing 1.5.1+, included in the source package)
Extras
Tests
v2 r4
(2009-05-02)
A suite of example scripts that can be used to test the operation of Scummbler. It contains all the scripts from the block of room 4 of MI2, some scripts from other games, and a couple with Scummbler-specific tests. NOTE: these tests are probably outdated now.
Documentation
Manual
Version: v2 r15
Last updated: 2011-07-12
An online copy of the Scummbler manual.
History
v2 r14 (2010-12-22)
Release Notes
- Add support for inline string functions, like "wait", "newline", "sound", "getInt", "setColor", etc.
Binaries
Source Code
Requires Python 2.5 (and modified PyParsing 1.5.1+, included in the source package)
v2 r13 (2010-08-20)
Release Notes
- Much more accurate error reporting.
- PyParsing library now included in the source.
- Fix example script in the manual (escape codes were "x033" instead of "x03").
Binaries
Source Code
Requires Python 2.5 (and modified PyParsing 1.5.1+, included in the source package)
v2 r12 (2010-08-03)
Release Notes
- Fix drawBox modifying main opcode instead of auxilliary opcode.
- Fix drawObject using wrong sub-opcode.
- Fix saveVerbs/restoreVerbs outputting the wrong opcode.
- Fix SetPalColor outputting a word instead of a byte for last parameter.
- Fix the auxilliary opcode values for SetPalColor, drawBox, setRGBRoomIntensity.
- Supports new descumm formatting, also with support for legacy descumm. Some workarounds in place since descumm's output is still a bit buggy.
Binaries
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r11 (2009-10-28)
Release Notes
- Should really return error codes now.
- Fix issue with cursorCommand instruction not being parsed at all.
Binaries
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r10 (2009-10-08)
Release Notes
- Catches all exceptions - should always return an error code now.
Binaries
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r9 (2009-10-07)
Release Notes
- You can now specify an output file name with the "-o" option.
Binaries
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r8 (2009-09-22)
Release Notes
- Fix issue with nested "if" blocks; scripts now compile considerably faster.
- Fix issue with "duplicate label name" error throwing a different error.
- Binaries include verb_helper, for extracting extra object info for V3/V4 VERB scripts.
Binaries
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r7 (2009-07-25)
Release Notes
- Fix problems with delayVariable and loadRoomWithEgo instructions.
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r6 (2009-07-23)
v2 r5 (2009-07-04)
Release Notes
- Supports V3 and V4 scripts.
- Supports all script types.
- Some other nice things.
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r4 (2009-05-02)
Release Notes
- More fixes for instructions with wrong opcodes (e.g. print.Text()).
- Code refactored in preparation for supporting other SCUMM versions.
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r3 (2009-05-01)
Release Notes
- Fixed missing stringOps instructions.
- Fixed issue with expression mode that has a single value or embedded instruction.
- Some code cleanup.
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r2 (2009-04-27)
Release Notes
- Forgot to include lgpl.txt, whoops!
Source Code
Requires Python 2.5 and PyParsing 1.5.1+
v2 r1 (2009-04-26)
Release Notes
- Completely re-written from scratch.
- Parses & compiles the output from descumm.
- Only supports V5.
- Has a few nice additions like loops, defined values.
- Only supports outputting local or global scripts; for object code, entry scripts etc you will need to modify the header manually.
- Multiple nested 'if' blocks or loops are slow to parse.