Skip to content

Commit 503bf7b

Browse files
committed
Disable hook on UnityEngine.Time.set_fixedDeltaTime (...) because it causes performance problems in Prince of Persia: The Lost Crown
1 parent 8b6196a commit 503bf7b

3 files changed

Lines changed: 26 additions & 10 deletions

File tree

CHANGELOG.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
26.6.30
1+
26.6.30.1
2+
=========
3+
+ Disable hook on UnityEngine.Time.set_fixedDeltaTime (...) because it
4+
causes performance problems in Prince of Persia: The Lost Crown.
5+
6+
26.6.30
27
=======
38
+ Disable Unity's framerate limiter altogether if SK's framerate limiter
49
is active.

include/SpecialK/DLL_VERSION.H

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#define SK_YEAR 26
44
#define SK_MONTH 6
55
#define SK_DATE 30
6-
#define SK_REV_N 0
7-
#define SK_REV 0
6+
#define SK_REV_N 1
7+
#define SK_REV 1
88

99
#ifndef _A2
1010
#define _A2(a) #a

src/plugins/unity.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,7 +1706,8 @@ UnityEngine_Time_set_fixedDeltaTime_Detour (MonoObject* __this, float fixedDelta
17061706
if (SK_Unity_Cfg.time_fixed_delta_time != 0.0f &&
17071707
SK_Unity_Cfg.time_fixed_delta_time != fixedDeltaTime)
17081708
{
1709-
fixedDeltaTime = SK_Unity_Cfg.time_fixed_delta_time;
1709+
return
1710+
UnityEngine_Time_set_fixedDeltaTime_Original (__this, SK_Unity_Cfg.time_fixed_delta_time);
17101711
}
17111712

17121713
return
@@ -1766,11 +1767,11 @@ UnityEngine_Application_set_targetFrameRate_Detour (MonoObject* __this, int targ
17661767
UnityEngine_Application_set_targetFrameRate_Original (__this, targetFrameRate);
17671768
}
17681769

1769-
using UnityEngine_Application_get_targetFrameRate_il2cpp_pfn = int (__fastcall *)(void*);
1770+
using UnityEngine_Application_get_targetFrameRate_il2cpp_pfn = int (*)(void*);
17701771
static UnityEngine_Application_get_targetFrameRate_il2cpp_pfn
17711772
UnityEngine_Application_get_targetFrameRate_il2cpp_Original = nullptr;
17721773

1773-
using UnityEngine_Application_set_targetFrameRate_il2cpp_pfn = void (__fastcall *)(void*, int);
1774+
using UnityEngine_Application_set_targetFrameRate_il2cpp_pfn = void (*)(void*, int);
17741775
static UnityEngine_Application_set_targetFrameRate_il2cpp_pfn
17751776
UnityEngine_Application_set_targetFrameRate_il2cpp_Original = nullptr;
17761777

@@ -1806,7 +1807,7 @@ UnityEngine_Application_set_targetFrameRate_il2cpp_Detour (void* __this, int tar
18061807
UnityEngine_Application_set_targetFrameRate_il2cpp_Original (__this, targetFrameRate);
18071808
}
18081809

1809-
using UnityEngine_Time_get_fixedDeltaTime_il2cpp_pfn = float (__fastcall *)(void*);
1810+
using UnityEngine_Time_get_fixedDeltaTime_il2cpp_pfn = float (*)(void*);
18101811
static UnityEngine_Time_get_fixedDeltaTime_il2cpp_pfn
18111812
UnityEngine_Time_get_fixedDeltaTime_il2cpp_Original = nullptr;
18121813

@@ -1829,25 +1830,27 @@ UnityEngine_Time_get_fixedDeltaTime_il2cpp_Detour (void* __this)
18291830
original_fixed_delta_time;
18301831
}
18311832

