How ScummVM is keeping adventure games alive, one old game at a time
Meet the team reverse-engineering old game engines in one of the most amazing preservation projects on PC.
Retrogaming, or for us older folks, ‘replaying modern classics’, has never been bigger. Part of the joy of being a PC gamer is that no matter how many years tick past and new games fight for attention, we can always go back in our virtual time machine and re-explore the games that made gaming, like Doom, and the ones that have arguably yet to be beaten, like Monkey Island.
There are many revival projects out there, from DOSBox to single-game engines like Exult for Ultima VII. One of the biggest and oldest is ScummVM, launched in 2001 and named for the classic SCUMM engine—Script Creation Utility For Maniac Mansion—which gave us all of Lucasarts’ classic adventure games.
Since then the project has widely opened its remit to support FMV games like Gabriel Knight 2, obscure games like Full Pipe, and for reasons that must have made sense at the time, Plumbers Don’t Wear Ties (
one of the worst PC games of all time). If you want to run Day of the Tentacle on a Raspberry Pi, chances are it’ll be ScummVM doing the heavy lifting.
ScummVM hit a big milestone on December 17 with
a 2.0 release that added even more supported games, along with some of the most lovingly anal release notes around. You know you’re dealing with serious perfectionists when tweaks include stuff as specific as "Fixed nightclub arcade sequence speed for Manhunter Apple IIgs version" and "Fixed subtitle speed setting in the Hebrew version of Simon the Sorcerer 1."
Just never call it an emulator.
"ScummVM is not an emulator," confirms Eugene Sandulenko, current Project Lead. "It has been confused a number of times with one, and actually it does contain several, though mostly for sound cards. When it comes to the games though, we don't emulate the originals—we rewrite them. The pioneers, such as Ron Gilbert of Maniac Mansion, figured out that instead of writing their game logic in assembly or Pascal or whatever, they would create a separate language tailored to the game, and which would be easy enough even for the artists to make use of. SCUMM for instance has op-codes for moving an actor from Room A to Room B or around the screen, while the implementation also covers playing walking animations and so on—it's pretty high level. This then ran in a virtual machine so that it would play on multiple platforms without everything having to be reimplemented. ScummVM does that again, this time in C. Currently we have 64 supported engines and growing."
Many as one
This hand-crafted approach has given ScummVM a well-deserved reputation for quality. It does however mean development can look quite slow on the outside, especially since these days you can drop more or less anything into DOSBox and have it at least run acceptably.
"Well, the key words are ‘these days’!" Sandulenko points out. "ScummVM started in 2001 and some of the platforms we were running on were only 25... 30Mhz. This is the major difference between emulators, like DOSBox and reimplementation, like ScummVM. Something like Monkey Island was written in the CPC era, on slow machines, and our requirements for it are about the same. Something like DOSBox, you'd need about a gigahertz to run it. Secondly of course, not all games were written for DOS or Windows. We have games based on SCUMM engines for Atari and Macintosh and Apple 2c and Amiga... even NES. You want to run the Macintosh version of Indiana Jones, which was in black and white? We can do that in ScummVM. Not in DOSBox."
This, unsurprisingly, is a lot of work.
"We take the original binary, and if you know the process of compilation, you'll know that turns high level programming code into assembly and then binary code. Along the way you lose all the function names, all the variable names... all you're left with is taking an address from memory location X and use it as a pointer to another byte, and so on. You have no clue what's happening. We call the process of figuring it out 'mapping.'"
That mapping can take months, and then the ScummVM team has to convert the code into C or another language. There's a lot of trial-and-error, and it's not a one time process. Those different game versions each require more work. Sometimes all this takes years, not months.
Sandulenko demonstrates with a look at his last implementation, an obscure adventure called Full Pipe. "I started on it in I believe 2013. It took ten months to implement it and start bug fixing, but it was only in 2016 I was able to pick it up again and finish it this year. So, that's a year and a half on one game."
It’s hard to imagine taking on this amount of work in the name of a completely forgotten Russian adventure game notable for little but being an early-ish Steam release. However, there is method to the madness—even the madness of devoting time to resurrecting Plumbers Don’t Wear Ties.
"Ha. Well, in short, because we had a crazy developer willing to invest the time, maybe because of the... childhood memories? Maybe not. But it's funny. Full Pipe, that’s about 31,000 lines of code. Plumbers Don’t Wear Ties… 485. There’s versions of Hello World longer than that! So it was pretty easy. We originally announced it as an April Fool’s joke, but… why not? Go play it!"
Back to the source
The two most common ways a game or engine gets into ScummVM are:
- One of the developers being particularly passionate about it
- The group being given the source code
"If we have source code and right, we'll try and implement it, even if it's something like this freeware 'Drascula' game. It's awful, but we got source and support... and I can say it's awful because they told us they were 14 or 15 or so and learning programming while doing it!" Sandulenko says.
Often the ScummVM team avoids using much original code. It primarily serves as a reference. But there are exceptions, like Mission Supernova. "Because it's written in assembly, it's a pretty tough one. If the source is in C or whatever and the author is okay with us just stripping out their comments and stuff, that's much easier."
The project hasn’t always had the easiest relationship with developers and publishers, though that has slowly changed over time. It got a big boost when Revolution Software re-released Beneath A Steel Sky as freeware, with Dreamweb, Lure of the Temptress, and Flight of the Amazon Queen joining a couple of smaller games as free to download demos. ScummVM has also been instrumental in getting games back on sale, either with or without the help (or appropriate credit) of the team.
In particular, Sandulenko recalls working on the game Tony Tough, whose IP owners wanted to return to shelves. "They told us they'd give us the source for reimplementation because they wanted to put it back in stores. Of course, we're volunteers, so we couldn't make any promises, but they patiently waited and then we helped them bundle it with ScummVM for distribution."
One of the stranger success stories involves the animal-themed fantasy Inherit The Earth. Due to a glitch in development, one of the intro sequence dialogue files was lost, leaving players suddenly wincing at a low-quality sample desperately ripped from the floppy version. "Luckily I have seventeen copies of Inherit the Earth!" laughs Sandulenko. And one of them, the Australian version, had the sound-clip. We were able to supply it, and now the intro is restored."
Down in the trenches
Even with a familiar game, getting a good port can be harder than expected. Sierra for instance primarily used two graphic adventure engines, AGI (King’s Quest I, Police Quest 1, Manhunter: New York etc) and SCI (King’s Quest 5, Quest For Glory 4, and so on). But that doesn’t mean the ScummVM team only had to implement each once and call the job finished. Far from it.
"Sierra’s code is a horrible mess. Our implementation is much better than the original engines. Every game they made, they were doing a fork of their source code, so even games released in the same year aren't typically compatible. That means every change we do, we have to do game checks, make sure later versions of the engine aren't broken, etc."
Luckily, ScummVM’s namesake is somewhat easier. "Oh, that's much more advanced and the games much better tested. There are seven major versions of the engine, and games running on the same one just work. Then of course later Ron Gilbert left Lucasarts to make edutainment games at Humungous Entertainment, and those games are also SCUMM. The crown of the engine though is this game Moonbase Commander—in my opinion, one of the most underrated strategy games—and that's built in SCUMM as well, using the same scripting as those classic adventures. GOG helped connect us with the rights owners to get the source for that one."
It’s not always as easy as wanting to support a game or engine. For starters, ScummVM sticks specifically to 2D games. The complexity of moving to 3D is exponential, as seen by the fact that after years of work, 3D spin-off project ResidualVM runs just Grim Fandango, Myst III Exile and Escape From Monkey Island. "if you look at the number of lines of source code, we're talking hundreds of thousands. Usually the games are all different too. We're lucky with ScummVM that we have engines like SCI that were used and re-used, so we don't have to start afresh with every new game."
The most notable omission though has to be AGS—Adventure Game Studio. This is the software behind 99 percent of freeware and indie adventures this side of the millennium, ranging from the Chzo Mythos and Larry Vales to the Blackwell series and next year’s Unavowed. Early versions are a pain, to put it mildly, as anyone who’s ever tried getting something like Quest For Glory IV 1/2: So You Thought You Were A Hero to run can attest. (Top tip: don’t!) The audience and features seem perfect for ScummVM. Yet still, no support.
"AGS is... unfortunate for us," admits Sandulenko. "Once the original author published the source code, we were pretty excited and we started working on it. We really had high hopes. But then when we mentioned it in the AGS forums, where the game authors are, there was a huge uproar. They didn't want it. They disliked the idea. They jumped on our poor developer so hard that they left in disgust, not wanting to touch it any more. I don't know why there was such opposition. We wanted to do it in the proper way, in the ScummVM spirit, and keep it updated as AGS was upgraded and improved over time. Later there was some talk of 'letting' us handle old game compatibility and so on, but... well, yeah... thanks? That’s not really in the spirit of our project."
Future Scummery
While that dispute will hopefully be settled one day, for the moment the ScummVM team has more than enough to be getting on with—and interest in their software is booming. "We used to joke amongst ourselves that before we released support for a new engine, every developer should quietly snag a cheap copy of its games on eBay, because that price was going to skyrocket."
On top of simply getting the games to work, of course, much of the project involves experimentation and building in new features. Sandulenko for instance recently implemented 4-colour CGA and Hercules (an ancient monochrome graphics standard) support for Monkey Island 1, allowing players to get the full 80s vibe of a bright magenta version of Melee Island.
But what’s the current holy grail of support?
"Blade Runner," he answers immediately. And the challenge is obvious. Not only was the raw logic of much of that game held together with sticky tape, it uses lots of technologies that rarely saw play in adventures, including voxel characters and full-screen background animations segueing seamlessly into the blocky action. "We're working on it, and it's 60-70% done. A few years ago, I said my top ones were that, the Neverhood and Full Pipe. Now those are done!"
Sandulenko is also slowly working on Macromedia Director, an authoring tool used by many-mid 90s games, but is rewriting it from scratch instead of reverse-engineering it. "I'm even working with the original creators on that one," he says. "It's a big project though."
The more engines that ScummVM can support, the more games can be dusted off and re-released for a second chance without needing a full remaster project like Grim Fandango and Full Throttle.
Legally speaking, it couldn’t be a much more generous deal. If you’re the rights holder of an old game—or given the state of the industry at the moment, the insurance company or whatever that bought up the assets after the last insurance company that bought its assets folded—you can just bundle ScummVM with it in exchange for a credit, and releasing the source of the version of ScummVM you’re using and any tweaks made to it.
"Not their game data or engine code or anything like that," assures Sandulenko. "Just our code, and any changes that they've made to it. Just like Carmack's games. He releases the engine, but you need the assets to play it. It's pretty easy. Don't be like Atari, which used our code and removed our copyright. Just give us a little recognition for our hard work—that's all we ask."
If this week is any indication, more publishers will start using the team's free preservation work to start selling their old games. Disney just released
Maniac Mansion on Steam running on, you guessed it, ScummVM.
Download the latest ScummVM here. Need some legal games to play on it? Click on the Games link. Beneath A Steel Sky is especially good.