MDK RRedline(MDKRed.exe, vid #02) on RReady Rendition Verité Wrapper at 4k
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.