VOGONS


The Changeling 3dfx Voodoo 5 5500

Topic actions

Reply 140 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

More rambling...

My two-pass Trilinear didnt go so well, it has some random black textures appearing on surfaces. Performance doing multitexturing for base texture + lightmaps, then two passes for trilinear was also lower than single-pass trilinear and no multitexturing (suprised)... So I decided to abandon it.

The issue with having Trilinear, so blending two mips of a texture togethere in one cycle, having only 2 tmus.
Is that you have either multitexturing(combining texture + lightmap in a single pass) OR do Trilinear in single pass. To do both you would need 4 TMUs.

And you cant dinamicly say... Oh game wants Trilinear, np, we disable multitexturing so we have TMUs ready...Because thats not the first thing that a game queries, so you cant do it on the fly. You have to "report" no multitexturing, for the game to switch to multy-pass rendering, and then you can do your trilinear...

So the way I currently have it, there is a toggle!!
By default, it will be the same behavior as now, if Trilinear is requested, fallback to Bilinear filtering.
Or you can Enable Trilinear.

What that does is it reports no multitexturing support, so game switches to multy-pass texturing. And you can enable Trilinear. You still have to set Trilinear (GL_LINEAR_MIPMAP_LINEAR) in-game.
Then you have your two TMUs free to handle blending.
But you have to toggle it back to Disabled if you gonna use Bilinear, since this will keep multitexturing disabled, no matter the filtering.
Thats the best I could figure out how to implement it 😀

Quick performance numbers

Quake 3 1280x1024
Bilinear: 71.6fps
Trilinear toggled in driver(no multi), but not enabled in-game: 55.2fps
Trilinear enabled: 49.3fps

Sin 1280x960
Bilinear: 85.8fps
Trilinear toggled: 74.1fps
Trilinear enabled: 66.3fps

If anyone wants to play around with it, Ive updated the files on github and you can download clone/zip of latest files.

Heres a random picture that happened when I was playing with it

The attachment IMG_20260716_194303.jpg is no longer available

Reply 141 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

3dfx Wide driver v1.4

The attachment IMG_20260726_175645.jpg is no longer available

Voodoo4/5 Wide Driver
Version 1.4

**************************************************************************************************************************************
Voodoo Series Driver Kit: 1.0
Voodoo Series Win9x 2D/3D Display Drivers: 4.13.01.0028
Glide 2.X Driver: 1.00.01.0106 (glide2->glide3 wrapper)
Glide 3.X Driver: 3.10.00.40407 (Glide sourceForge project)
OpenGL Driver Version: MesaFx 7.4.4.0 (v0.75) (OpenGL ICD)
**************************************************************************************************************************************

Release Notes
=======================================================================
Version 1.4
- Added 1960x840, 2096x900, 2304x960, 2560x1080 (21:9) resolutions.
- Replaced the display timing for 1920x1080 that now works fine with vga and dvi/hdmi.
- Fixed Alt-tab crashing in OpenGL games
- Trilinear texture filtering enabled (with a toggle). Still has to be set in-game.
- Renamed MesaFx texts in 3dfxTools to Opengl, to avoid confusion.
- MiniVdd driver minor fix that enables higher resolutions.
- One Glide fix, that fixes Ignition with 3dfx patch ver3 locking-up after language select.
- Fixed ScreenCapture not working, added DAC gama capture as was in koolsmokys version.
F12 is now set as the Screen capture key by default.
- Previous SOF corrupted textures fix redone in a more propper way. No more texture corruption.

Whats new?

- Trilinear can now be enabled!

The attachment Trilinear.png is no longer available

The toggle disables multitexturing (well atleast hides its support from the game), so the game switches to multy-pass rendering. This allows us to do Trilinear texture filtering in single-pass.
Its a hardware limitation having only 2 Texture Mapping Units.

Still has to be enabled in-game either in games settings or setting texture filtering to GL_LINEAR_MIPMAP_LINEAR.
Remember to disable it back, if not using Trilinear, since multitexturing stays disabled with this feature enabled, for all filtering modes in OpenGL!

The attachment shot0000_Trilinear.png is no longer available

- Alt-tab switching from a game wont crash in OpenGL games anymore.
This also fixes half-life, when returning to menu (lets say, to save a game) and then crashing when trying to resume the game.

- Sdz sent me one minivdd "addition/fix", and that enabled the use of higher resolutions. Some existing (og 3dfx) are now working and Ive added some more 21:9.
2560x1080 has some issues, when combining it with 32bit. But you know... Its a Voodoo 5 running on 2560x1080! Top Image is Half-life running at this resolution!
1920x1080 should also work fine now with both vga and dvi/hdmi.

