A Scumm games decompiler

There is this project of mine I’d like to share with the community.

As an excuse to learn Golang, I started working on a project called ScummAtlas three years ago and a couple months back I finally cracked the last bit remaining (the costumes for characters). Sadly, a 8-month old baby and a 3 year old don’t leave much time for side-projects.

The software basically takes Scumm games (v5 only for now, so Monkey 1 VGA, Monkey 2, Atlantis. V6 support is only partial) and creates a catalog (or atlas) to show how the game is made. It decompiles the scripts, and shows each room separately with hotspots, objects, scripts, z-planes, …

I’ve so far kept this to myself, since didn’t feel the software was complete (and it still isn’t)… But looking at the discussions we’ve been having on Lucas games and how much love people show for them I think looking at the output will make some people very happy. I wanted to tell Ron about it when I met him in the London meetup but the queue of people waiting to get memorabilia signed and have a chat with him was just too long and it didn’t seem fair to other people.

Obviously I can’t publish the output of the software, since it contains material that Disney owns, but you can download it here:

https://github.com/ktzar/scummatlas

follow the instructions and run it against the games you already own, provided you have the Golang binaries installed. I could provide OSX binaries if someone doesn’t know how to install Golang.

What I can publish, I guess, is a few screenshots of the output. I hope that’s fine and considered “fair use”.

To me it was an incredible journey to write code that decodes the frames, stripes, opcodes and walkboxes… I hope it’s enjoyable to someone else.

19 Likes

This is incredible. I don’t have right now the time to study it but just from the description that you provided about what the software does I think that you have already accomplished a great result!

Can’t wait to download it and see what it does.

1 Like

I don’t know if there’s a legal way to distribute the “output” of the tool… any ideas? I know that installing Golang and running some commands is daunting for some… I can cross-compile it for a few platforms. I’ve uploaded the OSX binary here: https://jumpshare.com/v/QBgTQAfr0IJFK9A1ek63
Fortunately, golang compiles static binaries, so no dependencies required :smiley:

Oh wow!
What SCUMM versions are supported? (edit: oops, it’s written in your post; I skipped straight to the github link)
And can we add TWP support :slight_smile:

Amazing, this is a must have software for retrogaming developers, fan game makers. Thanks! It’s incredible to see Monkey Island 2 handmade and coloured artwork at that tiny resolution of 320X144! Also the original scripting language… it kinda seems like a pirate decrypting tool, I’m running it now… :slight_smile:

1 Like

That is truly amazing!!!

Delightful stuff, and I will investigate it in the next few days. Major kudos.

1 Like

The original source code must have been quite different. One of the things i want to do is to change it, based on the Scumm manual that aric wilmunder published.

Drop me any comments or questions. I would really like to improve it… And i want to make the source more readable as well. ScummVM code is a beast that I’ve had nightmares with for too long :smiley:

1 Like

This is nothing short of amazing!
I reversed much of the C64 engines/formats for MM and ZMK and it took me quite awhile to get all costumes, rooms, walking boxes, masks done. Splendid!
Loom would be nice :wink:
Some of the diagnostics I wrote for our Caren point-and-click as well such as the Room map to identify exits/connections or count of objects along with the trigger areas/boxes on the screen.
Wow and thank you!

Github! Excellent. :smiley:

Makefile, .yaml, .sh…