Skip to content

Commit 56ad019

Browse files
committed
fps related fix
- fixes #107
1 parent 241ec98 commit 56ad019

File tree

6 files changed

+37
-13
lines changed

6 files changed

+37
-13
lines changed

data/update/TBoGT/common/data/frontend_menus.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@
382382
<options text="144" action="ACTION_NONE" value="9" />
383383
<options text="165" action="ACTION_NONE" value="10" />
384384
<options text="240" action="ACTION_NONE" value="11" />
385+
<options text="360" action="ACTION_NONE" value="12" />
385386
</menupc>
386387
</sMenuDisplayValue>
387388
<sMenuScreen>
@@ -550,7 +551,7 @@
550551
<options action="MENUOPT_NONE" label="" value="PREF_NULL"
551552
scaler="0" displayValue="MENU_DISPLAY_NONE" />
552553
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Console Gamma" value="PREF_CONSOLE_GAMMA" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
553-
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
554+
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
554555
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
555556
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
556557
<options action="MENUOPT_SET" label="MO_DEF"
@@ -1231,7 +1232,7 @@
12311232
<optionspc action="MENUOPT_ADJUST" label="MO_ASPRAT" value="PREF_ASPECT" scaler="6" displayValue="MENU_DISPLAY_ASPECT" />
12321233
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Borderless" value="PREF_EPISODIC_GAMEMODE_2" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
12331234
<optionspc action="MENUOPT_ADJUST" label="MO_VSYNC" value="PREF_VSYNC" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
1234-
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
1235+
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
12351236
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
12361237
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
12371238
<options action="MENUOPT_NONE" label="" value="PREF_NULL"

data/update/TLAD/common/data/frontend_menus.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@
458458
<options text="144" action="ACTION_NONE" value="9" />
459459
<options text="165" action="ACTION_NONE" value="10" />
460460
<options text="240" action="ACTION_NONE" value="11" />
461+
<options text="360" action="ACTION_NONE" value="12" />
461462
</menupc>
462463
</sMenuDisplayValue>
463464
<sMenuScreen>
@@ -581,7 +582,7 @@
581582
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
582583
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
583584
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Console Gamma" value="PREF_CONSOLE_GAMMA" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
584-
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
585+
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
585586
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
586587
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
587588
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />
@@ -1199,7 +1200,7 @@
11991200
<options action="MENUOPT_ADJUST" label="MO_LAN" value="PREF_CURRENT_LANGUAGE" scaler="7" displayValue="MENU_DISPLAY_LANGUAGE" />
12001201
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
12011202
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
1202-
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
1203+
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
12031204
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
12041205
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
12051206
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />

data/update/common/data/frontend_menus.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@
311311
<options text="144" action="ACTION_NONE" value="9" />
312312
<options text="165" action="ACTION_NONE" value="10" />
313313
<options text="240" action="ACTION_NONE" value="11" />
314+
<options text="360" action="ACTION_NONE" value="12" />
314315
</menupc>
315316

316317
</sMenuDisplayValue>
@@ -451,7 +452,7 @@
451452
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
452453
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
453454
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Console Gamma" value="PREF_CONSOLE_GAMMA" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
454-
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
455+
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
455456
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
456457
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
457458
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />
@@ -802,7 +803,7 @@
802803
<options action="MENUOPT_ADJUST" label="MO_LAN" value="PREF_CURRENT_LANGUAGE" scaler="7" displayValue="MENU_DISPLAY_LANGUAGE" />
803804
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
804805
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
805-
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
806+
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
806807
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
807808
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />
808809

premake5.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ workspace "GTAIV.EFLC.FusionFix"
22
configurations { "Release", "Debug" }
33
architecture "x86"
44
location "build"
5-
buildoptions {"-std:c++latest"}
5+
cppdialect "C++latest"
66
kind "SharedLib"
77
language "C++"
88
targetdir "bin/%{cfg.buildcfg}"

