jEstAr jOkiN

news . games . music . software

News

4th July 2009:
A new version of Scummbler has emerged! It now supports SCUMM V3 and V4, all script types, and other nice things. It could use more testing, so let me know if you encounter any problems. I kind of lost track of development (I put off updating the manual for ages), but it should also support Indy 3 for FM Towns, but not Zak 256.
Incidentally, DOSBox 0.73 is out, but uses a new DRO format, and DRO Trimmer does not work with the new files.

12th May 2009:
Finally updated mi2img, it actually has command line options now. And that's it. I have been working on Scummbler to support V3 and V4 scripts, I'm nearly done, I just have to add Indy3's strangeness, and possibly Zak256. I also have an idea for another SCUMM app...

26th April 2009:
Here comes V2 of Scummbler! This one is actually pretty decent! It can parse V5 scripts output from ScummVM's descumm tool, making modifying SCUMM games this easy:
1) Extract the game with ScummPacker
2) Decode appropriate script with descumm
3) Modify text script with your favourite editor
4) Encode the text script to bytecode with Scummbler
5) Replace the original script file
6) Repack the game with ScummPacker
Once again, this only works for SCUMM V5. Hopefully I can work out a graceful way to handle V3 and V4 as well for the next release.
There is also a new version of ScummSpeaks, which adds the ability to do a mass import/export of sounds, and automatically link them to the appropriate lines of text!

26th December 2008:
Redesigned this page a bit. Also, there's new versions of ScummPacker, ScummSpeaks, and DRO Trimmer for your pleasure!

9th January 2008:
Chucked up the Python files for some SCUMM tools. No binaries. Haven't tested the code to see if it still works, and I haven't worked on most of it for a long time (since late 2004 to early 2006). Also, I think they're all hardcoded for use with Monkey Island 2. You'll need to poke around in the code to get it to work with other games.

These are not user friendly, and barely working. You will need to know something about Python, and probably the inner workings of SCUMM, in order to use them. Thankfully there are a few documents out there about SCUMM (check out the ScummVM site).

28th September 2007:
Ahoy! While I consider making a dynamic page of some sort, here's a sampling of some of my brilliant works (and let's face it, they are fairly brilliant; 9 out of 10 housewives can't tell the difference between my code and the Sistine Chapel). Well, to be honest, it's all stuff my computer made, I just put my name to it.

Games

Battle School

Made for a friendly competition on the Something Awful forums. I made the unit art and animations, and a few of the sound effects.

Music

MySpace

Check out my page on MySpace.

Software & Code

DRO Trimmer

Title: DRO Trimmer
Description:

A tool to modify DRO files, the raw OPL (i.e. Adlib) recordings output from DOSBox (from around v0.65? to 0.72). Pretty simple. It just loads up the data into a table, and you can delete instructions as you see fit.

This tool is licensed under the LGPL 3.0.

Screenshots:
Version: v2 r1 (26/12/2008)
  • File loading is approximately 1,000,000,000,000,000 times faster (give or take a few powers of ten).
  • Song length now correctly calculated (sorry about that)
  • Bogus delays that cause problems are now automatically removed when loading a file
  • Entirely GUI-based, no console output
  • New "Find Next" dialog
  • Removed analysis feature (for now)
  • Internal restructure
  • No longer requires PythonCard
License: LGPL 3.0
Source: Source (27.2 KB) Requires Python 2.5, wxPython 2.6+
Binaries: Win32 Executable (zip) (4.77 MB) -
Other: Example files (238 KB) Some trimmed and untrimmed DRO files.

 

Scummbler

Title: 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 LGPL.

Screenshots: -
Version: v2 r5 (4/7/2009)
  • v2 r5
  • Supports V3 and V4 scripts.
  • Supports all script types.
  • Some other nice things.
  • v2 r4
  • More fixes for instructions with wrong opcodes (e.g. print.Text()).
  • Code refactored in preparation for supporting other SCUMM versions.
  • v2 r3
  • Fixed missing stringOps instructions.
  • Fixed issue with expression mode that has a single value or embedded instruction.
  • Some code cleanup.
  • v2 r2
  • Forgot to include lgpl.txt, whoops!
  • v2 r1
  • 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.
