mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Removed the obsolete WorldMapFPS, ForceLowResolutionTimer, and WorldMapDelay.
Fixed global scripts not running on the world map (mode 2) when disabling the world map speed patch.
This commit is contained in:
@@ -169,21 +169,6 @@ WorldMapDelay2=66
|
|||||||
WorldMapEncounterFix=0
|
WorldMapEncounterFix=0
|
||||||
WorldMapEncounterRate=5
|
WorldMapEncounterRate=5
|
||||||
|
|
||||||
;XX OBSOLETE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
||||||
;XX
|
|
||||||
;XX ;This will change the physical speed at which you move across the map
|
|
||||||
;XX ;Set to 0 to leave at the default. (i.e. limited by vwait in windowed mode, or by processor speed in fullscreen)
|
|
||||||
;XX ;If set to something other than 0, it enforces a maximum fps on the world map screen.
|
|
||||||
;XX ;Changing this to something other than 0 is not recommended if you've already applied a world map speed patch to your Fallout exe.
|
|
||||||
;XX WorldMapFPS=0
|
|
||||||
;XX
|
|
||||||
;XX ;Only set to 1 if your systems high performance timer is unreliable for some reason
|
|
||||||
;XX ForceLowResolutionTimer=0
|
|
||||||
;XX
|
|
||||||
;XX ;Obsolete, but can still be used if you know what it does.
|
|
||||||
;XX ;WorldMapDelay=0
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
||||||
|
|
||||||
;The number of slots available in the locations list panel of the world map
|
;The number of slots available in the locations list panel of the world map
|
||||||
;Set to 0 to leave unchanged. 17 is default.
|
;Set to 0 to leave unchanged. 17 is default.
|
||||||
;Setting this greater than 17 requires a replacement background frm, or you'll get glitched graphics
|
;Setting this greater than 17 requires a replacement background frm, or you'll get glitched graphics
|
||||||
|
|||||||
+8
-84
@@ -313,63 +313,14 @@ end_cppf:
|
|||||||
retn;
|
retn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static double wm_nexttick;
|
|
||||||
static double wm_wait;
|
|
||||||
static bool wm_usingperf;
|
|
||||||
static __int64 wm_perfadd;
|
|
||||||
static __int64 wm_perfnext;
|
|
||||||
static DWORD WorldMapLoopCount;
|
|
||||||
static void WorldMapSpeedPatch3() {
|
|
||||||
RunGlobalScripts3();
|
|
||||||
if (wm_usingperf) {
|
|
||||||
__int64 timer;
|
|
||||||
while (true) {
|
|
||||||
QueryPerformanceCounter((LARGE_INTEGER*)&timer);
|
|
||||||
if (timer > wm_perfnext) break;
|
|
||||||
Sleep(0);
|
|
||||||
}
|
|
||||||
if (wm_perfnext + wm_perfadd < timer) wm_perfnext = timer + wm_perfadd;
|
|
||||||
else wm_perfnext += wm_perfadd;
|
|
||||||
} else {
|
|
||||||
DWORD tick;
|
|
||||||
DWORD nexttick = (DWORD)wm_nexttick;
|
|
||||||
while ((tick = GetTickCount()) < nexttick) Sleep(0);
|
|
||||||
if (nexttick + wm_wait < tick) wm_nexttick = tick + wm_wait;
|
|
||||||
else wm_nexttick += wm_wait;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static void __declspec(naked) WorldMapSpeedPatch2() {
|
|
||||||
__asm {
|
|
||||||
pushad;
|
|
||||||
call WorldMapSpeedPatch3;
|
|
||||||
popad;
|
|
||||||
call get_input_;
|
|
||||||
retn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static void __declspec(naked) WorldMapSpeedPatch() {
|
|
||||||
__asm {
|
|
||||||
pushad;
|
|
||||||
call RunGlobalScripts3;
|
|
||||||
popad;
|
|
||||||
push ecx;
|
|
||||||
mov ecx, WorldMapLoopCount;
|
|
||||||
ls:
|
|
||||||
mov eax, eax;
|
|
||||||
loop ls;
|
|
||||||
pop ecx;
|
|
||||||
call get_input_;
|
|
||||||
retn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Only used if the world map speed patch is disabled, so that world map scripts are still run
|
//Only used if the world map speed patch is disabled, so that world map scripts are still run
|
||||||
static void WorldMapHook() {
|
static void __declspec(naked) WorldMapHook() {
|
||||||
__asm {
|
__asm {
|
||||||
pushad;
|
pushad;
|
||||||
call RunGlobalScripts3;
|
call RunGlobalScripts3;
|
||||||
popad;
|
popad;
|
||||||
call get_input_;
|
jmp get_input_;
|
||||||
retn;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1046,45 +997,18 @@ static void DllMain2() {
|
|||||||
|
|
||||||
if (GetPrivateProfileInt("Misc", "WorldMapFPSPatch", 0, ini)) {
|
if (GetPrivateProfileInt("Misc", "WorldMapFPSPatch", 0, ini)) {
|
||||||
dlog("Applying world map fps patch.", DL_INIT);
|
dlog("Applying world map fps patch.", DL_INIT);
|
||||||
if (*(DWORD*)0x004BFE5E != 0x8d16) {
|
if (*(DWORD*)0x4BFE5E != 0x8d16) {
|
||||||
dlogr(" Failed", DL_INIT);
|
dlogr(" Failed", DL_INIT);
|
||||||
} else {
|
} else {
|
||||||
wp_delay = GetPrivateProfileInt("Misc", "WorldMapDelay2", 66, ini);
|
wp_delay = GetPrivateProfileInt("Misc", "WorldMapDelay2", 66, ini);
|
||||||
HookCall(0x004BFE5D, worldmap_patch);
|
HookCall(0x4BFE5D, worldmap_patch);
|
||||||
dlogr(" Done", DL_INIT);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tmp = GetPrivateProfileIntA("Misc", "WorldMapFPS", 0, ini);
|
|
||||||
if (tmp) {
|
|
||||||
dlog("Applying world map fps patch.", DL_INIT);
|
|
||||||
if (*((WORD*)0x004CAFB9) == 0x0000) {
|
|
||||||
AvailableGlobalScriptTypes |= 2;
|
AvailableGlobalScriptTypes |= 2;
|
||||||
SafeWrite32(0x004BFE5E, ((DWORD)&WorldMapSpeedPatch2) - 0x004BFE62);
|
|
||||||
if (GetPrivateProfileIntA("Misc", "ForceLowResolutionTimer", 0, ini) || !QueryPerformanceFrequency((LARGE_INTEGER*)&wm_perfadd) || wm_perfadd <= 1000) {
|
|
||||||
wm_wait = 1000.0 / (double)tmp;
|
|
||||||
wm_nexttick = GetTickCount();
|
|
||||||
wm_usingperf = false;
|
|
||||||
} else {
|
|
||||||
wm_usingperf = true;
|
|
||||||
wm_perfadd /= tmp;
|
|
||||||
wm_perfnext = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
} else {
|
|
||||||
tmp = GetPrivateProfileIntA("Misc", "WorldMapDelay", 0, ini);
|
|
||||||
if (tmp) {
|
|
||||||
if (*((WORD*)0x004CAFB9) == 0x3d40)
|
|
||||||
SafeWrite32(0x004CAFBB, tmp);
|
|
||||||
else if (*((WORD*)0x004CAFB9) == 0x0000) {
|
|
||||||
SafeWrite32(0x004BFE5E, ((DWORD)&WorldMapSpeedPatch) - 0x004BFE62);
|
|
||||||
WorldMapLoopCount = tmp;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (*(DWORD*)0x004BFE5E == 0x0000d816) {
|
if (*(DWORD*)0x4BFE5E == 0x8d16) {
|
||||||
SafeWrite32(0x004BFE5E, ((DWORD)&WorldMapHook) - 0x004BFE62);
|
HookCall(0x4BFE5D, WorldMapHook);
|
||||||
}
|
AvailableGlobalScriptTypes |= 2;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user