mm/tools/actorfixer.py
Anghelo Carvajal 4d6d9c27a4
code_0x8017FEB0 OK (#137)
* almost every function

* atans ok

* import data and rodata

* format `atan_first_8th_array`

* fix signature and rodata

* rename to angle

* Rename the functions to match their OoT counterparts

* rename code_0x8017FEB0 to sys_math_atan
2021-05-18 22:58:30 -04:00

57 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import argparse
# "old": "new"
animdict ={
"Actor_GetSwitchFlag": "Flags_GetSwitch",
"atan_flip": "Math_Acot2F",
"atans": "Math_Atan2S",
}
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)