VOGONS

Common searches


Windows 98 DirectX Framerate Limiter

Topic actions

First post, by Oerg866

User metadata
Rank Newbie
Rank
Newbie

Hello,

I was wondering if there is something like a framerate limiter for Windows 98/DirectX <=7 based applications?

(more specifically, I want to slow down "Shadows of the Empire" to 30 fps)
.

Cheers
Eric

Reply 3 of 24, by SpeedySPCFan

User metadata
Rank Member
Rank
Member

If you have an Nvidia card, you can force 30FPS using the control panel with a vsync setting. You should be able to do the same with an ATI card.

Musician & music gear/game reviewer.

MIDI hardware: JD-990, SC-55, SC-880, SD-90, VL70-m, Motif ES, Trinity, TS-10, Proteus 2000, XK-6, E6400U

Reply 4 of 24, by Oerg866

User metadata
Rank Newbie
Rank
Newbie

All of that didn't work 🙁 60 is the lowest it'd go ...

But I did manage to play through the game now (who would have thought that you can *kill* the other speedbikes x) )

edit: also:

Harekiet wrote:

Just play the n64 version emulated with savestates to get passed the cheap deaths...

Top tip 10/10 would ask again 😵

BTW: I wonder why this game is so much more finicky / buggy / touchy wrt hardware and software (especially OS and DX version) than Jedi Knight which was basically developed side by side with SOTE...

Reply 5 of 24, by slartibardfast0

User metadata
Rank Newbie
Rank
Newbie

hi,

I've written a small amendment to a directx wrapper project to allow for capping of frame rates of any <= DirectX 7 3D games

I wrote it specifically for a play through of Star Wars Shadows of the Empire on an old Windows 98SE machine,
which has a rather overspec'd Geforce Quadro FX 1000.

check it out here:
https://github.com/slartibardfast/dxfpscap/re … elease.20200719

to use on Win2000+ simply extract to main game directory (not loaders etc) for example:
C:\Program Files\LucasArts\Shadows\SData (Shadows.EXE)

however on Windows 9x a hex editor must be used to "DDRAW.dll" references with "30cap.dll" in the main game exe
as for reasons unknown to me, the DLL search patch for DDRAW.dll seems to go straight to the system directory

Enjoy! & please let me know if you'd like any different frame caps built- 30 seems perfect for Shadows.exe and a good start.

Reply 6 of 24, by xcomcmdr

User metadata
Rank Oldbie
Rank
Oldbie

Oh nice, I've searched for such an utility for so long !

I know there is DXWND and RivaTuner, but a simple utility that does only FPS limiting for DX was so very missing.

I'l try it ASAP. Thank you so much !

First try : MechWarrior 3.

Reply 7 of 24, by slartibardfast0

User metadata
Rank Newbie
Rank
Newbie

thanks very much @xcomcmdr let me know if you need any different caps like 24, 40 or 60 fps or whatever suits best!

if it's useful I might make the rate a configurable & eventually add a hot-key to enable/disable the cap

i'm not all too familiar with MW3, but a fpscap_0 log file should be created in the running directory that lists some of the wrapped elements,
hopefully the correct path get hit but if not, please do say so, I could never get DXWND or RivaTuner to limit frame rates in Windows 9x,
so would really like to get this correct over time.

Reply 9 of 24, by Dictator

User metadata
Rank Newbie
Rank
Newbie
slartibardfast0 wrote on 2020-07-19, 17:45:
hi, […]
Show full quote

hi,

I've written a small amendment to a directx wrapper project to allow for capping of frame rates of any <= DirectX 7 3D games

I wrote it specifically for a play through of Star Wars Shadows of the Empire on an old Windows 98SE machine,
which has a rather overspec'd Geforce Quadro FX 1000.

check it out here:
https://github.com/slartibardfast/dxfpscap/re … elease.20200719

to use on Win2000+ simply extract to main game directory (not loaders etc) for example:
C:\Program Files\LucasArts\Shadows\SData (Shadows.EXE)

however on Windows 9x a hex editor must be used to "DDRAW.dll" references with "30cap.dll" in the main game exe
as for reasons unknown to me, the DLL search patch for DDRAW.dll seems to go straight to the system directory