source/dllmain.cpp

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ float fFpsLimit;
190190
float fCutsceneFpsLimit;
191191
float fScriptCutsceneFpsLimit;
192192
float fScriptCutsceneFovLimit;
193-
std::vector<int32_t> fpsCaps = { 0, 1, 2, 30, 40, 50, 60, 75, 100, 120, 144, 165, 240 };
193+
std::vector<int32_t> fpsCaps = { 0, 1, 2, 30, 40, 50, 60, 75, 100, 120, 144, 165, 240, 360 };
194194

195195
class FrameLimiter
196196
{
@@ -202,9 +202,11 @@ class FrameLimiter
202202
double TIME_Ticks = 0.0;
203203
double TIME_Frametime = 0.0;
204204
float fFPSLimit = 0.0f;
205+
bool bFpsLimitWasUpdated = false;
205206
public:
206207
void Init(FPSLimitMode mode, float fps_limit)
207208
{
209+
bFpsLimitWasUpdated = true;
208210
mFPSLimitMode = mode;
209211
fFPSLimit = fps_limit;
210212

@@ -225,6 +227,12 @@ class FrameLimiter
225227
}
226228
DWORD Sync_RT()
227229
{
230+
if (bFpsLimitWasUpdated)
231+
{
232+
bFpsLimitWasUpdated = false;
233+
return 1;
234+
}
235+
228236
DWORD lastTicks, currentTicks;
229237
LARGE_INTEGER counter;
230238

@@ -237,6 +245,12 @@ class FrameLimiter
237245
}
238246
DWORD Sync_SLP()
239247
{
248+
if (bFpsLimitWasUpdated)
249+
{
250+
bFpsLimitWasUpdated = false;
251+
return 1;
252+
}
253+
240254
LARGE_INTEGER counter;
241255
QueryPerformanceCounter(&counter);
242256
double millis_current = (double)counter.QuadPart / TIME_Frequency;
@@ -274,13 +288,17 @@ FrameLimiter CutsceneFpsLimiter;
274288
FrameLimiter ScriptCutsceneFpsLimiter;
275289
bool(*CCutscenes__hasCutsceneFinished)();
276290
bool(*CCamera__isWidescreenBordersActive)();
291+
uint8_t* bLoadscreenShown = nullptr;
277292
void __cdecl sub_855640()
278293
{
279294
static auto preset = FusionFixSettings.GetRef("PREF_FPS_LIMIT_PRESET");
280295

281-
if (preset && *preset >= 2) {
282-
if (fFpsLimit > 0.0f || (*preset > 2 && *preset < fpsCaps.size()))
283-
FpsLimiter.Sync();
296+
if (bLoadscreenShown && !*bLoadscreenShown)
297+
{
298+
if (preset && *preset >= 2) {
299+
if (fFpsLimit > 0.0f || (*preset > 2 && *preset < fpsCaps.size()))
300+
FpsLimiter.Sync();
301+
}
284302
}
285303

286304
if (CCamera__isWidescreenBordersActive())
@@ -909,6 +927,9 @@ void Init()
909927
else
910928
FpsLimiter.Init(mode, fFpsLimit);
911929
});
930+
931+
pattern = hook::pattern("80 3D ? ? ? ? ? 53 56 8A FA");
932+
bLoadscreenShown = *pattern.get_first<uint8_t*>(2);
912933
}
913934

914935
if (fScriptCutsceneFovLimit)
@@ -1071,7 +1092,7 @@ void Init()
10711092
auto id = regs.edx;
10721093
auto value = regs.ebx;
10731094
if (FusionFixSettings.isSame(id, "PREF_FPS_LIMIT_PRESET")) {
1074-
if (regs.ebx == 1) {
1095+
if (value == 1) {
10751096
auto old = FusionFixSettings(id);
10761097
if (old >= 2)
10771098
value = 0;

0 commit comments

Comments
 (0)