mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 12:02:30 +01:00
64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
|
import os
|
||
|
import re
|
||
|
import sys
|
||
|
|
||
|
IMG_C_RE = re.compile(r"#include \".*png\.inc\.c\"")
|
||
|
PAL_C_RE = re.compile(r"#include \".*pal\.inc\.c\"")
|
||
|
|
||
|
|
||
|
def img_replacer(match):
|
||
|
s = match.group(0)
|
||
|
|
||
|
png_inc_c_path = s.split('"')[1]
|
||
|
png_inc_c_content = None
|
||
|
|
||
|
for version in ["us", "pal", "ique", "jp"]:
|
||
|
try:
|
||
|
with open(f"ver/{version}/build/include/" + png_inc_c_path, "r") as f:
|
||
|
png_inc_c_content = f.read()
|
||
|
break
|
||
|
except FileNotFoundError:
|
||
|
pass
|
||
|
|
||
|
if png_inc_c_content is None:
|
||
|
print(f"Could not find {png_inc_c_path} in any version")
|
||
|
return s
|
||
|
|
||
|
symbol_name = png_inc_c_content.split()[2][:-2]
|
||
|
path_bin = png_inc_c_path.replace(".inc.c", ".bin")
|
||
|
|
||
|
inc_type = "INCLUDE_IMG" if ".png" in png_inc_c_path else "INCLUDE_PAL"
|
||
|
|
||
|
return f'{inc_type}("{path_bin}", {symbol_name});'
|
||
|
|
||
|
|
||
|
for dirs, subdirs, files in os.walk("src"):
|
||
|
for file in files:
|
||
|
if file.endswith(".c"):
|
||
|
with open(os.path.join(dirs, file), "r") as f:
|
||
|
source_lines = f.readlines()
|
||
|
|
||
|
if any(IMG_C_RE.match(l) or PAL_C_RE.match(l) for l in source_lines):
|
||
|
# Find first empty line in file and put the include there
|
||
|
first_line_idx = 0
|
||
|
|
||
|
if "effects/gfx" in dirs:
|
||
|
source_lines.insert(0, '#include "include_asset.h"\n')
|
||
|
source_lines.insert(1, "\n")
|
||
|
else:
|
||
|
try:
|
||
|
first_line_idx = source_lines.index("\n")
|
||
|
if first_line_idx > 11:
|
||
|
print("File {} has more than 11 lines before first empty line".format(file))
|
||
|
continue
|
||
|
except ValueError:
|
||
|
first_line_idx = 0
|
||
|
source_lines.insert(first_line_idx, '#include "include_asset.h"\n')
|
||
|
|
||
|
for i in range(len(source_lines)):
|
||
|
source_lines[i] = re.sub(IMG_C_RE, img_replacer, source_lines[i])
|
||
|
source_lines[i] = re.sub(PAL_C_RE, img_replacer, source_lines[i])
|
||
|
|
||
|
with open(os.path.join(dirs, file), "w") as f:
|
||
|
f.writelines(source_lines)
|