jak-project/scripts/next-decomp-file.py
Tyler Wilding 698d96cc4e
Decompilation: Next batch of files (#539)
* decomp: `collide-frag-h`

* decomp: `effect-control-h`

* decomp: `cam-update-h`

* decomp: `collide-func`

variable pass failed on ray-plane-intersect: invalid unordered_map<K, T> key

* decomp: `cylinder` with vector dot product issue

* decomp: `debug-sphere`

* decomp: `generic`

* decomp: fix `effect-control-h`

* scripts: improve decomp-next script

* decomp: Fix `debug-sphere` issues via type casting

* decomp: Add `collide-frag-h` to reference tests

* scripts: Add script to add a new reference test

* decomp: Add `cam-update-h` to reference tests

* goalc: Fix empty let removal issue

* decomp: Not adding cylinder to goal_src yet either

* decomp: Add `debug-sphere` to reference tests

* decomp: Attempt to finish `generic` but blocked by decomp issue

https://github.com/water111/jak-project/issues/563

* linting

* decomp: Resolve failing tests

* decomp: Address feedback
2021-06-06 23:01:30 -04:00

54 lines
1.7 KiB
Python

import sys
from jak1_file_list import file_list
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--file")
parser.add_argument("--list", type=int)
args = parser.parse_args()
def update_file(file):
new_file_contents = []
print("Next file to decompile is - " + file[0])
print("Target is - " + "goal_src/" + file[4] + "/" + file[0] + ".gc")
print("Uses the following CGO / DGO - " + str(file[3]))
# TODO, update the CGO/DGO
with open("decompiler\config\jak1_ntsc_black_label.jsonc", "r") as config_file:
cfg_lines = config_file.readlines()
for line in cfg_lines:
if "allowed_objects" in line:
line = " \"allowed_objects\": [\"" + file[0] + "\"],\n"
new_file_contents.append(line)
if len(new_file_contents) > 0:
with open("decompiler\config\jak1_ntsc_black_label.jsonc", "w") as f:
f.writelines(new_file_contents)
print("Allowed objects list updated")
if args.file:
for file in file_list:
if file[0] == args.file:
update_file(file)
else:
list_eligible = []
for file in file_list:
if file[2] != 3:
continue
if len(list_eligible) > args.list:
break
src_path = "goal_src/" + file[4] + "/" + file[0] + ".gc"
with open(src_path) as f:
lines = f.readlines()
if len(lines) <= 7:
list_eligible.append("{} - Empty".format(file[0]))
else:
# Check for TODOs
count_todos = 0
for line in lines:
if "TODO" in line:
count_todos = count_todos + 1
if count_todos > 0:
list_eligible.append("{} - {} TODOs - {}".format(file[0], count_todos, src_path))
if len(list_eligible) > 0:
print("The next {} files that need to be addressed:".format(args.list))
print(*list_eligible, sep = "\n")