mirror of
https://github.com/open-goal/jak-project
synced 2026-05-31 09:22:14 -04:00
e6d17eb78f
* stuck: `crates` has issues setting bitfield with `r0` * decomp: finish `plant-boss` except for 1 function * decomp: finish `crates` * address feedback
69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
import re
|
|
from jak1_file_list import file_list
|
|
import argparse
|
|
import os
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--files")
|
|
args = parser.parse_args()
|
|
|
|
files = args.files.split(",")
|
|
|
|
throw_error = False
|
|
|
|
method_split_pattern = re.compile('t9-\d+\s\(method-of-object')
|
|
function_split_pattern = re.compile('\(t9-\d+\)')
|
|
missing_res_tag_pattern = re.compile('(sv-\d{2,} int)')
|
|
decompiler_error_pattern = re.compile(';; ERROR')
|
|
missing_state_arg = re.compile('\s\(-> arg3 param \d\)\s')
|
|
|
|
for file in files:
|
|
src_path = ""
|
|
for f in file_list:
|
|
if f[2] != 3:
|
|
continue
|
|
if f[0] == file:
|
|
src_path = f[4]
|
|
break
|
|
|
|
if not os.path.exists("./goal_src/{}".format(src_path)):
|
|
print("{} couldn't find in /goal_src!".format(file))
|
|
throw_error = True
|
|
continue
|
|
|
|
file_path = "./goal_src/{}/{}.gc".format(src_path, file)
|
|
with open(file_path) as f:
|
|
for lineno, line in enumerate(f):
|
|
method_split_match = method_split_pattern.search(line)
|
|
if method_split_match:
|
|
print("method_split - {}:{}".format(file_path, lineno + 1))
|
|
throw_error = True
|
|
continue
|
|
function_split_match = function_split_pattern.search(line)
|
|
if function_split_match:
|
|
print("function_split - {}:{}".format(file_path, lineno + 1))
|
|
throw_error = True
|
|
continue
|
|
missing_res_tag_match = missing_res_tag_pattern.search(line)
|
|
if missing_res_tag_match:
|
|
print("missing_res_tag - {}:{}".format(file_path, lineno + 1))
|
|
throw_error = True
|
|
continue
|
|
decompiler_error_match = decompiler_error_pattern.search(line)
|
|
if decompiler_error_match:
|
|
print("decompiler_error - {}:{}".format(file_path, lineno + 1))
|
|
throw_error = True
|
|
continue
|
|
# todo - not good enough, ignore if there is only whitespace on the leftof the match
|
|
# missing_state_arg_match = missing_state_arg.search(line)
|
|
# if missing_state_arg_match:
|
|
# print("missing_state_arg - {}:{}".format(file_path, lineno + 1))
|
|
# throw_error = True
|
|
# continue
|
|
|
|
if throw_error:
|
|
print("found potential problems!")
|
|
exit(1)
|
|
else:
|
|
print("looks good!")
|