VOGONS

Common searches


First post, by davidmorom

User metadata
Rank Newbie
Rank
Newbie

I want to share a way I found to run Pandemonium! in glide mode with Voodoo 3/Banshee and, maybe, Voodoo 4 and 5.

All the credit must go to kjliew, who a couple of years ago, as part of his qemu-3dfx project, wrote a glide.dll to glide2x.dll wrapper (https://github.com/kjliew/qemu-xtra/). By using this wrapper, is possible to launch the game with a Voodoo 3 card.

I made some modifications to the wrapper to optimize it for this game:
- Simplified the LFB emulation code to reduce the slowdown of the title screen. This doesn't seem to affect the rest of the game, as it seems that LFB access is only used in the title screen and FMV videos.
- Implemented a 30 fps framerate limiter, to avoid the severe throttling issues this game has on anything faster than 200MHz.
- Modified the way the glide window is handled, to be able to access the menu options bar when pausing the game. This has, however, the negative effect of corrupting some textures until a new level is loaded, because some parts of the video memory are overwritten by Windows when accessing the configuration dialogs. This doesn't happen on a Voodoo 1 because it has its own TMU memory, separated from the main system video memory. This is hard to fix, it would require to modify the game logic to reupload textures after exiting pause mode.

I compiled it for i586, so any Pentium should be capable of running it. Just place this glide.dll file in the game installation folder, and run pandy3.exe.

I tested it on AMD K6-2 400MHz, with a Voodoo 3 and Voodoo Banshee, on Windows 95 and with the latest 3dfx reference drivers. I also tested on PCem with similar hardware configuration, and it works pretty nicely in all cases.

If someone is interested in trying it, it will be nice to have more feedback, specially with Voodoo 4 and 5, as I don't have this models to test.

EDIT: updated the attachment to include source code.

Attachments

  • Filename
    glide.zip
    File size
    3.67 MiB
    Downloads
    47 downloads
    File license
    Public domain
Last edited by davidmorom on 2023-09-23, 14:01. Edited 3 times in total.

Reply 1 of 3, by Gmlb256

User metadata
Rank l33t
Rank
l33t

Interesting, this could potentially fix compatibility issues on Windows games that needs GLIDE.DLL/SST1INIT.DLL with later Voodoo cards. Note that the license of the wrapper is LGPL, meaning that the source code with the modifications must be available since it is a derivative work.

BTW, on real hardware, there is another way to limit the frame rate to half of the screen refresh rate by setting the FX_GLIDE_SWAPINTERVAL environment variable to 2. For Pandemonium! it works best at 60 Hz.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 2 of 3, by vetz

User metadata
Rank l33t
Rank
l33t

Very interesting, thanks for sharing! It would be interesting to see if this could also work for other early glide games, like Mechwarrior 2 on the Voodoo3/4/5.

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 3 of 3, by davidmorom

User metadata
Rank Newbie
Rank
Newbie

For MechWarrior 2 it also works, but the simplifications I made to the LFB emulation code are game breaking, so the original unmodified code from kjliew must be used (I attach a build of the original code).

But there is an important consideration to have in mind, with this wrapper the performance on MechWarrior 2 is pretty bad. This game makes intense use of direct LFB writing to draw the HUD over the rendered imagen. As the LFB has to be emulated in system RAM (due to the differences of Voodoo 1 vs Voodoo 3), for every frame the wrapper has to copy the LFB to RAM, then the game does its things onto it, and finally, on buffer swap, the LFB is copied back to the video memory. This operations are very expensive, and even on a Pentium 2 at 400MHz the framerate is about 12-14 fps (I only tested it on PCem, not real hardware).

Attachments

  • Filename
    glide (original).zip
    File size
    7.37 KiB
    Downloads
    35 downloads
    File license
    Public domain