ogrebattle64/tools/items.py

55 lines
1.4 KiB
Python

def read_rom(start, end):
chunksize = end - start
with open("baserom.z64", "rb") as f:
f.seek(start)
return f.read(chunksize)
from struct import unpack_from
def read_item(index):
ITEM_SIZE = 0x20
ITEM_FORMAT = '>BBBBHbbbbbbbbbbbbbbbbbbbbbbBBBB'
item_start = 0x62310 + (index * ITEM_SIZE)
item_end = item_start + ITEM_SIZE
return unpack_from(ITEM_FORMAT, read_rom(item_start, item_end))
ELEMENT_NAMES = {
0: "Physical",
1: "Wind",
2: "Flame",
3: "Earth",
4: "Water",
5: "Virtue",
6: "Bane",
255: "Invalid"
}
for i in range(0, 130):
# print(f"Item {i}:")
(field_0x0, element, field_0x2, field_0x3, field_0x4,
strength, intelligence, agility, dexterity, vitality,
mem, *rest) = read_item(i)
(field_0xc, res_strike, res_wind, res_fire, res_earth, res_water,
res_holy, res_dark, *rest) = rest;
print(f"Element: {ELEMENT_NAMES[element]}")
print(f"STR: \t{strength} \tMEN: \t{mem}")
print(f"VIT: \t{vitality} \tAGI: \t{agility}")
print(f"INT: \t{intelligence} \tDEX: \t{dexterity}")
print()
print(f"RES STRIKE: \t{res_strike}")
print(f"RES WIND: \t{res_wind}")
print(f"RES FIRE: \t{res_fire}")
print(f"RES EARTH: \t{res_earth}")
print(f"RES WATER: \t{res_water}")
print(f"RES HOLY: \t{res_holy}")
print(f"RES DARK: \t{res_dark}")
print(field_0xc, rest)