While developing optimizations for Potato mode i've just discovered a bug that I think it hasn't been documented and exists since... 1994 (!!) It just happens that Heretic has a rendering bug on R_DrawSpan (which is ASM optimized and it's much faster compared to Doom R_DrawSpan). It basically renders the first pixel twice and then continues rendering the rest without issues. It's hard to find on a 320x200 resolution, but it becames very obvious on FastDoom's potato mode (80x200):
Here is the bug on Heretic:
heretic_002_double.png
heretic_002_zoom.png
And here is the same bug on FastDoom's Potato mode:
dos4gw_000_double.png
dos4gw_000_zoom.png
Right now, the bug has been fixed and these are some performance numbers:
FastDoom 0.9.1: 27.632 fps
FastDoom 0.9.2: 33.860 fps
This is 22% faster, on a 386DX-40 (Ultimate Doom timedemo demo3, fullscreen+HUD and no sound). And here is the cool thing, the same optimization will be applied for low detail and high detail modes on Mode Y, so expect performance uplift on the next release 😁
rmay635703 wrote on 2022-12-10, 04:38:Doom on CGA without 16bit x86 support is a travesty
Harris 286-25 🙁 no doom
Yeah I know, as is already been said, is very hard to port Doom to 16-bit only instruction set. Maybe some crazy developer (and more experienced than me) could achieve this. Or make Wolfenstein 3D Hercules/CGA/EGA compatible 😏