-
-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add high resolution VESA 2.0 Graphics modes with improved debugging and build facilities #161
Conversation
- Ability to parse MAP file at runtime - Ability to dump backtrace - More debugging channels (serial, bochs E9, screen backtrace) - Asserts and bounds checking facilities
- Added many fastmath routines for additional resolutions - Removed all hardcoded references to resolution - Allow pixel doubling for UI/HUD elements (Selectable via define) - Introduce center screen offset calculations - Create fastmath macros for asm code for switchable resolutions
- Improved option defines to enable granular options based on environment (IE, Debug, BUild type). This includes separating the option defines for NASM and WCC - Duplicate Makefile with a GNU compatible one, use it by default with parallel builds (-j $(nproc)). - Setup build.sh to check for dependencies and select the proper make
Avoids the problem encountered in viti95#160
@viti95 I would be happy to go over these changes in more detail and welcome any feedback you might have. |
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. |
Checked everything and looks pretty good to me. I'll try in the next days on my 386 / 486 systems, impressive work! |
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). |
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) |
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. |
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. |
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