Skip to content

Commit

Permalink
fps related fix
Browse files Browse the repository at this point in the history
- fixes #107
  • Loading branch information
ThirteenAG committed Jul 29, 2023
1 parent 241ec98 commit 56ad019
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 13 deletions.
5 changes: 3 additions & 2 deletions data/update/TBoGT/common/data/frontend_menus.xml
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@
<options text="144" action="ACTION_NONE" value="9" />
<options text="165" action="ACTION_NONE" value="10" />
<options text="240" action="ACTION_NONE" value="11" />
<options text="360" action="ACTION_NONE" value="12" />
</menupc>
</sMenuDisplayValue>
<sMenuScreen>
Expand Down Expand Up @@ -550,7 +551,7 @@
<options action="MENUOPT_NONE" label="" value="PREF_NULL"
scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Console Gamma" value="PREF_CONSOLE_GAMMA" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<options action="MENUOPT_SET" label="MO_DEF"
Expand Down Expand Up @@ -1231,7 +1232,7 @@
<optionspc action="MENUOPT_ADJUST" label="MO_ASPRAT" value="PREF_ASPECT" scaler="6" displayValue="MENU_DISPLAY_ASPECT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Borderless" value="PREF_EPISODIC_GAMEMODE_2" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST" label="MO_VSYNC" value="PREF_VSYNC" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL"
Expand Down
5 changes: 3 additions & 2 deletions data/update/TLAD/common/data/frontend_menus.xml
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,7 @@
<options text="144" action="ACTION_NONE" value="9" />
<options text="165" action="ACTION_NONE" value="10" />
<options text="240" action="ACTION_NONE" value="11" />
<options text="360" action="ACTION_NONE" value="12" />
</menupc>
</sMenuDisplayValue>
<sMenuScreen>
Expand Down Expand Up @@ -581,7 +582,7 @@
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Console Gamma" value="PREF_CONSOLE_GAMMA" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />
Expand Down Expand Up @@ -1199,7 +1200,7 @@
<options action="MENUOPT_ADJUST" label="MO_LAN" value="PREF_CURRENT_LANGUAGE" scaler="7" displayValue="MENU_DISPLAY_LANGUAGE" />
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />
Expand Down
5 changes: 3 additions & 2 deletions data/update/common/data/frontend_menus.xml
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,7 @@
<options text="144" action="ACTION_NONE" value="9" />
<options text="165" action="ACTION_NONE" value="10" />
<options text="240" action="ACTION_NONE" value="11" />
<options text="360" action="ACTION_NONE" value="12" />
</menupc>

</sMenuDisplayValue>
Expand Down Expand Up @@ -451,7 +452,7 @@
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Console Gamma" value="PREF_CONSOLE_GAMMA" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />
Expand Down Expand Up @@ -802,7 +803,7 @@
<options action="MENUOPT_ADJUST" label="MO_LAN" value="PREF_CURRENT_LANGUAGE" scaler="7" displayValue="MENU_DISPLAY_LANGUAGE" />
<optionsps3 action="MENUOPT_ADJUST" label="MO_FLIC" value="PREF_FLICKER_FILTER" scaler="2" displayValue="MENU_DISPLAY_ON_OFF" />
<options action="MENUOPT_NONE" label="" value="PREF_NULL" scaler="0" displayValue="MENU_DISPLAY_NONE" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="12" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="FPS limiter" value="PREF_FPS_LIMIT_PRESET" scaler="14" displayValue="MENU_DISPLAY_FRAMELIMIT" />
<optionspc action="MENUOPT_ADJUST_GAMEMODE" label="Screen Filter" value="PREF_TIMECYC" scaler="10" displayValue="MENU_DISPLAY_TIMECYC" />
<options action="MENUOPT_SET" label="MO_DEF" value="SET_DEFAULT_DISPLAY" scaler="0" displayValue="MENU_DISPLAY_NONE" />

