2021-12-25 22:36:38 +01:00
# pragma once
2022-01-05 02:07:37 +01:00
2021-12-29 02:16:21 +01:00
# ifdef DEDICATED
2022-04-09 02:18:57 +02:00
inline const char * g_szGameDll = " r5apex_ds.exe " ;
2021-12-29 02:16:21 +01:00
# else
2022-04-09 02:18:57 +02:00
inline const char * g_szGameDll = " r5apex.exe " ;
2021-12-29 02:16:21 +01:00
# endif // DEDICATED
2021-12-31 03:41:33 +01:00
void Dedicated_Init ( ) ;
void RuntimePtc_Init ( ) ;
void RuntimePtc_Toggle ( ) ;
2021-12-25 22:36:38 +01:00
2022-01-12 02:53:07 +01:00
# ifdef GAMEDLL_S3
2022-04-09 02:18:57 +02:00
/* -------------- OTHER ------------------------------------------------------------------------------------------------------------------------------------------------- */
2022-04-10 19:59:34 +02:00
inline CMemory dst007 = /*0x14028F3B0*/ FindPatternSIMD ( g_szGameDll , reinterpret_cast < rsig_t > ( " \x48 \x8B \xC4 \x44 \x89 \x40 \x18 \x48 \x89 \x50 \x10 \x55 \x53 \x56 \x57 \x41 " ) , " xxxxxxxxxxxxxxxx " ) ;
inline CMemory dst008 = /*0x140E3E110*/ FindPatternSIMD ( g_szGameDll , reinterpret_cast < rsig_t > ( " \x48 \x83 \xEC \x78 \x48 \x8B \x84 \x24 \x00 \x00 \x00 \x00 \x4D \x8B \xD8 \x00 " ) , " xxxxxxxx????xxx? " ) ;
2022-04-09 02:18:57 +02:00
/* -------------- ------- ----------------------------------------------------------------------------------------------------------------------------------------------- */
2022-01-12 02:53:07 +01:00
# endif // GAMEDLL_S3
2022-01-26 23:43:16 +01:00
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// CSHADERSYSTEM
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory CShaderSystem__Init = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x5C \x24 \x00 \x48 \x89 \x74 \x24 \x00 \x57 \x48 \x83 \xEC \x20 \xC6 \x41 \x10 \x00 " ) , " xxxx?xxxx?xxxxxxxxx " ) ;
2022-04-09 02:18:57 +02:00
// 0x1403DF870 // 48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC 20 C6 41 10 00 //
//-------------------------------------------------------------------------
// CVGUI
//-------------------------------------------------------------------------
2022-02-18 02:51:16 +01:00
# if defined (GAMEDLL_S0) || defined (GAMEDLL_S1)
2022-04-10 19:59:34 +02:00
inline CMemory CVGui__RunFrame = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x5C \x24 \x00 \x55 \x56 \x57 \x48 \x83 \xEC \x20 \x0F \xB6 \x69 \x5C " ) , " xxxx?xxxxxxxxxxx " ) ;
2022-02-18 02:51:16 +01:00
# elif defined (GAMEDLL_S2) || defined (GAMEDLL_S3)
2022-04-10 19:59:34 +02:00
inline CMemory CVGui__RunFrame = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x40 \x57 \x48 \x83 \xEC \x20 \x48 \x89 \x5C \x24 \x00 \x48 \x8B \xF9 \x48 \x89 \x6C \x24 \x00 \x0F \xB6 \x69 \x5C " ) , " xxxxxxxxxx?xxxxxxx?xxxx " ) ;
2022-02-18 02:51:16 +01:00
# endif
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// CENGINEVGUI
//-------------------------------------------------------------------------
2022-02-18 02:51:16 +01:00
# if defined (GAMEDLL_S0) || defined (GAMEDLL_S1)
2022-04-10 19:59:34 +02:00
inline CMemory CEngineVGui__Shutdown = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x4C \x24 \x00 \x57 \x41 \x54 \x48 \x83 \xEC \x38 " ) , " xxxx?xxxxxxx " ) ;
2022-02-18 02:51:16 +01:00
# elif defined (GAMEDLL_S2) || defined (GAMEDLL_S3)
2022-04-10 19:59:34 +02:00
inline CMemory CEngineVGui__Shutdown = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x5C \x24 \x00 \x48 \x89 \x74 \x24 \x00 \x57 \x48 \x83 \xEC \x20 \x80 \x3D \x00 \x00 \x00 \x00 \x00 \x48 \x8B \xD9 " ) , " xxxx?xxxx?xxxxxxx?????xxx " ) ;
2022-02-18 02:51:16 +01:00
# endif // 0x140282C90 // 48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC 20 80 3D ? ? ? ? ? 48 8B D9 //
2022-04-10 19:59:34 +02:00
inline CMemory CEngineVGui__ActivateGameUI = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x40 \x53 \x48 \x83 \xEC \x20 \xF6 \x81 \x00 \x00 \x00 \x00 \x00 \x48 \x8B \xD9 \x74 \x08 " ) , " xxxxxxxx?????xxxxx " ) ;
2022-04-09 02:18:57 +02:00
//
//-------------------------------------------------------------------------
// RUNTIME: SYS_INITGAME
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory Sys_InitGame = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x5C \x24 \x00 \x57 \x48 \x81 \xEC \x00 \x00 \x00 \x00 \x80 \x3D \x00 \x00 \x00 \x00 \x00 \x41 \x8B \xD8 " ) , " xxxx?xxxx????xx?????xxx " ) ;
2022-04-09 02:18:57 +02:00
// 0x1402958D0 // 48 89 5C 24 ? 57 48 81 EC ? ? ? ? 80 3D ? ? ? ? ? 41 8B D8 //
//-------------------------------------------------------------------------
// RUNTIME: HOST_INIT
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory gHost_Init_0 = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x5C \x24 \x00 \x48 \x89 \x74 \x24 \x00 \x48 \x89 \x7C \x24 \x00 \x55 \x41 \x54 \x41 \x55 \x41 \x56 \x41 \x57 \x48 \x8D \xAC \x24 \x00 \x00 \x00 \x00 \xB8 \x00 \x00 \x00 \x00 \xE8 \x00 \x00 \x00 \x00 \x48 \x2B \xE0 \x48 \x8B \xD9 " ) , " xxxx?xxxx?xxxx?xxxxxxxxxxxxx????x????x????xxxxxx " ) ; // main Host_Init()?
2022-04-09 02:18:57 +02:00
// 0x140236E40 // 48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? B8 ? ? ? ? E8 ? ? ? ? 48 2B E0 48 8B D9 //
2022-04-10 19:59:34 +02:00
inline CMemory gHost_Init_1 = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x8B \xC4 \x41 \x56 \x48 \x81 \xEC \x00 \x00 \x00 \x00 \x45 \x33 \xF6 " ) , " xxxxxxxx????xxx " ) ; // server Host_Init()?
2022-04-09 02:18:57 +02:00
// 0x140237B00 // 48 8B C4 41 56 48 81 EC ? ? ? ? 45 33 F6 //
2022-04-10 19:59:34 +02:00
inline CMemory gHost_Init_2 = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x88 \x4C \x24 \x08 \x53 \x55 \x56 \x57 \x48 \x83 \xEC \x68 " ) , " xxxxxxxxxxxx " ) ; // client Host_Init()?
2022-04-09 02:18:57 +02:00
// 0x140236640 // 88 4C 24 08 53 55 56 57 48 83 EC 68 //
//-------------------------------------------------------------------------
// RUNTIME: HOST_SHUTDOWN
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory Host_Shutdown = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x8B \xC4 \x48 \x83 \xEC \x00 \x80 \x3D \x00 \x00 \x00 \x00 \x00 \x0F \x85 \x00 \x00 \x00 \x00 \x8B \x15 \x00 \x00 \x00 \x00 " ) , " xxxxxx?xx?????xx????xx???? " ) ;
2022-04-09 02:18:57 +02:00
// 0x140239620 // 48 8B C4 48 83 EC ?? 80 3D ? ? ? ? ? 0F 85 ? ? ? ? 8B 15 ? ? ? ? //
//-------------------------------------------------------------------------
// RUNTIME: HOST_DISCONNECT
//-------------------------------------------------------------------------
2022-02-18 02:51:16 +01:00
# if defined (GAMEDLL_S0) || defined (GAMEDLL_S1)
2022-04-10 19:59:34 +02:00
inline CMemory Host_Disconnect = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x83 \xEC \x38 \x48 \x89 \x7C \x24 \x00 \x0F \xB6 \xF9 " ) , " xxxxxxxx?xxx " ) ;
2022-02-18 02:51:16 +01:00
# elif defined (GAMEDLL_S2) || defined (GAMEDLL_S3)
2022-04-10 19:59:34 +02:00
inline CMemory Host_Disconnect = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x40 \x53 \x48 \x83 \xEC \x30 \x0F \xB6 \xD9 " ) , " xxxxxxxxx " ) ;
2022-02-18 02:51:16 +01:00
# endif // 0x14023CCA0 // 40 53 48 83 EC 30 0F B6 D9 //
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// RUNTIME: _HOST_RUNFRAME
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory _Host_RunFrame = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x8B \xC4 \x48 \x89 \x58 \x18 \x48 \x89 \x70 \x20 \xF3 \x0F \x11 \x48 \x00 " ) , " xxxxxxxxxxxxxxx? " ) ; // _Host_RunFrame() with inlined CFrameTimer::MarkFrame()?
2022-04-09 02:18:57 +02:00
// 0x140231C00 // 48 8B C4 48 89 58 18 48 89 70 20 F3 0F 11 48 ? //
2022-01-05 22:56:49 +01:00
2022-02-27 03:15:00 +01:00
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// RUNTIME: DETOUR_LEVELINIT
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory Detour_LevelInit = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x5C \x24 \x00 \x48 \x89 \x74 \x24 \x00 \x48 \x89 \x7C \x24 \x00 \x55 \x41 \x54 \x41 \x55 \x41 \x56 \x41 \x57 \x48 \x8D \xAC \x24 \x00 \x00 \x00 \x00 \x48 \x81 \xEC \x00 \x00 \x00 \x00 \x45 \x33 \xE4 " ) , " xxxx?xxxx?xxxx?xxxxxxxxxxxxx????xxx????xxx " ) ;
2022-04-09 02:18:57 +02:00
// 0x140EF9100 // 48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 45 33 E4 //
2022-02-27 03:15:00 +01:00
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// RUNTIME: S2C_CHALLENGE
//-------------------------------------------------------------------------
2022-03-27 22:17:30 +02:00
# ifndef CLIENT_DLL
2022-04-10 19:59:34 +02:00
inline CMemory Server_S2C_CONNECT_1 = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x3B \x05 \x00 \x00 \x00 \x00 \x74 \x0C " ) , " xxx????xx " ) ;
2022-03-27 22:17:30 +02:00
# endif // !CLIENT_DLL
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// RUNTIME: GAME_CFG
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory UpdateCurrentVideoConfig = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x40 \x55 \x00 \x41 \x56 \x48 \x8D \xAC \x24 \x00 \x00 \x00 \x00 \x48 \x81 \xEC \x00 \x00 \x00 \x00 \x48 \x8B \x05 \x00 \x00 \x00 \x00 \x4C \x8B \xF1 " ) , " xx?xxxxxx????xxx????xxx????xxx " ) ;
inline CMemory HandleConfigFile = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x40 \x56 \x48 \x81 \xEC \x00 \x00 \x00 \x00 \x8B \xF1 " ) , " xxxxx????xx " ) ;
inline CMemory ResetPreviousGameState = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \xE8 \x00 \x00 \x00 \x00 \x44 \x89 \x3D \x00 \x00 \x00 \x00 \x00 \x8B \x00 \x24 \x00 " ) , " x????xxx?????x?x? " ) . ResolveRelativeAddressSelf ( 0x1 , 0x5 ) ;
2022-04-09 02:18:57 +02:00
//-------------------------------------------------------------------------
// .RDATA
//-------------------------------------------------------------------------
2022-04-10 19:59:34 +02:00
inline CMemory g_pClientVPKDir = g_mGameDll . FindStringReadOnly ( " vpk/%sclient_%s.bsp.pak000%s " , true ) ;
inline CMemory g_pClientBSP = g_mGameDll . FindStringReadOnly ( " vpk/client_%s.bsp " , true ) ;
inline CMemory g_pClientCommonBSP = g_mGameDll . FindStringReadOnly ( " vpk/client_mp_common.bsp " , true ) ;
inline CMemory g_pClientMPLobby = g_mGameDll . FindStringReadOnly ( " vpk/client_mp_lobby " , true ) ;
inline CMemory g_pClientMP = g_mGameDll . FindStringReadOnly ( " vpk/client_mp_ " , true ) ;
inline CMemory g_pClientSP = g_mGameDll . FindStringReadOnly ( " vpk/client_sp_ " , true ) ;
2022-04-09 02:18:57 +02:00
2021-12-25 22:36:38 +01:00
2021-12-31 03:41:33 +01:00
///////////////////////////////////////////////////////////////////////////////
class HOpcodes : public IDetour
{
2022-04-11 01:44:30 +02:00
virtual void GetAdr ( void ) const
2021-12-25 22:36:38 +01:00
{
2022-04-11 01:44:30 +02:00
std : : cout < < " | FUN: CShaderSystem::Init : 0x " < < std : : hex < < std : : uppercase < < CShaderSystem__Init . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2021-12-31 03:41:33 +01:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2022-04-11 01:44:30 +02:00
std : : cout < < " | FUN: CVGui::RunFrame : 0x " < < std : : hex < < std : : uppercase < < CVGui__RunFrame . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2022-02-18 02:51:16 +01:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2022-04-11 01:44:30 +02:00
std : : cout < < " | FUN: CEngineVGui::Shutdown : 0x " < < std : : hex < < std : : uppercase < < CEngineVGui__Shutdown . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: CEngineVGui::ActivateGameUI : 0x " < < std : : hex < < std : : uppercase < < CEngineVGui__ActivateGameUI . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2022-02-18 02:51:16 +01:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2022-04-11 01:44:30 +02:00
std : : cout < < " | FUN: Sys_InitGame : 0x " < < std : : hex < < std : : uppercase < < Sys_InitGame . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2022-02-18 02:51:16 +01:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2022-04-11 01:44:30 +02:00
std : : cout < < " | FUN: Host_Init_0 : 0x " < < std : : hex < < std : : uppercase < < gHost_Init_0 . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: Host_Init_1 : 0x " < < std : : hex < < std : : uppercase < < gHost_Init_1 . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: Host_Init_2 : 0x " < < std : : hex < < std : : uppercase < < gHost_Init_2 . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: Host_Disconnect : 0x " < < std : : hex < < std : : uppercase < < Host_Disconnect . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: _Host_RunFrame : 0x " < < std : : hex < < std : : uppercase < < _Host_RunFrame . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2021-12-31 03:41:33 +01:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2022-04-11 01:44:30 +02:00
std : : cout < < " | FUN: Server_S2C_CONNECT_1 : 0x " < < std : : hex < < std : : uppercase < < Server_S2C_CONNECT_1 . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: UpdateCurrentVideoConfig : 0x " < < std : : hex < < std : : uppercase < < UpdateCurrentVideoConfig . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: HandleConfigFile : 0x " < < std : : hex < < std : : uppercase < < HandleConfigFile . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: ResetPreviousGameState : 0x " < < std : : hex < < std : : uppercase < < ResetPreviousGameState . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2022-03-31 17:22:46 +02:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2022-04-11 01:44:30 +02:00
std : : cout < < " | CON: g_pClientVPKDir : 0x " < < std : : hex < < std : : uppercase < < g_pClientVPKDir . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | CON: g_pClientBSP : 0x " < < std : : hex < < std : : uppercase < < g_pClientBSP . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | CON: g_pClientCommonBSP : 0x " < < std : : hex < < std : : uppercase < < g_pClientCommonBSP . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | CON: g_pClientMPLobby : 0x " < < std : : hex < < std : : uppercase < < g_pClientMPLobby . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | CON: g_pClientMP : 0x " < < std : : hex < < std : : uppercase < < g_pClientMP . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
std : : cout < < " | CON: g_pClientSP : 0x " < < std : : hex < < std : : uppercase < < g_pClientSP . GetPtr ( ) < < std : : setw ( nPad ) < < " | " < < std : : endl ;
2022-01-26 23:43:16 +01:00
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
2021-12-25 22:36:38 +01:00
}
2022-04-11 01:44:30 +02:00
virtual void GetFun ( void ) const { }
virtual void GetVar ( void ) const { }
virtual void GetCon ( void ) const { }
virtual void Attach ( void ) const { }
virtual void Detach ( void ) const { }
2021-12-31 03:41:33 +01:00
} ;
///////////////////////////////////////////////////////////////////////////////
REGISTER ( HOpcodes ) ;