How Quake.exe got its TCP/IP stack

https://news.ycombinator.com/rss Hits: 15
Summary

Nov 17, 2025 How quake.exe got its TCP/IP stack Released in June 1996, Quake had to ride three technological shock-waves during its lifetime. Besides the emergence of 3D hardware accelerator cards and the growth of the Internet, an operating system shift put game developers in a tough position. With its push for Windows 95 and Windows NT, Microsoft was replacing its legacy PC operating system, MS-DOS. From 1996 to 1997, the market share of DOS dropped by 50%. Some developers, like Blizzard North, took the leap of faith and wrote Windows 95鈥揺xclusive titles such as Diablo. id Software on the other hand went through the effort of producing a single binary, quake.exe, able to run on both DOS and Windows. What is even more impressive is that id managed to make Quake better when Windows 95 TCP/IP stack was available. Here is how they did it. quake.exe 101quake.exe is a DOS executable. id Software had used Watcom compiler for DOOM but they switched to a GCC port named djgpp[1] to cross-compile Quake on Alpha servers. $ file quake.exe quake.exe: MS-DOS executable, COFF for MS-DOS, DJGPP go32 DOS extender Alike watcom's DOS/4GW, djgpp offered to developers an extender allowing to write programs with flat 32-bit addressing instead of the dreaded 16-bit near/far hellish real-mode otherwise mandated by DOS. An extender works with a client and a server. In the case of Quake the extender client is embedded in quake.exe while the server is in cwsdpmi.exe. From the beginning of the development, id had requested from djgpp engineers that their DPMI client would be able to run on djgpp's DPMI server but also Windows 95 DPMI server. It may not be apparent how much of a tour-de-force it was for djgpp to make their DPMI client work with another DPMI server but knowing a little about how it works, it blows me away. Raymond Chen, Microsoft kernel engineer at the time, had the best description of how to perceive this situation. The client application was written with the assumption that i...

First seen: 2025-11-18 09:49

Last seen: 2025-11-18 23:52