Expand Down
2 changes: 1 addition & 1 deletion premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ workspace "GTAIV.EFLC.FusionFix"
configurations { "Release", "Debug" }
architecture "x86"
location "build"
buildoptions {"-std:c++latest"}
cppdialect "C++latest"
kind "SharedLib"
language "C++"
targetdir "bin/%{cfg.buildcfg}"
Expand Down
2 changes: 1 addition & 1 deletion shaders/GTAIV.ShaderFixesCollection
31 changes: 26 additions & 5 deletions source/dllmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ float fFpsLimit;
float fCutsceneFpsLimit;
float fScriptCutsceneFpsLimit;
float fScriptCutsceneFovLimit;
std::vector<int32_t> fpsCaps = { 0, 1, 2, 30, 40, 50, 60, 75, 100, 120, 144, 165, 240 };
std::vector<int32_t> fpsCaps = { 0, 1, 2, 30, 40, 50, 60, 75, 100, 120, 144, 165, 240, 360 };

class FrameLimiter
{
Expand All @@ -202,9 +202,11 @@ class FrameLimiter
double TIME_Ticks = 0.0;
double TIME_Frametime = 0.0;
float fFPSLimit = 0.0f;
bool bFpsLimitWasUpdated = false;
public:
void Init(FPSLimitMode mode, float fps_limit)
{
bFpsLimitWasUpdated = true;
mFPSLimitMode = mode;
fFPSLimit = fps_limit;

Expand All @@ -225,6 +227,12 @@ class FrameLimiter
}
DWORD Sync_RT()
{
if (bFpsLimitWasUpdated)
{
bFpsLimitWasUpdated = false;
return 1;
}

DWORD lastTicks, currentTicks;
LARGE_INTEGER counter;

Expand All @@ -237,6 +245,12 @@ class FrameLimiter
}
DWORD Sync_SLP()
{
if (bFpsLimitWasUpdated)
{
bFpsLimitWasUpdated = false;
return 1;
}

LARGE_INTEGER counter;
QueryPerformanceCounter(&counter);
double millis_current = (double)counter.QuadPart / TIME_Frequency;
Expand Down Expand Up @@ -274,13 +288,17 @@ FrameLimiter CutsceneFpsLimiter;
FrameLimiter ScriptCutsceneFpsLimiter;
bool(*CCutscenes__hasCutsceneFinished)();
bool(*CCamera__isWidescreenBordersActive)();
uint8_t* bLoadscreenShown = nullptr;
void __cdecl sub_855640()
{
static auto preset = FusionFixSettings.GetRef("PREF_FPS_LIMIT_PRESET");

if (preset && *preset >= 2) {
if (fFpsLimit > 0.0f || (*preset > 2 && *preset < fpsCaps.size()))
FpsLimiter.Sync();
if (bLoadscreenShown && !*bLoadscreenShown)
{
if (preset && *preset >= 2) {
if (fFpsLimit > 0.0f || (*preset > 2 && *preset < fpsCaps.size()))
FpsLimiter.Sync();
}
}

if (CCamera__isWidescreenBordersActive())
Expand Down Expand Up @@ -909,6 +927,9 @@ void Init()
else
FpsLimiter.Init(mode, fFpsLimit);
});

pattern = hook::pattern("80 3D ? ? ? ? ? 53 56 8A FA");
bLoadscreenShown = *pattern.get_first<uint8_t*>(2);
}

if (fScriptCutsceneFovLimit)
Expand Down Expand Up @@ -1071,7 +1092,7 @@ void Init()
auto id = regs.edx;
auto value = regs.ebx;
if (FusionFixSettings.isSame(id, "PREF_FPS_LIMIT_PRESET")) {
if (regs.ebx == 1) {
if (value == 1) {
auto old = FusionFixSettings(id);
if (old >= 2)
value = 0;
Expand Down

0 comments on commit 56ad019

Please sign in to comment.