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; }