A broken font in Full Throttle brought Eugene Sandulenko to ScummVM. Fixing it revealed a larger problem: the bike-fighting sequences were not implemented. Someone needed to work out how they worked. Sandulenko already had years of reverse-engineering experience, so he took a look. It was quite a look.
For the wider story, read The Complete History of ScummVM: 25 Years of Adventure, from the project’s early days to the games and engines it supports today.
Known online as sev, Sandulenko joined ScummVM in 2003 and became a project leader in 2006. His work has ranged from deciphering LucasArts’ INSANE system to supporting the Humongous Entertainment games he wanted his daughters to grow up with. Alongside the engines come the less visible jobs: interfaces, infrastructure, releases, students, and keeping volunteers interested in another difficult puzzle.
ScummVM gives old adventures a place on modern machines by reimplementing the software that runs them. That distinction matters to Sandulenko, as does the question of what happens once a game works again. Should an old bug stay? Should a missing conversation return? And what do you do when the next preservation challenge is a multimedia title built with an obscure Director extension?
Retro Replay spoke with Eugene about Full Throttle, Blade Runner, Macromedia Director, the games that brought him into the project, and the people who make him want to stay.
Interview by David of Retro Replay. Answers by Eugene “sev” Sandulenko.

Director, students and the work on the desk
Retro Replay: Before I drag you back into 2003, what part of ScummVM is most interesting to you right now? Is there a particular engine, technical problem, or preservation challenge currently occupying most of your attention?
Eugene Sandulenko: For the number of years, I am pretty fascinated by the Macromedia Director engine; this is where my recent attention in. Also, GSoC takes significant amounts of time every year, and that serves as a force multiplier, e.g. via the students, I am able to do much more work.
Also, in the background, I always work on some infrastructure and GUI improvements. Particularly, one of the upcoming things is our git reposiitory split.
Full Throttle and the rabbit hole
Retro Replay: Let’s do the traditional origin story anyway. You found ScummVM after buying a Russian copy of Full Throttle that crashed because of a font issue. Did you have any idea that fixing that one problem was about to consume a rather large portion of the next two decades of your life?
Eugene Sandulenko: Absolutely not. However, I had a passion for programming, reverse engineering, and adventure games. Thus, the stars aligned, and here I am.
Retro Replay: Once the font problem was fixed, you discovered that the bike-fighting section of Full Throttle was not actually implemented. What made you look at that situation and think, “Sure, I’ll reverse engineer this myself”?
Eugene Sandulenko: I jumped to the IRC channel and asked around. The folks explained that nobody is working on it. Since by that time I had around 10 years of reverse engineering experience, I decided to take a look. Of course, I had no idea how deep the rabbit hole would be. And that is exactly what makes reverse engineering appealing: it is a giant puzzle with constant flow of small wins that bring dopamine.
Retro Replay: The INSANE system in Full Throttle apparently lived up to its name. What made that particular piece of LucasArts technology so difficult to reproduce?
Eugene Sandulenko: The sheer size of it. Imagine, convolution of six state machines, with some spanning over 120 states. It is essentially a huge program on top of existing scripts on top of the SCUMM engine which is quite complicated. Also, the very heart of the system is a video with additional attributes for every frame, so it is able to skip, rewind frames or set the engine state flags.
Let’s consider some statistics. ScummVM’s rather compact implementation is almost 9k lines of code (the original was almost twice of that). 25 game engines (out of the current 127) are smaller than that.

Retro Replay: After finishing that work, what made you stay with ScummVM instead of simply declaring victory, playing Full Throttle, and moving on with your life?
Eugene Sandulenko: Then I learned about Humongous Entertainment games. And got a great buddy (Kirben, I still miss you), and we worked on adding support for those. My motivation was to make my daughters grow up on some decent games without violence and with educational elements. So, Freddi Fish, Pajama Sam, Putt-Putt, and SPY Fox made that mission successful.
Then, I learned about this nice and sweet game “Inherit the Earth”, bluegr joined the team and helped with that, and then, out of blue, somebody donated a fully reversed engine for Gobliiins, one of my early favorites. After that, there was no way back.
Retro Replay: You had reverse-engineering experience before joining the project. What is it about reverse engineering that is enjoyable enough to spend months staring at unnamed functions, assembly, and behavior that was never intended to be understood by outsiders?
Eugene Sandulenko: It is an interesting mix of puzzle solving, archeology and learning new techniques. You are wokring with an established and accomplished program, and understanding every moving part in the process. That brings delight.

