1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

#5 add forcefps bool

This commit is contained in:
FunkyFr3sh 2020-01-23 08:58:22 +01:00
parent da09069d7b
commit 2d94d42e91
5 changed files with 33 additions and 3 deletions

View File

@ -85,6 +85,7 @@ typedef struct IDirectDrawImpl
struct
{
int maxfps;
BOOL forcefps;
int width;
int height;
int bpp;

View File

@ -565,7 +565,8 @@ static void Render()
else if (ddraw->bpp == 16)
glEnable(GL_TEXTURE_2D);
while (UseOpenGL && ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
while (UseOpenGL && ddraw->render.run &&
(ddraw->render.forcefps || WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED))
{
#if _DEBUG
DrawFrameInfoStart();

View File

@ -302,7 +302,8 @@ DWORD WINAPI render_d3d9_main(void)
DWORD tickEnd = 0;
BOOL needsUpdate = FALSE;
while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, 200) != WAIT_FAILED)
while (ddraw->render.run &&
(ddraw->render.forcefps || WaitForSingleObject(ddraw->render.sem, 200) != WAIT_FAILED))
{
#if _DEBUG
DrawFrameInfoStart();

View File

@ -61,7 +61,8 @@ DWORD WINAPI render_soft_main(void)
ddraw->fpsLimiter.ticklength = len + (ddraw->accurateTimers ? 0.5f : 0.0f);
}
while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
while (ddraw->render.run &&
(ddraw->render.forcefps || WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED))
{
#if _DEBUG
DrawFrameInfoStart();

View File

@ -55,6 +55,9 @@ void Settings_Load()
ddraw->render.maxfps = GetInt("maxfps", 125);
if (ddraw->render.maxfps)
ddraw->render.forcefps = GetBool("forcefps", FALSE);
if (ddraw->accurateTimers || ddraw->vsync)
ddraw->fpsLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
//can't fully set it up here due to missing ddraw->mode.dmDisplayFrequency
@ -283,6 +286,10 @@ static void CreateSettingsIni()
"; Note: Can be used to fix issues related to new features added by cnc-ddraw such as windowed mode or stretching\n"
"hook=1\n"
"\n"
"; Force consistent FPS (Requires 'maxfps=' to be set to a value other than 0)\n"
"; Note: Fixes flickering cursor issues in C&C games\n"
"forcefps=false\n"
"\n"
"\n"
"\n"
"; ### Game specific settings ###\n"
@ -298,10 +305,20 @@ static void CreateSettingsIni()
"; Command & Conquer Gold\n"
"[C&C95]\n"
"maxgameticks=120\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert\n"
"[ra95]\n"
"maxgameticks=120\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert\n"
"[ra95p]\n"
"maxgameticks=120\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Age of Empires\n"
"[empires]\n"
@ -365,54 +382,63 @@ static void CreateSettingsIni()
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Tiberian Sun Demo\n"
"[SUN]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Tiberian Sun - CnCNet\n"
"[ts-spawn]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert 2 - XWIS\n"
"[ra2]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert 2 - XWIS\n"
"[Red Alert 2]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert 2: Yuri's Revenge\n"
"[gamemd]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert 2: Yuri's Revenge - ?ModExe?\n"
"[ra2md]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert 2: Yuri's Revenge - CnCNet\n"
"[gamemd-spawn]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
"; Command & Conquer: Red Alert 2: Yuri's Revenge - XWIS\n"
"[Yuri's Revenge]\n"
"noactivateapp=true\n"
"handlemouse=false\n"
"maxfps=60\n"
"forcefps=true\n"
"\n"
, fh);