Game Interpreters: an Adventure in Themselves?

Posted by Alex Lee on 15 September 2008 | 162 Comments

Tags: Apple IIGS Games, Lucas Arts SCUMM Games, SCUMMVM

What a bumper year it's been for IIGS hardware: The custom built IIGS portable, version 2.0 of the CFFA card (review coming soon!) and the updated Focus Controller and Sirius RAM by Tony Diaz. It's certainly felt there's been a resurgence of interest for the IIGS in 2008.

By comparison however, new software is lacking. What I'm going to propose may sound preposterous, but I'm going to put it out there anyway, for the truly adventurous at heart.

Recently, I became aware of adventure game interpreters. Unlike emulators, which reverse engineer an entire computer platform allowing you to use, for example, Apple IIGS software on Mac OS X thanks to Sweet 16, game interpreters have reverse engineered the game engine, so that the data files of original games can be utilised just as they were originally utilised by their executable files for the platforms they were originally written (DOS, Amiga, Atari ST, etc).

The advantage of an interpreter is that you only need the processing, memory and display resources to play the game, not an entire system. The disadvantage is that you need to reverse engineer multiple interpreters to play the games.

But perhaps making a game interpreter for the IIGS makes the result of development kill 5 birds with one stone. Let me explain.

Successful game design not only requires the talents of programmers, artists, musicians, but also someone who designs the game itself - the story, goals, gameplay and so on. Given that all four types of people aren't exactly numerous nor have a lot of spare time on their hands for the IIGS these days, a team consisting solely of programmers to make an interpreter could be possibly be a better idea, and the skills of graphics, musicians and game designers are already utilised within the games that are suited for play on the IIGS.




SCUMM VM is the most popular open source game interpreter project, which allows play of Lucas Arts' back catalogue of adventure games that use the SCUMM engine ("Script Creation Utility for Maniac Mansion") such as Loom and Monkey Island. SCUMM VM can play the original games from any platform: DOS, Amiga, Atari ST, etc) on modern computers running Windows, Linux or Mac OS X. All SCUMM VM needs are the data files associated with each game.

While SCUMM VM has been developed to be portable, there's no way we're going to get C++ code to compile on the IIGS. Even if we could, I'm sure the IIGS couldn't execute the program fast enough for an enjoyable experience anyway.

However, this is what I propose - SCUMM VM has a comprehensive Wiki that includes information on how SCUMM, the original game engine Lucas Arts created to aid development of their games, works from its scripting all the way to the compression algorithms used for graphic backgrounds and objects. The Wiki also includes an active developer forum and I'm sure they'd be quite interested in hearing about such an unusual project such as getting SCUMM games to work for the Apple IIGS.

