Articles

 
Thumb

Monkey Island: From EGA to VGA

Well, shit.

I didn't mean for any of this to happen. It wasn't supposed to be like this. It's all Remi's fault.

That image you've seen recently, from an EGA-to-VGA Secret of Monkey Island? It's fake news.

I can only apologise. I wasn't trying to trick anyone, it was just a bit of fun. Then after a bit of joking around on Slack, one thing led to another, and suddenly the damn image ended up on the front page of Mojo. I guess that’s what happens when you promise Remi you’ll deliver an article, but instead go to the pub, and then four years elapse. What can I say? His little gamble worked, I am sorry, and this is the article. So let’s put an end to this business, once and for all.

This all comes down to one thing, and one thing only: I love that EGA sunset. I mean I absolutely love it, for reasons I don’t even understand, and in my head the EGA version of Secret of Monkey Island is still the only proper version. The VGA version is fine, and I have beautiful memories of it, but so what? It doesn't have the sunset. And I know many of you couldn't care less about the sunset - some of you probably didn't even know about the damn sunset. It's not a big deal, it's just this weird thing that happens in the EGA version, very briefly, before we enter the long Melee Island night and the three trials of piracy. But still, it is special and precious to me.

Hell, I remember at least once having a discussion about it on LucasForums that entered into obsessive territory. Somebody said there's no way the sun would even look like that at sunset on a Caribbean island. They’d been there - no way it would happen like that. I loaded up the Melee Island map and tried to figure it out - up must be north, so the harbour is over here on the west coast of Melee Island. The sun rises in the east and sets in the west, right? It's good enough for me, even though I've still never been to the Caribbean and am probably wrong. But being wrong is kind of the heart of this little story.

As far as I'm concerned, the Monkey Island games begin in the late evening on Melee Island. Within a pretty short space of time, the sun sets, and that's that.

And as functionally insignificant as the sunset is - and it really doesn't make any difference to how you play the game at all - I still wondered why it wasn't there in the VGA version. Or the SEGA version, or the special edition, or any of the versions that came out after that first version. Why did they take it out?

Let’s take a quick look at what happens in the EGA version, first of all. It’s actually pretty simple - well, at least if you’re Mark Ferrari. You may remember a website that went viral a few years ago, where somebody encoded some of Mr Ferrari’s palette-shifting scenes into HTML5 - you can check it out here. The EGA version of Monkey Island is doing the same thing - there’s only one art file, and the game just changes some of the colours. There's also a small image in the resource files which covers up the sun to make it look like a flat horizon after the sun has “set” (you can see this asset if you load this room up in Scumm Rev, or a similar type of program).

So once the game enters the “sun has set” period of time, all the colours on the water turn to a blue shade, the glow on the rocks and hard edges change similarly, and the sprite pops into place in the middle. I made an animated gif of this a few years ago here. It's not exactly magic, but it does strike me as something that's far easier to do in 16 colours than in 256. See for yourself:

Article image
Article image

But really, that’s a pretty weak excuse. It might have been harder to do it in 256 colours, but this is LucasArts we’re talking about here. I’m sure they could have done it if they’d really wanted to. Maybe they didn’t have time. Maybe it just looked like shit. Or, maybe they just hated that sunset all along, and seized the opportunity to get rid of it as soon as they could. And I mean, okay, there may be an argument about consistency here - it does pretty much look like it’s nighttime already no matter where else you go on Melee Island, so what do I know, maybe for everyone else the sunset is the incongruity here, not its absence. And if you’re the type of hardened wretch that celebrated when you first booted up the VGA version and realised the sunset was gone, then fine - you’re entitled to your opinion, but I don’t know if we can be friends.

And ultimately, whether you love the sunset or hate it, it doesn’t matter. There’s no sunset in the VGA version, or any other version, and that’s all there is to it.

Unless....

What if I made it myself? Just to see what it might have looked like? There's nothing wrong with that, is there?

So I loaded up an image editor and got to playing around. It was fairly easy to paste the EGA sky on top of the VGA boardwalk, but that didn't look very good. I played around, layering EGA and VGA sections and playing with transparency settings. I tried using filters to soften and blend. I'm not very good at this stuff, but I managed to produce a couple of images that started to look like a VGA sunset and I thought "yes, this is good". I’ve extracted a bunch of images from this process for your pleasure below:

Article image
Article image
Article image
Article image

