Voodoo 3 Tweaking

Note to those who've been reading the the page previously. Some registry tweak values have been updated because previous optimized defaults were found to cause glitches and instability in some cases. Values that were updated are highlighted in red.

Well, I got Voodoo 3/3000 video card relatively recently, and I discover that it has about the same hardware tweaking capabilities as do nVidia cards, in the sense its default timings are quite conservative and the card can be overclocked pretty easily without decreasing too much stability. Below is a hardware tweaking guide for Voodoo 3 (and it may work with other cards like Voodoo 4/5, too - there isn't much difference between them in that which will be of concern). Before getting started, I will spew a standard disclaimer: do not accuse me that you did all as it is written here and permanently damaged your card - there is always that chance. I do not pull your hair to do that - you do so at your own risk and according to your own will; I am not responsible for your actions. Although of course I might be able to help if there are problems - so you sure can drop me an email if something bad happens, and we'll see what can be done about that. Only please read this page completely on the subject of how to reanimate your card if it gets screwed - the info you are looking for might already be here. So, here it begins.

3Dfx Voodoo 3

I. Drivers

Now, I guess everyone (almost?) knows how to overclock these cards in Windows - 3Dfx has supplied a control panel with 3Dfx Tools which ship with the drivers, you only need to activate it using a special program widely available (check VoodooFiles.com, for instance). Besides, there is a lot of third party programs and tweaked drivers available, the best, in my opinion, being V.Control (appears to have no official home now and discontinued). Tweaked drivers include different combinations of driver files from the last 3Dfx beta and release builds, with added registry variable tweaks that may or may not actually affect the behavior of the drivers; the best IMO being x-3Dfx Community Driver Kit (see x-3Dfx community hub). The drivers there are for Voodoo 4/5, but they understand Voodoo 3 as well, only that not all tweaks work because the drivers are either unable or lazy to support some of the features on Voodoo 3 that they do on Voodoo 4/5. But the above I find to be the best drivers available for free so far. I've also heard that Xpentor Optimizers' drivers (X-Gamers 5) are better than x-3Dfx's, but what I saw in them is just some files that were rebuilt. (How did they do that? Rumor had it that they have source code, but then this was officially disclaimed, and told that the existing drivers were disassembled, then changed and recompiled.) Some claim that these add 10 fps in Quake 2 compared to x-3Dfx's, but not for me at least - I have tested these, and got the same score in 3DMark2001 (Direct3D) and the same fps in Quake III: Arena (OpenGL), and I also found that most of their registry tweaks don't work (no effect on either performance or image quality). I have also compiled my own driver set which is available at the bottom of this page (updated 11/4/2002). It features new refresh rates, and self-discovered Glide tweaks.

As for the tweak settings, again, these don't really matter much on a Voodoo 3. Only disable all vsyncs (in both Glide and D3D), try switching on Geometry Assist (Hardware T&L Emulation) if you have K7 or PIII or above CPU (K6-2/3 might work too, as they do support 3DNow!); set 3D filter quality to "Normal" and Alpha Blending Mode to "Smoother" to improve the pixel fill rate (that is, to improve performance in high resolutions only). In OpenGL, you might try playing with HSR depending on what game or other 3D app you are using - some don't like it. Don't use HSR and Z-Culling or HSR and Guardband Clipping together. I don't really know - all these tweaks were done on my PII-350 CPU, and they really don't add much speed - only about 0.1 to 0.2 fps in 3DMark2001, and even that not always. Maybe these will have a greater impact on higher speed CPUs, as in my case the CPU speed may really be the bottleneck.

II. BIOS

Here it's getting interesting. The BIOS on the Voodoo 3 card (on most, and certainly on mine) is flashable, that is, programmable and may be changed by a software utility. The software utility, 3Dfx Flash Tool v2.14, can be found below in the Files section.

II.1 Restoring Damaged BIOS

First of all, if you flash your BIOS incorrectly, or anyhow damage the contents of the card's EEPROM in the process, the next time you boot up the system, your video will not be working (you will get a black screen). First of all, a lot of mainboards are dumb enough to refuse to boot up if they did not detect a video card in the system. So, if your mainboard's CMOS setup supports this, set the "Halt on" option to "No Errors" in the Main BIOS Setup (press [F1] or [Del], depending on CMOS, after the system starts, to enter CMOS Setup) - and even that will not always help.

After your system starts with a damaged video card BIOS, it will typically beep 3 times, telling you that video was not detected. To restore video BIOS, you will need to do everything blindly, so before you flash, place all the files into the C:\ root folder beforehand. If you damage card's BIOS and are using Windows 95/98, hold down the [F8] key (WinME users will need to use a bootable diskette - as WinME itself doesn't support DOS mode) while the system starts up. This will bring the boot menu. When the system stalls to wait for input (hard disk activity ceases), press [Shift+F5] to activate DOS mode. You will be placed at command prompt in the C:\ folder. If you flashed the BIOS before and it didn't work, then your old BIOS is probably saved by the flash utility as SAVE.ROM. What you need to do is type:

