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)