by gwern on 3/4/2025, 8:41:44 PM
by yjftsjthsd-h on 3/4/2025, 7:47:00 PM
> To get the big picture of performance evolution over time, I downloaded all 52 releases of fastDOOM, PCDOOMv2, and the original DOOM.EXE, wrote a go program to generate a RUN.BAT running -timedemo demo1 on all of them, and mounted it all with mTCP's NETDRIVE.
I'm probably not the real target audience here, but that looked interesting; I didn't think there were good storage-over-network options that far back. A little searching turns up https://www.brutman.com/mTCP/mTCP_NetDrive.html - that's really cool:)
> NetDrive is a DOS device driver that allows you to access a remote disk image hosted by another machine as though it was a local device with an assigned drive letter. The remote disk image can be a floppy disk image or a hard drive image.
by ndegruchy on 3/4/2025, 7:43:26 PM
The linked GitHub thread with Ken Silverman is gold. Watching the FastDOOM author and Ken work through the finer points of arcane 486 register and clock cycle efficiencies is amazing.
Glad to see someone making sure that Doom still gets performance improvements :D
by unleaded on 3/4/2025, 10:36:59 PM
One feature of FastDOOM I haven't seen mentioned here are all the weird video modes, some interesting examples:
- IBM MDA text mode: https://www.youtube.com/watch?v=Op2tr2lGK6Y
- EGA & Plantronics ColorPlus: https://www.youtube.com/watch?v=gxx6lJvrITk
- Classic blue & pink CGA: https://youtu.be/rD0UteHi2qM
- CGA, 320x200x16 with 'ANSI from Hell' hack: https://www.youtube.com/watch?v=ut0V1nGcTf8
- Hercules: https://www.youtube.com/watch?v=EEumutuyBBo
Most of these run worse than with VGA, presumably because of all the color remapping etc
by jakedata on 3/5/2025, 12:16:19 AM
"IBM PS/1 486-DX2 66Mhz, "Mini-Tower", model 2168. It was the computer I always wanted as a teenager but could never afford"
Wow - by 1992 I was on my fourth homebuilt PC. The KCS computer shows in Marlborough MA were an amazing resource for tinkerers. Buy parts, build PC and use for a while, sell PC, buy more parts - repeat.
By the end of 1992 I was running a 486-DX3 100 with a ULSI 487 math coprocessor.
For a short period of time I arguably had the fastest PC - and maybe computer on campus. It outran several models of Pentium and didn't make math mistakes.
I justified the last build because I was simulating a gas/diesel thermal-electric co-generation plant in a 21 page Excel spreadsheet for my honors thesis. The recalculation times were killing me.
Degree was in environmental science. Career is all computers.
by mmphosis on 3/5/2025, 2:01:56 AM
On top of releasing often, Viti95 displayed outstanding git discipline where one commit does one thing and each release was tagged.
https://fabiensanglard.net/fastdoom/#:~:text=one%20commit%20...
by kingds on 3/4/2025, 7:52:10 PM
> I was resigned to playing under Ibuprofen until I heard of fastDOOM
i don't get the ibuprofen reference ?
by sedatk on 3/4/2025, 8:21:53 PM
If the author reads this: John Carmack's last name was mistyped as "Carnmack" throughout the document.
by anilgulecha on 3/5/2025, 1:41:13 PM
One non-cynical take on why modern software is slow, and not containing optimizations such as these: The standardization/optimization hypothesis.
If something is/has become a standard, then optimization takes over. You want to be fastest and meet all of the standard's tests. Doom is similarly now a standard game to port to any new CPU, toaster, whatever. Similarly email protocol, or a browser standard (WebRTC, Quic, etc).
The reason your latest web app/ electron app is not fast is that it is exploratory. It's updated everyday to meet new user needs, and fast-enough-to-not-get-in-the-way is all that's needed performance wise. Hence we see very fast IRC apps, but slack and teams will always be slow.
by z3t4 on 3/5/2025, 10:26:31 AM
It's not trivial to go back in versions to check for improvements or regressions, because some optimizations can introduce bugs that is later discovered, or you introduce a vital feature that degrades performance... So you can make your life easier by having automatic performance tests that are run before each release, and if you discovered a performance issue you write a regression test as usual... What I'm trying to say is: Do performance testing!
by manoweb on 3/5/2025, 12:14:51 AM
Unlike the author, back in the day I would have preferred a 486DX50 to the DX2-66. 50MHz bus interface (including to the graphics card) instead of 33MHz
by rasz on 3/5/2025, 9:28:50 AM
>Optimize R_DrawColumn for Mode Y
Seeing this made a difference makes it clear Fabien ran fastdoom in Mode Y
>One optimization that did not work on my machine was to use video mode 13h instead of mode Y.
13h should work on anything, its the VBD that requires specific VESA 2.0 feature enabled (LFB * ). VBR should also work no problem on this IBM
Both 13h and VBR modes would probably deliver another ~10 fps on 486/66 with VESA CL5428.
* LFB = linear frame buffer, not available on most ISA cards. Somewhat problematic as it required less than 16MB ram or "15-16MB memory hole" enabled in bios. On ISA Cirrus Logic support depended on how the chip was wired to the bus, some vendors supported it while others used lazy copy and paste of reference design and didnt. With VESA Cirrus Logic lazy vendors continued to use same basic reference design wiring disabling LFB. No idea about https://theretroweb.com/motherboards/s/ibm-ps-1-type-2133a,-... motherbaord
by bee_rider on 3/5/2025, 1:12:38 AM
From a quote in the article
> One of my goals for FastDoom is to switch the compiler from OpenWatcom v2 to DJGPP (GCC), which has been shown to produce faster code with the same source. Alternatively, it would be great if someone could improve OpenWatcom v2 to close the performance gap. > - Conversation with Viti95
Out of curiosity, how hard is it to port from OpenWatcom to GCC?
Clearly the solution here is to write a Watcom llvm front end…
by rob74 on 3/5/2025, 6:12:03 AM
Ah, that picture brings back memories - I used to have a successor of that machine in the mid nineties (PS/1000), it looked almost the same, except the handle was rounded and the power button was blue (a big blue button). And the CPU was IBM's very own "Blue Lightning" 486SX clone (75 MHz, but no FPU). It ran Doom great, but had to pass on Quake, which required an FPU for its polygon-based 3D graphics.
by ge96 on 3/4/2025, 7:43:17 PM
> I always wanted as a teenager but could never afford
Funny how that is, for me it was a Sony Alpha camera (~~flagship at the time~~) and 10 years later I finally buy it for $50.
by hyperman1 on 3/5/2025, 8:11:46 AM
I see the acronyms MVP and MPV in the post. Does someone know what they mean?
by fitsumbelay on 3/4/2025, 10:46:28 PM
very nice website design
by cantrecallmypwd on 3/5/2025, 12:19:53 PM
In high school, the fastest computer in the computer lab was an IBM-donated PS/1 486SX 25 all-in-one that also was used to play DOOM.
by dabeeeenster on 3/4/2025, 11:22:05 PM
> I was resigned to playing under Ibuprofen until I heard of fastDOOM
WTH is Ibuprofen?!
by prox on 3/4/2025, 7:44:47 PM
Is there a recommended place where I can play Doom in the browser?
If such a thing exists!
by zombot on 3/5/2025, 12:54:53 PM
How does git fit into 4 MiB of RAM?
by klaussilveira on 3/4/2025, 9:30:19 PM
Glad to see another post on Fabien's blog!
by acoolguy48 on 3/5/2025, 12:50:00 AM
This is cool
by hinkley on 3/4/2025, 8:10:41 PM
So what does one do with a faster Doom, besides bragging, larger maps and more simultaneous players?
by alanh on 3/4/2025, 11:27:58 PM
For readability:
html { font-family: system-ui; }
Consider https://alanhogan.com/bookmarklets#add_css to add this to the page. Code blocks are still shown in monospaced font. BTW, monospaced font for prose is an anti-pattern that you hackers need to relinquish, but whatever!
> The MPV patch of v0.1 is without a doubt build 36 (e16bab8). The "Cripy optimization" turns status bar percentage rendering into a noop if they have not changed. This prevents rendering to a scrap buffer and blitting to the screen for a total of 2 fps boost. At first I could not believe it. I assume my toolchain had a bug. But cherry-picking this patch on PCDOOMv2 confirmed the tremendous speed gain.
Good example of how the bottlenecks are often not where you think they are, and why you have to profile & measure (which I assume Viti95 did in order to find that speedup so early on). The status bar percentage?! Maybe there's something about the Doom arch which makes that relatively obvious to experts, but I certainly would've never guessed that was a bottleneck a priori.