ORN: What features which have been added to the ScummVM
engine which do not appear under the original SCUMM engine?

MH: Portability to systems which the original games did not
support.

LS: Upscaling filters, such as 2xSaI, that smooth the
picture when viewed in higher resolutions than 320x200, which is the resolution
that the actual games use. Also, ScummVM can play the Simon the
Sorcerer games by AdventureSoft.

TA: Most sound files can be compressed, and the CD audio
tracks can be replaced with MP3 or Ogg Vorbis. This means that the games can be
played completely from hard disk, which I find very convenient since my CD-ROM sometimes sound like a hair dryer. There's at least one scene in the CD
version of LOOM that was downright painful when I tried it with the
original interpreter. Every few seconds the game would freeze briefly because
it was looping a short background sound from the CD.

The original Sam & Max interpreter had some fairly obscure
graphics glitches which ScummVM doesn't have.

JB: Most of our extra features are not exactly noticeable
for two reasons: The first is purely technical. The LucasArts SCUMM engine—as well as the AdventureSoft Simon the Sorcerer engine, which
we also emulate—is just an interpreter, a lot of the magic is done in
the actual scripts. This can be compared to Quake, where the engine is
only responsible for core functionality. And there is very little you can do to
improve a 2D environment, graphically, as opposed to a 3D environment.

The second reason is more simplistic. While we are very open to some
improvements, anything that affects the game play could be considered
"blasphemy".

ORN: What features are planned for future versions of
ScummVM?

MH: Currently, we are working on getting the Curse of
Monkey Island support stabilized. Then we will turn to fix all the
regressions we introduced while adding Curse. But some other things
are planned:

Improved GUI, e.g., allow comfortable editing of options via the GUI.

Support for very old SCUMM games (Maniac Mansion, Zak McKracken, LOOM).

JB: First and foremost, our main goal is to perfect
compatibility for SCUMM games as close as possible. We're considering adding
the ability to replace certain scripts in the game. This will allow, among
other cool things, the ability to upgrade the interface in games; for
example, to replace Day of the Tentacle's "verb interface" with a
Sam & Max-esque "cursor interface". This in particular has the
ability to reduce the screen space the game takes, making it easier to port to
some smaller platforms.

Once we have reached or at least come closer to the goal of
near-perfect compatibility with all games, we might consider expanding into
other similar adventure game systems. Revolution Software, being the kind souls
they are, sent us the source code for Beneath a Steel Sky, asking us
if we are interested in writing a compatible game engine to allow people to
play it on newer platforms. This is a great move, actually having the
developers of a classic game actively interested in a group developing a
clone.

ORN: What advice do you have for those who want to modify old SCUMM games, or create new ones, for ScummVM?

MH: I do not know if this is a good approach. If somebody
asked me this, I would probably tell them to use one of the existing,
open source adventure engines, instead of trying to use ScummVM as a
foundation. ScummVM contains a lot of oddities in order to emulate the original
SCUMM. If I was to write a adventure engine, I would do a lot of things
differently than they are done in ScummVM. ScummVM does a great job at what it
was meant to do; that is, allow the use of SCUMM games. But this exactly
makes it less than optimal for the development of new adventures.

TA: I haven't really given much thought to modifying the
original games. There are a few games that contain copy protection screens as
part of their game scripts. LucasArts's own interpreters were made to bypass
these when the games were rereleased as part of collections, so we have to do
that as well, albeit not always in the exact same way. But this is always done
from within ScummVM. Never by modifying the data files.

If you're looking to create a game, you'd be much better off picking a
development system with a well-documented virtual machine that doesn't have
lots of little game-specific hacks. Having actual tools to develop the game
would help a lot, too.

Trying to make a new game for ScummVM would probably be like trying to write
a large program using only a disassembler. Sure, it could be done. Ordinary
mortals would need a compiler and standard libraries, both of which would
probably take years to develop.

Graham Nelson's Inform
compiler for Infocom's Z-Machine provides a pretty interesting look at the
evolution of one project for generating story files for a reverse-engineered
virtual machine. Inform eventually turned out to be pretty successful. Lots of
games have been written in it; the Z-Machine is well-documented; and
interpreters have been written in various languages including Java, Perl and
Emacs Lisp. But it should be remembered that it took at least a year or two
before the compiler had evolved to the point where anyone other than Graham had
used it to write a complete game.

Bottom line: It can be done but it's going to take time, and it may not be
the best way to begin.

JB: Don't. While it's possible, there are many game
development systems out there which are far easier to use. Unless you really
want the technical challenge of developing the dozen or so tools needed for
creating a game using the SCUMM system, it's really a bad idea. ScummVM was
designed to play existing games, not as a platform for new game programmers.
It'd be cool, but not very feasible.

ORN: Any advice for others interested in
reverse-engineering a game engine, either technical or legal advice?

MH: Technically, you need a lot of patience to figure out
all the small details. You maybe can get a quick start into the thing, but to
get all the small details right, which make up a greater game experience, you
have to spend a lot of effort.

Legally, you should be aware that disassembling engines might be illegal
under the DMCA. But if you look at Exult, another open source
engine I am involved with, we didn't do any disassembly for that.

JB: I have two pieces of legal advice. The first is simple:
Ask. Do not expect an answer, but you would be surprised how many complications
can be avoided if you can later say, "But I told you I was going to do this."
Although AdventureSoft never replied to us on our Simon
implementation, and LucasArts' response was a DMCA takedown notice, there may
be other companies, like Revolution, who are actively interested in seeing
their games playable on new platforms.

The second piece of legal advice is also the first piece of technical
advice: Reverse engineer as little as possible. The biggest legal complication
of reverse engineering is when you are working from a disassembly, it can be
tempting to simply translate the compiler's output into code directly in your
program. This is a big legal no-no. It's almost certainly copyright
infringement. And it can happen by accident.

Finally, choose the right tools for the job. Reverse engineering is a
difficult task. While there are some free programs out there—BIEW comes to mind, none of
them yet are as easy and nice to use as the expensive commercial packages, IDA Pro and SoftICE.

ORN: So which LucasArts SCUMM game is your personal
favorite, and what tips do you have to share with those playing it under
ScummVM?

LS:My favorite is Monkey Island 2;
after all, I made ScummVM with the purpose of playing Monkey 2.

MH: It's not easy for me to single out one favorite, as I
like many of them a lot. But if you insist on a pick, I'll name Monkey
Island 2. Luckily, our support for it in ScummVM is nearly perfect. It's so
loaded with jokes, references to other LucasArts games, and hilariously great
ideas. One of the scenes I like most is when Guybrush knocks his head, and then
dreams of his parents, who appear as skeletons performing a well known
song.

JB:Personally, I love Sam and Max Hit the Road. It
has some of the funniest one-liners I've ever seen, not to mention puzzles
which actually make sense and can be solved without a walk-through. Because
it's my favorite, it works pretty well on ScummVM. My only tip is not to play
the "highway" mini-game. It runs a little fast in ScummVM, and, as the only way
to exit it requires actually losing, you can get stuck pretty easily.

TA: It'd have to be Day of the Tentacle. It's the
only one that I was able to solve without any outside help.

Running the games seemed pretty straightforward to me, once I had read the
documentation and compatibility chart. The main problem was finding somewhere
to buy the games. The way things look right now, I doubt I'll ever have the
chance to play the 256-color version of Zak McKracken. I guess my only
tip is to buy the games whenever you have the chance.