Let's compile Quake like it's 1997

Published: (February 8, 2026 at 12:11 PM EST)
4 min read

Source: Hacker News

Feb 5 2026

The Purist’s Corner

Depending on how historically accurate you want to be, you can follow the steps with one of four environments:

  1. Intergraph RealizM Dual P6‑200 MHz workstation – good luck.
  2. Dual Pentium Pro machine – also a stretch, but finding a W6‑LI is doable.
  3. A regular late‑90s PC – e.g., the Quake PC.
  4. Oracle VirtualBox – create a VM.

I tested these steps both on the Quake PC and in VirtualBox, running either Windows 98 SE or Windows NT 4.0.

Installing Windows NT 4

Installing Windows NT 4 is straightforward because the CD is bootable. The installation took about 30 minutes.

Windows NT 4 startup screen

I love how minimalist the Windows NT startup screen is. It proudly displays the number of detected CPUs (Windows 95/98 only supports one) and the amount of RAM. No silly animation.

Adding a second CPU won’t be detected automatically; you must reinstall to get the HAL that handles SMP systems. The same applies to a dual‑CPU motherboard. On a W6‑LI you need not only another Pentium Pro but also a regulator!

Windows NT 4 desktop

Windows NT 4 uses the same UI theme as Windows 9x. The first release, Windows NT 3, used the UI elements of Windows 3.1 and looked awful.

Installing Visual C++ 6

The Win32 version of Quake was originally coded with Visual C++ 4.x (the most recent Microsoft IDE in mid‑1996). By 1999 the project had migrated to Visual C++ 6. If you don’t have the CD handy, you can likely find it on the Internet Archive or WinWorldPC.

Installation Screens

StepScreenshot
1. Visual C++ 6 installer startVC6 installer 1
2. Product ID entry (pre‑“always‑on” Internet)VC6 installer 2
3. “Visual Studio” branding (future Microsoft IDE)VC6 installer 3
4. UI layout (designed for 640×480 or 800×600)VC6 installer 4
5. Additional screensVC6 installer 5

Getting the Source Code

Do not fetch the source from GitHub or via FTP; that will corrupt the .dsw workspace file, causing VC++ 6 to fail silently. Instead download the original archive:

  • q1source.zip – formerly on id Software’s FTP server, now hosted in the Quake Official Archive maintained by Jason Brownless[2].

Downloading source

Transferring Files to the VM

  • Drag‑and‑drop (if using a VM).
  • Or use Quick ‘n Easy FTP Server, which works on both 9x and NT.

FTP server setup

Extracting the Archive

You’ll need WinRAR 2.50 (still works on 9x/NT).

WinRAR extraction

Building Quake with VC++ 6

  1. Launch Visual C++ 6.
  2. Choose File → Open Workspace… and select WinQuake.dsw.

Modern Visual Studio uses .sln (Solution) and .vcxproj files, but VC++ 6 uses .dsp (project) and .dsw (workspace). The .dsp contains a single project; the .dsw points to one or more .dsp files.

Opening workspace

  1. Start the build with Build → Rebuild All.

Rebuild All

  1. The build will initially fail because VC++ 6 cannot assemble the hand‑optimized .s files written by Michael Abrash.

Build error

  1. Install the VC++ 6 Processor Pack (contains vcpp5.exe, the assembler).

Processor Pack installer

After installing the pack, rebuild again and the compilation should succeed, yielding the classic Win32 Quake binaries.

Installing the Processor Pack (MDAC 2.5 prerequisite)

Processor Pack setup screenshot

Of course, launching setupsp5.exe to install it will fail. This is because you need to install MDAC 2.5 first.

Don’t lose an hour trying to download MDAC from somewhere. You just need to run acmsetup.exe, which is in the same folder created when vs6spp5.exe decompressed itself.

Now go back and run setupsp5.exe again. This time it will work. By now it should feel like you are following the solution of Monkey Island—nothing makes sense, and we are definitely deep into the 90s.

A more awkwardly small progress bar, but this is still progress.

Re‑open the project with VC++ 6 and run “Rebuild All” again. This time it should work.

Yup! Enjoy! You can even build/run QuakeWorld and it works with QSpy!

A darn good IDE

VC++ 6 is remarkably powerful for 1996. It has features such as “Go to definition”, breakpoints, stack traces, and variable inspection (but no IntelliSense auto‑completion yet). I never used it, but it must have felt like a dream at the time.

Footnotes

[1] John Carmack, id Software interview, 1996.
[2] Jason Brownless, Quake Official Archive, maintained at .

References

  • (list of references would go here)
0 views
Back to Blog

Related posts

Read more »

Happy women in STEM day!! <3

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as we...

E2E Tests: The Full Stack Check

Part of The Coercion Sagahttps://dev.to/nicolas_vbgh/programming-by-coercion-b5 — making AI write quality code. Backend tests pass. Frontend tests pass. The con...