From 057e41e3c1d19b54a959a28c312d7319b6c88c4c Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 21 Jun 2021 01:45:52 +0200 Subject: [PATCH] #100 tweak old 640x480 hack for cnc1 and ra1 --- inc/dd.h | 1 + src/config.c | 18 ++++++++++++++---- src/winapi_hooks.c | 10 +++++++++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/inc/dd.h b/inc/dd.h index e62ff07..0ece75c 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -121,6 +121,7 @@ typedef struct CNCDDRAW int resolutions; BOOL armadahack; BOOL tshack; + BOOL cnchack; int maxgameticks; BOOL alt_key_down; BOOL bnet_active; diff --git a/src/config.c b/src/config.c index 43a87bf..f4bf4f4 100644 --- a/src/config.c +++ b/src/config.c @@ -58,6 +58,7 @@ void cfg_load() g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE); g_ddraw->tshack = cfg_get_bool("tshack", FALSE); + g_ddraw->cnchack = cfg_get_bool("cnchack", FALSE); g_config.window_rect.right = cfg_get_int("width", 0); g_config.window_rect.bottom = cfg_get_int("height", 0); @@ -430,10 +431,6 @@ static void cfg_create_ini() "[claw]\n" "noactivateapp=true\n" "\n" - "; Command & Conquer: Red Alert - CnCNet\n" - "[ra95-spawn]\n" - "maxfps=125\n" - "\n" "; Command & Conquer Gold - CnCNet\n" "[cnc95]\n" "maxfps=125\n" @@ -443,12 +440,25 @@ static void cfg_create_ini() "maxgameticks=120\n" "maxfps=60\n" "minfps=-1\n" + "cnchack=true\n" + "\n" + "; Command & Conquer: Red Alert - CnCNet\n" + "[ra95-spawn]\n" + "maxfps=125\n" "\n" "; Command & Conquer: Red Alert\n" "[ra95]\n" "maxgameticks=120\n" "maxfps=60\n" "minfps=-1\n" + "cnchack=true\n" + "\n" + "; Command & Conquer: Red Alert\n" + "[ra95_Mod-Launcher]\n" + "maxgameticks=120\n" + "maxfps=60\n" + "minfps=-1\n" + "cnchack=true\n" "\n" "; Command & Conquer: Red Alert\n" "[ra95p]\n" diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index c02c428..b68271a 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -120,8 +120,16 @@ BOOL WINAPI fake_ClipCursor(const RECT* lpRect) if (lpRect) { /* hack for 640x480 mode */ - if (lpRect->bottom == 400 && g_ddraw && g_ddraw->height == 480) + if (lpRect->bottom == 400 && g_ddraw && g_ddraw->height == 480 && g_ddraw->cnchack) + { g_ddraw->mouse_y_adjust = 40; + + if (g_ddraw->locked) + { + mouse_unlock(); + mouse_lock(); + } + } } return TRUE; }