viti95 / FastDoom

Doom port for DOS, optimized to be as fast as possible!
378 stars 26 forks source link

Add high resolution VESA 2.0 Graphics modes with improved debugging and build facilities #161

Closed dougvj closed 6 months ago

dougvj commented 6 months ago

Resolves #81

Paves way for #140 and mitigates #160

Captured Footage Demo

https://www.youtube.com/watch?v=pgIRHeQ0e_g

New Features to Rendering

Features added to debugging

The many ways in which rendering could write off the end of screen memory when trying to make these changes and corrupting things later in execution prompted some time spent on adding the following features:

Build features added

Tested hardware configurations

The following hardware configurations were tested by myself:

Pentium 60 with S3 Trio, ran at 800x600 Pentium 133 with Cirrus Logic chip Running up to 1024x768, required UniVBE Pentium 400 and ATI Rage PRO

Benchmarks

Known issues

dougvj commented 6 months ago

@viti95 I would be happy to go over these changes in more detail and welcome any feedback you might have.

viti95 commented 6 months ago

OMG this is huge and awesome! I'll try to review this PR as soon as possible, although I will be very busy next weeks as my girlfriend goes under surgery tomorrow. From what I've seen from the video it looks incredible.

viti95 commented 6 months ago

Checked everything and looks pretty good to me. I'll try in the next days on my 386 / 486 systems, impressive work!

viti95 commented 6 months ago

I've done some testing on real hardware, it works really well.

https://twitter.com/viti95/status/1744676438869975266?t=ErowQOPdBb_LCyh97foLdw&s=19

There is only one bug I've found on my eBox Vortex86MX, it seems that VRAM is not initialized at start, so it shows garbled pixels on the Doom title screen (right and down) on modes that don't fill the screen (I'll try to post the image later).

dougvj commented 5 months ago

OK thanks for the report. I will spend some time testing this on some other machines and addressing other issues over the coming weeks (VESA 3.0 Refresh rate, Frame Interpolation, etc)

viti95 commented 5 months ago

I think I've fixed most of the bugs I've found for VESA modes, just missing the Episode 3 final scroll image, this will take me a bit more time. Also I did a small test release to see people's reaction and help us finding bugs. I'll probably try to add support for 1280x800 resolution, as is a perfect fit (4x resolution both horizontal and vertical), and modify current 1280x1024 mode to apply 4x resize for the status bar.

dougvj commented 5 months ago

Thanks for fixing those bugs.

I haven't yet circled back to some of the other enhancements I want to add regarding dynamic linking, animation interpolation, and vesa 3 support, but it's still on my radar.