ScummVM: the portal to a trove of classic adventure games

ScummVM is a popular frontend used to play point-and-click adventures and other games. But where did it come from, and who works on it?


 

Preservation wasn’t considered a pressing issue for the gaming industry until well into the 2000s. While such emulators as KGen and Snes9x allowed PC users to play Mega Drive and Super Nintendo games from the late 1990s onwards, there was no such luck on the MS-DOS or Windows front. With the Microsoft operating system abandoning the DOS architecture for good at the end of the nineties, playing old PC games started to become more and more of an issue. Around the turn of the millennium, though, a dedicated adventure game fan base began to overcome those hurdles, providing access to the output of LucasArts and beyond. The original ScummVM project was started in 2001 by Vincent Hamm and Ludvig Strigeus – the latter becoming better-known as the main developer of Spotify.

Since its inception, ScummVM – its name derived from LucasArts’ Script Creation Utility for Maniac Mansion engine – was never meant to emulate any specific software or operating system. Instead, it’s based on rewriting a game’s original executable using its source code. When this isn’t available, reverse engineering techniques are used to extract the code contained in the executable, thus rewriting it in C++. Using the replaced ScummVM executable, all the game’s data files (graphics, audio, scripts, and so on) are still needed to play it. This allows new features to be added, such as cross-platform support and graphical filters, and introducing new functionalities like save states or mouse functionality.

ScummVM

Humble origins

Thinking back to when the project got started, co-developer Vincent Hamm remembers that he’d been poking around SCUMM-based tools for a while. “Other people had previously worked on the games, but nobody had taken a stab at the scripting language,” he says. “So I started working my way through Maniac Mansion and Zak McKracken. When it came to adding characters, I found a doc online on Monkey Island 2 written by Ludvig. I got in touch and he was working on something similar, but was way ahead of me, so I dropped my own project and joined his – that was yet unnamed, as I recall.”

They started working on supporting several LucasArts adventure games, but after finishing work on Monkey Island 2, they hit a wall. “The sound system in Sam & Max and a large bunch of script bits were very different from previous games,” says Hamm. “This was also around the time that Ludvig, whose aim was just to emulate Day of the Tentacle and Monkey Island 2, started to lose interest. He was still around in the chat, but contributed less. By then, though, the project had gained traction, with other people helping. I was still very much involved in the core of the SCUMM interpreter, continuing the work on later [games] – Full Throttle, The Dig – and earlier [ones] – Indy 3 and Loom.”

Once those LucasArts games were also being supported successfully, Hamm would gradually reduce his contributions on the project, though he still stayed in touch with the community he helped foster. “There’s an educational aspect to ScummVM,” Hamm says. “Being open source, everyone can go in and see how those games are made and work, and learn from it. There’s also preservation. Those games were harder and harder to get working, and that was something I wanted to solve in some way. Sure, one could always go back to a virtual machine, but it was a hassle compared to just being able to run the games on a modern OS.”

ScummVM takes flight

The project soon saw other leads step in, like Eugene Sandulenko, who’s now been working on ScummVM for almost 20 years. “It was October 2003, I purchased a Russian release of Full Throttle, came home to find a way of running it, and found ScummVM. I ran it and it crashed immediately,” he recalls. “Apparently there was a problem with the fonts, which I fixed and submitted a patch for in the channel. Then, after playing for a little while, I got a message, ‘You can now jump the gorge’ [a part of the game that only comes after fighting the biker gangs].

“That meant the whole arcade bike fights section wasn’t implemented. I jumped to the IRC channel again and got an explanation. Since I had several years of reverse engineering experience by then, I told them that I’d like to look into it. All I got was a pat on the shoulder and best wishes. If only I’d known!”

Indeed, it was only four months later that Sandulenko would finish working on the INSANE engine that powers the Full Throttle bike fights. “INSANE is a name well-earned,” he continues. “In the end, the developers got fed up with me continuously submitting patches, and I was invited on the main team.”

