diff --git a/sfall/AnimationsAtOnceLimit.cpp b/sfall/AnimationsAtOnceLimit.cpp index ded55939..a0048d20 100644 --- a/sfall/AnimationsAtOnceLimit.cpp +++ b/sfall/AnimationsAtOnceLimit.cpp @@ -20,8 +20,7 @@ #include "AnimationsAtOnceLimit.h" - -static bool AniLimitFixActive = false; +static int aniMax = 32; //pointers to new animation struct arrays static BYTE *anim_set; @@ -143,160 +142,159 @@ static const DWORD sad_28[] = { 0x4173CE, 0x4174C1, 0x4175F1, 0x417730, }; -void AnimationsAtOnceInit(signed char aniMax) { +void AnimationsAtOnceInit() { + aniMax = GetPrivateProfileIntA("Misc", "AnimationsAtOnceLimit", 32, ini); + if (aniMax > 32 && aniMax <= 127) { + dlog("Applying AnimationsAtOnceLimit patch.", DL_INIT); - if (aniMax <= 32) return; + int i; - AniLimitFixActive = true; + //allocate memory to store larger animation struct arrays + anim_set = new BYTE[2656*(aniMax+1)]; + sad = new BYTE[3240*(aniMax+1)]; - int i; + //set general animation limit check (old 20) aniMax-12 -- +12 reserved for PC movement(4) + other critical animations(8)? + SafeWrite8(0x413C07, aniMax-12); - //allocate memory to store larger animation struct arrays - anim_set = new BYTE[2656*(aniMax+1)]; - sad = new BYTE[3240*(aniMax+1)]; + //PC movement animation limit checks (old 24) aniMax-8 -- +8 reserved for other critical animations?. + for (i = 0; i < sizeof(AnimPCMove)/4; i++) { + SafeWrite8(AnimPCMove[i], aniMax-8); + } - //set general animation limit check (old 20) aniMax-12 -- +12 reserved for PC movement(4) + other critical animations(8)? - SafeWrite8(0x413C07, aniMax-12); + //Max animation limit checks (old 32) aniMax + for (i = 0; i < sizeof(AnimMaxCheck)/4; i++) { + SafeWrite8(AnimMaxCheck[i], aniMax); + } - //PC movement animation limit checks (old 24) aniMax-8 -- +8 reserved for other critical animations?. - for (i = 0; i < sizeof(AnimPCMove)/4; i++) { - SafeWrite8(AnimPCMove[i], aniMax-8); + //Max animations checks - animation struct size * max num of animations (old 2656*32=84992) + for (i = 0; i < sizeof(AnimMaxSizeCheck)/4; i++) { + SafeWrite32(AnimMaxSizeCheck[i], 2656*aniMax); + } + + //divert old animation structure list pointers to newly alocated memory + + //struct array 1/////////////////// + + //old addr 0x54C1B4 + SafeWrite32(0x413A9E, (DWORD)anim_set); + + //old addr 0x54C1C0 + for (i = 0; i < sizeof(fake_anim_set_C)/4; i++) { + SafeWrite32(fake_anim_set_C[i], 12+(DWORD)anim_set); + } + + //old addr 0x54CC14 + for (i = 0; i < sizeof(anim_set_0)/4; i++) { + SafeWrite32(anim_set_0[i], 2656+(DWORD)anim_set); + } + + //old addr 0x54CC18 + for (i = 0; i < sizeof(anim_set_4)/4; i++) { + SafeWrite32(anim_set_4[i], 2656+4+(DWORD)anim_set); + } + + //old addr 0x54CC1C + for (i = 0; i < sizeof(anim_set_8)/4; i++) { + SafeWrite32(anim_set_8[i], 2656+8+(DWORD)anim_set); + } + + //old addr 0x54CC20 + for (i = 0; i < sizeof(anim_set_C)/4; i++) { + SafeWrite32(anim_set_C[i], 2656+12+(DWORD)anim_set); + } + + //old addr 0x54CC24 + for (i = 0; i < sizeof(anim_set_10)/4; i++) { + SafeWrite32(anim_set_10[i], 2656+16+(DWORD)anim_set); + } + + //old addr 0x54CC28 + for (i = 0; i < sizeof(anim_set_14)/4; i++) { + SafeWrite32(anim_set_14[i], 2656+20+(DWORD)anim_set); + } + + //old addr 0x54CC38 + SafeWrite32(0x413F29, 2656+36+(DWORD)anim_set); + + //old addr 0x54CC3C + for (i = 0; i < sizeof(anim_set_28)/4; i++) { + SafeWrite32(anim_set_28[i], 2656+40+(DWORD)anim_set); + } + + //old addr 0x54CC48 + SafeWrite32(0x415C35, 2656+52+(DWORD)anim_set); + + //struct array 2/////////////////// + + //old addr 0x530014 + for (i = 0; i < sizeof(sad_0)/4; i++) { + SafeWrite32(sad_0[i], (DWORD)sad); + } + + //old addr 0x530018 + for (i = 0; i < sizeof(sad_4)/4; i++) { + SafeWrite32(sad_4[i], 4+(DWORD)sad); + } + + //old addr 0x53001C + for (i = 0; i < sizeof(sad_8)/4; i++) { + SafeWrite32(sad_8[i], 8+(DWORD)sad); + } + + //old addr 0x530020 + for (i = 0; i < sizeof(sad_C)/4; i++) { + SafeWrite32(sad_C[i], 12+(DWORD)sad); + } + + //old addr 0x530024 + for (i = 0; i < sizeof(sad_10)/4; i++) { + SafeWrite32(sad_10[i], 16+(DWORD)sad); + } + + //old addr 0x530028 + for (i = 0; i < sizeof(sad_14)/4; i++) { + SafeWrite32(sad_14[i], 20+(DWORD)sad); + } + + //old addr 0x53002C + for (i = 0; i < sizeof(sad_18)/4; i++) { + SafeWrite32(sad_18[i], 24+(DWORD)sad); + } + + //old addr 0x530030 + for (i = 0; i < sizeof(sad_1C)/4; i++) { + SafeWrite32(sad_1C[i], 28+(DWORD)sad); + } + + //old addr 0x530034 + for (i = 0; i < sizeof(sad_20)/4; i++) { + SafeWrite32(sad_20[i], 32+(DWORD)sad); + } + + //old addr 0x530038 + for (i = 0; i < sizeof(sad_24)/4; i++) { + SafeWrite32(sad_24[i], 36+(DWORD)sad); + } + + //old addr 0x53003A + SafeWrite32(0x416903, 38+(DWORD)sad); + + //old addr 0x53003B + for (i = 0; i < sizeof(sad_27)/4; i++) { + SafeWrite32(sad_27[i], 39+(DWORD)sad); + } + + //old addr 0x53003C + for (i = 0; i < sizeof(sad_28)/4; i++) { + SafeWrite32(sad_28[i], 40+(DWORD)sad); + } + + dlogr(" Done", DL_INIT); } - - //Max animation limit checks (old 32) aniMax - for (i = 0; i < sizeof(AnimMaxCheck)/4; i++) { - SafeWrite8(AnimMaxCheck[i], aniMax); - } - - //Max animations checks - animation struct size * max num of animations (old 2656*32=84992) - for (i = 0; i < sizeof(AnimMaxSizeCheck)/4; i++) { - SafeWrite32(AnimMaxSizeCheck[i], 2656*aniMax); - } - - - //divert old animation structure list pointers to newly alocated memory - - //struct array 1/////////////////// - - //old addr 0x54C1B4 - SafeWrite32(0x413A9E, (DWORD)anim_set); - - //old addr 0x54C1C0 - for (i = 0; i < sizeof(fake_anim_set_C)/4; i++) { - SafeWrite32(fake_anim_set_C[i], 12+(DWORD)anim_set); - } - - //old addr 0x54CC14 - for (i = 0; i < sizeof(anim_set_0)/4; i++) { - SafeWrite32(anim_set_0[i], 2656+(DWORD)anim_set); - } - - //old addr 0x54CC18 - for (i = 0; i < sizeof(anim_set_4)/4; i++) { - SafeWrite32(anim_set_4[i], 2656+4+(DWORD)anim_set); - } - - //old addr 0x54CC1C - for (i = 0; i < sizeof(anim_set_8)/4; i++) { - SafeWrite32(anim_set_8[i], 2656+8+(DWORD)anim_set); - } - - //old addr 0x54CC20 - for (i = 0; i < sizeof(anim_set_C)/4; i++) { - SafeWrite32(anim_set_C[i], 2656+12+(DWORD)anim_set); - } - - //old addr 0x54CC24 - for (i = 0; i < sizeof(anim_set_10)/4; i++) { - SafeWrite32(anim_set_10[i], 2656+16+(DWORD)anim_set); - } - - //old addr 0x54CC28 - for (i = 0; i < sizeof(anim_set_14)/4; i++) { - SafeWrite32(anim_set_14[i], 2656+20+(DWORD)anim_set); - } - - //old addr 0x54CC38 - SafeWrite32(0x413F29, 2656+36+(DWORD)anim_set); - - //old addr 0x54CC3C - for (i = 0; i < sizeof(anim_set_28)/4; i++) { - SafeWrite32(anim_set_28[i], 2656+40+(DWORD)anim_set); - } - - //old addr 0x54CC48 - SafeWrite32(0x415C35, 2656+52+(DWORD)anim_set); - - - //struct array 2/////////////////// - - //old addr 0x530014 - for (i = 0; i < sizeof(sad_0)/4; i++) { - SafeWrite32(sad_0[i], (DWORD)sad); - } - - //old addr 0x530018 - for (i = 0; i < sizeof(sad_4)/4; i++) { - SafeWrite32(sad_4[i], 4+(DWORD)sad); - } - - //old addr 0x53001C - for (i = 0; i < sizeof(sad_8)/4; i++) { - SafeWrite32(sad_8[i], 8+(DWORD)sad); - } - - //old addr 0x530020 - for (i = 0; i < sizeof(sad_C)/4; i++) { - SafeWrite32(sad_C[i], 12+(DWORD)sad); - } - - //old addr 0x530024 - for (i = 0; i < sizeof(sad_10)/4; i++) { - SafeWrite32(sad_10[i], 16+(DWORD)sad); - } - - //old addr 0x530028 - for (i = 0; i < sizeof(sad_14)/4; i++) { - SafeWrite32(sad_14[i], 20+(DWORD)sad); - } - - //old addr 0x53002C - for (i = 0; i < sizeof(sad_18)/4; i++) { - SafeWrite32(sad_18[i], 24+(DWORD)sad); - } - - //old addr 0x530030 - for (i = 0; i < sizeof(sad_1C)/4; i++) { - SafeWrite32(sad_1C[i], 28+(DWORD)sad); - } - - //old addr 0x530034 - for (i = 0; i < sizeof(sad_20)/4; i++) { - SafeWrite32(sad_20[i], 32+(DWORD)sad); - } - - //old addr 0x530038 - for (i = 0; i < sizeof(sad_24)/4; i++) { - SafeWrite32(sad_24[i], 36+(DWORD)sad); - } - - //old addr 0x53003A - SafeWrite32(0x416903, 38+(DWORD)sad); - - //old addr 0x53003B - for (i = 0; i < sizeof(sad_27)/4; i++) { - SafeWrite32(sad_27[i], 39+(DWORD)sad); - } - - //old addr 0x53003C - for (i = 0; i < sizeof(sad_28)/4; i++) { - SafeWrite32(sad_28[i], 40+(DWORD)sad); - } - } void AnimationsAtOnceExit() { - if (!AniLimitFixActive) return; + if (aniMax <= 32) return; delete[] anim_set; delete[] sad; } diff --git a/sfall/AnimationsAtOnceLimit.h b/sfall/AnimationsAtOnceLimit.h index 1d117d15..146c0efd 100644 --- a/sfall/AnimationsAtOnceLimit.h +++ b/sfall/AnimationsAtOnceLimit.h @@ -20,7 +20,7 @@ #pragma once -void AnimationsAtOnceInit(signed char aniMax); +void AnimationsAtOnceInit(); void AnimationsAtOnceExit(); diff --git a/sfall/Logging.cpp b/sfall/Logging.cpp index 46f55327..4ac254f4 100644 --- a/sfall/Logging.cpp +++ b/sfall/Logging.cpp @@ -46,7 +46,7 @@ void dlog_f(const char *fmt, int type, ...) { va_list args; va_start(args, type); char buf[4096]; - vsnprintf_s(buf, sizeof buf, _TRUNCATE, fmt, args); + vsnprintf_s(buf, sizeof(buf), _TRUNCATE, fmt, args); Log << buf; Log.flush(); va_end(args); diff --git a/sfall/ScriptExtender.cpp b/sfall/ScriptExtender.cpp index 52ec7a63..ab8cf9a5 100644 --- a/sfall/ScriptExtender.cpp +++ b/sfall/ScriptExtender.cpp @@ -244,7 +244,7 @@ public: va_list args; va_start(args, fmt); char msg[1024]; - vsnprintf_s(msg, sizeof msg, _TRUNCATE, fmt, args); + vsnprintf_s(msg, sizeof(msg), _TRUNCATE, fmt, args); va_end(args); const char* procName = FindCurrentProc(_program); @@ -391,7 +391,7 @@ static DWORD MotionSensorMode; static BYTE toggleHighlightsKey; static DWORD HighlightContainers; static DWORD Color_Containers; -static signed char idle; +static int idle; static char HighlightFail1[128]; static char HighlightFail2[128]; @@ -1195,7 +1195,7 @@ void ScriptExtenderSetup() { GetPrivateProfileStringA("Sfall", "HighlightFail2", "Your motion sensor is out of charge.", HighlightFail2, 128, translationIni); idle = GetPrivateProfileIntA("Misc", "ProcessorIdle", -1, ini); - if (idle > -1) { + if (idle > -1 && idle <= 127) { SafeWrite32(_idle_func, (DWORD)Sleep); SafeWrite8(0x4C9F12, 0x6A); // push SafeWrite8(0x4C9F13, idle); @@ -1740,7 +1740,7 @@ void AfterAttackCleanup() { } static void RunGlobalScripts1() { - if (idle > -1) Sleep(idle); + if (idle > -1 && idle <= 127) Sleep(idle); if (toggleHighlightsKey) { //0x48C294 to toggle if (KeyDown(toggleHighlightsKey)) { @@ -1786,7 +1786,7 @@ static void RunGlobalScripts1() { } void RunGlobalScripts2() { - if (idle > -1) Sleep(idle); + if (idle > -1 && idle <= 127) Sleep(idle); for (DWORD d = 0; d < globalScripts.size(); d++) { if (!globalScripts[d].repeat || globalScripts[d].mode != 1) continue; if (++globalScripts[d].count >= globalScripts[d].repeat) { @@ -1796,7 +1796,7 @@ void RunGlobalScripts2() { ResetStateAfterFrame(); } void RunGlobalScripts3() { - if (idle > -1) Sleep(idle); + if (idle > -1 && idle <= 127) Sleep(idle); for (DWORD d = 0; d < globalScripts.size(); d++) { if (!globalScripts[d].repeat || (globalScripts[d].mode != 2 && globalScripts[d].mode != 3)) continue; if (++globalScripts[d].count >= globalScripts[d].repeat) { diff --git a/sfall/main.cpp b/sfall/main.cpp index 489545fc..453566ee 100644 --- a/sfall/main.cpp +++ b/sfall/main.cpp @@ -1378,12 +1378,7 @@ static void DllMain2() { dlogr("Patching out ereg call.", DL_INIT); BlockCall(0x4425E6); - tmp = GetPrivateProfileIntA("Misc", "AnimationsAtOnceLimit", 32, ini); - if ((signed char)tmp > 32) { - dlog("Applying AnimationsAtOnceLimit patch.", DL_INIT); - AnimationsAtOnceInit((signed char)tmp); - dlogr(" Done", DL_INIT); - } + AnimationsAtOnceInit(); if (GetPrivateProfileIntA("Misc", "RemoveCriticalTimelimits", 0, ini)) { dlog("Removing critical time limits.", DL_INIT); diff --git a/sfall/main.h b/sfall/main.h index fa9cf9c5..ecffd4c8 100644 --- a/sfall/main.h +++ b/sfall/main.h @@ -55,7 +55,7 @@ T SimplePatch(DWORD *addrs, int numAddrs, const char* iniSection, const char* in value = minValue; else if (value > maxValue) value = maxValue; - _snprintf_s(msg, sizeof msg, _TRUNCATE, "Applying patch: %s = %d.", iniKey, value); + _snprintf_s(msg, sizeof(msg), _TRUNCATE, "Applying patch: %s = %d.", iniKey, value); dlog((const char *)msg, DL_INIT); for (int i=0; i(addrs[i], (T)value);