Legacy Direct 3D Frame Rate Limiter
i’ve been quietly captured by some nostalgia this past year.
GPUs even old ones are now really excellent.
For example playing Star Wars: Shadows of the Empire on an old NVIDIA
Quadro FX 1000 (itself an under-clocked version of the Geforce FX 5800)
is just impossible, even with VSYNC @60FPS.
even the damn intro audio to missions ends early!
normally, on a modern computer, its easy to set a frame cap
within either the NVIDIA Profile Inspector or
AMD’s excellent Catalyst panel.
however, Windows 98 SE drivers have no such features,
to fix this, I decided to amend Direct X wrapper library
to support preventing Direct 3D’s ::EndScene function
(upto DX7) from returning earlier than 33.3 ms:
https://github.com/slartibardfast/dxfpscap/releases/tag/v1.0-release.20200719
the wrapper on win32 systems hooks though ddraw.dll
in the path of the game to be capped at @30fps.
Windows 9x you’ll have to hex edit the game exe to replace
DDRAW.dll references with 30CAP.dll as it always loads the
C:\windows\system32\ddraw.dll
if anyone knows how to override the linker in Windows 9x
properly please do leave a comment or drop me an email!