VOGONS


First post, by ViTi95

User metadata
Rank Member
Rank
Member

Hi everyone!!

I'm happy to announce FastDoom for DOS, a port of Doom based on PCDoom by @nukeykt. The goal of this port is to make it as fast as posible for 386/486 personal computers. It includes code from other ports as Crispy Doom, MBF and Russian Doom, as well the original PSX and Jaguar Doom ports, so I send kudos to them.

The main differences between the original Doom and FastDoom are these (as of version 0.4):

  • Added FPS ingame viewer. Enabled with "-fps"
  • Added FPS calculation after timedemo runs
  • Added option to render visplanes (ceiling and floors) without textures. Enable with "-flatsurfaces"
  • Added option to render Spectres and invisible objects like real transparent objects (harder to see, a little faster to render). Enable with "-flatshadows"
  • Added option to render sky as a flat fixed color. Enable with "-flatsky"
  • Added option to render Spectre and invisible objects like the Sega Saturn port did. Enable with "-saturn"
  • New option to show only objects that are not far away from the player. All the enemies are still rendered as they're important. Enabled with "-near"
  • PC Speaker uses all sounds available (just for fun!)
  • Lot's of optimizations to make the game run faster / smoother
  • Removed low memory limit (may cause crashes with low RAM)
  • NEW DETAIL LEVEL: POTATO. It renders the full scene with a quarter width resolution (max 80x200). 16-bit ISA video cards can play the game full screen much better!! My Western Digital Paradise PVGA1A ISA (1989) can render the game at a constant >25 fps with a 486DX-50. Enabled with "-potato" command parameter and low detail selected
  • New option to allow more than 8Mb of memory allocation. Enabled with "-ram"
  • Removed network gaming support
  • Removed joystick support
  • Removed Y mouse movement (move forward/backwards)
  • Added autorun support (F11 key).
  • Added mono sound support. Enabled with "-mono" parameter.
  • Added low quality sound support (8000Hz instead of 11025Hz). Enabled with "-lowsound" parameter.
  • Replaced DOS/4GW with DOS/32A providing a good speedup!
  • Removed gamma correction support

The source code is located at https://github.com/viti95/FastDoom and you can download the latest executables here https://github.com/viti95/FastDoom/releases

Here it's a live demo I recorded in one of my test benchs (Intel 486DX-33, WD Paradise PVGA1A ISA, Aztech AZT2320 ISA)
https://www.youtube.com/watch?v=vJWtdZHjjKY

Feel free to send any suggestion or ideas to make this port even faster!

BTW my English is a work in progress 😅

Last edited by ViTi95 on 2020-09-04, 00:12. Edited 3 times in total.

https://www.youtube.com/@viti95

Reply 2 of 979, by Pierre32

User metadata
Rank Oldbie
Rank
Oldbie

Wow, the timing could not be better. I tried regular Doom for the first time last night on my 386DX/40 build, just for a quick test and a laugh. Will test and report back. Thanks!

Reply 3 of 979, by vacatedboat

User metadata
Rank Newbie
Rank
Newbie
Pierre32 wrote on 2020-06-24, 00:21:

Wow, the timing could not be better. I tried regular Doom for the first time last night on my 386DX/40 build, just for a quick test and a laugh. Will test and report back. Thanks!

I would also like to hear. I just dusted off my 386dx40. It has 8meg ram at the moment. Thanks

Reply 4 of 979, by keropi

User metadata
Rank l33t++
Rank
l33t++

So assuming you run this on normal details how much faster is it from stock DOOM?
This whole project looks to be very nice, kudos!

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 6 of 979, by dr_st

User metadata
Rank l33t
Rank
l33t

This is truly awesome. Although I will never play it, because I have no need, I have utmost admiration for this kind of quality work and dedication. 😀

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 7 of 979, by shock__

User metadata
Rank Oldbie
Rank
Oldbie