- Previous SOF texture corruption fix is now redone, to a propper way, while it was rare before that a texture got corrupted, now its completly resolved.
- I noticed screen capture wasnt working correctly, it outputed only transparency, this is now fixed and I ported reading the Gamma from DAC from Koolsmokys glide version.
- There was a bug in glide, that caused the game Ignition to hang, now resolved.

You can get the driver here
3dfx Wide driver v1.4

Github Links
3dfx_Wide_driver_98
MesaFx-7.4.4
Glide sourceforge

Reply 142 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

A desire to play older games that are in a 4:3 aspect ratio, on my 21:9 monitor, with the Voodoo 5, is how this journey started.

All glide games only have a list (if any) of 4:3 resolutions to pick from. Direct3d reads whats avaliable in the OS and OpenGl works similar to glide, but patches for games are more common, or they have an ability to override it with a game cvar or .cfg parameter.
The way the Wide driver changes this (in the Glide API) is by replacing the resolution requested by the game, with the one selected in the driver's settings.

Unreal engine games, are fine with this, they request whatever they request, its checked if its valid (in this case what we provided) and prepare the rendering perspective with this - our - resolution. Success!.
But this applies only to unreal engine games and while I havent tested those few glide3 games out there, Im guessing they would work the same.

But the majority of glide games, have there own list of supported resolutions and decision-making how to render baked in the game itself, or for statically-linked games glide api already in the game.
So using the Wide drivers override, will still create a selected-size framebuffer, but the game will only render in its own resolution.

This looks like this, 2560x1080 framebuffer and in the top-left corner a 640x480 rendering of the game.

The attachment Gta2_1.jpg is no longer available

This is something I accepted as a limitation, I dont have the knowledge to correct this, would require disassembling game files, reading hex/asm, finding where the game does this, changing it, everything can go wrong, ui scaling will be done differently that 3d, fov some games mix fake 3d with 2d, fov changes or moving the camera distance and so on...
And on the plus side, the collection of games in all 3 apis, that can now do this, is already so big, Im not sure I will have the time to play everything I want to play in my lifetime.

But there are, not many, but some games I would really like to see this working and playing them. Gta 1, gta 2, Turok, Tomb raider 1, would be on the list.

So... why go to sleep if you can converse with LLM! While I definitely share some of the llm-hate, but it really is amazing what you can do with it.
The session was really something out of a fantasy sci-fi novel, lots of guessing, reading game files, dumping memory, changing games memory right from the driver, calculating new transforms...

And, well today (who needs sleep anyway), I got Gta 2 somewhat working, replacing the resolution, extending the viewport and moving the camera. UI is still in 4:3 place, but...

The attachment Gta2_2.jpg is no longer available

Just amazing!!! On 2560x1080!!!! And the patch is done in the driver, in glide2x wrapper that Im using. This, for me, breaks the mental barrier of "ah so it can be done".

The attachment Gta2_3.jpg is no longer available

Reply 143 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Well.. it works 😀

Gta2 is fine, not touching the main menu, but in-game, unless theres more ui text I missed, looks good.

The attachment gta2.jpeg is no longer available

Turok was fairly easy now that I have a bit of a template. Still need to fix the ui part a bit.

The attachment turok.jpeg is no longer available

Dos-Glide games would take a bit more work (not that this was peanuts) since it reads the display timings either from glide2x.ovl or cards bios. Would need to pre-prepare the environment. Changing just the resolution is fairly simple. Additionally would need to calculate all the extra resolutions, which require lots of guesswork and testing, maybe for some other time.

I will try a few more games, so I have a bit more example code, for the future, if I ever need it 😀

Reply 144 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Ignition

Spent most of the time fixing the 2d UI elements flickering over time, nothing to do with the aspect patching.
Didnt find a propper solution, just that it does that if x86/asm optimizations are used for the glide driver, and it works if only C path is used, so this game will have an exception and only use C path.

The game still crashes to desktop after completing a race and trying to start another, atleast on my system. Cant fixem all.

The attachment glide_20260809_021741.png is no longer available

MDK

This one will be interesting 😀

The attachment glide_20260809_021629.png is no longer available

Reply 145 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Well Ignition works fine with 3dfx patch v2! Need to redo the patch for this version.

Sometimes the world just looks so big...

The attachment glide_20260809_151402.png is no longer available

Reply 146 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Still a long way to go, but its almost MDK HD remastered-ish.

Think heres 2304x960.

