Remix.run Logo
How Quake.exe got its TCP/IP stack(fabiensanglard.net)
402 points by billiob 12 hours ago | 91 comments
skrebbel 8 hours ago | parent | next [-]

Random drive-by nitpick:

> 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.

I'm pretty sure that "DJGPP engineers" is just one guy, DJ Delorie. DJGPP was always open source so I bet he got some contributors, but if the rest of this sentence is true that "id has requested from djgpp engineers", it just means they asked the maker of an open source tool they used to please add a feature. I wonder whether they paid him for it or whether DJ just hacked it all in at id's request for kicks. His "about me" page suggests he does contracting so might be the latter.

DJGPP was spectacularly good back in the day. I didn't appreciate at the time what a monumental effort it must have been to port the entire GCC toolchain and runtime to DOS/Windows. Hats off to DJ Delorie!

djdelorie 3 hours ago | parent | next [-]

Back then, DJGPP was a much bigger group, and most of the Quake kudos go to Charles Sandmann, author of cwsdpmi, who worked directly with Id to help them optimize their code for our environment.

skrebbel 3 hours ago | parent | next [-]

Omg I’m totally starstruck now!

Purely out of curiosity, was that all a volunteer open source effort or was the entire DJGPP group acting as a consulting organization?

djdelorie 3 hours ago | parent [-]

The DJGPP project and its contributors were 100% volunteer. I'm sure some of the contributors took advantage of their involvement to obtain consulting gigs on the side (I did ;) but DJGPP itself didn't involve any. The Quake work was a swap; we helped them with optimizing, and they helped us with near pointers. Win-win!

thatjoeoverthr 2 hours ago | parent | prev [-]

Thank you for this work. It was my first C compiler in 1998. Y'all helped me on the mailing list and you even replied to my e-mails! I was 11 and this was insane to me.

bluedino 5 hours ago | parent | prev | next [-]

Would love to see some interviews etc with DJ if he's up for it

ddtaylor 4 hours ago | parent [-]

Same. I only have experience from M.U.G.E.N fighting engine with respect to DJGPP.

EGreg 3 hours ago | parent [-]

I remember back in the day using DJGPP (DJ Delorie) with the Allegro library (Shawn Hargreaves), building little games that compiled and ran on Windows and other OSes, and being part of the community.

You can still play the little game I made in under 10K for the Allegro SizeHack competition in 2000: https://web.archive.org/web/20250118231553/https://www.oocit...

Back then I was also writing a bunch of articles on game development: https://www.flipcode.com/archives/Theory_Practice-Issue_00_I...

Anyone on HN was active around that time? :) Fun time to be hacking!

olau an hour ago | parent | next [-]

Yes. DJGPP and Allegro was a great help, and a big step up from the old Borland Turbo Pascal I started out with. I remember trying to rotate an image pixel by pixel in Pascal. Allegro simply had a function to do it. And yes, the mailing list was great - Shawn Hargreaves and the couple of people in the inner circle (I seem to remember someone called George) were simply awesome, helpful people.

I eventually installed Red Hat, started at university and lost most of my free time to study projects.

jasomill 2 hours ago | parent | prev [-]

I was, but my application was less fun: porting Perl code from Windows NT to MS-DOS to integrate with software that required direct hardware access to a particular model of SCSI card.

Worked great, and saved a bunch of time vs writing a VDD to enable direct hardware access from NTVDM or a miniport driver from scratch.

IIRC, the underlying problem was that none of the NT drivers for any of the cards we'd tested were able to reliably allocate enough sufficiently contiguous memory to read tapes with unusually large (multi-megabyte) block sizes.

maybewhenthesun 8 hours ago | parent | prev | next [-]

Amen to that!

I think I remember there was some communication between ID and Charles Sandmann about CWSDPMI, so even though it's worded a bit strange for an open source project there's probably some thruth in it?

Also a bit strange how the author is surprised about Quake running in a 'VM', apparently they don't really know about VM86 mode in x86 processors...

bombcar 4 hours ago | parent | next [-]

It's a bit surprising because this is the author of the DooM Black Book and they know the underpinnings pretty well.

However, the difference between a DOS VM under Windows 9x and a Windows command prompt and a w32 program started from DOS is all very esoteric and complicated (even Raymond Chen has been confused about implementation details at times).

trollbridge 6 hours ago | parent | prev | next [-]

DPMI clients don’t run in a VM, though. They’re just a normal task like any other task / process in Windows.