In fact, the more I thought about it, the more I realised that these images were too good. Not aesthetically, of course - I'm no Mark Ferrari - just in terms of colour. The VGA game had more colours than EGA's 16, but there were still only 256 - and not just any 256 colours you like, but specifically the ones used by the game's palette in that location. My images might have looked alright, in a weird kind of way, but they’d never actually be able to be displayed in the game.

Article image

So, as a final act of flagellation, I extracted the VGA art file into an image editor and saved the palette. Then I applied that palette to my image. It created a lot of "noise" which wasn't otherwise there, but it still looked, basically, functional:

Article image

It is half way between the EGA version and the VGA version, with none of the elements being created by me, or anyone else - it’s just a cut-and-paste job of the original art files using the extra colours available in VGA.

Anyway, having got to this point, I couldn't just stop. I had the bug. Surely there was a way to get the art asset back into the game and see how it might have really looked? A full screen, side-scrolling VGA sunset. Why not?

So I started looking around to see if there were tools out there that would let me pull this off. You can imagine my surprise when I found that such tools do, in fact, exist.

The main hero is Laurence Dougal Myers, and his suite of tools at laurence dougal myers. Here’s what you’ve got to play with:

  • Scummbler - Compiles SCUMM scripts for older LucasArts games.
  • ScummPacker - Packs SCUMM resources for older LucasArts games.
  • ScummSpeaks - Manipulates MONSTER.SOU and game dialogue scripts for older LucasArts games.
  • SCUMM Image Encoder - Decodes/encodes graphic resources for older LucasArts games.

Mr Myers also provided support for another tool called ScummEditor, developed by Matheus Moreira, which can be accessed at SCUMM Editor. This tool was invaluable as it, I quote, “can be used to export and import back graphics on Scumm v5 and v6 games. It can also be used to see the parsed data structure on these games”. The tool was originally developed for the purpose of fan translations of Scumm games into languages that weren’t originally localised.

I also used a couple of tools I’ve acquired over the years which can be found online, such as LucasRipper by Tobias Fleischer (“a little tool that will allow you to view the graphic data from the classic Lucasfilm Games/LucasArts adventures like Monkey Island, Indiana Jones, Maniac Mansion, Loom”), and Serge’s classic viewer/ripper, Scumm Revisited. Each of these tools works in their own way, and only with certain versions of the Scumm engine, so some of the earlier and later games are not supported. Anything from the classic period starting with Loom and ending with Sam and Max Hit the Road will probably be okay, but your mileage may vary.

When I finally got my file imported into a VGA copy of Monkey Island, I loaded the game up and got the scene you’re already familiar with:

Article image

So why am I telling you this? What's the point of it all?

Well, my primary aim here is to apologise for anyone who was duped by Remi's fib. I didn't make this damn thing to hoax anyone - I did this in August 2014 over a weekend or two, and the files have sat on my computer ever since. I never wanted to trick anyone (well, maybe an April fool's or something, but nothing worse). Ultimately, I intended to write some kind of article about the tools, but I never got around to it.

It really is genuinely fascinating to me that these tools are available and the inner workings of these games can be explored, and altered. I don't endorse telling anyone you’ve uncovered a “rare” or “lost” version of a game, but it is fun to do little projects like this. I mean, it’s theoretically possible to do all sorts of crazy things - you could make a version of Monkey Island where you play as Indiana Jones, for example. You could change Ron Gilbert’s name to L Ron Gilbert. You could put the sunset back into Monkey Island.

One thing to note, however, is that this isn’t a foolproof process. I’m no expert in - well, anything - but I still managed to pull this off for the most part. The obvious problems are there for all to see, though - the most obvious one being that the game doesn’t look like the image I inserted. None of the files I’ve added to the gallery here are as pink as the image taken from the modified game. Now, I’m the first to admit that this was probably due to a silly mistake made by me - but it’s also possible these old games don’t like their files being messed around with for reasons I can’t even begin to comprehend. I’m talking about the opaque science of memory and file buffers and other things I never wrapped my head around. I couldn’t get any of my attempted edits to work properly in DosBOX using the original interpreter, for example - they seem to work fine on ScummVM, but that’s because ScummVM is basically a mega-interpreter for any variant of SCUMM (and indeed, other engines).

Anyway, who am I kidding. You guys know about this stuff. I ain’t the first one of us to modify a LucasArts game. Besides, it’s only a sunset. It sets on Melee Island every single day, like it does everywhere else. It’s just a little harder to see it here, that’s all.