mirror of
https://github.com/CookiePLMonster/SilentPatch.git
synced 2024-12-28 06:43:01 +05:00
Patterns for timers fix for VC
This commit is contained in:
parent
c58f8ceef6
commit
94fa223e8c
3 changed files with 21 additions and 78 deletions
|
@ -3,37 +3,25 @@
|
|||
|
||||
#include "Patterns.h"
|
||||
|
||||
float* CTimer::ms_fTimeScale;
|
||||
float* CTimer::ms_fTimeStep;
|
||||
float* CTimer::ms_fTimeStepNotClipped;
|
||||
bool* CTimer::m_UserPause;
|
||||
bool* CTimer::m_CodePause;
|
||||
int* CTimer::m_snTimeInMilliseconds;
|
||||
int* CTimer::m_snPreviousTimeInMilliseconds;
|
||||
int* CTimer::m_snTimeInMillisecondsNonClipped;
|
||||
int* CTimer::m_snTimeInMillisecondsPauseMode;
|
||||
unsigned int* CTimer::m_FrameCounter;
|
||||
|
||||
static unsigned int suspendDepth;
|
||||
static long long timerFreq;
|
||||
static long long oldTime, suspendTime;
|
||||
|
||||
static long long cyclesTime, cyclesTimeNonClipped, cyclesTimePauseMode, cyclesPreviousTime;
|
||||
float& CTimer::ms_fTimeScale = **hook::get_pattern<float*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0x70 + 2 );
|
||||
float& CTimer::ms_fTimeStep = **hook::get_pattern<float*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0xF3 + 2 );
|
||||
bool& CTimer::m_UserPause = **hook::get_pattern<bool*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0x4A + 2 );
|
||||
bool& CTimer::m_CodePause = **hook::get_pattern<bool*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0x67 + 2 );
|
||||
int& CTimer::m_snTimeInMilliseconds = **hook::get_pattern<int*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0x102 + 1 );
|
||||
int& CTimer::m_snTimeInMillisecondsNonClipped = **hook::get_pattern<int*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0x13B + 1 );
|
||||
int& CTimer::m_snTimeInMillisecondsPauseMode = **hook::get_pattern<int*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 0x9C + 1 );
|
||||
|
||||
static uint32_t& timerFrequency = **hook::get_pattern<uint32_t*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", -7 );
|
||||
static LARGE_INTEGER& prevTimer = **hook::get_pattern<LARGE_INTEGER*>( "83 E4 F8 89 44 24 08 C7 44 24 0C 00 00 00 00 DF 6C 24 08", 64 );
|
||||
|
||||
|
||||
extern void (__stdcall *AudioResetTimers)(unsigned int);
|
||||
extern bool* bSnapShotActive;
|
||||
|
||||
void CTimer::Update_SilentPatch()
|
||||
{
|
||||
LARGE_INTEGER perfCount;
|
||||
QueryPerformanceCounter( &perfCount );
|
||||
|
||||
double diff = double(perfCount.QuadPart - prevTimer.QuadPart);
|
||||
if ( !*m_UserPause && !*m_CodePause ) diff *= *ms_fTimeScale;
|
||||
if ( !m_UserPause && !m_CodePause ) diff *= ms_fTimeScale;
|
||||
|
||||
prevTimer = perfCount;
|
||||
|
||||
|
@ -43,15 +31,15 @@ void CTimer::Update_SilentPatch()
|
|||
DeltaRemainder = modf( delta + DeltaRemainder, &deltaIntegral );
|
||||
|
||||
const int deltaInteger = int(deltaIntegral);
|
||||
*m_snTimeInMillisecondsPauseMode += deltaInteger;
|
||||
if ( !*m_UserPause && !*m_CodePause )
|
||||
m_snTimeInMillisecondsPauseMode += deltaInteger;
|
||||
if ( !m_UserPause && !m_CodePause )
|
||||
{
|
||||
*m_snTimeInMillisecondsNonClipped += deltaInteger;
|
||||
*m_snTimeInMilliseconds += deltaInteger;
|
||||
*ms_fTimeStep = float(delta * 0.05);
|
||||
m_snTimeInMillisecondsNonClipped += deltaInteger;
|
||||
m_snTimeInMilliseconds += deltaInteger;
|
||||
ms_fTimeStep = float(delta * 0.05);
|
||||
}
|
||||
else
|
||||
{
|
||||
*ms_fTimeStep = 0.0f;
|
||||
ms_fTimeStep = 0.0f;
|
||||
}
|
||||
}
|
|
@ -4,16 +4,13 @@
|
|||
class CTimer
|
||||
{
|
||||
public:
|
||||
static float* ms_fTimeScale;
|
||||
static float* ms_fTimeStep;
|
||||
static float* ms_fTimeStepNotClipped;
|
||||
static bool* m_UserPause;
|
||||
static bool* m_CodePause;
|
||||
static int* m_snTimeInMilliseconds;
|
||||
static int* m_snPreviousTimeInMilliseconds;
|
||||
static int* m_snTimeInMillisecondsNonClipped;
|
||||
static int* m_snTimeInMillisecondsPauseMode;
|
||||
static unsigned int* m_FrameCounter;
|
||||
static float& ms_fTimeScale;
|
||||
static float& ms_fTimeStep;
|
||||
static bool& m_UserPause;
|
||||
static bool& m_CodePause;
|
||||
static int& m_snTimeInMilliseconds;
|
||||
static int& m_snTimeInMillisecondsNonClipped;
|
||||
static int& m_snTimeInMillisecondsPauseMode;
|
||||
|
||||
public:
|
||||
static void Update_SilentPatch();
|
||||
|
|
|
@ -23,11 +23,8 @@ struct RwV2d
|
|||
float y; /**< Y value */
|
||||
};
|
||||
|
||||
bool* bSnapShotActive;
|
||||
static const void* RosieAudioFix_JumpBack;
|
||||
|
||||
|
||||
void (__stdcall *AudioResetTimers)(unsigned int);
|
||||
static void (*PrintString)(float,float,const wchar_t*);
|
||||
|
||||
static RsGlobalType* RsGlobal;
|
||||
|
@ -218,25 +215,12 @@ void Patch_VC_10(const RECT& desktop)
|
|||
{
|
||||
using namespace Memory;
|
||||
|
||||
AudioResetTimers = (void(__stdcall*)(unsigned int))0x5F98D0;
|
||||
PrintString = (void(*)(float,float,const wchar_t*))0x551040;
|
||||
|
||||
bSnapShotActive = *(bool**)0x4D1239;
|
||||
RsGlobal = *(RsGlobalType**)0x602D32;
|
||||
RosieAudioFix_JumpBack = (void*)0x42BFFE;
|
||||
SubtitlesShadowFix_JumpBack = (void*)0x551701;
|
||||
|
||||
CTimer::ms_fTimeScale = *(float**)0x453D38;
|
||||
CTimer::ms_fTimeStep = *(float**)0x41A318;
|
||||
CTimer::ms_fTimeStepNotClipped = *(float**)0x40605B;
|
||||
CTimer::m_UserPause = *(bool**)0x4D0F91;
|
||||
CTimer::m_CodePause = *(bool**)0x4D0FAE;
|
||||
CTimer::m_snTimeInMilliseconds = *(int**)0x418CFC;
|
||||
CTimer::m_snPreviousTimeInMilliseconds = *(int**)0x41BB3A;
|
||||
CTimer::m_snTimeInMillisecondsNonClipped = *(int**)0x4D1081;
|
||||
CTimer::m_snTimeInMillisecondsPauseMode = *(int**)0x4D0FE2;
|
||||
CTimer::m_FrameCounter = *(unsigned int**)0x4D12CF;
|
||||
|
||||
Patch<BYTE>(0x43E983, 16);
|
||||
Patch<BYTE>(0x43EC03, 16);
|
||||
Patch<BYTE>(0x43EECB, 16);
|
||||
|
@ -361,25 +345,12 @@ void Patch_VC_11(const RECT& desktop)
|
|||
{
|
||||
using namespace Memory;
|
||||
|
||||
AudioResetTimers = (void(__stdcall*)(unsigned int))0x5F98F0;
|
||||
PrintString = (void(*)(float,float,const wchar_t*))0x551060;
|
||||
|
||||
bSnapShotActive = *(bool**)0x4D1259;
|
||||
RsGlobal = *(RsGlobalType**)0x602D12;
|
||||
RosieAudioFix_JumpBack = (void*)0x42BFFE;
|
||||
SubtitlesShadowFix_JumpBack = (void*)0x551721;
|
||||
|
||||
CTimer::ms_fTimeScale = *(float**)0x453D38;
|
||||
CTimer::ms_fTimeStep = *(float**)0x41A318;
|
||||
CTimer::ms_fTimeStepNotClipped = *(float**)0x40605B;
|
||||
CTimer::m_UserPause = *(bool**)0x4D0FB1;
|
||||
CTimer::m_CodePause = *(bool**)0x4D0FCE;
|
||||
CTimer::m_snTimeInMilliseconds = *(int**)0x418CFC;
|
||||
CTimer::m_snPreviousTimeInMilliseconds = *(int**)0x41BB3A;
|
||||
CTimer::m_snTimeInMillisecondsNonClipped = *(int**)0x4D10A1;
|
||||
CTimer::m_snTimeInMillisecondsPauseMode = *(int**)0x4D1002;
|
||||
CTimer::m_FrameCounter = *(unsigned int**)0x4D12EF;
|
||||
|
||||
Patch<BYTE>(0x43E983, 16);
|
||||
Patch<BYTE>(0x43EC03, 16);
|
||||
Patch<BYTE>(0x43EECB, 16);
|
||||
|
@ -495,25 +466,12 @@ void Patch_VC_Steam(const RECT& desktop)
|
|||
{
|
||||
using namespace Memory;
|
||||
|
||||
AudioResetTimers = (void(__stdcall*)(unsigned int))0x5F9530;
|
||||
PrintString = (void(*)(float,float,const wchar_t*))0x550F30;
|
||||
|
||||
bSnapShotActive = *(bool**)0x4D10F9;
|
||||
RsGlobal = *(RsGlobalType**)0x602952;
|
||||
RosieAudioFix_JumpBack = (void*)0x42BFCE;
|
||||
SubtitlesShadowFix_JumpBack = (void*)0x5515F1;
|
||||
|
||||
CTimer::ms_fTimeScale = *(float**)0x453C18;
|
||||
CTimer::ms_fTimeStep = *(float**)0x41A318;
|
||||
CTimer::ms_fTimeStepNotClipped = *(float**)0x40605B;
|
||||
CTimer::m_UserPause = *(bool**)0x4D0E51;
|
||||
CTimer::m_CodePause = *(bool**)0x4D0E6E;
|
||||
CTimer::m_snTimeInMilliseconds = *(int**)0x418CFC;
|
||||
CTimer::m_snPreviousTimeInMilliseconds = *(int**)0x41BB3A;
|
||||
CTimer::m_snTimeInMillisecondsNonClipped = *(int**)0x4D0F41;
|
||||
CTimer::m_snTimeInMillisecondsPauseMode = *(int**)0x4D0EA2;
|
||||
CTimer::m_FrameCounter = *(unsigned int**)0x4D118F;
|
||||
|
||||
Patch<BYTE>(0x43E8F3, 16);
|
||||
Patch<BYTE>(0x43EB73, 16);
|
||||
Patch<BYTE>(0x43EE3B, 16);
|
||||
|
|
Loading…
Reference in a new issue