First post, by starfrost
Current version: 0.2 (23 May 2025)
Repository: https://github.com/starfrost013/nvplayground (uses MS-DOS + DJGPP)
For the last year I have been working on reverse engineering the early NVidia GPUs to emulate them (mostly the 128 and, later, TNT1) in 86Box. Currently 2D mostly works under the Riva 128 (I am running into issues with the screen to screen blit functionality). I'm also starting to work on a wiki: https://nvwiki.org. It's intended to cover up to at least NV10 eventually.
As a part of this I have been developing tools and software for programming the hardware without using the drivers under MS/FreeDOS or the Win9x DOS box (NTVDM not tested). nvplay is a 32-bit DJGPP app that takes control of the Riva 128 in order to program it using raw registers, for the purpose of understanding how it really works. This software uses the PCI BIOS to identify the GPU. If it is supported, it will map its PCI BARs. Then it can run a series of tests that are defined in the nvplay.ini file for each GPU.
Currently this software is capable of dumping the Video BIOS and PCI BARs of a RIVA 128/128ZX while it is running, as well as printing the embedded manufacture-time configuration information (and logging all of this to a file). In the future, this software will be able to do graphical tests entirely without using the drivers, make low-level configuration changes and possibly lead to custom drivers. It can also overclock these GPUs, but this functionality is disabled currently for safety reasons (you can turn it on by setting NV3_SetOverclock to 1 in the nvplay.ini file).
Help wanted: I would like anyone who has one of these GPUs to run this app while their GPU is doing various things (e.g. sitting in DOS, playing a 3D game or just sitting in Windows) and then to send me the generated NVPLAY.LOG, NV3BIOS.BIN, NV3BAR0.BIN and NV3BAR1.BIN files, this will help quite a lot with my research.