toast0 4 hours ago | parent [-]

So... Win32 runs in virtual mode. In 2025, we don't think of that as a Virtual Machine, but it totally is. Hardware access is trapped by the CPU and processed by the OS/DPMI server.

fredoralive an hour ago | parent [-]

No, in 386 mode 3.x and 9x the System VM and other DPMI clients runs in protected mode.

Virtual 8086 mode, as its name somewhat suggests, only runs real mode code.

zoeysmithe 5 hours ago | parent | prev [-]

I think if you're relatively young is hard to know computing history. Its oddly older than one thinks, even concepts that are seen as new. Its sometimes interesting to see people learn about BBS's which flourished 40 years ago.

eknkc 8 hours ago | parent | prev | next [-]

Completely off topic;

So I just took a look at DJ’s website and he has a college transcript there. Something looked interesting.

Apparently he passed a marksmanship PE course at the first year. Is that a thing in US? I don’t know, maybe its common and I have no idea. I’d love to have a marksmanship course while studying computer science though.

simiones 8 hours ago | parent | next [-]

US colleges have a very open curriculum, where you have wide leeway in what classes you actually take, especially in the early years of study. If you're coming from more European-style universities, this is vastly different to the relatively rigid course set you'd take (with a few electives here and there).

toast0 an hour ago | parent | prev | next [-]

I needed one PE credit to get a degree from my community college. My school didn't offer marksmanship, but I would imagine it would fit into PE, archery certainly would and there's synergy. I took Table Tennis to graduate. I don't think my engineering school where I got my BS required Physical Education though.

expressadmin 5 hours ago | parent | prev | next [-]

MIT offers a Pirate Certificate: https://physicaleducationandwellness.mit.edu/about/pirate-ce...

cardiffspaceman 3 hours ago | parent | prev | next [-]

My college required its graduates to pass a minimal swimming test. Just enough swimming ability to give a potential rescuer some extra time to effect the rescue, rather than have us go straight to the bottom of the sea. We all took a test in the first week or so. Those who failed had to take a course and retake the test.

Cthulhu_ 8 hours ago | parent | prev | next [-]

I wouldn't be surprised if it's a pretty normal thing in a few countries or regions in the world. Marksmanship and archery are also olympic sports.

le-mark 8 hours ago | parent [-]

It would be an easy “A” for a lot of people in the US!

kbolino 5 hours ago | parent | prev | next [-]

It's definitely not common. My US university required 2 physical education classes, but only if you were under 30 and hadn't served in the military. They may have offered marksmanship, but I just took running and soccer (aka football). The classes were graded pass-fail and didn't even count for academic credit.

mortehu 7 hours ago | parent | prev | next [-]

US colleges last one year longer, and the first year is more academically similar to the last year of high school in Europe.

stronglikedan 5 hours ago | parent | prev | next [-]

We have myriad available "electives" that contribute towards our degrees. I have college credit for "bowling and billiards" and "canoeing and kayaking".

marpstar 4 hours ago | parent | prev [-]

I took an 8-week, 1-credit badminton course to fulfill my PE requirements. I wouldn't be surprised to find a marksmanship course.

gpderetta 7 hours ago | parent | prev [-]

It was great indeed. DJGPP is how I learned to to program.

nu11ptr an hour ago | parent | prev | next [-]

What a blast from the past. I recall my own experimenting with DJGPP and DPMI in my own software. It felt futuristic at the time. I was blown away.

Another fond memory: I was playing Star Wars: Dark Forces (I think that was the one) and was frustrated with the speed of level loading. I think it used DOS/4GW and I recall renaming it, copying in a new dos extender (was it CWSDPMI? not sure), and renaming it to the one Star Wars used. I was shocked when it not only worked, but the level loading was MUCH faster (like 3-5x faster I recall). My guess is whatever one I had swapped in wasn't calling the interrupt in DOS (by swapping back to real mode), but perhaps was calling the IDE disk hw directly from protected mode. Not sure, but it was a ton faster, and I was a very happy kid. The rest of the game had the same performance (which makes sense I think) with the new extender.

ggambetta 10 hours ago | parent | prev | next [-]