FLASH.EXE /RESET

and press [Enter]. Then press [y] and [Enter]. There will be some disk activity; after it ceases, reset your system in about 10 seconds. Video BIOS should be restored now, and you may boot up normally. If you somehow damaged the contents of EEPROM otherwise, always keep your original BIOS file (say, ORIGINAL.ROM) and the flash utility in the C:\ folder before tampering with BIOS. In case of failure, do all as above, except at the command prompt, type:

FLASH.EXE ORIGINAL.ROM

then press [y] and [Enter], and reset the system in about 10 seconds.

If the above doesn't work (either the system doesn't boot or you don't remember the file file locations), then the only reasonable way you can restore your video card is by plugging another working video card (not 3Dfx Voodoo) in your system while maintaining Voodoo 3 where it was, then setting the working card to be the primary display in CMOS, and using the working video to watch the output and identify errors, doing everything as above.

II.2 Flashing Video BIOS

Before you flash or modify your BIOS, you will need to know what video board model you have. Models differ by chipset type (Banshee vs Avenger (Voodoo 3) vs VSA-100 (Voodoo 4/5)), core and memory clock (1000, 2000, 3000, 3500, 4500, 5500, 6000), the amount of the onboard video memory (8M/16M/32M/64M), type of the onboard memory (SDRAM, SGRAM), absence or presence of Digital SLI mode (Voodoo 4 vs Voodoo 5). You will need to pick appropriate BIOS ROM image file for your exact model, otherwise it might not work (or it might even work better, but there is no guarantee!).

To flash a new ROM image into your card's EEPROM, you will need two things:

  1. 3Dfx Flash Utility, FLASH.EXE + DOS4GW.EXE, which you can find below in the Files section.
  2. Updated ROM Image File, *.ROM, some of which (they are model specific!) can be found below, for others check V3Info.

The latest known BIOS versions for Voodoo 3 3000 AGP are 2.15.12-SD and 2.15.12-SG, for SDRAM (the one I have) and SGRAM models, respectively. Place the files (FLASH.EXE, DOS4GW.EXE, and ROM image, say 21512SD.ROM) in the C:\ folder. Then boot up in DOS mode (hold [F8] key just before "Starting Windows 95/98..." message appears), and when the menu pops up, press [Shift+F5]. Then at the command prompt, type:

FLASH.EXE 21512SD.ROM

and press [Enter], provided that 21512SD.ROM is the name of the file you want to flash. The old contents of the EEPROM will be saved as SAVE.ROM, and the new image file will be flashed, provided that FLASH.EXE verifies it's valid. If you just want to edit your existing BIOS and don't want to upgrade it, use some working BIOS to flash it temporarily, and then rename the SAVE.ROM to some other name, and edit it (see below), then flash it. Also note that you can't flash from under Windows DOS box (it will give you a GPF), you have to use the DOS mode (either [Shift+F5], dual boot, or bootable diskette).

After the programming is done, wait some 15 seconds and reset the system.

II.3 Editing Video BIOS

II.3.a Overview and Tools Needed

Editing the video BIOS allows you to adjust core/memory clock, memory and bus (PCI/AGP) timings in hardware, that is, once you have correctly modified the video BIOS and flashed it, you card will operate with the timings you provided by default, so that you won't need any third-party program or driver feature to modify these values each time - the card will automatically be initialized with them at system startup. Now the values in BIOS that we will be concerned about are actually the startup values of the Voodoo 3 GPU registers - any program that knows how to do it may modify these registers any time, changing the card's settings on the fly (which V.Control does, for example).