What ScummVM actually does
Retro Replay: ScummVM is constantly described as an emulator, even though the project has spent years explaining why that is not quite correct. What is the clearest way you would explain the difference between ScummVM and something like DOSBox or a console emulator?
Eugene Sandulenko: An emulator emulates a host system (or platform). E.g., it recreates digital copies of hardware and runs the original software as it was there. ScummVM is a full reimplementation of the software, akin to a source port. Another close analogy is some of the remasters, where a game is made to work on modern platforms, with modern controls, enhancements etc.
That also means that we are able to fix original bugs (and bring our own, he-he), enable enhancements like James Woodcock’s “ScummVM Music Enhancement Project”, and support multiple saves. And, most fascinating, combining all different flavours and engine versions under one codebase, essentially combining multiple game executables into a single engine. None of it is achievable by emulation.
Retro Replay: Does the word “emulator” bother you at this point, or have you accepted that normal people are probably going to call ScummVM one forever? 🙂
Eugene Sandulenko: Yes, it still bothers me, particularly because it is followed by “where I can download ROMs?” <facepalm>.
Retro Replay: When ScummVM began, the name literally referred to the SCUMM virtual machine. Today it supports games from a huge number of completely unrelated engines. At what point did the name become almost amusingly inaccurate?
Eugene Sandulenko: Around April 2002, with the release of 0.2.0, it supported “Simon the Sorcerer”; the project was around 6 months old back then. In 2006, we brainstormed this Wiki page: https://wiki.scummvm.org/index.php?title=ScummVM_Name
Retro Replay: Was there a moment when the team consciously decided ScummVM could become something much larger than a LucasArts compatibility project?
Eugene Sandulenko: Yes.
#### 0.2.0 (2002-04-14) ... - Support for first non-SCUMM games (Simon the Sorcerer).
I was not there when this was decided. When I joined the project in 2003, we already had six engines: scumm, simon, sky, sword1, sword2, queen (I just realized how most of them starting with ‘s’).
Retro Replay: What determines whether a game or engine belongs inside ScummVM today? Is there still a philosophical boundary, or has the answer become mostly technical and practical?
Eugene Sandulenko: We allow and welcome engines that support Adventures and RPGs. And sometimes games with rich stories; this is how FMV titles were allowed in. Also, most of us are completionists; this is why when there are non-adventures built on an existing engine, we prefer to complete the support. Great example is the SCUMM engine, which, besides Adventures supports educational titles, sports, arcades, puzzles, table-top games, and even a turn-based strategy.
Retro Replay: Is there an engine that was proposed for ScummVM where your initial reaction was basically, “That is absolutely not what this project was supposed to do”?
Eugene Sandulenko: Yes, and the number of times. The latest one was just two days ago, when somebody offered their reversed engine for Gearhead Garage, a car shop simulator. We also reject games with porn, which excludes the Visual Novels genre. We had recurrent discussions about this topic.
Old source code and the Blade Runner mountain
Retro Replay: ScummVM can gain support for a game in very different ways: source code releases, reverse engineering executables, or studying file formats and behavior. Which approach tends to produce the most interesting development work for you personally?
Eugene Sandulenko: All of them have their own appeal. Still, looking at the decomplication would be the most interesting way. It is a pity that we already completed most of the low-hanging fruit, so what is left is either overly complex, has the game logic hardcoded, or is written in C++, which is a great pain to reverse.
Retro Replay: When a developer or publisher provides original source code, is it usually the dream scenario people imagine, or do you sometimes open decades-old commercial code and realize reverse engineering might actually have been easier?
Eugene Sandulenko: Yes. We got AGOS (Simon the Sorcerer) engine after we completed reversing; the same story was with the Gobliins engine. We then referred to the original sources for clarifying obscure behaviors and fixing bugs.
Retro Replay: Have you ever received old source code that would no longer build, depended on missing tools or libraries, or contained assumptions nobody alive seemed to understand anymore?
Eugene Sandulenko: It is always the case. I would even say that we rarely make a feasible effort on building the original sources: they often require a while VM setup and ancient compilers. One super-rare exception was the Unrest game engine, which was open-sourced about three years before we started working on it, e.g it was pretty modern.
Retro Replay: Blade Runner is probably one of the most extreme examples of ScummVM reverse engineering. Work on recreating its engine took years. What made Blade Runner such a monstrous problem compared with a more conventional adventure game?
Eugene Sandulenko: All of the game logic is hardcoded; e.g. it was written in C++ and required reversing. Every location is a separate DLL, every character is a separate DLL, every dialog is another DLL. 117 in total plus the main executable. The INSANE system for Full Throttle took around 100 KB of binary code. Blade Runner exceeds 6 megabytes.
Retro Replay: During something that long, how do you know you are still making progress rather than disappearing into an endless reverse-engineering hole?
Eugene Sandulenko: You do things one by one. It is like drawing an artwork: you are laying one stroke after another and filling in the details. Sometimes you give up in frustration. We have dozens of half-finished engines (check our Wiki and talk to me before you want to start working on a game, there is a high chance that we already have some WIP materials).
Retro Replay: Was there one Blade Runner subsystem or breakthrough where you suddenly realized, “Okay, we really are going to get this game running”?
Eugene Sandulenko: Yes, and it was completely unexpected. We tried two times to work on the game, we gave up, but then peterkohaut showed up out of the blue with a more advanced work. He joined the team; we did a final push and completed it in less than two years.

