logoalt Hacker News

Let's compile Quake like it's 1997

118 pointsby birdculturetoday at 5:11 PM39 commentsview on HN

Comments

direwolf20today at 7:08 PM

Visual C++ 6 was the first C(++) compiler I used. I'm fairly certain it had auto completion (Intellisense).

Casey Muratori would point out the debugger ran faster on hardware from the era than modern versions run on today's hardware, though I don't have a link to the side–by–side video comparison.

Edit: Casey Muratori showing off the speed of visual studio 6 on a Pentium something after ranting about it: Jump to 36:08 in https://youtu.be/GC-0tCy4P1U — earlier section of the video is how it is today (or when the video was made)

boznztoday at 6:43 PM

On one particular project from 1995 where the hardware was very cost optimised, the C program compiled to 1800 bytes which meant we could save nearly a dollar by buying micro-controllers with 2KB flash rather than 4KB flash. We manufactured 20,000 units with this cheaper chip. 2 years down the line we needed a simple code change to increase the UART baud rate to the host, a change that should have resulted in the same sized binary, but instead increased it to 2300 bytes due to a newer C compiler. We ended up tweaking the assembly file and running an assembler, then praying there would be no more changes!

I have always over specified the micro-controllers a little from that point, and kept a copy of the original dev environment, luckily all my projects are now EOL as I am retired.

show 2 replies
ethintoday at 10:21 PM

It's really ironic that this appeared on the front page when it did, because I've spent the last couple days replacing the ZQuake sound system with FMOD and Atmoky TrueSpatial for HRTF and such. This was my first time ever working on a code base from 1996-2000. And in pure C no less. C feels so foreign to me since I'm so used to writing in C++ and Zig and such. But it was still really fun!

And I mean it doesn't seem super impressive, but it's something. Lol

show 1 reply
Marotoday at 6:07 PM

Quake book incoming from Fabien?

show 2 replies
bluedinotoday at 6:03 PM

I'd like to see someone build the Linux source code leak that came out not to far after Quake was released.

show 1 reply
knorkertoday at 5:39 PM

> The first batches of Quake executables, quake.exe and vquake.exe were programmed on HP 712-60 running NeXT and cross-compiled with DJGPP running on a DEC Alpha server 2100A.

Is that accurate? I thought DJGPP only ran on and for PC compatible x86. ID had Alpha for things like running qbps and light and vis (these took for--ever to run, so the alpha SMP was really useful), but for building the actual DOS binaries, surely this was DJGPP on x86 PC?

Was DJGPP able to run on Alpha for cross compilation? I'm skeptical, but I could be wrong.

Edit: Actually it looks like you could. But did they? https://www.delorie.com/djgpp/v2faq/faq22_9.html

show 1 reply
jeffrallentoday at 8:06 PM

> (Visual Studio 6) I never used it but it must have felt like a dream at the time.

I used it in the mid-90's and yes, it was eye opening. On the other hand, I was an Emacs user in uni, and by studying a bit the history of Emacs (especially Lucid Emacs) I came to understand that the concepts in Visual Studio were nothing new.

On the third hand, I hated customizing Emacs, which did not have "batteries included" for things like "jump to definition", not to mention a package manager. So the only times in the late-90s I got all the power of modern IDEs was when I was doing something that needed Windows and Visual Studio.

ErroneousBoshtoday at 6:19 PM

Funny, I've just been (re-)playing Quake 2 recently.

show 1 reply
webdevvertoday at 5:32 PM

love software archaeology like this.

there was another article where someone bootstrapped the very first version of gcc that had the i386 backend added to it, and it turns out there was a bug in the codegen. I'll try to find it...

EDIT: Found in, infact there was a HN discussion about an article referencing the original article:

https://miyuki.github.io/2017/10/04/gcc-archaeology-1.html

https://news.ycombinator.com/item?id=39901290

clarity_hackertoday at 5:32 PM

Build environment archaeology like this matters more than people realize. Modern CI assumes containers solve reproducibility, but compiler version differences, libc variants, and even CPU instruction sets can silently change binary output. The detail about needing to reinstall Windows NT just to add a second CPU shows how tightly coupled OS and hardware were — there was no abstraction layer pretending otherwise. Exact toolchain reproduction isn't nostalgia; it's the only way to validate that a specific binary came from specific source.

show 3 replies