When asked what made him stay on the project after the Full Throttle engine was completed, he says “reverse engineering. It definitely feels like solving an enormous puzzle, when you’re making sense out of thousands of unnamed functions, variables, and a soup of engine logic. Nowadays it’s easier with disassemblers, but at that time, it was all hardcore assembly work.”

Reverse engineering

How does work on a title begin? It’s all down to one person’s determination, Sandulenko explains. “We need a capable developer with enough time, skill, and passion. Sometimes we make contact with the original developers, but, in most cases, it’s just a game executable and you. There are only relatively few engines where we started with the original sources available.

“Once the developers feel like the engine is closer to completion, they submit a request. Then, the engine’s reviewed, brought to our standards, merged, and then the work continues in-tree. Unfortunately, sometimes real life takes over and the devs who started working have no more time and/or motivation to continue. This leads to a stalled engine in our codebase, which we need to remove after no progress has been made for quite a while.”

As the project has gained traction over the years, several people have inevitably tried to take advantage of it economically. There have been several cases of ScummVM being put on Steam, Google’s Play Store, or the App Store. This goes against the application’s GNU V2 licence, which applies to the modified game executable. The original copyright holder is allowed to bundle ScummVM with the game they’re selling, only by providing a GPL licence notice together with the ScummVM copyright file, and must specify whether the code was modified in any way. Sandulenko angrily recalls one example of a breach of licence. “One guy was able to run a successful Kickstarter campaign, taking our Dreamcast ScummVM port and the freeware game from the website, and burning them on a CD-R. The Kickstarter raised €4000!”

The advantages to replacing an executable, as opposed to just emulating the game, become clear when looking at some of the latest supported titles. Arnaud Boutonné, one of the co-leads, got into the project in 2009 to support one of his favourite games, Fascination: “The former main [developer] didn’t want to work on it anymore and told me to do it myself.”

After that, Boutonné worked on support for the Hugo trilogy (a series of parser-based adventures first released in 1990) to make them ready for sale on GOG. Boutonné wasn’t familiar with them, which he recalls as an interesting experience, since when he started rebuilding them – with the help of the original developer – he ended up fixing some of their bugs. “I also added a couple of rooms that were unused but looked fancy, and documented previously unknown Easter eggs,” he says. “[And] we fixed some critical bugs, like we did with Nightlong: Union City Conspiracy. Adding cutscenes is more rare, since most of the games we support came on floppies, and developers were keen on keeping files as small as possible to reduce production costs.

“One great example of restored content is Blade Runner. All the cut content was already present in the data on the CDs themselves – it was just a matter of making it accessible.”

With a list of fixed bugs, restored audio, and text running to almost three pages long, the ScummVM version of Westwood Studio’s Blade Runner feels like a Director’s Cut of sorts. Sandulenko recalls that their work on Blade Runner led to an approach from Nightdive Studio, which was working on a remastered edition of the same game.

“We tried to reach an agreement, but it didn’t work out,” he says. “They wanted to be allowed to use our engine, but we couldn’t agree on a price.”

Sandulenko also recalls the drama when Nightdive’s Blade Runner was released to harsh reviews and unhappy players. “For a while, GOG removed our version and everyone was forced to buy the enhanced Nightdive edition. Luckily, after a couple of weeks, they came to their senses.”

Preservation

On the subject of game preservation and its future, several team members express worry that studios still haven’t learned much from the old days of perishable media. “Once, you stored source data on floppies and they might eventually end up being unreadable,” comments Sandulenko. “But what’s their excuse now?”

“Take Nintendo,” says Lothar Serra Mari, who’s been working on ScummVM since 2014. “Except for re-releasing the same titles, they seem to not be doing anything to look after their download-only releases. At some point, I think pirating will be the only way to access most of their library. I think it’s clear by now how digital makes preserving games much harder – often, there’s no apparent way to access the ‘raw’ original files.”

