MDK RRedline(MDKRed.exe, vid #02) on RReady Rendition Verité Wrapper at 4k

Subscribers:
97
Published on ● Video Link: https://www.youtube.com/watch?v=cwt4EH_Tld4



Game:
MDK (1997)
Duration: 0:00
28 views
2


The weapon power up indicator on the bottom left sometimes is supposed to have a blue background, when boxed. RReady didn't render the blended background.

This happened becaue V_LockBuffer/V_UnlockBuffer was being used to POKE (write directly into the backbuffer). V_LockBuffer is supposed to return a copy of the screen at native resolution (640x480/16-bit) which the app modifed and passes back to V_UnlockBuffer, which updates the screen.

With RReady there're multiple app dependent code-paths to handle this. One involves capturing the screen (via OpenGL) and downscaling it to 640x480/16 bit). SODA Offroad needs this for the menu effects and these are at 640x480 (because the app can't handle a 1080p buffer for instance, the resolution's hardcoded). MDK which calls V_LockBuffer 2-3 times per frame can't use this method because:
a) V_LockBuffer stalls real Rendition cards and RReady emulation. No rendering is done between Lock and Unlock. The framerate will cry out in pain.
b) When blitting the image back, the screen capture is a downscaled 640x480 image, which would defeat the upscaling.

To fix this for games like MDK and RReady prepopulates the buffer with a magic value (which is a valid colour, but hopefully one out of 65536 colours not used by the game). If the value has changed this might be different. It's entirely possible the app wrote the magic value here, but generally most apps have safe colours, (as far as I can tell), I seriously doubt any app is going to write out 65536 different colours to the screen during it's entire run using LockBuffer; most games have a colour tone/palette (higher than 256 colours). RReady then replaces the magic colour with a transparent pixel before blitting. (There is a highly accurate way of detecting byte level mem writes using Virtual Protect and using debug traps, but that's very very slow, slow enough for 2 fps. There's also a page level API call that's fast but that doesn't offer pixel level granularity, only to the nearest 4KB block)

The power up on the bottom left sometimes appears in a white box and the background is supposed to be a blue and transparent. This didn't work with MDK because the magic bytes were being used to blend in the blue box and the resultant colour was the magic byte so it got eliminated. The difference can be seen picking up the nuke it the first section and the grenade in the sniper/training room section.

There was another issue with alpha values being forced to full strength 0xFF when a an RGBA colour with an alpha value of 0x00 was set. Early RReady needed this to render all polygons because of a bug somewhere else. This was enabled by a switch for just MDK and is no longer needed. The Alpha component can take on any app supplied value and render correctly. Full screen damage flashes are now fully transparent, instead of momentarily being solid, while the alpha is 0 (0x00).

Other texture glitches seen in the video on the left were fixed more than a year ago. I'd in fact forgotten about them.


The new MDK code isn't live yet either in an Alpha build or a Store build and probably won't be for a while. I really need to get EF2000 running and fix the Nascar stray line bug (See comment by ‪@WhiteMagicRaven‬ in my last Nascar Racing 1999 video:    • Nascar 1999 Rendition(Work in progres...  ).

If anyone's dying to try out the new build, I'll do some testing and push it out, but I suspect no one is.




Other Videos By Sharanga Dayananda


2024-10-13Indy Car Racing 2 (Upcoming Track: Arlington) Dosbox-Rendition/RReady Rendition Verité @4k
2024-10-13Eurofighter 2000+ (WIP. vid #4k ) with Dosbox-Rendition and RReady @4k
2024-10-13Eurofighter 2000+ (WIP. vid #3) with Dosbox-Rendition and RReady @4k
2024-10-12Eurofighter 2000+ (WIP. vid #2) with Dosbox-Rendition and RReady @4k
2024-10-07Rebel Moon Rendition Edition @60 fps upcoming performance with Dosbox-Rendition and RReady @4k
2024-09-29Indy Car Racing 2 (Upcoming performance: Downtown Detroit (HQ)/Replays) RReady Rendition Verité @4k
2024-09-29Indy Car Racing 2 (Upcoming performance: u.2024) RReady Rendition Verité @4k
2024-09-29Indy Car Racing 2 (Upcoming performance: Cars95.2k) RReady Rendition Verité @4k
2024-09-25Indy Car Racing 2 (u2024 Carset) with Dosbox-Rendition and RReady Rendition Verité @4k
2024-09-18vQuake2 Edge Antialiasing Modes with RReady Rendition Verité @4k
2024-09-15MDK RRedline(MDKRed.exe, vid #02) on RReady Rendition Verité Wrapper at 4k
2024-09-13Nascar 1999 Rendition(Work in progress vid #4) with Dosbox-Rendition and RReady Rendition Verité @4k
2024-09-11vQuake cVars with Dosbox-Staging-Rendition and RReady Rendition Verité at 4k
2024-09-11Effects of surfacelookup with vQuake and vQuake 2 (RReady Rendition Verité)
2024-09-05vQuake (Work in progress) with Dosbox-Rendition and RReady Rendition Verité @4k
2024-09-04vQuake2 TheReckoning (Chroma Keying) with RReady Rendition Verité
2024-09-04Hexen II Setup Guide for RReady Rendition Verité
2024-09-03vQuake 2: The Reckoning & Ground Zero (cutscenes) with RReady Rendition Verité
2024-09-02MDK Setup Guide with RReady Rendition Verité
2024-09-01vQuake Malice V2100 vs RReady Rendition Verité
2024-09-01vQuake (vid #11, Dissolution of Eternity) with Dosbox-Rendition and RReady Rendition Verité @4k