First post, by wbc
This utility allows to use certain DOS VESA and Win3.x drivers on newer NVidia GPUs, such as Riva TNT family and GeForce 256 up to FX series (theoretically up to 7xxx).
Supported drivers:
- SciTech Display Doctor (aka UniVBE) 6.53 and 6.7
- Riva TNT/TNT2 Windows 3.x drivers, v 1.55 (untested)
DISCLAMER: THIS UTILITY IS PROVIDED "AS-IS", I bear no responsibility for any harmful or undesired actions or consequences caused by using it on your hardware, although the probability of such outcomes are extremely low (unless you are using some very very ancient VGA monitor unable to tolerate out-of spec timings). In other words: use at own risk :)
DOWNLOAD is in attachments, source code and latest releases are available in GitHub repository: https://github.com/wbcbz7/nvpatch-dos
SciTech Display Doctor
Although built-in NVidia VBE 3.0 support is near-perfect and compatible with large variety of DOS software, it has a few shortcomings - like 15bpp modes being missing (required by games like Alien Trilogy in high-color mode or X-Men Children of the Atom), or lack of several low-resolution modes like 320x480 or 512x384. In the past, utilities like SciTech Display Doctor (also known as UniVBE) were popular choice for fixing VBE issues and providing additional features like linear frame buffer, low-resolution modes, etc. Unfortunately, support for NVIDIA graphics chips is very sloppy, and anything newer than Riva TNT is not actually supported. NVPatch hacks hardware detection routines and makes those utilities run on newer hardware. Additional side-effect is custom refresh rate stuff working again on late Geforce FX and newer cards :)
Known benefits over stock NV VESA BIOS:
- more low-res modes: 320x480, 400x300, 512x384 and 640x350, in addition to already supported 320x200/240, 320x400, 640x400/480 and above.
- 15 bits per pixel RGB555 modes added, in addition to 16/256color, 16bpp and 32bpp. 24bpp (packed RGB888) is not supported in hardware, though very few VESA applications require this and do not work at other bit depths, so it's not a big issue.
- generally higher compatibility with quirky/buggy VESA applications.
- flexible refresh rate and screen adjustment management (no UniRefresh/VBEHz and similar utilities required)
Known limitations:
- only primary VGA output is supported! DO NOT try to use patched UniVBE on DVI/HDMI displays, as it will blank the display (and possibly crash the system) while attempting to set any VESA mode. Besides, DVI support under plain DOS on NV chips is far from perfect: image is blurry, frame rate is locked to 60fps and some games don't work properly, while running fine on VGA.
- modes above 1024x768 are not tested and may not work properly
NVPatch supports both SDD 6.53 and 6.7 (DOS only). Personally, I would recommend SDD 6.53, and only if it does not work properly, then try 6.7
SDD 6.53
uses RIVA 128 support code, needs quite an intensive patching ;)
Known limitations:
- VRAM size is limited to 8 MB
- max. provided resolution is 1600x1200
- Install SDD as usual
- Copy NVPATCH.EXE to SDD directory, and run it. Check if all files under SDD 6.53 description are marked as "ok", ignore others.
- If your graphics card has more than 8 MB of VRAM, run Else, run UVCONFIG.EXE and CONFIG.EXE without any command line parameters. If both runs succeed, then SDD is patched and configured properly.
UVCONFIG.EXE -m8912
CONFIG.EXE -m8192
- Run UNIVBE.EXE
- Run any VESA application (VBETEST from SDD package is a perfect match :)
- (optional but recommended) Run UNICENTR.EXE and adjust screen position for VESA modes
SDD 6.7
uses RIVA TNT2 support code, may have better GPU compatibility than SDD 6.53
Known limitations:
- VRAM size is usually limited to 16 MB
- unlike 6.53, doesn't provide certain low-resolutions VESA modes (namely, 320x200, 320x400 and 320x480). Since 320x200 VESA is used by some DOS demos and games, you have to use native NV VESA BIOS or SDD 6.53 for those apps.
- Install SDD as usual
- Copy NVPATCH.EXE to SDD directory, and run it. Check if SDD 6.7 UVCONFIG.EXE is marked as "ok", ignore others.
- Run UVCONFIG.EXE, if it succeeds, then SDD is patched and configured properly.
- Run UNIVBE.EXE
- Run your favorite VESA application :)
- (optional but recommended) Run UNICENTR.EXE and adjust screen position for VESA modes
Tested and working (more or less) fine on:
- RIVA TNT 16 MB AGP (6.7 works out of the box, 6.53 needs patching)
- RIVA TNT2 M64 16 MB and 32 MB, both AGP (strangely, while 6.7 declares TNT2 support, without NVPatch it does work only with TNT2 Ultra, judging by PCI Device ID)
- Vanta 16 MB and Vanta LT 8 MB, both AGP
- GeForce 2 MX200 32MB and MX400 64 MB, both AGP
- GeForce 4 MX440 64 MB AGP
- GeForce FX5200 and FX5500, both 128MB AGP (the latter has the infamous broken VBE3.0 custom refresh rate support in it's video BIOS, and it works again with SDD)
Does not work on:
- GeForce 7600GS 256MB PCIe (blank screen upon any VESA mode set, goes back to VGA modes fine)
Windows 3.1 Display Driver
NOTE: unfinished, still broken, moreover, it's buggy even on a TNT itself (fonts corruption, DCI not working, etc.). basically you have to patch NV4VDD.386 file from driver package, then install the drivers as usual.
as usual, comments, suggessions, testings etc. are always welcome :)
--wbcbz7