Co-lead Paul Gilbert concurs that preservation still isn’t being taken seriously by enough developers and publishers. “With games getting more complicated, it gets harder and harder to support them without source code. Without sources, it becomes less likely we’ll be able to support anything recent, since even old games require so much work. I’m amazed by the number of new games that we’re still able to support with each release.”

There have been several discussions about the purity of recreating a game engine as it was, versus adding improvements and fixing bugs. Boutonné recalls the team wasn’t always 100 percent pro-enhancements but, over time, several of the more outspoken supporters of “purism” have left the project. “Today, the majority definitely seem to be in favour of ScummVM adding quality of life improvements to the games supported,” he says.

Gilbert, who’s been on the project since 2005, first working on Revolution Software’s Lure of the Temptress, is also a firm believer in adding new features. “I’m always happy when, in some cases, cut content can be restored. I consider it as an homage to the authors’ original intentions.”

Documentation is also a topic related to preservation, since without keeping track of the changes, rebuilding an executable becomes rather difficult. Mari previously translated the GUI and documentation, and recently became one of the co-leads. He enthuses about the project’s constant growth, along with his passion for keeping the experience as close to the original as possible. “I decided to add simulated loading times to the Myst games,” Mari says, “since I didn’t like the instant transitions between scenes.”

Mari also recalls that, until recently, the project didn’t really have a defined process for updating documentation. “If you want to keep track of new features and relevant changes, it’s essential to keep the docs updated,” he says. “But even I’m guilty of being a little lazy about it at times…”

Beyond Point-AND-Click

Once solely focused on LucasArts point-and-click adventures, ScummVM’s scope has gradually expanded over the years. Sandulenko expresses his wish to have proper Android and iOS devs to further develop mobile ports, which has so far proven difficult.

“We’re continuing our work on Macromedia Director [see box on page 72],” he says. “It’s unknown when we’ll finish, but each step takes us closer to supporting many more multimedia titles.”

“With the support of Director, we’re now more than just a convenient way to play adventure games on modern platforms,” adds Boutonné. “The versions of the program we support have been used by thousands of titles of the time, so we’re preserving games and software as well.”

Mari observes that by supporting Director, QuickTime assets are slowly being integrated as well, “so many more lesser-known titles can be run without having the original hardware on hand”.

Gilbert, meanwhile, seems to appreciate the project’s new broadened scope.

“With the recent inclusion of interactive fiction, ScummVM could be seen as the go-to place for all forms of storytelling games in the future,” he says. “We already support Might & Magic and Ultima titles, and I’d like to see full support for those series. Plus maybe the Wizardry and early Final Fantasy gamesas well.”

“This change was definitely necessary, since people are essentially working on games they loved when they were younger, and as most of the bestsellers were supported, we had less and less interesting targets,” Boutonné continues. “So, we were losing developers and not getting new ones. Since we have this new scope, we have a lot of newcomers, and fresh blood is what will keep the project alive.”

Could ScummVM gradually become a platform which will support all kinds of game engines? “Not yet,” says Sandulenko, “and it probably never will, since arcade games or shoot-‘em-ups would clearly be out of our scope. However, there was one idea of turning ScummVM into a library, so any game could be built on top of it, but this is an old dream of mine and I don’t think we ever put any substantial effort into it.”

On the potential future of the project, some of the co-leads recognise that there’s no easy way to tell where ScummVM will head next. “With all the new changes, the sky’s the limit,” says Boutonné. “We jumped in a short period of time from supporting hundreds of point-and-click games to thousands of titles. The main thing badly missing is time – we all have dozens of titles in mind, and as we aren’t paid for this, we still have to make a living on the side.”

Sandulenko similarly notes that real-world commitments often get in the way of ScummVM development, and even jokes that he’d like to create some sort of machine that could take over his “boring daily routine” so he could spend more time with his favourite project.

“I’m pretty sure,” he says, “that most of us spend more time reverse-engineering games than actually playing them!”

Leave a Reply

Your email address will not be published. Required fields are marked *

More like this