Home
Download
Windmill
FAQ
DOS version
WinDig
Java version
Unix version
Hall of fame
Remastering
Future
Stories
Links
What's new
Mailing lists
Contact us
Thanks to...
Styx
Sopwith
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

For Digger, the disassembly stage was reasonably automatic. I used 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 didn'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 was slow and boring, and I haven't yet worked out how to do it automatically, so I used 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 was in the form of C source, but all the information about variable and function names had been lost - this was effectively "shrouded" source. The next stage was deshrouding, which was sometimes extremely satisfying and sometimes extremely frustrating. During this stage I found out all the hidden secrets of the program and exactly how it worked.

The rewriting part was the most fun bit. As PC technology has changed so much, huge sections of the code were made redundant, and were 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 was also where new features were added and bugs eliminated. This is also the part that is never quite finished...

I used Borland's Turbo C 2.01 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.