First post, by kjliew
Yeah, I know, it's year 2020. 3Dfx was long dead, so as OpenGlide. While on Windows, there are several options of glide wrappers supporting Glide3x, there is none on native Linux. There is no way to relive the old Glide3x games on Linux unless the games also support something else such as OpenGL (which most of them do in the Glide3x era). So I cooked up a Glide3x wrapper within OpenGlide Glide2x support, mostly for QEMU KVM under Linux. Not everything works, but some games do. It currently reports as a Voodoo2 with 1-TMU, since multi-TMU emulation has never worked in OpenGlide. Optionally, if one recompiled the code, then it can also be configured to report as Voodoo Banshee which is naturally 1 TMU in real hardware. With Glide3x, we also get a better MESA 3Dfx GL since the later and last stable version was based on Glide3x. 3Dfx own standalone OpenGL ICD for Voodoo2/Banshee is also based on Glide3x, so that works, mostly as far as the games available to me for testing. The most untested Glide3x implementation is the new clipped coordinate introduced in Glide3x. Samples from 3Dfx Glide3x SDK work fine, but I can't find real games that use the new clipped coordinate system. Hitman Code 47 with Glide3x renderer employs Glide3x clipped coordinate system but it also requires 2 TMUs, so it does not work with OpenGlide underlying emulation. Both MESA 3Dfx GL and 3Dfx OpenGL ICD do not use clipped coordinate (though I found that OpenGL actually favors clipped coordinate system).
Games that work near perfect
- Turok 2 (Glide3x)
- Arabian Nights (Glide3x)
- GLQuake/Quake2/Quake3 (3Dfx OpenGL ICD 508 / MESA 3DfxGL 6.4.2)
- NFS3 Hot Pursuit w/ Glide3x Voodoo2a.dll.
- Serious Sam TFE w/ minor texture discoloring artifacts (3Dfx OpenGL ICD 508). No depth buffer effects as OpenGlide does not support locking depth buffer.
- Homeworld - slowed to 1 FPS when bringing up in-game menu with 3Dfx OpenGL ICD shipped on CD (version 439)
- Diablo II - ugly graphics artifacts on missing transparency.
- NFS Porche 2000 - missing rendering on game menu.