The things you will need to edit a BIOS:

  1. Knowledge on what register values mean, how to calculate them, and where they are located. The mappings of the select registers most subject to modification are given below along with optimal (or deemed optimal, for my card) values. For more extensive info on other registers, you may want the 3Dfx Voodoo 3 Chipset Specs, available in .PDF format.
  2. BIOS .ROM File for your video card model to edit.
  3. Hex Editor - to actually correct the values in the ROM file to those you want. Good old DOS-based HIEW will work, when launched it will ask you to select a file, then use F5 to go to a given offset, and F3 to edit the currently pointed byte.
  4. nVidia's BIOSMod Utility or equivalent, to correct the BIOS checksum after modification (this is needed to be flashed and operate properly). To do that, launch BIOSMod.exe, load your ROM file, and then save it. The correct CRC will be written at 0x00009FFF.
  5. 3Dfx Flash Tool - to program your modified ROM file into your card's EEPROM; see above how to use it.

All the tools mentioned (and v2.15.12-SD .ROM file) are available in the Files section below.

Recently, I have also been informed of a tool that can save you the trouble of hex editing the .ROM files. The tool is Tdfx BIOS Editor (homepage is in Russian), now it can also be found in the Files section below. Besides changing register values as described below, this tool also allows you to change hardcoded strings and default ROM fonts (used by the character generator to display text in text mode). Thanks to PHOENIX for mentioning this tool.

There is many startup register values in the BIOS file. For the version 2.15.12-SD, below is the list of the startup register values, their purposes and offsets in the ROM file (that is, positions from the beginning of the file). Offsets all differ for different BIOS versions. All values are hexadecimal.

Name Offset (v2.15.12-SD) Default Value (v2.15.12-SD) Purpose
pciInit0 0x00008311 0x0584FB04 Contains PCI Bus options and timings (see the bit map below).
miscInit0 0x00008315 0x00000000 Used to signal resets to all subsystems of the GPU, not used at startup.
miscInit1 0x00008319 0x00008001 Various operation and bus access options.
dramInit0 0x0000831D 0x0C1FA9E9 Contains memory timings (see the bit map below).
dramInit1 0x00008321 0x4056C601 Contains memory I/O options.
agpInit0 0x00008325 0x0000049E Controls AGP behavior when making AGP requests.
pllCtrl1 0x00008329 0x0000720D Controls core and memory clock (see the bit map below), corresponds to 166 MHz.
pllCtrl2 0x0000832D 0x00000000 Used to control memory clock separately in v1.xx BIOS's, but now is unused (both core and memory clocks are now controlled by pllCtrl1). According to another source, controls AGP clocking.
sgramMode 0x00008331 0x00000037 Contains SGRAM memory options.

There have to be more of these, but I don't know the exact locations. The registers that we will be interested in are pciInit0, miscInit1, dramInit0, dramInit1, agpInit0, and pllCtrl1. Below are their bit mappings. Remember that PC uses all Little Endian format, meaning that the least significant bit is the leftmost, so for example, in the hex editor the value 0x0584FB04 will look like 04 FB 84 05. If you want to experiment, you will need to translate whatever default value you get from BIOS into normal format (in this case 0584FB04), then use Windows Calculator to convert this number from hexadecimal to binary. Then, to determine if the n-th bit is 0 or 1, count from the right starting with 0 (so the 1st bit is actually the 0th) to the number of bits specified in the tables below. If the value contains multiple bits, the leftmost is the most significant and the rightmost is the least significant because we have already converted the number in the usual (Big Endian) format. When you have obtained the wanted value (by adding or subtracting 1's with the corresponding number of trailing 0's) and have obtained the resulting binary number, convert it back to hexadecimal and, using the hex editor, write it at the corresponding offset backwards (ie if the number you got is 0C1FA9E9, you would write E9 A9 1F 0C from left to right, starting at the given offset).

Below go the default and recommended values for pciInit0, miscInit1, dramInit0, dramInit1, agpInit0 and pllCtrl1 registers. These may or may not work with your card - they do work on mine, which is a noname Voodoo3/3000 card with 16M SDRAM 5.0ns video memory. Before you flash your edited BIOS, you should try these values with drivers. Run Regedit, then in the Windows registry, go to

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/Display/0000/DEFAULT

(or 0001, 0002 etc, whatever entry corresponds to your Voodoo 3 video adapter), and create the following values:

dramInit0 (which is a DWORD Value);
grxClock (which is a String Value).

Set the dramInit0 variable to the dramInit0 value that you want to try, and set the grxClock value to "x MHz", where x is core/memory clock frequency that you want to try (default for Voodoo 3/3000 is 166, I run it at 200). After that, reboot your system and perform some extensive testing (run some hardware accelerated games, heavy GUI applications like a web browser etc) to see if your system is stable, that is, there is no lockups and no severe image corruptions. If your system fails to boot because the timings are too aggressive, reboot in Safe Mode (hold [F5] just before "Starting Windows 95/98..." appears) and delete/reduce the values. If there are still corrupted icons on the desktop, remove the ShellIconCache hidden file in C:\WINDOWS directory.

