mirror of
https://github.com/bryanthaboi/gen1recomp
synced 2026-09-26 13:33:27 -04:00
29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
"""Regenerate sprite names and pose counts from the pmd-red decompilation.
|
|
|
|
Usage: python3 tools/gen_pmd_sprite_catalog.py ../pmd-red
|
|
No graphics or ROM bytes are copied into the generated catalog.
|
|
"""
|
|
import pathlib
|
|
import re
|
|
import sys
|
|
|
|
root = pathlib.Path(sys.argv[1])
|
|
headers = {}
|
|
for path in (root / "src/data/ax").glob("*.h"):
|
|
source = path.read_text()
|
|
symbol = re.search(r"const SiroArchive (gAx\w+)", source)[1]
|
|
poses = re.search(r"\.poses = (\w+)", source)[1]
|
|
body = re.search(r"const ax_pose \*const " + poses + r"\[\] = \{(.*?)\};", source, re.S)[1]
|
|
headers[symbol] = len(re.findall(r"\w+", body))
|
|
|
|
rows = re.findall(r'\[MONSTER_(\w+) - 1\] = \{ "ax(\d+)", &(\w+),',
|
|
(root / "src/monster_files_table.c").read_text())
|
|
assert len(rows) == 423
|
|
out = ["-- Generated by tools/gen_pmd_sprite_catalog.py from pmd-red src/data/ax.", "return {"]
|
|
for name, number, symbol in rows:
|
|
out.append(f' [{int(number)}] = {{ id = "{name.lower()}", poses = {headers[symbol]} }},')
|
|
out.append("}\n")
|
|
target = pathlib.Path("src/import/pmd/Catalog.lua")
|
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
target.write_text("\n".join(out))
|