1832-
using UnityEngine_Time_set_fixedDeltaTime_il2cpp_pfn = void (__fastcall *)(void*, float deltaTime);
1833+
#ifdef SK_UNITY_SET_FIXEDDELTATIME_HOOK_DOES_NOT_KILL_PERFORMANCE_IN_PRINCE_OF_PERSIA
1834+
using UnityEngine_Time_set_fixedDeltaTime_il2cpp_pfn = void (*)(void*, float deltaTime);
18331835
static UnityEngine_Time_set_fixedDeltaTime_il2cpp_pfn
18341836
UnityEngine_Time_set_fixedDeltaTime_il2cpp_Original = nullptr;
18351837

18361838
void
1837-
__fastcall
18381839
UnityEngine_Time_set_fixedDeltaTime_il2cpp_Detour (void* __this, float fixedDeltaTime)
18391840
{
18401841
SK_LOG_FIRST_EXTERNAL_CALL
18411842

18421843
if (SK_Unity_Cfg.time_fixed_delta_time != 0.0f &&
18431844
SK_Unity_Cfg.time_fixed_delta_time != fixedDeltaTime)
18441845
{
1845-
fixedDeltaTime = SK_Unity_Cfg.time_fixed_delta_time;
1846+
return
1847+
UnityEngine_Time_set_fixedDeltaTime_il2cpp_Original (__this, SK_Unity_Cfg.time_fixed_delta_time);
18461848
}
18471849

18481850
return
18491851
UnityEngine_Time_set_fixedDeltaTime_il2cpp_Original (__this, fixedDeltaTime);
18501852
}
1853+
#endif
18511854

18521855
static MonoMethod* set_targetFrameRate_mono = nullptr;
18531856
static Method* set_targetFrameRate_il2cpp = nullptr;
@@ -2024,13 +2027,17 @@ SK_Unity_SetFixedDeltaTime (float fixed_delta_time)
20242027
pfnUnityEngine_Time_set_timeScale =
20252028
CompileMethod ("UnityEngine", "Time", "set_timeScale", 1, core_module_file);
20262029

2030+
/*
2031+
#ifdef SK_UNITY_SET_FIXEDDELTATIME_HOOK_DOES_NOT_KILL_PERFORMANCE_IN_PRINCE_OF_PERSIA
20272032
if (pfnUnityEngine_Time_set_fixedDeltaTime != nullptr)
20282033
{
20292034
SK_CreateFuncHook ( L"UnityEngine.Time.set_fixedDeltaTime",
20302035
pfnUnityEngine_Time_set_fixedDeltaTime,
20312036
UnityEngine_Time_set_fixedDeltaTime_Detour,
20322037
static_cast_p2p <void> (&UnityEngine_Time_set_fixedDeltaTime_Original) );
20332038
}
2039+
#endif
2040+
*/
20342041

20352042
if (pfnUnityEngine_Time_set_timeScale != nullptr)
20362043
{
@@ -2239,6 +2246,8 @@ SK_Unity_SetFixedDeltaTime (float fixed_delta_time)
22392246
hooks = true;
22402247
}
22412248

2249+
/*
2250+
#ifdef SK_UNITY_SET_FIXEDDELTATIME_HOOK_DOES_NOT_KILL_PERFORMANCE_IN_PRINCE_OF_PERSIA
22422251
void* pfnUnityEngine_Time_set_fixedDeltaTime = nullptr;
22432252
pfnUnityEngine_Time_set_fixedDeltaTime = set_fixedDeltaTime_il2cpp;
22442253
@@ -2253,6 +2262,8 @@ SK_Unity_SetFixedDeltaTime (float fixed_delta_time)
22532262
22542263
hooks = true;
22552264
}
2265+
#endif
2266+
*/
22562267

22572268
void* pfnUnityEngine_Application_get_targetFrameRate = nullptr;
22582269
pfnUnityEngine_Application_get_targetFrameRate = get_targetFrameRate;

0 commit comments

Comments
 (0)