I learned to solder as a pre-teen so I could make a nullmodem :) Then I learned that resistors were a thing when I made a parallel port sound card (this thing https://en.wikipedia.org/wiki/Covox_Speech_Thing). Fun times!

d3Xt3r 9 hours ago | parent | next [-]

I wasn't allowed a soldering iron as a kid, so I ended up just chopping and splicing a regular serial cable and turned it into a null modem, all so that I could play OMF2097 with my friends without having to share the same keyboard (we would always fight over right side, which defaulted to using the arrow keys for movement - and so the person who got the right side generally had the advantage, as back then arrow keys were the default movement keys, unlike these days where WASD is default.)

jacquesm 9 hours ago | parent | next [-]

I wasn't allowed one either so I soldered with a screwdriver heated up on the gas stove when my parents weren't home...

ggambetta 6 hours ago | parent | next [-]

That's pretty hardcore, respect :)

giantrobot 5 hours ago | parent | prev [-]

Your parents: A soldering iron is dangerous!

You: I'll show you!

khafra 7 hours ago | parent | prev [-]

Shared-keyboard OMF 2097 also had an overwhelming advantage for the first mover, since most keyboards had 2-3 key rollover--if you hit wd to jump forward, your opponent had to be fast to do anything before you hit your attack key.

lll-o-lll 7 hours ago | parent | prev [-]

Really fun times. I “learned” to solder around that time and age also. Playing Mod files through a DIY version of that “thing” piped into a portable stereo speaker was awesome.

Years later I learned what flux was, and soldering became quite a bit better and easier.

afandian 11 hours ago | parent | prev | next [-]

> I didn't work on the Chunnel. That was mainly a British guy named Henry

The British guy named Henry might have named it after another feat of engineering completed around the same time.

https://en.wikipedia.org/wiki/Channel_Tunnel

torh 9 hours ago | parent [-]

Or from the Seinfeld episode "The Pool Guy" (Aired November 1995) which had a fictional movie called "Chunnel" -- probably based on the very same channel tunnel.

ralferoo 8 hours ago | parent [-]

From Google (AI slop at top of search results): "Chunnel" is not a real movie but a fictional film from the TV show Seinfeld. It is depicted as a disaster movie about an explosion in the Channel Tunnel...

Weird hearing that name now though. Around that time, everybody referred to it as the "Chunnel", but I don't think I've heard it as anything but the "Channel Tunnel" since maybe 2000. I suspect even that usage is now limited to only taking cars on the train from Folkestone. Every time I've travelled on it as a regular passenger from London, it's just been referred to as the Eurostar without any mention of the tunnel at all.

afandian 7 hours ago | parent [-]

Yes, it's definitely a word from a 1990s geography textbook.

jhallenworld an hour ago | parent | prev | next [-]

In the early years of Linux, before it had networking, we used KA9Q for the TCP/IP stack:

https://www.ka9q.net/code/ka9qnos/

This worked in DOS, but was easily ported to Linux.

As far as DPMI: I used the CWSDPMI client fairly recently because it allows a 32-bit program to work in both DOS and Windows (it auto-disables its own DPMI functions when Windows detected).

https://en.wikipedia.org/wiki/CWSDPMI

PeterHolzwarth 5 hours ago | parent | prev | next [-]

Is this the sign that Fabian is beginning his look and research at Quake (ie, in slow preparation for another Game Engine Black Book)?

klaussilveira an hour ago | parent | next [-]

He most definitely is cooking something. Seen contributions from him to chocolate-quake: https://github.com/Henrique194/chocolate-quake/pull/60

As well as bug reports: https://github.com/Henrique194/chocolate-quake/issues/57

I personally would love to get some help with my chocolate Doom 3 BFG fork, specially with pesky OpenGL issues: https://github.com/klaussilveira/chocolate-doom3-bfg

bombcar 3 hours ago | parent | prev [-]

I feel he's stepping his way to that, but Quake is an entire other world of complexity from DooM (which is simple enough that a 400+ page book can "explain" it and the OS and the computers it ran on).

klaussilveira an hour ago | parent [-]

Andre Lamothe's "Tricks of the 3d Game Programming Gurus: Advanced 3d Graphics and Rasterization" is a great book for anyone interested in graphics programming from those days.

sempron64 5 hours ago | parent | prev | next [-]

It's amusing to me that in the 90s you could easily play Quake or Doom with your friends by calling their phone number over the modem whereas now setting up any sort of multiplayer essentially requires a server unless you use some very user-unfriendly NAT busting.

ryandrake 4 hours ago | parent | next [-]

Glad you mentioned DOOM! Sometimes people forget that DOOM supported multiplayer as early as December 1993, via a serial line and February 1994 for IPX networking. 4 player games on a LAN in 1994! On release, TCP/IP wasn't supported at all, but as the Internet took off, that was solved as well. I remember testing an early-ish version of the 3rd party iDOOM TCP setup driver from my dorm room (10 base T connection) when I was supposed to be in class, and it was a true game changer.

jandrese 4 hours ago | parent [-]

What was even more amazing is you could daisy chain serial ports on computers to get multiplayer Doom running. One or more of those links could even be a phone modem.

Downside is that your framerate was capped to the person with the slowest computer, and there was always that guy with the 486sx25 who got invited to play.

bombcar 3 hours ago | parent [-]

Or slave two copies to yours and get "side view" which was only supported for a few releases IIRC - https://doomwiki.org/wiki/Three_screen_mode

badocr 3 hours ago | parent [-]

Yes, Doom with multi-monitors! There's (at least) one video on Youtube showing it in action with 3 monitors plus a fourth one with the map: https://www.youtube.com/watch?v=q3NQQ7bPf6U#t=1798.333333

klaussilveira 2 hours ago | parent | prev | next [-]

You can kinda solve that problem with STUN servers. Most games on Steam use Steam Datagram Relay, which also solves this: https://partner.steamgames.com/doc/features/multiplayer/stea...

It's like in-engine Hamachi. Works really well with P2P games.

kamranjon 5 hours ago | parent | prev | next [-]

I wonder if there is a way to use tailscale to make it easy again?

blackcatsec 4 hours ago | parent [-]

Quite literally folks have done this for decades using Hamachi.

mrguyorama 2 hours ago | parent | prev [-]

You usually just need to forward a port or two on your router. That gets through the NAT because you specify which destination IP to forward it to. You also need to open that port in your Windows firewall in most cases.

Some configuration, but you don't have to update the port forwarding as often as you would expect.

The reason you can't just play games with your friends anymore is that game companies make way too much money from skins and do not want you to be able to run a version of the server that does not check whether you paid your real money for those skins. Weirdly, despite literally inventing loot boxes, Valve does not suffer from this sometimes. TF2 had a robust custom server community that had dummied out checks so you could wear and use whatever you want. Similar to how Minecraft still allows you to turn off authentication so you can play with friends who have a pirate copy.

bitwize 2 hours ago | parent [-]

Starcraft could only do internet play through battle.net, which required a legit copy. Pirated copies could still do LAN IPX play though, and with IPX over IP software you could theoretically do remote play with your internet buddies.

By the way, this is why bnetd is illegal to distribute and was ruled such in a court of law: authenticating with battle.net counts as an "effective" copy protection measure under the DMCA, and providing an alternate implementation that skips that therefore counts as "circumvention technology".

badocr 2 hours ago | parent | prev | next [-]

I recall reading about TCP/IP-powered Internet multiplayer DOS Quake in TECHINFO.TXT that shipped with the retail version of the game, and I quote:

  Beame & Whiteside TCP/IP
  ------------------------
  
  This is the only DOS TCP/IP stack supported in the test release.
  It is not shareware...it's what we use on our network (in case you
  were wondering why this particular stack).  This has been "tested"
  extensively over ethernet and you should encounter no problems
  with it.  Their SLIP and PPP have not been tested.  When connecting
  to a server using TCP/IP (UDP actually), you specifiy it's "dot notation"
  address (like 123.45.67.89).  You only need to specify the unique portion
  of the adress.  For example, if your IP address is 123.45.12.34
  and the server's is 123.45.56.78, you could use "connect 56.78".