License: LGPL 3.0
Source: Source (134 KB) Requires Python 2.5, PyParsing 1.5.1+
Binaries: --  
Other:

Manual (HTML)

An online copy of the Scummbler manual, which is also distributed with the source code.

Tests (70.2 KB) 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.

 

ScummPacker

Title: ScummPacker

Description:

Pack and unpack resource files for LucasArts games. Currently supports Monkey Island 1 CD, Monkey Island 2, and Indiana Jones and the Fate of Atlantis (i.e. all SCUMM v5 games). Can also pack and unpack monster.sou files.

Screenshots:
Version: v2 r1 (26/12/2008)
  • Now supports Monkey Island 1 CD and Indiana Jones and the Fate of Atlantis
  • Correct room numbering
  • NLSC blocks are now generated when packing, so you can add new local scripts (LSCR blocks)
  • RMHD blocks are partially generated when packing, so you can add new objects (OBIM, OBCD)
  • RNAM block is now generated, names are stored in the LFLF directory name (limit 9 ASCII chars)
  • CHAR, COST, SCRP and SOUN blocks are now numbered correctly (were 1 higher than they should have been)
  • Cleaned up the command line options a bit. You'll mostly want to use "-e" and "-p" to extract and pack, specify the game with "-g"
  • Generated directory files (e.g. "DSOU.gen", "DCOS.gen") are deleted once extraction finishes
  • Workaround for Monkey Island 1 CD SOUN blocks which have no sub-blocks
License: Public Domain
Source: Source (11.4 KB) Requires Python 2.5
Binaries: - -
Other: - -

 

ScummSpeaks

Title: ScummSpeaks
Description:

A tool to assist in adding speech to the old LucasArts game Monkey Island 2; speech will only work when the game is played using ScummVM. Uses text extracted with scummtr, modifies the text to play a sound stored in a "monster.sou" file (or any of the compressed formats supported by ScummVM). This one actually comes with a readme file! No guarantees it'll actually be helpful, though.

Check out this video on YouTube of speech in Monkey Island 2, with your typical puerile humour text modifications. It's pretty rough with a few script errors, but I did the hack before I made ScummSpeaks or Scummbler, so I was manually hex-editing scripts and copy-pasting longs strings of arbitrary numbers to play the speech.

Here's a better hack, demonstrating a text-to-speech proof of concept, which is necessary for a few areas where variables are used instead of hard-coded strings..

Screenshots:
Version: v2 r2 (26/04/2009)
  • v2 r2
  • You can now do a mass import/export of sounds that automatically map to line numbers, including lip-synch tags.
  • v2 r1
  • Improved text searching
  • Explicit choice of monster.sou file type
  • Ability to edit text
  • Export script-formatted text
  • Some bug fixes & internal restructuring
  • Removed the ability to import/export partial projects (old code is still in the source).
License: Public Domain
Source: Source (28.3 KB) Requires Python 2.5, wxPython 2.6+
Binaries: - -
Other: Extra files (107.6 KB) Text dump of Monkey Island 2 (acquired with scummtr), with a comments file for use with ScummSpeaks.

 

SCUMM Image Encoder

Title: SCUMM Image Encoder (mi2img)

Description:

A background graphics compressor/decompressor from SCUMM v5 resources. It only compresses losslessly and without transparency. Also leaves lots of room for the basic EGA palette and any colours used by sprites (an advanced system would reconcile all sprites used in a room and their colours with the background's palette), so backgrounds are limited to 160 colours. Input/output can be PNG, or a combination of RMHD (room header), SMAP (image data) and CLUT (colour lookup table) resources as dumped/accepted by ScummPacker.

Screenshots: -
Version: v1 r2 (9/1/2008)
  • v1 r2
  • Now useable without having to edit the source code.
  • Fixed idiotic bug that prevented encoding from working with 8-bit PNGs.
  • v1 r13
  • Initial Release (sorry about the numbering)
License: Public Domain
Source: Source (7.2 KB) Requires Python 2.5, Python Imaging Library
Binaries: - -
Other: - -

 

Contact me here
jestar jokin 2007-2009