The attachment IMG_20260810_182324.jpg is no longer available

Reply 147 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

This doesnt really fall into the Voodoo5 context, but...

Since Im doing game patching, one of the games I wanted was Alien vs Predator.
In the wild, there are sources, published by Rebellion, so...
There is the "AvP classic" release, but doesnt work under win98, also avpx. So I just patched the Gold version from the sources.

Screen scaling and there were some crashes, jumping between different campaigns, thats also fixed. Menues and videos are still 640x480 so will be stretched.

Im just gonna upload it and maybe someone interested finds it 😀. Theres an optional .ini file, put it next to the .exe and you can scale HUD elements.

Aliens vs Predator gold - (ultra)widescreen patch

The attachment ScreenShot7_final.png is no longer available
The attachment avp_gold_wide.zip is no longer available

Reply 148 of 158, by Ascended

User metadata
Rank Newbie
Rank
Newbie
Dolenc wrote on 2026-08-17, 17:35:
This doesnt really fall into the Voodoo5 context, but... […]
Show full quote

This doesnt really fall into the Voodoo5 context, but...

Since Im doing game patching, one of the games I wanted was Alien vs Predator.
In the wild, there are sources, published by Rebellion, so...
There is the "AvP classic" release, but doesnt work under win98, also avpx. So I just patched the Gold version from the sources.

Screen scaling and there were some crashes, jumping between different campaigns, thats also fixed. Menues and videos are still 640x480 so will be stretched.

Im just gonna upload it and maybe someone interested finds it 😀. Theres an optional .ini file, put it next to the .exe and you can scale HUD elements.

Aliens vs Predator gold - (ultra)widescreen patch

The attachment ScreenShot7_final.png is no longer available
The attachment avp_gold_wide.zip is no longer available

Hi Dolenc,

First of all, thank you so much for your incredible work on the 3dfx Wide Driver! It is absolutely mind-blowing to see what you've achieved with widescreen overrides and custom game-specific patches.

I am currently running your v1.4 driver on my Voodoo 6000 (PCI) rig under Windows 98. I am trying to get Diablo 2: Lord of Destruction (an absolute epic of a dungeon crawler!) working cleanly in widescreen. When I force 1920x1080 via your driver settings, the game initializes the widescreen framebuffer successfully, but the game world itself doesn't render past the hardcoded 800x600 frame. It just leaves a border of black, unrendered tiles surrounding the active 800x600 gameplay area in the center. It behaves exactly like the limitation you encountered with GTA2 initially, where it created the widescreen canvas but restricted the engine's active drawing area to the top-left or center.

Since you've had such amazing success tackling the viewport transforms, memory tracking, and camera distances for GTA2 and Turok inside the glide2x/glide3x wrapper architecture, would you ever consider looking into a Diablo 2 patch for the driver? Given how legendary D2 is and having a patch built-in widescreen solution for D2 would be an absolute dream come true for the community.

Thanks again for your incredible work.

Reply 149 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

I can take a look, without any promise (not now, but in time). 2d games, with mouse and an inventory system could be a pain in the ass 😀.
Which version(patch) exacly?

Reply 150 of 158, by Ascended

User metadata
Rank Newbie
Rank
Newbie
Dolenc wrote on 2026-08-18, 07:37:

I can take a look, without any promise (not now, but in time). 2d games, with mouse and an inventory system could be a pain in the ass 😀.
Which version(patch) exacly?

Awesome,

Anything you can manage to achieve, whenever you find the time would be highly appreciated by the community!

To answer your question: I am running the Lord of Destruction expansion v1.13d patch on Windows 98, I believe this is the last functioning patch that works for win98 SE. As for the region CD/ISO the official LoD 1.13d patch updates the executable, so I don't think region shouldn't matter? Unless there's some sort of game driver mismatch from region to region in the install. which is possible.

Take all the time you need, and thanks again for considering it!

Reply 151 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Edges werent agreeing...

The attachment glide_20260818_203349_cull.png is no longer available

But now they do...

The attachment glide_20260820_211230.png is no longer available

Reply 152 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Diablo 2 started

First time getting it to run/not crash

The attachment glide_20260823_135945.png is no longer available

A bit of a fixup

The attachment glide_20260823_141716.png is no longer available

Reply 153 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

So... Since the game is pre-rendered sprites, they will scale with screen resolution, more pixels smaller the image, as seen in my previos 2 screenshots at 1920x800, raising it higher 1920x1080 would make it even smaller.... This, besides really looking small, also caused level being loaded in on the edges visible. Not really a sensible way to fix that, would probably also mess with the games AI.