I looked around a little and sure enough, a copy of the software was avaiable in a subdirectory of idgames(2?) at ftp.cdrom.com. I knew nothing about TCP/IP networking at the time, so it was a struggle to get it all working, and in the end, the latency and overall performance was miserable and totally not worth it. Playing NetQuake with WinQuake was a much more appropriate scenario.
sroussey 10 hours ago | parent | prev | next [-]

I was half expecting something about how to get tcp into windows, but this is win95 where they shipped it inside the os and put some company out of business that used to sell that.

ogurechny 5 hours ago | parent | next [-]

The turbulent times and the breakneck speed of computer development need to be taken into account. Not long before that computer networks were strictly corporate things installed by contractors choosing hardware, driver and software suppliers suitable for tasks performed by employees or students, and someone who installed it at home was the same kind of nerd who would drag an engine from the work into his room to tinker. Non-business-oriented software rarely cared about third party network functions. Then network card became a consumer device, and a bit later it became integrated and expected.

Also, Windows did not install TCP/IP components on computers without a network card (most of them until the Millennium era), it was an optional component. You could not “ping” anything, as there was no ping utility, nor libraries it could call. In that aspect, those network-less Windows systems were not much different from network-less DOS systems. The installer probably still works that way (or can be made to, by excluding some dependencies), but it's hard to find hardware without any network connectivity today. I wonder what Windows 11 installer does when there is no network card to phone home...