Enjoy! & please let me know if you'd like any different frame caps built- 30 seems perfect for Shadows.exe and a good start.

I just wanted to say thanks for this - I just tried it out with Shadows of the Empire on Windows 98SE and it seems to work rather perfectly. It seems to have proper frame pacing as well at 30, which is not necessarily expected given the AGE of the APIs here. How exactly are you doing this so well?
Well done!

Reply 10 of 24, by slartibardfast0

User metadata
Rank Newbie
Rank
Newbie
Dictator wrote on 2021-11-15, 10:00:
slartibardfast0 wrote on 2020-07-19, 17:45:
hi, […]
Show full quote

hi,

I've written a small amendment to a directx wrapper project to allow for capping of frame rates of any <= DirectX 7 3D games

I wrote it specifically for a play through of Star Wars Shadows of the Empire on an old Windows 98SE machine,
which has a rather overspec'd Geforce Quadro FX 1000.

check it out here:
https://github.com/slartibardfast/dxfpscap/re … elease.20200719

to use on Win2000+ simply extract to main game directory (not loaders etc) for example:
C:\Program Files\LucasArts\Shadows\SData (Shadows.EXE)

however on Windows 9x a hex editor must be used to "DDRAW.dll" references with "30cap.dll" in the main game exe
as for reasons unknown to me, the DLL search patch for DDRAW.dll seems to go straight to the system directory

Enjoy! & please let me know if you'd like any different frame caps built- 30 seems perfect for Shadows.exe and a good start.

I just wanted to say thanks for this - I just tried it out with Shadows of the Empire on Windows 98SE and it seems to work rather perfectly. It seems to have proper frame pacing as well at 30, which is not necessarily expected given the AGE of the APIs here. How exactly are you doing this so well?
Well done!

thanks very much!

I hooked the frame presentation logic from a pre-existing direct3d/directdraw wrapper to
a custom delay function that ties to the precise timer that windows provides in QueryPerformanceCounter()
even windows 9x appears to use the pentium's time stamp counter under the hood,
which is more than enough accuracy for a 1-60 fps target!

I'm attempting to figure out a good generic approach (albeit in assembler fragments)
for patching ms-dos speed sensitive game loops over the christmas. but i've very little spare time!

Reply 11 of 24, by eddman

User metadata
Rank Newbie
Rank
Newbie

Superb work. It's so nice to see tools made for old machines and OSes.

slartibardfast0 wrote on 2021-12-23, 18:08:

even windows 9x appears to use the pentium's time stamp counter under the hood,
which is more than enough accuracy for a 1-60 fps target!

You mean a regular pentium? On the github page you mention using at least a pentium pro.

Reply 12 of 24, by KCompRoom2000

User metadata
Rank Oldbie
Rank
Oldbie

By any chance would the dxfpscap utility work with the PC version of Spiderman (2000) on Windows 9x? I remember that game had a bug where you couldn't get past the Scale the Girders level without using FRAPS or a similar utility to limit the frame rate to 30 fps, so I figured it'd be worth using dxfpscap with that game to make it playable.

Reply 13 of 24, by eddman

User metadata
Rank Newbie
Rank
Newbie
KCompRoom2000 wrote on 2022-02-19, 08:16:

By any chance would the dxfpscap utility work with the PC version of Spiderman (2000) on Windows 9x?

Why don't you try it yourself? It's very simple to do. If the game uses ddraw, then it might work.

Reply 14 of 24, by joeguy3121

User metadata
Rank Newbie
Rank
Newbie
slartibardfast0 wrote on 2020-07-19, 17:45:
hi, […]
Show full quote

hi,

I've written a small amendment to a directx wrapper project to allow for capping of frame rates of any <= DirectX 7 3D games

I wrote it specifically for a play through of Star Wars Shadows of the Empire on an old Windows 98SE machine,
which has a rather overspec'd Geforce Quadro FX 1000.

check it out here:
https://github.com/slartibardfast/dxfpscap/re … elease.20200719

to use on Win2000+ simply extract to main game directory (not loaders etc) for example:
C:\Program Files\LucasArts\Shadows\SData (Shadows.EXE)

however on Windows 9x a hex editor must be used to "DDRAW.dll" references with "30cap.dll" in the main game exe
as for reasons unknown to me, the DLL search patch for DDRAW.dll seems to go straight to the system directory

Enjoy! & please let me know if you'd like any different frame caps built- 30 seems perfect for Shadows.exe and a good start.

Could you explain more simple and not too complex on how to direct the exe file to the 30cap.dll?

This will come in handy on many Win 95 games that run too fast. 😁

Last edited by joeguy3121 on 2022-06-14, 08:50. Edited 2 times in total.

Reply 15 of 24, by joeguy3121

User metadata
Rank Newbie
Rank
Newbie
Dictator wrote on 2021-11-15, 10:00:
slartibardfast0 wrote on 2020-07-19, 17:45:
hi, […]
Show full quote

hi,

I've written a small amendment to a directx wrapper project to allow for capping of frame rates of any <= DirectX 7 3D games

I wrote it specifically for a play through of Star Wars Shadows of the Empire on an old Windows 98SE machine,
which has a rather overspec'd Geforce Quadro FX 1000.

check it out here:
https://github.com/slartibardfast/dxfpscap/re … elease.20200719

to use on Win2000+ simply extract to main game directory (not loaders etc) for example:
C:\Program Files\LucasArts\Shadows\SData (Shadows.EXE)

however on Windows 9x a hex editor must be used to "DDRAW.dll" references with "30cap.dll" in the main game exe
as for reasons unknown to me, the DLL search patch for DDRAW.dll seems to go straight to the system directory

Enjoy! & please let me know if you'd like any different frame caps built- 30 seems perfect for Shadows.exe and a good start.

I just wanted to say thanks for this - I just tried it out with Shadows of the Empire on Windows 98SE and it seems to work rather perfectly. It seems to have proper frame pacing as well at 30, which is not necessarily expected given the AGE of the APIs here. How exactly are you doing this so well?
Well done!

Could you explain how you do it on getting the exe to read the 30cap.dll? I have disabilities so try to explain as simple as you can please.

Last edited by joeguy3121 on 2022-06-19, 09:46. Edited 2 times in total.

Reply 16 of 24, by slartibardfast0

User metadata
Rank Newbie
Rank
Newbie
joeguy3121 wrote on 2022-06-13, 07:48:
Dictator wrote on 2021-11-15, 10:00:
slartibardfast0 wrote on 2020-07-19, 17:45:
hi, […]
Show full quote

hi,

I've written a small amendment to a directx wrapper project to allow for capping of frame rates of any <= DirectX 7 3D games

I wrote it specifically for a play through of Star Wars Shadows of the Empire on an old Windows 98SE machine,
which has a rather overspec'd Geforce Quadro FX 1000.

check it out here:
https://github.com/slartibardfast/dxfpscap/re … elease.20200719

to use on Win2000+ simply extract to main game directory (not loaders etc) for example:
C:\Program Files\LucasArts\Shadows\SData (Shadows.EXE)

however on Windows 9x a hex editor must be used to "DDRAW.dll" references with "30cap.dll" in the main game exe
as for reasons unknown to me, the DLL search patch for DDRAW.dll seems to go straight to the system directory

Enjoy! & please let me know if you'd like any different frame caps built- 30 seems perfect for Shadows.exe and a good start.

I just wanted to say thanks for this - I just tried it out with Shadows of the Empire on Windows 98SE and it seems to work rather perfectly. It seems to have proper frame pacing as well at 30, which is not necessarily expected given the AGE of the APIs here. How exactly are you doing this so well?
Well done!

Could you explain how you do it on getting the exe to read the 30cap.dll? I have disabilities so try to explain as simple as you can please.

Hi joeguy3121,

sorry I was on holidays, hopefully these instructions will help:

