Reply 20 of 20, by 2mg
Dege wrote on Yesterday, 17:28:It's needed for DX11 as well, independent on the backend API.
My playthru before this post was done with Best API, afaik it defaulted to DX11 when I measured stuff with RTSS, but I don't remember using 16BitDepthBuffer setting.
Maybe I just forgot I enabled it tho...
Dege wrote on Yesterday, 17:28:Well, the rendering in dgVoodoo is a 2-phase process: […]
Well, the rendering in dgVoodoo is a 2-phase process:
- The first is producing the game output image internally through Glide or DX, this involves rendering at a forced resolution at Glide/DX level.
- The second is the general Presenter that maps the game output image (whatever it is) to the screen according to the scaling mode.
[Glide/DX game rendering at forced resolution] -> game-output image -> [Presenter mapping the image to the screen according to the scaling mode]
...
Btw, see the Quick Guide, there is an explanation with a figure for this: https://dege.fw.hu/dgVoodoo2/QuickGuide/
I'm rather familiar with all of this since I've used dgVoodoo for quite some time, and across many games and settings (so thank you Dege, you deserve the praise).
It's more that there are 999999 old games with 99999 iffy behaviors, and dgVoodoo is also getting patches, so there might be a curveball every now and then.
Then again, maybe I'm the curveball this time 😁
Except what 'Max' meant in exact X*Y, that's a new one to me.
Dege wrote on Yesterday, 17:28:As far as I remember the DX verison of the game is purely software rendered.
So, you force the resolution to whatever with no avail, only the game rendered 800x600 image will be stretched to the image with the size of the resolution you forced (e.g. 1440x1080) (first phase) and that will count as the game output going to the screen according to the scaling mode (second phase). No actual 3D rendering takes place.
But if it's DirectX, why is it software rendered?
I mean sure, you need an API to display things but is that all that DX means to this game?
BTW this game has a DOS only version, and a Windows version (where Glide is also included), sounds just a bit strange for a 1997/1998 Windows game to just use a software renderer in DX mode, well at least above 640x480 that is, by that time I'd expect software rendering to already be either an option or a fallback, not the default nor the only kind of renderer...
OTOH why isn't dgVoodoo capable of changing resolutions of software rendered games?
This game even has multiple resolutions with software renderer, and software rendering afaik is also 3D rendering, no?
Dege wrote on Yesterday, 17:28:Yes, the game asks for a 4:3 resolution (640x480 or 800x600). If your desktop resolution is 1920x1080 then the render resolution will be 1440x1080 as I mentioned.
But you can use the _dbg versions of the dlls: the debug log contains information about what resolution the game asked for and what is the actual rendering resolution.
Even a warning is there if the aspect ratio of the two are different.
I'll take a peek when I have some time.
That's in dgVoodoo v2.87.5 (spec release with Debug Layer) download?
PS: what's the tldr version of dgVoodoo WinMM OS uptime fixer?
Dege wrote on Yesterday, 17:28:dgVoodoo does not support FOV extending (wouldn't even work with Glide games). That's a different matter.
Sure, but many fixers/wrappers/patches that offer widescreen resolutions often have adjusted/adjustable FoV (sometimes games themselves have it via their config), that's why it crossed my mind that maybe it's stretched due to lower res 4:3 FoV changed (wrongly) in relation to a 16:9 higher resolution, as that is sometimes the case, not related to dgVoodoo directly.
AFAIK that's the worst case, middle case is that FoV stays the same but view extends, and best case is if FoV is adjusted/adjustable, but again, it was just speculation and not really dgVoodoo related, but for game itself.
Dege wrote on Yesterday, 17:28:I think it is only saved when "Enumerate refresh rates" is enabled.
A popup/info for this would be nice 😉
Dege wrote on Yesterday, 17:28:Glide always sets not only the resolution but the refresh rate as well when initializing the graphics system. Games usually ask for 640x480 at 60Hz. And dgVoodoo respects whatever refresh rate the game is asking for (or the closest supported one).
1. Seems only enumerated (or custom res + Enumerate) resolutions will ignore 60Hz request in Exclusive Fullscreen AND Fullscreen Fake?
2. Still doesn't explain why Fullscreen Fake changes the refresh rate, it's a window, I dunno how a windowed app can do that?
*Reminder that I still don't get the refresh rate change with Fullscreen Fake.
Dege wrote on Yesterday, 17:28:2mg wrote on 2026-10-11, 04:35:3b. "Enumerate refresh rates" actually works as expected, tho it reports 239 as max refresh rate - I did try 1920x1080, 120 in my testing related to 3 and 3a and it didn't work, so it's not just a "you put in an impossible refresh rate".
This one should work however. It would worth to look into the debug log.
I did use "1920x1080, 120" and ""1920x1080, 100" just as a random test, point is I tried this to avoid a potential "you have 239, not 240 you dummy" trap when I tried "1920x1080, 240" - but all of this was before enabling Enumerate refresh rate, so that's why it didn't work.
I see that with Enumerate refresh rate has 2 quirks:
1. The resolution you enter is persistent in input box, but doesn't get written in the list.
2. I just tried Fullscren with "1920x1080, 180" which is under 240Hz of my display so it's capable of that, however it falls down to 144Hz, as this is an enumerated setting while 180 isn't, so I dunno if it's simply my display/GPU/driver being uncooperative or dgVoodoo being a bit peculiar.
Dege wrote on Yesterday, 17:28:I don't know how G-sync affects this all. Did you tried it without that? And are you using some overlay sw to have the actual frame rate displayed?
You can also try GeneralExt\FPSLimit to get dgVoodoo to limit the FPS on its own instead of delegating it to the DX runtime/video driver.
G-sync (in any windowed form) isn't enabled in DX11 due to it apparently using older Present modes, aside from also G-sync for windowed apps also being a bit of a hack (and it needs to be enabled in GPU driver, which it is in my case). DX12 should automatically use newer Present modes.
This is according to vlad54rus that wrote about it in this thread.
I used GeneralExt FPS limit anyway at 120, dunno if everything is 1:1 compared to running the game at 60FPS, but I finished it and had no problems.
Had to use it, at 240FPS the game is like 3x sped up.
My OSD is MSI Afterburner (RTSS), tho I didn't disable NVidia's overlay.
Could you also address the part where game sometimes starts in an invisible window, I wrote about it too.
Worst thing is that it's hard to replicate, and it seems it toggles when you play with dgVoodoo a bit, ala changing resolutions, Fullscreen vs Fake and so on, but when it happens it happens exactly as I wrote it - an invisible (perhaps it's outside of screen, or 1x1 pixel sized) window with music and you have to press Space ASAP otherwise it will crash.