If (and it's still a big if) with this help at hand, custom code could be specifically written for the IIGS. Most likely it would require assembly language for speed and memory efficiency, but if successful, the IIGS could recognise the data resources from a selection of those games and run them using a native SCUMM framework. So hopefully instead of porting ONE game to the IIGS, you will have ported FIVE games to the IIGS in one go.

If you haven't already shrugged off the idea, let's theorise about what would be the easiest approach to implement it.

The first choice might be to decide which SCUMM games the IIGS could handle, based on their graphics (after all, there's no point trying to get 'Full Throttle' working on the IIGS when it uses 256 colours and full screen animation!) The first five SCUMM games:


'Maniac Mansion'...



'Zak McKraken and the Alien Mind Benders'...



'Indiana Jones & the Last Crusade'...




'The Secret of Monkey Island'...

are feasible for play on the IIGS, based on their graphics. Additionally, the audio of any of those games could be handled by the IIGS without problems.

Secondly, which version (or versions) would be most appropriate to try to get working on the IIGS? For example, the DOS EGA, Amiga and Atari ST versions of the first four games all share exactly the same graphics resources, that is, 16 colour EGA graphics, which the IIGS can handle without breaking a sweat.

But which would be best suited in regards to audio for the IIGS? The Atari ST version has the weakest audio based on its limited hardware, but perhaps that would be the easiest to implement on the IIGS? The DOS versions utilise the early sound cards made by Creative Labs and Roland, which basically play MIDI data. Perhaps the music could be output from the IIGS using the SynthLab tool (Tool 35)? The DOS versions didn't include digitised sound effects either - sound effects were achieved by using the instruments built into the sound cards, which again could be potentially achieved on the IIGS the same way as the music.

The Amiga versions of these games used sampled instruments and four channel sound, again something the IIGS could handle, but possibly more difficult to implement than the DOS versions.

Dilemma and Digression

With 'The Secret of Monkey Island' it gets trickier to decide. Because seeing EGA graphics on the IIGS breaks my heart (we all know the IIGS can do better!), this game presents a bit of a dilemma. The Atari ST and DOS EGA versions include EGA graphics that could easily be displayed on the IIGS. However, these graphics don't look as good as previous EGA SCUMM games, because for Monkey Island, Lucas Arts created the graphics with the Amiga in mind, utilising its ability to display 32 colours simultaneously from a palette of 4096 colours. The IIGS can also display 32 colours simultaneously, if they're not all on the same scan line.



This image shows the EGA graphics of Monkey Island. Serviceable, but not as good as it could be.

I have made some graphic tests, having captured many screen shots of the Amiga version of Monkey Island from SCUMM VM and how these graphics may be best converted to the IIGS. Of course, the biggest trick is that the IIGS can only display 16 colours per scan line, so the graphics NEED to be converted specifically for use on the IIGS, using multiple colour palettes to display up to 32 colours.



This is the original Amiga version of two screens, added together in Photoshop.



This is a 16 colour version of the same scene, suitable for the IIGS.



And this is a ‘two palette' version of the same scene, where the image could be made from two 16 colour palettes on the IIGS.


Using Photoshop, I did a test where I edited two screens together (many SCUMM games use horizontal scrolling in individual scenes) from the Amiga version. Using the 'Export to Web' feature of Photoshop, I locked the colours used for the hero, Guybrush Threepwood when downscaling the palette to 16 colours. This is important, as just like traditional animation, you want to keep the colours of your characters consistent across the whole production. By locking those colours, when you convert the image from 32 colours (Although I've found that no more than 25 colours are ever used in the Amiga art) down to IIGS friendly 16 colours, Guybrush looks the same and it's the background colours which will change to try to best match what was present on the Amiga art. The results were actually quite good for this test, but it may vary for other scenes in the game.

Now, that's only using one colour palette. You could use 16 palettes, each using 16 colours on the IIGS, to try to improve what's already looking good for the IIGS. But the problem is this: If Guybrush (or any other character) moves vertically up or down the scene, the changing palette MAY change the character's appearance. However, the vertical positions of characters are limited, and additional colour palettes should only be used in areas where characters cannot roam (and if an extra palette won't create a noticeable 'banding' effect).

Now, I'd be more than happy to prepare the best possible IIGS graphics using Photoshop, saving to GIF, then converting them to a native IIGS picture format with multiple palettes using Super Convert, Convert 3200 or Prism, IF these graphics can be utilised. Because this method results in a IIGS specific graphic format, this will require more customised code in a IIGS SCUMM implementation, making it more difficult to realise.

What's easier, but more ugly, would simply be to use the graphics from the DOS EGA version. Indiana Jones and the Fate of Atlantis is probably pushing the multipalette idea too much; the Amiga version's visuals didn't fare as well as Monkey Island, being downscaled to 32 colours from 256 colours.



Amiga Screenshot of Indiana Jones and the Fate of Atlantis.


Getting back to Reality...or at least, more feasible dreaming

One final decision that may make SCUMM IIGS easier - would it be better if only the DOS EGA version resources would be used? Or if only the Amiga or Atari ST resources? Because of the differences between the different versions (for sound and music, for example) it's likely that trying to implement different platform versions will require additional work. SCUMM VM doesn't allow mixing and matching of graphics and sound, e.g. the graphics from the DOS EGA version of Monkey Island with the sound of the Amiga version. This could, perhaps, be done for the IIGS given that SCUMM IIGS would need to be written from scratch, but would require more work.

So, to recap, some proposed project goals:

If SCUMM IIGS aimed to utilise resources from any version of existing SCUMM games, it would probably make the most sense to do so from the DOS EGA versions. This would include:

Maniac Mansion (DOS v2)
Zak McKracken and the Alien Mindbenders
Indiana Jones and the Last Crusade (EGA)
Loom (EGA)
The Secret of Monkey Island (EGA)

DOS EGA makes sense, because no graphics conversion is required - the IIGS is fully capable to display EGA graphics.

By utilising the DOS versions, you maximise the number of games that all use the same music output method, which may make development easier, with the SynthLab toolset of System 6.

The DOS versions are the most popular and there is more ‘support' for them. For example, SCUMMVM cannot playback the music of the Amiga version of Monkey Island, but playback of music from the EGA version is no problem.

IIGS System Requirements:

Anyone who would love to relive the 80s and play new games on a real IIGS would likely have beefed up systems. So perhaps if we set these realistic IIGS system requirements:

System 6.01
2 to 4 meg of RAM
7Mhz with 8k cache with either TranswarpGS or ZipGSX
Hard Drive or Flash Card volume

Hopefully this strikes a balance between easier development (less optimisation to make it run acceptably on a stock 2.8Mhz IIGS) and available hardware.

Another Catch

There's no legal issue to reverse engineer the SCUMM engine (indeed, the SCUMMVM team has been helped by the original programmers at Lucas Arts to get to the level of quality it has now) however you will need to own a purchased version of each of the Lucas Arts games. Just like collecting Apple II software, you can find these older Lucas Arts games on eBay and other online stores.

This, however, also lends itself to an advantage - different language versions were sold (French and German), for which if you have the data files of, you can switch them for the English versions for play in those languages without any additional work, because it's already supported in SCUMM.

In Conclusion

So, a pipedream or a IIGS gaming project challenge for the truly adventurous? Let the discussion begin!