1. download HxD hex editor (https://mh-nexus.de/en/downloads.php?product=HxD20)
2. make a backup of exe in case anything goes wrong, copy shadows.exe to a different directory and rename shadows.old)
3. in HxD open game exe (in screenshots C:\program files\lucas arts\shadows\sdata\shadows.exe)
4. in HxD menu click search -> replace... set search for to ddraw.dll and replace with to 30cap.dll and click replace all (make sure case sensitive is unchecked)
5. save and exit HxD
6. copy 30cap.dll and other files to game exe directory ( C:\program files\lucas arts\shadows\sdata\)

note, many games have launcher exe's that set options and other things, but ultimately start the real .exe (e.g. C:\program files\lucas arts\shadows\sote.exe is a launcher)

also, some games have packed exes, so if there are no references to ddraw.dll it'll need to be unpacked first
so please don't be afraid to ask for help with specifics games as long as it's not opengl (e.g. SW KOTOR), we should be able to get it going with a bit of effort!

kind regards,
-dc

Attachments

Reply 17 of 24, by joeguy3121

User metadata
Rank Newbie
Rank
Newbie
slartibardfast0 wrote on 2022-06-18, 17:05:
Hi joeguy3121, […]
Show full quote
joeguy3121 wrote on 2022-06-13, 07:48:
Dictator wrote on 2021-11-15, 10:00:

I just wanted to say thanks for this - I just tried it out with Shadows of the Empire on Windows 98SE and it seems to work rather perfectly. It seems to have proper frame pacing as well at 30, which is not necessarily expected given the AGE of the APIs here. How exactly are you doing this so well?
Well done!

Could you explain how you do it on getting the exe to read the 30cap.dll? I have disabilities so try to explain as simple as you can please.

Hi joeguy3121,

sorry I was on holidays, hopefully these instructions will help:

1. download HxD hex editor (https://mh-nexus.de/en/downloads.php?product=HxD20)
2. make a backup of exe in case anything goes wrong, copy shadows.exe to a different directory and rename shadows.old)
3. in HxD open game exe (in screenshots C:\program files\lucas arts\shadows\sdata\shadows.exe)
4. in HxD menu click search -> replace... set search for to ddraw.dll and replace with to 30cap.dll and click replace all (make sure case sensitive is unchecked)
5. save and exit HxD
6. copy 30cap.dll and other files to game exe directory ( C:\program files\lucas arts\shadows\sdata\)

note, many games have launcher exe's that set options and other things, but ultimately start the real .exe (e.g. C:\program files\lucas arts\shadows\sote.exe is a launcher)

also, some games have packed exes, so if there are no references to ddraw.dll it'll need to be unpacked first
so please don't be afraid to ask for help with specifics games as long as it's not opengl (e.g. SW KOTOR), we should be able to get it going with a bit of effort!

kind regards,
-dc

Did everything you said and this happens 😞

Attachments

Reply 18 of 24, by slartibardfast0

User metadata
Rank Newbie
Rank
Newbie

interesting, if you copied all files from dxfpscap_20200915.zip to the sdata folder, try deleting "ddraw.dll" from it. I guess win9x is trying to load wrapper twice.

if this doesn't work, look for fpscap_0.log in sdata or the parent folder, and upload here I can investigate more!

thanks
-dc

Reply 19 of 24, by joeguy3121

User metadata
Rank Newbie
Rank
Newbie
slartibardfast0 wrote on 2022-06-19, 13:04:
interesting, if you copied all files from dxfpscap_20200915.zip to the sdata folder, try deleting "ddraw.dll" from it. I guess w […]
Show full quote

interesting, if you copied all files from dxfpscap_20200915.zip to the sdata folder, try deleting "ddraw.dll" from it. I guess win9x is trying to load wrapper twice.

if this doesn't work, look for fpscap_0.log in sdata or the parent folder, and upload here I can investigate more!

thanks
-dc

Both folders have the fpscap_0.log. I opened both logs and saw differences in them and decided to upload both of the logs in case if both of the logs are operating the game.

Attachments

  • Filename
    sdata-fpscap_0.log
    File size
    2.23 KiB
    Downloads
    7 downloads
    File license
    Public domain
  • Filename
    shadows-fpscap_0.log
    File size
    3.72 KiB
    Downloads
    7 downloads
    File license
    Public domain