I saw this pop up while cruising archive.org, and I thought it’d be fun to play with. The shareware version of Quake on this CD image is version 1.01, which corresponds with the crack dot com leak of the Quake source code. Searching around revels that the leak was aptly named “Quake101leakedsource.zip”, which wasn’t so hard to track down.
The source code is, naturally, in the process of being ported to Linux, and the makefiles reflect this. I used my MinGW to DJGPP cross compiler toolchain that is close to era specific.
I had a single issue with the code, d_copy.s the following line was giving me trouble:
movl $2,%al
changing it to the following however, let my version of GAS happily assemble it.
movb $2,%al
After a while of messing with the Makefile, and adding in the DOS components, it was easy enough to get an executable. And even better it’ll run with the data/music from the demo disc!
I used Daemon tools to mount the MDS/MDF image, and just pointed DOSBox to the CD drive letter with a simple:
mount d: f:\ -t cdrom
And now when I fired up Quake, it’ll play the music tracks from the CD.
One thing that caught my interest was that when you exit the game, I get the “couldn’t load endscreen.” message.
Well it turns out that someone was naughty and had modified common.c on January 20th 1997, and made the following addition:
if (h == -1) { Con_Printf ("Playing shareware version.\n"); // if (com_modified) // Sys_Error ("You must have the registered version to use modified games"); // /*return;*/ }
So yeah, since they had double commented out that return statement, it’ll fall out the logic, and set the game to registered, which is why the endscreen message is missing. Uncommenting them all will restore the default execution behavior. Speaking of registered, on the CD there is a file QUAKE.MJ3, which is 25MB, which looks like an encrypted version of the registered game. I guess it’d be ‘neat’ to have version 1.01, although the Steam version I have is 1.06 and I don’t know how much difference it’d really make.  Although I guess 22 years later it doesn’t matter much.
On the one hand I’m really impressed that it works. For anyone who is slightly interested I guess, you can find my re-build of the source here: