From 475955d8efd05852879451571f7eda388afb1609 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 6 Oct 2020 04:28:18 +0200 Subject: [PATCH] allow to disable all game speed limiters --- src/main.c | 9 +++++---- src/settings.c | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main.c b/src/main.c index 3a19d93..93f2f38 100644 --- a/src/main.c +++ b/src/main.c @@ -1752,13 +1752,14 @@ HRESULT __stdcall ddraw_WaitForVerticalBlank(IDirectDrawImpl *This, DWORD dwFlag #if _DEBUG_X printf("DirectDraw::WaitForVerticalBlank(This=%p, flags=%08X, handle=%p)\n", This, dwFlags, h); #endif - - FILETIME lastFlipFT = { 0 }; - if (ddraw->flipLimiter.hTimer) - GetSystemTimeAsFileTime(&lastFlipFT); + if (!ddraw->flipLimiter.ticklength) + return DD_OK; if (ddraw->flipLimiter.hTimer) { + FILETIME lastFlipFT = { 0 }; + GetSystemTimeAsFileTime(&lastFlipFT); + if (!ddraw->flipLimiter.dueTime.QuadPart) { memcpy(&ddraw->flipLimiter.dueTime, &lastFlipFT, sizeof(LARGE_INTEGER)); diff --git a/src/settings.c b/src/settings.c index 53a3f92..df4a37c 100644 --- a/src/settings.c +++ b/src/settings.c @@ -78,14 +78,16 @@ void Settings_Load() ddraw->ticksLimiter.ticklength = len + 0.5f; } - //always using 60 fps for flip... - if (ddraw->accurateTimers) - ddraw->flipLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL); - - float flipLen = 1000.0f / 60; - ddraw->flipLimiter.tickLengthNs = flipLen * 10000; - ddraw->flipLimiter.ticklength = flipLen + 0.5f; + if (maxTicks >= 0) + { + //always using 60 fps for flip... + if (ddraw->accurateTimers) + ddraw->flipLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL); + float flipLen = 1000.0f / 60; + ddraw->flipLimiter.tickLengthNs = flipLen * 10000; + ddraw->flipLimiter.ticklength = flipLen + 0.5f; + } if ((ddraw->fullscreen = GetBool("fullscreen", FALSE))) WindowRect.left = WindowRect.top = -32000; @@ -277,7 +279,7 @@ static void CreateSettingsIni() "; Hide WM_ACTIVATEAPP messages to prevent problems on alt+tab\n" "noactivateapp=false\n" "\n" - "; Max game ticks per second, possible values: 0-1000\n" + "; Max game ticks per second, possible values: -1 = disabled, 0 = emulate 60hz vblank, 1-1000 = custom game speed\n" "; Note: Can be used to slow down a too fast running game, fix flickering or too fast animations\n" "maxgameticks=0\n" "\n"