open import "prelude.ml" open import "./pretty.ml" open import "./dolphin.ml" type item_equips = ItemEquips of { button_item_b: u8, button_item_c_left: u8, button_item_c_down: u8, button_item_c_right: u8, button_slot_c_left: u8, button_slot_c_down: u8, button_slot_c_right: u8, equipment: u16 } instance decode item_equips begin let decode addr x = ItemEquips { button_item_b = decode (addr + 0x00) x, button_item_c_left = decode (addr + 0x01) x, button_item_c_down = decode (addr + 0x02) x, button_item_c_right = decode (addr + 0x03) x, button_slot_c_left = decode (addr + 0x04) x, button_slot_c_down = decode (addr + 0x05) x, button_slot_c_right = decode (addr + 0x06) x, equipment = decode (addr + 0x08) x } end instance prettyrecord item_equips begin let name _ = "ItemEquips" let fields (ItemEquips x) = [ ("button_item_b", S x.button_item_b), ("button_item_c_left", S x.button_item_c_left), ("button_item_c_down", S x.button_item_c_down), ("button_item_c_right", S x.button_item_c_right), ("button_slot_c_left", S x.button_slot_c_left), ("button_slot_c_down", S x.button_slot_c_down), ("button_slot_c_right", S x.button_slot_c_right), ("equipment", S x.equipment) ] end type save_context = SaveContext of { entrance_index: s32, link_age: s32, cutscene_index: s32, day_time: u16, night_flag: s32, num_days: s32, claim_days: s32, (* char newf[6], *) deaths: s16, (* char playerName[8], *) n64dd_flag: s16, health_capacity: s16, health: s16, magic_level: s8, magic: s8, rupees: s16, sword_health: u16, navi_timer: u16, magic_acquired: u8, (* char unk_3B[0x01], *) double_magic: u8, double_defense: u8, bgs_flag: u8, ocarina_game_reward: u8, child_equips: item_equips, adult_equips: item_equips } instance decode save_context begin let decode addr x = SaveContext { entrance_index = decode (addr + 0x0000) x, link_age = decode (addr + 0x0004) x, cutscene_index = decode (addr + 0x0008) x, day_time = decode (addr + 0x000C) x, night_flag = decode (addr + 0x0010) x, num_days = decode (addr + 0x0014) x, claim_days = decode (addr + 0x0018) x, (* newf, *) deaths = decode (addr + 0x0022) x, n64dd_flag = decode (addr + 0x002C) x, health_capacity = decode (addr + 0x002E) x, health = decode (addr + 0x0030) x, magic_level = decode (addr + 0x0032) x, magic = decode (addr + 0x0033) x, rupees = decode (addr + 0x0034) x, sword_health = decode (addr + 0x0036) x, navi_timer = decode (addr + 0x0038) x, magic_acquired = decode (addr + 0x003A) x, double_magic = decode (addr + 0x003C) x, double_defense = decode (addr + 0x003D) x, bgs_flag = decode (addr + 0x003E) x, ocarina_game_reward = decode (addr + 0x003F) x, child_equips = decode (addr + 0x0040) x, adult_equips = decode (addr + 0x004A) x } end instance prettyrecord save_context begin let name _ = "SaveContext" let fields (SaveContext x) = [ ("entrance_index", S x.entrance_index), ("link_age", S x.link_age), ("cutscene_index", S x.cutscene_index), ("day_time", S x.day_time), ("night_flag", S x.night_flag), ("num_days", S x.num_days), ("claim_days", S x.claim_days), ("deaths", S x.deaths), ("n64dd_flag", S x.n64dd_flag), ("health_capacity", S x.health_capacity), ("health", S x.health), ("magic_level", S x.magic_level), ("magic", S x.magic), ("rupees", S x.rupees), ("sword_health", S x.sword_health), ("navi_timer", S x.navi_timer), ("magic_acquired", S x.magic_acquired), ("double_magic", S x.double_magic), ("double_defense", S x.double_defense), ("bgs_flag", S x.bgs_flag), ("ocarina_game_reward", S x.ocarina_game_reward), ("child_equips", P x.child_equips), ("adult_equips", P x.adult_equips) ] end