open import "prelude.ml" open import "data/array.ml" open import "../pretty.ml" open import "../mem/decode.ml" open import "../mem/int.ml" type inventory = Inventory of { items: array u8, ammo: array s8, equipment: u16, upgrades: u32, quest_items: u32, dungeon_items: array u8, dungeon_keys: array s8, defense_hearts: s8, gs_tokens: s16 } instance decode inventory begin let decode addr = Inventory { items = init 24 (fun i -> decode (addr + 0x00 + i)), ammo = init 16 (fun i -> decode (addr + 0x18 + i)), equipment = decode (addr + 0x28), upgrades = decode (addr + 0x2C), quest_items = decode (addr + 0x30), dungeon_items = init 20 (fun i -> decode (addr + 0x34 + i)), dungeon_keys = init 19 (fun i -> decode (addr + 0x48 + i)), defense_hearts = decode (addr + 0x5B), gs_tokens = decode (addr + 0x5C) } end instance prettyrecord inventory begin let name _ = "Inventory" let fields (Inventory x) = [ ("items", S x.items), ("ammo", S x.ammo), ("equipment", S x.equipment), ("upgrades", S x.upgrades), ("quest_items", S x.quest_items), ("dungeon_items", S x.dungeon_items), ("dungeon_keys", S x.dungeon_keys), ("defense_hearts", S x.defense_hearts), ("gs_tokens", S x.gs_tokens) ] end instance pretty inventory begin let pretty = pretty_from_record end