Original games, new possibilities
Retro Replay: ScummVM eventually went beyond merely reproducing Blade Runner and helped enable things like subtitles and restored-content support. Where do you personally draw the line between preservation and improving or extending the original experience?
Eugene Sandulenko: We carefully split this new behavior with game options. E.g., you get the vanilla game by default, and only if you want, you play the extended version. The most advanced engine in this regard is the SCUMM, where we recently worked on a set of enhancements of different depths, from mere bugfixes to restoring dialogs from the floppy version that were omitted in the CD releases of some games.
Retro Replay: More broadly, should preservation aim to reproduce all of a game’s original limitations and bugs, or is there value in quietly fixing things the original developers probably would have fixed themselves?
Eugene Sandulenko: If you want the original limitations and bugs, emulators are your best bet. This is, btw, one point of critique towards the ScummVM, we are not “preserving enough”.
Retro Replay: ScummVM now includes games that are not traditional point-and-click adventures at all. Has supporting RPGs, interactive fiction, action sequences, FMV games, and other genres fundamentally changed the architecture of the project?
Eugene Sandulenko: Not really, but merge with ResidualVM, which supports full 3D games did. That was a big thing to swallow and we are still rough around the edges and have lower compatibility for the 3D and 2.5D titles.
Retro Replay: Which engine or game most forced the team to reconsider assumptions built into ScummVM from its adventure-game origins?
Eugene Sandulenko: There was no such engine. First, RPGs sneaked into the project via the Kyra engine (Lands of Lore). Then we added Eye of Beholder on the same engine. And then we decided: yes, it is OK, since there are not that many big adventure games left to do. Somewhere in-between we allowed Interactive Fiction games. And later, “Kingdom: The Far Reaches” and “Tender Loving Care” brought FMVs, and we allowed that genre.
Director, forgotten multimedia and unexpected machines
Retro Replay: The Director engine is especially interesting because Macromedia Director powered an enormous amount of multimedia software, not just conventional games. Does that create a preservation problem much larger than “support this list of titles”?
Eugene Sandulenko: The development of the Director engine is quite slow and uneven. This is the engine where we work fully based on specifications, practically without consulting with the original executables. Primarily because the level of over-engineering there is above the roof, and also because we are supporting multiple versions of the engine, and the original was fully rewritten three times. E.g. it would require repeated work from the ground up.
And unfortunately, it is impossible to build a fully universal Director engine, capable of running any game straight out of the box. The reason for that is that the Director engine was very extensible, and there was a whole industry producing those extensions, called Xtras. Each of them required reverse engineering.
Retro Replay: Could ScummVM eventually become important for preserving parts of 1990s multimedia culture that were never really thought of as video games in the first place?
Eugene Sandulenko: We already collaborated with a number of museums, which were running Director titles in their exhibition kiosks. Another example is the 25th anniversary edition of Myst, and Gobliins 4 game release. Those were shipped with ScummVM to run their games on modern platforms, thus perserving them.
Retro Replay: ScummVM has now survived multiple generations of operating systems, graphics APIs, input methods, mobile devices, consoles, and architectures. Has keeping all those ports working sometimes become harder than adding support for old games?
Eugene Sandulenko: Once a port is written and functional, it could stay for years practically untouched. We are guarding against unnecessary API changes, so the ports do not need major updates. Unfortunately, there is a different problem: ports do die together with their platforms. The last port that silently died was the AmigaOS port. Unfortunately, the porter gave up and walked away from the platform and our project.
Retro Replay: The project supports hardware ranging from modern PCs and phones to machines that are themselves now retro. What is the strangest or most unexpected device on which you have personally seen ScummVM running?
Eugene Sandulenko: Nintendo 64. You flash a cartridge and run some DOS games on it. Incredible. Also, I was and still am excited by the WebAssembly port, so you can run ScummVM right in your browser without any installation.
Retro Replay: Fun hypothetical: if you could somehow show the 2001 ScummVM developers the current project, what part do you think they would have the hardest time believing?
Eugene Sandulenko: The size. Over 5 million lines of code.
Twenty-five years in, plenty left to do
Retro Replay: ScummVM just reached its 25th anniversary. Does hitting that milestone make you think differently about the project now that ScummVM itself has become part of gaming history?
Eugene Sandulenko: Not really. But the AI slop is a threat and a big hassle to our project. It is now possible to spam us with low-quality things and steal our time and fun.
Retro Replay: The newest releases are still adding entire engines and enormous numbers of games. Did you ever expect there would still be this much unexplored software left after 25 years?
Eugene Sandulenko: Well, there are still hundreds, if not thousands, of unsupported engines. The problem is that they are either complex or too obscure (I mean, some bizarre niche games). What is exciting is to see people still wanting to join the project and continue working on new stuff.
Retro Replay: Is there a game or engine that has sat on your personal “I really want ScummVM to support this someday” list for years?
Eugene Sandulenko: Not anymore, as I’ve implemented my personal wishes. However, I would really like to see Lingo3d stuff working for the Director engine. That one is a beast, enormous in size. I was happy to learn that big chunks were open-sourced several years ago, which gives me hope.
Retro Replay: Conversely, is there one engine you hope nobody ever talks you into implementing because you know exactly how painful it would be?
Eugene Sandulenko: Not really from the technical standpoint. But I recently vetoed some engine that was used for building a set of games with very low-quality humor and dubious chauvinistic narratives.
The people who keep it running
Retro Replay: Open-source projects depend heavily on people coming and going over long periods. What have you learned about keeping a volunteer project alive when nobody can simply order people to work on something?
Eugene Sandulenko: People are led by example big time. When I stay active in the project, I see how other people also have fun with me. If I slow down and there is no protagonist, developers wind down their engagement as well. Nobody has fun riding a dead horse.
Retro Replay: You became a project leader back in 2006. Has leading ScummVM increasingly become about managing people, releases, infrastructure, legal issues, and preservation relationships rather than writing code yourself?
Eugene Sandulenko: Yes and no. I always spend time on writing the actual code, but managing relationships and team dynamics is an important part of this self-inflicted job.
Retro Replay: Looking across the entire history of ScummVM, is there one contribution, person, engine, or behind-the-scenes event that you think deserves far more recognition than it usually receives?
Eugene Sandulenko: I tried to highlight some histories on my Patreon, but was not finding enough time recently unfortunately. There are many stories and events; some of them could go in a book :D.
Retro Replay: Finally, when this interview is published, are there any ScummVM resources, preservation efforts, documentation, current testing requests, projects, repositories, or other places you would especially like me to direct readers toward?
Eugene Sandulenko: Yes. Please. drop to our Discord server at https://discord.gg/4cDsMNtcpG If you would like to support me personally, I have a Patreon page https://www.patreon.com/_sev. And of course, you may find all of the resources at our home page https://scummvm.org
Thank you, Eugene
Our thanks to Eugene for giving us his time and such a detailed look at the work behind ScummVM. There is something lovely about the route from one troublesome copy of Full Throttle to getting Freddi Fish and Pajama Sam running for his daughters. Years later, he is still finding another engine to investigate, another student to help, and another reason to open the code.
Visit the official ScummVM website for downloads, documentation and project news, or join the ScummVM Discord community. To support Eugene’s work personally, visit his Patreon. You can find more conversations with the people behind the games in Retro Replay’s interview collection.
Retro Replay Retro Gaming History, Reviews & Emulation
