ogrebattle64/tools/class_data.py

27 lines
638 B
Python

from ob import read_rom, ELEMENT_NAME
from struct import unpack_from
NAME_VADDR_START = 0x8016AF80
NAME_ADDR_START = 0x40E80
CLASS_DATA = 0x5DB14
def read_class(index):
CLASS_SIZE = 0x48
CLASS_FORMAT = '>IH'
class_start = CLASS_DATA + (index * CLASS_SIZE)
class_end = class_start + CLASS_SIZE
return unpack_from(CLASS_FORMAT, read_rom(class_start, class_end))
for i in range(1, 10):
(name_vaddr, rest) = read_class(i)
name_addr_diff = (name_vaddr - NAME_VADDR_START) + NAME_ADDR_START
name = read_rom(name_addr_diff, name_addr_diff + 32).split(b'\0', 1)[0]
print(f"{name}:\t")
print(rest)