Quake & QuakeWorld for MS-DOS update

So after a year+ of inactivity I’ve spent some time with Quake (netquake) and QuakeWorld for MS-DOS.  I had modified it to support the WatTCP stack for MS-DOS, allowing you to play over the internet with any MS-DOS PC with a packet driver.

After a good bit of prodding and playing with DJGPP I’ve updated everything to include some new tweaks for a malloc ‘bug’ (Quake assumes the memory is clean, which under DJGPP it isn’t) some limit increases (zone to 1MB, and increases in max edicts, models & sounds), and forcing the sound to 22050Hz.  The source code is now here.  As much as it pained me, I built it with this DJGPP under MS-DOS (On Qemu) and I’m keeping it here, as gcc 3 & 4 are incapable of building a working WatTCP or Quake.

Another big fix for QuakeWorld is that it now can run in 640×480, 800×600, and even 1024×768 if your video card is VESA 2.0 compatible!!!

Basically you can just replace the default exe’s in a Quake1 install and go from there.  If you do not have quake at all, you can always look for the shareware version.  QuakeWorld will require the commercial version for what it is worth. I’ve found it runs best with 32MB of ram.  I don’t know if that is even an issue in this day & age.  Quake1 will run in 16, but I have a feeling QuakeWorld runs in VM (thanks to CWSDPMI) and it does say it is using 32MB … Because I clear the ‘zone’ before Quake runs there may be a 30 second to 1 minute pause.  This is to be expected, just hold tight.

QuakeWorld at 640x480

QuakeWorld at 800x600

QuakeWorld at 1024x768

You can download either Quake.exe or Qw.exe.

Thanks to [hci]maraakate, for the hints on what to update where, and of course the testing on a ‘real pc’!`

5 thoughts on “Quake & QuakeWorld for MS-DOS update

    • In OS/2 I do it this way…. oddly enough directly manipulating the hardware…. 🙂

      void VID_SetPalette (unsigned char *palette)
      int i;
      int shiftcomponents;


  1. Haha, too bad it was all related to something entirely unrelated. Gotta update your post now to say it connects properly to all servers that you’re aware of.

    Also, just be sure to raise MAX_SOUNDS and MAX_MODELS from 256 to 1024 and our codebases are the same as far as I’m concerned.

  2. in vid_ext.c Its best to have the Palette work done by the VGA method not the SVGA interrupt (which fails….)


    vesa_modes[nummodes].setpalette = VID_SetVESAPalette;
    vesa_modes[nummodes].setpalette = VGA_SetPalette;

    So now if I jump into the LAVA on start.bsp then re-spawn my world isn’t red shifted… And I’ve tested with Virtual PC 2007 sp1, and I have all kinds of awesome SVGA modes, and best of all is that they work!!!!

Leave a Reply