1901 realtics vs. 2193 realtics on my 486 [Asus VL/I-486SV2GX4, DX2 @ 66MHz, 1MB L2 Cache, 24MB RAM, 1GB CF HDD, Cirrus Logic 5428 VLB, ARGUS Prototype Rev. 02 #0], settings are the "usual Doombench" ones (Screen scaled down to status bar + 1 notch border, high detail, -nomusic -nomouse -timedemo demo3)
Timing is perfect here as well ... recently considered swapping the VLB Cirrus Logic graphics card against a Mach32, but was struggling with a decision when I saw the pricetag for those cards.

Thanks for this.

Current Project: new GUS PnP compatible soundcard

[Z?]

Reply 10 of 979, by ViTi95

User metadata
Rank Member
Rank
Member
keropi wrote on 2020-06-24, 04:33:

So assuming you run this on normal details how much faster is it from stock DOOM?
This whole project looks to be very nice, kudos!

In my testings using high detail + full screen + status bar and audio enabled it gains around 15% performance on a 486DX-50 with a VLB video card (Cirrus Logic). Including other settings such as flat visplanes or limit distance view for objects increments even more that performance. Extracting performance it's really hard as the original code was already well optimized.

leileilol wrote on 2020-06-24, 13:17:
xcomcmdr wrote on 2020-06-24, 09:04:

I would love to hear all the details and tradeoffs about all the new optimizations.

No F11 gamma correction seems to be one i've noticed.

Oopps! Forgot to mention that one. It's a little bit faster without gamma correction, and I always felt that gamma correction made the game look really bad. The idea is to keep the port compatibility as high as possible and remove only barely used features. I will add wiki pages in github explaining all the options in detail with images, and how much performance you gain by using them.

MAZter wrote on 2020-06-24, 17:30:

Interesting! And FPS ingame viewer is amazing thing!

Kudos to @Jnechaevsky, I saw her implementation in Russian Doom and ported it to FastDoom, but using fixed point math instead of floating point math. I will make it show more stats in the future (memory usage, column and spans render calls, ...)

shock__ wrote on 2020-06-24, 11:38:

1901 realtics vs. 2193 realtics on my 486 [Asus VL/I-486SV2GX4, DX2 @ 66MHz, 1MB L2 Cache, 24MB RAM, 1GB CF HDD, Cirrus Logic 5428 VLB, ARGUS Prototype Rev. 02 #0], settings are the "usual Doombench" ones (Screen scaled down to status bar + 1 notch border, high detail, -nomusic -nomouse -timedemo demo3)
Timing is perfect here as well ... recently considered swapping the VLB Cirrus Logic graphics card against a Mach32, but was struggling with a decision when I saw the pricetag for those cards.

Thanks for this.

If you disable also the sound, the performance goes from 15% to 25% as the original sound code does lot's of weird things. Mainly it dumps all cached sounds that are not used after ~0.4 seconds, and does this check in every tick for all the channels. This slows down the performance and i'm looking to solve it.

Huge thanks to everyone, I wasn't expecting so many comments! Any ideas or criticism will be welcome 😄. One question, how many of you do use the mouse to play Doom?

https://www.youtube.com/@viti95

Reply 11 of 979, by Pierre32

User metadata
Rank Oldbie
Rank
Oldbie

Yes, mouse for sure. I really love that Y axis is disabled here, so I don't have to run Novert separately.

(Busy week, so I still haven't actually had time to test yet.)

Reply 13 of 979, by HandOfFate

User metadata
Rank Member
Rank
Member

Very cool! I recently finished a full Ultra-Violence run of Doom 1 on my 486 DX4 120MHz/VLB and it really struggled with some maps in Episode 4 (Thy Flesh Consumed), so I'll be giving that a try with your port.

The removal of 'Y-axis mousewalk' is a big improvement in any case. I had to turn mouselook off in some sections where you had to walk on narrow ledges to reach some secrets.

[edit]
It runs very well. 3612 realtics (FastDoom with DOS/32A Extender v9.1.2) vs 3708 (FastDoom with DOS4GW v1.97) vs 4178 (Ultimate Doom v1.9) on Ultimate Doom's demo3.

And E4M2, which ran so bad I had to reduce the screen size on my UV run, is actually playable now 😀

Last edited by HandOfFate on 2020-06-25, 20:16. Edited 2 times in total.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 15 of 979, by xcomcmdr

User metadata
Rank Oldbie
Rank
Oldbie

This is also really interesting when you try to run DooM in a web browser. All optimizations help a lot when it runs in WASM.

Last edited by xcomcmdr on 2020-06-30, 09:12. Edited 1 time in total.