II.3.b The pciInit0 Register


Bits # Default Value (Bin/Hex/Dec) Recommended Value (Bin/Hex/Dec) Meaning
6:2 00001/1/1 10000/10/16 PCI FIFO (First In = First Out buffer) empty entries low watermark.
8 1/1/1 0/0/0 Wait state cycles for PCI read accesses, less 1 clock.
9 1/1/1 0/0/0 Wait state cycles for PCI write accesses.
11 1/1/1 1/1/1 Disable PCI I/O access retries.
12 1/1/1 1/1/1 Disable PCI memory access retries.
17:13 00111/7/7 00000/0/0 Retry interval, less 8 clocks. (Doesn't matter in this setting - retries are disabled anyway.)
18 1/1/1 1/1/1 PCI interrupt enable.
19 0/0/0 0/0/0 PCI interrupt timeout enable.
25:20 011000/18/24 100000/20/32 PCI FIFO read threshold. Causes the system to hang if > 32.
26 1/1/1 1/1/1 Force PCI/CMD frame buffer access to high priority.
28:27 00/0/0 11/3/3 PCI FIFO to LFB (Linear Frame Buffer) write timeout in Mclks (64, 128, 196, 256).
All 0x0584FB04 0x1E041840

II.3.c The miscInit1 Register


Bits # Default Value (Bin/Hex/Dec) Recommended Value (Bin/Hex/Dec) Meaning
0 1/1/1 1/1/1 Invert CLUT address.
2:1 00/0/0 00/0/0 Triangle iterator mode.
3 0/0/0 0/0/0 Enable subvendor/subsystem ID writes.
4 0/0/0 0/0/0 Enable ROM writes.
5 0/0/0 0/0/0 Alternate triangle addressing map.
6 0/0/0 0/0/0 Disable texture mapping.
7 0/0/0 0/0/0 Power down CLUT.
8 0/0/0 0/0/0 Power down DAC.
9 0/0/0 0/0/0 Power down video PLL.
10 0/0/0 0/0/0 Power down graphics PLL.
11 0/0/0 0/0/0 Power down memory PLL.
14:12 000/0/0 000/0/0 Block write threshold.
15 1/1/1 1/1/1 Disable 2D block write.
16 0/0/0 0/0/0 Disable 2D stall on 3D synchronous dispatch.
17 0/0/0 0/0/0 Disable 3D stall on 2D synchronous dispatch.
19 0/0/0 0/0/0 Command stram reset.
24 * 0/0/0 0/0/0 PCI Fast Device enable.
25 * 0/0/0 0/0/0 PCI BIOS size (32K, 64K).
26 * 0/0/0 0/0/0 PCI 66 MHz enable.
27 0/0/0 1/1/1 AGP enable.
28 * 0/0/0 0/0/0 PCI device type (VGA, Multimedia).
All 0x00008001 0x08008001

* These bits appear to be strapped (autodetected) at startup and have no effect if changed in BIOS.

II.3.d The dramInit0 Register


Bits # Default Value (Bin/Hex/Dec) Recommended Value (Bin/Hex/Dec) Meaning
1:0 01/1/1 00/0/0 tRRD - row active to row active, less 1 clock.
3:2 10/2/2 10/2/2 tRCD - RAS to CAS delay, less 1 clock.
5:4 10/2/2 10/2/2 tRP - row precharge, less 1 clock.
9:6 0111/7/7 0000/0/0 tRAS - row address strobe time, less 1 clock.
13:10 1010/A/10 1000/8/8 tRC - minimum row cycle time, less 1 clock.
15:14 10/2/2 10/2/2 tCAS - column address strobe latency.
16 1/1/1 0/0/0 tMRS - mode/special mode register cycle time, less 1 clock.
17 1/1/1 1/1/1 tDQR - RD to DQM assertion delay.
18 1/1/1 0/0/0 tBWC - block write cycle time, less 1 clock.
19 1/1/1 0/0/0 tWL - WR to PRE, less 1 clock.
21:20 01/1/1 01/1/1 tBWL - BKWR to PRE, less 1 clock.
22 0/0/0 0/0/0 tRL - RD to PRE, less 1 clock.
23 0/0/0 0/0/0 Don't allow WR/BKWR to terminate RD, use BST.
24 0/0/0 0/0/0 Disable the dead bus cycle between RD and WR.
25 0/0/0 0/0/0 SGRAM write per bit enable.
26 1/1/1 1/1/1 Number of SGRAM chipsets, less 1.
27 1/1/1 1/1/1 SGRAM type (8Mbit, 16Mbit).
All 0x0C1FA9E9 0x0C12A028

II.3.e The dramInit1 Register


Bits # Default Value (Bin/Hex/Dec) Recommended Value (Bin/Hex/Dec) Meaning
0 1/1/1 1/1/1 Memory refresh Enable.
9:1 100000000/100/256 111111111/1FF/511 Memory refresh load value.
10 1/1/1 0/0/0 Video arbitration priority (Normal, Aggressive).
11 0/0/0 0/0/0 Triple buffer enable.
12 0/0/0 0/0/0 Disable dithering.
13 0/0/0 0/0/0 Memory read data sampling: Bypass the delay element.
14 1/1/1 0/0/0 Memory read data sampling: Resample flopped data with another negative edge flop before flopping with MCLK.
15 1/1/1 0/0/0 Memory read data sampling: Invert delayed clock before using it.
19:16 0110/6/6 0110/6/6 Memory read data sampling: Delay value.
23:20 0101/5/5 0101/5/5 Frame buffer output delay (2..62, in steps of 4).
24 0/0/0 0/0/0 Force 'latch for framebuffer' signals to be transparent.
25 0/0/0 0/0/0 Memory power on mode (Normal, Short).
26 0/0/0 0/0/0 Memory row activation (Aggressive, Normal).
27 0/0/0 0/0/0 Force memory page break for all accesses.
28 0/0/0 0/0/0 Force memory data outputs to be tristate.
29 0/0/0 0/0/0 Prevent video input from locking the bus during requesting.
30 * 1/1/1 1/1/1 Memory type (SGRAM, SDRAM).
All 0x4056C601 0x405603FF

* Set this according to the type of memory your card has. Voodoo 5 v1.18 BIOS autodetects this bit.

II.3.f The agpInit0 Register


Bits # Default Value (Bin/Hex/Dec) Recommended Value (Bin/Hex/Dec) Meaning
0 0/0/0 1/1/1 AGP request is high priority.
3:1 111/7/7 111/7/7 Maximum AGP request length.
6:4 001/1/1 001/1/1 AGP request FIFO full threshold.
10:7 1001/9/9 1001/9/9 AGP read FIFO full threshold.
31:27 00000/0/0 00000/0/0 AGP requests outstanding (0x1f = no outstanding requests, 0x0 = 17 outstanding requests).
All 0x0000049E 0x0000049F

II.3.g The pllCtrl1 Register


Bits # Default Value (Bin/Hex/Dec) Recommended Value (Bin/Hex/Dec) Meaning
1:0 01/0/0 01/0/0 K, PLL (Phase-Locked Loop clock generator) post divider (0..3).
7:2 000011/3/3 000011/3/3 M, PLL input divider (0..63).
15:8 01110010/72/114 10001010/8A/138 N, PLL multiplier (0..255).
16 0/0/0 0/0/0 Test (normal, clk is output of VCO).
All 0x0000720D (166 MHz) 0x00008A0D (200 MHz)

The general formula for output frequency:

F = 14.31818 * (N + 2) / ((M + 2) * (2 ^ K)) (MHz).

For more specific notes on how pllCtrl1 works as well as the table of K's, M's, N's and corresponding values of pllCtrl1 for frequencies ranging from 140.0 to 240.0 MHz, see this text file.

For more detailed notes on what was modified in the recommended values, see this text file.

II.3.h Flashing a BIOS That Is Not for Your Card

If, for any obscure reason, you would like to program your card's EEPROM with a BIOS that is not intended for your card (say, flash a Voodoo 4 BIOS into a Voodoo 3 card or vice versa), this is actually possible, contrary to popular belief. However, this will not make the Windows drivers recognize your Voodoo 3 as if it were Voodoo 4, as one might want - the drivers will still work with the card as with Voodoo 3. If you find any way to fool the drivers in such a fashion, please let me know how. For now, there are, however, 2 obstacles to flashing a BIOS that is not for your card.

  1. PCI DeviceID that seems to be, besides BIOS, also hardwired in the chip so there is no way to change it, is different for every model (Voodoo 3, Voodoo 4/5 etc). If the chip's DeviceID does not match with the BIOS's DeviceID, the card will not work (I tried it, both with 3Dfx and nVidia cards), i.e. the video will fail to initialize at bootup and you'll have to restore the BIOS. If the DeviceID inside the BIOS is changed to match that of the card, then the "alien" BIOS will work (at least worked for me). The Voodoo3's DeviceID is 0x0005, and Voodoo4/5's DeviceID is 0x0009. Now these numbers are in several places inside the ROM file, and you have to change them in every place. How to do this: the VendorID for all the 3Dfx cards is 0x121A, and the VendorID and DeviceID are always near each other in the ROM file. So search for a value 1A 12 with a hex editor, and whenever you see 05 00 (or 09 00) near it, change it to what it should be for your card. When you are done with the first reference, search for the next one, correct that as well, and so on. After you are done with the file, open it with BIOSMod and save it, to correct the CRC. Now it's ready for flashing.
  2. The 3Dfx Flash Utility will not allow you to flash a ROM file that is not for your card, although physically it can do that just fine, as it turned out. For that, I have disassembled and modified the Flash Utility so that now it can flash any 3Dfx BIOS into any 3Dfx card it supports, provided that BIOS's size fits and that the ROM file itself is valid (CRC is correct). The modified Flash Utility is available below, in the Files section.

III. Files

3Dfx EEPROM Flash Utility v2.14 (200K). This one works with Banshee, Voodoo 3 and Voodoo 4/5.

Modified 3Dfx Flash Utility v2.14 (200K). Same as above, only modified to be able to flash ROM files designed for other card models.

Voodoo 3/3000 16M SDRAM BIOS v2.15.12-SD (37K). Includes the original version (21512SD.ROM) and the same version modified with the recommended values given above (21512MOD.ROM).

HIEW v6.10 (340K). A hex editor, to edit binary files. DOS-based, and works in Windows DOS box, provided you have enough conventional memory free.

3Dfx Avenger (Voodoo 3) Chipset Specs (1.1M). Contains Voodoo 3 chipset specifications: hardware registers, commands, etc; in .PDF format.

nVidia BIOSMod v2.12 (510K). Used to edit .ROM files based in script files (but I haven't seen any for 3Dfx BIOSes); can be used as hex editor, and to correct the BIOS CRC after editing.

Tdfx BIOS Editor v1.61 (170K). 3Dfx BIOS editing tool by Rainbow, includes BIOS comparing features and comprehensive user manual.

3Dfx Voodoo3/4/5 Windows 9x/Me Display Driver v4.13.01.0011 with 3Dfx Tools (8.2M). 3dfx Voodoo display driver put together by me; added some new tweak settings, reset and recalculated refresh rates etc. Includes 3dfx Tools. For a full list of changes and new features, see the driver's History File.

3Dfx Voodoo3/4/5 Windows 9x/Me Display Driver v4.13.01.0011 (2.0M). Same as above, but not packaged with 3Dfx Tools.

WickedGL v4.99 OpenGL Driver (127K). This is an alternate implementation of OpenGL that is based on Metabyte's Wicked3D drivers and comes with Return to Castle Wolfenstein. It does a good job of fixing the glitches present in 3Dfx's OpenGL driver, so try this one if you are experiencing glitches in OpenGL games. Instructions: Unzip this file to the game directory (where the main game executable is located). If the experiment fails, remove the file called "OpenGL32.DLL" from that directory.

WickedGL v3.02 OpenGL Driver (1.6M). This is a replacement for 3Dfx's default OpenGL drivers. Designed by a third party company with games in mind. Officially no longer available, but still works great. It can detect a lot of games and install OpenGL32.dll into the game folder directly. If a game/app is not detected, you need to either copy "OpenGL32.dll" (or hi-res optimized version, "OGL_HRES.dll", renaming it to "OpenGL32.dll") into the game's folder, or replace the default OpenGL globally by copying the abovementioned file into {WinRoot}\SYSTEM\ (Win9x/ME) or {WinRoot}\SYSTEM32\ (WinNT/2K/XP) folder, where {WinRoot} is usually C:\WINDOWS or C:\WINNT. Instructions: download and unzip the file to a folder, then run wickedgl.exe to start the installation; use the file wickedgl.txt to supply credentials when prompted for registration info.

SciTech GLDirect v3.0.0 (4.1M). SciTech's shareware OpenGL to Direct3D wrapper, based on Mesa. If nothing else works, try this; CAD driver is pretty compatible.