narzoul / DDrawCompat

DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11
BSD Zero Clause License
893 stars 67 forks source link

Issue with game speed and fullscreen mode [R6 Black ops 2.0] (Windows 11) #162

Closed pilouk closed 2 months ago

pilouk commented 1 year ago

Hi!

I'm currently trying to play R6 Black ops 2.0 on windows 11 with DDrawCompat. I got two major problems :

  1. For some reason I can't force the game to be in window/borderless. I did try with the fullscreen optimization option to off however, the OS windows seem to force the game to be in full screen.
  2. The game run really too fast. I did try to limit fps to 30 even changing all fps limiter options, vsync off and on, changing CPU affinity to 1, and forcing a low refresh rate than my screen (60). None is working

I had the same problem in windows 10 however, I was able to make it work by running the game in window mode with voodoo which I also try with no luck on windows 11

I attached a debug session of the game My spec is gtx3070 WITHOUT GSYNC with 144hz monitor 1440p running windows 11. Thank you so much!

DDrawCompat-R6BO.zip

narzoul commented 1 year ago

How do you know if the game is running in exclusive or borderless fullscreen mode? Why does it matter? Or did you mean real windowed mode, where the rest of the desktop is visible? Anyway, based on your logs it looks like borderless fullscreen to me, but I'm not sure because you have hardware-accelerated GPU scheduling enabled, and I don't know what exclusive fullscreen mode is supposed to look like in that case. I don't have hardware to test that.

As for the game speed, it doesn't depend on FPS at all, so any FPS controls probably won't help. I guess the game uses timers for that, so it's probably some timer related issue, not a DirectX problem. Have you tried restarting your PC? Some timers are known to be problematic due to overflows in old games if your PC hasn't been properly restarted in a while.

pilouk commented 1 year ago

@narzoul Alt-tabbing makes my screen flash like when I'm in exclusive, It shouldn't do that in borderless. I did try restarting but it didn't help.

narzoul commented 1 year ago

The game still changes display modes when alt-tabbing, unless your desktop resolution and refresh rate matches the one chosen by the application (or overridden by DDrawCompat). Based on the config in your logs, the "flash" is probably caused by the DisplayRefreshRate=60 setting. Change it back to app or desktop and see if it helps.

I have no idea about the game speed issue. It works fine on Windows 11 for me, so I doubt that it's caused by that, unless you are on some Insider Preview build. I might try to mess with the timer APIs later to see if I can get the game to run faster or slower that way, though a clean system reboot (not a shutdown) should have fixed any issues related to that as far as I know.

pilouk commented 1 year ago

The game still changes display modes when alt-tabbing, unless your desktop resolution and refresh rate matches the one chosen by the application (or overridden by DDrawCompat). Based on the config in your logs, the "flash" is probably caused by the DisplayRefreshRate=60 setting. Change it back to app or desktop and see if it helps.

I have no idea about the game speed issue. It works fine on Windows 11 for me, so I doubt that it's caused by that, unless you are on some Insider Preview build. I might try to mess with the timer APIs later to see if I can get the game to run faster or slower that way, though a clean system reboot (not a shutdown) should have fixed any issues related to that as far as I know.

Yeah, the flash is my display "flick" like it's been turned on or changed its source (maybe display driver). Also my window taskbar bar "reset" like it disappear and come back after a few seconds. Changing DisplayRefreshRate changes nothing, I will try on my second display instead. I "fixed" the game speed by using the in-game feature with the button "F6" and "F8". I really don't know what it's doing behind the scene however, after pressing like 5 times it seems to run at the native speed.

narzoul commented 8 months ago

Changing DisplayRefreshRate changes nothing, I will try on my second display instead.

Any luck with that? It really should have worked, but you can try again with v0.5.0. Send me debug logs after reproducing the issue if it still doesn't work. Maybe a video recording would also help.