Massively improve bootup times

This commit is contained in:
ineed bots
2023-09-17 18:52:02 -06:00
parent 5d0e5e4227
commit df2440a3ba
13 changed files with 839 additions and 1708 deletions

View File

@ -79,79 +79,6 @@ namespace re_cscr_vm
utils::hook::detour Scr_RunCurrentThreads_hook;
utils::hook::detour Scr_ResetTimeout_hook;
void* Scr_VM_Init_original;
void* Scr_Init_original;
void* Scr_Shutdown_original;
void* Scr_ErrorInternal_original;
void* Scr_ClearOutParams_original;
void* GetDummyObject_original;
void* GetDummyFieldValue_original;
void* VM_ExecuteInternal_original;
void* VM_CancelNotifyInternal_original;
void* VM_CancelNotify_original;
void* VM_ArchiveStack_original;
void* Scr_AddLocalVars_original;
void* VM_UnarchiveStack_original;
void* VM_TerminateStack_original;
void* VM_TrimStack_original;
void* Scr_TerminateRunningThread_original;
void* Scr_TerminateWaitThread_original;
void* Scr_CancelWaittill_original;
void* Scr_TerminateWaittillThread_original;
void* Scr_TerminateThread_original;
void* VM_Notify_original;
void* Scr_NotifyNum_Internal_original;
void* Scr_CancelNotifyList_original;
void* VM_TerminateTime_original;
void* VM_Resume_original;
void* VM_Execute_original;
void* Scr_ExecThread_original;
void* Scr_ExecEntThread_original;
void* Scr_AddExecThread_original;
void* VM_SetTime_original;
void* Scr_InitSystem_original;
void* Scr_ShutdownSystem_original;
void* Scr_IsSystemActive_original;
void* Scr_GetInt_original;
void* Scr_GetAnim_original;
void* Scr_GetAnimTree_original;
void* Scr_GetFloat_original;
void* Scr_GetConstString_original;
void* Scr_GetConstLowercaseString_original;
void* Scr_GetString_original;
void* Scr_GetConstStringIncludeNull_original;
void* Scr_GetDebugString_original;
void* Scr_GetConstIString_original;
void* Scr_GetVector_original;
void* Scr_GetFunc_original;
void* Scr_GetEntityRef_original;
void* Scr_GetObject_original;
void* Scr_GetType_original;
void* Scr_GetTypeName_original;
void* Scr_GetPointerType_original;
void* Scr_AddInt_original;
void* Scr_AddFloat_original;
void* Scr_AddAnim_original;
void* Scr_AddUndefined_original;
void* Scr_AddObject_original;
void* Scr_AddString_original;
void* Scr_AddIString_original;
void* Scr_AddConstString_original;
void* Scr_AddVector_original;
void* Scr_MakeArray_original;
void* Scr_AddArray_original;
void* Scr_AddArrayStringIndexed_original;
void* Scr_Error_original;
void* Scr_TerminalError_original;
void* Scr_ParamError_original;
void* Scr_ObjectError_original;
void* SetEntityFieldValue_original;
void* GetEntityFieldValue_original;
void* Scr_SetStructField_original;
void* Scr_IncTime_original;
void* Scr_RunCurrentThreads_original;
void* Scr_ResetTimeout_original;
namespace
{
@ -167,7 +94,7 @@ namespace re_cscr_vm
void Scr_Init_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_Init(a1, Scr_Init_original);
game::Scr_Init(a1, Scr_Init_hook.get_original());
#else
codsrc::Scr_Init(a1);
#endif
@ -187,7 +114,7 @@ namespace re_cscr_vm
void Scr_Shutdown_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_Shutdown(a1, Scr_Shutdown_original);
game::Scr_Shutdown(a1, Scr_Shutdown_hook.get_original());
#else
codsrc::Scr_Shutdown(a1);
#endif
@ -207,7 +134,7 @@ namespace re_cscr_vm
void Scr_ErrorInternal_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_ErrorInternal(a1, Scr_ErrorInternal_original);
game::Scr_ErrorInternal(a1, Scr_ErrorInternal_hook.get_original());
#else
codsrc::Scr_ErrorInternal(a1);
#endif
@ -227,7 +154,7 @@ namespace re_cscr_vm
void Scr_ClearOutParams_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_ClearOutParams(a1, Scr_ClearOutParams_original);
game::Scr_ClearOutParams(a1, Scr_ClearOutParams_hook.get_original());
#else
codsrc::Scr_ClearOutParams(a1);
#endif
@ -247,7 +174,7 @@ namespace re_cscr_vm
unsigned int GetDummyObject_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::GetDummyObject(a1, GetDummyObject_original);
return game::GetDummyObject(a1, GetDummyObject_hook.get_original());
#else
return codsrc::GetDummyObject(a1);
#endif
@ -267,7 +194,7 @@ namespace re_cscr_vm
unsigned int GetDummyFieldValue_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::GetDummyFieldValue(a1, GetDummyFieldValue_original);
return game::GetDummyFieldValue(a1, GetDummyFieldValue_hook.get_original());
#else
return codsrc::GetDummyFieldValue(a1);
#endif
@ -296,7 +223,7 @@ namespace re_cscr_vm
void VM_CancelNotifyInternal_call(game::scriptInstance_t inst, unsigned int notifyListOwnerId, [[maybe_unused]] void* caller_addr, unsigned int startLocalId, unsigned int notifyListId, unsigned int notifyNameListId, unsigned int stringValue)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_CancelNotifyInternal(inst, notifyListOwnerId, startLocalId, notifyListId, notifyNameListId, stringValue, VM_CancelNotifyInternal_original);
game::VM_CancelNotifyInternal(inst, notifyListOwnerId, startLocalId, notifyListId, notifyNameListId, stringValue, VM_CancelNotifyInternal_hook.get_original());
#else
codsrc::VM_CancelNotifyInternal(inst, notifyListOwnerId, startLocalId, notifyListId, notifyNameListId, stringValue);
#endif
@ -317,7 +244,7 @@ namespace re_cscr_vm
void VM_CancelNotify_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int a2, unsigned int a3)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_CancelNotify(a1, a2, a3, VM_CancelNotify_original);
game::VM_CancelNotify(a1, a2, a3, VM_CancelNotify_hook.get_original());
#else
codsrc::VM_CancelNotify(a1, a2, a3);
#endif
@ -337,7 +264,7 @@ namespace re_cscr_vm
game::VariableStackBuffer* VM_ArchiveStack_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::VM_ArchiveStack(inst, VM_ArchiveStack_original);
return game::VM_ArchiveStack(inst, VM_ArchiveStack_hook.get_original());
#else
return codsrc::VM_ArchiveStack(inst);
#endif
@ -357,7 +284,7 @@ namespace re_cscr_vm
int Scr_AddLocalVars_call(game::scriptInstance_t a1, unsigned int a2, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_AddLocalVars(a1, a2, Scr_AddLocalVars_original);
return game::Scr_AddLocalVars(a1, a2, Scr_AddLocalVars_hook.get_original());
#else
return codsrc::Scr_AddLocalVars(a1, a2);
#endif
@ -387,7 +314,7 @@ namespace re_cscr_vm
void VM_TerminateStack_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int a2, unsigned int a3, game::VariableStackBuffer* name)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_TerminateStack(a1, a2, a3, name, VM_TerminateStack_original);
game::VM_TerminateStack(a1, a2, a3, name, VM_TerminateStack_hook.get_original());
#else
codsrc::VM_TerminateStack(a1, a2, a3, name);
#endif
@ -407,7 +334,7 @@ namespace re_cscr_vm
void VM_TrimStack_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int parentId, game::VariableStackBuffer* a3, int fromEndon)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_TrimStack(a1, parentId, a3, fromEndon, VM_TrimStack_original);
game::VM_TrimStack(a1, parentId, a3, fromEndon, VM_TrimStack_hook.get_original());
#else
codsrc::VM_TrimStack(a1, parentId, a3, fromEndon);
#endif
@ -427,7 +354,7 @@ namespace re_cscr_vm
void Scr_TerminateRunningThread_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int a2)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_TerminateRunningThread(a1, a2, Scr_TerminateRunningThread_original);
game::Scr_TerminateRunningThread(a1, a2, Scr_TerminateRunningThread_hook.get_original());
#else
codsrc::Scr_TerminateRunningThread(a1, a2);
#endif
@ -447,7 +374,7 @@ namespace re_cscr_vm
void Scr_TerminateWaitThread_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int a2, unsigned int a3)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_TerminateWaitThread(a1, a2, a3, Scr_TerminateWaitThread_original);
game::Scr_TerminateWaitThread(a1, a2, a3, Scr_TerminateWaitThread_hook.get_original());
#else
codsrc::Scr_TerminateWaitThread(a1, a2, a3);
#endif
@ -467,7 +394,7 @@ namespace re_cscr_vm
void Scr_CancelWaittill_call(game::scriptInstance_t inst, unsigned int startLocalId, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_CancelWaittill(inst, startLocalId, Scr_CancelWaittill_original);
game::Scr_CancelWaittill(inst, startLocalId, Scr_CancelWaittill_hook.get_original());
#else
codsrc::Scr_CancelWaittill(inst, startLocalId);
#endif
@ -488,7 +415,7 @@ namespace re_cscr_vm
void Scr_TerminateWaittillThread_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int a2, unsigned int a3)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_TerminateWaittillThread(a1, a2, a3, Scr_TerminateWaittillThread_original);
game::Scr_TerminateWaittillThread(a1, a2, a3, Scr_TerminateWaittillThread_hook.get_original());
#else
codsrc::Scr_TerminateWaittillThread(a1, a2, a3);
#endif
@ -508,7 +435,7 @@ namespace re_cscr_vm
void Scr_TerminateThread_call(unsigned int a2, game::scriptInstance_t a3, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_TerminateThread(a2, a3, Scr_TerminateThread_original);
game::Scr_TerminateThread(a2, a3, Scr_TerminateThread_hook.get_original());
#else
codsrc::Scr_TerminateThread(a2, a3);
#endif
@ -529,7 +456,7 @@ namespace re_cscr_vm
void VM_Notify_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, int notifyListOwnerId, unsigned int stringValue, game::VariableValue* top)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_Notify(inst, notifyListOwnerId, stringValue, top, VM_Notify_original);
game::VM_Notify(inst, notifyListOwnerId, stringValue, top, VM_Notify_hook.get_original());
#else
codsrc::VM_Notify(inst, notifyListOwnerId, stringValue, top);
#endif
@ -549,7 +476,7 @@ namespace re_cscr_vm
void Scr_NotifyNum_Internal_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, int entNum, int entClass, unsigned int notifStr, int numParams)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_NotifyNum_Internal(inst, entNum, entClass, notifStr, numParams, Scr_NotifyNum_Internal_original);
game::Scr_NotifyNum_Internal(inst, entNum, entClass, notifStr, numParams, Scr_NotifyNum_Internal_hook.get_original());
#else
codsrc::Scr_NotifyNum_Internal(inst, entNum, entClass, notifStr, numParams);
#endif
@ -569,7 +496,7 @@ namespace re_cscr_vm
void Scr_CancelNotifyList_call(unsigned int notifyListOwnerId, [[maybe_unused]] void* caller_addr, game::scriptInstance_t inst)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_CancelNotifyList(notifyListOwnerId, inst, Scr_CancelNotifyList_original);
game::Scr_CancelNotifyList(notifyListOwnerId, inst, Scr_CancelNotifyList_hook.get_original());
#else
codsrc::Scr_CancelNotifyList(notifyListOwnerId, inst);
#endif
@ -589,7 +516,7 @@ namespace re_cscr_vm
void VM_TerminateTime_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int parentId)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_TerminateTime(a1, parentId, VM_TerminateTime_original);
game::VM_TerminateTime(a1, parentId, VM_TerminateTime_hook.get_original());
#else
codsrc::VM_TerminateTime(a1, parentId);
#endif
@ -609,7 +536,7 @@ namespace re_cscr_vm
void VM_Resume_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, unsigned int timeId)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_Resume(inst, timeId, VM_Resume_original);
game::VM_Resume(inst, timeId, VM_Resume_hook.get_original());
#else
codsrc::VM_Resume(inst, timeId);
#endif
@ -638,7 +565,7 @@ namespace re_cscr_vm
unsigned __int16 Scr_ExecThread_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, unsigned int handle, unsigned int paramCount)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_ExecThread(inst, handle, paramCount, Scr_ExecThread_original);
return game::Scr_ExecThread(inst, handle, paramCount, Scr_ExecThread_hook.get_original());
#else
return codsrc::Scr_ExecThread(inst, handle, paramCount);
#endif
@ -657,7 +584,7 @@ namespace re_cscr_vm
unsigned __int16 Scr_ExecEntThread_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, int entNum, unsigned int handle, int numParams, unsigned int entClass)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_ExecEntThreadNum(inst, entNum, handle, numParams, entClass, Scr_ExecEntThread_original);
return game::Scr_ExecEntThreadNum(inst, entNum, handle, numParams, entClass, Scr_ExecEntThread_hook.get_original());
#else
return codsrc::Scr_ExecEntThreadNum(inst, entNum, handle, numParams, entClass);
#endif
@ -677,7 +604,7 @@ namespace re_cscr_vm
void Scr_AddExecThread_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, unsigned int handle)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddExecThread(a1, handle, Scr_AddExecThread_original);
game::Scr_AddExecThread(a1, handle, Scr_AddExecThread_hook.get_original());
#else
codsrc::Scr_AddExecThread(a1, handle);
#endif
@ -697,7 +624,7 @@ namespace re_cscr_vm
void VM_SetTime_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::VM_SetTime(a1, VM_SetTime_original);
game::VM_SetTime(a1, VM_SetTime_hook.get_original());
#else
codsrc::VM_SetTime(a1);
#endif
@ -717,7 +644,7 @@ namespace re_cscr_vm
void Scr_InitSystem_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_InitSystem(a1, Scr_InitSystem_original);
game::Scr_InitSystem(a1, Scr_InitSystem_hook.get_original());
#else
codsrc::Scr_InitSystem(a1);
#endif
@ -760,7 +687,7 @@ namespace re_cscr_vm
int Scr_GetInt_call(game::scriptInstance_t inst, unsigned int index, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetInt(inst, index, Scr_GetInt_original);
return game::Scr_GetInt(inst, index, Scr_GetInt_hook.get_original());
#else
return codsrc::Scr_GetInt(inst, index);
#endif
@ -781,7 +708,7 @@ namespace re_cscr_vm
game::scr_anim_s Scr_GetAnim_call(unsigned int index, game::XAnimTree_s* a2, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetAnim(index, a2, Scr_GetAnim_original);
return game::Scr_GetAnim(index, a2, Scr_GetAnim_hook.get_original());
#else
return codsrc::Scr_GetAnim(index, a2);
#endif
@ -811,7 +738,7 @@ namespace re_cscr_vm
float Scr_GetFloat_call(game::scriptInstance_t inst, unsigned int index, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetFloat(inst, index, Scr_GetFloat_original);
return game::Scr_GetFloat(inst, index, Scr_GetFloat_hook.get_original());
#else
return codsrc::Scr_GetFloat(inst, index);
#endif
@ -839,7 +766,7 @@ namespace re_cscr_vm
unsigned int Scr_GetConstString_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, unsigned int index)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetConstString(inst, index, Scr_GetConstString_original);
return game::Scr_GetConstString(inst, index, Scr_GetConstString_hook.get_original());
#else
return codsrc::Scr_GetConstString(inst, index);
#endif
@ -859,7 +786,7 @@ namespace re_cscr_vm
unsigned int Scr_GetConstLowercaseString_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, unsigned int index)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetConstLowercaseString(inst, index, Scr_GetConstLowercaseString_original);
return game::Scr_GetConstLowercaseString(inst, index, Scr_GetConstLowercaseString_hook.get_original());
#else
return codsrc::Scr_GetConstLowercaseString(inst, index);
#endif
@ -879,7 +806,7 @@ namespace re_cscr_vm
const char* Scr_GetString_call(unsigned int index, game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetString(index, inst, Scr_GetString_original);
return game::Scr_GetString(index, inst, Scr_GetString_hook.get_original());
#else
return codsrc::Scr_GetString(index, inst);
#endif
@ -900,7 +827,7 @@ namespace re_cscr_vm
unsigned int Scr_GetConstStringIncludeNull_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetConstStringIncludeNull(a1, Scr_GetConstStringIncludeNull_original);
return game::Scr_GetConstStringIncludeNull(a1, Scr_GetConstStringIncludeNull_hook.get_original());
#else
return codsrc::Scr_GetConstStringIncludeNull(a1);
#endif
@ -920,7 +847,7 @@ namespace re_cscr_vm
char* Scr_GetDebugString_call(game::scriptInstance_t a1, unsigned int a2, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetDebugString(a1, a2, Scr_GetDebugString_original);
return game::Scr_GetDebugString(a1, a2, Scr_GetDebugString_hook.get_original());
#else
return codsrc::Scr_GetDebugString(a1, a2);
#endif
@ -941,7 +868,7 @@ namespace re_cscr_vm
unsigned int Scr_GetConstIString_call(unsigned int index, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetConstIString(index, Scr_GetConstIString_original);
return game::Scr_GetConstIString(index, Scr_GetConstIString_hook.get_original());
#else
return codsrc::Scr_GetConstIString(index);
#endif
@ -961,7 +888,7 @@ namespace re_cscr_vm
void Scr_GetVector_call(game::scriptInstance_t inst, float* value, [[maybe_unused]] void* caller_addr, unsigned int index)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_GetVector(inst, value, index, Scr_GetVector_original);
game::Scr_GetVector(inst, value, index, Scr_GetVector_hook.get_original());
#else
codsrc::Scr_GetVector(inst, value, index);
#endif
@ -991,7 +918,7 @@ namespace re_cscr_vm
game::scr_entref_t* Scr_GetEntityRef_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, game::scr_entref_t* retstr, unsigned int index)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetEntityRef(inst, retstr, index, Scr_GetEntityRef_original);
return game::Scr_GetEntityRef(inst, retstr, index, Scr_GetEntityRef_hook.get_original());
#else
return codsrc::Scr_GetEntityRef(inst, retstr, index);
#endif
@ -1011,7 +938,7 @@ namespace re_cscr_vm
game::VariableUnion Scr_GetObject_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetObject(a1, Scr_GetObject_original);
return game::Scr_GetObject(a1, Scr_GetObject_hook.get_original());
#else
return codsrc::Scr_GetObject(a1);
#endif
@ -1031,7 +958,7 @@ namespace re_cscr_vm
game::VariableType Scr_GetType_call(game::scriptInstance_t inst, unsigned int index, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetType(inst, index, Scr_GetType_original);
return game::Scr_GetType(inst, index, Scr_GetType_hook.get_original());
#else
return codsrc::Scr_GetType(inst, index);
#endif
@ -1052,7 +979,7 @@ namespace re_cscr_vm
const char* Scr_GetTypeName_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetTypeName(a1, Scr_GetTypeName_original);
return game::Scr_GetTypeName(a1, Scr_GetTypeName_hook.get_original());
#else
return codsrc::Scr_GetTypeName(a1);
#endif
@ -1072,7 +999,7 @@ namespace re_cscr_vm
game::VariableType Scr_GetPointerType_call(game::scriptInstance_t a1, unsigned int a2, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::Scr_GetPointerType(a1, a2, Scr_GetPointerType_original);
return game::Scr_GetPointerType(a1, a2, Scr_GetPointerType_hook.get_original());
#else
return codsrc::Scr_GetPointerType(a1, a2);
#endif
@ -1093,7 +1020,7 @@ namespace re_cscr_vm
void Scr_AddInt_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, int value)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddInt(inst, value, Scr_AddInt_original);
game::Scr_AddInt(inst, value, Scr_AddInt_hook.get_original());
#else
codsrc::Scr_AddInt(inst, value);
#endif
@ -1113,7 +1040,7 @@ namespace re_cscr_vm
void Scr_AddFloat_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, float value)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddFloat(inst, value, Scr_AddFloat_original);
game::Scr_AddFloat(inst, value, Scr_AddFloat_hook.get_original());
#else
codsrc::Scr_AddFloat(inst, value);
#endif
@ -1142,7 +1069,7 @@ namespace re_cscr_vm
void Scr_AddUndefined_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddUndefined(inst, Scr_AddUndefined_original);
game::Scr_AddUndefined(inst, Scr_AddUndefined_hook.get_original());
#else
codsrc::Scr_AddUndefined(inst);
#endif
@ -1162,7 +1089,7 @@ namespace re_cscr_vm
void Scr_AddObject_call(game::scriptInstance_t inst, unsigned int entid, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddObject(inst, entid, Scr_AddObject_original);
game::Scr_AddObject(inst, entid, Scr_AddObject_hook.get_original());
#else
codsrc::Scr_AddObject(inst, entid);
#endif
@ -1183,7 +1110,7 @@ namespace re_cscr_vm
void Scr_AddString_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, char* string)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddString(inst, string, Scr_AddString_original);
game::Scr_AddString(inst, string, Scr_AddString_hook.get_original());
#else
codsrc::Scr_AddString(inst, string);
#endif
@ -1203,7 +1130,7 @@ namespace re_cscr_vm
void Scr_AddIString_call(char* string, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddIString(string, Scr_AddIString_original);
game::Scr_AddIString(string, Scr_AddIString_hook.get_original());
#else
codsrc::Scr_AddIString(string);
#endif
@ -1223,7 +1150,7 @@ namespace re_cscr_vm
void Scr_AddConstString_call(game::scriptInstance_t inst, unsigned int id, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddConstString(inst, id, Scr_AddConstString_original);
game::Scr_AddConstString(inst, id, Scr_AddConstString_hook.get_original());
#else
codsrc::Scr_AddConstString(inst, id);
#endif
@ -1244,7 +1171,7 @@ namespace re_cscr_vm
void Scr_AddVector_call(game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, float* value)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddVector(inst, value, Scr_AddVector_original);
game::Scr_AddVector(inst, value, Scr_AddVector_hook.get_original());
#else
codsrc::Scr_AddVector(inst, value);
#endif
@ -1264,7 +1191,7 @@ namespace re_cscr_vm
void Scr_MakeArray_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_MakeArray(a1, Scr_MakeArray_original);
game::Scr_MakeArray(a1, Scr_MakeArray_hook.get_original());
#else
codsrc::Scr_MakeArray(a1);
#endif
@ -1293,7 +1220,7 @@ namespace re_cscr_vm
void Scr_AddArrayStringIndexed_call(unsigned int id, game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_AddArrayStringIndexed(id, inst, Scr_AddArrayStringIndexed_original);
game::Scr_AddArrayStringIndexed(id, inst, Scr_AddArrayStringIndexed_hook.get_original());
#else
codsrc::Scr_AddArrayStringIndexed(id, inst);
#endif
@ -1314,7 +1241,7 @@ namespace re_cscr_vm
void Scr_Error_call(const char* err, game::scriptInstance_t inst, [[maybe_unused]] void* caller_addr, int is_terminal)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_Error(err, inst, is_terminal, Scr_Error_original);
game::Scr_Error(err, inst, is_terminal, Scr_Error_hook.get_original());
#else
codsrc::Scr_Error(err, inst, is_terminal);
#endif
@ -1335,7 +1262,7 @@ namespace re_cscr_vm
void Scr_TerminalError_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr, char* Source)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_TerminalError(a1, Source, Scr_TerminalError_original);
game::Scr_TerminalError(a1, Source, Scr_TerminalError_hook.get_original());
#else
codsrc::Scr_TerminalError(a1, Source);
#endif
@ -1355,7 +1282,7 @@ namespace re_cscr_vm
void Scr_ParamError_call(int a1, game::scriptInstance_t a2, [[maybe_unused]] void* caller_addr, char* Source)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_ParamError(a1, a2, Source, Scr_ParamError_original);
game::Scr_ParamError(a1, a2, Source, Scr_ParamError_hook.get_original());
#else
codsrc::Scr_ParamError(a1, a2, Source);
#endif
@ -1376,7 +1303,7 @@ namespace re_cscr_vm
void Scr_ObjectError_call(game::scriptInstance_t a1, const char* a2, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_ObjectError(a1, a2, Scr_ObjectError_original);
game::Scr_ObjectError(a1, a2, Scr_ObjectError_hook.get_original());
#else
codsrc::Scr_ObjectError(a1, a2);
#endif
@ -1397,7 +1324,7 @@ namespace re_cscr_vm
bool SetEntityFieldValue_call(game::scriptInstance_t inst, int offset_, int entnum, [[maybe_unused]] void* caller_addr, game::classNum_e classnum, int clientNum, game::VariableValue* value)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::SetEntityFieldValue(inst, offset_, entnum, classnum, clientNum, value, SetEntityFieldValue_original);
return game::SetEntityFieldValue(inst, offset_, entnum, classnum, clientNum, value, SetEntityFieldValue_hook.get_original());
#else
return codsrc::SetEntityFieldValue(inst, offset_, entnum, classnum, clientNum, value);
#endif
@ -1419,7 +1346,7 @@ namespace re_cscr_vm
game::VariableValue GetEntityFieldValue_call(int offset_, int entnum, [[maybe_unused]] void* caller_addr, game::scriptInstance_t inst, game::classNum_e classnum, int clientNum)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
return game::GetEntityFieldValue(offset_, entnum, inst, classnum, clientNum, GetEntityFieldValue_original);
return game::GetEntityFieldValue(offset_, entnum, inst, classnum, clientNum, GetEntityFieldValue_hook.get_original());
#else
return codsrc::GetEntityFieldValue(offset_, entnum, inst, classnum, clientNum);
#endif
@ -1440,7 +1367,7 @@ namespace re_cscr_vm
void Scr_SetStructField_call(unsigned int a1, unsigned int a2, [[maybe_unused]] void* caller_addr, game::scriptInstance_t a3)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_SetStructField(a1, a2, a3, Scr_SetStructField_original);
game::Scr_SetStructField(a1, a2, a3, Scr_SetStructField_hook.get_original());
#else
codsrc::Scr_SetStructField(a1, a2, a3);
#endif
@ -1461,7 +1388,7 @@ namespace re_cscr_vm
void Scr_IncTime_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_IncTime(a1, Scr_IncTime_original);
game::Scr_IncTime(a1, Scr_IncTime_hook.get_original());
#else
codsrc::Scr_IncTime(a1);
#endif
@ -1481,7 +1408,7 @@ namespace re_cscr_vm
void Scr_RunCurrentThreads_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_RunCurrentThreads(a1, Scr_RunCurrentThreads_original);
game::Scr_RunCurrentThreads(a1, Scr_RunCurrentThreads_hook.get_original());
#else
codsrc::Scr_RunCurrentThreads(a1);
#endif
@ -1501,7 +1428,7 @@ namespace re_cscr_vm
void Scr_ResetTimeout_call(game::scriptInstance_t a1, [[maybe_unused]] void* caller_addr)
{
#ifdef RE_CSCR_VM_USE_WRAPPERS
game::Scr_ResetTimeout(a1, Scr_ResetTimeout_original);
game::Scr_ResetTimeout(a1, Scr_ResetTimeout_hook.get_original());
#else
codsrc::Scr_ResetTimeout(a1);
#endif
@ -1524,152 +1451,83 @@ namespace re_cscr_vm
public:
void post_unpack() override
{
Scr_VM_Init_hook.create(game::Scr_VM_Init.get(), Scr_VM_Init_stub);
Scr_Init_hook.create(game::Scr_Init_ADDR(), Scr_Init_stub);
Scr_Shutdown_hook.create(game::Scr_Shutdown_ADDR(), Scr_Shutdown_stub);
Scr_ErrorInternal_hook.create(game::Scr_ErrorInternal_ADDR(), Scr_ErrorInternal_stub);
Scr_ClearOutParams_hook.create(game::Scr_ClearOutParams_ADDR(), Scr_ClearOutParams_stub);
GetDummyObject_hook.create(game::GetDummyObject_ADDR(), GetDummyObject_stub);
GetDummyFieldValue_hook.create(game::GetDummyFieldValue_ADDR(), GetDummyFieldValue_stub);
VM_ExecuteInternal_hook.create(game::VM_ExecuteInternal.get(), VM_ExecuteInternal_stub);
VM_CancelNotifyInternal_hook.create(game::VM_CancelNotifyInternal_ADDR(), VM_CancelNotifyInternal_stub);
VM_CancelNotify_hook.create(game::VM_CancelNotify_ADDR(), VM_CancelNotify_stub);
VM_ArchiveStack_hook.create(game::VM_ArchiveStack_ADDR(), VM_ArchiveStack_stub);
Scr_AddLocalVars_hook.create(game::Scr_AddLocalVars_ADDR(), Scr_AddLocalVars_stub);
VM_UnarchiveStack_hook.create(game::VM_UnarchiveStack.get(), VM_UnarchiveStack_stub);
VM_TerminateStack_hook.create(game::VM_TerminateStack_ADDR(), VM_TerminateStack_stub);
VM_TrimStack_hook.create(game::VM_TrimStack_ADDR(), VM_TrimStack_stub);
Scr_TerminateRunningThread_hook.create(game::Scr_TerminateRunningThread_ADDR(), Scr_TerminateRunningThread_stub);
Scr_TerminateWaitThread_hook.create(game::Scr_TerminateWaitThread_ADDR(), Scr_TerminateWaitThread_stub);
Scr_CancelWaittill_hook.create(game::Scr_CancelWaittill_ADDR(), Scr_CancelWaittill_stub);
Scr_TerminateWaittillThread_hook.create(game::Scr_TerminateWaittillThread_ADDR(), Scr_TerminateWaittillThread_stub);
Scr_TerminateThread_hook.create(game::Scr_TerminateThread_ADDR(), Scr_TerminateThread_stub);
VM_Notify_hook.create(game::VM_Notify_ADDR(), VM_Notify_stub);
Scr_NotifyNum_Internal_hook.create(game::Scr_NotifyNum_Internal_ADDR(), Scr_NotifyNum_Internal_stub);
Scr_CancelNotifyList_hook.create(game::Scr_CancelNotifyList_ADDR(), Scr_CancelNotifyList_stub);
VM_TerminateTime_hook.create(game::VM_TerminateTime_ADDR(), VM_TerminateTime_stub);
VM_Resume_hook.create(game::VM_Resume_ADDR(), VM_Resume_stub);
VM_Execute_hook.create(game::VM_Execute.get(), VM_Execute_stub);
Scr_ExecThread_hook.create(game::Scr_ExecThread_ADDR(), Scr_ExecThread_stub);
Scr_ExecEntThread_hook.create(game::Scr_ExecEntThread_ADDR(), Scr_ExecEntThread_stub);
Scr_AddExecThread_hook.create(game::Scr_AddExecThread_ADDR(), Scr_AddExecThread_stub);
VM_SetTime_hook.create(game::VM_SetTime_ADDR(), VM_SetTime_stub);
Scr_InitSystem_hook.create(game::Scr_InitSystem_ADDR(), Scr_InitSystem_stub);
Scr_ShutdownSystem_hook.create(game::Scr_ShutdownSystem.get(), Scr_ShutdownSystem_stub);
Scr_IsSystemActive_hook.create(game::Scr_IsSystemActive.get(), Scr_IsSystemActive_stub);
Scr_GetInt_hook.create(game::Scr_GetInt_ADDR(), Scr_GetInt_stub);
Scr_GetAnim_hook.create(game::Scr_GetAnim_ADDR(), Scr_GetAnim_stub);
Scr_GetAnimTree_hook.create(game::Scr_GetAnimTree.get(), Scr_GetAnimTree_stub);
Scr_GetFloat_hook.create(game::Scr_GetFloat_ADDR(), Scr_GetFloat_stub);
Scr_GetConstString_hook.create(game::Scr_GetConstString_ADDR(), Scr_GetConstString_stub);
Scr_GetConstLowercaseString_hook.create(game::Scr_GetConstLowercaseString_ADDR(), Scr_GetConstLowercaseString_stub);
Scr_GetString_hook.create(game::Scr_GetString_ADDR(), Scr_GetString_stub);
Scr_GetConstStringIncludeNull_hook.create(game::Scr_GetConstStringIncludeNull_ADDR(), Scr_GetConstStringIncludeNull_stub);
Scr_GetDebugString_hook.create(game::Scr_GetDebugString_ADDR(), Scr_GetDebugString_stub);
Scr_GetConstIString_hook.create(game::Scr_GetConstIString_ADDR(), Scr_GetConstIString_stub);
Scr_GetVector_hook.create(game::Scr_GetVector_ADDR(), Scr_GetVector_stub);
Scr_GetFunc_hook.create(game::Scr_GetFunc.get(), Scr_GetFunc_stub);
Scr_GetEntityRef_hook.create(game::Scr_GetEntityRef_ADDR(), Scr_GetEntityRef_stub);
Scr_GetObject_hook.create(game::Scr_GetObject_ADDR(), Scr_GetObject_stub);
Scr_GetType_hook.create(game::Scr_GetType_ADDR(), Scr_GetType_stub);
Scr_GetTypeName_hook.create(game::Scr_GetTypeName_ADDR(), Scr_GetTypeName_stub);
Scr_GetPointerType_hook.create(game::Scr_GetPointerType_ADDR(), Scr_GetPointerType_stub);
Scr_AddInt_hook.create(game::Scr_AddInt_ADDR(), Scr_AddInt_stub);
Scr_AddFloat_hook.create(game::Scr_AddFloat_ADDR(), Scr_AddFloat_stub);
Scr_AddAnim_hook.create(game::Scr_AddAnim.get(), Scr_AddAnim_stub);
Scr_AddUndefined_hook.create(game::Scr_AddUndefined_ADDR(), Scr_AddUndefined_stub);
Scr_AddObject_hook.create(game::Scr_AddObject_ADDR(), Scr_AddObject_stub);
Scr_AddString_hook.create(game::Scr_AddString_ADDR(), Scr_AddString_stub);
Scr_AddIString_hook.create(game::Scr_AddIString_ADDR(), Scr_AddIString_stub);
Scr_AddConstString_hook.create(game::Scr_AddConstString_ADDR(), Scr_AddConstString_stub);
Scr_AddVector_hook.create(game::Scr_AddVector_ADDR(), Scr_AddVector_stub);
Scr_MakeArray_hook.create(game::Scr_MakeArray_ADDR(), Scr_MakeArray_stub);
Scr_AddArray_hook.create(game::Scr_AddArray.get(), Scr_AddArray_stub);
Scr_AddArrayStringIndexed_hook.create(game::Scr_AddArrayStringIndexed_ADDR(), Scr_AddArrayStringIndexed_stub);
Scr_Error_hook.create(game::Scr_Error_ADDR(), Scr_Error_stub);
Scr_TerminalError_hook.create(game::Scr_TerminalError_ADDR(), Scr_TerminalError_stub);
Scr_ParamError_hook.create(game::Scr_ParamError_ADDR(), Scr_ParamError_stub);
Scr_ObjectError_hook.create(game::Scr_ObjectError_ADDR(), Scr_ObjectError_stub);
SetEntityFieldValue_hook.create(game::SetEntityFieldValue_ADDR(), SetEntityFieldValue_stub);
GetEntityFieldValue_hook.create(game::GetEntityFieldValue_ADDR(), GetEntityFieldValue_stub);
Scr_SetStructField_hook.create(game::Scr_SetStructField_ADDR(), Scr_SetStructField_stub);
Scr_IncTime_hook.create(game::Scr_IncTime_ADDR(), Scr_IncTime_stub);
Scr_RunCurrentThreads_hook.create(game::Scr_RunCurrentThreads_ADDR(), Scr_RunCurrentThreads_stub);
Scr_ResetTimeout_hook.create(game::Scr_ResetTimeout_ADDR(), Scr_ResetTimeout_stub);
bool quick = true;
#ifdef RE_CSCR_VM_USE_WRAPPERS
quick = false;
#endif
//Original hook function addresses
Scr_VM_Init_original = Scr_VM_Init_hook.get_original();
Scr_Init_original = Scr_Init_hook.get_original();
Scr_Shutdown_original = Scr_Shutdown_hook.get_original();
Scr_ErrorInternal_original = Scr_ErrorInternal_hook.get_original();
Scr_ClearOutParams_original = Scr_ClearOutParams_hook.get_original();
GetDummyObject_original = GetDummyObject_hook.get_original();
GetDummyFieldValue_original = GetDummyFieldValue_hook.get_original();
VM_ExecuteInternal_original = VM_ExecuteInternal_hook.get_original();
VM_CancelNotifyInternal_original = VM_CancelNotifyInternal_hook.get_original();
VM_CancelNotify_original = VM_CancelNotify_hook.get_original();
VM_ArchiveStack_original = VM_ArchiveStack_hook.get_original();
Scr_AddLocalVars_original = Scr_AddLocalVars_hook.get_original();
VM_UnarchiveStack_original = VM_UnarchiveStack_hook.get_original();
VM_TerminateStack_original = VM_TerminateStack_hook.get_original();
VM_TrimStack_original = VM_TrimStack_hook.get_original();
Scr_TerminateRunningThread_original = Scr_TerminateRunningThread_hook.get_original();
Scr_TerminateWaitThread_original = Scr_TerminateWaitThread_hook.get_original();
Scr_CancelWaittill_original = Scr_CancelWaittill_hook.get_original();
Scr_TerminateWaittillThread_original = Scr_TerminateWaittillThread_hook.get_original();
Scr_TerminateThread_original = Scr_TerminateThread_hook.get_original();
VM_Notify_original = VM_Notify_hook.get_original();
Scr_NotifyNum_Internal_original = Scr_NotifyNum_Internal_hook.get_original();
Scr_CancelNotifyList_original = Scr_CancelNotifyList_hook.get_original();
VM_TerminateTime_original = VM_TerminateTime_hook.get_original();
VM_Resume_original = VM_Resume_hook.get_original();
VM_Execute_original = VM_Execute_hook.get_original();
Scr_ExecThread_original = Scr_ExecThread_hook.get_original();
Scr_ExecEntThread_original = Scr_ExecEntThread_hook.get_original();
Scr_AddExecThread_original = Scr_AddExecThread_hook.get_original();
VM_SetTime_original = VM_SetTime_hook.get_original();
Scr_InitSystem_original = Scr_InitSystem_hook.get_original();
Scr_ShutdownSystem_original = Scr_ShutdownSystem_hook.get_original();
Scr_IsSystemActive_original = Scr_IsSystemActive_hook.get_original();
Scr_GetInt_original = Scr_GetInt_hook.get_original();
Scr_GetAnim_original = Scr_GetAnim_hook.get_original();
Scr_GetAnimTree_original = Scr_GetAnimTree_hook.get_original();
Scr_GetFloat_original = Scr_GetFloat_hook.get_original();
Scr_GetConstString_original = Scr_GetConstString_hook.get_original();
Scr_GetConstLowercaseString_original = Scr_GetConstLowercaseString_hook.get_original();
Scr_GetString_original = Scr_GetString_hook.get_original();
Scr_GetConstStringIncludeNull_original = Scr_GetConstStringIncludeNull_hook.get_original();
Scr_GetDebugString_original = Scr_GetDebugString_hook.get_original();
Scr_GetConstIString_original = Scr_GetConstIString_hook.get_original();
Scr_GetVector_original = Scr_GetVector_hook.get_original();
Scr_GetFunc_original = Scr_GetFunc_hook.get_original();
Scr_GetEntityRef_original = Scr_GetEntityRef_hook.get_original();
Scr_GetObject_original = Scr_GetObject_hook.get_original();
Scr_GetType_original = Scr_GetType_hook.get_original();
Scr_GetTypeName_original = Scr_GetTypeName_hook.get_original();
Scr_GetPointerType_original = Scr_GetPointerType_hook.get_original();
Scr_AddInt_original = Scr_AddInt_hook.get_original();
Scr_AddFloat_original = Scr_AddFloat_hook.get_original();
Scr_AddAnim_original = Scr_AddAnim_hook.get_original();
Scr_AddUndefined_original = Scr_AddUndefined_hook.get_original();
Scr_AddObject_original = Scr_AddObject_hook.get_original();
Scr_AddString_original = Scr_AddString_hook.get_original();
Scr_AddIString_original = Scr_AddIString_hook.get_original();
Scr_AddConstString_original = Scr_AddConstString_hook.get_original();
Scr_AddVector_original = Scr_AddVector_hook.get_original();
Scr_MakeArray_original = Scr_MakeArray_hook.get_original();
Scr_AddArray_original = Scr_AddArray_hook.get_original();
Scr_AddArrayStringIndexed_original = Scr_AddArrayStringIndexed_hook.get_original();
Scr_Error_original = Scr_Error_hook.get_original();
Scr_TerminalError_original = Scr_TerminalError_hook.get_original();
Scr_ParamError_original = Scr_ParamError_hook.get_original();
Scr_ObjectError_original = Scr_ObjectError_hook.get_original();
SetEntityFieldValue_original = SetEntityFieldValue_hook.get_original();
GetEntityFieldValue_original = GetEntityFieldValue_hook.get_original();
Scr_SetStructField_original = Scr_SetStructField_hook.get_original();
Scr_IncTime_original = Scr_IncTime_hook.get_original();
Scr_RunCurrentThreads_original = Scr_RunCurrentThreads_hook.get_original();
Scr_ResetTimeout_original = Scr_ResetTimeout_hook.get_original();
Scr_VM_Init_hook.create(game::Scr_VM_Init.get(), Scr_VM_Init_stub, quick);
Scr_Init_hook.create(game::Scr_Init_ADDR(), Scr_Init_stub, quick);
Scr_Shutdown_hook.create(game::Scr_Shutdown_ADDR(), Scr_Shutdown_stub, quick);
Scr_ErrorInternal_hook.create(game::Scr_ErrorInternal_ADDR(), Scr_ErrorInternal_stub, quick);
Scr_ClearOutParams_hook.create(game::Scr_ClearOutParams_ADDR(), Scr_ClearOutParams_stub, quick);
GetDummyObject_hook.create(game::GetDummyObject_ADDR(), GetDummyObject_stub, quick);
GetDummyFieldValue_hook.create(game::GetDummyFieldValue_ADDR(), GetDummyFieldValue_stub, quick);
VM_ExecuteInternal_hook.create(game::VM_ExecuteInternal.get(), VM_ExecuteInternal_stub, quick);
VM_CancelNotifyInternal_hook.create(game::VM_CancelNotifyInternal_ADDR(), VM_CancelNotifyInternal_stub, quick);
VM_CancelNotify_hook.create(game::VM_CancelNotify_ADDR(), VM_CancelNotify_stub, quick);
VM_ArchiveStack_hook.create(game::VM_ArchiveStack_ADDR(), VM_ArchiveStack_stub, quick);
Scr_AddLocalVars_hook.create(game::Scr_AddLocalVars_ADDR(), Scr_AddLocalVars_stub, quick);
VM_UnarchiveStack_hook.create(game::VM_UnarchiveStack.get(), VM_UnarchiveStack_stub, quick);
VM_TerminateStack_hook.create(game::VM_TerminateStack_ADDR(), VM_TerminateStack_stub, quick);
VM_TrimStack_hook.create(game::VM_TrimStack_ADDR(), VM_TrimStack_stub, quick);
Scr_TerminateRunningThread_hook.create(game::Scr_TerminateRunningThread_ADDR(), Scr_TerminateRunningThread_stub, quick);
Scr_TerminateWaitThread_hook.create(game::Scr_TerminateWaitThread_ADDR(), Scr_TerminateWaitThread_stub, quick);
Scr_CancelWaittill_hook.create(game::Scr_CancelWaittill_ADDR(), Scr_CancelWaittill_stub, quick);
Scr_TerminateWaittillThread_hook.create(game::Scr_TerminateWaittillThread_ADDR(), Scr_TerminateWaittillThread_stub, quick);
Scr_TerminateThread_hook.create(game::Scr_TerminateThread_ADDR(), Scr_TerminateThread_stub, quick);
VM_Notify_hook.create(game::VM_Notify_ADDR(), VM_Notify_stub, quick);
Scr_NotifyNum_Internal_hook.create(game::Scr_NotifyNum_Internal_ADDR(), Scr_NotifyNum_Internal_stub, quick);
Scr_CancelNotifyList_hook.create(game::Scr_CancelNotifyList_ADDR(), Scr_CancelNotifyList_stub, quick);
VM_TerminateTime_hook.create(game::VM_TerminateTime_ADDR(), VM_TerminateTime_stub, quick);
VM_Resume_hook.create(game::VM_Resume_ADDR(), VM_Resume_stub, quick);
VM_Execute_hook.create(game::VM_Execute.get(), VM_Execute_stub, quick);
Scr_ExecThread_hook.create(game::Scr_ExecThread_ADDR(), Scr_ExecThread_stub, quick);
Scr_ExecEntThread_hook.create(game::Scr_ExecEntThread_ADDR(), Scr_ExecEntThread_stub, quick);
Scr_AddExecThread_hook.create(game::Scr_AddExecThread_ADDR(), Scr_AddExecThread_stub, quick);
VM_SetTime_hook.create(game::VM_SetTime_ADDR(), VM_SetTime_stub, quick);
Scr_InitSystem_hook.create(game::Scr_InitSystem_ADDR(), Scr_InitSystem_stub, quick);
Scr_ShutdownSystem_hook.create(game::Scr_ShutdownSystem.get(), Scr_ShutdownSystem_stub, quick);
Scr_IsSystemActive_hook.create(game::Scr_IsSystemActive.get(), Scr_IsSystemActive_stub, quick);
Scr_GetInt_hook.create(game::Scr_GetInt_ADDR(), Scr_GetInt_stub, quick);
Scr_GetAnim_hook.create(game::Scr_GetAnim_ADDR(), Scr_GetAnim_stub, quick);
Scr_GetAnimTree_hook.create(game::Scr_GetAnimTree.get(), Scr_GetAnimTree_stub, quick);
Scr_GetFloat_hook.create(game::Scr_GetFloat_ADDR(), Scr_GetFloat_stub, quick);
Scr_GetConstString_hook.create(game::Scr_GetConstString_ADDR(), Scr_GetConstString_stub, quick);
Scr_GetConstLowercaseString_hook.create(game::Scr_GetConstLowercaseString_ADDR(), Scr_GetConstLowercaseString_stub, quick);
Scr_GetString_hook.create(game::Scr_GetString_ADDR(), Scr_GetString_stub, quick);
Scr_GetConstStringIncludeNull_hook.create(game::Scr_GetConstStringIncludeNull_ADDR(), Scr_GetConstStringIncludeNull_stub, quick);
Scr_GetDebugString_hook.create(game::Scr_GetDebugString_ADDR(), Scr_GetDebugString_stub, quick);
Scr_GetConstIString_hook.create(game::Scr_GetConstIString_ADDR(), Scr_GetConstIString_stub, quick);
Scr_GetVector_hook.create(game::Scr_GetVector_ADDR(), Scr_GetVector_stub, quick);
Scr_GetFunc_hook.create(game::Scr_GetFunc.get(), Scr_GetFunc_stub, quick);
Scr_GetEntityRef_hook.create(game::Scr_GetEntityRef_ADDR(), Scr_GetEntityRef_stub, quick);
Scr_GetObject_hook.create(game::Scr_GetObject_ADDR(), Scr_GetObject_stub, quick);
Scr_GetType_hook.create(game::Scr_GetType_ADDR(), Scr_GetType_stub, quick);
Scr_GetTypeName_hook.create(game::Scr_GetTypeName_ADDR(), Scr_GetTypeName_stub, quick);
Scr_GetPointerType_hook.create(game::Scr_GetPointerType_ADDR(), Scr_GetPointerType_stub, quick);
Scr_AddInt_hook.create(game::Scr_AddInt_ADDR(), Scr_AddInt_stub, quick);
Scr_AddFloat_hook.create(game::Scr_AddFloat_ADDR(), Scr_AddFloat_stub, quick);
Scr_AddAnim_hook.create(game::Scr_AddAnim.get(), Scr_AddAnim_stub, quick);
Scr_AddUndefined_hook.create(game::Scr_AddUndefined_ADDR(), Scr_AddUndefined_stub, quick);
Scr_AddObject_hook.create(game::Scr_AddObject_ADDR(), Scr_AddObject_stub, quick);
Scr_AddString_hook.create(game::Scr_AddString_ADDR(), Scr_AddString_stub, quick);
Scr_AddIString_hook.create(game::Scr_AddIString_ADDR(), Scr_AddIString_stub, quick);
Scr_AddConstString_hook.create(game::Scr_AddConstString_ADDR(), Scr_AddConstString_stub, quick);
Scr_AddVector_hook.create(game::Scr_AddVector_ADDR(), Scr_AddVector_stub, quick);
Scr_MakeArray_hook.create(game::Scr_MakeArray_ADDR(), Scr_MakeArray_stub, quick);
Scr_AddArray_hook.create(game::Scr_AddArray.get(), Scr_AddArray_stub, quick);
Scr_AddArrayStringIndexed_hook.create(game::Scr_AddArrayStringIndexed_ADDR(), Scr_AddArrayStringIndexed_stub, quick);
Scr_Error_hook.create(game::Scr_Error_ADDR(), Scr_Error_stub, quick);
Scr_TerminalError_hook.create(game::Scr_TerminalError_ADDR(), Scr_TerminalError_stub, quick);
Scr_ParamError_hook.create(game::Scr_ParamError_ADDR(), Scr_ParamError_stub, quick);
Scr_ObjectError_hook.create(game::Scr_ObjectError_ADDR(), Scr_ObjectError_stub, quick);
SetEntityFieldValue_hook.create(game::SetEntityFieldValue_ADDR(), SetEntityFieldValue_stub, quick);
GetEntityFieldValue_hook.create(game::GetEntityFieldValue_ADDR(), GetEntityFieldValue_stub, quick);
Scr_SetStructField_hook.create(game::Scr_SetStructField_ADDR(), Scr_SetStructField_stub, quick);
Scr_IncTime_hook.create(game::Scr_IncTime_ADDR(), Scr_IncTime_stub, quick);
Scr_RunCurrentThreads_hook.create(game::Scr_RunCurrentThreads_ADDR(), Scr_RunCurrentThreads_stub, quick);
Scr_ResetTimeout_hook.create(game::Scr_ResetTimeout_ADDR(), Scr_ResetTimeout_stub, quick);
}
private: