grack.com

I managed to find a copy of Death Match on an old CD.  It took me a little while to the program running.  The first thing that came up was a copy protection scheme that I had written into it.  At the time it was written, most commercial games had a lookup sheet that you would need to consult to get the program to run.

I had written up a scheme where each letter would map to a different symbol.  For instance, the letter A maps to .  The screenshot below illustrates what a user would see:

The 6-character mapped character string was then looked up in a table of words and compared to the word that the user entered.  I had originally compressed Death Match with an executable compressor called “PKLITE”.  Because of this, I couldn’t just hex-edit the executable and locate the string table.  Luckily, I hadn’t protected the compressed version, so PKLITE allowed me to decompress it:

C:\old\pklite>pklite -x \old\dthmatch\dthmatch.exe
PKLITE (tm)   Executable File Compressor   Version 1.12    6-15-91
Copyright 1990-1991 PKWARE Inc.  All Rights Reserved.  Patent Pending
Expanding: /OLD/DTHMATCH/DTHMATCH.EXE
Original Size: 39929  Expanded 
Size: 112672

Once I had done that, it was a simple matter of using notepad to grab the string translations from the executable.

After that, I used The Gimp to create PNG files of each letter and created an HTML file to map the 6-character codes to the appropriate words.  I was then greeted with the title screen and main menu!

Getting the game to run properly is a bit tricky.  Bochs seemed to freeze in the main menu and running it under Windows 2000 seemed to result in corrupted graphics in a number of places.  I think I might be missing a few files that might be important.  Once I scour the remaining floppies, I should be able to discover which files are missing.

Update: I discovered that the code “LEMMEIN” works for any of the codes as well.  You can see it in the screenshot of notepad above.

Read full post