55 lines
1.4 KiB
Python
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)
|
|
|