From d7ab087fe469ad7ddc9a9722104a451b83b0f858 Mon Sep 17 00:00:00 2001 From: s4Ys369 Date: Sat, 7 Sep 2024 09:08:43 -0400 Subject: [PATCH 1/2] fix exporting the levels/scripts.c write for common1 and group0 --- fast64_internal/sm64/sm64_objects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fast64_internal/sm64/sm64_objects.py b/fast64_internal/sm64/sm64_objects.py index 3662ede44..5f7463393 100644 --- a/fast64_internal/sm64/sm64_objects.py +++ b/fast64_internal/sm64/sm64_objects.py @@ -1636,7 +1636,7 @@ def export_group_script_load(self, script_path, props): if props.group_num != 0: script_start = f"const LevelScript script_func_global_{props.group_num}[]" else: - script_start = f"const LevelScript level_main_scripts_entry[]" + script_start = f" ALLOC_LEVEL_POOL()," match_line, sig_insert_line, default_line = self.find_export_lines( script_lines, From ce030e673c9a94167a3edc9cecbcb850ee0e37e3 Mon Sep 17 00:00:00 2001 From: s4Ys369 Date: Sat, 7 Sep 2024 10:28:42 -0400 Subject: [PATCH 2/2] Lila's updated solution --- fast64_internal/sm64/sm64_objects.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/fast64_internal/sm64/sm64_objects.py b/fast64_internal/sm64/sm64_objects.py index 5f7463393..951e8bcc5 100644 --- a/fast64_internal/sm64/sm64_objects.py +++ b/fast64_internal/sm64/sm64_objects.py @@ -1633,24 +1633,34 @@ def export_group_script_load(self, script_path, props): script_lines = open(script_path, "r").readlines() script_load = f" LOAD_MODEL_FROM_GEO({props.model_id_define}, {props.geo_name}),\n" - if props.group_num != 0: - script_start = f"const LevelScript script_func_global_{props.group_num}[]" + if props.group_num == 0: + script = "level_main_scripts_entry" else: - script_start = f" ALLOC_LEVEL_POOL()," + script = f"script_func_global_{props.group_num}" match_line, sig_insert_line, default_line = self.find_export_lines( script_lines, match_str=f"{props.model_id_define},", - start_delim=script_start, + start_delim=f"const LevelScript {script}[]", end_delim="};", ) if match_line: script_lines[match_line] = script_load + elif sig_insert_line and props.group_num == 0: + for i, line in enumerate(script_lines[sig_insert_line:]): + if "ALLOC_LEVEL_POOL()" in line: + script_lines.insert(sig_insert_line + i + 1, script_load) + break + elif "FREE_LEVEL_POOL()" in line: + script_lines.insert(sig_insert_line + i, script_load) + break + elif "};" in line: + raise PluginError(f"Could not find FREE_LEVEL_POOL() or ALLOC_LEVEL_POOL() in {script}") elif sig_insert_line: script_lines.insert(sig_insert_line + 1, script_load) else: - raise PluginError(f"Could not find {script_start} in {script_path}") + raise PluginError(f"Could not find {script} in {script_path}") self.write_file_lines(script_path, script_lines)