First post, by kjliew
I found that Extreme Assault 3Dfx is quite different between the demo and the retailed version. In fact, I think a lot of us were working to get the demo working with Glide wrappers but indeed the demo version looked to be broken version from the traces of QEMU 3Dfx Glide pass-through.
3Dfx Demo Version E 1.1.1
glidept: grSstWinOpen called, buf 0 aux 2
window 640x480
Retailed CD Version E 1.1.0
glidept: grSstWinOpen called, buf 0 aux 2
window 640x480
Retailed CD patched E 1.2.0 til 1.2.2
glidept: grSstWinOpen called, buf 3 aux 0
window 640x480
Retailed CD patched E 1.2.3
glidept: grSstWinOpen called, buf 2 aux 0
window 640x480
So the demo and the un-patched retailed version are obviously wrong in the invoking of Glide API as the 3Dfx Glide 2.4 specification clearly mentions in grSstWinOpen() buf must be 2 or 3, while aux must be 0 or 1. Both buf and aux are taking invalid arguments. It was funny that since most of us typically started out with the demo and we somehow we made this work. DgVoodoo2 works despite taking invalid arguments. Performance is normal, on my system around 25~28FPS flying around in the "Network Play->Training->City".
Once patched, this includes version 1.2.0, 1.2.1 and 1.2.2, grSstWinOpen() now takes sane arguments, but it breaks dgVoodoo2 rendering. Objects (buildings, roads, items) are missing. The game is not playable with dgVoodoo2. On the other hand, OpenGlide now works. Objects are rendered correctly, performance is normal (25~28FPS) and game is playable.
The final patched version 1.2.3, both dgVoodoo2 and OpenGlide render the objects correctly. Unfortunately, dgVoodoo2 takes a big hit on performance with correct HUD transparency. Flying around in the same "Network Play->Training->City" recorded ~9 FPS. This makes it slower than software rendering, and software rendering does render HUD transparency. OpenGlide seemed unaffected and performance was normal but it did not render the HUD transparency.
So in practice, dgVoodoo2 works with the demo, the unpatched and the final version 1.2.3 but it is too slow to be playable with the final version. OpenGlide works with any versions from 1.2.0 and above, but it did not work with the demo.