mm/tools/actorfixer.py

187 lines
9.0 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse, os
# "old": "new"
animdict ={
"Actor_GetSwitchFlag": "Flags_GetSwitch",
"atan_flip": "Math_Acot2F",
"atans": "Math_Atan2S",
"SysMatrix_StateAlloc": "Matrix_StateAlloc",
"SysMatrix_StatePush": "Matrix_StatePush",
"SysMatrix_CopyCurrentState": "Matrix_CopyCurrentState",
"SysMatrix_SetCurrentState": "Matrix_SetCurrentState",
"SysMatrix_InsertTranslation": "Matrix_InsertTranslation",
"SysMatrix_InsertMatrix": "Matrix_InsertMatrix",
"SysMatrix_Scale": "Matrix_Scale",
"SysMatrix_InsertXRotation_s": "Matrix_InsertXRotation_s",
"SysMatrix_InsertXRotation_f": "Matrix_InsertXRotation_f",
"SysMatrix_RotateStateAroundXAxis": "Matrix_RotateStateAroundXAxis",
"SysMatrix_SetStateXRotation": "Matrix_SetStateXRotation",
"SysMatrix_RotateY": "Matrix_RotateY",
"SysMatrix_InsertYRotation_f": "Matrix_InsertYRotation_f",
"SysMatrix_InsertZRotation_s": "Matrix_InsertZRotation_s",
"SysMatrix_InsertZRotation_f": "Matrix_InsertZRotation_f",
"SysMatrix_InsertRotation": "Matrix_InsertRotation",
"SysMatrix_JointPosition": "Matrix_JointPosition",
"SysMatrix_SetStateRotationAndTranslation": "Matrix_SetStateRotationAndTranslation",
"SysMatrix_ToRSPMatrix": "Matrix_ToRSPMatrix",
"SysMatrix_ToMtx": "Matrix_ToMtx",
"SysMatrix_NewMtx": "Matrix_NewMtx",
"SysMatrix_AppendToPolyOpaDisp": "Matrix_AppendToPolyOpaDisp",
"SysMatrix_MultiplyVector3fByState": "Matrix_MultiplyVector3fByState",
"SysMatrix_GetStateTranslation": "Matrix_GetStateTranslation",
"SysMatrix_GetStateTranslationAndScaledX": "Matrix_GetStateTranslationAndScaledX",
"SysMatrix_GetStateTranslationAndScaledY": "Matrix_GetStateTranslationAndScaledY",
"SysMatrix_GetStateTranslationAndScaledZ": "Matrix_GetStateTranslationAndScaledZ",
"SysMatrix_MultiplyVector3fXZByCurrentState": "Matrix_MultiplyVector3fXZByCurrentState",
"SysMatrix_MtxFCopy": "Matrix_MtxFCopy",
"SysMatrix_FromRSPMatrix": "Matrix_FromRSPMatrix",
"SysMatrix_MultiplyVector3fByMatrix": "Matrix_MultiplyVector3fByMatrix",
"SysMatrix_TransposeXYZ": "Matrix_TransposeXYZ",
"SysMatrix_NormalizeXYZ": "Matrix_NormalizeXYZ",
"SysMatrix_InsertRotationAroundUnitVector_f": "Matrix_InsertRotationAroundUnitVector_f",
"SysMatrix_InsertRotationAroundUnitVector_s": "Matrix_InsertRotationAroundUnitVector_s",
"func_800B78B8": "Actor_UpdateBgCheckInfo",
"func_8012403C": "Player_GetMask",
"func_8012404c": "Player_RemoveMask",
"Actor_SpawnWithParentAndCutscene": "Actor_SpawnAsChildAndCutscene",
"Actor_SpawnWithParent": "Actor_SpawnAsChild",
"func_800BE22C": "Actor_ApplyDamage",
"func_800F0568": "Audio_PlaySoundAtPosition",
"func_8016970C": "Play_CameraSetAtEye",
"func_800BBA88": "Enemy_StartFinishingBlow",
"ShrinkWindow_Step": "ShrinkWindow_Update",
"ShrinkWindow_Fini": "ShrinkWindow_Destroy",
"func_801A89A8": "Audio_QueueSeqCmd",
"SkelAnime_LodDrawLimb": "SkelAnime_DrawLimbLod",
"SkelAnime_LodDraw": "SkelAnime_DrawLod",
"SkelAnime_LodDrawLimbSV": "SkelAnime_DrawFlexLimbLod",
"SkelAnime_LodDrawSV": "SkelAnime_DrawFlexLod",
"SkelAnime_DrawLimb": "SkelAnime_DrawLimbOpa",
"SkelAnime_Draw": "SkelAnime_DrawOpa",
"SkelAnime_DrawLimbSV": "SkelAnime_DrawFlexLimbOpa",
"SkelAnime_DrawSV": "SkelAnime_DrawFlexOpa",
"SkelAnime_AnimateFrame": "SkelAnime_GetFrameData",
"SkelAnime_GetTotalFrames": "Animation_GetLength",
"SkelAnime_GetFrameCount": "Animation_GetLastFrame",
"SkelAnime_Draw2Limb": "SkelAnime_DrawLimb",
"SkelAnime_Draw2": "SkelAnime_Draw",
"SkelAnime_DrawLimbSV2": "SkelAnime_DrawFlexLimb",
"SkelAnime_DrawSV2": "SkelAnime_DrawFlex",
"func_80134FFC": "SkelAnime_GetFrameData2",
"func_801353D4": "Animation_GetLimbCount2",
"SkelAnime_GetTotalFrames2": "Animation_GetLength2",
"SkelAnime_GetFrameCount2": "Animation_GetLastFrame2",
"SkelAnime_InterpolateVec3s": "SkelAnime_InterpFrameTable",
"SkelAnime_AnimationCtxReset": "AnimationContext_Reset",
"func_801358D4": "AnimationContext_SetNextQueue",
"func_801358F4": "AnimationContext_DisableQueue",
"SkelAnime_NextEntry": "AnimationContext_AddEntry",
"SkelAnime_LoadLinkAnimetion": "AnimationContext_SetLoadFrame",
"SkelAnime_LoadAnimationType1": "AnimationContext_SetCopyAll",
"SkelAnime_LoadAnimationType2": "AnimationContext_SetInterp",
"SkelAnime_LoadAnimationType3": "AnimationContext_SetCopyTrue",
"SkelAnime_LoadAnimationType4": "AnimationContext_SetCopyFalse",
"SkelAnime_LoadAnimationType5": "AnimationContext_SetMoveActor",
"SkelAnime_LinkAnimetionLoaded": "AnimationContext_LoadFrame",
"SkelAnime_AnimationType1Loaded": "AnimationContext_CopyAll",
"SkelAnime_AnimationType2Loaded": "AnimationContext_CopyInterp",
"SkelAnime_AnimationType3Loaded": "AnimationContext_CopyTrue",
"SkelAnime_AnimationType4Loaded": "AnimationContext_CopyFalse",
"SkelAnime_AnimationType5Loaded": "AnimationContext_MoveActor",
"func_80135EE8": "AnimationContext_Update",
"SkelAnime_InitLinkAnimetion": "SkelAnime_InitLink",
"func_801360A8": "LinkAnimation_SetUpdateFunction",
"func_801360E0": "LinkAnimation_Update",
"func_80136104": "LinkAnimation_Morph",
"func_801361BC": "LinkAnimation_AnimateFrame",
"func_80136288": "LinkAnimation_Loop",
"func_8013631C": "LinkAnimation_Once",
"SkelAnime_SetTransition": "Animation_SetMorph",
"SkelAnime_ChangeLinkAnim": "LinkAnimation_Change",
"SkelAnime_ChangeLinkAnimDefaultStop": "LinkAnimation_PlayOnce",
"SkelAnime_ChangeLinkAnimPlaybackStop": "LinkAnimation_PlayOnceSetSpeed",
"SkelAnime_ChangeLinkAnimDefaultRepeat": "LinkAnimation_PlayLoop",
"SkelAnime_ChangeLinkAnimPlaybackRepeat": "LinkAnimation_PlayLoopSetSpeed",
"func_8013670C": "LinkAnimation_CopyJointToMorph",
"func_8013673C": "LinkAnimation_CopyMorphToJoint",
"func_8013676C": "LinkAnimation_LoadToMorph",
"func_801367B0": "LinkAnimation_LoadToJoint",
"func_801367F4": "LinkAnimation_InterpJointMorph",
"func_8013682C": "LinkAnimation_BlendToJoint",
"func_801368CC": "LinkAnimation_BlendToMorph",
"SkelAnime_SetModeStop": "LinkAnimation_EndLoop",
"func_80136990": "Animation_OnFrameImpl",
"func_80136A48": "LinkAnimation_OnFrame",
"SkelAnime_InitSV": "SkelAnime_InitFlex",
"func_80136C84": "SkelAnime_SetUpdate",
"SkelAnime_FrameUpdateMatrix": "SkelAnime_Update",
"func_80136CF4": "SkelAnime_Morph",
"func_80136D98": "SkelAnime_MorphTaper",
"func_80136F04": "SkelAnime_AnimateFrame",
"func_8013702C": "SkelAnime_LoopFull",
"func_801370B0": "SkelAnime_LoopPartial",
"func_8013713C": "SkelAnime_Once",
"SkelAnime_ChangeAnimImpl": "Animation_ChangeImpl",
"SkelAnime_ChangeAnim": "Animation_Change",
"SkelAnime_ChangeAnimDefaultStop": "Animation_PlayOnce",
"SkelAnime_ChangeAnimTransitionStop": "Animation_MorphToPlayOnce",
"SkelAnime_ChangeAnimPlaybackStop": "Animation_PlayOnceSetSpeed",
"SkelAnime_ChangeAnimDefaultRepeat": "Animation_PlayLoop",
"SkelAnime_ChangeAnimTransitionRepeat": "Animation_MorphToLoop",
"SkelAnime_ChangeAnimPlaybackRepeat": "Animation_PlayLoopSetSpeed",
"SkelAnime_AnimSetStop": "Animation_EndLoop",
"SkelAnime_AnimReverse": "Animation_Reverse",
"func_80137674": "SkelAnime_CopyFrameTableTrue",
"func_801376DC": "SkelAnime_CopyFrameTableFalse",
"func_80137748": "SkelAnime_UpdateTranslation",
"func_801378B8": "Animation_OnFrame",
"SkelAnime_CopyVec3s": "SkelAnime_CopyFrameTable",
}
def replace_anim(file):
with open(file,'r',encoding = 'utf-8') as infile:
srcdata = infile.read()
funcs = list(animdict.keys())
fixes = 0
for func in funcs:
newfunc = animdict.get(func)
if(newfunc is None):
print("How did this happen?")
return -1
if(func in srcdata):
fixes += 1
print(func)
srcdata = srcdata.replace(func, newfunc)
if(fixes > 0):
print('Changed', fixes,'entr' + ('y' if fixes == 1 else 'ies') + ' in',file)
with open(file, 'w', encoding = 'utf-8', newline = '\n') as outfile:
outfile.write(srcdata)
return 1
def replace_anim_all(repo):
for subdir, dirs, files in os.walk(repo + os.sep + 'src'):
for filename in files:
if(filename.endswith('.c')):
file = subdir + os.sep + filename
replace_anim(file)
for subdir, dirs, files in os.walk(repo + os.sep + 'asm' + os.sep + 'non_matchings'):
for filename in files:
if(filename.endswith('.s')):
file = subdir + os.sep + filename
replace_anim(file)
return 1
parser = argparse.ArgumentParser(description='Update to the new animation names')
parser.add_argument('file', help="source file to be processed. use . to process the whole repo", default = None)
if __name__ == "__main__":
args = parser.parse_args()
if(args.file == '.'):
replace_anim_all(os.curdir)
else:
replace_anim(args.file)