jahnu 10 hours ago | parent | prev | next [-]

I used to use Trumpet Winsock with Windows 3.1

https://en.wikipedia.org/wiki/Trumpet_Winsock

hypercube33 9 hours ago | parent | prev [-]

Didn't Win95 get tcp from FreeBSD?

LeoPanthera 9 hours ago | parent [-]

That was Windows 2000.

EvanAnderson 8 hours ago | parent | next [-]

The story with the Windows NT IP stack is nuanced, but it wasn't just lifted from BSD: https://web.archive.org/web/20051114154320/http://www.kuro5h...

hypercube33 8 hours ago | parent | prev [-]

No I'm fairly certain that berkley sockets were used as a foundation to integrate a full network stack under winsockets so people wouldn't have to go buy things like Trumpet (Windows 3.1) and you could coax out messages saying as much from the commandline but Google is failing me (I'm sure most of this stuff is on usenet which no one seems to care about these days)

zweifuss 8 hours ago | parent [-]

The history of the Windows TCP/IP stack went most likely like this:

IBM (NetBEUI, no TCP/IP) -> Spider TCP/IP Stack + SysV STREAMS environment -> MS rewrite 1 (early NT, Winsock instead of STREAMS) -> MS rewrite 2 (make win2000 faster):

https://web.archive.org/web/20151229084950/http://www.kuro5h...

kalleboo 7 hours ago | parent [-]

It's interesting how STREAMS pervaded everything for a short while (Apple's Open Transport networking stack for System 7.5 and up was also based on STREAMS) but everyone almost immediately wanted to get rid of it and just use Berkley sockets interfaces.

xbar 5 hours ago | parent [-]

Berkeley, for disambiguation.

kalleboo 4 hours ago | parent [-]

Oops, too late to edit my comment!

mmastrac 4 hours ago | parent | prev | next [-]

I still get Google hits on my 25 year old DJGPP/NASM tutorial...

ec109685 7 hours ago | parent | prev | next [-]

This article makes it seems like 1996 was ancient times. There was the internet then, browsers, Mac’s had a tcp stack for a while by then, quake was an extremely advanced game.

Yeah, the dos to windows transitions was a big deal, but it was a pretty ripe time for innovation then.

hylaride 6 hours ago | parent [-]

Yeah, but dial-up was slow, laggy, and what 95% of people used to access the internet in those days. Real-time gaming was not fun with anything that used it. I grew up in a rural area in the 1990s and was no match for people that started to get cable modems as time went on.

1718627440 4 hours ago | parent [-]

Dial-up, has better latency, since their is no packet-switching. So it is slow, but not laggy.

hylaride 3 hours ago | parent | next [-]

> Dial-up, has better latency, since their is no packet-switching. So it is slow, but not laggy.

It was laggy as there was buffering and some compression (at least for later revisions of dial-up) that most definitely added latency.

ipython 4 hours ago | parent | prev | next [-]

Dialup has a ton of latency (100+ms), but little jitter.

toast0 29 minutes ago | parent [-]

If you're dialed up directly, you should be able to get a little bit better latency as you won't need IP, UDP, and PPP/SLIP headers; at modem bandwidth, header bytes add meaningful latency. But data transmission is still pretty slow, even with small packets.

giantrobot 4 hours ago | parent | prev [-]

You're using confusing terminology so you look very wrong. What you mean to say is direct modem-to-modem connections were not laggy because there was no packet switching. This is a true statement.

What the GP comment was talking about was dial-up Internet being most people's exposure to TCP/IP gaming in the 90s. That was most assuredly laggy. Even the best dial-up Internet connections had at least 100ms of latency just from buffering in the modems.

The QuakeWorld network stack was built to handle the high latency and jitter of dial-up Internet connections. The original Quake's network was fine on a LAN or fast Internet connection (e.g. a dorm ResNet) but was sub-par on dial-up.

toast0 an hour ago | parent | prev | next [-]

> And in 1995 there were only two: us, and Total Entertainment Network. You might think game creators would come to us and say "please put my game on your service!", but... nope! Not only did we have a licensing team that went out and got contracts to license games for our service, but we had to pay the vendor for the right to license their game, which was often an exclusive. So, we had Quake and Unreal; TEN got Duke Nukem 3D and NASCAR.

FWIW, the Total Entertainment Network (TEN) got Quake later, here's a press release from September 30 1996 [1]. Wikipedia says QTest was released Feb 24, 1996, and I can't find when MPath support launched, so I don't know how long the exclusive period was, but not very long. Disclosure: I was a volunteer support person (TENGuide) so I could get internet access as a teen; I was GuideToast and/or GuideName.

[1] https://web.archive.org/web/20110520114948/http://www.thefre...

pragma_x an hour ago | parent | prev | next [-]

From that first graph: Who was using WinNT in 2005?!

nikanj 9 hours ago | parent | prev | next [-]

” It is impressive to see Quake run at full speed knowing that Windows 95 runs DOS executable in a virtual machine. My guess is that, in full screen, memory writes and reads to the VGA are given direct access to the hardware to preserve performances”

Virtual x86 mode had little to do with what we nowadays think of when someone says ”virtual machine”

hapless 3 hours ago | parent | next [-]

Arguably it had a great deal to do with what we think of as a "virtual machine."

Virtual 8086 remapped all opcodes and memory accesses to let a program pretend to be on a single, real-mode 8086 when in reality it was one of many programs running in protected mode on a newer chip

AMD-V and whatever the Intel counterpart is do the almost exactly the same thing: re-map all ia32 and amd64 instructions and memory accesses to let a program pretend to be doing ring 0 stuff on an x86 box, when in reality it is one of many programs running with fewer privileges on a newer chip

There are a few more wrinkles in the latter case -- nested page tables, TLB, etc -- but it is the same idea from the viewpoint of the guest.

skywal_l 9 hours ago | parent | prev [-]

Not entirely related but Quake had a VM though, executing scripts written in QuakeC[0] which would drive the AI, game events, etc.

[0]: https://en.wikipedia.org/wiki/QuakeC

acchow 8 hours ago | parent [-]

But your link says that QuakeC was a compiled language

vkazanov 8 hours ago | parent | next [-]

QuakeC was compiled into QuakeVM bytecode, which made all modes and logic portable between platforms without having to recompile things everytime, unlike what had to be done for Quake 2 (which was 100% native code).

This hurt performance a bit but in the longer term benefited the modding scene massively.

FartyMcFarter 8 hours ago | parent | prev | next [-]

It's compiled into bytecode, so it still requires a VM / bytecode interpreter (whatever you want to call it).

Luc 8 hours ago | parent | prev [-]

Compiled to bytecode.

fallingfrog 5 hours ago | parent | prev | next [-]

Ah I remember running a serial cable from my bedroom to the hallway so we could play 1v1 quake via direct connect. Good times! I think we used to play age of empires that way too.

cubefox 5 hours ago | parent | prev | next [-]

In an interview with Lex Fridman, John Carmack said that in retrospect, Quake was too ambitious in terms of development time, as it both introduced network play and a fully polygonal 3D engine written in assembly. So it would have been better to split the work in two and publish a "Network Doom" first and then build on that with a polygonal Quake.

Which seems to imply that the network stack was about as difficult to implement as the new 3D engine.

bitwize an hour ago | parent [-]

And then you had Romero saying that Quake wasn't ambitious enough...

anthk 4 hours ago | parent | prev | next [-]

On DOS runnning fast under W95, how no one created a SVGALIB wrapper trapping i386 code and redirecting the calls to an SDL window?

John-Tony12 an hour ago | parent | prev [-]

Fascinating deep dive — shows how *Quake.exe* integrated its own TCP/IP stack, highlighting clever engineering and early game networking innovations.

dndvr 39 minutes ago | parent [-]

-------------------------- John-Tony12 27 minutes ago | parent | context | on: How Quake.exe got its TCP/IP stack

Fascinating deep dive — shows how Quake.exe integrated its own TCP/IP stack, highlighting clever engineering and early game networking innovations.

--------------------------

This is AI right? the em dash and the inane sycophantic reiteration

klaussilveira 21 minutes ago | parent [-]

> inane sycophantic reiteration

That's a pretty good way to put it.