From 52310540961602948843b2f45599efb4cd771c89 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 25 Sep 2020 08:07:41 +0200 Subject: [PATCH] #29 Fix Sierra City Building series scrolling bugs --- inc/main.h | 2 +- src/main.c | 7 +++++-- src/settings.c | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/inc/main.h b/inc/main.h index 8405ac8..b245998 100644 --- a/inc/main.h +++ b/inc/main.h @@ -132,7 +132,7 @@ typedef struct IDirectDrawImpl BOOL accurateTimers; BOOL resizable; BOOL ddrawrefcount0; - BOOL forcewmmove; + BOOL sierrahack; BOOL bnetActive; BOOL bnetWasFullscreen; BOOL bnetWasUpscaled; diff --git a/src/main.c b/src/main.c index edc3ce0..5d19b6b 100644 --- a/src/main.c +++ b/src/main.c @@ -957,8 +957,11 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD This->render.thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)This->renderer, NULL, 0, NULL); } - if (ddraw->forcewmmove) + if (ddraw->sierrahack) + { PostMessageA(ddraw->hWnd, WM_MOVE, 0, MAKELPARAM(-32000, -32000)); + PostMessageA(ddraw->hWnd, WM_DISPLAYCHANGE, ddraw->bpp, MAKELPARAM(ddraw->width, ddraw->height)); + } return DD_OK; } @@ -1379,7 +1382,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) if (!ddraw->handlemouse) RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN); - if (ddraw->forcewmmove) + if (ddraw->sierrahack) { lParam = 0; break; diff --git a/src/settings.c b/src/settings.c index 8dabff5..63d4b96 100644 --- a/src/settings.c +++ b/src/settings.c @@ -44,7 +44,7 @@ void Settings_Load() ddraw->accurateTimers = GetBool("accuratetimers", FALSE); ddraw->resizable = GetBool("resizable", TRUE); ddraw->ddrawrefcount0 = GetBool("ddrawrefcount0", FALSE); // Twisted Metal 2 DirectDraw Error hack - ddraw->forcewmmove = GetBool("forcewmmove", FALSE); // Sierra Caesar III, Pharaoh, and Zeus hack + ddraw->sierrahack = GetBool("sierrahack", FALSE); // Sierra Caesar III, Pharaoh, and Zeus hack WindowRect.right = GetInt("width", 0); WindowRect.bottom = GetInt("height", 0); @@ -450,17 +450,17 @@ static void CreateSettingsIni() "; Caesar III\n" "[c3]\n" "handlemouse=false\n" - "forcewmmove=true\n" + "sierrahack=true\n" "\n" "; Pharaoh\n" "[Pharaoh]\n" "handlemouse=false\n" - "forcewmmove=true\n" + "sierrahack=true\n" "\n" "; Master of Olympus - Zeus\n" "[Zeus]\n" "handlemouse=false\n" - "forcewmmove=true\n" + "sierrahack=true\n" "renderer=gdi\n" "hook=2\n" "\n"