Home
Download
Java version
Windmill
FAQ
Command line
Hall of fame
Remastering
Platforms
Future
Links
What's new
AJ Software
Mailing lists
Contact us
About Remastering

(Or "How the deed was done")

Remastering is a very long and complicated process, involving a deep understanding of both C and assembly language, and how one is translated into the other.

There are four main stages to the process:

  • Disassemble
  • Decompile
  • Deshroud
  • Rewrite

The disassembly stage is reasonably automatic. I use Microsoft's DEBUG utility to dump the code and data segments into a text file, and lots of QEdit macros to make the code more reasonable. I don't use a more complicated disassembler such as Sourcer because the extra layer of complexity it uses actually makes the code more difficult to understand at a fundamental level.

The decompilation stage is slow and boring, and I haven't yet worked out how to do it automatically, so I use a "wetware" decompiler - i.e. my brain. I am currently experimenting with automatic decompilation techniques which may open up whole new realms of Remastering possibilities.

After the decompilation stage, the program is in the form of C source, but all the information about variable and function names has been lost - this is effectively "shrouded" source. The next stage is deshrouding, which is sometimes extremely satisfying and sometimes extremely frustrating. During this stage you get to find out all the hidden secrets of the program and exactly how it works.

The rewriting part is the most fun bit. As PC technology has changed so much, huge sections of the code have been made redundant and can be deleted or substituted with much simpler lines. For example, the high scores are now saved in an actual file, DIGGER.SCO, and *not* on an arbitrary sector of the disk in drive A:, as the original did. This is also where new features get added and bugs eliminated. This is also the part that is never quite finished...

The other tools I used were Borland's Turbo C 2.0 to write simple utilities for mundane tasks such as extract the graphics data and putting it into a format I could use with CHARDES , my personal favourite sprite editor. I used this program to redraw all the graphics in glorious 16 colour 640x400 VGA. Some parts of Digger are still written in Assembler, and these are assembled with A86. The whole caboodle is now compiled with Borland's C++ 4.52 compiler and compressed using PKLITE.

I am always on the lookout for the next game to remaster, but it has to have some particular properties:

  • It must me free or abandoned by it's copyright owner.
  • There has to be a good reason for remastering. In the case of Digger, it was to get the game working again. In the case of Sopwith, it is to get the network game working. Updating the graphics isn't a good reason if I don't actually have any replacement graphics (I'm not good enough at drawing to do them myself).
  • It has to be a real unique or the definitive version of the game. For example, if you were to ask me to remaster Pacman I wouldn't even know exactly which game you are referring to because there were so many versions. There are also lots of good versions which work on modern machines, so I would refuse anyway.
  • I have to enjoy playing the game! Since I don't have much patience with games, it therefore has to be one that I can pick up and don't have to learn - it must be fun to play straight away.
  • It must not be too big or remastering will take forever!