FastDoom
-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
FastDoom
https://github.com/viti95/FastDoom
I'd like to point out this recent project that's attempting to optimize Doom (PCDoom by NukeYKT, a very recreation of the original DOS executables' source) and add further options to turn off/down some additional details/texturing to go even faster. It's already faster than doom.exe by default. It's mostly intended for the lower 486s and 386s (think about two digit MHz stuck on ISA video, around the 33MHz mark)
DISCLAIMER I DO NOT WORK ON THIS PROJECT. DO NOT MISTAKENLY REPLY LIKE IT'S MINE. I AM RELAYING THE EXISTENCE AND NEWS OF VITI95'S PROJECT
I'd like to point out this recent project that's attempting to optimize Doom (PCDoom by NukeYKT, a very recreation of the original DOS executables' source) and add further options to turn off/down some additional details/texturing to go even faster. It's already faster than doom.exe by default. It's mostly intended for the lower 486s and 386s (think about two digit MHz stuck on ISA video, around the 33MHz mark)
DISCLAIMER I DO NOT WORK ON THIS PROJECT. DO NOT MISTAKENLY REPLY LIKE IT'S MINE. I AM RELAYING THE EXISTENCE AND NEWS OF VITI95'S PROJECT
Last edited by leileilol on Tue Jul 20, 2021 1:03 pm, edited 1 time in total.
-
- Vintage GZDoom Developer
- Posts: 3164
- Joined: Fri Apr 23, 2004 3:51 am
- Location: Spain
Re: FastDoom
I've had a look at the commit history... crazy stuff.
Why not just add a triple horizontally low detail mode in ASM? Quad aka potato looks too bad and the author says that "ASM is so f*cking hard to understand" so it's in C.
Then he removed a lot of stuff for the sake of it such as multiplayer, joysticks and gamma correction to assign autorun to F11 likely breaking the engine.
Hey but if i were better at asm i'd add the triple mode, may be you could do it yourself?
Why not just add a triple horizontally low detail mode in ASM? Quad aka potato looks too bad and the author says that "ASM is so f*cking hard to understand" so it's in C.
Then he removed a lot of stuff for the sake of it such as multiplayer, joysticks and gamma correction to assign autorun to F11 likely breaking the engine.
Hey but if i were better at asm i'd add the triple mode, may be you could do it yourself?

-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
-
- Posts: 3392
- Joined: Thu Jul 05, 2007 4:53 pm
- Location: opening the forbidden box
Re: FastDoom
This is very cool. There's been a lot of grumbling about things that slow down the original Doom like Doom II doing an expensive search over all wad lumps every frame... Seeing a project make an actual attempt to speed the game up on the original hardware is definitely neat.
-
- Spotlight Team
- Posts: 1109
- Joined: Mon Nov 25, 2019 8:54 am
- Graphics Processor: Intel (Modern GZDoom)
Re: FastDoom
Just when you thought you found every interesting port on the planet, there comes Lei with the comeback punch.

No wonder i couldn't find it -Its not publically searchable.
But reading through the logs... this is brilliant. I love a pure optimized DOS port that renders as fast as possible on below-Doom spec standards.
This needs some more interest.
-
- Vintage GZDoom Developer
- Posts: 3164
- Joined: Fri Apr 23, 2004 3:51 am
- Location: Spain
Re: FastDoom
And does it matter? I don't know how but i added a 3x2 mode in ZDoom LE (worked in 320x240) and must be doable in ASM too, i should have added 3x1 instead. Do 106x3 and fill the rest with the last column.leileilol wrote:3's not evenly divisable for 320 (and smaller viewports)
The potato mode looks like shit and it's made in C, for most changes performance impact will be neligible IMO. He removed gamma correction (says it's a bit faster) and floors and ceilings without textures look pretty bad. BTW on slow isa cards mode 13h is much faster than mode X. And you can't use potato and regular low detail at the same time.
I've found some videos:
The Mister ao486 is a low performance 486 FPGA core and must be equivalent to a 386DX, that's high detail.
-
- Posts: 13885
- Joined: Tue Jan 13, 2004 1:31 pm
- Preferred Pronouns: She/Her
Re: FastDoom
Pixel tripling is not as simple as you say it is and I don't understand the insistence that the author should do it.
For what it's worth - the video mode being indivisible by 3 does matter quite a lot, particularly in assembly. Since Doom uses vertical-major addressing it matters way way less, though, but it still affects the way the assembly functions are written.
The whole point of assembly is to keep things as simple as possible, at least for the CPU at any rate, and dividing by a non-factor complicates things quite a bit to the point where writing it in assembly is honestly really not worth it. If you're going to do pixel tripling like that you really are better off sticking to C.
For what it's worth - the video mode being indivisible by 3 does matter quite a lot, particularly in assembly. Since Doom uses vertical-major addressing it matters way way less, though, but it still affects the way the assembly functions are written.
The whole point of assembly is to keep things as simple as possible, at least for the CPU at any rate, and dividing by a non-factor complicates things quite a bit to the point where writing it in assembly is honestly really not worth it. If you're going to do pixel tripling like that you really are better off sticking to C.
-
- Vintage GZDoom Developer
- Posts: 3164
- Joined: Fri Apr 23, 2004 3:51 am
- Location: Spain
Re: FastDoom
I suggested it to leileilol.
Sorry i was wrong and i've deleted the rest of the post.
From the game engine black book:
Sorry i was wrong and i've deleted the rest of the post.
From the game engine black book:
But you'd need to use the Mode X (planar) for that which is usually slower than mode 13h (chunky). From Wikipedia:With direct access to the VGA banks, "low detail mode" is a completely free optimization without the need to write the same pixel column twice, since the VGA mask is set up to write the same pixel to two banks simultaneously.
Planar memory arrangement splits the pixels horizontally into groups of four. For any given byte in the PC's 64 KiB video memory aperture, four pixels can be accessed on screen by selecting the required plane(s).
-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
Re: FastDoom
0.5's released and re-adds gamma correction and has faster potato.
-
- Spotlight Team
- Posts: 1109
- Joined: Mon Nov 25, 2019 8:54 am
- Graphics Processor: Intel (Modern GZDoom)
Re: FastDoom
I took your initial thread to make the DoomWorld version.leileilol wrote:0.5's released and re-adds gamma correction and has faster potato.

-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
Re: FastDoom
0.6's released and is faster, lets you skip the melt (which was slow on 386s as you'd only see 2 frames of it) and also has light diminishing for flat surfaces.
-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
Re: FastDoom
0.66's released. This fixes the savegame regression, integrates potato detail into the F5 hotkey, early uncapped framerate support (note: no interpolation), among other minor things
-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
Re: FastDoom
0.666 has some optimizations and more benchmarker's features for forcing settings by parameter, and logging results, since it's become quite a nice benchmark tool for ye olde computers
-
- Posts: 4449
- Joined: Sun May 30, 2004 10:16 am
- Preferred Pronouns: She/Her
- Location: GNU/Hell
Re: FastDoom
0.7 RC1 needs some real machine testing love. Adds Disney(R) Sound Source(TM) sound support and General Wireless OperationsTandy(R) Sound Source(TM) support, fixed a bunch of bugs, adds OPL3, and fasters the potato.
-
- Spotlight Team
- Posts: 1109
- Joined: Mon Nov 25, 2019 8:54 am
- Graphics Processor: Intel (Modern GZDoom)
Re: FastDoom
Lei, thanks for providing updates on this. 
