News | Forum | People | FAQ | Links | Search | Register | Log in
Fixing Fitzquake On AMD K6 And Voodoo3
I have a vintage system with an AMD K6 550 MHz and a Voodoo3 3000. I had been using GLQuake but wanted to find a source port that will run on Windows 98 and has nicer lighting and Fitzquake seems to fit the bill.

In order to get the best performance though, I need to use the MiniGL 1.47 drivers from http://falconfly.3dfx.pl/minigl.htm. I have done some benchmarking and using the OpenGL ICD instead of the 3DNow optimized MiniGL loses about 30 fps. Full results are here: https://docs.google.com/spreadsheets/d/1Rwe-TVVloz75z2JPIs_ZKFzBw_TMqYJLXmcQv_Q6mmQ/edit?gid=0#gid=0

I found that Fitzquake 0.65 runs pretty well with the MiniGL driver, but 0.70 is loading the wrong textures and it renders the menu and console unreadable and the game only quasi-playable. I believe this is the "psychedelic acid effects" referred to here: https://celephais.net/board/view_thread.php?id=4736&start=57&end=57#57. I'll post some pictures in a follow-up reply.

I did some digging in the code and found that the culprit is likely the new texture manager that frees textures using glDeleteTextures. I disassembled the MiniGL DLL in Ghidra and confirmed that glDeleteTextures is just a stub that immediately returns without doing anything.

I'd really like to get newer versions of Fitzquake working on this system so I can get the other features added in them. I did manage to get Fitzquake compiling on the system using VC++ 6.0, and I tried commenting out the bodies of TexMgr_FreeTexture and TexMgr_FreeTextures, thinking that if the quake code just ignores those calls the way the MiniGL driver does, everything would work out. Unfortunately this didn't make any difference and everything looks the same as before.

I'm a complete noob when it comes to the Quake codebase so I'm looking for some advice about the least-invasive way I can fix this.
Screenshots 
Here are the screenshots: https://imgur.com/a/VZG5LJ6 
Screenshots 
Here are the screenshots: https://imgur.com/a/VZG5LJ6 
Reproduction On Modern Machines 
This is reproducible on a modern machine if you install nGlide from https://www.zeus-software.com/downloads/nglide and put the MiniGL 1.47 opengl32.dll in the same directory as FitzQuake. 
 
No, you _shall not_ be able to make it work with 3dfx minigl: it is as you identified yourself, glGenTextures & co are stubs in there, and there is no way around it.

If you insist on using minigl variants, maybe, just _maybe_, you may have luck with WickedGL: I can't remember whether its glGenTextures & co work properly, though. 
 
Well 0.65 works with MiniGL so I don't think it's impossible, it'll just take some work. I could just rip out the texture management stuff and put back the old texture management that's in 0.65, but if someone has a less invasive suggestion, I would go with that.

I haven't tried WickedGL but MesaFX was even slower than the OpenGL ICD from the last Voodoo3 drivers (less than 30 fps), so I need something optimized for 3dnow.

I'm not "insisting" just for the hell of it, I shared benchmarks that show why I want to do this. 
GlGenTexture 
OK, I see what you were saying about glGenTexture... it appears that it replaces what was previously done with glTexImage2D and other calls in GL_Upload32 and GL_Upload8.

It does appear too much changed with texture handling to easily revert to the old way of doing things in 0.70. Maybe a better approach is to try to fix the issues I have with 0.65 and backport specific lighting fixes from newer versions.

The main issue I'm trying to fix in 0.65 is shown in these screenshots: https://imgur.com/a/iUi0gH6. Textures are missing from the torch light and certain polys in Chthon. This is the only place I have noticed it so far but there may be others. Setting r_fullbright 1 causes the issue to go away, but then obviously other lighting is wrong. 
Link 
Correct link without the dot: https://imgur.com/a/iUi0gH6 
Video 
I made a video showing the promise and the problems of FitzQuake running on this hardware: https://www.youtube.com/watch?v=2lsk9RfEnY0 
WickedGL 
szo: Thanks for the WickedGL recommendation.

WickedGL gives up some performance vs the 3dnow-optimized MiniGL but the visual improvement is worth it depending on what you want to do.

tl;dr for the K6 and Voodoo3:

- if you want the best performance but lower quality, run the MiniGL 1.47 + GLQuake 0.97.

- If you want better quality, run WickedGL + FitzQuake 0.65 thru 0.85. Newer versions of Fitzquake get progressively slower, but all appear to render correctly using WickedGL.

Other findings:

- WickedGL fixes the issues with torches and Chthon textures on FitzQuake 0.65 and later. It should be noted these issues also occur the full 3dfx OpenGL from the last official 1.07 drivers.

- Also, Fitzquake versions 0.75 and higher fail to render playably at all on both the MiniGL and the 3dfx OpenGL driver. I also found the likely

Some timedemo demo1 benchmarks using default settings at 640x480:

FitzQuake 0.65 numbers on different drivers:

- MiniGL 1.47 96fps
- 3dfx ICD 61fps
- WickedGL 75fps

WickedGL numbers on different Fitzquake versions:

- 0.65 75fps
- 0.70 69fps
- 0.85 52fps

I'll run these benchmarks more rigorously later and add them to my spreadsheet. 
 
If you ever get the time, can you please try with these:
https://uhexen2.sourceforge.net/tmp/mesafx.zip

The zip has dlls of two fxmesa versions, one based on 3.4.x and one
based on 6.2.x, both require glide3x.dll. They both have 3dnow and
SSE options built in.

Note though, it has been some time that I ever tried these on windows,
they may not work at all, they may crash, or they may work just fine..
I'd like to hear your results in any case.. 
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.