First post, by davidiwharper
Well, we thought it would never happen - Ken Silverman had abandoned DOS game development, he said. But then he bought a computer pre-installed with Windows XP, and discovered that, surprise, surprise, VESA doesn't work.
So he has released a fix.
Here's the problem with VESA 2.0 running under Windows NT/2K/XP: The video card BIOS says the linear framebuffer exists, but when DOS applications try to set this video mode, the application exits with this error message: "DPMI_mapPhysicalToLinear() failed!". Most people never see this message because the screen is either black or jumbled at this point. I don't know why the call fails, but I have a workaround:
A TSR that patches the VESA driver by fooling DOS programs into thinking the VESA 2.0 linear framebuffer modes aren't supported. Run this in the CMD prompt before you start your DOS application. You can type "MEM /C" to see if it installed in memory correctly. To remove it from memory, just type 'exit' from the CMD shell.
NOTES: […]
NOTES:
NOLFB will only fix DOS VESA 2.0 applications that have a fallback code that supports the segmented video modes (from VESA 1.2). If the application does not run in segmented video mode, then it will exit with a visible error message instead of a black or jumbled screen.
NOLFB does not add any new VESA modes to your computer! In fact it does just the opposite. If your graphics adapter does not support standard VESA modes (such as 640x480x8) in any DOS application, then this patch will not help you.
Here's a list of programs I've tested that are fixed by this patch (assuming the above conditions are true): Duke Nukem 3D, Shadow Warrior, most of the Build engine tools, 2Draw, and some demos on my website that are linked to my DOS VESA code: "VES2.H".
NOLFB will not do much in Win95/98/ME other than cause the framerates to decrease in games. Use at your own risk!