diff --git a/src/component/decomp/clientscript/re_cscr_animtree.cpp b/src/component/decomp/clientscript/re_cscr_animtree.cpp index 7fd15cd..4aabb33 100644 --- a/src/component/decomp/clientscript/re_cscr_animtree.cpp +++ b/src/component/decomp/clientscript/re_cscr_animtree.cpp @@ -353,24 +353,29 @@ namespace re_cscr_animtree public: void post_unpack() override { - AnimTreeCompileError_hook.create(game::AnimTreeCompileError.get(), AnimTreeCompileError_stub); - GetAnimTreeParseProperties_hook.create(game::GetAnimTreeParseProperties.get(), GetAnimTreeParseProperties_stub); - Scr_EmitAnimationInternal_hook.create(game::Scr_EmitAnimationInternal_ADDR(), Scr_EmitAnimationInternal_stub); - AnimTreeParseInternal_hook.create(game::AnimTreeParseInternal.get(), AnimTreeParseInternal_stub); - Scr_AnimTreeParse_hook.create(game::Scr_AnimTreeParse_ADDR(), Scr_AnimTreeParse_stub); - Scr_GetAnimTreeSize_hook.create(game::Scr_GetAnimTreeSize.get(), Scr_GetAnimTreeSize_stub); - ConnectScriptToAnim_hook.create(game::ConnectScriptToAnim_ADDR(), ConnectScriptToAnim_stub); - Scr_GetAnimsIndex_hook.create(game::Scr_GetAnimsIndex_ADDR(), Scr_GetAnimsIndex_stub); - Scr_CreateAnimationTree_hook.create(game::Scr_CreateAnimationTree.get(), Scr_CreateAnimationTree_stub); - Scr_CheckAnimsDefined_hook.create(game::Scr_CheckAnimsDefined_ADDR(), Scr_CheckAnimsDefined_stub); - Scr_PrecacheAnimationTree_hook.create(game::Scr_PrecacheAnimationTree.get(), Scr_PrecacheAnimationTree_stub); - Scr_UsingTreeInternal_hook.create(game::Scr_UsingTreeInternal_ADDR(), Scr_UsingTreeInternal_stub); - Scr_UsingTree_hook.create(game::Scr_UsingTree_ADDR(), Scr_UsingTree_stub); - Scr_SetAnimTreeConfigstring_hook.create(game::Scr_SetAnimTreeConfigstring.get(), Scr_SetAnimTreeConfigstring_stub); - Scr_LoadAnimTreeInternal_hook.create(game::Scr_LoadAnimTreeInternal_ADDR(), Scr_LoadAnimTreeInternal_stub); - Scr_LoadAnimTreeAtIndex_hook.create(game::Scr_LoadAnimTreeAtIndex_ADDR(), Scr_LoadAnimTreeAtIndex_stub); - Scr_FindAnimTree_hook.create(game::Scr_FindAnimTree_ADDR(), Scr_FindAnimTree_stub); - Scr_FindAnim_hook.create(game::Scr_FindAnim_ADDR(), Scr_FindAnim_stub); + bool quick = true; +#ifdef RE_CSCR_ANIMTREE_USE_WRAPPERS + quick = false; +#endif + + AnimTreeCompileError_hook.create(game::AnimTreeCompileError.get(), AnimTreeCompileError_stub, quick); + GetAnimTreeParseProperties_hook.create(game::GetAnimTreeParseProperties.get(), GetAnimTreeParseProperties_stub, quick); + Scr_EmitAnimationInternal_hook.create(game::Scr_EmitAnimationInternal_ADDR(), Scr_EmitAnimationInternal_stub, quick); + AnimTreeParseInternal_hook.create(game::AnimTreeParseInternal.get(), AnimTreeParseInternal_stub, quick); + Scr_AnimTreeParse_hook.create(game::Scr_AnimTreeParse_ADDR(), Scr_AnimTreeParse_stub, quick); + Scr_GetAnimTreeSize_hook.create(game::Scr_GetAnimTreeSize.get(), Scr_GetAnimTreeSize_stub, quick); + ConnectScriptToAnim_hook.create(game::ConnectScriptToAnim_ADDR(), ConnectScriptToAnim_stub, quick); + Scr_GetAnimsIndex_hook.create(game::Scr_GetAnimsIndex_ADDR(), Scr_GetAnimsIndex_stub, quick); + Scr_CreateAnimationTree_hook.create(game::Scr_CreateAnimationTree.get(), Scr_CreateAnimationTree_stub, quick); + Scr_CheckAnimsDefined_hook.create(game::Scr_CheckAnimsDefined_ADDR(), Scr_CheckAnimsDefined_stub, quick); + Scr_PrecacheAnimationTree_hook.create(game::Scr_PrecacheAnimationTree.get(), Scr_PrecacheAnimationTree_stub, quick); + Scr_UsingTreeInternal_hook.create(game::Scr_UsingTreeInternal_ADDR(), Scr_UsingTreeInternal_stub, quick); + Scr_UsingTree_hook.create(game::Scr_UsingTree_ADDR(), Scr_UsingTree_stub, quick); + Scr_SetAnimTreeConfigstring_hook.create(game::Scr_SetAnimTreeConfigstring.get(), Scr_SetAnimTreeConfigstring_stub, quick); + Scr_LoadAnimTreeInternal_hook.create(game::Scr_LoadAnimTreeInternal_ADDR(), Scr_LoadAnimTreeInternal_stub, quick); + Scr_LoadAnimTreeAtIndex_hook.create(game::Scr_LoadAnimTreeAtIndex_ADDR(), Scr_LoadAnimTreeAtIndex_stub, quick); + Scr_FindAnimTree_hook.create(game::Scr_FindAnimTree_ADDR(), Scr_FindAnimTree_stub, quick); + Scr_FindAnim_hook.create(game::Scr_FindAnim_ADDR(), Scr_FindAnim_stub, quick); //Original hook function addresses AnimTreeCompileError_original = AnimTreeCompileError_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_compiler.cpp b/src/component/decomp/clientscript/re_cscr_compiler.cpp index 5e47a8c..bac1c2d 100644 --- a/src/component/decomp/clientscript/re_cscr_compiler.cpp +++ b/src/component/decomp/clientscript/re_cscr_compiler.cpp @@ -3018,156 +3018,161 @@ namespace re_cscr_compiler public: void post_unpack() override { - RemoveRefToValue_hook.create(game::RemoveRefToValue.get(), RemoveRefToValue_stub); - Scr_CompileRemoveRefToString_hook.create(game::Scr_CompileRemoveRefToString_ADDR(), Scr_CompileRemoveRefToString_stub); - EmitCanonicalString_hook.create(game::EmitCanonicalString_ADDR(), EmitCanonicalString_stub); - CompileTransferRefToString_hook.create(game::CompileTransferRefToString_ADDR(), CompileTransferRefToString_stub); - EmitOpcode_hook.create(game::EmitOpcode.get(), EmitOpcode_stub); - EmitEnd_hook.create(game::EmitEnd_ADDR(), EmitEnd_stub); - EmitReturn_hook.create(game::EmitReturn_ADDR(), EmitReturn_stub); - EmitCodepos_hook.create(game::EmitCodepos_ADDR(), EmitCodepos_stub); - EmitShort_hook.create(game::EmitShort_ADDR(), EmitShort_stub); - EmitByte_hook.create(game::EmitByte_ADDR(), EmitByte_stub); - EmitGetInteger_hook.create(game::EmitGetInteger_ADDR(), EmitGetInteger_stub); - EmitGetFloat_hook.create(game::EmitGetFloat_ADDR(), EmitGetFloat_stub); - EmitAnimTree_hook.create(game::EmitAnimTree_ADDR(), EmitAnimTree_stub); - Scr_FindLocalVarIndex_hook.create(game::Scr_FindLocalVarIndex.get(), Scr_FindLocalVarIndex_stub); - EmitCreateLocalVars_hook.create(game::EmitCreateLocalVars.get(), EmitCreateLocalVars_stub); - EmitRemoveLocalVars_hook.create(game::EmitRemoveLocalVars_ADDR(), EmitRemoveLocalVars_stub); - EmitNOP2_hook.create(game::EmitNOP2_ADDR(), EmitNOP2_stub); - Scr_InitFromChildBlocks_hook.create(game::Scr_InitFromChildBlocks.get(), Scr_InitFromChildBlocks_stub); - Scr_AppendChildBlocks_hook.create(game::Scr_AppendChildBlocks_ADDR(), Scr_AppendChildBlocks_stub); - Scr_MergeChildBlocks_hook.create(game::Scr_MergeChildBlocks.get(), Scr_MergeChildBlocks_stub); - Scr_TransferBlock_hook.create(game::Scr_TransferBlock_ADDR(), Scr_TransferBlock_stub); - EmitSafeSetVariableField_hook.create(game::EmitSafeSetVariableField_ADDR(), EmitSafeSetVariableField_stub); - EmitSafeSetWaittillVariableField_hook.create(game::EmitSafeSetWaittillVariableField_ADDR(), EmitSafeSetWaittillVariableField_stub); - EmitGetString_hook.create(game::EmitGetString_ADDR(), EmitGetString_stub); - EmitGetIString_hook.create(game::EmitGetIString_ADDR(), EmitGetIString_stub); - EmitGetVector_hook.create(game::EmitGetVector_ADDR(), EmitGetVector_stub); - EmitValue_hook.create(game::EmitValue.get(), EmitValue_stub); - Scr_PushValue_hook.create(game::Scr_PushValue_ADDR(), Scr_PushValue_stub); - EmitCastBool_hook.create(game::EmitCastBool_ADDR(), EmitCastBool_stub); - EmitBoolNot_hook.create(game::EmitBoolNot_ADDR(), EmitBoolNot_stub); - EmitBoolComplement_hook.create(game::EmitBoolComplement_ADDR(), EmitBoolComplement_stub); - EmitSize_hook.create(game::EmitSize_ADDR(), EmitSize_stub); - EmitSelf_hook.create(game::EmitSelf_ADDR(), EmitSelf_stub); - EmitLevel_hook.create(game::EmitLevel_ADDR(), EmitLevel_stub); - EmitGame_hook.create(game::EmitGame_ADDR(), EmitGame_stub); - EmitAnim_hook.create(game::EmitAnim_ADDR(), EmitAnim_stub); - EmitSelfObject_hook.create(game::EmitSelfObject_ADDR(), EmitSelfObject_stub); - EmitLevelObject_hook.create(game::EmitLevelObject_ADDR(), EmitLevelObject_stub); - EmitAnimObject_hook.create(game::EmitAnimObject_ADDR(), EmitAnimObject_stub); - EmitLocalVariable_hook.create(game::EmitLocalVariable_ADDR(), EmitLocalVariable_stub); - EmitLocalVariableRef_hook.create(game::EmitLocalVariableRef_ADDR(), EmitLocalVariableRef_stub); - Scr_RegisterLocalVar_hook.create(game::Scr_RegisterLocalVar.get(), Scr_RegisterLocalVar_stub); - EmitGameRef_hook.create(game::EmitGameRef_ADDR(), EmitGameRef_stub); - EmitClearArray_hook.create(game::EmitClearArray_ADDR(), EmitClearArray_stub); - EmitEmptyArray_hook.create(game::EmitEmptyArray_ADDR(), EmitEmptyArray_stub); - EmitAnimation_hook.create(game::EmitAnimation_ADDR(), EmitAnimation_stub); - EmitFieldVariable_hook.create(game::EmitFieldVariable_ADDR(), EmitFieldVariable_stub); - EmitClearFieldVariable_hook.create(game::EmitClearFieldVariable_ADDR(), EmitClearFieldVariable_stub); - EmitObject_hook.create(game::EmitObject_ADDR(), EmitObject_stub); - EmitDecTop_hook.create(game::EmitDecTop_ADDR(), EmitDecTop_stub); - EmitCastFieldObject_hook.create(game::EmitCastFieldObject.get(), EmitCastFieldObject_stub); - EmitArrayVariable_hook.create(game::EmitArrayVariable_ADDR(), EmitArrayVariable_stub); - EmitArrayVariableRef_hook.create(game::EmitArrayVariableRef_ADDR(), EmitArrayVariableRef_stub); - EmitClearArrayVariable_hook.create(game::EmitClearArrayVariable_ADDR(), EmitClearArrayVariable_stub); - EmitVariableExpression_hook.create(game::EmitVariableExpression.get(), EmitVariableExpression_stub); - EmitExpressionList_hook.create(game::EmitExpressionList.get(), EmitExpressionList_stub); - AddExpressionListOpcodePos_hook.create(game::AddExpressionListOpcodePos_ADDR(), AddExpressionListOpcodePos_stub); - AddFilePrecache_hook.create(game::AddFilePrecache_ADDR(), AddFilePrecache_stub); - EmitFunction_hook.create(game::EmitFunction_ADDR(), EmitFunction_stub); - EmitGetFunction_hook.create(game::EmitGetFunction_ADDR(), EmitGetFunction_stub); - AddFunction_hook.create(game::AddFunction.get(), AddFunction_stub); - EmitPostScriptFunction_hook.create(game::EmitPostScriptFunction.get(), EmitPostScriptFunction_stub); - EmitPostScriptFunctionPointer_hook.create(game::EmitPostScriptFunctionPointer_ADDR(), EmitPostScriptFunctionPointer_stub); - EmitPostScriptThread_hook.create(game::EmitPostScriptThread_ADDR(), EmitPostScriptThread_stub); - EmitPostScriptThreadPointer_hook.create(game::EmitPostScriptThreadPointer_ADDR(), EmitPostScriptThreadPointer_stub); - EmitPostScriptFunctionCall_hook.create(game::EmitPostScriptFunctionCall_ADDR(), EmitPostScriptFunctionCall_stub); - EmitPostScriptThreadCall_hook.create(game::EmitPostScriptThreadCall_ADDR(), EmitPostScriptThreadCall_stub); - EmitPreFunctionCall_hook.create(game::EmitPreFunctionCall_ADDR(), EmitPreFunctionCall_stub); - EmitPostFunctionCall_hook.create(game::EmitPostFunctionCall_ADDR(), EmitPostFunctionCall_stub); - Scr_BeginDevScript_hook.create(game::Scr_BeginDevScript_ADDR(), Scr_BeginDevScript_stub); - Scr_EndDevScript_hook.create(game::Scr_EndDevScript_ADDR(), Scr_EndDevScript_stub); - EmitCallBuiltinOpcode_hook.create(game::EmitCallBuiltinOpcode_ADDR(), EmitCallBuiltinOpcode_stub); - EmitCallBuiltinMethodOpcode_hook.create(game::EmitCallBuiltinMethodOpcode_ADDR(), EmitCallBuiltinMethodOpcode_stub); - EmitCall_hook.create(game::EmitCall_ADDR(), EmitCall_stub); - EmitMethod_hook.create(game::EmitMethod.get(), EmitMethod_stub); - LinkThread_hook.create(game::LinkThread_ADDR(), LinkThread_stub); - LinkFile_hook.create(game::LinkFile_ADDR(), LinkFile_stub); - CheckThreadPosition_hook.create(game::CheckThreadPosition.get(), CheckThreadPosition_stub); - EmitCallExpression_hook.create(game::EmitCallExpression_ADDR(), EmitCallExpression_stub); - EmitCallExpressionFieldObject_hook.create(game::EmitCallExpressionFieldObject_ADDR(), EmitCallExpressionFieldObject_stub); - Scr_CreateVector_hook.create(game::Scr_CreateVector_ADDR(), Scr_CreateVector_stub); - EvalPrimitiveExpressionList_hook.create(game::EvalPrimitiveExpressionList.get(), EvalPrimitiveExpressionList_stub); - EmitOrEvalPrimitiveExpressionList_hook.create(game::EmitOrEvalPrimitiveExpressionList_ADDR(), EmitOrEvalPrimitiveExpressionList_stub); - EmitExpressionListFieldObject_hook.create(game::EmitExpressionListFieldObject_ADDR(), EmitExpressionListFieldObject_stub); - EvalPrimitiveExpression_hook.create(game::EvalPrimitiveExpression.get(), EvalPrimitiveExpression_stub); - EmitOrEvalPrimitiveExpression_hook.create(game::EmitOrEvalPrimitiveExpression.get(), EmitOrEvalPrimitiveExpression_stub); - EmitBoolOrExpression_hook.create(game::EmitBoolOrExpression_ADDR(), EmitBoolOrExpression_stub); - EmitBoolAndExpression_hook.create(game::EmitBoolAndExpression_ADDR(), EmitBoolAndExpression_stub); - EvalBinaryOperatorExpression_hook.create(game::EvalBinaryOperatorExpression.get(), EvalBinaryOperatorExpression_stub); - EmitOrEvalBinaryOperatorExpression_hook.create(game::EmitOrEvalBinaryOperatorExpression_ADDR(), EmitOrEvalBinaryOperatorExpression_stub); - EmitBinaryEqualsOperatorExpression_hook.create(game::EmitBinaryEqualsOperatorExpression_ADDR(), EmitBinaryEqualsOperatorExpression_stub); - Scr_CalcLocalVarsVariableExpressionRef_hook.create(game::Scr_CalcLocalVarsVariableExpressionRef_ADDR(), Scr_CalcLocalVarsVariableExpressionRef_stub); - EvalExpression_hook.create(game::EvalExpression_ADDR(), EvalExpression_stub); - EmitOrEvalExpression_hook.create(game::EmitOrEvalExpression.get(), EmitOrEvalExpression_stub); - EmitExpression_hook.create(game::EmitExpression.get(), EmitExpression_stub); - EmitVariableExpressionRef_hook.create(game::EmitVariableExpressionRef.get(), EmitVariableExpressionRef_stub); - EmitArrayPrimitiveExpressionRef_hook.create(game::EmitArrayPrimitiveExpressionRef_ADDR(), EmitArrayPrimitiveExpressionRef_stub); - Scr_CalcLocalVarsArrayVariableRef_hook.create(game::Scr_CalcLocalVarsArrayVariableRef.get(), Scr_CalcLocalVarsArrayVariableRef_stub); - EmitPrimitiveExpressionFieldObject_hook.create(game::EmitPrimitiveExpressionFieldObject.get(), EmitPrimitiveExpressionFieldObject_stub); - ConnectBreakStatements_hook.create(game::ConnectBreakStatements_ADDR(), ConnectBreakStatements_stub); - ConnectContinueStatements_hook.create(game::ConnectContinueStatements_ADDR(), ConnectContinueStatements_stub); - EmitClearVariableExpression_hook.create(game::EmitClearVariableExpression_ADDR(), EmitClearVariableExpression_stub); - EmitAssignmentStatement_hook.create(game::EmitAssignmentStatement_ADDR(), EmitAssignmentStatement_stub); - EmitCallExpressionStatement_hook.create(game::EmitCallExpressionStatement_ADDR(), EmitCallExpressionStatement_stub); - EmitReturnStatement_hook.create(game::EmitReturnStatement_ADDR(), EmitReturnStatement_stub); - EmitWaitStatement_hook.create(game::EmitWaitStatement_ADDR(), EmitWaitStatement_stub); - EmitWaittillFrameEnd_hook.create(game::EmitWaittillFrameEnd_ADDR(), EmitWaittillFrameEnd_stub); - EmitIfStatement_hook.create(game::EmitIfStatement_ADDR(), EmitIfStatement_stub); - Scr_CalcLocalVarsIfStatement_hook.create(game::Scr_CalcLocalVarsIfStatement.get(), Scr_CalcLocalVarsIfStatement_stub); - EmitIfElseStatement_hook.create(game::EmitIfElseStatement.get(), EmitIfElseStatement_stub); - Scr_CalcLocalVarsIfElseStatement_hook.create(game::Scr_CalcLocalVarsIfElseStatement.get(), Scr_CalcLocalVarsIfElseStatement_stub); - Scr_AddBreakBlock_hook.create(game::Scr_AddBreakBlock_ADDR(), Scr_AddBreakBlock_stub); - Scr_AddContinueBlock_hook.create(game::Scr_AddContinueBlock_ADDR(), Scr_AddContinueBlock_stub); - EmitWhileStatement_hook.create(game::EmitWhileStatement.get(), EmitWhileStatement_stub); - Scr_CalcLocalVarsWhileStatement_hook.create(game::Scr_CalcLocalVarsWhileStatement.get(), Scr_CalcLocalVarsWhileStatement_stub); - EmitForStatement_hook.create(game::EmitForStatement.get(), EmitForStatement_stub); - Scr_CalcLocalVarsForStatement_hook.create(game::Scr_CalcLocalVarsForStatement.get(), Scr_CalcLocalVarsForStatement_stub); - EmitIncStatement_hook.create(game::EmitIncStatement_ADDR(), EmitIncStatement_stub); - EmitDecStatement_hook.create(game::EmitDecStatement_ADDR(), EmitDecStatement_stub); - Scr_CalcLocalVarsFormalParameterListInternal_hook.create(game::Scr_CalcLocalVarsFormalParameterListInternal_ADDR(), Scr_CalcLocalVarsFormalParameterListInternal_stub); - EmitWaittillStatement_hook.create(game::EmitWaittillStatement_ADDR(), EmitWaittillStatement_stub); - EmitWaittillmatchStatement_hook.create(game::EmitWaittillmatchStatement_ADDR(), EmitWaittillmatchStatement_stub); - EmitNotifyStatement_hook.create(game::EmitNotifyStatement_ADDR(), EmitNotifyStatement_stub); - EmitEndOnStatement_hook.create(game::EmitEndOnStatement_ADDR(), EmitEndOnStatement_stub); - CompareCaseInfo_hook.create(game::CompareCaseInfo.get(), CompareCaseInfo_stub); - EmitCaseStatement_hook.create(game::EmitCaseStatement_ADDR(), EmitCaseStatement_stub); - EmitSwitchStatementList_hook.create(game::EmitSwitchStatementList.get(), EmitSwitchStatementList_stub); - Scr_CalcLocalVarsSwitchStatement_hook.create(game::Scr_CalcLocalVarsSwitchStatement.get(), Scr_CalcLocalVarsSwitchStatement_stub); - EmitSwitchStatement_hook.create(game::EmitSwitchStatement.get(), EmitSwitchStatement_stub); - EmitCaseStatementInfo_hook.create(game::EmitCaseStatementInfo_ADDR(), EmitCaseStatementInfo_stub); - EmitBreakStatement_hook.create(game::EmitBreakStatement_ADDR(), EmitBreakStatement_stub); - EmitContinueStatement_hook.create(game::EmitContinueStatement_ADDR(), EmitContinueStatement_stub); - EmitProfStatement_hook.create(game::EmitProfStatement_ADDR(), EmitProfStatement_stub); - EmitStatement_hook.create(game::EmitStatement.get(), EmitStatement_stub); - Scr_CalcLocalVarsStatement_hook.create(game::Scr_CalcLocalVarsStatement.get(), Scr_CalcLocalVarsStatement_stub); - EmitStatementList_hook.create(game::EmitStatementList.get(), EmitStatementList_stub); - Scr_CalcLocalVarsStatementList_hook.create(game::Scr_CalcLocalVarsStatementList_ADDR(), Scr_CalcLocalVarsStatementList_stub); - Scr_CalcLocalVarsDeveloperStatementList_hook.create(game::Scr_CalcLocalVarsDeveloperStatementList.get(), Scr_CalcLocalVarsDeveloperStatementList_stub); - EmitDeveloperStatementList_hook.create(game::EmitDeveloperStatementList.get(), EmitDeveloperStatementList_stub); - EmitFormalParameterList_hook.create(game::EmitFormalParameterList_ADDR(), EmitFormalParameterList_stub); - SpecifyThread_hook.create(game::SpecifyThread_ADDR(), SpecifyThread_stub); - EmitThreadInternal_hook.create(game::EmitThreadInternal_ADDR(), EmitThreadInternal_stub); - Scr_CalcLocalVarsThread_hook.create(game::Scr_CalcLocalVarsThread_ADDR(), Scr_CalcLocalVarsThread_stub); - InitThread_hook.create(game::InitThread_ADDR(), InitThread_stub); - EmitNormalThread_hook.create(game::EmitNormalThread_ADDR(), EmitNormalThread_stub); - EmitDeveloperThread_hook.create(game::EmitDeveloperThread_ADDR(), EmitDeveloperThread_stub); - EmitThread_hook.create(game::EmitThread_ADDR(), EmitThread_stub); - EmitThreadList_hook.create(game::EmitThreadList.get(), EmitThreadList_stub); - EmitInclude_hook.create(game::EmitInclude_ADDR(), EmitInclude_stub); - ScriptCompile_hook.create(game::ScriptCompile_ADDR(), ScriptCompile_stub); + bool quick = true; +#ifdef RE_CSCR_COMPILER_USE_WRAPPERS + quick = false; +#endif + + RemoveRefToValue_hook.create(game::RemoveRefToValue.get(), RemoveRefToValue_stub, quick); + Scr_CompileRemoveRefToString_hook.create(game::Scr_CompileRemoveRefToString_ADDR(), Scr_CompileRemoveRefToString_stub, quick); + EmitCanonicalString_hook.create(game::EmitCanonicalString_ADDR(), EmitCanonicalString_stub, quick); + CompileTransferRefToString_hook.create(game::CompileTransferRefToString_ADDR(), CompileTransferRefToString_stub, quick); + EmitOpcode_hook.create(game::EmitOpcode.get(), EmitOpcode_stub, quick); + EmitEnd_hook.create(game::EmitEnd_ADDR(), EmitEnd_stub, quick); + EmitReturn_hook.create(game::EmitReturn_ADDR(), EmitReturn_stub, quick); + EmitCodepos_hook.create(game::EmitCodepos_ADDR(), EmitCodepos_stub, quick); + EmitShort_hook.create(game::EmitShort_ADDR(), EmitShort_stub, quick); + EmitByte_hook.create(game::EmitByte_ADDR(), EmitByte_stub, quick); + EmitGetInteger_hook.create(game::EmitGetInteger_ADDR(), EmitGetInteger_stub, quick); + EmitGetFloat_hook.create(game::EmitGetFloat_ADDR(), EmitGetFloat_stub, quick); + EmitAnimTree_hook.create(game::EmitAnimTree_ADDR(), EmitAnimTree_stub, quick); + Scr_FindLocalVarIndex_hook.create(game::Scr_FindLocalVarIndex.get(), Scr_FindLocalVarIndex_stub, quick); + EmitCreateLocalVars_hook.create(game::EmitCreateLocalVars.get(), EmitCreateLocalVars_stub, quick); + EmitRemoveLocalVars_hook.create(game::EmitRemoveLocalVars_ADDR(), EmitRemoveLocalVars_stub, quick); + EmitNOP2_hook.create(game::EmitNOP2_ADDR(), EmitNOP2_stub, quick); + Scr_InitFromChildBlocks_hook.create(game::Scr_InitFromChildBlocks.get(), Scr_InitFromChildBlocks_stub, quick); + Scr_AppendChildBlocks_hook.create(game::Scr_AppendChildBlocks_ADDR(), Scr_AppendChildBlocks_stub, quick); + Scr_MergeChildBlocks_hook.create(game::Scr_MergeChildBlocks.get(), Scr_MergeChildBlocks_stub, quick); + Scr_TransferBlock_hook.create(game::Scr_TransferBlock_ADDR(), Scr_TransferBlock_stub, quick); + EmitSafeSetVariableField_hook.create(game::EmitSafeSetVariableField_ADDR(), EmitSafeSetVariableField_stub, quick); + EmitSafeSetWaittillVariableField_hook.create(game::EmitSafeSetWaittillVariableField_ADDR(), EmitSafeSetWaittillVariableField_stub, quick); + EmitGetString_hook.create(game::EmitGetString_ADDR(), EmitGetString_stub, quick); + EmitGetIString_hook.create(game::EmitGetIString_ADDR(), EmitGetIString_stub, quick); + EmitGetVector_hook.create(game::EmitGetVector_ADDR(), EmitGetVector_stub, quick); + EmitValue_hook.create(game::EmitValue.get(), EmitValue_stub, quick); + Scr_PushValue_hook.create(game::Scr_PushValue_ADDR(), Scr_PushValue_stub, quick); + EmitCastBool_hook.create(game::EmitCastBool_ADDR(), EmitCastBool_stub, quick); + EmitBoolNot_hook.create(game::EmitBoolNot_ADDR(), EmitBoolNot_stub, quick); + EmitBoolComplement_hook.create(game::EmitBoolComplement_ADDR(), EmitBoolComplement_stub, quick); + EmitSize_hook.create(game::EmitSize_ADDR(), EmitSize_stub, quick); + EmitSelf_hook.create(game::EmitSelf_ADDR(), EmitSelf_stub, quick); + EmitLevel_hook.create(game::EmitLevel_ADDR(), EmitLevel_stub, quick); + EmitGame_hook.create(game::EmitGame_ADDR(), EmitGame_stub, quick); + EmitAnim_hook.create(game::EmitAnim_ADDR(), EmitAnim_stub, quick); + EmitSelfObject_hook.create(game::EmitSelfObject_ADDR(), EmitSelfObject_stub, quick); + EmitLevelObject_hook.create(game::EmitLevelObject_ADDR(), EmitLevelObject_stub, quick); + EmitAnimObject_hook.create(game::EmitAnimObject_ADDR(), EmitAnimObject_stub, quick); + EmitLocalVariable_hook.create(game::EmitLocalVariable_ADDR(), EmitLocalVariable_stub, quick); + EmitLocalVariableRef_hook.create(game::EmitLocalVariableRef_ADDR(), EmitLocalVariableRef_stub, quick); + Scr_RegisterLocalVar_hook.create(game::Scr_RegisterLocalVar.get(), Scr_RegisterLocalVar_stub, quick); + EmitGameRef_hook.create(game::EmitGameRef_ADDR(), EmitGameRef_stub, quick); + EmitClearArray_hook.create(game::EmitClearArray_ADDR(), EmitClearArray_stub, quick); + EmitEmptyArray_hook.create(game::EmitEmptyArray_ADDR(), EmitEmptyArray_stub, quick); + EmitAnimation_hook.create(game::EmitAnimation_ADDR(), EmitAnimation_stub, quick); + EmitFieldVariable_hook.create(game::EmitFieldVariable_ADDR(), EmitFieldVariable_stub, quick); + EmitClearFieldVariable_hook.create(game::EmitClearFieldVariable_ADDR(), EmitClearFieldVariable_stub, quick); + EmitObject_hook.create(game::EmitObject_ADDR(), EmitObject_stub, quick); + EmitDecTop_hook.create(game::EmitDecTop_ADDR(), EmitDecTop_stub, quick); + EmitCastFieldObject_hook.create(game::EmitCastFieldObject.get(), EmitCastFieldObject_stub, quick); + EmitArrayVariable_hook.create(game::EmitArrayVariable_ADDR(), EmitArrayVariable_stub, quick); + EmitArrayVariableRef_hook.create(game::EmitArrayVariableRef_ADDR(), EmitArrayVariableRef_stub, quick); + EmitClearArrayVariable_hook.create(game::EmitClearArrayVariable_ADDR(), EmitClearArrayVariable_stub, quick); + EmitVariableExpression_hook.create(game::EmitVariableExpression.get(), EmitVariableExpression_stub, quick); + EmitExpressionList_hook.create(game::EmitExpressionList.get(), EmitExpressionList_stub, quick); + AddExpressionListOpcodePos_hook.create(game::AddExpressionListOpcodePos_ADDR(), AddExpressionListOpcodePos_stub, quick); + AddFilePrecache_hook.create(game::AddFilePrecache_ADDR(), AddFilePrecache_stub, quick); + EmitFunction_hook.create(game::EmitFunction_ADDR(), EmitFunction_stub, quick); + EmitGetFunction_hook.create(game::EmitGetFunction_ADDR(), EmitGetFunction_stub, quick); + AddFunction_hook.create(game::AddFunction.get(), AddFunction_stub, quick); + EmitPostScriptFunction_hook.create(game::EmitPostScriptFunction.get(), EmitPostScriptFunction_stub, quick); + EmitPostScriptFunctionPointer_hook.create(game::EmitPostScriptFunctionPointer_ADDR(), EmitPostScriptFunctionPointer_stub, quick); + EmitPostScriptThread_hook.create(game::EmitPostScriptThread_ADDR(), EmitPostScriptThread_stub, quick); + EmitPostScriptThreadPointer_hook.create(game::EmitPostScriptThreadPointer_ADDR(), EmitPostScriptThreadPointer_stub, quick); + EmitPostScriptFunctionCall_hook.create(game::EmitPostScriptFunctionCall_ADDR(), EmitPostScriptFunctionCall_stub, quick); + EmitPostScriptThreadCall_hook.create(game::EmitPostScriptThreadCall_ADDR(), EmitPostScriptThreadCall_stub, quick); + EmitPreFunctionCall_hook.create(game::EmitPreFunctionCall_ADDR(), EmitPreFunctionCall_stub, quick); + EmitPostFunctionCall_hook.create(game::EmitPostFunctionCall_ADDR(), EmitPostFunctionCall_stub, quick); + Scr_BeginDevScript_hook.create(game::Scr_BeginDevScript_ADDR(), Scr_BeginDevScript_stub, quick); + Scr_EndDevScript_hook.create(game::Scr_EndDevScript_ADDR(), Scr_EndDevScript_stub, quick); + EmitCallBuiltinOpcode_hook.create(game::EmitCallBuiltinOpcode_ADDR(), EmitCallBuiltinOpcode_stub, quick); + EmitCallBuiltinMethodOpcode_hook.create(game::EmitCallBuiltinMethodOpcode_ADDR(), EmitCallBuiltinMethodOpcode_stub, quick); + EmitCall_hook.create(game::EmitCall_ADDR(), EmitCall_stub, quick); + EmitMethod_hook.create(game::EmitMethod.get(), EmitMethod_stub, quick); + LinkThread_hook.create(game::LinkThread_ADDR(), LinkThread_stub, quick); + LinkFile_hook.create(game::LinkFile_ADDR(), LinkFile_stub, quick); + CheckThreadPosition_hook.create(game::CheckThreadPosition.get(), CheckThreadPosition_stub, quick); + EmitCallExpression_hook.create(game::EmitCallExpression_ADDR(), EmitCallExpression_stub, quick); + EmitCallExpressionFieldObject_hook.create(game::EmitCallExpressionFieldObject_ADDR(), EmitCallExpressionFieldObject_stub, quick); + Scr_CreateVector_hook.create(game::Scr_CreateVector_ADDR(), Scr_CreateVector_stub, quick); + EvalPrimitiveExpressionList_hook.create(game::EvalPrimitiveExpressionList.get(), EvalPrimitiveExpressionList_stub, quick); + EmitOrEvalPrimitiveExpressionList_hook.create(game::EmitOrEvalPrimitiveExpressionList_ADDR(), EmitOrEvalPrimitiveExpressionList_stub, quick); + EmitExpressionListFieldObject_hook.create(game::EmitExpressionListFieldObject_ADDR(), EmitExpressionListFieldObject_stub, quick); + EvalPrimitiveExpression_hook.create(game::EvalPrimitiveExpression.get(), EvalPrimitiveExpression_stub, quick); + EmitOrEvalPrimitiveExpression_hook.create(game::EmitOrEvalPrimitiveExpression.get(), EmitOrEvalPrimitiveExpression_stub, quick); + EmitBoolOrExpression_hook.create(game::EmitBoolOrExpression_ADDR(), EmitBoolOrExpression_stub, quick); + EmitBoolAndExpression_hook.create(game::EmitBoolAndExpression_ADDR(), EmitBoolAndExpression_stub, quick); + EvalBinaryOperatorExpression_hook.create(game::EvalBinaryOperatorExpression.get(), EvalBinaryOperatorExpression_stub, quick); + EmitOrEvalBinaryOperatorExpression_hook.create(game::EmitOrEvalBinaryOperatorExpression_ADDR(), EmitOrEvalBinaryOperatorExpression_stub, quick); + EmitBinaryEqualsOperatorExpression_hook.create(game::EmitBinaryEqualsOperatorExpression_ADDR(), EmitBinaryEqualsOperatorExpression_stub, quick); + Scr_CalcLocalVarsVariableExpressionRef_hook.create(game::Scr_CalcLocalVarsVariableExpressionRef_ADDR(), Scr_CalcLocalVarsVariableExpressionRef_stub, quick); + EvalExpression_hook.create(game::EvalExpression_ADDR(), EvalExpression_stub, quick); + EmitOrEvalExpression_hook.create(game::EmitOrEvalExpression.get(), EmitOrEvalExpression_stub, quick); + EmitExpression_hook.create(game::EmitExpression.get(), EmitExpression_stub, quick); + EmitVariableExpressionRef_hook.create(game::EmitVariableExpressionRef.get(), EmitVariableExpressionRef_stub, quick); + EmitArrayPrimitiveExpressionRef_hook.create(game::EmitArrayPrimitiveExpressionRef_ADDR(), EmitArrayPrimitiveExpressionRef_stub, quick); + Scr_CalcLocalVarsArrayVariableRef_hook.create(game::Scr_CalcLocalVarsArrayVariableRef.get(), Scr_CalcLocalVarsArrayVariableRef_stub, quick); + EmitPrimitiveExpressionFieldObject_hook.create(game::EmitPrimitiveExpressionFieldObject.get(), EmitPrimitiveExpressionFieldObject_stub, quick); + ConnectBreakStatements_hook.create(game::ConnectBreakStatements_ADDR(), ConnectBreakStatements_stub, quick); + ConnectContinueStatements_hook.create(game::ConnectContinueStatements_ADDR(), ConnectContinueStatements_stub, quick); + EmitClearVariableExpression_hook.create(game::EmitClearVariableExpression_ADDR(), EmitClearVariableExpression_stub, quick); + EmitAssignmentStatement_hook.create(game::EmitAssignmentStatement_ADDR(), EmitAssignmentStatement_stub, quick); + EmitCallExpressionStatement_hook.create(game::EmitCallExpressionStatement_ADDR(), EmitCallExpressionStatement_stub, quick); + EmitReturnStatement_hook.create(game::EmitReturnStatement_ADDR(), EmitReturnStatement_stub, quick); + EmitWaitStatement_hook.create(game::EmitWaitStatement_ADDR(), EmitWaitStatement_stub, quick); + EmitWaittillFrameEnd_hook.create(game::EmitWaittillFrameEnd_ADDR(), EmitWaittillFrameEnd_stub, quick); + EmitIfStatement_hook.create(game::EmitIfStatement_ADDR(), EmitIfStatement_stub, quick); + Scr_CalcLocalVarsIfStatement_hook.create(game::Scr_CalcLocalVarsIfStatement.get(), Scr_CalcLocalVarsIfStatement_stub, quick); + EmitIfElseStatement_hook.create(game::EmitIfElseStatement.get(), EmitIfElseStatement_stub, quick); + Scr_CalcLocalVarsIfElseStatement_hook.create(game::Scr_CalcLocalVarsIfElseStatement.get(), Scr_CalcLocalVarsIfElseStatement_stub, quick); + Scr_AddBreakBlock_hook.create(game::Scr_AddBreakBlock_ADDR(), Scr_AddBreakBlock_stub, quick); + Scr_AddContinueBlock_hook.create(game::Scr_AddContinueBlock_ADDR(), Scr_AddContinueBlock_stub, quick); + EmitWhileStatement_hook.create(game::EmitWhileStatement.get(), EmitWhileStatement_stub, quick); + Scr_CalcLocalVarsWhileStatement_hook.create(game::Scr_CalcLocalVarsWhileStatement.get(), Scr_CalcLocalVarsWhileStatement_stub, quick); + EmitForStatement_hook.create(game::EmitForStatement.get(), EmitForStatement_stub, quick); + Scr_CalcLocalVarsForStatement_hook.create(game::Scr_CalcLocalVarsForStatement.get(), Scr_CalcLocalVarsForStatement_stub, quick); + EmitIncStatement_hook.create(game::EmitIncStatement_ADDR(), EmitIncStatement_stub, quick); + EmitDecStatement_hook.create(game::EmitDecStatement_ADDR(), EmitDecStatement_stub, quick); + Scr_CalcLocalVarsFormalParameterListInternal_hook.create(game::Scr_CalcLocalVarsFormalParameterListInternal_ADDR(), Scr_CalcLocalVarsFormalParameterListInternal_stub, quick); + EmitWaittillStatement_hook.create(game::EmitWaittillStatement_ADDR(), EmitWaittillStatement_stub, quick); + EmitWaittillmatchStatement_hook.create(game::EmitWaittillmatchStatement_ADDR(), EmitWaittillmatchStatement_stub, quick); + EmitNotifyStatement_hook.create(game::EmitNotifyStatement_ADDR(), EmitNotifyStatement_stub, quick); + EmitEndOnStatement_hook.create(game::EmitEndOnStatement_ADDR(), EmitEndOnStatement_stub, quick); + CompareCaseInfo_hook.create(game::CompareCaseInfo.get(), CompareCaseInfo_stub, quick); + EmitCaseStatement_hook.create(game::EmitCaseStatement_ADDR(), EmitCaseStatement_stub, quick); + EmitSwitchStatementList_hook.create(game::EmitSwitchStatementList.get(), EmitSwitchStatementList_stub, quick); + Scr_CalcLocalVarsSwitchStatement_hook.create(game::Scr_CalcLocalVarsSwitchStatement.get(), Scr_CalcLocalVarsSwitchStatement_stub, quick); + EmitSwitchStatement_hook.create(game::EmitSwitchStatement.get(), EmitSwitchStatement_stub, quick); + EmitCaseStatementInfo_hook.create(game::EmitCaseStatementInfo_ADDR(), EmitCaseStatementInfo_stub, quick); + EmitBreakStatement_hook.create(game::EmitBreakStatement_ADDR(), EmitBreakStatement_stub, quick); + EmitContinueStatement_hook.create(game::EmitContinueStatement_ADDR(), EmitContinueStatement_stub, quick); + EmitProfStatement_hook.create(game::EmitProfStatement_ADDR(), EmitProfStatement_stub, quick); + EmitStatement_hook.create(game::EmitStatement.get(), EmitStatement_stub, quick); + Scr_CalcLocalVarsStatement_hook.create(game::Scr_CalcLocalVarsStatement.get(), Scr_CalcLocalVarsStatement_stub, quick); + EmitStatementList_hook.create(game::EmitStatementList.get(), EmitStatementList_stub, quick); + Scr_CalcLocalVarsStatementList_hook.create(game::Scr_CalcLocalVarsStatementList_ADDR(), Scr_CalcLocalVarsStatementList_stub, quick); + Scr_CalcLocalVarsDeveloperStatementList_hook.create(game::Scr_CalcLocalVarsDeveloperStatementList.get(), Scr_CalcLocalVarsDeveloperStatementList_stub, quick); + EmitDeveloperStatementList_hook.create(game::EmitDeveloperStatementList.get(), EmitDeveloperStatementList_stub, quick); + EmitFormalParameterList_hook.create(game::EmitFormalParameterList_ADDR(), EmitFormalParameterList_stub, quick); + SpecifyThread_hook.create(game::SpecifyThread_ADDR(), SpecifyThread_stub, quick); + EmitThreadInternal_hook.create(game::EmitThreadInternal_ADDR(), EmitThreadInternal_stub, quick); + Scr_CalcLocalVarsThread_hook.create(game::Scr_CalcLocalVarsThread_ADDR(), Scr_CalcLocalVarsThread_stub, quick); + InitThread_hook.create(game::InitThread_ADDR(), InitThread_stub, quick); + EmitNormalThread_hook.create(game::EmitNormalThread_ADDR(), EmitNormalThread_stub, quick); + EmitDeveloperThread_hook.create(game::EmitDeveloperThread_ADDR(), EmitDeveloperThread_stub, quick); + EmitThread_hook.create(game::EmitThread_ADDR(), EmitThread_stub, quick); + EmitThreadList_hook.create(game::EmitThreadList.get(), EmitThreadList_stub, quick); + EmitInclude_hook.create(game::EmitInclude_ADDR(), EmitInclude_stub, quick); + ScriptCompile_hook.create(game::ScriptCompile_ADDR(), ScriptCompile_stub, quick); //Original hook function addresses RemoveRefToValue_original = RemoveRefToValue_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_main.cpp b/src/component/decomp/clientscript/re_cscr_main.cpp index 67a2766..a3ab077 100644 --- a/src/component/decomp/clientscript/re_cscr_main.cpp +++ b/src/component/decomp/clientscript/re_cscr_main.cpp @@ -272,19 +272,24 @@ namespace re_cscr_main public: void post_unpack() override { - Scr_IsIdentifier_hook.create(game::Scr_IsIdentifier_ADDR(), Scr_IsIdentifier_stub); - Scr_GetFunctionHandle_hook.create(game::Scr_GetFunctionHandle_ADDR(), Scr_GetFunctionHandle_stub); - SL_TransferToCanonicalString_hook.create(game::SL_TransferToCanonicalString_ADDR(), SL_TransferToCanonicalString_stub); - SL_GetCanonicalString_hook.create(game::SL_GetCanonicalString_ADDR(), SL_GetCanonicalString_stub); - Scr_BeginLoadScripts_hook.create(game::Scr_BeginLoadScripts_ADDR(), Scr_BeginLoadScripts_stub); - Scr_BeginLoadAnimTrees_hook.create(game::Scr_BeginLoadAnimTrees_ADDR(), Scr_BeginLoadAnimTrees_stub); - Scr_ScanFile_hook.create(game::Scr_ScanFile_ADDR(), Scr_ScanFile_stub); - Scr_LoadScriptInternal_hook.create(game::Scr_LoadScriptInternal.get(), Scr_LoadScriptInternal_stub); - Scr_LoadScript_hook.create(game::Scr_LoadScript_ADDR(), Scr_LoadScript_stub); - Scr_EndLoadScripts_hook.create(game::Scr_EndLoadScripts.get(), Scr_EndLoadScripts_stub); - Scr_PrecacheAnimTrees_hook.create(game::Scr_PrecacheAnimTrees.get(), Scr_PrecacheAnimTrees_stub); - Scr_EndLoadAnimTrees_hook.create(game::Scr_EndLoadAnimTrees.get(), Scr_EndLoadAnimTrees_stub); - Scr_FreeScripts_hook.create(game::Scr_FreeScripts_ADDR(), Scr_FreeScripts_stub); + bool quick = true; +#ifdef RE_CSCR_MAIN_USE_WRAPPERS + quick = false; +#endif + + Scr_IsIdentifier_hook.create(game::Scr_IsIdentifier_ADDR(), Scr_IsIdentifier_stub, quick); + Scr_GetFunctionHandle_hook.create(game::Scr_GetFunctionHandle_ADDR(), Scr_GetFunctionHandle_stub, quick); + SL_TransferToCanonicalString_hook.create(game::SL_TransferToCanonicalString_ADDR(), SL_TransferToCanonicalString_stub, quick); + SL_GetCanonicalString_hook.create(game::SL_GetCanonicalString_ADDR(), SL_GetCanonicalString_stub, quick); + Scr_BeginLoadScripts_hook.create(game::Scr_BeginLoadScripts_ADDR(), Scr_BeginLoadScripts_stub, quick); + Scr_BeginLoadAnimTrees_hook.create(game::Scr_BeginLoadAnimTrees_ADDR(), Scr_BeginLoadAnimTrees_stub, quick); + Scr_ScanFile_hook.create(game::Scr_ScanFile_ADDR(), Scr_ScanFile_stub, quick); + Scr_LoadScriptInternal_hook.create(game::Scr_LoadScriptInternal.get(), Scr_LoadScriptInternal_stub, quick); + Scr_LoadScript_hook.create(game::Scr_LoadScript_ADDR(), Scr_LoadScript_stub, quick); + Scr_EndLoadScripts_hook.create(game::Scr_EndLoadScripts.get(), Scr_EndLoadScripts_stub, quick); + Scr_PrecacheAnimTrees_hook.create(game::Scr_PrecacheAnimTrees.get(), Scr_PrecacheAnimTrees_stub, quick); + Scr_EndLoadAnimTrees_hook.create(game::Scr_EndLoadAnimTrees.get(), Scr_EndLoadAnimTrees_stub, quick); + Scr_FreeScripts_hook.create(game::Scr_FreeScripts_ADDR(), Scr_FreeScripts_stub, quick); //Original hook function addresses Scr_IsIdentifier_original = Scr_IsIdentifier_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_memorytree.cpp b/src/component/decomp/clientscript/re_cscr_memorytree.cpp index 1da5a77..9b38a5f 100644 --- a/src/component/decomp/clientscript/re_cscr_memorytree.cpp +++ b/src/component/decomp/clientscript/re_cscr_memorytree.cpp @@ -269,20 +269,25 @@ namespace re_cscr_memorytree public: void post_unpack() override { - MT_GetSubTreeSize_hook.create(game::MT_GetSubTreeSize.get(), MT_GetSubTreeSize_stub); - MT_DumpTree_hook.create(game::MT_DumpTree.get(), MT_DumpTree_stub); - MT_InitBits_hook.create(game::MT_InitBits_ADDR(), MT_InitBits_stub); - MT_GetScore_hook.create(game::MT_GetScore_ADDR(), MT_GetScore_stub); - MT_AddMemoryNode_hook.create(game::MT_AddMemoryNode.get(), MT_AddMemoryNode_stub); - MT_RemoveMemoryNode_hook.create(game::MT_RemoveMemoryNode.get(), MT_RemoveMemoryNode_stub); - MT_RemoveHeadMemoryNode_hook.create(game::MT_RemoveHeadMemoryNode.get(), MT_RemoveHeadMemoryNode_stub); - MT_Init_hook.create(game::MT_Init_ADDR(), MT_Init_stub); - MT_Error_hook.create(game::MT_Error_ADDR(), MT_Error_stub); - MT_GetSize_hook.create(game::MT_GetSize_ADDR(), MT_GetSize_stub); - MT_AllocIndex_hook.create(game::MT_AllocIndex_ADDR(), MT_AllocIndex_stub); - MT_FreeIndex_hook.create(game::MT_FreeIndex_ADDR(), MT_FreeIndex_stub); - MT_Alloc_hook.create(game::MT_Alloc_ADDR(), MT_Alloc_stub); - MT_Free_hook.create(game::MT_Free.get(), MT_Free_stub); + bool quick = true; +#ifdef RE_CSCR_MEMORYTREE_USE_WRAPPERS + quick = false; +#endif + + MT_GetSubTreeSize_hook.create(game::MT_GetSubTreeSize.get(), MT_GetSubTreeSize_stub, quick); + MT_DumpTree_hook.create(game::MT_DumpTree.get(), MT_DumpTree_stub, quick); + MT_InitBits_hook.create(game::MT_InitBits_ADDR(), MT_InitBits_stub, quick); + MT_GetScore_hook.create(game::MT_GetScore_ADDR(), MT_GetScore_stub, quick); + MT_AddMemoryNode_hook.create(game::MT_AddMemoryNode.get(), MT_AddMemoryNode_stub, quick); + MT_RemoveMemoryNode_hook.create(game::MT_RemoveMemoryNode.get(), MT_RemoveMemoryNode_stub, quick); + MT_RemoveHeadMemoryNode_hook.create(game::MT_RemoveHeadMemoryNode.get(), MT_RemoveHeadMemoryNode_stub, quick); + MT_Init_hook.create(game::MT_Init_ADDR(), MT_Init_stub, quick); + MT_Error_hook.create(game::MT_Error_ADDR(), MT_Error_stub, quick); + MT_GetSize_hook.create(game::MT_GetSize_ADDR(), MT_GetSize_stub, quick); + MT_AllocIndex_hook.create(game::MT_AllocIndex_ADDR(), MT_AllocIndex_stub, quick); + MT_FreeIndex_hook.create(game::MT_FreeIndex_ADDR(), MT_FreeIndex_stub, quick); + MT_Alloc_hook.create(game::MT_Alloc_ADDR(), MT_Alloc_stub, quick); + MT_Free_hook.create(game::MT_Free.get(), MT_Free_stub, quick); //Original hook function addresses MT_GetSubTreeSize_original = MT_GetSubTreeSize_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_parser.cpp b/src/component/decomp/clientscript/re_cscr_parser.cpp index 936133c..63ed5f1 100644 --- a/src/component/decomp/clientscript/re_cscr_parser.cpp +++ b/src/component/decomp/clientscript/re_cscr_parser.cpp @@ -533,29 +533,34 @@ namespace re_cscr_parser public: void post_unpack() override { - Scr_InitOpcodeLookup_hook.create(game::Scr_InitOpcodeLookup_ADDR(), Scr_InitOpcodeLookup_stub); - Scr_ShutdownOpcodeLookup_hook.create(game::Scr_ShutdownOpcodeLookup_ADDR(), Scr_ShutdownOpcodeLookup_stub); - AddOpcodePos_hook.create(game::AddOpcodePos_ADDR(), AddOpcodePos_stub); - RemoveOpcodePos_hook.create(game::RemoveOpcodePos_ADDR(), RemoveOpcodePos_stub); - AddThreadStartOpcodePos_hook.create(game::AddThreadStartOpcodePos_ADDR(), AddThreadStartOpcodePos_stub); - Scr_GetSourceBuffer_hook.create(game::Scr_GetSourceBuffer_ADDR(), Scr_GetSourceBuffer_stub); - Scr_GetLineNumInternal_hook.create(game::Scr_GetLineNumInternal_ADDR(), Scr_GetLineNumInternal_stub); - Scr_GetNewSourceBuffer_hook.create(game::Scr_GetNewSourceBuffer_ADDR(), Scr_GetNewSourceBuffer_stub); - Scr_AddSourceBufferInternal_hook.create(game::Scr_AddSourceBufferInternal_ADDR(), Scr_AddSourceBufferInternal_stub); - Scr_ReadFile_FastFile_hook.create(game::Scr_ReadFile_FastFile.get(), Scr_ReadFile_FastFile_stub); - Scr_ReadFile_LoadObj_hook.create(game::Scr_ReadFile_LoadObj.get(), Scr_ReadFile_LoadObj_stub); - Scr_ReadFile_hook.create(game::Scr_ReadFile_ADDR(), Scr_ReadFile_stub); - Scr_AddSourceBuffer_hook.create(game::Scr_AddSourceBuffer_ADDR(), Scr_AddSourceBuffer_stub); - Scr_CopyFormattedLine_hook.create(game::Scr_CopyFormattedLine_ADDR(), Scr_CopyFormattedLine_stub); - Scr_GetLineInfo_hook.create(game::Scr_GetLineInfo_ADDR(), Scr_GetLineInfo_stub); - Scr_PrintSourcePos_hook.create(game::Scr_PrintSourcePos_ADDR(), Scr_PrintSourcePos_stub); - Scr_GetPrevSourcePosOpcodeLookup_hook.create(game::Scr_GetPrevSourcePosOpcodeLookup_ADDR(), Scr_GetPrevSourcePosOpcodeLookup_stub); - Scr_GetTextSourcePos_hook.create(game::Scr_GetTextSourcePos_ADDR(), Scr_GetTextSourcePos_stub); - Scr_PrintPrevCodePos_hook.create(game::Scr_PrintPrevCodePos_ADDR(), Scr_PrintPrevCodePos_stub); - CompileError_hook.create(game::CompileError.get(), CompileError_stub); - CompileError2_hook.create(game::CompileError2_ADDR(), CompileError2_stub); - RuntimeErrorInternal_hook.create(game::RuntimeErrorInternal_ADDR(), RuntimeErrorInternal_stub); - RuntimeError_hook.create(game::RuntimeError_ADDR(), RuntimeError_stub); + bool quick = true; +#ifdef RE_CSCR_PARSER_USE_WRAPPERS + quick = false; +#endif + + Scr_InitOpcodeLookup_hook.create(game::Scr_InitOpcodeLookup_ADDR(), Scr_InitOpcodeLookup_stub, quick); + Scr_ShutdownOpcodeLookup_hook.create(game::Scr_ShutdownOpcodeLookup_ADDR(), Scr_ShutdownOpcodeLookup_stub, quick); + AddOpcodePos_hook.create(game::AddOpcodePos_ADDR(), AddOpcodePos_stub, quick); + RemoveOpcodePos_hook.create(game::RemoveOpcodePos_ADDR(), RemoveOpcodePos_stub, quick); + AddThreadStartOpcodePos_hook.create(game::AddThreadStartOpcodePos_ADDR(), AddThreadStartOpcodePos_stub, quick); + Scr_GetSourceBuffer_hook.create(game::Scr_GetSourceBuffer_ADDR(), Scr_GetSourceBuffer_stub, quick); + Scr_GetLineNumInternal_hook.create(game::Scr_GetLineNumInternal_ADDR(), Scr_GetLineNumInternal_stub, quick); + Scr_GetNewSourceBuffer_hook.create(game::Scr_GetNewSourceBuffer_ADDR(), Scr_GetNewSourceBuffer_stub, quick); + Scr_AddSourceBufferInternal_hook.create(game::Scr_AddSourceBufferInternal_ADDR(), Scr_AddSourceBufferInternal_stub, quick); + Scr_ReadFile_FastFile_hook.create(game::Scr_ReadFile_FastFile.get(), Scr_ReadFile_FastFile_stub, quick); + Scr_ReadFile_LoadObj_hook.create(game::Scr_ReadFile_LoadObj.get(), Scr_ReadFile_LoadObj_stub, quick); + Scr_ReadFile_hook.create(game::Scr_ReadFile_ADDR(), Scr_ReadFile_stub, quick); + Scr_AddSourceBuffer_hook.create(game::Scr_AddSourceBuffer_ADDR(), Scr_AddSourceBuffer_stub, quick); + Scr_CopyFormattedLine_hook.create(game::Scr_CopyFormattedLine_ADDR(), Scr_CopyFormattedLine_stub, quick); + Scr_GetLineInfo_hook.create(game::Scr_GetLineInfo_ADDR(), Scr_GetLineInfo_stub, quick); + Scr_PrintSourcePos_hook.create(game::Scr_PrintSourcePos_ADDR(), Scr_PrintSourcePos_stub, quick); + Scr_GetPrevSourcePosOpcodeLookup_hook.create(game::Scr_GetPrevSourcePosOpcodeLookup_ADDR(), Scr_GetPrevSourcePosOpcodeLookup_stub, quick); + Scr_GetTextSourcePos_hook.create(game::Scr_GetTextSourcePos_ADDR(), Scr_GetTextSourcePos_stub, quick); + Scr_PrintPrevCodePos_hook.create(game::Scr_PrintPrevCodePos_ADDR(), Scr_PrintPrevCodePos_stub, quick); + CompileError_hook.create(game::CompileError.get(), CompileError_stub, quick); + CompileError2_hook.create(game::CompileError2_ADDR(), CompileError2_stub, quick); + RuntimeErrorInternal_hook.create(game::RuntimeErrorInternal_ADDR(), RuntimeErrorInternal_stub, quick); + RuntimeError_hook.create(game::RuntimeError_ADDR(), RuntimeError_stub, quick); //Original hook function addresses Scr_InitOpcodeLookup_original = Scr_InitOpcodeLookup_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_parsetree.cpp b/src/component/decomp/clientscript/re_cscr_parsetree.cpp index c636b74..5e6cb94 100644 --- a/src/component/decomp/clientscript/re_cscr_parsetree.cpp +++ b/src/component/decomp/clientscript/re_cscr_parsetree.cpp @@ -160,19 +160,24 @@ namespace re_cscr_parsetree public: void post_unpack() override { - Scr_InitAllocNode_hook.create(game::Scr_InitAllocNode.get(), Scr_InitAllocNode_stub); - node0_hook.create(game::node0.get(), node0_stub); - node1_hook.create(game::node1.get(), node1_stub); - node2_hook.create(game::node2.get(), node2_stub); - node3_hook.create(game::node3.get(), node3_stub); - node4_hook.create(game::node4.get(), node4_stub); - node5_hook.create(game::node5.get(), node5_stub); - node6_hook.create(game::node6.get(), node6_stub); - node7_hook.create(game::node7.get(), node7_stub); - node8_hook.create(game::node8.get(), node8_stub); - linked_list_end_hook.create(game::linked_list_end.get(), linked_list_end_stub); - prepend_node_hook.create(game::prepend_node.get(), prepend_node_stub); - append_node_hook.create(game::append_node.get(), append_node_stub); + bool quick = true; +#ifdef RE_CSCR_PARSETREE_USE_WRAPPERS + quick = false; +#endif + + Scr_InitAllocNode_hook.create(game::Scr_InitAllocNode.get(), Scr_InitAllocNode_stub, quick); + node0_hook.create(game::node0.get(), node0_stub, quick); + node1_hook.create(game::node1.get(), node1_stub, quick); + node2_hook.create(game::node2.get(), node2_stub, quick); + node3_hook.create(game::node3.get(), node3_stub, quick); + node4_hook.create(game::node4.get(), node4_stub, quick); + node5_hook.create(game::node5.get(), node5_stub, quick); + node6_hook.create(game::node6.get(), node6_stub, quick); + node7_hook.create(game::node7.get(), node7_stub, quick); + node8_hook.create(game::node8.get(), node8_stub, quick); + linked_list_end_hook.create(game::linked_list_end.get(), linked_list_end_stub, quick); + prepend_node_hook.create(game::prepend_node.get(), prepend_node_stub, quick); + append_node_hook.create(game::append_node.get(), append_node_stub, quick); //Original hook function addresses Scr_InitAllocNode_original = Scr_InitAllocNode_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_readwrite.cpp b/src/component/decomp/clientscript/re_cscr_readwrite.cpp index 021a83d..6e1605f 100644 --- a/src/component/decomp/clientscript/re_cscr_readwrite.cpp +++ b/src/component/decomp/clientscript/re_cscr_readwrite.cpp @@ -64,8 +64,13 @@ namespace re_cscr_readwrite public: void post_unpack() override { - FindVariableIndexInternal2_hook.create(game::FindVariableIndexInternal2_ADDR(), FindVariableIndexInternal2_stub); - FindLastSibling_hook.create(game::FindLastSibling_ADDR(), FindLastSibling_stub); + bool quick = true; +#ifdef RE_CSCR_READWRITE_USE_WRAPPERS + quick = false; +#endif + + FindVariableIndexInternal2_hook.create(game::FindVariableIndexInternal2_ADDR(), FindVariableIndexInternal2_stub, quick); + FindLastSibling_hook.create(game::FindLastSibling_ADDR(), FindLastSibling_stub, quick); //Original hook function addresses FindVariableIndexInternal2_original = FindVariableIndexInternal2_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_stringlist.cpp b/src/component/decomp/clientscript/re_cscr_stringlist.cpp index 3d43ffb..61209d3 100644 --- a/src/component/decomp/clientscript/re_cscr_stringlist.cpp +++ b/src/component/decomp/clientscript/re_cscr_stringlist.cpp @@ -585,34 +585,39 @@ namespace re_cscr_stringlist public: void post_unpack() override { - SL_ConvertToString_hook.create(game::SL_ConvertToString_ADDR(), SL_ConvertToString_stub); - SL_GetStringLen_hook.create(game::SL_GetStringLen_ADDR(), SL_GetStringLen_stub); - GetHashCode_hook.create(game::GetHashCode_ADDR(), GetHashCode_stub); - SL_Init_hook.create(game::SL_Init_ADDR(), SL_Init_stub); - SL_FindStringOfSize_hook.create(game::SL_FindStringOfSize_ADDR(), SL_FindStringOfSize_stub); - SL_FindString_hook.create(game::SL_FindString_ADDR(), SL_FindString_stub); - SL_FindLowercaseString_hook.create(game::SL_FindLowercaseString.get(), SL_FindLowercaseString_stub); - SL_AddUserInternal_hook.create(game::SL_AddUserInternal_ADDR(), SL_AddUserInternal_stub); - Mark_ScriptStringCustom_hook.create(game::Mark_ScriptStringCustom_ADDR(), Mark_ScriptStringCustom_stub); - SL_GetStringOfSize_hook.create(game::SL_GetStringOfSize.get(), SL_GetStringOfSize_stub); - SL_GetString__hook.create(game::SL_GetString__ADDR(), SL_GetString__stub); - SL_GetString__0_hook.create(game::SL_GetString__0_ADDR(), SL_GetString__0_stub); - SL_GetLowercaseStringOfLen_hook.create(game::SL_GetLowercaseStringOfLen.get(), SL_GetLowercaseStringOfLen_stub); - SL_GetLowercaseString_hook.create(game::SL_GetLowercaseString_ADDR(), SL_GetLowercaseString_stub); - SL_ConvertToLowercase_hook.create(game::SL_ConvertToLowercase.get(), SL_ConvertToLowercase_stub); - SL_TransferRefToUser_hook.create(game::SL_TransferRefToUser_ADDR(), SL_TransferRefToUser_stub); - SL_FreeString_hook.create(game::SL_FreeString.get(), SL_FreeString_stub); - SL_RemoveRefToString_hook.create(game::SL_RemoveRefToString_ADDR(), SL_RemoveRefToString_stub); - Scr_SetString_hook.create(game::Scr_SetString_ADDR(), Scr_SetString_stub); - Scr_SetStringFromCharString_hook.create(game::Scr_SetStringFromCharString_ADDR(), Scr_SetStringFromCharString_stub); - GScr_AllocString_hook.create(game::GScr_AllocString_ADDR(), GScr_AllocString_stub); - SL_GetStringForFloat_hook.create(game::SL_GetStringForFloat_ADDR(), SL_GetStringForFloat_stub); - SL_GetStringForInt_hook.create(game::SL_GetStringForInt_ADDR(), SL_GetStringForInt_stub); - SL_GetStringForVector_hook.create(game::SL_GetStringForVector_ADDR(), SL_GetStringForVector_stub); - SL_ShutdownSystem_hook.create(game::SL_ShutdownSystem_ADDR(), SL_ShutdownSystem_stub); - SL_TransferSystem_hook.create(game::SL_TransferSystem.get(), SL_TransferSystem_stub); - SL_CreateCanonicalFilename_hook.create(game::SL_CreateCanonicalFilename_ADDR(), SL_CreateCanonicalFilename_stub); - Scr_CreateCanonicalFilename_hook.create(game::Scr_CreateCanonicalFilename.get(), Scr_CreateCanonicalFilename_stub); + bool quick = true; +#ifdef RE_CSCR_STRINGLIST_USE_WRAPPERS + quick = false; +#endif + + SL_ConvertToString_hook.create(game::SL_ConvertToString_ADDR(), SL_ConvertToString_stub, quick); + SL_GetStringLen_hook.create(game::SL_GetStringLen_ADDR(), SL_GetStringLen_stub, quick); + GetHashCode_hook.create(game::GetHashCode_ADDR(), GetHashCode_stub, quick); + SL_Init_hook.create(game::SL_Init_ADDR(), SL_Init_stub, quick); + SL_FindStringOfSize_hook.create(game::SL_FindStringOfSize_ADDR(), SL_FindStringOfSize_stub, quick); + SL_FindString_hook.create(game::SL_FindString_ADDR(), SL_FindString_stub, quick); + SL_FindLowercaseString_hook.create(game::SL_FindLowercaseString.get(), SL_FindLowercaseString_stub, quick); + SL_AddUserInternal_hook.create(game::SL_AddUserInternal_ADDR(), SL_AddUserInternal_stub, quick); + Mark_ScriptStringCustom_hook.create(game::Mark_ScriptStringCustom_ADDR(), Mark_ScriptStringCustom_stub, quick); + SL_GetStringOfSize_hook.create(game::SL_GetStringOfSize.get(), SL_GetStringOfSize_stub, quick); + SL_GetString__hook.create(game::SL_GetString__ADDR(), SL_GetString__stub, quick); + SL_GetString__0_hook.create(game::SL_GetString__0_ADDR(), SL_GetString__0_stub, quick); + SL_GetLowercaseStringOfLen_hook.create(game::SL_GetLowercaseStringOfLen.get(), SL_GetLowercaseStringOfLen_stub, quick); + SL_GetLowercaseString_hook.create(game::SL_GetLowercaseString_ADDR(), SL_GetLowercaseString_stub, quick); + SL_ConvertToLowercase_hook.create(game::SL_ConvertToLowercase.get(), SL_ConvertToLowercase_stub, quick); + SL_TransferRefToUser_hook.create(game::SL_TransferRefToUser_ADDR(), SL_TransferRefToUser_stub, quick); + SL_FreeString_hook.create(game::SL_FreeString.get(), SL_FreeString_stub, quick); + SL_RemoveRefToString_hook.create(game::SL_RemoveRefToString_ADDR(), SL_RemoveRefToString_stub, quick); + Scr_SetString_hook.create(game::Scr_SetString_ADDR(), Scr_SetString_stub, quick); + Scr_SetStringFromCharString_hook.create(game::Scr_SetStringFromCharString_ADDR(), Scr_SetStringFromCharString_stub, quick); + GScr_AllocString_hook.create(game::GScr_AllocString_ADDR(), GScr_AllocString_stub, quick); + SL_GetStringForFloat_hook.create(game::SL_GetStringForFloat_ADDR(), SL_GetStringForFloat_stub, quick); + SL_GetStringForInt_hook.create(game::SL_GetStringForInt_ADDR(), SL_GetStringForInt_stub, quick); + SL_GetStringForVector_hook.create(game::SL_GetStringForVector_ADDR(), SL_GetStringForVector_stub, quick); + SL_ShutdownSystem_hook.create(game::SL_ShutdownSystem_ADDR(), SL_ShutdownSystem_stub, quick); + SL_TransferSystem_hook.create(game::SL_TransferSystem.get(), SL_TransferSystem_stub, quick); + SL_CreateCanonicalFilename_hook.create(game::SL_CreateCanonicalFilename_ADDR(), SL_CreateCanonicalFilename_stub, quick); + Scr_CreateCanonicalFilename_hook.create(game::Scr_CreateCanonicalFilename.get(), Scr_CreateCanonicalFilename_stub, quick); //Original hook function addresses SL_ConvertToString_original = SL_ConvertToString_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_variable.cpp b/src/component/decomp/clientscript/re_cscr_variable.cpp index fbd7b9e..fe0b6ac 100644 --- a/src/component/decomp/clientscript/re_cscr_variable.cpp +++ b/src/component/decomp/clientscript/re_cscr_variable.cpp @@ -2288,111 +2288,116 @@ namespace re_cscr_variable public: void post_unpack() override { - ThreadInfoCompare_hook.create(game::ThreadInfoCompare.get(), ThreadInfoCompare_stub); - Scr_DumpScriptThreads_hook.create(game::Scr_DumpScriptThreads.get(), Scr_DumpScriptThreads_stub); - Scr_InitVariableRange_hook.create(game::Scr_InitVariableRange_ADDR(), Scr_InitVariableRange_stub); - Scr_InitClassMap_hook.create(game::Scr_InitClassMap_ADDR(), Scr_InitClassMap_stub); - GetNewVariableIndexInternal3_hook.create(game::GetNewVariableIndexInternal3.get(), GetNewVariableIndexInternal3_stub); - GetNewVariableIndexInternal2_hook.create(game::GetNewVariableIndexInternal2_ADDR(), GetNewVariableIndexInternal2_stub); - GetNewVariableIndexReverseInternal2_hook.create(game::GetNewVariableIndexReverseInternal2_ADDR(), GetNewVariableIndexReverseInternal2_stub); - MakeVariableExternal_hook.create(game::MakeVariableExternal_ADDR(), MakeVariableExternal_stub); - FreeChildValue_hook.create(game::FreeChildValue_ADDR(), FreeChildValue_stub); - ClearObjectInternal_hook.create(game::ClearObjectInternal.get(), ClearObjectInternal_stub); - ClearObject_hook.create(game::ClearObject_ADDR(), ClearObject_stub); - Scr_StopThread_hook.create(game::Scr_StopThread_ADDR(), Scr_StopThread_stub); - GetSafeParentLocalId_hook.create(game::GetSafeParentLocalId_ADDR(), GetSafeParentLocalId_stub); - GetStartLocalId_hook.create(game::GetStartLocalId_ADDR(), GetStartLocalId_stub); - Scr_KillThread_hook.create(game::Scr_KillThread_ADDR(), Scr_KillThread_stub); - AllocVariable_hook.create(game::AllocVariable_ADDR(), AllocVariable_stub); - FreeVariable_hook.create(game::FreeVariable_ADDR(), FreeVariable_stub); - AllocValue_hook.create(game::AllocValue_ADDR(), AllocValue_stub); - AllocEntity_hook.create(game::AllocEntity_ADDR(), AllocEntity_stub); - Scr_AllocArray_hook.create(game::Scr_AllocArray_ADDR(), Scr_AllocArray_stub); - AllocChildThread_hook.create(game::AllocChildThread_ADDR(), AllocChildThread_stub); - FreeValue_hook.create(game::FreeValue_ADDR(), FreeValue_stub); - RemoveRefToObject_hook.create(game::RemoveRefToObject_ADDR(), RemoveRefToObject_stub); - Scr_AllocVector_hook.create(game::Scr_AllocVector_ADDR(), Scr_AllocVector_stub); - RemoveRefToVector_hook.create(game::RemoveRefToVector_ADDR(), RemoveRefToVector_stub); - AddRefToValue_hook.create(game::AddRefToValue_ADDR(), AddRefToValue_stub); - RemoveRefToValueInternal_hook.create(game::RemoveRefToValueInternal.get(), RemoveRefToValueInternal_stub); - FindArrayVariable_hook.create(game::FindArrayVariable_ADDR(), FindArrayVariable_stub); - FindVariable_hook.create(game::FindVariable_ADDR(), FindVariable_stub); - GetArrayVariableIndex_hook.create(game::GetArrayVariableIndex_ADDR(), GetArrayVariableIndex_stub); - Scr_GetVariableFieldIndex_hook.create(game::Scr_GetVariableFieldIndex_ADDR(), Scr_GetVariableFieldIndex_stub); - Scr_FindVariableField_hook.create(game::Scr_FindVariableField_ADDR(), Scr_FindVariableField_stub); - ClearVariableField_hook.create(game::ClearVariableField_ADDR(), ClearVariableField_stub); - GetVariable_hook.create(game::GetVariable_ADDR(), GetVariable_stub); - GetNewVariable_hook.create(game::GetNewVariable_ADDR(), GetNewVariable_stub); - GetObjectVariable_hook.create(game::GetObjectVariable_ADDR(), GetObjectVariable_stub); - GetNewObjectVariable_hook.create(game::GetNewObjectVariable_ADDR(), GetNewObjectVariable_stub); - RemoveVariable_hook.create(game::RemoveVariable_ADDR(), RemoveVariable_stub); - RemoveNextVariable_hook.create(game::RemoveNextVariable_ADDR(), RemoveNextVariable_stub); - SafeRemoveVariable_hook.create(game::SafeRemoveVariable_ADDR(), SafeRemoveVariable_stub); - CopyArray_hook.create(game::CopyArray.get(), CopyArray_stub); - SetVariableValue_hook.create(game::SetVariableValue_ADDR(), SetVariableValue_stub); - SetVariableEntityFieldValue_hook.create(game::SetVariableEntityFieldValue.get(), SetVariableEntityFieldValue_stub); - Scr_EvalVariable_hook.create(game::Scr_EvalVariable_ADDR(), Scr_EvalVariable_stub); - Scr_EvalVariableObject_hook.create(game::Scr_EvalVariableObject_ADDR(), Scr_EvalVariableObject_stub); - Scr_EvalVariableEntityField_hook.create(game::Scr_EvalVariableEntityField_ADDR(), Scr_EvalVariableEntityField_stub); - Scr_EvalVariableField_hook.create(game::Scr_EvalVariableField_ADDR(), Scr_EvalVariableField_stub); - Scr_EvalSizeValue_hook.create(game::Scr_EvalSizeValue_ADDR(), Scr_EvalSizeValue_stub); - GetObject_hook.create(game::GetObject_ADDR(), GetObject_stub); - GetArray_hook.create(game::GetArray_ADDR(), GetArray_stub); - Scr_EvalBoolComplement_hook.create(game::Scr_EvalBoolComplement_ADDR(), Scr_EvalBoolComplement_stub); - Scr_CastBool_hook.create(game::Scr_CastBool_ADDR(), Scr_CastBool_stub); - Scr_CastString_hook.create(game::Scr_CastString_ADDR(), Scr_CastString_stub); - Scr_CastDebugString_hook.create(game::Scr_CastDebugString_ADDR(), Scr_CastDebugString_stub); - Scr_ClearVector_hook.create(game::Scr_ClearVector.get(), Scr_ClearVector_stub); - Scr_CastVector_hook.create(game::Scr_CastVector_ADDR(), Scr_CastVector_stub); - Scr_EvalFieldObject_hook.create(game::Scr_EvalFieldObject_ADDR(), Scr_EvalFieldObject_stub); - Scr_UnmatchingTypesError_hook.create(game::Scr_UnmatchingTypesError_ADDR(), Scr_UnmatchingTypesError_stub); - Scr_CastWeakerPair_hook.create(game::Scr_CastWeakerPair_ADDR(), Scr_CastWeakerPair_stub); - Scr_CastWeakerStringPair_hook.create(game::Scr_CastWeakerStringPair_ADDR(), Scr_CastWeakerStringPair_stub); - Scr_EvalOr_hook.create(game::Scr_EvalOr_ADDR(), Scr_EvalOr_stub); - Scr_EvalExOr_hook.create(game::Scr_EvalExOr_ADDR(), Scr_EvalExOr_stub); - Scr_EvalAnd_hook.create(game::Scr_EvalAnd_ADDR(), Scr_EvalAnd_stub); - Scr_EvalEquality_hook.create(game::Scr_EvalEquality_ADDR(), Scr_EvalEquality_stub); - Scr_EvalLess_hook.create(game::Scr_EvalLess_ADDR(), Scr_EvalLess_stub); - Scr_EvalGreaterEqual_hook.create(game::Scr_EvalGreaterEqual_ADDR(), Scr_EvalGreaterEqual_stub); - Scr_EvalGreater_hook.create(game::Scr_EvalGreater_ADDR(), Scr_EvalGreater_stub); - Scr_EvalLessEqual_hook.create(game::Scr_EvalLessEqual_ADDR(), Scr_EvalLessEqual_stub); - Scr_EvalShiftLeft_hook.create(game::Scr_EvalShiftLeft_ADDR(), Scr_EvalShiftLeft_stub); - Scr_EvalShiftRight_hook.create(game::Scr_EvalShiftRight_ADDR(), Scr_EvalShiftRight_stub); - Scr_EvalPlus_hook.create(game::Scr_EvalPlus_ADDR(), Scr_EvalPlus_stub); - Scr_EvalMinus_hook.create(game::Scr_EvalMinus_ADDR(), Scr_EvalMinus_stub); - Scr_EvalMultiply_hook.create(game::Scr_EvalMultiply_ADDR(), Scr_EvalMultiply_stub); - Scr_EvalDivide_hook.create(game::Scr_EvalDivide_ADDR(), Scr_EvalDivide_stub); - Scr_EvalMod_hook.create(game::Scr_EvalMod_ADDR(), Scr_EvalMod_stub); - Scr_EvalBinaryOperator_hook.create(game::Scr_EvalBinaryOperator_ADDR(), Scr_EvalBinaryOperator_stub); - Scr_FreeEntityNum_hook.create(game::Scr_FreeEntityNum_ADDR(), Scr_FreeEntityNum_stub); - Scr_FreeEntityList_hook.create(game::Scr_FreeEntityList.get(), Scr_FreeEntityList_stub); - Scr_FreeObjects_hook.create(game::Scr_FreeObjects.get(), Scr_FreeObjects_stub); - Scr_SetClassMap_hook.create(game::Scr_SetClassMap_ADDR(), Scr_SetClassMap_stub); - Scr_RemoveClassMap_hook.create(game::Scr_RemoveClassMap_ADDR(), Scr_RemoveClassMap_stub); - Scr_AddClassField_hook.create(game::Scr_AddClassField_ADDR(), Scr_AddClassField_stub); - Scr_GetOffset_hook.create(game::Scr_GetOffset_ADDR(), Scr_GetOffset_stub); - FindEntityId_hook.create(game::FindEntityId_ADDR(), FindEntityId_stub); - Scr_GetEntityId_hook.create(game::Scr_GetEntityId_ADDR(), Scr_GetEntityId_stub); - Scr_FindArrayIndex_hook.create(game::Scr_FindArrayIndex_ADDR(), Scr_FindArrayIndex_stub); - Scr_EvalArray_hook.create(game::Scr_EvalArray_ADDR(), Scr_EvalArray_stub); - Scr_EvalArrayRef_hook.create(game::Scr_EvalArrayRef_ADDR(), Scr_EvalArrayRef_stub); - ClearArray_hook.create(game::ClearArray_ADDR(), ClearArray_stub); - SetEmptyArray_hook.create(game::SetEmptyArray_ADDR(), SetEmptyArray_stub); - Scr_AddArrayKeys_hook.create(game::Scr_AddArrayKeys.get(), Scr_AddArrayKeys_stub); - Scr_GetEntityIdRef_hook.create(game::Scr_GetEntityIdRef_ADDR(), Scr_GetEntityIdRef_stub); - CopyEntity_hook.create(game::CopyEntity_ADDR(), CopyEntity_stub); - Scr_GetEndonUsage_hook.create(game::Scr_GetEndonUsage_ADDR(), Scr_GetEndonUsage_stub); - Scr_GetObjectUsage_hook.create(game::Scr_GetObjectUsage.get(), Scr_GetObjectUsage_stub); - Scr_GetThreadUsage_hook.create(game::Scr_GetThreadUsage_ADDR(), Scr_GetThreadUsage_stub); - Scr_FindField_hook.create(game::Scr_FindField_ADDR(), Scr_FindField_stub); - Scr_GetSourceFile_LoadObj_hook.create(game::Scr_GetSourceFile_LoadObj.get(), Scr_GetSourceFile_LoadObj_stub); - Scr_GetSourceFile_FastFile_hook.create(game::Scr_GetSourceFile_FastFile.get(), Scr_GetSourceFile_FastFile_stub); - Scr_AddFieldsForFile_hook.create(game::Scr_AddFieldsForFile.get(), Scr_AddFieldsForFile_stub); - Scr_AddFields_LoadObj_hook.create(game::Scr_AddFields_LoadObj.get(), Scr_AddFields_LoadObj_stub); - Scr_AddFields_FastFile_hook.create(game::Scr_AddFields_FastFile.get(), Scr_AddFields_FastFile_stub); - Scr_MakeValuePrimitive_hook.create(game::Scr_MakeValuePrimitive.get(), Scr_MakeValuePrimitive_stub); - Scr_FreeGameVariable_hook.create(game::Scr_FreeGameVariable_ADDR(), Scr_FreeGameVariable_stub); - Scr_SLHasLowercaseString_hook.create(game::Scr_SLHasLowercaseString_ADDR(), Scr_SLHasLowercaseString_stub); + bool quick = true; +#ifdef RE_CSCR_VARIABLE_USE_WRAPPERS + quick = false; +#endif + + ThreadInfoCompare_hook.create(game::ThreadInfoCompare.get(), ThreadInfoCompare_stub, quick); + Scr_DumpScriptThreads_hook.create(game::Scr_DumpScriptThreads.get(), Scr_DumpScriptThreads_stub, quick); + Scr_InitVariableRange_hook.create(game::Scr_InitVariableRange_ADDR(), Scr_InitVariableRange_stub, quick); + Scr_InitClassMap_hook.create(game::Scr_InitClassMap_ADDR(), Scr_InitClassMap_stub, quick); + GetNewVariableIndexInternal3_hook.create(game::GetNewVariableIndexInternal3.get(), GetNewVariableIndexInternal3_stub, quick); + GetNewVariableIndexInternal2_hook.create(game::GetNewVariableIndexInternal2_ADDR(), GetNewVariableIndexInternal2_stub, quick); + GetNewVariableIndexReverseInternal2_hook.create(game::GetNewVariableIndexReverseInternal2_ADDR(), GetNewVariableIndexReverseInternal2_stub, quick); + MakeVariableExternal_hook.create(game::MakeVariableExternal_ADDR(), MakeVariableExternal_stub, quick); + FreeChildValue_hook.create(game::FreeChildValue_ADDR(), FreeChildValue_stub, quick); + ClearObjectInternal_hook.create(game::ClearObjectInternal.get(), ClearObjectInternal_stub, quick); + ClearObject_hook.create(game::ClearObject_ADDR(), ClearObject_stub, quick); + Scr_StopThread_hook.create(game::Scr_StopThread_ADDR(), Scr_StopThread_stub, quick); + GetSafeParentLocalId_hook.create(game::GetSafeParentLocalId_ADDR(), GetSafeParentLocalId_stub, quick); + GetStartLocalId_hook.create(game::GetStartLocalId_ADDR(), GetStartLocalId_stub, quick); + Scr_KillThread_hook.create(game::Scr_KillThread_ADDR(), Scr_KillThread_stub, quick); + AllocVariable_hook.create(game::AllocVariable_ADDR(), AllocVariable_stub, quick); + FreeVariable_hook.create(game::FreeVariable_ADDR(), FreeVariable_stub, quick); + AllocValue_hook.create(game::AllocValue_ADDR(), AllocValue_stub, quick); + AllocEntity_hook.create(game::AllocEntity_ADDR(), AllocEntity_stub, quick); + Scr_AllocArray_hook.create(game::Scr_AllocArray_ADDR(), Scr_AllocArray_stub, quick); + AllocChildThread_hook.create(game::AllocChildThread_ADDR(), AllocChildThread_stub, quick); + FreeValue_hook.create(game::FreeValue_ADDR(), FreeValue_stub, quick); + RemoveRefToObject_hook.create(game::RemoveRefToObject_ADDR(), RemoveRefToObject_stub, quick); + Scr_AllocVector_hook.create(game::Scr_AllocVector_ADDR(), Scr_AllocVector_stub, quick); + RemoveRefToVector_hook.create(game::RemoveRefToVector_ADDR(), RemoveRefToVector_stub, quick); + AddRefToValue_hook.create(game::AddRefToValue_ADDR(), AddRefToValue_stub, quick); + RemoveRefToValueInternal_hook.create(game::RemoveRefToValueInternal.get(), RemoveRefToValueInternal_stub, quick); + FindArrayVariable_hook.create(game::FindArrayVariable_ADDR(), FindArrayVariable_stub, quick); + FindVariable_hook.create(game::FindVariable_ADDR(), FindVariable_stub, quick); + GetArrayVariableIndex_hook.create(game::GetArrayVariableIndex_ADDR(), GetArrayVariableIndex_stub, quick); + Scr_GetVariableFieldIndex_hook.create(game::Scr_GetVariableFieldIndex_ADDR(), Scr_GetVariableFieldIndex_stub, quick); + Scr_FindVariableField_hook.create(game::Scr_FindVariableField_ADDR(), Scr_FindVariableField_stub, quick); + ClearVariableField_hook.create(game::ClearVariableField_ADDR(), ClearVariableField_stub, quick); + GetVariable_hook.create(game::GetVariable_ADDR(), GetVariable_stub, quick); + GetNewVariable_hook.create(game::GetNewVariable_ADDR(), GetNewVariable_stub, quick); + GetObjectVariable_hook.create(game::GetObjectVariable_ADDR(), GetObjectVariable_stub, quick); + GetNewObjectVariable_hook.create(game::GetNewObjectVariable_ADDR(), GetNewObjectVariable_stub, quick); + RemoveVariable_hook.create(game::RemoveVariable_ADDR(), RemoveVariable_stub, quick); + RemoveNextVariable_hook.create(game::RemoveNextVariable_ADDR(), RemoveNextVariable_stub, quick); + SafeRemoveVariable_hook.create(game::SafeRemoveVariable_ADDR(), SafeRemoveVariable_stub, quick); + CopyArray_hook.create(game::CopyArray.get(), CopyArray_stub, quick); + SetVariableValue_hook.create(game::SetVariableValue_ADDR(), SetVariableValue_stub, quick); + SetVariableEntityFieldValue_hook.create(game::SetVariableEntityFieldValue.get(), SetVariableEntityFieldValue_stub, quick); + Scr_EvalVariable_hook.create(game::Scr_EvalVariable_ADDR(), Scr_EvalVariable_stub, quick); + Scr_EvalVariableObject_hook.create(game::Scr_EvalVariableObject_ADDR(), Scr_EvalVariableObject_stub, quick); + Scr_EvalVariableEntityField_hook.create(game::Scr_EvalVariableEntityField_ADDR(), Scr_EvalVariableEntityField_stub, quick); + Scr_EvalVariableField_hook.create(game::Scr_EvalVariableField_ADDR(), Scr_EvalVariableField_stub, quick); + Scr_EvalSizeValue_hook.create(game::Scr_EvalSizeValue_ADDR(), Scr_EvalSizeValue_stub, quick); + GetObject_hook.create(game::GetObject_ADDR(), GetObject_stub, quick); + GetArray_hook.create(game::GetArray_ADDR(), GetArray_stub, quick); + Scr_EvalBoolComplement_hook.create(game::Scr_EvalBoolComplement_ADDR(), Scr_EvalBoolComplement_stub, quick); + Scr_CastBool_hook.create(game::Scr_CastBool_ADDR(), Scr_CastBool_stub, quick); + Scr_CastString_hook.create(game::Scr_CastString_ADDR(), Scr_CastString_stub, quick); + Scr_CastDebugString_hook.create(game::Scr_CastDebugString_ADDR(), Scr_CastDebugString_stub, quick); + Scr_ClearVector_hook.create(game::Scr_ClearVector.get(), Scr_ClearVector_stub, quick); + Scr_CastVector_hook.create(game::Scr_CastVector_ADDR(), Scr_CastVector_stub, quick); + Scr_EvalFieldObject_hook.create(game::Scr_EvalFieldObject_ADDR(), Scr_EvalFieldObject_stub, quick); + Scr_UnmatchingTypesError_hook.create(game::Scr_UnmatchingTypesError_ADDR(), Scr_UnmatchingTypesError_stub, quick); + Scr_CastWeakerPair_hook.create(game::Scr_CastWeakerPair_ADDR(), Scr_CastWeakerPair_stub, quick); + Scr_CastWeakerStringPair_hook.create(game::Scr_CastWeakerStringPair_ADDR(), Scr_CastWeakerStringPair_stub, quick); + Scr_EvalOr_hook.create(game::Scr_EvalOr_ADDR(), Scr_EvalOr_stub, quick); + Scr_EvalExOr_hook.create(game::Scr_EvalExOr_ADDR(), Scr_EvalExOr_stub, quick); + Scr_EvalAnd_hook.create(game::Scr_EvalAnd_ADDR(), Scr_EvalAnd_stub, quick); + Scr_EvalEquality_hook.create(game::Scr_EvalEquality_ADDR(), Scr_EvalEquality_stub, quick); + Scr_EvalLess_hook.create(game::Scr_EvalLess_ADDR(), Scr_EvalLess_stub, quick); + Scr_EvalGreaterEqual_hook.create(game::Scr_EvalGreaterEqual_ADDR(), Scr_EvalGreaterEqual_stub, quick); + Scr_EvalGreater_hook.create(game::Scr_EvalGreater_ADDR(), Scr_EvalGreater_stub, quick); + Scr_EvalLessEqual_hook.create(game::Scr_EvalLessEqual_ADDR(), Scr_EvalLessEqual_stub, quick); + Scr_EvalShiftLeft_hook.create(game::Scr_EvalShiftLeft_ADDR(), Scr_EvalShiftLeft_stub, quick); + Scr_EvalShiftRight_hook.create(game::Scr_EvalShiftRight_ADDR(), Scr_EvalShiftRight_stub, quick); + Scr_EvalPlus_hook.create(game::Scr_EvalPlus_ADDR(), Scr_EvalPlus_stub, quick); + Scr_EvalMinus_hook.create(game::Scr_EvalMinus_ADDR(), Scr_EvalMinus_stub, quick); + Scr_EvalMultiply_hook.create(game::Scr_EvalMultiply_ADDR(), Scr_EvalMultiply_stub, quick); + Scr_EvalDivide_hook.create(game::Scr_EvalDivide_ADDR(), Scr_EvalDivide_stub, quick); + Scr_EvalMod_hook.create(game::Scr_EvalMod_ADDR(), Scr_EvalMod_stub, quick); + Scr_EvalBinaryOperator_hook.create(game::Scr_EvalBinaryOperator_ADDR(), Scr_EvalBinaryOperator_stub, quick); + Scr_FreeEntityNum_hook.create(game::Scr_FreeEntityNum_ADDR(), Scr_FreeEntityNum_stub, quick); + Scr_FreeEntityList_hook.create(game::Scr_FreeEntityList.get(), Scr_FreeEntityList_stub, quick); + Scr_FreeObjects_hook.create(game::Scr_FreeObjects.get(), Scr_FreeObjects_stub, quick); + Scr_SetClassMap_hook.create(game::Scr_SetClassMap_ADDR(), Scr_SetClassMap_stub, quick); + Scr_RemoveClassMap_hook.create(game::Scr_RemoveClassMap_ADDR(), Scr_RemoveClassMap_stub, quick); + Scr_AddClassField_hook.create(game::Scr_AddClassField_ADDR(), Scr_AddClassField_stub, quick); + Scr_GetOffset_hook.create(game::Scr_GetOffset_ADDR(), Scr_GetOffset_stub, quick); + FindEntityId_hook.create(game::FindEntityId_ADDR(), FindEntityId_stub, quick); + Scr_GetEntityId_hook.create(game::Scr_GetEntityId_ADDR(), Scr_GetEntityId_stub, quick); + Scr_FindArrayIndex_hook.create(game::Scr_FindArrayIndex_ADDR(), Scr_FindArrayIndex_stub, quick); + Scr_EvalArray_hook.create(game::Scr_EvalArray_ADDR(), Scr_EvalArray_stub, quick); + Scr_EvalArrayRef_hook.create(game::Scr_EvalArrayRef_ADDR(), Scr_EvalArrayRef_stub, quick); + ClearArray_hook.create(game::ClearArray_ADDR(), ClearArray_stub, quick); + SetEmptyArray_hook.create(game::SetEmptyArray_ADDR(), SetEmptyArray_stub, quick); + Scr_AddArrayKeys_hook.create(game::Scr_AddArrayKeys.get(), Scr_AddArrayKeys_stub, quick); + Scr_GetEntityIdRef_hook.create(game::Scr_GetEntityIdRef_ADDR(), Scr_GetEntityIdRef_stub, quick); + CopyEntity_hook.create(game::CopyEntity_ADDR(), CopyEntity_stub, quick); + Scr_GetEndonUsage_hook.create(game::Scr_GetEndonUsage_ADDR(), Scr_GetEndonUsage_stub, quick); + Scr_GetObjectUsage_hook.create(game::Scr_GetObjectUsage.get(), Scr_GetObjectUsage_stub, quick); + Scr_GetThreadUsage_hook.create(game::Scr_GetThreadUsage_ADDR(), Scr_GetThreadUsage_stub, quick); + Scr_FindField_hook.create(game::Scr_FindField_ADDR(), Scr_FindField_stub, quick); + Scr_GetSourceFile_LoadObj_hook.create(game::Scr_GetSourceFile_LoadObj.get(), Scr_GetSourceFile_LoadObj_stub, quick); + Scr_GetSourceFile_FastFile_hook.create(game::Scr_GetSourceFile_FastFile.get(), Scr_GetSourceFile_FastFile_stub, quick); + Scr_AddFieldsForFile_hook.create(game::Scr_AddFieldsForFile.get(), Scr_AddFieldsForFile_stub, quick); + Scr_AddFields_LoadObj_hook.create(game::Scr_AddFields_LoadObj.get(), Scr_AddFields_LoadObj_stub, quick); + Scr_AddFields_FastFile_hook.create(game::Scr_AddFields_FastFile.get(), Scr_AddFields_FastFile_stub, quick); + Scr_MakeValuePrimitive_hook.create(game::Scr_MakeValuePrimitive.get(), Scr_MakeValuePrimitive_stub, quick); + Scr_FreeGameVariable_hook.create(game::Scr_FreeGameVariable_ADDR(), Scr_FreeGameVariable_stub, quick); + Scr_SLHasLowercaseString_hook.create(game::Scr_SLHasLowercaseString_ADDR(), Scr_SLHasLowercaseString_stub, quick); //Original hook function addresses ThreadInfoCompare_original = ThreadInfoCompare_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_vm.cpp b/src/component/decomp/clientscript/re_cscr_vm.cpp index c4d770f..602f688 100644 --- a/src/component/decomp/clientscript/re_cscr_vm.cpp +++ b/src/component/decomp/clientscript/re_cscr_vm.cpp @@ -1524,78 +1524,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 + + 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); //Original hook function addresses Scr_VM_Init_original = Scr_VM_Init_hook.get_original(); diff --git a/src/component/decomp/clientscript/re_cscr_yacc.cpp b/src/component/decomp/clientscript/re_cscr_yacc.cpp index e42a79c..2bfbf09 100644 --- a/src/component/decomp/clientscript/re_cscr_yacc.cpp +++ b/src/component/decomp/clientscript/re_cscr_yacc.cpp @@ -199,17 +199,22 @@ namespace re_cscr_yacc public: void post_unpack() override { - LowerCase_hook.create(game::LowerCase_ADDR(), LowerCase_stub); - yyparse_hook.create(game::yyparse.get(), yyparse_stub); - StringValue_hook.create(game::StringValue_ADDR(), StringValue_stub); - yylex_hook.create(game::yylex.get(), yylex_stub); - yy_get_next_buffer_hook.create(game::yy_get_next_buffer.get(), yy_get_next_buffer_stub); - yy_get_previous_state_hook.create(game::yy_get_previous_state.get(), yy_get_previous_state_stub); - yy_try_NUL_trans_hook.create(game::yy_try_NUL_trans_ADDR(), yy_try_NUL_trans_stub); - yyrestart_hook.create(game::yyrestart.get(), yyrestart_stub); - yy_create_buffer_hook.create(game::yy_create_buffer.get(), yy_create_buffer_stub); - yy_flush_buffer_hook.create(game::yy_flush_buffer_ADDR(), yy_flush_buffer_stub); - ScriptParse_hook.create(game::ScriptParse_ADDR(), ScriptParse_stub); + bool quick = true; +#ifdef RE_CSCR_YACC_USE_WRAPPERS + quick = false; +#endif + + LowerCase_hook.create(game::LowerCase_ADDR(), LowerCase_stub, quick); + yyparse_hook.create(game::yyparse.get(), yyparse_stub, quick); + StringValue_hook.create(game::StringValue_ADDR(), StringValue_stub, quick); + yylex_hook.create(game::yylex.get(), yylex_stub, quick); + yy_get_next_buffer_hook.create(game::yy_get_next_buffer.get(), yy_get_next_buffer_stub, quick); + yy_get_previous_state_hook.create(game::yy_get_previous_state.get(), yy_get_previous_state_stub, quick); + yy_try_NUL_trans_hook.create(game::yy_try_NUL_trans_ADDR(), yy_try_NUL_trans_stub, quick); + yyrestart_hook.create(game::yyrestart.get(), yyrestart_stub, quick); + yy_create_buffer_hook.create(game::yy_create_buffer.get(), yy_create_buffer_stub, quick); + yy_flush_buffer_hook.create(game::yy_flush_buffer_ADDR(), yy_flush_buffer_stub, quick); + ScriptParse_hook.create(game::ScriptParse_ADDR(), ScriptParse_stub, quick); //Original hook function addresses LowerCase_original = LowerCase_hook.get_original(); diff --git a/src/utils/hook.cpp b/src/utils/hook.cpp index 24dda0d..17595c9 100644 --- a/src/utils/hook.cpp +++ b/src/utils/hook.cpp @@ -97,8 +97,15 @@ namespace utils::hook MH_DisableHook(this->place_); } - void detour::create(void* place, void* target) + void detour::create(void* place, void* target, bool quick) { + // each detour is ~30ms to install, quick is for instances where we will NEVER need to invoke the original + if (quick) + { + jump(reinterpret_cast(place), target); + return; + } + this->clear(); this->place_ = place; @@ -110,9 +117,9 @@ namespace utils::hook this->enable(); } - void detour::create(const size_t place, void* target) + void detour::create(const size_t place, void* target, bool quick) { - this->create(reinterpret_cast(place), target); + this->create(reinterpret_cast(place), target, quick); } void detour::clear() diff --git a/src/utils/hook.hpp b/src/utils/hook.hpp index 2b38de0..bec759b 100644 --- a/src/utils/hook.hpp +++ b/src/utils/hook.hpp @@ -86,8 +86,8 @@ namespace utils::hook void enable() const; void disable() const; - void create(void* place, void* target); - void create(size_t place, void* target); + void create(void* place, void* target, bool quick = false); + void create(size_t place, void* target, bool quick = false); void clear(); template