Now I could just say, eh just use the closest to 800x600 resolution (1280x720 on 16:9 or 1680x720 on 21:9), but then... How about we just render the game to x600 height and set the width to whatever (1064×600 for 16:9, 1440×600 for 21:9) and let the gpu upscale it??? Kinda looks better. Might have to disable SLI for this to work.

The attachment glide_20260824_013118.png is no longer available

Reply 154 of 158, by Radeux

User metadata
Rank Newbie
Rank
Newbie

Heya Dolenc, it's me the guy who is remaking Doom3 for Voodoo 5 and playing with multithreaded MesaFX. Its going really really well, your newest mesafx 7442 or 7.5 is a screamer! Almost got a constant 20fps+ with full shadows enabled and even self shadowing on models. It looks fantastic and a lot of scenes are hitting 40-60fps. I'd say I have 70% of the game code optimized for fixed function pipelines. My highly tuned GLIDE/openGL launcher is pages and pages long, tight env var control, huge gains.

I was wondering if you had any knowledge on two sided stencil depth sorting and/or depth bounds testing. Two sided stencil seems to function but it hits 0 on the depth sort and draws over the top of everything. I will try to fix it in the Doom3 cpp files at some point (try GL KEEP).

Also opengl depth bounds testing doesnt seem to be routed to GLIDE depth bounds testing. I was going to attempt a recompile of MesaFX 7.5 with depth bounds testing tweaks and some HSR madness (I noticed you tried a little Quake 3 HSR and I will try to run HSR on Doom3 again, the last time I almost got usable results, only a tiny bit of missing surfaces, and I've learned a lot since 2010.)

I've only had 1 day off this month, totally pinned down by three jobs but I will be doing dev work ASAP. Thanks for the continued development on MesaFX, you are a true Witchdoctor!

Reply 155 of 158, by Radeux

User metadata
Rank Newbie
Rank
Newbie

I will also try some Diablo II with your GLIDE3 on AmigaMerlin 3.1 r11 in XP Integral on 16gb PAE, thats the environment I've been running your work in, works flawlessly. Oh and I'm just making contact with the author of WineD3D, he seems interested int making a custom tailored version of WineD3D just for MesaFX. That would give us a drive base where we can force all D3D titles onto MesaFX and thus GLIDE. I did some heavy experimentation back in the day with Oblivion and 3DMark 2001 involving WineD3D, ThunderGL, and MesaFX 6.3.0.1. Yes I got Oblivion to boot in OpengGL on Voodoo 5 (missing surfaces but great looking models) and 3dMark 01 was screaming fast in on MesaFX.

Magic People, Voodoo People! The sage continues in 2026!

Reply 156 of 158, by Radeux

User metadata
Rank Newbie
Rank
Newbie

Never mind the depth bounds testing bit, did some more reading, not compatible.

Reply 157 of 158, by Ascended

User metadata
Rank Newbie
Rank
Newbie
Dolenc wrote on Yesterday, 23:43:

So... Since the game is pre-rendered sprites, they will scale with screen resolution, more pixels smaller the image, as seen in my previos 2 screenshots at 1920x800, raising it higher 1920x1080 would make it even smaller.... This, besides really looking small, also caused level being loaded in on the edges visible. Not really a sensible way to fix that, would probably also mess with the games AI.

Now I could just say, eh just use the closest to 800x600 resolution (1280x720 on 16:9 or 1680x720 on 21:9), but then... How about we just render the game to x600 height and set the width to whatever (1064×600 for 16:9, 1440×600 for 21:9) and let the gpu upscale it??? Kinda looks better. Might have to disable SLI for this to work.

The attachment glide_20260824_013118.png is no longer available

Such epic work Dolenc,

well done, and Bravo.

Reply 158 of 158, by Dolenc

User metadata
Rank Member
Rank
Member

Radeux, nice work on Doom! Cant really help you much with stencil explanation, didnt really dive much into it, theres a lot of stuff I still dont understand, learning as I go 😀. As for "HSR", I did a little experiment yes, Q3 engine games always sort from front to back, so this can be used to tweak a bit more. And I did it incorrectly, and that worked, gave an exact 1.5fps jump! (amazin I know) in Q3, but caused some issues in other same-engine-games, so abandon it, I feel like there are other ways to get a bit more fps out of it.

This version of glide, atleast on my system has some issues on WinXP, could just be my setup. It causes surfaces to shimmer. I found one, a bit older, but same version of this glide from sourceforge glide project, that worked fine, so would have to go through their commits to see where this started. You can try it if it works for you, but I think it has an issue.