From 50e94d5f600272ede30de7f1d209092f360f0097 Mon Sep 17 00:00:00 2001 From: Angie Date: Sun, 15 Oct 2023 21:06:00 -0300 Subject: [PATCH 1/9] GetItemId enum --- ASM/c/item_table.h | 308 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 308 insertions(+) diff --git a/ASM/c/item_table.h b/ASM/c/item_table.h index 1d4eb05b6..10dcb13e2 100644 --- a/ASM/c/item_table.h +++ b/ASM/c/item_table.h @@ -6,6 +6,314 @@ #include "get_items.h" #include "z64.h" +typedef enum GetItemID { + /* 0x0000 */ GI_NONE, + /* 0x0001 */ GI_BOMBS_5, // Bombs (5) + /* 0x0002 */ GI_DEKU_NUTS_5, // Deku Nuts (5) + /* 0x0003 */ GI_BOMBCHUS_10, // Bombchu (10) + /* 0x0004 */ GI_BOW, // Fairy Bow + /* 0x0005 */ GI_SLINGSHOT, // Fairy Slingshot + /* 0x0006 */ GI_BOOMERANG, // Boomerang + /* 0x0007 */ GI_DEKU_STICKS_1, // Deku Stick + /* 0x0008 */ GI_HOOKSHOT, // Hookshot + /* 0x0009 */ GI_LONGSHOT, // Longshot + /* 0x000A */ GI_LENS_OF_TRUTH, // Lens of Truth + /* 0x000B */ GI_ZELDAS_LETTER, // Zelda's Letter + /* 0x000C */ GI_OCARINA_OF_TIME, // Ocarina of Time + /* 0x000D */ GI_HAMMER, // Megaton Hammer + /* 0x000E */ GI_COJIRO, // Cojiro + /* 0x000F */ GI_BOTTLE_EMPTY, // Empty Bottle + /* 0x0010 */ GI_BOTTLE_POTION_RED, // Red Potion + /* 0x0011 */ GI_BOTTLE_POTION_GREEN, // Green Potion + /* 0x0012 */ GI_BOTTLE_POTION_BLUE, // Blue Potion + /* 0x0013 */ GI_BOTTLE_FAIRY, // Bottled Fairy + /* 0x0014 */ GI_BOTTLE_MILK_FULL, // Bottled Lon Lon Milk + /* 0x0015 */ GI_BOTTLE_RUTOS_LETTER, // Bottled Ruto's Letter + /* 0x0016 */ GI_MAGIC_BEAN, // Magic Bean + /* 0x0017 */ GI_MASK_SKULL, // Skull Mask + /* 0x0018 */ GI_MASK_SPOOKY, // Spooky Mask + /* 0x0019 */ GI_CHICKEN, // Chicken + /* 0x001A */ GI_MASK_KEATON, // Keaton Mask + /* 0x001B */ GI_MASK_BUNNY_HOOD, // Bunny Hood + /* 0x001C */ GI_MASK_TRUTH, // Mask of Truth + /* 0x001D */ GI_POCKET_EGG, // Pocket Egg + /* 0x001E */ GI_POCKET_CUCCO, // Pocket Cucco + /* 0x001F */ GI_ODD_MUSHROOM, // Odd Mushroom + /* 0x0020 */ GI_ODD_POTION, // Odd Potion + /* 0x0021 */ GI_POACHERS_SAW, // Poacher's Saw + /* 0x0022 */ GI_BROKEN_GORONS_SWORD, // Goron's Sword (Broken) + /* 0x0023 */ GI_PRESCRIPTION, // Prescription + /* 0x0024 */ GI_EYEBALL_FROG, // Eyeball Frog + /* 0x0025 */ GI_EYE_DROPS, // Eye Drops + /* 0x0026 */ GI_CLAIM_CHECK, // Claim Check + /* 0x0027 */ GI_SWORD_KOKIRI, // Kokiri Sword + /* 0x0028 */ GI_SWORD_KNIFE, // Giant's Knife + /* 0x0029 */ GI_SHIELD_DEKU, // Deku Shield + /* 0x002A */ GI_SHIELD_HYLIAN, // Hylian Shield + /* 0x002B */ GI_SHIELD_MIRROR, // Mirror Shield + /* 0x002C */ GI_TUNIC_GORON, // Goron Tunic + /* 0x002D */ GI_TUNIC_ZORA, // Zora Tunic + /* 0x002E */ GI_BOOTS_IRON, // Iron Boots + /* 0x002F */ GI_BOOTS_HOVER, // Hover Boots + /* 0x0030 */ GI_QUIVER_40, // Big Quiver + /* 0x0031 */ GI_QUIVER_50, // Biggest Quiver + /* 0x0032 */ GI_BOMB_BAG_20, // Bomb Bag + /* 0x0033 */ GI_BOMB_BAG_30, // Big Bomb Bag + /* 0x0034 */ GI_BOMB_BAG_40, // Biggest Bomb Bag + /* 0x0035 */ GI_SILVER_GAUNTLETS, // Silver Gauntlets + /* 0x0036 */ GI_GOLD_GAUNTLETS, // Golden Gauntlets + /* 0x0037 */ GI_SCALE_SILVER, // Silver Scale + /* 0x0038 */ GI_SCALE_GOLDEN, // Golden Scale + /* 0x0039 */ GI_STONE_OF_AGONY, // Stone of Agony + /* 0x003A */ GI_GERUDOS_CARD, // Gerudo Membership Card + /* 0x003B */ GI_OCARINA_FAIRY, // Fairy Ocarina + /* 0x003C */ GI_DEKU_SEEDS_5, // Deku Seeds (5) + /* 0x003D */ GI_HEART_CONTAINER, // Heart Container + /* 0x003E */ GI_HEART_PIECE, // Piece of Heart + /* 0x003F */ GI_BOSS_KEY, // Boss Key + /* 0x0040 */ GI_COMPASS, // Compass + /* 0x0041 */ GI_DUNGEON_MAP, // Map + /* 0x0042 */ GI_SMALL_KEY, // Small Key + /* 0x0043 */ GI_MAGIC_JAR_SMALL, // Small Magic Jar + /* 0x0044 */ GI_MAGIC_JAR_LARGE, // Large Magic Jar + /* 0x0045 */ GI_WALLET_ADULT, // Adult's Wallet + /* 0x0046 */ GI_WALLET_GIANT, // Giant's Wallet + /* 0x0047 */ GI_WEIRD_EGG, // Weird Egg + /* 0x0048 */ GI_RECOVERY_HEART, // Recovery Heart + /* 0x0049 */ GI_ARROWS_5, // Arrows (5) + /* 0x004A */ GI_ARROWS_10, // Arrows (10) + /* 0x004B */ GI_ARROWS_30, // Arrows (30) + /* 0x004C */ GI_RUPEE_GREEN, // Green Rupee + /* 0x004D */ GI_RUPEE_BLUE, // Blue Rupee + /* 0x004E */ GI_RUPEE_RED, // Red Rupee + /* 0x004F */ GI_HEART_CONTAINER_2, // Heart Container + /* 0x0050 */ GI_MILK, // Lon Lon Milk (Refill) + /* 0x0051 */ GI_MASK_GORON, // Goron Mask + /* 0x0052 */ GI_MASK_ZORA, // Zora Mask + /* 0x0053 */ GI_MASK_GERUDO, // Gerudo Mask + /* 0x0054 */ GI_GORONS_BRACELET, // Goron's Bracelet + /* 0x0055 */ GI_RUPEE_PURPLE, // Purple Rupee + /* 0x0056 */ GI_RUPEE_GOLD, // Huge Rupee + /* 0x0057 */ GI_SWORD_BIGGORON, // Biggoron's Sword + /* 0x0058 */ GI_ARROW_FIRE, // Fire Arrow + /* 0x0059 */ GI_ARROW_ICE, // Ice Arrow + /* 0x005A */ GI_ARROW_LIGHT, // Light Arrow + /* 0x005B */ GI_SKULL_TOKEN, // Gold Skulltula Token + /* 0x005C */ GI_DINS_FIRE, // Din's Fire + /* 0x005D */ GI_FARORES_WIND, // Farore's Wind + /* 0x005E */ GI_NAYRUS_LOVE, // Nayru's Love + /* 0x005F */ GI_BULLET_BAG_30, // Bullet Bag (30) + /* 0x0060 */ GI_BULLET_BAG_40, // Bullet Bag (40) + /* 0x0061 */ GI_DEKU_STICKS_5, // Deku Sticks (5) + /* 0x0062 */ GI_DEKU_STICKS_10, // Deku Sticks (10) + /* 0x0063 */ GI_DEKU_NUTS_5_2, // Deku Nuts (5) + /* 0x0064 */ GI_DEKU_NUTS_10, // Deku Nuts (10) + /* 0x0065 */ GI_BOMBS_1, // Bomb + /* 0x0066 */ GI_BOMBS_10, // Bombs (10) + /* 0x0067 */ GI_BOMBS_20, // Bombs (20) + /* 0x0068 */ GI_BOMBS_30, // Bombs (30) + /* 0x0069 */ GI_DEKU_SEEDS_30, // Deku Seeds (30) + /* 0x006A */ GI_BOMBCHUS_5, // Bombchu (5) + /* 0x006B */ GI_BOMBCHUS_20, // Bombchu (20) + /* 0x006C */ GI_BOTTLE_FISH, // Fish (Refill) + /* 0x006D */ GI_BOTTLE_BUGS, // Bugs (Refill) + /* 0x006E */ GI_BOTTLE_BLUE_FIRE, // Blue Fire (Refill) + /* 0x006F */ GI_BOTTLE_POE, // Poe (Refill) + /* 0x0070 */ GI_BOTTLE_BIG_POE, // Big Poe (Refill) + /* 0x0071 */ GI_DOOR_KEY, // Small Key (Chest Game) + /* 0x0072 */ GI_RUPEE_GREEN_LOSE, // Green Rupee (Chest Game) + /* 0x0073 */ GI_RUPEE_BLUE_LOSE, // Blue Rupee (Chest Game) + /* 0x0074 */ GI_RUPEE_RED_LOSE, // Red Rupee (Chest Game) + /* 0x0075 */ GI_RUPEE_PURPLE_LOSE, // Purple Rupee (Chest Game) + /* 0x0076 */ GI_HEART_PIECE_WIN, // Piece of Heart (Chest Game) + /* 0x0077 */ GI_DEKU_STICK_UPGRADE_20, // Deku Stick Upgrade (20) + /* 0x0078 */ GI_DEKU_STICK_UPGRADE_30, // Deku Stick Upgrade (30) + /* 0x0079 */ GI_DEKU_NUT_UPGRADE_30, // Deku Nut Upgrade (30) + /* 0x007A */ GI_DEKU_NUT_UPGRADE_40, // Deku Nut Upgrade (40) + /* 0x007B */ GI_BULLET_BAG_50, // Bullet Bag (50) + /* 0x007C */ GI_ICE_TRAP, // Ice Trap + /* 0x007D */ GI_TEXT_0, + /* 0x007D */ GI_CAPPED_PIECE_OF_HEART = GI_TEXT_0, // Capped Piece of Heart + /* 0x007E */ GI_VANILLA_MAX, + /* 0x007E */ GI_CAPPED_HEART_CONTAINER = GI_VANILLA_MAX, // Capped Heart Container + + /* 0x007F */ GI_CAPPED_PIECE_OF_HEART_CHESTGAME, // Capped Piece of Heart (Chest Game) + + /* 0x0080 */ GI_PROGRESSIVE_HOOKSHOT, // Progressive Hookshot + /* 0x0081 */ GI_PROGRESSIVE_STRENGTH, // Progressive Strength + /* 0x0082 */ GI_PROGRESSIVE_BOMB_BAG, // Progressive Bomb Bag + /* 0x0083 */ GI_PROGRESSIVE_BOW, // Progressive Bow + /* 0x0084 */ GI_PROGRESSIVE_SLINGSHOT, // Progressive Slingshot + /* 0x0085 */ GI_PROGRESSIVE_WALLET, // Progressive Wallet + /* 0x0086 */ GI_PROGRESSIVE_SCALE, // Progressive Scale + /* 0x0087 */ GI_PROGRESSIVE_NUT_CAPACITY, // Progressive Nut Capacity + /* 0x0088 */ GI_PROGRESSIVE_STICK_CAPACITY, // Progressive Stick Capacity + /* 0x0089 */ GI_PROGRESSIVE_BOMBCHUS, // Progressive Bombchus + /* 0x008A */ GI_PROGRESSIVE_MAGIC_METER, // Progressive Magic Meter + /* 0x008B */ GI_PROGRESSIVE_OCARINA, // Progressive Ocarina + + /* 0x008C */ GI_BOTTLE_WITH_RED_POTION, // Bottle with Red Potion + /* 0x008D */ GI_BOTTLE_WITH_GREEN_POTION, // Bottle with Green Potion + /* 0x008E */ GI_BOTTLE_WITH_BLUE_POTION, // Bottle with Blue Potion + /* 0x008F */ GI_BOTTLE_WITH_FAIRY, // Bottle with Fairy + /* 0x0090 */ GI_BOTTLE_WITH_FISH, // Bottle with Fish + /* 0x0091 */ GI_BOTTLE_WITH_BLUE_FIRE, // Bottle with Blue Fire + /* 0x0092 */ GI_BOTTLE_WITH_BUGS, // Bottle with Bugs + /* 0x0093 */ GI_BOTTLE_WITH_BIG_POE, // Bottle with Big Poe + /* 0x0094 */ GI_BOTTLE_WITH_POE, // Bottle with Poe + + /* 0x0095 */ GI_BOSS_KEY_FOREST_TEMPLE, // Forest Temple Boss Key + /* 0x0096 */ GI_BOSS_KEY_FIRE_TEMPLE, // Fire Temple Boss Key + /* 0x0097 */ GI_BOSS_KEY_WATER_TEMPLE, // Water Temple Boss Key + /* 0x0098 */ GI_BOSS_KEY_SPIRIT_TEMPLE, // Spirit Temple Boss Key + /* 0x0099 */ GI_BOSS_KEY_SHADOW_TEMPLE, // Shadow Temple Boss Key + /* 0x009A */ GI_BOSS_KEY_GANONS_CASTLE, // Ganon's Castle Boss Key + + /* 0x009B */ GI_COMPASS_DEKU_TREE, // Deku Tree Compass + /* 0x009C */ GI_COMPASS_DODONGOS_CAVERN, // Dodongo's Cavern Compass + /* 0x009D */ GI_COMPASS_JABU_JABU, // Jabu Jabu Compass + /* 0x009E */ GI_COMPASS_FOREST_TEMPLE, // Forest Temple Compass + /* 0x009F */ GI_COMPASS_FIRE_TEMPLE, // Fire Temple Compass + /* 0x00A0 */ GI_COMPASS_WATER_TEMPLE, // Water Temple Compass + /* 0x00A1 */ GI_COMPASS_SPIRIT_TEMPLE, // Spirit Temple Compass + /* 0x00A2 */ GI_COMPASS_SHADOW_TEMPLE, // Shadow Temple Compass + /* 0x00A3 */ GI_COMPASS_BOTTOM_OF_THE_WELL, // Bottom of the Well Compass + /* 0x00A4 */ GI_COMPASS_ICE_CAVERN, // Ice Cavern Compass + + /* 0x00A5 */ GI_MAP_DEKU_TREE, // Deku Tree Map + /* 0x00A6 */ GI_MAP_DODONGOS_CAVERN, // Dodongo's Cavern Map + /* 0x00A7 */ GI_MAP_JABU_JABU, // Jabu Jabu Map + /* 0x00A8 */ GI_MAP_FOREST_TEMPLE, // Forest Temple Map + /* 0x00A9 */ GI_MAP_FIRE_TEMPLE, // Fire Temple Map + /* 0x00AA */ GI_MAP_WATER_TEMPLE, // Water Temple Map + /* 0x00AB */ GI_MAP_SPIRIT_TEMPLE, // Spirit Temple Map + /* 0x00AC */ GI_MAP_SHADOW_TEMPLE, // Shadow Temple Map + /* 0x00AD */ GI_MAP_BOTTOM_OF_THE_WELL, // Bottom of the Well Map + /* 0x00AE */ GI_MAP_ICE_CAVERN, // Ice Cavern Map + + /* 0x00AF */ GI_SMALL_KEY_FOREST_TEMPLE, // Forest Temple Small Key + /* 0x00B0 */ GI_SMALL_KEY_FIRE_TEMPLE, // Fire Temple Small Key + /* 0x00B1 */ GI_SMALL_KEY_WATER_TEMPLE, // Water Temple Small Key + /* 0x00B2 */ GI_SMALL_KEY_SPIRIT_TEMPLE, // Spirit Temple Small Key + /* 0x00B3 */ GI_SMALL_KEY_SHADOW_TEMPLE, // Shadow Temple Small Key + /* 0x00B4 */ GI_SMALL_KEY_BOTTOM_OF_THE_WELL, // Bottom of the Well Small Key + /* 0x00B5 */ GI_SMALL_KEY_GERUDO_TRAINING, // Gerudo Training Small Key + /* 0x00B6 */ GI_SMALL_KEY_THIEVES_HIDEOUT, // Thieves' Hideout Small Key + /* 0x00B7 */ GI_SMALL_KEY_GANONS_CASTLE, // Ganon's Castle Small Key + + /* 0x00B8 */ GI_DOUBLE_DEFENSE, // Double Defense + /* 0x00B9 */ GI_MAGIC_METER, // Magic Meter + /* 0x00BA */ GI_DOUBLE_MAGIC, // Double Magic + + /* 0x00BB */ GI_MINUET_OF_FOREST, // Minuet of Forest + /* 0x00BC */ GI_BOLERO_OF_FIRE, // Bolero of Fire + /* 0x00BD */ GI_SERENADE_OF_WATER, // Serenade of Water + /* 0x00BE */ GI_REQUIEM_OF_SPIRIT, // Requiem of Spirit + /* 0x00BF */ GI_NOCTURN_OF_SHADOW, // Nocturn of Shadow + /* 0x00C0 */ GI_PRELUDE_OF_LIGHT, // Prelude of Light + + /* 0x00C1 */ GI_ZELDAS_LULLABY, // Zelda's Lullaby + /* 0x00C2 */ GI_EPONAS_SONG, // Epona's Song + /* 0x00C3 */ GI_SARIAS_SONG, // Saria's Song + /* 0x00C4 */ GI_SUNS_SONG, // Sun's Song + /* 0x00C5 */ GI_SONG_OF_TIME, // Song of Time + /* 0x00C6 */ GI_SONG_OF_STORMS, // Song of Storms + + /* 0x00C7 */ GI_TYCOONS_WALLET, // Tycoon's Wallet + /* 0x00C8 */ GI_REDUNDANT_LETTER_BOTTLE, // Redundant Letter Bottle + /* 0x00C9 */ GI_MAGIC_BEAN_PACK, // Magic Bean Pack + /* 0x00CA */ GI_TRIFORCE_PIECE, // Triforce piece + + /* 0x00CB */ GI_SMALL_KEY_RING_FOREST_TEMPLE, // Forest Temple Small Key Ring + /* 0x00CC */ GI_SMALL_KEY_RING_FIRE_TEMPLE, // Fire Temple Small Key Ring + /* 0x00CD */ GI_SMALL_KEY_RING_WATER_TEMPLE, // Water Temple Small Key Ring + /* 0x00CE */ GI_SMALL_KEY_RING_SPIRIT_TEMPLE, // Spirit Temple Small Key Ring + /* 0x00CF */ GI_SMALL_KEY_RING_SHADOW_TEMPLE, // Shadow Temple Small Key Ring + /* 0x00D0 */ GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL, // Bottom of the Well Small Key Ring + /* 0x00D1 */ GI_SMALL_KEY_RING_GERUDO_TRAINING, // Gerudo Training Small Key Ring + /* 0x00D2 */ GI_SMALL_KEY_RING_THIEVES_HIDEOUT, // Thieves' Hideout Small Key Ring + /* 0x00D3 */ GI_SMALL_KEY_RING_GANONS_CASTLE, // Ganon's Castle Small Key Ring + + /* 0x00D4 */ GI_BOMBCHU_BAG_20, // Bombchu Bag (20) + /* 0x00D5 */ GI_BOMBCHU_BAG_10, // Bombchu Bag (10) + /* 0x00D6 */ GI_BOMBCHU_BAG_5, // Bombchu Bag (5) + + /* 0x00D7 */ GI_SMALL_KEY_RING_TREASURE_CHEST_GAME, // Treasure Chest Game Small Key Ring + + /* 0x00D8 */ GI_SILVER_RUPEE_DODONGOS_CAVERN_STAIRCASE, // Silver Rupee (Dodongos Cavern Staircase) + /* 0x00D9 */ GI_SILVER_RUPEE_ICE_CAVERN_SPINNING_SCYTHE, // Silver Rupee (Ice Cavern Spinning Scythe) + /* 0x00DA */ GI_SILVER_RUPEE_ICE_CAVERN_PUSH_BLOCK, // Silver Rupee (Ice Cavern Push Block) + /* 0x00DB */ GI_SILVER_RUPEE_BOTTOM_OF_THE_WELL_BASEMENT, // Silver Rupee (Bottom of the Well Basement) + /* 0x00DC */ GI_SILVER_RUPEE_SHADOW_TEMPLE_SCYTHE_SHORTCUT, // Silver Rupee (Shadow Temple Scythe Shortcut) + /* 0x00DD */ GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_BLADES, // Silver Rupee (Shadow Temple Invisible Blades) + /* 0x00DE */ GI_SILVER_RUPEE_SHADOW_TEMPLE_HUGE_PIT, // Silver Rupee (Shadow Temple Huge Pit) + /* 0x00DF */ GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_SPIKES, // Silver Rupee (Shadow Temple Invisible Spikes) + /* 0x00E0 */ GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_SLOPES, // Silver Rupee (Gerudo Training Ground Slopes) + /* 0x00E1 */ GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_LAVA, // Silver Rupee (Gerudo Training Ground Lava) + /* 0x00E2 */ GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_WATER, // Silver Rupee (Gerudo Training Ground Water) + /* 0x00E3 */ GI_SILVER_RUPEE_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES, // Silver Rupee (Spirit Temple Child Early Torches) + /* 0x00E4 */ GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_BOULDERS, // Silver Rupee (Spirit Temple Adult Boulders) + /* 0x00E5 */ GI_SILVER_RUPEE_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT, // Silver Rupee (Spirit Temple Lobby and Lower Adult) + /* 0x00E6 */ GI_SILVER_RUPEE_SPIRIT_TEMPLE_SUN_BLOCK, // Silver Rupee (Spirit Temple Sun Block) + /* 0x00E7 */ GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_CLIMB, // Silver Rupee (Spirit Temple Adult Climb) + /* 0x00E8 */ GI_SILVER_RUPEE_GANONS_CASTLE_SPIRIT_TRIAL, // Silver Rupee (Ganons Castle Spirit Trial) + /* 0x00E9 */ GI_SILVER_RUPEE_GANONS_CASTLE_LIGHT_TRIAL, // Silver Rupee (Ganons Castle Light Trial) + /* 0x00EA */ GI_SILVER_RUPEE_GANONS_CASTLE_FIRE_TRIAL, // Silver Rupee (Ganons Castle Fire Trial) + /* 0x00EB */ GI_SILVER_RUPEE_GANONS_CASTLE_SHADOW_TRIAL, // Silver Rupee (Ganons Castle Shadow Trial) + /* 0x00EC */ GI_SILVER_RUPEE_GANONS_CASTLE_WATER_TRIAL, // Silver Rupee (Ganons Castle Water Trial) + /* 0x00ED */ GI_SILVER_RUPEE_GANONS_CASTLE_FOREST_TRIAL, // Silver Rupee (Ganons Castle Forest Trial) + + /* 0x00EE */ GI_SILVER_RUPEE_POUCH_DODONGOS_CAVERN_STAIRCASE, // Silver Rupee Pouch (Dodongos Cavern Staircase) + /* 0x00EF */ GI_SILVER_RUPEE_POUCH_ICE_CAVERN_SPINNING_SCYTHE, // Silver Rupee Pouch (Ice Cavern Spinning Scythe) + /* 0x00F0 */ GI_SILVER_RUPEE_POUCH_ICE_CAVERN_PUSH_BLOCK, // Silver Rupee Pouch (Ice Cavern Push Block) + /* 0x00F1 */ GI_SILVER_RUPEE_POUCH_BOTTOM_OF_THE_WELL_BASEMENT, // Silver Rupee Pouch (Bottom of the Well Basement) + /* 0x00F2 */ GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_SCYTHE_SHORTCUT, // Silver Rupee Pouch (Shadow Temple Scythe Shortcut) + /* 0x00F3 */ GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_BLADES, // Silver Rupee Pouch (Shadow Temple Invisible Blades) + /* 0x00F4 */ GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_HUGE_PIT, // Silver Rupee Pouch (Shadow Temple Huge Pit) + /* 0x00F5 */ GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_SPIKES, // Silver Rupee Pouch (Shadow Temple Invisible Spikes) + /* 0x00F6 */ GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_SLOPES, // Silver Rupee Pouch (Gerudo Training Ground Slopes) + /* 0x00F7 */ GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_LAVA, // Silver Rupee Pouch (Gerudo Training Ground Lava) + /* 0x00F8 */ GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_WATER, // Silver Rupee Pouch (Gerudo Training Ground Water) + /* 0x00F9 */ GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES, // Silver Rupee Pouch (Spirit Temple Child Early Torches) + /* 0x00FA */ GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_BOULDERS, // Silver Rupee Pouch (Spirit Temple Adult Boulders) + /* 0x00FB */ GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT, // Silver Rupee Pouch (Spirit Temple Lobby and Lower Adult) + /* 0x00FC */ GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_SUN_BLOCK, // Silver Rupee Pouch (Spirit Temple Sun Block) + /* 0x00FD */ GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_CLIMB, // Silver Rupee Pouch (Spirit Temple Adult Climb) + /* 0x00FE */ GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SPIRIT_TRIAL, // Silver Rupee Pouch (Ganons Castle Spirit Trial) + /* 0x00FF */ GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_LIGHT_TRIAL, // Silver Rupee Pouch (Ganons Castle Light Trial) + /* 0x0100 */ GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FIRE_TRIAL, // Silver Rupee Pouch (Ganons Castle Fire Trial) + /* 0x0101 */ GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SHADOW_TRIAL, // Silver Rupee Pouch (Ganons Castle Shadow Trial) + /* 0x0102 */ GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_WATER_TRIAL, // Silver Rupee Pouch (Ganons Castle Water Trial) + /* 0x0103 */ GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FOREST_TRIAL, // Silver Rupee Pouch (Ganons Castle Forest Trial) + + // Ocarina button models + /* 0x0104 */ GI_OCARINA_BUTTON_A, // Ocarina A + /* 0x0105 */ GI_OCARINA_BUTTON_C_UP, // Ocarina C up + /* 0x0106 */ GI_OCARINA_BUTTON_C_DOWN, // Ocarina C down + /* 0x0107 */ GI_OCARINA_BUTTON_C_LEFT, // Ocarina C left + /* 0x0108 */ GI_OCARINA_BUTTON_C_RIGHT, // Ocarina C right + + // Custom Key Models + /* 0x0109 */ GI_BOSS_KEY_MODEL_FOREST_TEMPLE, // Forest Temple Boss Key + /* 0x010A */ GI_BOSS_KEY_MODEL_FIRE_TEMPLE, // Fire Temple Boss Key + /* 0x010B */ GI_BOSS_KEY_MODEL_WATER_TEMPLE, // Water Temple Boss Key + /* 0x010C */ GI_BOSS_KEY_MODEL_SPIRIT_TEMPLE, // Spirit Temple Boss Key + /* 0x010D */ GI_BOSS_KEY_MODEL_SHADOW_TEMPLE, // Shadow Temple Boss Key + /* 0x010E */ GI_BOSS_KEY_MODEL_GANONS_CASTLE, // Ganon's Castle Boss Key + /* 0x010F */ GI_SMALL_KEY_MODEL_FOREST_TEMPLE, // Forest Temple Small Key + /* 0x0110 */ GI_SMALL_KEY_MODEL_FIRE_TEMPLE, // Fire Temple Small Key + /* 0x0111 */ GI_SMALL_KEY_MODEL_WATER_TEMPLE, // Water Temple Small Key + /* 0x0112 */ GI_SMALL_KEY_MODEL_SPIRIT_TEMPLE, // Spirit Temple Small Key + /* 0x0113 */ GI_SMALL_KEY_MODEL_SHADOW_TEMPLE, // Shadow Temple Small Key + /* 0x0114 */ GI_SMALL_KEY_MODEL_BOTTOM_OF_THE_WELL, // Bottom of the Well Small Key + /* 0x0115 */ GI_SMALL_KEY_MODEL_GERUDO_TRAINING, // Gerudo Training Small Key + /* 0x0116 */ GI_SMALL_KEY_MODEL_THIEVES_HIDEOUT, // Thieves' Hideout Small Key + /* 0x0117 */ GI_SMALL_KEY_MODEL_GANONS_CASTLE, // Ganon's Castle Small Key + /* 0x0118 */ GI_SMALL_KEY_MODEL_CHEST_GAME, // Small Key (Chest Game) + + /* 0x0119 */ GI_RANDO_MAX +} GetItemId; + typedef enum { /* 0 */ BROWN_CHEST, // big default chest /* 1 */ BIG_ROOM_CLEAR_CHEST, // appear on room clear, store temp clear as permanent clear From 8fa2dbe62ff895710f49084ced6a6d0ec5ddb1c5 Mon Sep 17 00:00:00 2001 From: Angie Date: Sun, 15 Oct 2023 23:11:42 -0300 Subject: [PATCH 2/9] use enum for the item_table --- ASM/c/item_table.c | 593 +++++++++++++++++++++++---------------------- 1 file changed, 297 insertions(+), 296 deletions(-) diff --git a/ASM/c/item_table.c b/ASM/c/item_table.c index c6d74267a..8c9532c1a 100644 --- a/ASM/c/item_table.c +++ b/ASM/c/item_table.c @@ -27,306 +27,307 @@ extern uint8_t SHUFFLE_CHEST_GAME; // "graphic id" - 1 indicates the entry used in the item_draw_table when rendering the GI model. -item_row_t item_table[] = { - [0x0001] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8E, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (5) - [0x0002] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8C, 12, 0x90AA, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nuts (5) - [0x0003] = ITEM_ROW(0x4D, BROWN_CHEST, 0x09, -1, 0x90AB, 0x00D9, 0x28, bombchus_to_bag, no_effect, -1, -1, NULL), // Bombchu (10) - [0x0004] = ITEM_ROW(0x53, GILDED_CHEST, 0x03, -1, 0x0031, 0x00E9, 0x35, no_upgrade, no_effect, -1, -1, NULL), // Fairy Bow - [0x0005] = ITEM_ROW(0x53, GILDED_CHEST, 0x06, -1, 0x0030, 0x00E7, 0x33, no_upgrade, no_effect, -1, -1, NULL), // Fairy Slingshot - [0x0006] = ITEM_ROW(0x53, GILDED_CHEST, 0x0E, -1, 0x0035, 0x00E8, 0x34, no_upgrade, no_effect, -1, -1, NULL), // Boomerang - [0x0007] = ITEM_ROW(0x4D, BROWN_CHEST, 0x00, 13, 0x90AC, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Stick - [0x0008] = ITEM_ROW(0x53, GILDED_CHEST, 0x0A, -1, 0x0036, 0x00DD, 0x2D, no_upgrade, no_effect, -1, -1, NULL), // Hookshot - [0x0009] = ITEM_ROW(0x53, GILDED_CHEST, 0x0B, -1, 0x004F, 0x00DD, 0x2E, no_upgrade, no_effect, -1, -1, NULL), // Longshot - [0x000A] = ITEM_ROW(0x53, GILDED_CHEST, 0x0F, -1, 0x0039, 0x00EA, 0x36, no_upgrade, no_effect, -1, -1, NULL), // Lens of Truth - [0x000B] = ITEM_ROW(0x53, GILDED_CHEST, 0x23, -1, 0x0069, 0x00EF, 0x3B, no_upgrade, open_mask_shop, 0x23, -1, NULL), // Zelda's Letter - [0x000C] = ITEM_ROW(0x53, GILDED_CHEST, 0x08, -1, 0x003A, 0x00DE, 0x2F, no_upgrade, no_effect, -1, -1, NULL), // Ocarina of Time - [0x000D] = ITEM_ROW(0x53, GILDED_CHEST, 0x11, -1, 0x0038, 0x00F6, 0x41, no_upgrade, no_effect, -1, -1, NULL), // Megaton Hammer - [0x000E] = ITEM_ROW(0x53, GILDED_CHEST, 0x2F, -1, 0x0002, 0x0109, 0x5E, no_upgrade, trade_quest_upgrade, 0x2F, -1, NULL), // Cojiro - [0x000F] = ITEM_ROW(0x53, GILDED_CHEST, 0x14, -1, 0x0042, 0x00C6, 0x01, no_upgrade, no_effect, -1, -1, NULL), // Empty Bottle - [0x0010] = ITEM_ROW(0x53, GILDED_CHEST, 0x15, -1, 0x0043, 0x00EB, 0x38, no_upgrade, no_effect, -1, -1, NULL), // Red Potion - [0x0011] = ITEM_ROW(0x53, GILDED_CHEST, 0x16, -1, 0x0044, 0x00EB, 0x37, no_upgrade, no_effect, -1, -1, NULL), // Green Potion - [0x0012] = ITEM_ROW(0x53, GILDED_CHEST, 0x17, -1, 0x0045, 0x00EB, 0x39, no_upgrade, no_effect, -1, -1, NULL), // Blue Potion - [0x0013] = ITEM_ROW(0x53, GILDED_CHEST, 0x18, -1, 0x0046, 0x00C6, 0x01, no_upgrade, no_effect, -1, -1, NULL), // Bottled Fairy - [0x0014] = ITEM_ROW(0x53, GILDED_CHEST, 0x1A, -1, 0x0098, 0x00DF, 0x30, no_upgrade, no_effect, -1, -1, NULL), // Bottled Lon Lon Milk - [0x0015] = ITEM_ROW(0x53, GILDED_CHEST, 0x1B, -1, 0x0099, 0x010B, 0x45, letter_to_bottle, no_effect, -1, -1, NULL), // Bottled Ruto's Letter - [0x0016] = ITEM_ROW(0x53, BROWN_CHEST, 0x10, -1, 0x0048, 0x00F3, 0x3E, no_upgrade, no_effect, -1, -1, NULL), // Magic Bean - [0x0017] = ITEM_ROW(0x53, GILDED_CHEST, 0x25, -1, 0x0010, 0x0136, 0x4F, no_upgrade, trade_quest_upgrade, 0x25, -1, NULL), // Skull Mask - [0x0018] = ITEM_ROW(0x53, GILDED_CHEST, 0x26, -1, 0x0011, 0x0135, 0x32, no_upgrade, trade_quest_upgrade, 0x26, -1, NULL), // Spooky Mask - [0x0019] = ITEM_ROW(0x53, GILDED_CHEST, 0x22, -1, 0x000B, 0x0109, 0x44, no_upgrade, trade_quest_upgrade, 0x22, -1, NULL), // Chicken - [0x001A] = ITEM_ROW(0x53, GILDED_CHEST, 0x24, -1, 0x0012, 0x0134, 0x31, no_upgrade, trade_quest_upgrade, 0x24, -1, NULL), // Keaton Mask - [0x001B] = ITEM_ROW(0x53, GILDED_CHEST, 0x27, -1, 0x0013, 0x0137, 0x50, no_upgrade, trade_quest_upgrade, 0x27, -1, NULL), // Bunny Hood - [0x001C] = ITEM_ROW(0x53, GILDED_CHEST, 0x2B, -1, 0x0017, 0x0138, 0x51, no_upgrade, trade_quest_upgrade, 0x2B, -1, NULL), // Mask of Truth - [0x001D] = ITEM_ROW(0x53, GILDED_CHEST, 0x2D, -1, 0x9001, 0x00DA, 0x29, no_upgrade, trade_quest_upgrade, 0x2D, -1, NULL), // Pocket Egg - [0x001E] = ITEM_ROW(0x53, GILDED_CHEST, 0x2E, -1, 0x000B, 0x0109, 0x44, no_upgrade, trade_quest_upgrade, 0x2E, -1, NULL), // Pocket Cucco - [0x001F] = ITEM_ROW(0x53, GILDED_CHEST, 0x30, -1, 0x0003, 0x0141, 0x54, no_upgrade, trade_quest_upgrade, 0x30, -1, NULL), // Odd Mushroom - [0x0020] = ITEM_ROW(0x53, GILDED_CHEST, 0x31, -1, 0x0004, 0x0140, 0x53, no_upgrade, trade_quest_upgrade, 0x31, -1, NULL), // Odd Potion - [0x0021] = ITEM_ROW(0x53, GILDED_CHEST, 0x32, -1, 0x0005, 0x00F5, 0x40, no_upgrade, trade_quest_upgrade, 0x32, -1, NULL), // Poacher's Saw - [0x0022] = ITEM_ROW(0x53, GILDED_CHEST, 0x33, -1, 0x0008, 0x0143, 0x56, no_upgrade, trade_quest_upgrade, 0x33, -1, NULL), // Goron's Sword (Broken) - [0x0023] = ITEM_ROW(0x53, GILDED_CHEST, 0x34, -1, 0x0009, 0x0146, 0x57, no_upgrade, trade_quest_upgrade, 0x34, -1, NULL), // Prescription - [0x0024] = ITEM_ROW(0x53, GILDED_CHEST, 0x35, -1, 0x000D, 0x0149, 0x5A, no_upgrade, trade_quest_upgrade, 0x35, -1, NULL), // Eyeball Frog - [0x0025] = ITEM_ROW(0x53, GILDED_CHEST, 0x36, -1, 0x000E, 0x013F, 0x52, no_upgrade, trade_quest_upgrade, 0x36, -1, NULL), // Eye Drops - [0x0026] = ITEM_ROW(0x53, GILDED_CHEST, 0x37, -1, 0x000A, 0x0142, 0x55, no_upgrade, trade_quest_upgrade, 0x37, -1, NULL), // Claim Check - [0x0027] = ITEM_ROW(0x53, GILDED_CHEST, 0x3B, -1, 0x00A4, 0x018D, 0x74, no_upgrade, no_effect, -1, -1, NULL), // Kokiri Sword - [0x0028] = ITEM_ROW(0x53, GILDED_CHEST, 0x3D, -1, 0x004B, 0x00F8, 0x43, no_upgrade, no_effect, -1, -1, NULL), // Giant's Knife - [0x0029] = ITEM_ROW(0x53, BROWN_CHEST, 0x3E, -1, 0x90AD, 0x00CB, 0x1D, no_upgrade, no_effect, -1, -1, NULL), // Deku Shield - [0x002A] = ITEM_ROW(0x53, BROWN_CHEST, 0x3F, -1, 0x90AE, 0x00DC, 0x2C, no_upgrade, no_effect, -1, -1, NULL), // Hylian Shield - [0x002B] = ITEM_ROW(0x53, GILDED_CHEST, 0x40, -1, 0x004E, 0x00EE, 0x3A, no_upgrade, no_effect, -1, -1, NULL), // Mirror Shield - [0x002C] = ITEM_ROW(0x53, GILDED_CHEST, 0x42, -1, 0x90AF, 0x00F2, 0x3C, no_upgrade, no_effect, -1, -1, NULL), // Goron Tunic - [0x002D] = ITEM_ROW(0x53, GILDED_CHEST, 0x43, -1, 0x90B0, 0x00F2, 0x3D, no_upgrade, no_effect, -1, -1, NULL), // Zora Tunic - [0x002E] = ITEM_ROW(0x53, GILDED_CHEST, 0x45, -1, 0x0053, 0x0118, 0x47, no_upgrade, no_effect, -1, -1, NULL), // Iron Boots - [0x002F] = ITEM_ROW(0x53, GILDED_CHEST, 0x46, -1, 0x0054, 0x0157, 0x5F, no_upgrade, no_effect, -1, -1, NULL), // Hover Boots - [0x0030] = ITEM_ROW(0x53, GILDED_CHEST, 0x4B, -1, 0x0056, 0x00BE, 0x16, no_upgrade, no_effect, -1, -1, NULL), // Big Quiver - [0x0031] = ITEM_ROW(0x53, GILDED_CHEST, 0x4C, -1, 0x0057, 0x00BE, 0x17, no_upgrade, no_effect, -1, -1, NULL), // Biggest Quiver - [0x0032] = ITEM_ROW(0x53, GILDED_CHEST, 0x4D, -1, 0x0058, 0x00BF, 0x18, no_upgrade, no_effect, -1, -1, NULL), // Bomb Bag - [0x0033] = ITEM_ROW(0x53, GILDED_CHEST, 0x4E, -1, 0x0059, 0x00BF, 0x19, no_upgrade, no_effect, -1, -1, NULL), // Big Bomb Bag - [0x0034] = ITEM_ROW(0x53, GILDED_CHEST, 0x4F, -1, 0x005A, 0x00BF, 0x1A, no_upgrade, no_effect, -1, -1, NULL), // Biggest Bomb Bag - [0x0035] = ITEM_ROW(0x53, GILDED_CHEST, 0x51, -1, 0x005B, 0x012D, 0x49, no_upgrade, no_effect, -1, -1, NULL), // Silver Gauntlets - [0x0036] = ITEM_ROW(0x53, GILDED_CHEST, 0x52, -1, 0x005C, 0x012D, 0x4A, no_upgrade, no_effect, -1, -1, NULL), // Golden Gauntlets - [0x0037] = ITEM_ROW(0x53, GILDED_CHEST, 0x53, -1, 0x00CD, 0x00DB, 0x2A, no_upgrade, no_effect, -1, -1, NULL), // Silver Scale - [0x0038] = ITEM_ROW(0x53, GILDED_CHEST, 0x54, -1, 0x00CE, 0x00DB, 0x2B, no_upgrade, no_effect, -1, -1, NULL), // Golden Scale - [0x0039] = ITEM_ROW(0x53, GILDED_CHEST, 0x6F, -1, 0x0068, 0x00C8, 0x21, no_upgrade, no_effect, -1, -1, NULL), // Stone of Agony - [0x003A] = ITEM_ROW(0x53, GILDED_CHEST, 0x70, -1, 0x007B, 0x00D7, 0x24, no_upgrade, no_effect, -1, -1, NULL), // Gerudo Membership Card - [0x003B] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x004A, 0x010E, 0x46, no_upgrade, give_fairy_ocarina, -1, -1, NULL), // Fairy Ocarina - [0x003C] = ITEM_ROW(0x4D, BROWN_CHEST, 0x58, 16, 0x90B3, 0x0119, 0x48, seeds_to_rupee, no_effect, -1, -1, NULL), // Deku Seeds (5) - [0x003D] = ITEM_ROW(0x3D, HEART_CHEST_SMALL, 0x72, -1, 0x00C6, 0x00BD, 0x13, health_upgrade_cap, clear_excess_hearts, -1, -1, NULL), // Heart Container - [0x003E] = ITEM_ROW(0x3E, HEART_CHEST_SMALL, 0x7A, -1, 0x00C2, 0x00BD, 0x14, health_upgrade_cap, full_heal, -1, -1, NULL), // Piece of Heart - [0x003F] = ITEM_ROW(0x53, GOLD_CHEST, 0x74, -1, 0x00C7, 0x00B9, 0x0A, no_upgrade, no_effect, -1, -1, NULL), // Boss Key - [0x0040] = ITEM_ROW(0x53, BROWN_CHEST, 0x75, -1, 0x0067, 0x00B8, 0x0B, no_upgrade, no_effect, -1, -1, NULL), // Compass - [0x0041] = ITEM_ROW(0x53, BROWN_CHEST, 0x76, -1, 0x0066, 0x00C8, 0x1C, no_upgrade, no_effect, -1, -1, NULL), // Map - [0x0042] = ITEM_ROW(0x53, SILVER_CHEST, 0x77, -1, 0x0060, 0x00AA, 0x02, no_upgrade, no_effect, -1, -1, NULL), // Small Key - [0x0043] = ITEM_ROW(0x53, BROWN_CHEST, 0x78, -1, 0x0052, 0x00CD, 0x1E, no_upgrade, no_effect, -1, -1, NULL), // Small Magic Jar - [0x0044] = ITEM_ROW(0x53, BROWN_CHEST, 0x79, -1, 0x0052, 0x00CD, 0x1F, no_upgrade, no_effect, -1, -1, NULL), // Large Magic Jar - [0x0045] = ITEM_ROW(0x53, GILDED_CHEST, 0x56, -1, 0x005E, 0x00D1, 0x22, no_upgrade, fill_wallet_upgrade, 1, -1, NULL), // Adult's Wallet - [0x0046] = ITEM_ROW(0x53, GILDED_CHEST, 0x57, -1, 0x005F, 0x00D1, 0x23, no_upgrade, fill_wallet_upgrade, 2, -1, NULL), // Giant's Wallet - [0x0047] = ITEM_ROW(0x53, GILDED_CHEST, 0x21, -1, 0x009A, 0x00DA, 0x29, no_upgrade, trade_quest_upgrade, 0x21, -1, NULL), // Weird Egg - [0x0048] = ITEM_ROW(0x4D, BROWN_CHEST, 0x83, 3, 0x90B1, 0x00B7, 0x09, no_upgrade, no_effect, -1, -1, NULL), // Recovery Heart - [0x0049] = ITEM_ROW(0x4D, BROWN_CHEST, 0x92, 8, 0x90B2, 0x00D8, 0x25, arrows_to_rupee, no_effect, -1, -1, NULL), // Arrows (5) - [0x004A] = ITEM_ROW(0x4D, BROWN_CHEST, 0x93, 9, 0x90B2, 0x00D8, 0x26, arrows_to_rupee, no_effect, -1, -1, NULL), // Arrows (10) - [0x004B] = ITEM_ROW(0x4D, BROWN_CHEST, 0x94, 10, 0x90B2, 0x00D8, 0x27, arrows_to_rupee, no_effect, -1, -1, NULL), // Arrows (30) - [0x004C] = ITEM_ROW(0x4D, BROWN_CHEST, 0x84, 0, 0x006F, 0x017F, 0x6D, no_upgrade, no_effect, -1, -1, NULL), // Green Rupee - [0x004D] = ITEM_ROW(0x4D, BROWN_CHEST, 0x85, 1, 0x00CC, 0x017F, 0x6E, no_upgrade, no_effect, -1, -1, NULL), // Blue Rupee - [0x004E] = ITEM_ROW(0x4D, BROWN_CHEST, 0x86, 2, 0x00F0, 0x017F, 0x6F, no_upgrade, no_effect, -1, -1, NULL), // Red Rupee - [0x004F] = ITEM_ROW(0x3D, HEART_CHEST_SMALL, 0x72, -1, 0x00C6, 0x00BD, 0x13, no_upgrade, full_heal, -1, -1, NULL), // Heart Container - [0x0050] = ITEM_ROW(0x53, GILDED_CHEST, 0x82, -1, 0x0098, 0x00DF, 0x30, no_upgrade, no_effect, -1, -1, NULL), // Lon Lon Milk (Refill) - [0x0051] = ITEM_ROW(0x53, GILDED_CHEST, 0x28, -1, 0x0014, 0x0150, 0x5B, no_upgrade, trade_quest_upgrade, 0x28, -1, NULL), // Goron Mask - [0x0052] = ITEM_ROW(0x53, GILDED_CHEST, 0x29, -1, 0x0015, 0x0151, 0x5C, no_upgrade, trade_quest_upgrade, 0x29, -1, NULL), // Zora Mask - [0x0053] = ITEM_ROW(0x53, GILDED_CHEST, 0x2A, -1, 0x0016, 0x0152, 0x5D, no_upgrade, trade_quest_upgrade, 0x2A, -1, NULL), // Gerudo Mask - [0x0054] = ITEM_ROW(0x53, GILDED_CHEST, 0x50, -1, 0x0079, 0x0147, 0x58, no_upgrade, no_effect, -1, -1, NULL), // Goron's Bracelet - [0x0055] = ITEM_ROW(0x4D, BROWN_CHEST, 0x87, 19, 0x00F1, 0x017F, 0x71, no_upgrade, no_effect, -1, -1, NULL), // Purple Rupee - [0x0056] = ITEM_ROW(0x4D, BROWN_CHEST, 0x88, 20, 0x00F2, 0x017F, 0x72, no_upgrade, no_effect, -1, -1, NULL), // Huge Rupee - [0x0057] = ITEM_ROW(0x53, GILDED_CHEST, 0x3D, -1, 0x000C, 0x00F8, 0x43, no_upgrade, give_biggoron_sword, -1, -1, NULL), // Biggoron's Sword - [0x0058] = ITEM_ROW(0x53, GILDED_CHEST, 0x04, -1, 0x0070, 0x0158, 0x60, no_upgrade, no_effect, -1, -1, NULL), // Fire Arrow - [0x0059] = ITEM_ROW(0x53, GILDED_CHEST, 0x0C, -1, 0x0071, 0x0158, 0x61, no_upgrade, no_effect, -1, -1, NULL), // Ice Arrow - [0x005A] = ITEM_ROW(0x53, GILDED_CHEST, 0x12, -1, 0x0072, 0x0158, 0x62, no_upgrade, no_effect, -1, -1, NULL), // Light Arrow - [0x005B] = ITEM_ROW(0x5B, SKULL_CHEST_SMALL, 0x71, -1, 0x00B4, 0x015C, 0x63, no_upgrade, no_effect, -1, -1, NULL), // Gold Skulltula Token - [0x005C] = ITEM_ROW(0x53, GILDED_CHEST, 0x05, -1, 0x00AD, 0x015D, 0x64, no_upgrade, no_effect, -1, -1, NULL), // Din's Fire - [0x005D] = ITEM_ROW(0x53, GILDED_CHEST, 0x0D, -1, 0x00AE, 0x015D, 0x65, no_upgrade, no_effect, -1, -1, NULL), // Farore's Wind - [0x005E] = ITEM_ROW(0x53, GILDED_CHEST, 0x13, -1, 0x00AF, 0x015D, 0x66, no_upgrade, no_effect, -1, -1, NULL), // Nayru's Love - [0x005F] = ITEM_ROW(0x53, GILDED_CHEST, 0x47, -1, 0x0007, 0x017B, 0x6C, no_upgrade, no_effect, -1, -1, NULL), // Bullet Bag (30) - [0x0060] = ITEM_ROW(0x53, GILDED_CHEST, 0x48, -1, 0x0007, 0x017B, 0x6C, no_upgrade, no_effect, -1, -1, NULL), // Bullet Bag (40) - [0x0061] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8A, 13, 0x90AC, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Sticks (5) - [0x0062] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8B, 13, 0x90AC, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Sticks (10) - [0x0063] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8C, 12, 0x90AA, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nuts (5) - [0x0064] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8D, 12, 0x90AA, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nuts (10) - [0x0065] = ITEM_ROW(0x4D, BROWN_CHEST, 0x02, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bomb - [0x0066] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8F, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (10) - [0x0067] = ITEM_ROW(0x4D, BROWN_CHEST, 0x90, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (20) - [0x0068] = ITEM_ROW(0x4D, BROWN_CHEST, 0x91, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (30) - [0x0069] = ITEM_ROW(0x4D, BROWN_CHEST, 0x95, 16, 0x90B3, 0x0119, 0x48, seeds_to_rupee, no_effect, -1, -1, NULL), // Deku Seeds (30) - [0x006A] = ITEM_ROW(0x4D, BROWN_CHEST, 0x96, -1, 0x90AB, 0x00D9, 0x28, bombchus_to_bag, no_effect, -1, -1, NULL), // Bombchu (5) - [0x006B] = ITEM_ROW(0x4D, BROWN_CHEST, 0x97, -1, 0x90AB, 0x00D9, 0x28, bombchus_to_bag, no_effect, -1, -1, NULL), // Bombchu (20) - [0x006C] = ITEM_ROW(0x53, GILDED_CHEST, 0x19, -1, 0x0047, 0x00F4, 0x3F, no_upgrade, no_effect, -1, -1, NULL), // Fish (Refill) - [0x006D] = ITEM_ROW(0x53, GILDED_CHEST, 0x1D, -1, 0x007A, 0x0174, 0x68, no_upgrade, no_effect, -1, -1, NULL), // Bugs (Refill) - [0x006E] = ITEM_ROW(0x53, GILDED_CHEST, 0x1C, -1, 0x005D, 0x0173, 0x67, no_upgrade, no_effect, -1, -1, NULL), // Blue Fire (Refill) - [0x006F] = ITEM_ROW(0x53, GILDED_CHEST, 0x20, -1, 0x0097, 0x0176, 0x6A, no_upgrade, no_effect, -1, -1, NULL), // Poe (Refill) - [0x0070] = ITEM_ROW(0x53, GILDED_CHEST, 0x1E, -1, 0x00F9, 0x0176, 0x70, no_upgrade, no_effect, -1, -1, NULL), // Big Poe (Refill) - [0x0071] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x913E, 0x00AA, 0x02, upgrade_key_model, give_small_key, TCG_ID, -1, resolve_text_small_keys_cmg), // Small Key (Chest Game) - [0x0072] = ITEM_ROW(0x4D, BROWN_CHEST, 0x84, -1, 0x00F4, 0x017F, 0x6D, no_upgrade, no_effect, -1, -1, NULL), // Green Rupee (Chest Game) - [0x0073] = ITEM_ROW(0x4D, BROWN_CHEST, 0x85, -1, 0x00F5, 0x017F, 0x6E, no_upgrade, no_effect, -1, -1, NULL), // Blue Rupee (Chest Game) - [0x0074] = ITEM_ROW(0x4D, BROWN_CHEST, 0x86, -1, 0x00F6, 0x017F, 0x6F, no_upgrade, no_effect, -1, -1, NULL), // Red Rupee (Chest Game) - [0x0075] = ITEM_ROW(0x4D, BROWN_CHEST, 0x87, -1, 0x00F7, 0x017F, 0x71, no_upgrade, no_effect, -1, -1, NULL), // Purple Rupee (Chest Game) - [0x0076] = ITEM_ROW(0x53, HEART_CHEST_SMALL, 0x7A, -1, 0x00FA, 0x00BD, 0x14, health_upgrade_cap, full_heal, -1, -1, NULL), // Piece of Heart (Chest Game) - [0x0077] = ITEM_ROW(0x53, BROWN_CHEST, 0x98, -1, 0x0090, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Stick Upgrade (20) - [0x0078] = ITEM_ROW(0x53, BROWN_CHEST, 0x99, -1, 0x0091, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Stick Upgrade (30) - [0x0079] = ITEM_ROW(0x53, BROWN_CHEST, 0x9A, -1, 0x00A7, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nut Upgrade (30) - [0x007A] = ITEM_ROW(0x53, BROWN_CHEST, 0x9B, -1, 0x00A8, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nut Upgrade (40) - [0x007B] = ITEM_ROW(0x53, GILDED_CHEST, 0x49, -1, 0x006C, 0x017B, 0x73, no_upgrade, no_effect, -1, -1, NULL), // Bullet Bag (50) - [0x007C] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9002, 0x0000, 0x00, no_upgrade, ice_trap_effect, -1, -1, NULL), // Ice Trap - [0x007D] = ITEM_ROW(0x3E, HEART_CHEST_SMALL, 0x41, -1, 0x90C2, 0x00BD, 0x14, no_upgrade, full_heal, -1, -1, NULL), // Capped Piece of Heart - [0x007E] = ITEM_ROW(0x3E, HEART_CHEST_SMALL, 0x41, -1, 0x90C6, 0x00BD, 0x13, no_upgrade, full_heal, -1, -1, NULL), // Capped Heart Container - [0x007F] = ITEM_ROW(0x53, HEART_CHEST_SMALL, 0x41, -1, 0x90FA, 0x00BD, 0x14, no_upgrade, full_heal, -1, -1, NULL), // Capped Piece of Heart (Chest Game) - - [0x0080] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00DD, 0x2D, hookshot_upgrade, no_effect, -1, -1, NULL), // Progressive Hookshot - [0x0081] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x0147, 0x58, strength_upgrade, no_effect, -1, -1, NULL), // Progressive Strength - [0x0082] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00BF, 0x18, bomb_bag_upgrade, no_effect, -1, -1, NULL), // Progressive Bomb Bag - [0x0083] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00E9, 0x35, bow_upgrade, no_effect, -1, -1, NULL), // Progressive Bow - [0x0084] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00E7, 0x33, slingshot_upgrade, no_effect, -1, -1, NULL), // Progressive Slingshot - [0x0085] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00D1, 0x22, wallet_upgrade, no_effect, -1, -1, NULL), // Progressive Wallet - [0x0086] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00DB, 0x2A, scale_upgrade, no_effect, -1, -1, NULL), // Progressive Scale - [0x0087] = ITEM_ROW( -1, BROWN_CHEST, -1, -1, -1, 0x00BB, 0x12, nut_upgrade, no_effect, -1, -1, NULL), // Progressive Nut Capacity - [0x0088] = ITEM_ROW( -1, BROWN_CHEST, -1, -1, -1, 0x00C7, 0x1B, stick_upgrade, no_effect, -1, -1, NULL), // Progressive Stick Capacity - [0x0089] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00D9, 0x28, bombchu_upgrade, no_effect, -1, -1, NULL), // Progressive Bombchus - [0x008A] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00CD, 0x1E, magic_upgrade, no_effect, -1, -1, NULL), // Progressive Magic Meter - [0x008B] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x010E, 0x46, ocarina_upgrade, no_effect, -1, -1, NULL), // Progressive Ocarina - - [0x008C] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A0, 0x00C6, 0x01, no_upgrade, give_bottle, 0x15, -1, NULL), // Bottle with Red Potion - [0x008D] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A1, 0x00C6, 0x01, no_upgrade, give_bottle, 0x16, -1, NULL), // Bottle with Green Potion - [0x008E] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A2, 0x00C6, 0x01, no_upgrade, give_bottle, 0x17, -1, NULL), // Bottle with Blue Potion - [0x008F] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A3, 0x0177, 0x6B, no_upgrade, give_bottle, 0x18, -1, NULL), // Bottle with Fairy - [0x0090] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A4, 0x00F4, 0x3F, no_upgrade, give_bottle, 0x19, -1, NULL), // Bottle with Fish - [0x0091] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A5, 0x0173, 0x67, no_upgrade, give_bottle, 0x1C, -1, NULL), // Bottle with Blue Fire - [0x0092] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A6, 0x0174, 0x68, no_upgrade, give_bottle, 0x1D, -1, NULL), // Bottle with Bugs - [0x0093] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A7, 0x0176, 0x70, no_upgrade, give_bottle, 0x1E, -1, NULL), // Bottle with Big Poe - [0x0094] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A8, 0x0176, 0x6A, no_upgrade, give_bottle, 0x20, -1, NULL), // Bottle with Poe - - [0x0095] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0006, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, FOREST_ID, NULL), // Forest Temple Boss Key - [0x0096] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001C, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, FIRE_ID, NULL), // Fire Temple Boss Key - [0x0097] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001D, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, WATER_ID, NULL), // Water Temple Boss Key - [0x0098] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001E, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, SPIRIT_ID, NULL), // Spirit Temple Boss Key - [0x0099] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x002A, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, SHADOW_ID, NULL), // Shadow Temple Boss Key - [0x009A] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0061, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, TOWER_ID, NULL), // Ganon's Castle Boss Key - - [0x009B] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0062, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, DEKU_ID, NULL), // Deku Tree Compass - [0x009C] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0063, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, DODONGO_ID, NULL), // Dodongo's Cavern Compass - [0x009D] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0064, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, JABU_ID, NULL), // Jabu Jabu Compass - [0x009E] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0065, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, FOREST_ID, NULL), // Forest Temple Compass - [0x009F] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007C, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, FIRE_ID, NULL), // Fire Temple Compass - [0x00A0] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007D, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, WATER_ID, NULL), // Water Temple Compass - [0x00A1] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007E, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, SPIRIT_ID, NULL), // Spirit Temple Compass - [0x00A2] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007F, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, SHADOW_ID, NULL), // Shadow Temple Compass - [0x00A3] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x00A2, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, BOTW_ID, NULL), // Bottom of the Well Compass - [0x00A4] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0087, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, ICE_ID, NULL), // Ice Cavern Compass - - [0x00A5] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0088, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, DEKU_ID, NULL), // Deku Tree Map - [0x00A6] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0089, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, DODONGO_ID, NULL), // Dodongo's Cavern Map - [0x00A7] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008A, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, JABU_ID, NULL), // Jabu Jabu Map - [0x00A8] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008B, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, FOREST_ID, NULL), // Forest Temple Map - [0x00A9] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008C, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, FIRE_ID, NULL), // Fire Temple Map - [0x00AA] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008E, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, WATER_ID, NULL), // Water Temple Map - [0x00AB] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008F, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, SPIRIT_ID, NULL), // Spirit Temple Map - [0x00AC] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x00A3, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, SHADOW_ID, NULL), // Shadow Temple Map - [0x00AD] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x00A5, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, BOTW_ID, NULL), // Bottom of the Well Map - [0x00AE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0092, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, ICE_ID, NULL), // Ice Cavern Map - - [0x00AF] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0093, 0x00AA, 0x02, upgrade_key_model, give_small_key, FOREST_ID, -1, resolve_text_small_keys), // Forest Temple Small Key - [0x00B0] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0094, 0x00AA, 0x02, upgrade_key_model, give_small_key, FIRE_ID, -1, resolve_text_small_keys), // Fire Temple Small Key - [0x00B1] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0095, 0x00AA, 0x02, upgrade_key_model, give_small_key, WATER_ID, -1, resolve_text_small_keys), // Water Temple Small Key - [0x00B2] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A6, 0x00AA, 0x02, upgrade_key_model, give_small_key, SPIRIT_ID, -1, resolve_text_small_keys), // Spirit Temple Small Key - [0x00B3] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A9, 0x00AA, 0x02, upgrade_key_model, give_small_key, SHADOW_ID, -1, resolve_text_small_keys), // Shadow Temple Small Key - [0x00B4] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009B, 0x00AA, 0x02, upgrade_key_model, give_small_key, BOTW_ID, -1, resolve_text_small_keys), // Bottom of the Well Small Key - [0x00B5] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009F, 0x00AA, 0x02, upgrade_key_model, give_small_key, GTG_ID, -1, resolve_text_small_keys), // Gerudo Training Small Key - [0x00B6] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A0, 0x00AA, 0x02, upgrade_key_model, give_small_key, FORT_ID, -1, resolve_text_small_keys), // Thieves' Hideout Small Key - [0x00B7] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A1, 0x00AA, 0x02, upgrade_key_model, give_small_key, CASTLE_ID, -1, resolve_text_small_keys), // Ganon's Castle Small Key - - [0x00B8] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00E9, 0x0194, 0x13, no_upgrade, give_defense, -1, -1, NULL), // Double Defense - [0x00B9] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00E4, 0x00CD, 0x1E, no_upgrade, give_magic, -1, -1, NULL), // Magic Meter - [0x00BA] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00E8, 0x00CD, 0x1F, no_upgrade, give_double_magic, -1, -1, NULL), // Double Magic - - [0x00BB] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9091, 0x0196, 0x78, no_upgrade, give_song, 6, -1, NULL), // Minuet of Forest - [0x00BC] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9092, 0x0196, 0x79, no_upgrade, give_song, 7, -1, NULL), // Bolero of Fire - [0x00BD] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9093, 0x0196, 0x7A, no_upgrade, give_song, 8, -1, NULL), // Serenade of Water - [0x00BE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9094, 0x0196, 0x7B, no_upgrade, give_song, 9, -1, NULL), // Requiem of Spirit - [0x00BF] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9095, 0x0196, 0x7C, no_upgrade, give_song, 10, -1, NULL), // Nocturn of Shadow - [0x00C0] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9096, 0x0196, 0x7D, no_upgrade, give_song, 11, -1, NULL), // Prelude of Light - - [0x00C1] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909A, 0x00B6, 0x04, no_upgrade, give_song, 12, -1, NULL), // Zelda's Lullaby - [0x00C2] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909B, 0x00B6, 0x06, no_upgrade, give_song, 13, -1, NULL), // Epona's Song - [0x00C3] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909C, 0x00B6, 0x03, no_upgrade, give_song, 14, -1, NULL), // Saria's Song - [0x00C4] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909D, 0x00B6, 0x08, no_upgrade, give_song, 15, -1, NULL), // Sun's Song - [0x00C5] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909E, 0x00B6, 0x05, no_upgrade, give_song, 16, -1, NULL), // Song of Time - [0x00C6] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909F, 0x00B6, 0x07, no_upgrade, give_song, 17, -1, NULL), // Song of Storms - - [0x00C7] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00F8, 0x00D1, 0x23, no_upgrade, give_tycoon_wallet, 3, -1, NULL), // Tycoon's Wallet - [0x00C8] = ITEM_ROW(0x53, GILDED_CHEST, 0x14, -1, 0x9099, 0x010B, 0x45, no_upgrade, no_effect, -1, -1, NULL), // Redundant Letter Bottle - [0x00C9] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9048, 0x00F3, 0x3E, no_upgrade, give_bean_pack, -1, -1, NULL), // Magic Bean Pack - [0x00CA] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9003, 0x0193, 0x76, no_upgrade, give_triforce_piece, -1, -1, NULL), // Triforce piece - - [0x00CB] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, FOREST_ID, -1, resolve_text_keyrings), // Forest Temple Small Key Ring - [0x00CC] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, FIRE_ID, -1, resolve_text_keyrings), // Fire Temple Small Key Ring - [0x00CD] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, WATER_ID, -1, resolve_text_keyrings), // Water Temple Small Key Ring - [0x00CE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, SPIRIT_ID, -1, resolve_text_keyrings), // Spirit Temple Small Key Ring - [0x00CF] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, SHADOW_ID, -1, resolve_text_keyrings), // Shadow Temple Small Key Ring - [0x00D0] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, BOTW_ID, -1, resolve_text_keyrings), // Bottom of the Well Small Key Ring - [0x00D1] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, GTG_ID, -1, resolve_text_keyrings), // Gerudo Training Small Key Ring - [0x00D2] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, FORT_ID, -1, resolve_text_keyrings), // Thieves' Hideout Small Key Ring - [0x00D3] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, CASTLE_ID, -1, resolve_text_keyrings), // Ganon's Castle Small Key Ring - - [0x00D4] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9019, 0x0197, 0x7E, no_upgrade, give_bombchus, 20, -1, NULL), // Bombchu Bag (20) - [0x00D5] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9019, 0x0197, 0x7E, no_upgrade, give_bombchus, 10, -1, NULL), // Bombchu Bag (10) - [0x00D6] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9019, 0x0197, 0x7E, no_upgrade, give_bombchus, 5, -1, NULL), // Bombchu Bag (5) - - [0x00D7] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, TCG_ID, -1, resolve_text_keyrings), // Treasure Chest Game Small Key Ring - - [0x00D8] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901B, 0x0198, 0x72, no_upgrade, give_silver_rupee, DODONGO_ID, 0x00, resolve_text_silver_rupees), // Silver Rupee (Dodongos Cavern Staircase) - [0x00D9] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901C, 0x0198, 0x72, no_upgrade, give_silver_rupee, ICE_ID, 0x01, resolve_text_silver_rupees), // Silver Rupee (Ice Cavern Spinning Scythe) - [0x00DA] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901D, 0x0198, 0x72, no_upgrade, give_silver_rupee, ICE_ID, 0x02, resolve_text_silver_rupees), // Silver Rupee (Ice Cavern Push Block) - [0x00DB] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901E, 0x0198, 0x72, no_upgrade, give_silver_rupee, BOTW_ID, 0x03, resolve_text_silver_rupees), // Silver Rupee (Bottom of the Well Basement) - [0x00DC] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901F, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x04, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Scythe Shortcut) - [0x00DD] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9020, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x05, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Invisible Blades) - [0x00DE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9021, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x06, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Huge Pit) - [0x00DF] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9022, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x07, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Invisible Spikes) - [0x00E0] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9023, 0x0198, 0x72, no_upgrade, give_silver_rupee, GTG_ID, 0x08, resolve_text_silver_rupees), // Silver Rupee (Gerudo Training Ground Slopes) - [0x00E1] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9024, 0x0198, 0x72, no_upgrade, give_silver_rupee, GTG_ID, 0x09, resolve_text_silver_rupees), // Silver Rupee (Gerudo Training Ground Lava) - [0x00E2] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9025, 0x0198, 0x72, no_upgrade, give_silver_rupee, GTG_ID, 0x0A, resolve_text_silver_rupees), // Silver Rupee (Gerudo Training Ground Water) - [0x00E3] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9026, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0B, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Child Early Torches) - [0x00E4] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9027, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0C, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Adult Boulders) - [0x00E5] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9028, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0D, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Lobby and Lower Adult) - [0x00E6] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9029, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0E, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Sun Block) - [0x00E7] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902A, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0F, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Adult Climb) - [0x00E8] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902B, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x10, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Spirit Trial) - [0x00E9] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902C, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x11, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Light Trial) - [0x00EA] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902D, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x12, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Fire Trial) - [0x00EB] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902E, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x13, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Shadow Trial) - [0x00EC] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902F, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x14, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Water Trial) - [0x00ED] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9030, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x15, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Forest Trial) - - [0x00EE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901B, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, DODONGO_ID, 0x00, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Dodongos Cavern Staircase) - [0x00EF] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901C, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, ICE_ID, 0x01, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ice Cavern Spinning Scythe) - [0x00F0] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901D, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, ICE_ID, 0x02, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ice Cavern Push Block) - [0x00F1] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901E, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, BOTW_ID, 0x03, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Bottom of the Well Basement) - [0x00F2] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901F, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x04, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Scythe Shortcut) - [0x00F3] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9020, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x05, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Invisible Blades) - [0x00F4] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9021, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x06, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Huge Pit) - [0x00F5] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9022, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x07, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Invisible Spikes) - [0x00F6] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9023, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, GTG_ID, 0x08, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Gerudo Training Ground Slopes) - [0x00F7] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9024, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, GTG_ID, 0x09, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Gerudo Training Ground Lava) - [0x00F8] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9025, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, GTG_ID, 0x0A, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Gerudo Training Ground Water) - [0x00F9] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9026, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0B, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Child Early Torches) - [0x00FA] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9027, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0C, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Adult Boulders) - [0x00FB] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9028, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0D, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Lobby and Lower Adult) - [0x00FC] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9029, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0E, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Sun Block) - [0x00FD] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902A, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0F, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Adult Climb) - [0x00FE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902B, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x10, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Spirit Trial) - [0x00FF] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902C, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x11, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Light Trial) - [0x0100] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902D, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x12, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Fire Trial) - [0x0101] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902E, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x13, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Shadow Trial) - [0x0102] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902F, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x14, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Water Trial) - [0x0103] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9030, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x15, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Forest Trial) +item_row_t item_table[GI_RANDO_MAX] = { + [GI_BOMBS_5] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8E, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (5) + [GI_DEKU_NUTS_5] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8C, 12, 0x90AA, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nuts (5) + [GI_BOMBCHUS_10] = ITEM_ROW(0x4D, BROWN_CHEST, 0x09, -1, 0x90AB, 0x00D9, 0x28, bombchus_to_bag, no_effect, -1, -1, NULL), // Bombchu (10) + [GI_BOW] = ITEM_ROW(0x53, GILDED_CHEST, 0x03, -1, 0x0031, 0x00E9, 0x35, no_upgrade, no_effect, -1, -1, NULL), // Fairy Bow + [GI_SLINGSHOT] = ITEM_ROW(0x53, GILDED_CHEST, 0x06, -1, 0x0030, 0x00E7, 0x33, no_upgrade, no_effect, -1, -1, NULL), // Fairy Slingshot + [GI_BOOMERANG] = ITEM_ROW(0x53, GILDED_CHEST, 0x0E, -1, 0x0035, 0x00E8, 0x34, no_upgrade, no_effect, -1, -1, NULL), // Boomerang + [GI_DEKU_STICKS_1] = ITEM_ROW(0x4D, BROWN_CHEST, 0x00, 13, 0x90AC, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Stick + [GI_HOOKSHOT] = ITEM_ROW(0x53, GILDED_CHEST, 0x0A, -1, 0x0036, 0x00DD, 0x2D, no_upgrade, no_effect, -1, -1, NULL), // Hookshot + [GI_LONGSHOT] = ITEM_ROW(0x53, GILDED_CHEST, 0x0B, -1, 0x004F, 0x00DD, 0x2E, no_upgrade, no_effect, -1, -1, NULL), // Longshot + [GI_LENS_OF_TRUTH] = ITEM_ROW(0x53, GILDED_CHEST, 0x0F, -1, 0x0039, 0x00EA, 0x36, no_upgrade, no_effect, -1, -1, NULL), // Lens of Truth + [GI_ZELDAS_LETTER] = ITEM_ROW(0x53, GILDED_CHEST, 0x23, -1, 0x0069, 0x00EF, 0x3B, no_upgrade, open_mask_shop, 0x23, -1, NULL), // Zelda's Letter + [GI_OCARINA_OF_TIME] = ITEM_ROW(0x53, GILDED_CHEST, 0x08, -1, 0x003A, 0x00DE, 0x2F, no_upgrade, no_effect, -1, -1, NULL), // Ocarina of Time + [GI_HAMMER] = ITEM_ROW(0x53, GILDED_CHEST, 0x11, -1, 0x0038, 0x00F6, 0x41, no_upgrade, no_effect, -1, -1, NULL), // Megaton Hammer + [GI_COJIRO] = ITEM_ROW(0x53, GILDED_CHEST, 0x2F, -1, 0x0002, 0x0109, 0x5E, no_upgrade, trade_quest_upgrade, 0x2F, -1, NULL), // Cojiro + [GI_BOTTLE_EMPTY] = ITEM_ROW(0x53, GILDED_CHEST, 0x14, -1, 0x0042, 0x00C6, 0x01, no_upgrade, no_effect, -1, -1, NULL), // Empty Bottle + [GI_BOTTLE_POTION_RED] = ITEM_ROW(0x53, GILDED_CHEST, 0x15, -1, 0x0043, 0x00EB, 0x38, no_upgrade, no_effect, -1, -1, NULL), // Red Potion + [GI_BOTTLE_POTION_GREEN] = ITEM_ROW(0x53, GILDED_CHEST, 0x16, -1, 0x0044, 0x00EB, 0x37, no_upgrade, no_effect, -1, -1, NULL), // Green Potion + [GI_BOTTLE_POTION_BLUE] = ITEM_ROW(0x53, GILDED_CHEST, 0x17, -1, 0x0045, 0x00EB, 0x39, no_upgrade, no_effect, -1, -1, NULL), // Blue Potion + [GI_BOTTLE_FAIRY] = ITEM_ROW(0x53, GILDED_CHEST, 0x18, -1, 0x0046, 0x00C6, 0x01, no_upgrade, no_effect, -1, -1, NULL), // Bottled Fairy + [GI_BOTTLE_MILK_FULL] = ITEM_ROW(0x53, GILDED_CHEST, 0x1A, -1, 0x0098, 0x00DF, 0x30, no_upgrade, no_effect, -1, -1, NULL), // Bottled Lon Lon Milk + [GI_BOTTLE_RUTOS_LETTER] = ITEM_ROW(0x53, GILDED_CHEST, 0x1B, -1, 0x0099, 0x010B, 0x45, letter_to_bottle, no_effect, -1, -1, NULL), // Bottled Ruto's Letter + [GI_MAGIC_BEAN] = ITEM_ROW(0x53, BROWN_CHEST, 0x10, -1, 0x0048, 0x00F3, 0x3E, no_upgrade, no_effect, -1, -1, NULL), // Magic Bean + [GI_MASK_SKULL] = ITEM_ROW(0x53, GILDED_CHEST, 0x25, -1, 0x0010, 0x0136, 0x4F, no_upgrade, trade_quest_upgrade, 0x25, -1, NULL), // Skull Mask + [GI_MASK_SPOOKY] = ITEM_ROW(0x53, GILDED_CHEST, 0x26, -1, 0x0011, 0x0135, 0x32, no_upgrade, trade_quest_upgrade, 0x26, -1, NULL), // Spooky Mask + [GI_CHICKEN] = ITEM_ROW(0x53, GILDED_CHEST, 0x22, -1, 0x000B, 0x0109, 0x44, no_upgrade, trade_quest_upgrade, 0x22, -1, NULL), // Chicken + [GI_MASK_KEATON] = ITEM_ROW(0x53, GILDED_CHEST, 0x24, -1, 0x0012, 0x0134, 0x31, no_upgrade, trade_quest_upgrade, 0x24, -1, NULL), // Keaton Mask + [GI_MASK_BUNNY_HOOD] = ITEM_ROW(0x53, GILDED_CHEST, 0x27, -1, 0x0013, 0x0137, 0x50, no_upgrade, trade_quest_upgrade, 0x27, -1, NULL), // Bunny Hood + [GI_MASK_TRUTH] = ITEM_ROW(0x53, GILDED_CHEST, 0x2B, -1, 0x0017, 0x0138, 0x51, no_upgrade, trade_quest_upgrade, 0x2B, -1, NULL), // Mask of Truth + [GI_POCKET_EGG] = ITEM_ROW(0x53, GILDED_CHEST, 0x2D, -1, 0x9001, 0x00DA, 0x29, no_upgrade, trade_quest_upgrade, 0x2D, -1, NULL), // Pocket Egg + [GI_POCKET_CUCCO] = ITEM_ROW(0x53, GILDED_CHEST, 0x2E, -1, 0x000B, 0x0109, 0x44, no_upgrade, trade_quest_upgrade, 0x2E, -1, NULL), // Pocket Cucco + [GI_ODD_MUSHROOM] = ITEM_ROW(0x53, GILDED_CHEST, 0x30, -1, 0x0003, 0x0141, 0x54, no_upgrade, trade_quest_upgrade, 0x30, -1, NULL), // Odd Mushroom + [GI_ODD_POTION] = ITEM_ROW(0x53, GILDED_CHEST, 0x31, -1, 0x0004, 0x0140, 0x53, no_upgrade, trade_quest_upgrade, 0x31, -1, NULL), // Odd Potion + [GI_POACHERS_SAW] = ITEM_ROW(0x53, GILDED_CHEST, 0x32, -1, 0x0005, 0x00F5, 0x40, no_upgrade, trade_quest_upgrade, 0x32, -1, NULL), // Poacher's Saw + [GI_BROKEN_GORONS_SWORD] = ITEM_ROW(0x53, GILDED_CHEST, 0x33, -1, 0x0008, 0x0143, 0x56, no_upgrade, trade_quest_upgrade, 0x33, -1, NULL), // Goron's Sword (Broken) + [GI_PRESCRIPTION] = ITEM_ROW(0x53, GILDED_CHEST, 0x34, -1, 0x0009, 0x0146, 0x57, no_upgrade, trade_quest_upgrade, 0x34, -1, NULL), // Prescription + [GI_EYEBALL_FROG] = ITEM_ROW(0x53, GILDED_CHEST, 0x35, -1, 0x000D, 0x0149, 0x5A, no_upgrade, trade_quest_upgrade, 0x35, -1, NULL), // Eyeball Frog + [GI_EYE_DROPS] = ITEM_ROW(0x53, GILDED_CHEST, 0x36, -1, 0x000E, 0x013F, 0x52, no_upgrade, trade_quest_upgrade, 0x36, -1, NULL), // Eye Drops + [GI_CLAIM_CHECK] = ITEM_ROW(0x53, GILDED_CHEST, 0x37, -1, 0x000A, 0x0142, 0x55, no_upgrade, trade_quest_upgrade, 0x37, -1, NULL), // Claim Check + [GI_SWORD_KOKIRI] = ITEM_ROW(0x53, GILDED_CHEST, 0x3B, -1, 0x00A4, 0x018D, 0x74, no_upgrade, no_effect, -1, -1, NULL), // Kokiri Sword + [GI_SWORD_KNIFE] = ITEM_ROW(0x53, GILDED_CHEST, 0x3D, -1, 0x004B, 0x00F8, 0x43, no_upgrade, no_effect, -1, -1, NULL), // Giant's Knife + [GI_SHIELD_DEKU] = ITEM_ROW(0x53, BROWN_CHEST, 0x3E, -1, 0x90AD, 0x00CB, 0x1D, no_upgrade, no_effect, -1, -1, NULL), // Deku Shield + [GI_SHIELD_HYLIAN] = ITEM_ROW(0x53, BROWN_CHEST, 0x3F, -1, 0x90AE, 0x00DC, 0x2C, no_upgrade, no_effect, -1, -1, NULL), // Hylian Shield + [GI_SHIELD_MIRROR] = ITEM_ROW(0x53, GILDED_CHEST, 0x40, -1, 0x004E, 0x00EE, 0x3A, no_upgrade, no_effect, -1, -1, NULL), // Mirror Shield + [GI_TUNIC_GORON] = ITEM_ROW(0x53, GILDED_CHEST, 0x42, -1, 0x90AF, 0x00F2, 0x3C, no_upgrade, no_effect, -1, -1, NULL), // Goron Tunic + [GI_TUNIC_ZORA] = ITEM_ROW(0x53, GILDED_CHEST, 0x43, -1, 0x90B0, 0x00F2, 0x3D, no_upgrade, no_effect, -1, -1, NULL), // Zora Tunic + [GI_BOOTS_IRON] = ITEM_ROW(0x53, GILDED_CHEST, 0x45, -1, 0x0053, 0x0118, 0x47, no_upgrade, no_effect, -1, -1, NULL), // Iron Boots + [GI_BOOTS_HOVER] = ITEM_ROW(0x53, GILDED_CHEST, 0x46, -1, 0x0054, 0x0157, 0x5F, no_upgrade, no_effect, -1, -1, NULL), // Hover Boots + [GI_QUIVER_40] = ITEM_ROW(0x53, GILDED_CHEST, 0x4B, -1, 0x0056, 0x00BE, 0x16, no_upgrade, no_effect, -1, -1, NULL), // Big Quiver + [GI_QUIVER_50] = ITEM_ROW(0x53, GILDED_CHEST, 0x4C, -1, 0x0057, 0x00BE, 0x17, no_upgrade, no_effect, -1, -1, NULL), // Biggest Quiver + [GI_BOMB_BAG_20] = ITEM_ROW(0x53, GILDED_CHEST, 0x4D, -1, 0x0058, 0x00BF, 0x18, no_upgrade, no_effect, -1, -1, NULL), // Bomb Bag + [GI_BOMB_BAG_30] = ITEM_ROW(0x53, GILDED_CHEST, 0x4E, -1, 0x0059, 0x00BF, 0x19, no_upgrade, no_effect, -1, -1, NULL), // Big Bomb Bag + [GI_BOMB_BAG_40] = ITEM_ROW(0x53, GILDED_CHEST, 0x4F, -1, 0x005A, 0x00BF, 0x1A, no_upgrade, no_effect, -1, -1, NULL), // Biggest Bomb Bag + [GI_SILVER_GAUNTLETS] = ITEM_ROW(0x53, GILDED_CHEST, 0x51, -1, 0x005B, 0x012D, 0x49, no_upgrade, no_effect, -1, -1, NULL), // Silver Gauntlets + [GI_GOLD_GAUNTLETS] = ITEM_ROW(0x53, GILDED_CHEST, 0x52, -1, 0x005C, 0x012D, 0x4A, no_upgrade, no_effect, -1, -1, NULL), // Golden Gauntlets + [GI_SCALE_SILVER] = ITEM_ROW(0x53, GILDED_CHEST, 0x53, -1, 0x00CD, 0x00DB, 0x2A, no_upgrade, no_effect, -1, -1, NULL), // Silver Scale + [GI_SCALE_GOLDEN] = ITEM_ROW(0x53, GILDED_CHEST, 0x54, -1, 0x00CE, 0x00DB, 0x2B, no_upgrade, no_effect, -1, -1, NULL), // Golden Scale + [GI_STONE_OF_AGONY] = ITEM_ROW(0x53, GILDED_CHEST, 0x6F, -1, 0x0068, 0x00C8, 0x21, no_upgrade, no_effect, -1, -1, NULL), // Stone of Agony + [GI_GERUDOS_CARD] = ITEM_ROW(0x53, GILDED_CHEST, 0x70, -1, 0x007B, 0x00D7, 0x24, no_upgrade, no_effect, -1, -1, NULL), // Gerudo Membership Card + [GI_OCARINA_FAIRY] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x004A, 0x010E, 0x46, no_upgrade, give_fairy_ocarina, -1, -1, NULL), // Fairy Ocarina + [GI_DEKU_SEEDS_5] = ITEM_ROW(0x4D, BROWN_CHEST, 0x58, 16, 0x90B3, 0x0119, 0x48, seeds_to_rupee, no_effect, -1, -1, NULL), // Deku Seeds (5) + [GI_HEART_CONTAINER] = ITEM_ROW(0x3D, HEART_CHEST_SMALL, 0x72, -1, 0x00C6, 0x00BD, 0x13, health_upgrade_cap, clear_excess_hearts, -1, -1, NULL), // Heart Container + [GI_HEART_PIECE] = ITEM_ROW(0x3E, HEART_CHEST_SMALL, 0x7A, -1, 0x00C2, 0x00BD, 0x14, health_upgrade_cap, full_heal, -1, -1, NULL), // Piece of Heart + [GI_BOSS_KEY] = ITEM_ROW(0x53, GOLD_CHEST, 0x74, -1, 0x00C7, 0x00B9, 0x0A, no_upgrade, no_effect, -1, -1, NULL), // Boss Key + [GI_COMPASS] = ITEM_ROW(0x53, BROWN_CHEST, 0x75, -1, 0x0067, 0x00B8, 0x0B, no_upgrade, no_effect, -1, -1, NULL), // Compass + [GI_DUNGEON_MAP] = ITEM_ROW(0x53, BROWN_CHEST, 0x76, -1, 0x0066, 0x00C8, 0x1C, no_upgrade, no_effect, -1, -1, NULL), // Map + [GI_SMALL_KEY] = ITEM_ROW(0x53, SILVER_CHEST, 0x77, -1, 0x0060, 0x00AA, 0x02, no_upgrade, no_effect, -1, -1, NULL), // Small Key + [GI_MAGIC_JAR_SMALL] = ITEM_ROW(0x53, BROWN_CHEST, 0x78, -1, 0x0052, 0x00CD, 0x1E, no_upgrade, no_effect, -1, -1, NULL), // Small Magic Jar + [GI_MAGIC_JAR_LARGE] = ITEM_ROW(0x53, BROWN_CHEST, 0x79, -1, 0x0052, 0x00CD, 0x1F, no_upgrade, no_effect, -1, -1, NULL), // Large Magic Jar + [GI_WALLET_ADULT] = ITEM_ROW(0x53, GILDED_CHEST, 0x56, -1, 0x005E, 0x00D1, 0x22, no_upgrade, fill_wallet_upgrade, 1, -1, NULL), // Adult's Wallet + [GI_WALLET_GIANT] = ITEM_ROW(0x53, GILDED_CHEST, 0x57, -1, 0x005F, 0x00D1, 0x23, no_upgrade, fill_wallet_upgrade, 2, -1, NULL), // Giant's Wallet + [GI_WEIRD_EGG] = ITEM_ROW(0x53, GILDED_CHEST, 0x21, -1, 0x009A, 0x00DA, 0x29, no_upgrade, trade_quest_upgrade, 0x21, -1, NULL), // Weird Egg + [GI_RECOVERY_HEART] = ITEM_ROW(0x4D, BROWN_CHEST, 0x83, 3, 0x90B1, 0x00B7, 0x09, no_upgrade, no_effect, -1, -1, NULL), // Recovery Heart + [GI_ARROWS_5] = ITEM_ROW(0x4D, BROWN_CHEST, 0x92, 8, 0x90B2, 0x00D8, 0x25, arrows_to_rupee, no_effect, -1, -1, NULL), // Arrows (5) + [GI_ARROWS_10] = ITEM_ROW(0x4D, BROWN_CHEST, 0x93, 9, 0x90B2, 0x00D8, 0x26, arrows_to_rupee, no_effect, -1, -1, NULL), // Arrows (10) + [GI_ARROWS_30] = ITEM_ROW(0x4D, BROWN_CHEST, 0x94, 10, 0x90B2, 0x00D8, 0x27, arrows_to_rupee, no_effect, -1, -1, NULL), // Arrows (30) + [GI_RUPEE_GREEN] = ITEM_ROW(0x4D, BROWN_CHEST, 0x84, 0, 0x006F, 0x017F, 0x6D, no_upgrade, no_effect, -1, -1, NULL), // Green Rupee + [GI_RUPEE_BLUE] = ITEM_ROW(0x4D, BROWN_CHEST, 0x85, 1, 0x00CC, 0x017F, 0x6E, no_upgrade, no_effect, -1, -1, NULL), // Blue Rupee + [GI_RUPEE_RED] = ITEM_ROW(0x4D, BROWN_CHEST, 0x86, 2, 0x00F0, 0x017F, 0x6F, no_upgrade, no_effect, -1, -1, NULL), // Red Rupee + [GI_HEART_CONTAINER_2] = ITEM_ROW(0x3D, HEART_CHEST_SMALL, 0x72, -1, 0x00C6, 0x00BD, 0x13, no_upgrade, full_heal, -1, -1, NULL), // Heart Container + [GI_MILK] = ITEM_ROW(0x53, GILDED_CHEST, 0x82, -1, 0x0098, 0x00DF, 0x30, no_upgrade, no_effect, -1, -1, NULL), // Lon Lon Milk (Refill) + [GI_MASK_GORON] = ITEM_ROW(0x53, GILDED_CHEST, 0x28, -1, 0x0014, 0x0150, 0x5B, no_upgrade, trade_quest_upgrade, 0x28, -1, NULL), // Goron Mask + [GI_MASK_ZORA] = ITEM_ROW(0x53, GILDED_CHEST, 0x29, -1, 0x0015, 0x0151, 0x5C, no_upgrade, trade_quest_upgrade, 0x29, -1, NULL), // Zora Mask + [GI_MASK_GERUDO] = ITEM_ROW(0x53, GILDED_CHEST, 0x2A, -1, 0x0016, 0x0152, 0x5D, no_upgrade, trade_quest_upgrade, 0x2A, -1, NULL), // Gerudo Mask + [GI_GORONS_BRACELET] = ITEM_ROW(0x53, GILDED_CHEST, 0x50, -1, 0x0079, 0x0147, 0x58, no_upgrade, no_effect, -1, -1, NULL), // Goron's Bracelet + [GI_RUPEE_PURPLE] = ITEM_ROW(0x4D, BROWN_CHEST, 0x87, 19, 0x00F1, 0x017F, 0x71, no_upgrade, no_effect, -1, -1, NULL), // Purple Rupee + [GI_RUPEE_GOLD] = ITEM_ROW(0x4D, BROWN_CHEST, 0x88, 20, 0x00F2, 0x017F, 0x72, no_upgrade, no_effect, -1, -1, NULL), // Huge Rupee + [GI_SWORD_BIGGORON] = ITEM_ROW(0x53, GILDED_CHEST, 0x3D, -1, 0x000C, 0x00F8, 0x43, no_upgrade, give_biggoron_sword, -1, -1, NULL), // Biggoron's Sword + [GI_ARROW_FIRE] = ITEM_ROW(0x53, GILDED_CHEST, 0x04, -1, 0x0070, 0x0158, 0x60, no_upgrade, no_effect, -1, -1, NULL), // Fire Arrow + [GI_ARROW_ICE] = ITEM_ROW(0x53, GILDED_CHEST, 0x0C, -1, 0x0071, 0x0158, 0x61, no_upgrade, no_effect, -1, -1, NULL), // Ice Arrow + [GI_ARROW_LIGHT] = ITEM_ROW(0x53, GILDED_CHEST, 0x12, -1, 0x0072, 0x0158, 0x62, no_upgrade, no_effect, -1, -1, NULL), // Light Arrow + [GI_SKULL_TOKEN] = ITEM_ROW(0x5B, SKULL_CHEST_SMALL, 0x71, -1, 0x00B4, 0x015C, 0x63, no_upgrade, no_effect, -1, -1, NULL), // Gold Skulltula Token + [GI_DINS_FIRE] = ITEM_ROW(0x53, GILDED_CHEST, 0x05, -1, 0x00AD, 0x015D, 0x64, no_upgrade, no_effect, -1, -1, NULL), // Din's Fire + [GI_FARORES_WIND] = ITEM_ROW(0x53, GILDED_CHEST, 0x0D, -1, 0x00AE, 0x015D, 0x65, no_upgrade, no_effect, -1, -1, NULL), // Farore's Wind + [GI_NAYRUS_LOVE] = ITEM_ROW(0x53, GILDED_CHEST, 0x13, -1, 0x00AF, 0x015D, 0x66, no_upgrade, no_effect, -1, -1, NULL), // Nayru's Love + [GI_BULLET_BAG_30] = ITEM_ROW(0x53, GILDED_CHEST, 0x47, -1, 0x0007, 0x017B, 0x6C, no_upgrade, no_effect, -1, -1, NULL), // Bullet Bag (30) + [GI_BULLET_BAG_40] = ITEM_ROW(0x53, GILDED_CHEST, 0x48, -1, 0x0007, 0x017B, 0x6C, no_upgrade, no_effect, -1, -1, NULL), // Bullet Bag (40) + [GI_DEKU_STICKS_5] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8A, 13, 0x90AC, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Sticks (5) + [GI_DEKU_STICKS_10] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8B, 13, 0x90AC, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Sticks (10) + [GI_DEKU_NUTS_5_2] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8C, 12, 0x90AA, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nuts (5) + [GI_DEKU_NUTS_10] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8D, 12, 0x90AA, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nuts (10) + [GI_BOMBS_1] = ITEM_ROW(0x4D, BROWN_CHEST, 0x02, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bomb + [GI_BOMBS_10] = ITEM_ROW(0x4D, BROWN_CHEST, 0x8F, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (10) + [GI_BOMBS_20] = ITEM_ROW(0x4D, BROWN_CHEST, 0x90, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (20) + [GI_BOMBS_30] = ITEM_ROW(0x4D, BROWN_CHEST, 0x91, 11, 0x90A9, 0x00CE, 0x20, bombs_to_rupee, no_effect, -1, -1, NULL), // Bombs (30) + [GI_DEKU_SEEDS_30] = ITEM_ROW(0x4D, BROWN_CHEST, 0x95, 16, 0x90B3, 0x0119, 0x48, seeds_to_rupee, no_effect, -1, -1, NULL), // Deku Seeds (30) + [GI_BOMBCHUS_5] = ITEM_ROW(0x4D, BROWN_CHEST, 0x96, -1, 0x90AB, 0x00D9, 0x28, bombchus_to_bag, no_effect, -1, -1, NULL), // Bombchu (5) + [GI_BOMBCHUS_20] = ITEM_ROW(0x4D, BROWN_CHEST, 0x97, -1, 0x90AB, 0x00D9, 0x28, bombchus_to_bag, no_effect, -1, -1, NULL), // Bombchu (20) + [GI_BOTTLE_FISH] = ITEM_ROW(0x53, GILDED_CHEST, 0x19, -1, 0x0047, 0x00F4, 0x3F, no_upgrade, no_effect, -1, -1, NULL), // Fish (Refill) + [GI_BOTTLE_BUGS] = ITEM_ROW(0x53, GILDED_CHEST, 0x1D, -1, 0x007A, 0x0174, 0x68, no_upgrade, no_effect, -1, -1, NULL), // Bugs (Refill) + [GI_BOTTLE_BLUE_FIRE] = ITEM_ROW(0x53, GILDED_CHEST, 0x1C, -1, 0x005D, 0x0173, 0x67, no_upgrade, no_effect, -1, -1, NULL), // Blue Fire (Refill) + [GI_BOTTLE_POE] = ITEM_ROW(0x53, GILDED_CHEST, 0x20, -1, 0x0097, 0x0176, 0x6A, no_upgrade, no_effect, -1, -1, NULL), // Poe (Refill) + [GI_BOTTLE_BIG_POE] = ITEM_ROW(0x53, GILDED_CHEST, 0x1E, -1, 0x00F9, 0x0176, 0x70, no_upgrade, no_effect, -1, -1, NULL), // Big Poe (Refill) + [GI_DOOR_KEY] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x913E, 0x00AA, 0x02, upgrade_key_model, give_small_key, TCG_ID, -1, resolve_text_small_keys_cmg), // Small Key (Chest Game) + [GI_RUPEE_GREEN_LOSE] = ITEM_ROW(0x4D, BROWN_CHEST, 0x84, -1, 0x00F4, 0x017F, 0x6D, no_upgrade, no_effect, -1, -1, NULL), // Green Rupee (Chest Game) + [GI_RUPEE_BLUE_LOSE] = ITEM_ROW(0x4D, BROWN_CHEST, 0x85, -1, 0x00F5, 0x017F, 0x6E, no_upgrade, no_effect, -1, -1, NULL), // Blue Rupee (Chest Game) + [GI_RUPEE_RED_LOSE] = ITEM_ROW(0x4D, BROWN_CHEST, 0x86, -1, 0x00F6, 0x017F, 0x6F, no_upgrade, no_effect, -1, -1, NULL), // Red Rupee (Chest Game) + [GI_RUPEE_PURPLE_LOSE] = ITEM_ROW(0x4D, BROWN_CHEST, 0x87, -1, 0x00F7, 0x017F, 0x71, no_upgrade, no_effect, -1, -1, NULL), // Purple Rupee (Chest Game) + [GI_HEART_PIECE_WIN] = ITEM_ROW(0x53, HEART_CHEST_SMALL, 0x7A, -1, 0x00FA, 0x00BD, 0x14, health_upgrade_cap, full_heal, -1, -1, NULL), // Piece of Heart (Chest Game) + [GI_DEKU_STICK_UPGRADE_20] = ITEM_ROW(0x53, BROWN_CHEST, 0x98, -1, 0x0090, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Stick Upgrade (20) + [GI_DEKU_STICK_UPGRADE_30] = ITEM_ROW(0x53, BROWN_CHEST, 0x99, -1, 0x0091, 0x00C7, 0x1B, no_upgrade, no_effect, -1, -1, NULL), // Deku Stick Upgrade (30) + [GI_DEKU_NUT_UPGRADE_30] = ITEM_ROW(0x53, BROWN_CHEST, 0x9A, -1, 0x00A7, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nut Upgrade (30) + [GI_DEKU_NUT_UPGRADE_40] = ITEM_ROW(0x53, BROWN_CHEST, 0x9B, -1, 0x00A8, 0x00BB, 0x12, no_upgrade, no_effect, -1, -1, NULL), // Deku Nut Upgrade (40) + [GI_BULLET_BAG_50] = ITEM_ROW(0x53, GILDED_CHEST, 0x49, -1, 0x006C, 0x017B, 0x73, no_upgrade, no_effect, -1, -1, NULL), // Bullet Bag (50) + [GI_ICE_TRAP] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9002, 0x0000, 0x00, no_upgrade, ice_trap_effect, -1, -1, NULL), // Ice Trap + + [GI_CAPPED_PIECE_OF_HEART] = ITEM_ROW(0x3E, HEART_CHEST_SMALL, 0x41, -1, 0x90C2, 0x00BD, 0x14, no_upgrade, full_heal, -1, -1, NULL), // Capped Piece of Heart + [GI_CAPPED_HEART_CONTAINER] = ITEM_ROW(0x3E, HEART_CHEST_SMALL, 0x41, -1, 0x90C6, 0x00BD, 0x13, no_upgrade, full_heal, -1, -1, NULL), // Capped Heart Container + [GI_CAPPED_PIECE_OF_HEART_CHESTGAME] = ITEM_ROW(0x53, HEART_CHEST_SMALL, 0x41, -1, 0x90FA, 0x00BD, 0x14, no_upgrade, full_heal, -1, -1, NULL), // Capped Piece of Heart (Chest Game) + + [GI_PROGRESSIVE_HOOKSHOT] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00DD, 0x2D, hookshot_upgrade, no_effect, -1, -1, NULL), // Progressive Hookshot + [GI_PROGRESSIVE_STRENGTH] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x0147, 0x58, strength_upgrade, no_effect, -1, -1, NULL), // Progressive Strength + [GI_PROGRESSIVE_BOMB_BAG] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00BF, 0x18, bomb_bag_upgrade, no_effect, -1, -1, NULL), // Progressive Bomb Bag + [GI_PROGRESSIVE_BOW] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00E9, 0x35, bow_upgrade, no_effect, -1, -1, NULL), // Progressive Bow + [GI_PROGRESSIVE_SLINGSHOT] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00E7, 0x33, slingshot_upgrade, no_effect, -1, -1, NULL), // Progressive Slingshot + [GI_PROGRESSIVE_WALLET] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00D1, 0x22, wallet_upgrade, no_effect, -1, -1, NULL), // Progressive Wallet + [GI_PROGRESSIVE_SCALE] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00DB, 0x2A, scale_upgrade, no_effect, -1, -1, NULL), // Progressive Scale + [GI_PROGRESSIVE_NUT_CAPACITY] = ITEM_ROW( -1, BROWN_CHEST, -1, -1, -1, 0x00BB, 0x12, nut_upgrade, no_effect, -1, -1, NULL), // Progressive Nut Capacity + [GI_PROGRESSIVE_STICK_CAPACITY] = ITEM_ROW( -1, BROWN_CHEST, -1, -1, -1, 0x00C7, 0x1B, stick_upgrade, no_effect, -1, -1, NULL), // Progressive Stick Capacity + [GI_PROGRESSIVE_BOMBCHUS] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00D9, 0x28, bombchu_upgrade, no_effect, -1, -1, NULL), // Progressive Bombchus + [GI_PROGRESSIVE_MAGIC_METER] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x00CD, 0x1E, magic_upgrade, no_effect, -1, -1, NULL), // Progressive Magic Meter + [GI_PROGRESSIVE_OCARINA] = ITEM_ROW( -1, GILDED_CHEST, -1, -1, -1, 0x010E, 0x46, ocarina_upgrade, no_effect, -1, -1, NULL), // Progressive Ocarina + + [GI_BOTTLE_WITH_RED_POTION] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A0, 0x00C6, 0x01, no_upgrade, give_bottle, 0x15, -1, NULL), // Bottle with Red Potion + [GI_BOTTLE_WITH_GREEN_POTION] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A1, 0x00C6, 0x01, no_upgrade, give_bottle, 0x16, -1, NULL), // Bottle with Green Potion + [GI_BOTTLE_WITH_BLUE_POTION] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A2, 0x00C6, 0x01, no_upgrade, give_bottle, 0x17, -1, NULL), // Bottle with Blue Potion + [GI_BOTTLE_WITH_FAIRY] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A3, 0x0177, 0x6B, no_upgrade, give_bottle, 0x18, -1, NULL), // Bottle with Fairy + [GI_BOTTLE_WITH_FISH] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A4, 0x00F4, 0x3F, no_upgrade, give_bottle, 0x19, -1, NULL), // Bottle with Fish + [GI_BOTTLE_WITH_BLUE_FIRE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A5, 0x0173, 0x67, no_upgrade, give_bottle, 0x1C, -1, NULL), // Bottle with Blue Fire + [GI_BOTTLE_WITH_BUGS] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A6, 0x0174, 0x68, no_upgrade, give_bottle, 0x1D, -1, NULL), // Bottle with Bugs + [GI_BOTTLE_WITH_BIG_POE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A7, 0x0176, 0x70, no_upgrade, give_bottle, 0x1E, -1, NULL), // Bottle with Big Poe + [GI_BOTTLE_WITH_POE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x90A8, 0x0176, 0x6A, no_upgrade, give_bottle, 0x20, -1, NULL), // Bottle with Poe + + [GI_BOSS_KEY_FOREST_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0006, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, FOREST_ID, NULL), // Forest Temple Boss Key + [GI_BOSS_KEY_FIRE_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001C, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, FIRE_ID, NULL), // Fire Temple Boss Key + [GI_BOSS_KEY_WATER_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001D, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, WATER_ID, NULL), // Water Temple Boss Key + [GI_BOSS_KEY_SPIRIT_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001E, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, SPIRIT_ID, NULL), // Spirit Temple Boss Key + [GI_BOSS_KEY_SHADOW_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x002A, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, SHADOW_ID, NULL), // Shadow Temple Boss Key + [GI_BOSS_KEY_GANONS_CASTLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0061, 0x00B9, 0x0A, upgrade_key_model, give_dungeon_item, 0x01, TOWER_ID, NULL), // Ganon's Castle Boss Key + + [GI_COMPASS_DEKU_TREE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0062, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, DEKU_ID, NULL), // Deku Tree Compass + [GI_COMPASS_DODONGOS_CAVERN] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0063, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, DODONGO_ID, NULL), // Dodongo's Cavern Compass + [GI_COMPASS_JABU_JABU] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0064, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, JABU_ID, NULL), // Jabu Jabu Compass + [GI_COMPASS_FOREST_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0065, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, FOREST_ID, NULL), // Forest Temple Compass + [GI_COMPASS_FIRE_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007C, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, FIRE_ID, NULL), // Fire Temple Compass + [GI_COMPASS_WATER_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007D, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, WATER_ID, NULL), // Water Temple Compass + [GI_COMPASS_SPIRIT_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007E, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, SPIRIT_ID, NULL), // Spirit Temple Compass + [GI_COMPASS_SHADOW_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x007F, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, SHADOW_ID, NULL), // Shadow Temple Compass + [GI_COMPASS_BOTTOM_OF_THE_WELL] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x00A2, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, BOTW_ID, NULL), // Bottom of the Well Compass + [GI_COMPASS_ICE_CAVERN] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0087, 0x00B8, 0x0B, no_upgrade, give_dungeon_item, 0x02, ICE_ID, NULL), // Ice Cavern Compass + + [GI_MAP_DEKU_TREE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0088, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, DEKU_ID, NULL), // Deku Tree Map + [GI_MAP_DODONGOS_CAVERN] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0089, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, DODONGO_ID, NULL), // Dodongo's Cavern Map + [GI_MAP_JABU_JABU] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008A, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, JABU_ID, NULL), // Jabu Jabu Map + [GI_MAP_FOREST_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008B, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, FOREST_ID, NULL), // Forest Temple Map + [GI_MAP_FIRE_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008C, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, FIRE_ID, NULL), // Fire Temple Map + [GI_MAP_WATER_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008E, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, WATER_ID, NULL), // Water Temple Map + [GI_MAP_SPIRIT_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x008F, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, SPIRIT_ID, NULL), // Spirit Temple Map + [GI_MAP_SHADOW_TEMPLE] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x00A3, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, SHADOW_ID, NULL), // Shadow Temple Map + [GI_MAP_BOTTOM_OF_THE_WELL] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x00A5, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, BOTW_ID, NULL), // Bottom of the Well Map + [GI_MAP_ICE_CAVERN] = ITEM_ROW(0x53, BROWN_CHEST, 0x41, -1, 0x0092, 0x00C8, 0x1C, no_upgrade, give_dungeon_item, 0x04, ICE_ID, NULL), // Ice Cavern Map + + [GI_SMALL_KEY_FOREST_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0093, 0x00AA, 0x02, upgrade_key_model, give_small_key, FOREST_ID, -1, resolve_text_small_keys), // Forest Temple Small Key + [GI_SMALL_KEY_FIRE_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0094, 0x00AA, 0x02, upgrade_key_model, give_small_key, FIRE_ID, -1, resolve_text_small_keys), // Fire Temple Small Key + [GI_SMALL_KEY_WATER_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0095, 0x00AA, 0x02, upgrade_key_model, give_small_key, WATER_ID, -1, resolve_text_small_keys), // Water Temple Small Key + [GI_SMALL_KEY_SPIRIT_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A6, 0x00AA, 0x02, upgrade_key_model, give_small_key, SPIRIT_ID, -1, resolve_text_small_keys), // Spirit Temple Small Key + [GI_SMALL_KEY_SHADOW_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A9, 0x00AA, 0x02, upgrade_key_model, give_small_key, SHADOW_ID, -1, resolve_text_small_keys), // Shadow Temple Small Key + [GI_SMALL_KEY_BOTTOM_OF_THE_WELL] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009B, 0x00AA, 0x02, upgrade_key_model, give_small_key, BOTW_ID, -1, resolve_text_small_keys), // Bottom of the Well Small Key + [GI_SMALL_KEY_GERUDO_TRAINING] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009F, 0x00AA, 0x02, upgrade_key_model, give_small_key, GTG_ID, -1, resolve_text_small_keys), // Gerudo Training Small Key + [GI_SMALL_KEY_THIEVES_HIDEOUT] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A0, 0x00AA, 0x02, upgrade_key_model, give_small_key, FORT_ID, -1, resolve_text_small_keys), // Thieves' Hideout Small Key + [GI_SMALL_KEY_GANONS_CASTLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A1, 0x00AA, 0x02, upgrade_key_model, give_small_key, CASTLE_ID, -1, resolve_text_small_keys), // Ganon's Castle Small Key + + [GI_DOUBLE_DEFENSE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00E9, 0x0194, 0x13, no_upgrade, give_defense, -1, -1, NULL), // Double Defense + [GI_MAGIC_METER] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00E4, 0x00CD, 0x1E, no_upgrade, give_magic, -1, -1, NULL), // Magic Meter + [GI_DOUBLE_MAGIC] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00E8, 0x00CD, 0x1F, no_upgrade, give_double_magic, -1, -1, NULL), // Double Magic + + [GI_MINUET_OF_FOREST] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9091, 0x0196, 0x78, no_upgrade, give_song, 6, -1, NULL), // Minuet of Forest + [GI_BOLERO_OF_FIRE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9092, 0x0196, 0x79, no_upgrade, give_song, 7, -1, NULL), // Bolero of Fire + [GI_SERENADE_OF_WATER] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9093, 0x0196, 0x7A, no_upgrade, give_song, 8, -1, NULL), // Serenade of Water + [GI_REQUIEM_OF_SPIRIT] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9094, 0x0196, 0x7B, no_upgrade, give_song, 9, -1, NULL), // Requiem of Spirit + [GI_NOCTURN_OF_SHADOW] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9095, 0x0196, 0x7C, no_upgrade, give_song, 10, -1, NULL), // Nocturn of Shadow + [GI_PRELUDE_OF_LIGHT] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9096, 0x0196, 0x7D, no_upgrade, give_song, 11, -1, NULL), // Prelude of Light + + [GI_ZELDAS_LULLABY] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909A, 0x00B6, 0x04, no_upgrade, give_song, 12, -1, NULL), // Zelda's Lullaby + [GI_EPONAS_SONG] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909B, 0x00B6, 0x06, no_upgrade, give_song, 13, -1, NULL), // Epona's Song + [GI_SARIAS_SONG] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909C, 0x00B6, 0x03, no_upgrade, give_song, 14, -1, NULL), // Saria's Song + [GI_SUNS_SONG] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909D, 0x00B6, 0x08, no_upgrade, give_song, 15, -1, NULL), // Sun's Song + [GI_SONG_OF_TIME] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909E, 0x00B6, 0x05, no_upgrade, give_song, 16, -1, NULL), // Song of Time + [GI_SONG_OF_STORMS] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909F, 0x00B6, 0x07, no_upgrade, give_song, 17, -1, NULL), // Song of Storms + + [GI_TYCOONS_WALLET] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x00F8, 0x00D1, 0x23, no_upgrade, give_tycoon_wallet, 3, -1, NULL), // Tycoon's Wallet + [GI_REDUNDANT_LETTER_BOTTLE] = ITEM_ROW(0x53, GILDED_CHEST, 0x14, -1, 0x9099, 0x010B, 0x45, no_upgrade, no_effect, -1, -1, NULL), // Redundant Letter Bottle + [GI_MAGIC_BEAN_PACK] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9048, 0x00F3, 0x3E, no_upgrade, give_bean_pack, -1, -1, NULL), // Magic Bean Pack + [GI_TRIFORCE_PIECE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9003, 0x0193, 0x76, no_upgrade, give_triforce_piece, -1, -1, NULL), // Triforce piece + + [GI_SMALL_KEY_RING_FOREST_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, FOREST_ID, -1, resolve_text_keyrings), // Forest Temple Small Key Ring + [GI_SMALL_KEY_RING_FIRE_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, FIRE_ID, -1, resolve_text_keyrings), // Fire Temple Small Key Ring + [GI_SMALL_KEY_RING_WATER_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, WATER_ID, -1, resolve_text_keyrings), // Water Temple Small Key Ring + [GI_SMALL_KEY_RING_SPIRIT_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, SPIRIT_ID, -1, resolve_text_keyrings), // Spirit Temple Small Key Ring + [GI_SMALL_KEY_RING_SHADOW_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, SHADOW_ID, -1, resolve_text_keyrings), // Shadow Temple Small Key Ring + [GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, BOTW_ID, -1, resolve_text_keyrings), // Bottom of the Well Small Key Ring + [GI_SMALL_KEY_RING_GERUDO_TRAINING] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, GTG_ID, -1, resolve_text_keyrings), // Gerudo Training Small Key Ring + [GI_SMALL_KEY_RING_THIEVES_HIDEOUT] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, FORT_ID, -1, resolve_text_keyrings), // Thieves' Hideout Small Key Ring + [GI_SMALL_KEY_RING_GANONS_CASTLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, CASTLE_ID, -1, resolve_text_keyrings), // Ganon's Castle Small Key Ring + + [GI_BOMBCHU_BAG_20] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9019, 0x0197, 0x7E, no_upgrade, give_bombchus, 20, -1, NULL), // Bombchu Bag (20) + [GI_BOMBCHU_BAG_10] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9019, 0x0197, 0x7E, no_upgrade, give_bombchus, 10, -1, NULL), // Bombchu Bag (10) + [GI_BOMBCHU_BAG_5] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9019, 0x0197, 0x7E, no_upgrade, give_bombchus, 5, -1, NULL), // Bombchu Bag (5) + + [GI_SMALL_KEY_RING_TREASURE_CHEST_GAME] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x9200, 0x0195, 0x77, no_upgrade, give_small_key_ring, TCG_ID, -1, resolve_text_keyrings), // Treasure Chest Game Small Key Ring + + [GI_SILVER_RUPEE_DODONGOS_CAVERN_STAIRCASE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901B, 0x0198, 0x72, no_upgrade, give_silver_rupee, DODONGO_ID, 0x00, resolve_text_silver_rupees), // Silver Rupee (Dodongos Cavern Staircase) + [GI_SILVER_RUPEE_ICE_CAVERN_SPINNING_SCYTHE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901C, 0x0198, 0x72, no_upgrade, give_silver_rupee, ICE_ID, 0x01, resolve_text_silver_rupees), // Silver Rupee (Ice Cavern Spinning Scythe) + [GI_SILVER_RUPEE_ICE_CAVERN_PUSH_BLOCK] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901D, 0x0198, 0x72, no_upgrade, give_silver_rupee, ICE_ID, 0x02, resolve_text_silver_rupees), // Silver Rupee (Ice Cavern Push Block) + [GI_SILVER_RUPEE_BOTTOM_OF_THE_WELL_BASEMENT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901E, 0x0198, 0x72, no_upgrade, give_silver_rupee, BOTW_ID, 0x03, resolve_text_silver_rupees), // Silver Rupee (Bottom of the Well Basement) + [GI_SILVER_RUPEE_SHADOW_TEMPLE_SCYTHE_SHORTCUT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x901F, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x04, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Scythe Shortcut) + [GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_BLADES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9020, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x05, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Invisible Blades) + [GI_SILVER_RUPEE_SHADOW_TEMPLE_HUGE_PIT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9021, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x06, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Huge Pit) + [GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_SPIKES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9022, 0x0198, 0x72, no_upgrade, give_silver_rupee, SHADOW_ID, 0x07, resolve_text_silver_rupees), // Silver Rupee (Shadow Temple Invisible Spikes) + [GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_SLOPES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9023, 0x0198, 0x72, no_upgrade, give_silver_rupee, GTG_ID, 0x08, resolve_text_silver_rupees), // Silver Rupee (Gerudo Training Ground Slopes) + [GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_LAVA] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9024, 0x0198, 0x72, no_upgrade, give_silver_rupee, GTG_ID, 0x09, resolve_text_silver_rupees), // Silver Rupee (Gerudo Training Ground Lava) + [GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_WATER] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9025, 0x0198, 0x72, no_upgrade, give_silver_rupee, GTG_ID, 0x0A, resolve_text_silver_rupees), // Silver Rupee (Gerudo Training Ground Water) + [GI_SILVER_RUPEE_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9026, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0B, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Child Early Torches) + [GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_BOULDERS] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9027, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0C, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Adult Boulders) + [GI_SILVER_RUPEE_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9028, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0D, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Lobby and Lower Adult) + [GI_SILVER_RUPEE_SPIRIT_TEMPLE_SUN_BLOCK] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9029, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0E, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Sun Block) + [GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_CLIMB] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902A, 0x0198, 0x72, no_upgrade, give_silver_rupee, SPIRIT_ID, 0x0F, resolve_text_silver_rupees), // Silver Rupee (Spirit Temple Adult Climb) + [GI_SILVER_RUPEE_GANONS_CASTLE_SPIRIT_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902B, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x10, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Spirit Trial) + [GI_SILVER_RUPEE_GANONS_CASTLE_LIGHT_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902C, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x11, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Light Trial) + [GI_SILVER_RUPEE_GANONS_CASTLE_FIRE_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902D, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x12, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Fire Trial) + [GI_SILVER_RUPEE_GANONS_CASTLE_SHADOW_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902E, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x13, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Shadow Trial) + [GI_SILVER_RUPEE_GANONS_CASTLE_WATER_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x902F, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x14, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Water Trial) + [GI_SILVER_RUPEE_GANONS_CASTLE_FOREST_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x85, -1, 0x9030, 0x0198, 0x72, no_upgrade, give_silver_rupee, CASTLE_ID, 0x15, resolve_text_silver_rupees), // Silver Rupee (Ganons Castle Forest Trial) + + [GI_SILVER_RUPEE_POUCH_DODONGOS_CAVERN_STAIRCASE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901B, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, DODONGO_ID, 0x00, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Dodongos Cavern Staircase) + [GI_SILVER_RUPEE_POUCH_ICE_CAVERN_SPINNING_SCYTHE] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901C, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, ICE_ID, 0x01, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ice Cavern Spinning Scythe) + [GI_SILVER_RUPEE_POUCH_ICE_CAVERN_PUSH_BLOCK] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901D, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, ICE_ID, 0x02, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ice Cavern Push Block) + [GI_SILVER_RUPEE_POUCH_BOTTOM_OF_THE_WELL_BASEMENT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901E, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, BOTW_ID, 0x03, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Bottom of the Well Basement) + [GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_SCYTHE_SHORTCUT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x901F, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x04, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Scythe Shortcut) + [GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_BLADES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9020, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x05, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Invisible Blades) + [GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_HUGE_PIT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9021, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x06, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Huge Pit) + [GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_SPIKES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9022, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SHADOW_ID, 0x07, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Shadow Temple Invisible Spikes) + [GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_SLOPES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9023, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, GTG_ID, 0x08, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Gerudo Training Ground Slopes) + [GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_LAVA] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9024, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, GTG_ID, 0x09, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Gerudo Training Ground Lava) + [GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_WATER] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9025, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, GTG_ID, 0x0A, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Gerudo Training Ground Water) + [GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9026, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0B, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Child Early Torches) + [GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_BOULDERS] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9027, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0C, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Adult Boulders) + [GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9028, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0D, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Lobby and Lower Adult) + [GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_SUN_BLOCK] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9029, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0E, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Sun Block) + [GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_CLIMB] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902A, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, SPIRIT_ID, 0x0F, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Spirit Temple Adult Climb) + [GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SPIRIT_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902B, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x10, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Spirit Trial) + [GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_LIGHT_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902C, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x11, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Light Trial) + [GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FIRE_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902D, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x12, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Fire Trial) + [GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SHADOW_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902E, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x13, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Shadow Trial) + [GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_WATER_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x902F, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x14, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Water Trial) + [GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FOREST_TRIAL] = ITEM_ROW(0x4D, SILVER_CHEST, 0x41, -1, 0x9030, 0x00D1, 0x7F, no_upgrade, give_silver_rupee_pouch, CASTLE_ID, 0x15, resolve_text_silver_rupee_pouches), // Silver Rupee Pouch (Ganons Castle Forest Trial) // Ocarina button models - [0x0104] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908C, 0x01A8, 0x90, no_upgrade, unlock_ocarina_note, 0, -1, NULL), // Ocarina A - [0x0105] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908D, 0x01AA, 0x91, no_upgrade, unlock_ocarina_note, 1, -1, NULL), // Ocarina C up - [0x0106] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908E, 0x01AA, 0x92, no_upgrade, unlock_ocarina_note, 2, -1, NULL), // Ocarina C down - [0x0107] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908F, 0x01A9, 0x93, no_upgrade, unlock_ocarina_note, 3, -1, NULL), // Ocarina C left - [0x0108] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9090, 0x01A9, 0x94, no_upgrade, unlock_ocarina_note, 4, -1, NULL), // Ocarina C right + [GI_OCARINA_BUTTON_A] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908C, 0x01A8, 0x90, no_upgrade, unlock_ocarina_note, 0, -1, NULL), // Ocarina A + [GI_OCARINA_BUTTON_C_UP] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908D, 0x01AA, 0x91, no_upgrade, unlock_ocarina_note, 1, -1, NULL), // Ocarina C up + [GI_OCARINA_BUTTON_C_DOWN] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908E, 0x01AA, 0x92, no_upgrade, unlock_ocarina_note, 2, -1, NULL), // Ocarina C down + [GI_OCARINA_BUTTON_C_LEFT] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x908F, 0x01A9, 0x93, no_upgrade, unlock_ocarina_note, 3, -1, NULL), // Ocarina C left + [GI_OCARINA_BUTTON_C_RIGHT] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9090, 0x01A9, 0x94, no_upgrade, unlock_ocarina_note, 4, -1, NULL), // Ocarina C right // Custom Key Models - [0x0109] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0006, 0x01A3, 0x8A, no_upgrade, give_dungeon_item, 0x01, FOREST_ID, NULL ), // Forest Temple Boss Key - [0x010A] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001C, 0x01A4, 0x8B, no_upgrade, give_dungeon_item, 0x01, FIRE_ID, NULL ), // Fire Temple Boss Key - [0x010B] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001D, 0x01A5, 0x8C, no_upgrade, give_dungeon_item, 0x01, WATER_ID, NULL ), // Water Temple Boss Key - [0x010C] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001E, 0x01A6, 0x8D, no_upgrade, give_dungeon_item, 0x01, SPIRIT_ID, NULL ), // Spirit Temple Boss Key - [0x010D] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x002A, 0x01A7, 0x8E, no_upgrade, give_dungeon_item, 0x01, SHADOW_ID, NULL ), // Shadow Temple Boss Key - [0x010E] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0061, 0x00B9, 0x8F, no_upgrade, give_dungeon_item, 0x01, TOWER_ID, NULL ), // Ganon's Castle Boss Key - [0x010F] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0093, 0x0199, 0x80, no_upgrade, give_small_key, FOREST_ID, -1, resolve_text_small_keys), // Forest Temple Small Key - [0x0110] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0094, 0x019A, 0x81, no_upgrade, give_small_key, FIRE_ID, -1, resolve_text_small_keys), // Fire Temple Small Key - [0x0111] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0095, 0x019B, 0x82, no_upgrade, give_small_key, WATER_ID, -1, resolve_text_small_keys), // Water Temple Small Key - [0x0112] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A6, 0x019C, 0x83, no_upgrade, give_small_key, SPIRIT_ID, -1, resolve_text_small_keys), // Spirit Temple Small Key - [0x0113] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A9, 0x019D, 0x84, no_upgrade, give_small_key, SHADOW_ID, -1, resolve_text_small_keys), // Shadow Temple Small Key - [0x0114] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009B, 0x019E, 0x85, no_upgrade, give_small_key, BOTW_ID, -1, resolve_text_small_keys), // Bottom of the Well Small Key - [0x0115] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009F, 0x019F, 0x86, no_upgrade, give_small_key, GTG_ID, -1, resolve_text_small_keys), // Gerudo Training Small Key - [0x0116] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A0, 0x01A0, 0x87, no_upgrade, give_small_key, FORT_ID, -1, resolve_text_small_keys), // Thieves' Hideout Small Key - [0x0117] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A1, 0x01A1, 0x88, no_upgrade, give_small_key, CASTLE_ID, -1, resolve_text_small_keys), // Ganon's Castle Small Key - [0x0118] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x913E, 0x01A2, 0x89, no_upgrade, give_small_key, TCG_ID, -1, resolve_text_small_keys_cmg), // Small Key (Chest Game) + [GI_BOSS_KEY_MODEL_FOREST_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0006, 0x01A3, 0x8A, no_upgrade, give_dungeon_item, 0x01, FOREST_ID, NULL ), // Forest Temple Boss Key + [GI_BOSS_KEY_MODEL_FIRE_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001C, 0x01A4, 0x8B, no_upgrade, give_dungeon_item, 0x01, FIRE_ID, NULL ), // Fire Temple Boss Key + [GI_BOSS_KEY_MODEL_WATER_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001D, 0x01A5, 0x8C, no_upgrade, give_dungeon_item, 0x01, WATER_ID, NULL ), // Water Temple Boss Key + [GI_BOSS_KEY_MODEL_SPIRIT_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x001E, 0x01A6, 0x8D, no_upgrade, give_dungeon_item, 0x01, SPIRIT_ID, NULL ), // Spirit Temple Boss Key + [GI_BOSS_KEY_MODEL_SHADOW_TEMPLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x002A, 0x01A7, 0x8E, no_upgrade, give_dungeon_item, 0x01, SHADOW_ID, NULL ), // Shadow Temple Boss Key + [GI_BOSS_KEY_MODEL_GANONS_CASTLE] = ITEM_ROW(0x53, GOLD_CHEST, 0x41, -1, 0x0061, 0x00B9, 0x8F, no_upgrade, give_dungeon_item, 0x01, TOWER_ID, NULL ), // Ganon's Castle Boss Key + [GI_SMALL_KEY_MODEL_FOREST_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0093, 0x0199, 0x80, no_upgrade, give_small_key, FOREST_ID, -1, resolve_text_small_keys), // Forest Temple Small Key + [GI_SMALL_KEY_MODEL_FIRE_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0094, 0x019A, 0x81, no_upgrade, give_small_key, FIRE_ID, -1, resolve_text_small_keys), // Fire Temple Small Key + [GI_SMALL_KEY_MODEL_WATER_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x0095, 0x019B, 0x82, no_upgrade, give_small_key, WATER_ID, -1, resolve_text_small_keys), // Water Temple Small Key + [GI_SMALL_KEY_MODEL_SPIRIT_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A6, 0x019C, 0x83, no_upgrade, give_small_key, SPIRIT_ID, -1, resolve_text_small_keys), // Spirit Temple Small Key + [GI_SMALL_KEY_MODEL_SHADOW_TEMPLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A9, 0x019D, 0x84, no_upgrade, give_small_key, SHADOW_ID, -1, resolve_text_small_keys), // Shadow Temple Small Key + [GI_SMALL_KEY_MODEL_BOTTOM_OF_THE_WELL] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009B, 0x019E, 0x85, no_upgrade, give_small_key, BOTW_ID, -1, resolve_text_small_keys), // Bottom of the Well Small Key + [GI_SMALL_KEY_MODEL_GERUDO_TRAINING] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x009F, 0x019F, 0x86, no_upgrade, give_small_key, GTG_ID, -1, resolve_text_small_keys), // Gerudo Training Small Key + [GI_SMALL_KEY_MODEL_THIEVES_HIDEOUT] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A0, 0x01A0, 0x87, no_upgrade, give_small_key, FORT_ID, -1, resolve_text_small_keys), // Thieves' Hideout Small Key + [GI_SMALL_KEY_MODEL_GANONS_CASTLE] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x00A1, 0x01A1, 0x88, no_upgrade, give_small_key, CASTLE_ID, -1, resolve_text_small_keys), // Ganon's Castle Small Key + [GI_SMALL_KEY_MODEL_CHEST_GAME] = ITEM_ROW(0x53, SILVER_CHEST, 0x41, -1, 0x913E, 0x01A2, 0x89, no_upgrade, give_small_key, TCG_ID, -1, resolve_text_small_keys_cmg), // Small Key (Chest Game) }; From 3749bf406764a5f0d2bb2916ce91e38ef92f6601 Mon Sep 17 00:00:00 2001 From: Angie Date: Mon, 16 Oct 2023 00:18:28 -0300 Subject: [PATCH 3/9] use enum in item_upgrades --- ASM/c/item_table.c | 8 ++-- ASM/c/item_upgrades.c | 101 +++++++++++++++++++++--------------------- 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/ASM/c/item_table.c b/ASM/c/item_table.c index 8c9532c1a..3cc18278d 100644 --- a/ASM/c/item_table.c +++ b/ASM/c/item_table.c @@ -421,14 +421,14 @@ uint16_t resolve_text_small_keys_cmg(item_row_t *item_row, uint16_t item_id, boo uint16_t resolve_text_keyrings(item_row_t *item_row, uint16_t item_id, bool is_outgoing) { int16_t dungeon_id = item_row->effect_arg1; - if (item_id >= 0x00CB && item_id < 0x00D0 && KEYRING_BOSSKEY_CONDITION) { + if (item_id >= GI_SMALL_KEY_RING_FOREST_TEMPLE && item_id < GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL && KEYRING_BOSSKEY_CONDITION) { return item_row->text_id + dungeon_id + 14; } return item_row->text_id + dungeon_id; } item_row_t *get_item_row(uint16_t item_id) { - if (item_id >= array_size(item_table)) { + if (item_id >= GI_RANDO_MAX) { return NULL; } item_row_t *item_row = &(item_table[item_id]); @@ -441,11 +441,11 @@ item_row_t *get_item_row(uint16_t item_id) { /* uint16_t resolve_item_text_id(uint16_t item_id, bool is_outgoing) { item_row_t *item_row = get_item_row(item_id); - if ((item_id >= 0xAF && item_id < 0xB8) || (item_id >= 0x10F && item_id < 0x118) || (SHUFFLE_CHEST_GAME && (item_id == 0x71 || item_id == 0x118)) && !is_outgoing) { + if ((item_id >= GI_SMALL_KEY_FOREST_TEMPLE && item_id <= GI_SMALL_KEY_GANONS_CASTLE) || (item_id >= GI_SMALL_KEY_MODEL_FOREST_TEMPLE && item_id <= GI_SMALL_KEY_MODEL_GANONS_CASTLE) || (SHUFFLE_CHEST_GAME && (item_id == GI_DOOR_KEY || item_id == GI_SMALL_KEY_MODEL_CHEST_GAME)) && !is_outgoing) { return item_row->text_id + (z64_file.scene_flags[item_row->effect_arg1].unk_00_ >> 0x10); // Dynamically select the text box based on key count } // Change message for key rings when they include boss keys - if (item_id >= 0x00CB && item_id < 0x00D0 && KEYRING_BOSSKEY_CONDITION) { + if (item_id >= GI_SMALL_KEY_RING_FOREST_TEMPLE && item_id <= GI_SMALL_KEY_RING_SHADOW_TEMPLE && KEYRING_BOSSKEY_CONDITION) { return item_row->text_id + 9; } return item_row->text_id; diff --git a/ASM/c/item_upgrades.c b/ASM/c/item_upgrades.c index 8c98c1426..20073ba44 100644 --- a/ASM/c/item_upgrades.c +++ b/ASM/c/item_upgrades.c @@ -1,6 +1,7 @@ #include "item_upgrades.h" #include "get_items.h" +#include "item_table.h" #include "z64.h" extern uint32_t FREE_BOMBCHU_DROPS; @@ -36,128 +37,128 @@ uint16_t no_upgrade(z64_file_t *save, override_t override) { uint16_t hookshot_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->items[Z64_SLOT_HOOKSHOT] : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].hookshot) { - case -1: case 0: return 0x08; // Hookshot - default: return 0x09; // Longshot + case -1: case 0: return GI_HOOKSHOT; // Hookshot + default: return GI_LONGSHOT; // Longshot } } uint16_t strength_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->strength_upgrade : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].strength) { - case 0: return 0x54; // Goron Bracelet - case 1: return 0x35; // Silver Gauntlets - default: return 0x36; // Gold Gauntlets + case 0: return GI_GORONS_BRACELET; // Goron Bracelet + case 1: return GI_SILVER_GAUNTLETS; // Silver Gauntlets + default: return GI_GOLD_GAUNTLETS; // Gold Gauntlets } } uint16_t bomb_bag_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->bomb_bag : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].bomb_bag) { - case 0: return 0x32; // Bomb Bag - case 1: return 0x33; // Bigger Bomb Bag - default: return 0x34; // Biggest Bomb Bag + case 0: return GI_BOMB_BAG_20; // Bomb Bag + case 1: return GI_BOMB_BAG_30; // Bigger Bomb Bag + default: return GI_BOMB_BAG_40; // Biggest Bomb Bag } } uint16_t bow_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->quiver : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].bow) { - case 0: return 0x04; // Bow - case 1: return 0x30; // Big Quiver - default: return 0x31; // Biggest Quiver + case 0: return GI_BOW; // Bow + case 1: return GI_QUIVER_40; // Big Quiver + default: return GI_QUIVER_50; // Biggest Quiver } } uint16_t slingshot_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->bullet_bag : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].slingshot) { - case 0: return 0x05; // Slingshot - case 1: return 0x60; // Bullet Bag (40) - default: return 0x7B; // Bullet Bag (50) + case 0: return GI_SLINGSHOT; // Slingshot + case 1: return GI_BULLET_BAG_40; // Bullet Bag (40) + default: return GI_BULLET_BAG_50; // Bullet Bag (50) } } uint16_t wallet_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->wallet : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].wallet) { - case 0: return 0x45; // Adult's Wallet - case 1: return 0x46; // Giant's Wallet - default: return 0xC7; // Tycoon's Wallet + case 0: return GI_WALLET_ADULT; // Adult's Wallet + case 1: return GI_WALLET_GIANT; // Giant's Wallet + default: return GI_TYCOONS_WALLET; // Tycoon's Wallet } } uint16_t scale_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->diving_upgrade : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].scale) { - case 0: return 0x37; // Silver Scale - default: return 0x38; // Gold Scale + case 0: return GI_SCALE_SILVER; // Silver Scale + default: return GI_SCALE_GOLDEN; // Gold Scale } } uint16_t nut_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->nut_upgrade : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].nuts) { - case 0: return 0x79; // 30 Nuts. 0 and 1 are both starting capacity - case 1: return 0x79; // 30 Nuts - default: return 0x7A; // 40 Nuts + case 0: return GI_DEKU_NUT_UPGRADE_30; // 30 Nuts. 0 and 1 are both starting capacity + case 1: return GI_DEKU_NUT_UPGRADE_30; // 30 Nuts + default: return GI_DEKU_NUT_UPGRADE_40; // 40 Nuts } } uint16_t stick_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->stick_upgrade : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].sticks) { - case 0: return 0x77; // 20 Sticks. 0 and 1 are both starting capacity - case 1: return 0x77; // 20 Sticks - default: return 0x78; // 30 Sticks + case 0: return GI_DEKU_STICK_UPGRADE_20; // 20 Sticks. 0 and 1 are both starting capacity + case 1: return GI_DEKU_STICK_UPGRADE_20; // 20 Sticks + default: return GI_DEKU_STICK_UPGRADE_30; // 30 Sticks } } uint16_t magic_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->magic_acquired : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].magic) { - case 0: return 0xB9; // Single Magic - default: return 0xBA; // Double Magic + case 0: return GI_MAGIC_METER; // Single Magic + default: return GI_DOUBLE_MAGIC; // Double Magic } } uint16_t bombchu_upgrade(z64_file_t *save, override_t override) { if (save->items[Z64_SLOT_BOMBCHU] == -1) { - return 0x6B; // Bombchu 20 pack + return GI_BOMBCHUS_20; // Bombchu 20 pack } if (save->ammo[8] <= 5) { - return 0x03; // Bombchu 10 pack + return GI_BOMBCHUS_10; // Bombchu 10 pack } - return 0x6A; // Bombchu 5 pack + return GI_BOMBCHUS_5; // Bombchu 5 pack } uint16_t ocarina_upgrade(z64_file_t *save, override_t override) { switch ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->items[Z64_SLOT_OCARINA] : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].ocarina) { - case -1: case 0: return 0x3B; // Fairy Ocarina - default: return 0x0C; // Ocarina of Time + case -1: case 0: return GI_OCARINA_FAIRY; // Fairy Ocarina + default: return GI_OCARINA_OF_TIME; // Ocarina of Time } } uint16_t arrows_to_rupee(z64_file_t *save, override_t override) { - return ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->quiver : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].bow) ? override.value.base.item_id : 0x4D; // Blue Rupee + return ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->quiver : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].bow) ? override.value.base.item_id : GI_RUPEE_BLUE; // Blue Rupee } uint16_t bombs_to_rupee(z64_file_t *save, override_t override) { - return ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->bomb_bag : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].bomb_bag) ? override.value.base.item_id : 0x4D; // Blue Rupee + return ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->bomb_bag : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].bomb_bag) ? override.value.base.item_id : GI_RUPEE_BLUE; // Blue Rupee } uint16_t seeds_to_rupee(z64_file_t *save, override_t override) { - return ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->bullet_bag : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].slingshot) ? override.value.base.item_id : 0x4D; // Blue Rupee + return ((override.value.base.player == PLAYER_ID || !MW_PROGRESSIVE_ITEMS_ENABLE) ? save->bullet_bag : MW_PROGRESSIVE_ITEMS_STATE[override.value.base.player].slingshot) ? override.value.base.item_id : GI_RUPEE_BLUE; // Blue Rupee } uint16_t letter_to_bottle(z64_file_t *save, override_t override) { if (save->event_chk_inf[3] & 0x0008) // "King Zora Moved Aside" - return 0xC8; // Redundant Letter Bottle + return GI_REDUNDANT_LETTER_BOTTLE; // Redundant Letter Bottle if (save->items[Z64_SLOT_BOTTLE_1] == 0x1B || save->items[Z64_SLOT_BOTTLE_2] == 0x1B || save->items[Z64_SLOT_BOTTLE_3] == 0x1B || save->items[Z64_SLOT_BOTTLE_4] == 0x1B) - return 0xC8; // Redundant Letter Bottle + return GI_REDUNDANT_LETTER_BOTTLE; // Redundant Letter Bottle return override.value.base.item_id; } uint16_t health_upgrade_cap(z64_file_t *save, override_t override) { if (save->energy_capacity >= 20 * 0x10) { // Already at capped health. - if (override.value.base.item_id == 0x76) { // Piece of Heart (Chest Game) - return 0x7F; + if (override.value.base.item_id == GI_HEART_PIECE_WIN) { // Piece of Heart (Chest Game) + return GI_CAPPED_PIECE_OF_HEART_CHESTGAME; } - if (override.value.base.item_id == 0x3D) { // Heart Container - return 0x7E; + if (override.value.base.item_id == GI_HEART_CONTAINER) { // Heart Container + return GI_CAPPED_HEART_CONTAINER; } - return 0x7D; // Piece of Heart / Fallthrough + return GI_CAPPED_PIECE_OF_HEART; // Piece of Heart / Fallthrough } return override.value.base.item_id; } @@ -168,9 +169,9 @@ uint16_t bombchus_to_bag(z64_file_t *save, override_t override) { // tell player about chu drops. Different bags // to preserve original chu refill count. switch (override.value.base.item_id) { - case 0x03: return 0xD5; // 10 pack - case 0x6A: return 0xD6; // 5 pack - case 0x6B: return 0xD4; // 20 pack + case GI_BOMBCHUS_10: return GI_BOMBCHU_BAG_10; // 10 pack + case GI_BOMBCHUS_5: return GI_BOMBCHU_BAG_5; // 5 pack + case GI_BOMBCHUS_20: return GI_BOMBCHU_BAG_20; // 20 pack } } else { // Subsequent chu packs stay as chu packs @@ -181,15 +182,15 @@ uint16_t bombchus_to_bag(z64_file_t *save, override_t override) { uint16_t upgrade_key_model(z64_file_t *save, override_t override) { uint16_t item_id = override.value.base.item_id; if (CUSTOM_KEY_MODELS) { - if (item_id == 0x0071) { + if (item_id == GI_DOOR_KEY) { // Treasure Chest Game Key - return 0x0118; - } else if (item_id < 0x00AF) { + return GI_SMALL_KEY_MODEL_CHEST_GAME; + } else if (item_id < GI_SMALL_KEY_FOREST_TEMPLE) { // Boss Keys - return item_id + 0x74; + return item_id + GI_BOSS_KEY_MODEL_FOREST_TEMPLE - GI_BOSS_KEY_FOREST_TEMPLE; } else { // Small Keys - return item_id + 0x60; + return item_id + GI_SMALL_KEY_MODEL_FOREST_TEMPLE - GI_SMALL_KEY_FOREST_TEMPLE; } } else { return item_id; From 3a678c210f0399a6e8315fe03e0337ef2317cfa6 Mon Sep 17 00:00:00 2001 From: Angie Date: Mon, 16 Oct 2023 01:12:11 -0300 Subject: [PATCH 4/9] most of the ItemList.py --- ItemList.py | 726 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 517 insertions(+), 209 deletions(-) diff --git a/ItemList.py b/ItemList.py index 22ecf1f1a..89767a061 100644 --- a/ItemList.py +++ b/ItemList.py @@ -1,6 +1,314 @@ from __future__ import annotations +from enum import IntEnum from typing import Optional, Any +class GetItemId(IntEnum): + GI_NONE = 0x0000, + GI_BOMBS_5 = 0x0001 + GI_DEKU_NUTS_5 = 0x0002 + GI_BOMBCHUS_10 = 0x0003 + GI_BOW = 0x0004 + GI_SLINGSHOT = 0x0005 + GI_BOOMERANG = 0x0006 + GI_DEKU_STICKS_1 = 0x0007 + GI_HOOKSHOT = 0x0008 + GI_LONGSHOT = 0x0009 + GI_LENS_OF_TRUTH = 0x000A + GI_ZELDAS_LETTER = 0x000B + GI_OCARINA_OF_TIME = 0x000C + GI_HAMMER = 0x000D + GI_COJIRO = 0x000E + GI_BOTTLE_EMPTY = 0x000F + GI_BOTTLE_POTION_RED = 0x0010 + GI_BOTTLE_POTION_GREEN = 0x0011 + GI_BOTTLE_POTION_BLUE = 0x0012 + GI_BOTTLE_FAIRY = 0x0013 + GI_BOTTLE_MILK_FULL = 0x0014 + GI_BOTTLE_RUTOS_LETTER = 0x0015 + GI_MAGIC_BEAN = 0x0016 + GI_MASK_SKULL = 0x0017 + GI_MASK_SPOOKY = 0x0018 + GI_CHICKEN = 0x0019 + GI_MASK_KEATON = 0x001A + GI_MASK_BUNNY_HOOD = 0x001B + GI_MASK_TRUTH = 0x001C + GI_POCKET_EGG = 0x001D + GI_POCKET_CUCCO = 0x001E + GI_ODD_MUSHROOM = 0x001F + GI_ODD_POTION = 0x0020 + GI_POACHERS_SAW = 0x0021 + GI_BROKEN_GORONS_SWORD = 0x0022 + GI_PRESCRIPTION = 0x0023 + GI_EYEBALL_FROG = 0x0024 + GI_EYE_DROPS = 0x0025 + GI_CLAIM_CHECK = 0x0026 + GI_SWORD_KOKIRI = 0x0027 + GI_SWORD_KNIFE = 0x0028 + GI_SHIELD_DEKU = 0x0029 + GI_SHIELD_HYLIAN = 0x002A + GI_SHIELD_MIRROR = 0x002B + GI_TUNIC_GORON = 0x002C + GI_TUNIC_ZORA = 0x002D + GI_BOOTS_IRON = 0x002E + GI_BOOTS_HOVER = 0x002F + GI_QUIVER_40 = 0x0030 + GI_QUIVER_50 = 0x0031 + GI_BOMB_BAG_20 = 0x0032 + GI_BOMB_BAG_30 = 0x0033 + GI_BOMB_BAG_40 = 0x0034 + GI_SILVER_GAUNTLETS = 0x0035 + GI_GOLD_GAUNTLETS = 0x0036 + GI_SCALE_SILVER = 0x0037 + GI_SCALE_GOLDEN = 0x0038 + GI_STONE_OF_AGONY = 0x0039 + GI_GERUDOS_CARD = 0x003A + GI_OCARINA_FAIRY = 0x003B + GI_DEKU_SEEDS_5 = 0x003C + GI_HEART_CONTAINER = 0x003D + GI_HEART_PIECE = 0x003E + GI_BOSS_KEY = 0x003F + GI_COMPASS = 0x0040 + GI_DUNGEON_MAP = 0x0041 + GI_SMALL_KEY = 0x0042 + GI_MAGIC_JAR_SMALL = 0x0043 + GI_MAGIC_JAR_LARGE = 0x0044 + GI_WALLET_ADULT = 0x0045 + GI_WALLET_GIANT = 0x0046 + GI_WEIRD_EGG = 0x0047 + GI_RECOVERY_HEART = 0x0048 + GI_ARROWS_5 = 0x0049 + GI_ARROWS_10 = 0x004A + GI_ARROWS_30 = 0x004B + GI_RUPEE_GREEN = 0x004C + GI_RUPEE_BLUE = 0x004D + GI_RUPEE_RED = 0x004E + GI_HEART_CONTAINER_2 = 0x004F + GI_MILK = 0x0050 + GI_MASK_GORON = 0x0051 + GI_MASK_ZORA = 0x0052 + GI_MASK_GERUDO = 0x0053 + GI_GORONS_BRACELET = 0x0054 + GI_RUPEE_PURPLE = 0x0055 + GI_RUPEE_GOLD = 0x0056 + GI_SWORD_BIGGORON = 0x0057 + GI_ARROW_FIRE = 0x0058 + GI_ARROW_ICE = 0x0059 + GI_ARROW_LIGHT = 0x005A + GI_SKULL_TOKEN = 0x005B + GI_DINS_FIRE = 0x005C + GI_FARORES_WIND = 0x005D + GI_NAYRUS_LOVE = 0x005E + GI_BULLET_BAG_30 = 0x005F + GI_BULLET_BAG_40 = 0x0060 + GI_DEKU_STICKS_5 = 0x0061 + GI_DEKU_STICKS_10 = 0x0062 + GI_DEKU_NUTS_5_2 = 0x0063 + GI_DEKU_NUTS_10 = 0x0064 + GI_BOMBS_1 = 0x0065 + GI_BOMBS_10 = 0x0066 + GI_BOMBS_20 = 0x0067 + GI_BOMBS_30 = 0x0068 + GI_DEKU_SEEDS_30 = 0x0069 + GI_BOMBCHUS_5 = 0x006A + GI_BOMBCHUS_20 = 0x006B + GI_BOTTLE_FISH = 0x006C + GI_BOTTLE_BUGS = 0x006D + GI_BOTTLE_BLUE_FIRE = 0x006E + GI_BOTTLE_POE = 0x006F + GI_BOTTLE_BIG_POE = 0x0070 + GI_DOOR_KEY = 0x0071 + GI_RUPEE_GREEN_LOSE = 0x0072 + GI_RUPEE_BLUE_LOSE = 0x0073 + GI_RUPEE_RED_LOSE = 0x0074 + GI_RUPEE_PURPLE_LOSE = 0x0075 + GI_HEART_PIECE_WIN = 0x0076 + GI_DEKU_STICK_UPGRADE_20 = 0x0077 + GI_DEKU_STICK_UPGRADE_30 = 0x0078 + GI_DEKU_NUT_UPGRADE_30 = 0x0079 + GI_DEKU_NUT_UPGRADE_40 = 0x007A + GI_BULLET_BAG_50 = 0x007B + GI_ICE_TRAP = 0x007C + GI_TEXT_0 = 0x007D, + GI_CAPPED_PIECE_OF_HEART = 0x007D + GI_VANILLA_MAX = 0x007E, + GI_CAPPED_HEART_CONTAINER = 0x007E + + GI_CAPPED_PIECE_OF_HEART_CHESTGAME = 0x007F + + GI_PROGRESSIVE_HOOKSHOT = 0x0080 + GI_PROGRESSIVE_STRENGTH = 0x0081 + GI_PROGRESSIVE_BOMB_BAG = 0x0082 + GI_PROGRESSIVE_BOW = 0x0083 + GI_PROGRESSIVE_SLINGSHOT = 0x0084 + GI_PROGRESSIVE_WALLET = 0x0085 + GI_PROGRESSIVE_SCALE = 0x0086 + GI_PROGRESSIVE_NUT_CAPACITY = 0x0087 + GI_PROGRESSIVE_STICK_CAPACITY = 0x0088 + GI_PROGRESSIVE_BOMBCHUS = 0x0089 + GI_PROGRESSIVE_MAGIC_METER = 0x008A + GI_PROGRESSIVE_OCARINA = 0x008B + + GI_BOTTLE_WITH_RED_POTION = 0x008C + GI_BOTTLE_WITH_GREEN_POTION = 0x008D + GI_BOTTLE_WITH_BLUE_POTION = 0x008E + GI_BOTTLE_WITH_FAIRY = 0x008F + GI_BOTTLE_WITH_FISH = 0x0090 + GI_BOTTLE_WITH_BLUE_FIRE = 0x0091 + GI_BOTTLE_WITH_BUGS = 0x0092 + GI_BOTTLE_WITH_BIG_POE = 0x0093 + GI_BOTTLE_WITH_POE = 0x0094 + + GI_BOSS_KEY_FOREST_TEMPLE = 0x0095 + GI_BOSS_KEY_FIRE_TEMPLE = 0x0096 + GI_BOSS_KEY_WATER_TEMPLE = 0x0097 + GI_BOSS_KEY_SPIRIT_TEMPLE = 0x0098 + GI_BOSS_KEY_SHADOW_TEMPLE = 0x0099 + GI_BOSS_KEY_GANONS_CASTLE = 0x009A + + GI_COMPASS_DEKU_TREE = 0x009B + GI_COMPASS_DODONGOS_CAVERN = 0x009C + GI_COMPASS_JABU_JABU = 0x009D + GI_COMPASS_FOREST_TEMPLE = 0x009E + GI_COMPASS_FIRE_TEMPLE = 0x009F + GI_COMPASS_WATER_TEMPLE = 0x00A0 + GI_COMPASS_SPIRIT_TEMPLE = 0x00A1 + GI_COMPASS_SHADOW_TEMPLE = 0x00A2 + GI_COMPASS_BOTTOM_OF_THE_WELL = 0x00A3 + GI_COMPASS_ICE_CAVERN = 0x00A4 + + GI_MAP_DEKU_TREE = 0x00A5 + GI_MAP_DODONGOS_CAVERN = 0x00A6 + GI_MAP_JABU_JABU = 0x00A7 + GI_MAP_FOREST_TEMPLE = 0x00A8 + GI_MAP_FIRE_TEMPLE = 0x00A9 + GI_MAP_WATER_TEMPLE = 0x00AA + GI_MAP_SPIRIT_TEMPLE = 0x00AB + GI_MAP_SHADOW_TEMPLE = 0x00AC + GI_MAP_BOTTOM_OF_THE_WELL = 0x00AD + GI_MAP_ICE_CAVERN = 0x00AE + + GI_SMALL_KEY_FOREST_TEMPLE = 0x00AF + GI_SMALL_KEY_FIRE_TEMPLE = 0x00B0 + GI_SMALL_KEY_WATER_TEMPLE = 0x00B1 + GI_SMALL_KEY_SPIRIT_TEMPLE = 0x00B2 + GI_SMALL_KEY_SHADOW_TEMPLE = 0x00B3 + GI_SMALL_KEY_BOTTOM_OF_THE_WELL = 0x00B4 + GI_SMALL_KEY_GERUDO_TRAINING = 0x00B5 + GI_SMALL_KEY_THIEVES_HIDEOUT = 0x00B6 + GI_SMALL_KEY_GANONS_CASTLE = 0x00B7 + + GI_DOUBLE_DEFENSE = 0x00B8 + GI_MAGIC_METER = 0x00B9 + GI_DOUBLE_MAGIC = 0x00BA + + GI_MINUET_OF_FOREST = 0x00BB + GI_BOLERO_OF_FIRE = 0x00BC + GI_SERENADE_OF_WATER = 0x00BD + GI_REQUIEM_OF_SPIRIT = 0x00BE + GI_NOCTURN_OF_SHADOW = 0x00BF + GI_PRELUDE_OF_LIGHT = 0x00C0 + + GI_ZELDAS_LULLABY = 0x00C1 + GI_EPONAS_SONG = 0x00C2 + GI_SARIAS_SONG = 0x00C3 + GI_SUNS_SONG = 0x00C4 + GI_SONG_OF_TIME = 0x00C5 + GI_SONG_OF_STORMS = 0x00C6 + + GI_TYCOONS_WALLET = 0x00C7 + GI_REDUNDANT_LETTER_BOTTLE = 0x00C8 + GI_MAGIC_BEAN_PACK = 0x00C9 + GI_TRIFORCE_PIECE = 0x00CA + + GI_SMALL_KEY_RING_FOREST_TEMPLE = 0x00CB + GI_SMALL_KEY_RING_FIRE_TEMPLE = 0x00CC + GI_SMALL_KEY_RING_WATER_TEMPLE = 0x00CD + GI_SMALL_KEY_RING_SPIRIT_TEMPLE = 0x00CE + GI_SMALL_KEY_RING_SHADOW_TEMPLE = 0x00CF + GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL = 0x00D0 + GI_SMALL_KEY_RING_GERUDO_TRAINING = 0x00D1 + GI_SMALL_KEY_RING_THIEVES_HIDEOUT = 0x00D2 + GI_SMALL_KEY_RING_GANONS_CASTLE = 0x00D3 + + GI_BOMBCHU_BAG_20 = 0x00D4 + GI_BOMBCHU_BAG_10 = 0x00D5 + GI_BOMBCHU_BAG_5 = 0x00D6 + + GI_SMALL_KEY_RING_TREASURE_CHEST_GAME = 0x00D7 + + GI_SILVER_RUPEE_DODONGOS_CAVERN_STAIRCASE = 0x00D8 + GI_SILVER_RUPEE_ICE_CAVERN_SPINNING_SCYTHE = 0x00D9 + GI_SILVER_RUPEE_ICE_CAVERN_PUSH_BLOCK = 0x00DA + GI_SILVER_RUPEE_BOTTOM_OF_THE_WELL_BASEMENT = 0x00DB + GI_SILVER_RUPEE_SHADOW_TEMPLE_SCYTHE_SHORTCUT = 0x00DC + GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_BLADES = 0x00DD + GI_SILVER_RUPEE_SHADOW_TEMPLE_HUGE_PIT = 0x00DE + GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_SPIKES = 0x00DF + GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_SLOPES = 0x00E0 + GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_LAVA = 0x00E1 + GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_WATER = 0x00E2 + GI_SILVER_RUPEE_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES = 0x00E3 + GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_BOULDERS = 0x00E4 + GI_SILVER_RUPEE_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT = 0x00E5 + GI_SILVER_RUPEE_SPIRIT_TEMPLE_SUN_BLOCK = 0x00E6 + GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_CLIMB = 0x00E7 + GI_SILVER_RUPEE_GANONS_CASTLE_SPIRIT_TRIAL = 0x00E8 + GI_SILVER_RUPEE_GANONS_CASTLE_LIGHT_TRIAL = 0x00E9 + GI_SILVER_RUPEE_GANONS_CASTLE_FIRE_TRIAL = 0x00EA + GI_SILVER_RUPEE_GANONS_CASTLE_SHADOW_TRIAL = 0x00EB + GI_SILVER_RUPEE_GANONS_CASTLE_WATER_TRIAL = 0x00EC + GI_SILVER_RUPEE_GANONS_CASTLE_FOREST_TRIAL = 0x00ED + + GI_SILVER_RUPEE_POUCH_DODONGOS_CAVERN_STAIRCASE = 0x00EE + GI_SILVER_RUPEE_POUCH_ICE_CAVERN_SPINNING_SCYTHE = 0x00EF + GI_SILVER_RUPEE_POUCH_ICE_CAVERN_PUSH_BLOCK = 0x00F0 + GI_SILVER_RUPEE_POUCH_BOTTOM_OF_THE_WELL_BASEMENT = 0x00F1 + GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_SCYTHE_SHORTCUT = 0x00F2 + GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_BLADES = 0x00F3 + GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_HUGE_PIT = 0x00F4 + GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_SPIKES = 0x00F5 + GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_SLOPES = 0x00F6 + GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_LAVA = 0x00F7 + GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_WATER = 0x00F8 + GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES = 0x00F9 + GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_BOULDERS = 0x00FA + GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT = 0x00FB + GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_SUN_BLOCK = 0x00FC + GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_CLIMB = 0x00FD + GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SPIRIT_TRIAL = 0x00FE + GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_LIGHT_TRIAL = 0x00FF + GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FIRE_TRIAL = 0x0100 + GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SHADOW_TRIAL = 0x0101 + GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_WATER_TRIAL = 0x0102 + GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FOREST_TRIAL = 0x0103 + + # Ocarina button models + GI_OCARINA_BUTTON_A = 0x0104 + GI_OCARINA_BUTTON_C_UP = 0x0105 + GI_OCARINA_BUTTON_C_DOWN = 0x0106 + GI_OCARINA_BUTTON_C_LEFT = 0x0107 + GI_OCARINA_BUTTON_C_RIGHT = 0x0108 + + # Custom Key Models + GI_BOSS_KEY_MODEL_FOREST_TEMPLE = 0x0109 + GI_BOSS_KEY_MODEL_FIRE_TEMPLE = 0x010A + GI_BOSS_KEY_MODEL_WATER_TEMPLE = 0x010B + GI_BOSS_KEY_MODEL_SPIRIT_TEMPLE = 0x010C + GI_BOSS_KEY_MODEL_SHADOW_TEMPLE = 0x010D + GI_BOSS_KEY_MODEL_GANONS_CASTLE = 0x010E + GI_SMALL_KEY_MODEL_FOREST_TEMPLE = 0x010F + GI_SMALL_KEY_MODEL_FIRE_TEMPLE = 0x0110 + GI_SMALL_KEY_MODEL_WATER_TEMPLE = 0x0111 + GI_SMALL_KEY_MODEL_SPIRIT_TEMPLE = 0x0112 + GI_SMALL_KEY_MODEL_SHADOW_TEMPLE = 0x0113 + GI_SMALL_KEY_MODEL_BOTTOM_OF_THE_WELL = 0x0114 + GI_SMALL_KEY_MODEL_GERUDO_TRAINING = 0x0115 + GI_SMALL_KEY_MODEL_THIEVES_HIDEOUT = 0x0116 + GI_SMALL_KEY_MODEL_GANONS_CASTLE = 0x0117 + GI_SMALL_KEY_MODEL_CHEST_GAME = 0x0118 + + GI_RANDO_MAX = 0x0119 + # Progressive: True -> Advancement # False -> Priority # None -> Normal @@ -10,218 +318,218 @@ # of that item. # item_table: dict[str, tuple[str, Optional[bool], Optional[int], Optional[dict[str, Any]]]] = { - 'Bombs (5)': ('Item', None, 0x0001, {'junk': 8}), - 'Deku Nuts (5)': ('Item', None, 0x0002, {'junk': 5}), - 'Bombchus (10)': ('Item', True, 0x0003, None), - 'Boomerang': ('Item', True, 0x0006, None), - 'Deku Stick (1)': ('Item', None, 0x0007, {'junk': 5}), - 'Lens of Truth': ('Item', True, 0x000A, None), - 'Megaton Hammer': ('Item', True, 0x000D, None), - 'Cojiro': ('Item', True, 0x000E, {'trade': True}), - 'Bottle': ('Item', True, 0x000F, {'bottle': float('Inf')}), - 'Blue Potion': ('Item', True, 0x0012, None), # distinct from shop item - 'Bottle with Milk': ('Item', True, 0x0014, {'bottle': float('Inf')}), - 'Rutos Letter': ('Item', True, 0x0015, None), + 'Bombs (5)': ('Item', None, GetItemId.GI_BOMBS_5, {'junk': 8}), + 'Deku Nuts (5)': ('Item', None, GetItemId.GI_DEKU_NUTS_5, {'junk': 5}), + 'Bombchus (10)': ('Item', True, GetItemId.GI_BOMBCHUS_10, None), + 'Boomerang': ('Item', True, GetItemId.GI_BOOMERANG, None), + 'Deku Stick (1)': ('Item', None, GetItemId.GI_DEKU_STICKS_1, {'junk': 5}), + 'Lens of Truth': ('Item', True, GetItemId.GI_LENS_OF_TRUTH, None), + 'Megaton Hammer': ('Item', True, GetItemId.GI_HAMMER, None), + 'Cojiro': ('Item', True, GetItemId.GI_COJIRO, {'trade': True}), + 'Bottle': ('Item', True, GetItemId.GI_BOTTLE_EMPTY, {'bottle': float('Inf')}), + 'Blue Potion': ('Item', True, GetItemId.GI_BOTTLE_POTION_BLUE, None), # distinct from shop item + 'Bottle with Milk': ('Item', True, GetItemId.GI_BOTTLE_MILK_FULL, {'bottle': float('Inf')}), + 'Rutos Letter': ('Item', True, GetItemId.GI_BOTTLE_RUTOS_LETTER, None), 'Deliver Letter': ('Item', True, None, {'bottle': float('Inf')}), 'Sell Big Poe': ('Item', True, None, {'bottle': float('Inf')}), - 'Magic Bean': ('Item', True, 0x0016, {'progressive': 10}), - 'Skull Mask': ('Item', True, 0x0017, {'trade': True, 'object': 0x0136}), - 'Spooky Mask': ('Item', True, 0x0018, {'trade': True, 'object': 0x0135}), - 'Chicken': ('Item', True, 0x0019, {'trade': True}), - 'Keaton Mask': ('Item', True, 0x001A, {'trade': True, 'object': 0x0134}), - 'Bunny Hood': ('Item', True, 0x001B, {'trade': True, 'object': 0x0137}), - 'Mask of Truth': ('Item', True, 0x001C, {'trade': True, 'object': 0x0138}), - 'Pocket Egg': ('Item', True, 0x001D, {'trade': True}), - 'Pocket Cucco': ('Item', True, 0x001E, {'trade': True}), - 'Odd Mushroom': ('Item', True, 0x001F, {'trade': True}), - 'Odd Potion': ('Item', True, 0x0020, {'trade': True}), - 'Poachers Saw': ('Item', True, 0x0021, {'trade': True}), - 'Broken Sword': ('Item', True, 0x0022, {'trade': True}), - 'Prescription': ('Item', True, 0x0023, {'trade': True}), - 'Eyeball Frog': ('Item', True, 0x0024, {'trade': True}), - 'Eyedrops': ('Item', True, 0x0025, {'trade': True}), - 'Claim Check': ('Item', True, 0x0026, {'trade': True}), - 'Kokiri Sword': ('Item', True, 0x0027, None), - 'Giants Knife': ('Item', None, 0x0028, None), - 'Deku Shield': ('Item', None, 0x0029, None), - 'Hylian Shield': ('Item', None, 0x002A, None), - 'Mirror Shield': ('Item', True, 0x002B, None), - 'Goron Tunic': ('Item', True, 0x002C, None), - 'Zora Tunic': ('Item', True, 0x002D, None), - 'Iron Boots': ('Item', True, 0x002E, None), - 'Hover Boots': ('Item', True, 0x002F, None), - 'Stone of Agony': ('Item', True, 0x0039, None), - 'Gerudo Membership Card': ('Item', True, 0x003A, None), - 'Heart Container': ('Item', True, 0x003D, {'alias': ('Piece of Heart', 4), 'progressive': float('Inf')}), - 'Piece of Heart': ('Item', True, 0x003E, {'progressive': float('Inf')}), - 'Boss Key': ('BossKey', True, 0x003F, None), - 'Compass': ('Compass', None, 0x0040, None), - 'Map': ('Map', None, 0x0041, None), - 'Small Key': ('SmallKey', True, 0x0042, {'progressive': float('Inf')}), - 'Weird Egg': ('Item', True, 0x0047, {'trade': True}), - 'Recovery Heart': ('Item', None, 0x0048, {'junk': 0}), - 'Arrows (5)': ('Item', None, 0x0049, {'junk': 8}), - 'Arrows (10)': ('Item', None, 0x004A, {'junk': 2}), - 'Arrows (30)': ('Item', None, 0x004B, {'junk': 0}), - 'Rupee (1)': ('Item', None, 0x004C, {'junk': -1}), - 'Rupees (5)': ('Item', None, 0x004D, {'junk': 10}), - 'Rupees (20)': ('Item', None, 0x004E, {'junk': 4}), - 'Milk': ('Item', None, 0x0050, None), - 'Goron Mask': ('Item', None, 0x0051, {'trade': True, 'object': 0x0150}), - 'Zora Mask': ('Item', None, 0x0052, {'trade': True, 'object': 0x0151}), - 'Gerudo Mask': ('Item', None, 0x0053, {'trade': True, 'object': 0x0152}), - 'Rupees (50)': ('Item', None, 0x0055, {'junk': 1}), - 'Rupees (200)': ('Item', None, 0x0056, {'junk': 0}), - 'Biggoron Sword': ('Item', None, 0x0057, None), - 'Fire Arrows': ('Item', True, 0x0058, None), - 'Ice Arrows': ('Item', True, 0x0059, None), - 'Blue Fire Arrows': ('Item', True, 0x0059, None), - 'Light Arrows': ('Item', True, 0x005A, None), - 'Gold Skulltula Token': ('Token', True, 0x005B, {'progressive': float('Inf')}), - 'Dins Fire': ('Item', True, 0x005C, None), - 'Nayrus Love': ('Item', True, 0x005E, None), - 'Farores Wind': ('Item', True, 0x005D, None), - 'Deku Nuts (10)': ('Item', None, 0x0064, {'junk': 0}), - 'Bomb (1)': ('Item', None, 0x0065, {'junk': -1}), - 'Bombs (10)': ('Item', None, 0x0066, {'junk': 2}), - 'Bombs (20)': ('Item', None, 0x0067, {'junk': 0}), - 'Deku Seeds (30)': ('Item', None, 0x0069, {'junk': 5}), - 'Bombchus (5)': ('Item', True, 0x006A, None), - 'Bombchus (20)': ('Item', True, 0x006B, None), - 'Small Key (Treasure Chest Game)': ('TCGSmallKey', True, 0x0071, {'progressive': float('Inf')}), - 'Rupee (Treasure Chest Game) (1)': ('Item', None, 0x0072, None), - 'Rupees (Treasure Chest Game) (5)': ('Item', None, 0x0073, None), - 'Rupees (Treasure Chest Game) (20)': ('Item', None, 0x0074, None), - 'Rupees (Treasure Chest Game) (50)': ('Item', None, 0x0075, None), - 'Piece of Heart (Treasure Chest Game)': ('Item', True, 0x0076, {'alias': ('Piece of Heart', 1), 'progressive': float('Inf')}), - 'Ice Trap': ('Item', None, 0x007C, {'junk': 0}), - 'Progressive Hookshot': ('Item', True, 0x0080, {'progressive': 2}), - 'Progressive Strength Upgrade': ('Item', True, 0x0081, {'progressive': 3}), - 'Bomb Bag': ('Item', True, 0x0082, None), - 'Bow': ('Item', True, 0x0083, None), - 'Slingshot': ('Item', True, 0x0084, None), - 'Progressive Wallet': ('Item', True, 0x0085, {'progressive': 3}), - 'Progressive Scale': ('Item', True, 0x0086, {'progressive': 2}), - 'Deku Nut Capacity': ('Item', None, 0x0087, None), - 'Deku Stick Capacity': ('Item', None, 0x0088, None), - 'Bombchus': ('Item', True, 0x0089, None), - 'Magic Meter': ('Item', True, 0x008A, None), - 'Ocarina': ('Item', True, 0x008B, None), - 'Bottle with Red Potion': ('Item', True, 0x008C, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Green Potion': ('Item', True, 0x008D, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Blue Potion': ('Item', True, 0x008E, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Fairy': ('Item', True, 0x008F, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Fish': ('Item', True, 0x0090, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Blue Fire': ('Item', True, 0x0091, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Bugs': ('Item', True, 0x0092, {'bottle': True, 'shop_object': 0x0F}), - 'Bottle with Big Poe': ('Item', True, 0x0093, {'shop_object': 0x0F}), - 'Bottle with Poe': ('Item', True, 0x0094, {'bottle': True, 'shop_object': 0x0F}), - 'Boss Key (Forest Temple)': ('BossKey', True, 0x0095, None), - 'Boss Key (Fire Temple)': ('BossKey', True, 0x0096, None), - 'Boss Key (Water Temple)': ('BossKey', True, 0x0097, None), - 'Boss Key (Spirit Temple)': ('BossKey', True, 0x0098, None), - 'Boss Key (Shadow Temple)': ('BossKey', True, 0x0099, None), - 'Boss Key (Ganons Castle)': ('GanonBossKey', True, 0x009A, None), - 'Compass (Deku Tree)': ('Compass', False, 0x009B, None), - 'Compass (Dodongos Cavern)': ('Compass', False, 0x009C, None), - 'Compass (Jabu Jabus Belly)': ('Compass', False, 0x009D, None), - 'Compass (Forest Temple)': ('Compass', False, 0x009E, None), - 'Compass (Fire Temple)': ('Compass', False, 0x009F, None), - 'Compass (Water Temple)': ('Compass', False, 0x00A0, None), - 'Compass (Spirit Temple)': ('Compass', False, 0x00A1, None), - 'Compass (Shadow Temple)': ('Compass', False, 0x00A2, None), - 'Compass (Bottom of the Well)': ('Compass', False, 0x00A3, None), - 'Compass (Ice Cavern)': ('Compass', False, 0x00A4, None), - 'Map (Deku Tree)': ('Map', False, 0x00A5, None), - 'Map (Dodongos Cavern)': ('Map', False, 0x00A6, None), - 'Map (Jabu Jabus Belly)': ('Map', False, 0x00A7, None), - 'Map (Forest Temple)': ('Map', False, 0x00A8, None), - 'Map (Fire Temple)': ('Map', False, 0x00A9, None), - 'Map (Water Temple)': ('Map', False, 0x00AA, None), - 'Map (Spirit Temple)': ('Map', False, 0x00AB, None), - 'Map (Shadow Temple)': ('Map', False, 0x00AC, None), - 'Map (Bottom of the Well)': ('Map', False, 0x00AD, None), - 'Map (Ice Cavern)': ('Map', False, 0x00AE, None), - 'Small Key (Forest Temple)': ('SmallKey', True, 0x00AF, {'progressive': float('Inf')}), - 'Small Key (Fire Temple)': ('SmallKey', True, 0x00B0, {'progressive': float('Inf')}), - 'Small Key (Water Temple)': ('SmallKey', True, 0x00B1, {'progressive': float('Inf')}), - 'Small Key (Spirit Temple)': ('SmallKey', True, 0x00B2, {'progressive': float('Inf')}), - 'Small Key (Shadow Temple)': ('SmallKey', True, 0x00B3, {'progressive': float('Inf')}), - 'Small Key (Bottom of the Well)': ('SmallKey', True, 0x00B4, {'progressive': float('Inf')}), - 'Small Key (Gerudo Training Ground)': ('SmallKey', True, 0x00B5, {'progressive': float('Inf')}), - 'Small Key (Thieves Hideout)': ('HideoutSmallKey', True, 0x00B6, {'progressive': float('Inf')}), - 'Small Key (Ganons Castle)': ('SmallKey', True, 0x00B7, {'progressive': float('Inf')}), - 'Double Defense': ('Item', None, 0x00B8, None), - 'Buy Magic Bean': ('Item', True, 0x0016, {'alias': ('Magic Bean', 10), 'progressive': 10}), - 'Magic Bean Pack': ('Item', True, 0x00C9, {'alias': ('Magic Bean', 10), 'progressive': 10}), - 'Triforce Piece': ('Item', True, 0x00CA, {'progressive': float('Inf')}), - 'Zeldas Letter': ('Item', True, 0x000B, {'trade': True}), + 'Magic Bean': ('Item', True, GetItemId.GI_MAGIC_BEAN, {'progressive': 10}), + 'Skull Mask': ('Item', True, GetItemId.GI_MASK_SKULL, {'trade': True, 'object': 0x0136}), + 'Spooky Mask': ('Item', True, GetItemId.GI_MASK_SPOOKY, {'trade': True, 'object': 0x0135}), + 'Chicken': ('Item', True, GetItemId.GI_CHICKEN, {'trade': True}), + 'Keaton Mask': ('Item', True, GetItemId.GI_MASK_KEATON, {'trade': True, 'object': 0x0134}), + 'Bunny Hood': ('Item', True, GetItemId.GI_MASK_BUNNY_HOOD, {'trade': True, 'object': 0x0137}), + 'Mask of Truth': ('Item', True, GetItemId.GI_MASK_TRUTH, {'trade': True, 'object': 0x0138}), + 'Pocket Egg': ('Item', True, GetItemId.GI_POCKET_EGG, {'trade': True}), + 'Pocket Cucco': ('Item', True, GetItemId.GI_POCKET_CUCCO, {'trade': True}), + 'Odd Mushroom': ('Item', True, GetItemId.GI_ODD_MUSHROOM, {'trade': True}), + 'Odd Potion': ('Item', True, GetItemId.GI_ODD_POTION, {'trade': True}), + 'Poachers Saw': ('Item', True, GetItemId.GI_POACHERS_SAW, {'trade': True}), + 'Broken Sword': ('Item', True, GetItemId.GI_BROKEN_GORONS_SWORD, {'trade': True}), + 'Prescription': ('Item', True, GetItemId.GI_PRESCRIPTION, {'trade': True}), + 'Eyeball Frog': ('Item', True, GetItemId.GI_EYEBALL_FROG, {'trade': True}), + 'Eyedrops': ('Item', True, GetItemId.GI_EYE_DROPS, {'trade': True}), + 'Claim Check': ('Item', True, GetItemId.GI_CLAIM_CHECK, {'trade': True}), + 'Kokiri Sword': ('Item', True, GetItemId.GI_SWORD_KOKIRI, None), + 'Giants Knife': ('Item', None, GetItemId.GI_SWORD_KNIFE, None), + 'Deku Shield': ('Item', None, GetItemId.GI_SHIELD_DEKU, None), + 'Hylian Shield': ('Item', None, GetItemId.GI_SHIELD_HYLIAN, None), + 'Mirror Shield': ('Item', True, GetItemId.GI_SHIELD_MIRROR, None), + 'Goron Tunic': ('Item', True, GetItemId.GI_TUNIC_GORON, None), + 'Zora Tunic': ('Item', True, GetItemId.GI_TUNIC_ZORA, None), + 'Iron Boots': ('Item', True, GetItemId.GI_BOOTS_IRON, None), + 'Hover Boots': ('Item', True, GetItemId.GI_BOOTS_HOVER, None), + 'Stone of Agony': ('Item', True, GetItemId.GI_STONE_OF_AGONY, None), + 'Gerudo Membership Card': ('Item', True, GetItemId.GI_GERUDOS_CARD, None), + 'Heart Container': ('Item', True, GetItemId.GI_HEART_CONTAINER, {'alias': ('Piece of Heart', 4), 'progressive': float('Inf')}), + 'Piece of Heart': ('Item', True, GetItemId.GI_HEART_PIECE, {'progressive': float('Inf')}), + 'Boss Key': ('BossKey', True, GetItemId.GI_BOSS_KEY, None), + 'Compass': ('Compass', None, GetItemId.GI_COMPASS, None), + 'Map': ('Map', None, GetItemId.GI_DUNGEON_MAP, None), + 'Small Key': ('SmallKey', True, GetItemId.GI_SMALL_KEY, {'progressive': float('Inf')}), + 'Weird Egg': ('Item', True, GetItemId.GI_WEIRD_EGG, {'trade': True}), + 'Recovery Heart': ('Item', None, GetItemId.GI_RECOVERY_HEART, {'junk': 0}), + 'Arrows (5)': ('Item', None, GetItemId.GI_ARROWS_5, {'junk': 8}), + 'Arrows (10)': ('Item', None, GetItemId.GI_ARROWS_10, {'junk': 2}), + 'Arrows (30)': ('Item', None, GetItemId.GI_ARROWS_30, {'junk': 0}), + 'Rupee (1)': ('Item', None, GetItemId.GI_RUPEE_GREEN, {'junk': -1}), + 'Rupees (5)': ('Item', None, GetItemId.GI_RUPEE_BLUE, {'junk': 10}), + 'Rupees (20)': ('Item', None, GetItemId.GI_RUPEE_RED, {'junk': 4}), + 'Milk': ('Item', None, GetItemId.GI_MILK, None), + 'Goron Mask': ('Item', None, GetItemId.GI_MASK_GORON, {'trade': True, 'object': 0x0150}), + 'Zora Mask': ('Item', None, GetItemId.GI_MASK_ZORA, {'trade': True, 'object': 0x0151}), + 'Gerudo Mask': ('Item', None, GetItemId.GI_MASK_GERUDO, {'trade': True, 'object': 0x0152}), + 'Rupees (50)': ('Item', None, GetItemId.GI_RUPEE_PURPLE, {'junk': 1}), + 'Rupees (200)': ('Item', None, GetItemId.GI_RUPEE_GOLD, {'junk': 0}), + 'Biggoron Sword': ('Item', None, GetItemId.GI_SWORD_BIGGORON, None), + 'Fire Arrows': ('Item', True, GetItemId.GI_ARROW_FIRE, None), + 'Ice Arrows': ('Item', True, GetItemId.GI_ARROW_ICE, None), + 'Blue Fire Arrows': ('Item', True, GetItemId.GI_ARROW_ICE, None), + 'Light Arrows': ('Item', True, GetItemId.GI_ARROW_LIGHT, None), + 'Gold Skulltula Token': ('Token', True, GetItemId.GI_SKULL_TOKEN, {'progressive': float('Inf')}), + 'Dins Fire': ('Item', True, GetItemId.GI_DINS_FIRE, None), + 'Farores Wind': ('Item', True, GetItemId.GI_FARORES_WIND, None), + 'Nayrus Love': ('Item', True, GetItemId.GI_NAYRUS_LOVE, None), + 'Deku Nuts (10)': ('Item', None, GetItemId.GI_DEKU_NUTS_10, {'junk': 0}), + 'Bomb (1)': ('Item', None, GetItemId.GI_BOMBS_1, {'junk': -1}), + 'Bombs (10)': ('Item', None, GetItemId.GI_BOMBS_10, {'junk': 2}), + 'Bombs (20)': ('Item', None, GetItemId.GI_BOMBS_20, {'junk': 0}), + 'Deku Seeds (30)': ('Item', None, GetItemId.GI_DEKU_SEEDS_30, {'junk': 5}), + 'Bombchus (5)': ('Item', True, GetItemId.GI_BOMBCHUS_5, None), + 'Bombchus (20)': ('Item', True, GetItemId.GI_BOMBCHUS_20, None), + 'Small Key (Treasure Chest Game)': ('TCGSmallKey', True, GetItemId.GI_DOOR_KEY, {'progressive': float('Inf')}), + 'Rupee (Treasure Chest Game) (1)': ('Item', None, GetItemId.GI_RUPEE_GREEN_LOSE, None), + 'Rupees (Treasure Chest Game) (5)': ('Item', None, GetItemId.GI_RUPEE_BLUE_LOSE, None), + 'Rupees (Treasure Chest Game) (20)': ('Item', None, GetItemId.GI_RUPEE_RED_LOSE, None), + 'Rupees (Treasure Chest Game) (50)': ('Item', None, GetItemId.GI_RUPEE_PURPLE_LOSE, None), + 'Piece of Heart (Treasure Chest Game)': ('Item', True, GetItemId.GI_HEART_PIECE_WIN, {'alias': ('Piece of Heart', 1), 'progressive': float('Inf')}), + 'Ice Trap': ('Item', None, GetItemId.GI_ICE_TRAP, {'junk': 0}), + 'Progressive Hookshot': ('Item', True, GetItemId.GI_PROGRESSIVE_HOOKSHOT, {'progressive': 2}), + 'Progressive Strength Upgrade': ('Item', True, GetItemId.GI_PROGRESSIVE_STRENGTH, {'progressive': 3}), + 'Bomb Bag': ('Item', True, GetItemId.GI_PROGRESSIVE_BOMB_BAG, None), + 'Bow': ('Item', True, GetItemId.GI_PROGRESSIVE_BOW, None), + 'Slingshot': ('Item', True, GetItemId.GI_PROGRESSIVE_SLINGSHOT, None), + 'Progressive Wallet': ('Item', True, GetItemId.GI_PROGRESSIVE_WALLET, {'progressive': 3}), + 'Progressive Scale': ('Item', True, GetItemId.GI_PROGRESSIVE_SCALE, {'progressive': 2}), + 'Deku Nut Capacity': ('Item', None, GetItemId.GI_PROGRESSIVE_NUT_CAPACITY, None), + 'Deku Stick Capacity': ('Item', None, GetItemId.GI_PROGRESSIVE_STICK_CAPACITY, None), + 'Bombchus': ('Item', True, GetItemId.GI_PROGRESSIVE_BOMBCHUS, None), + 'Magic Meter': ('Item', True, GetItemId.GI_PROGRESSIVE_MAGIC_METER, None), + 'Ocarina': ('Item', True, GetItemId.GI_PROGRESSIVE_OCARINA, None), + 'Bottle with Red Potion': ('Item', True, GetItemId.GI_BOTTLE_WITH_RED_POTION, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Green Potion': ('Item', True, GetItemId.GI_BOTTLE_WITH_GREEN_POTION, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Blue Potion': ('Item', True, GetItemId.GI_BOTTLE_WITH_BLUE_POTION, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Fairy': ('Item', True, GetItemId.GI_BOTTLE_WITH_FAIRY, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Fish': ('Item', True, GetItemId.GI_BOTTLE_WITH_FISH, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Blue Fire': ('Item', True, GetItemId.GI_BOTTLE_WITH_BLUE_FIRE, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Bugs': ('Item', True, GetItemId.GI_BOTTLE_WITH_BUGS, {'bottle': True, 'shop_object': 0x0F}), + 'Bottle with Big Poe': ('Item', True, GetItemId.GI_BOTTLE_WITH_BIG_POE, {'shop_object': 0x0F}), + 'Bottle with Poe': ('Item', True, GetItemId.GI_BOTTLE_WITH_POE, {'bottle': True, 'shop_object': 0x0F}), + 'Boss Key (Forest Temple)': ('BossKey', True, GetItemId.GI_BOSS_KEY_FOREST_TEMPLE, None), + 'Boss Key (Fire Temple)': ('BossKey', True, GetItemId.GI_BOSS_KEY_FIRE_TEMPLE, None), + 'Boss Key (Water Temple)': ('BossKey', True, GetItemId.GI_BOSS_KEY_WATER_TEMPLE, None), + 'Boss Key (Spirit Temple)': ('BossKey', True, GetItemId.GI_BOSS_KEY_SPIRIT_TEMPLE, None), + 'Boss Key (Shadow Temple)': ('BossKey', True, GetItemId.GI_BOSS_KEY_SHADOW_TEMPLE, None), + 'Boss Key (Ganons Castle)': ('GanonBossKey', True, GetItemId.GI_BOSS_KEY_GANONS_CASTLE, None), + 'Compass (Deku Tree)': ('Compass', False, GetItemId.GI_COMPASS_DEKU_TREE, None), + 'Compass (Dodongos Cavern)': ('Compass', False, GetItemId.GI_COMPASS_DODONGOS_CAVERN, None), + 'Compass (Jabu Jabus Belly)': ('Compass', False, GetItemId.GI_COMPASS_JABU_JABU, None), + 'Compass (Forest Temple)': ('Compass', False, GetItemId.GI_COMPASS_FOREST_TEMPLE, None), + 'Compass (Fire Temple)': ('Compass', False, GetItemId.GI_COMPASS_FIRE_TEMPLE, None), + 'Compass (Water Temple)': ('Compass', False, GetItemId.GI_COMPASS_WATER_TEMPLE, None), + 'Compass (Spirit Temple)': ('Compass', False, GetItemId.GI_COMPASS_SPIRIT_TEMPLE, None), + 'Compass (Shadow Temple)': ('Compass', False, GetItemId.GI_COMPASS_SHADOW_TEMPLE, None), + 'Compass (Bottom of the Well)': ('Compass', False, GetItemId.GI_COMPASS_BOTTOM_OF_THE_WELL, None), + 'Compass (Ice Cavern)': ('Compass', False, GetItemId.GI_COMPASS_ICE_CAVERN, None), + 'Map (Deku Tree)': ('Map', False, GetItemId.GI_MAP_DEKU_TREE, None), + 'Map (Dodongos Cavern)': ('Map', False, GetItemId.GI_MAP_DODONGOS_CAVERN, None), + 'Map (Jabu Jabus Belly)': ('Map', False, GetItemId.GI_MAP_JABU_JABU, None), + 'Map (Forest Temple)': ('Map', False, GetItemId.GI_MAP_FOREST_TEMPLE, None), + 'Map (Fire Temple)': ('Map', False, GetItemId.GI_MAP_FIRE_TEMPLE, None), + 'Map (Water Temple)': ('Map', False, GetItemId.GI_MAP_WATER_TEMPLE, None), + 'Map (Spirit Temple)': ('Map', False, GetItemId.GI_MAP_SPIRIT_TEMPLE, None), + 'Map (Shadow Temple)': ('Map', False, GetItemId.GI_MAP_SHADOW_TEMPLE, None), + 'Map (Bottom of the Well)': ('Map', False, GetItemId.GI_MAP_BOTTOM_OF_THE_WELL, None), + 'Map (Ice Cavern)': ('Map', False, GetItemId.GI_MAP_ICE_CAVERN, None), + 'Small Key (Forest Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_FOREST_TEMPLE, {'progressive': float('Inf')}), + 'Small Key (Fire Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_FIRE_TEMPLE, {'progressive': float('Inf')}), + 'Small Key (Water Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_WATER_TEMPLE, {'progressive': float('Inf')}), + 'Small Key (Spirit Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_SPIRIT_TEMPLE, {'progressive': float('Inf')}), + 'Small Key (Shadow Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_SHADOW_TEMPLE, {'progressive': float('Inf')}), + 'Small Key (Bottom of the Well)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_BOTTOM_OF_THE_WELL, {'progressive': float('Inf')}), + 'Small Key (Gerudo Training Ground)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_GERUDO_TRAINING, {'progressive': float('Inf')}), + 'Small Key (Thieves Hideout)': ('HideoutSmallKey', True, GetItemId.GI_SMALL_KEY_THIEVES_HIDEOUT, {'progressive': float('Inf')}), + 'Small Key (Ganons Castle)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_GANONS_CASTLE, {'progressive': float('Inf')}), + 'Double Defense': ('Item', None, GetItemId.GI_DOUBLE_DEFENSE, None), + 'Buy Magic Bean': ('Item', True, GetItemId.GI_MAGIC_BEAN, {'alias': ('Magic Bean', 10), 'progressive': 10}), + 'Magic Bean Pack': ('Item', True, GetItemId.GI_MAGIC_BEAN_PACK, {'alias': ('Magic Bean', 10), 'progressive': 10}), + 'Triforce Piece': ('Item', True, GetItemId.GI_TRIFORCE_PIECE, {'progressive': float('Inf')}), + 'Zeldas Letter': ('Item', True, GetItemId.GI_ZELDAS_LETTER, {'trade': True}), 'Time Travel': ('Event', True, None, None), 'Scarecrow Song': ('Event', True, None, None), 'Triforce': ('Event', True, None, None), - 'Small Key Ring (Forest Temple)': ('SmallKey', True, 0x00CB, {'alias': ('Small Key (Forest Temple)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Fire Temple)': ('SmallKey', True, 0x00CC, {'alias': ('Small Key (Fire Temple)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Water Temple)': ('SmallKey', True, 0x00CD, {'alias': ('Small Key (Water Temple)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Spirit Temple)': ('SmallKey', True, 0x00CE, {'alias': ('Small Key (Spirit Temple)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Shadow Temple)': ('SmallKey', True, 0x00CF, {'alias': ('Small Key (Shadow Temple)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Bottom of the Well)': ('SmallKey', True, 0x00D0, {'alias': ('Small Key (Bottom of the Well)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Gerudo Training Ground)': ('SmallKey', True, 0x00D1, {'alias': ('Small Key (Gerudo Training Ground)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Thieves Hideout)': ('HideoutSmallKey', True, 0x00D2, {'alias': ('Small Key (Thieves Hideout)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Ganons Castle)': ('SmallKey', True, 0x00D3, {'alias': ('Small Key (Ganons Castle)', 10), 'progressive': float('Inf')}), - 'Small Key Ring (Treasure Chest Game)': ('TCGSmallKey', True, 0x00D7, {'alias': ('Small Key (Treasure Chest Game)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Forest Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_FOREST_TEMPLE, {'alias': ('Small Key (Forest Temple)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Fire Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_FIRE_TEMPLE, {'alias': ('Small Key (Fire Temple)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Water Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_WATER_TEMPLE, {'alias': ('Small Key (Water Temple)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Spirit Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_SPIRIT_TEMPLE, {'alias': ('Small Key (Spirit Temple)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Shadow Temple)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_SHADOW_TEMPLE, {'alias': ('Small Key (Shadow Temple)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Bottom of the Well)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL, {'alias': ('Small Key (Bottom of the Well)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Gerudo Training Ground)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_GERUDO_TRAINING, {'alias': ('Small Key (Gerudo Training Ground)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Thieves Hideout)': ('HideoutSmallKey', True, GetItemId.GI_SMALL_KEY_RING_THIEVES_HIDEOUT, {'alias': ('Small Key (Thieves Hideout)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Ganons Castle)': ('SmallKey', True, GetItemId.GI_SMALL_KEY_RING_GANONS_CASTLE, {'alias': ('Small Key (Ganons Castle)', 10), 'progressive': float('Inf')}), + 'Small Key Ring (Treasure Chest Game)': ('TCGSmallKey', True, GetItemId.GI_SMALL_KEY_RING_TREASURE_CHEST_GAME, {'alias': ('Small Key (Treasure Chest Game)', 10), 'progressive': float('Inf')}), - 'Silver Rupee (Dodongos Cavern Staircase)': ('SilverRupee', True, 0x00D8, {'progressive': 5}), - 'Silver Rupee (Ice Cavern Spinning Scythe)': ('SilverRupee', True, 0x00D9, {'progressive': 5}), - 'Silver Rupee (Ice Cavern Push Block)': ('SilverRupee', True, 0x00DA, {'progressive': 5}), - 'Silver Rupee (Bottom of the Well Basement)': ('SilverRupee', True, 0x00DB, {'progressive': 5}), - 'Silver Rupee (Shadow Temple Scythe Shortcut)': ('SilverRupee', True, 0x00DC, {'progressive': 5}), - 'Silver Rupee (Shadow Temple Invisible Blades)': ('SilverRupee', True, 0x00DD, {'progressive': 10}), - 'Silver Rupee (Shadow Temple Huge Pit)': ('SilverRupee', True, 0x00DE, {'progressive': 5}), - 'Silver Rupee (Shadow Temple Invisible Spikes)': ('SilverRupee', True, 0x00DF, {'progressive': 10}), - 'Silver Rupee (Gerudo Training Ground Slopes)': ('SilverRupee', True, 0x00E0, {'progressive': 5}), - 'Silver Rupee (Gerudo Training Ground Lava)': ('SilverRupee', True, 0x00E1, {'progressive': 6}), - 'Silver Rupee (Gerudo Training Ground Water)': ('SilverRupee', True, 0x00E2, {'progressive': 5}), - 'Silver Rupee (Spirit Temple Child Early Torches)': ('SilverRupee', True, 0x00E3, {'progressive': 5}), - 'Silver Rupee (Spirit Temple Adult Boulders)': ('SilverRupee', True, 0x00E4, {'progressive': 5}), - 'Silver Rupee (Spirit Temple Lobby and Lower Adult)': ('SilverRupee', True, 0x00E5, {'progressive': 5}), - 'Silver Rupee (Spirit Temple Sun Block)': ('SilverRupee', True, 0x00E6, {'progressive': 5}), - 'Silver Rupee (Spirit Temple Adult Climb)': ('SilverRupee', True, 0x00E7, {'progressive': 5}), - 'Silver Rupee (Ganons Castle Spirit Trial)': ('SilverRupee', True, 0x00E8, {'progressive': 5}), - 'Silver Rupee (Ganons Castle Light Trial)': ('SilverRupee', True, 0x00E9, {'progressive': 5}), - 'Silver Rupee (Ganons Castle Fire Trial)': ('SilverRupee', True, 0x00EA, {'progressive': 5}), - 'Silver Rupee (Ganons Castle Shadow Trial)': ('SilverRupee', True, 0x00EB, {'progressive': 5}), - 'Silver Rupee (Ganons Castle Water Trial)': ('SilverRupee', True, 0x00EC, {'progressive': 5}), - 'Silver Rupee (Ganons Castle Forest Trial)': ('SilverRupee', True, 0x00ED, {'progressive': 5}), + 'Silver Rupee (Dodongos Cavern Staircase)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_DODONGOS_CAVERN_STAIRCASE, {'progressive': 5}), + 'Silver Rupee (Ice Cavern Spinning Scythe)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_ICE_CAVERN_SPINNING_SCYTHE, {'progressive': 5}), + 'Silver Rupee (Ice Cavern Push Block)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_ICE_CAVERN_PUSH_BLOCK, {'progressive': 5}), + 'Silver Rupee (Bottom of the Well Basement)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_BOTTOM_OF_THE_WELL_BASEMENT, {'progressive': 5}), + 'Silver Rupee (Shadow Temple Scythe Shortcut)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SHADOW_TEMPLE_SCYTHE_SHORTCUT, {'progressive': 5}), + 'Silver Rupee (Shadow Temple Invisible Blades)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_BLADES, {'progressive': 10}), + 'Silver Rupee (Shadow Temple Huge Pit)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SHADOW_TEMPLE_HUGE_PIT, {'progressive': 5}), + 'Silver Rupee (Shadow Temple Invisible Spikes)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SHADOW_TEMPLE_INVISIBLE_SPIKES, {'progressive': 10}), + 'Silver Rupee (Gerudo Training Ground Slopes)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_SLOPES, {'progressive': 5}), + 'Silver Rupee (Gerudo Training Ground Lava)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_LAVA, {'progressive': 6}), + 'Silver Rupee (Gerudo Training Ground Water)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GERUDO_TRAINING_GROUND_WATER, {'progressive': 5}), + 'Silver Rupee (Spirit Temple Child Early Torches)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES, {'progressive': 5}), + 'Silver Rupee (Spirit Temple Adult Boulders)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_BOULDERS, {'progressive': 5}), + 'Silver Rupee (Spirit Temple Lobby and Lower Adult)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT, {'progressive': 5}), + 'Silver Rupee (Spirit Temple Sun Block)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SPIRIT_TEMPLE_SUN_BLOCK, {'progressive': 5}), + 'Silver Rupee (Spirit Temple Adult Climb)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_SPIRIT_TEMPLE_ADULT_CLIMB, {'progressive': 5}), + 'Silver Rupee (Ganons Castle Spirit Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GANONS_CASTLE_SPIRIT_TRIAL, {'progressive': 5}), + 'Silver Rupee (Ganons Castle Light Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GANONS_CASTLE_LIGHT_TRIAL, {'progressive': 5}), + 'Silver Rupee (Ganons Castle Fire Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GANONS_CASTLE_FIRE_TRIAL, {'progressive': 5}), + 'Silver Rupee (Ganons Castle Shadow Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GANONS_CASTLE_SHADOW_TRIAL, {'progressive': 5}), + 'Silver Rupee (Ganons Castle Water Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GANONS_CASTLE_WATER_TRIAL, {'progressive': 5}), + 'Silver Rupee (Ganons Castle Forest Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_GANONS_CASTLE_FOREST_TRIAL, {'progressive': 5}), - 'Silver Rupee Pouch (Dodongos Cavern Staircase)': ('SilverRupee', True, 0x00EE, {'alias': ('Silver Rupee (Dodongos Cavern Staircase)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ice Cavern Spinning Scythe)': ('SilverRupee', True, 0x00EF, {'alias': ('Silver Rupee (Ice Cavern Spinning Scythe)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ice Cavern Push Block)': ('SilverRupee', True, 0x00F0, {'alias': ('Silver Rupee (Ice Cavern Push Block)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Bottom of the Well Basement)': ('SilverRupee', True, 0x00F1, {'alias': ('Silver Rupee (Bottom of the Well Basement)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Shadow Temple Scythe Shortcut)': ('SilverRupee', True, 0x00F2, {'alias': ('Silver Rupee (Shadow Temple Scythe Shortcut)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Shadow Temple Invisible Blades)': ('SilverRupee', True, 0x00F3, {'alias': ('Silver Rupee (Shadow Temple Invisible Blades)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Shadow Temple Huge Pit)': ('SilverRupee', True, 0x00F4, {'alias': ('Silver Rupee (Shadow Temple Huge Pit)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Shadow Temple Invisible Spikes)': ('SilverRupee', True, 0x00F5, {'alias': ('Silver Rupee (Shadow Temple Invisible Spikes)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Gerudo Training Ground Slopes)': ('SilverRupee', True, 0x00F6, {'alias': ('Silver Rupee (Gerudo Training Ground Slopes)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Gerudo Training Ground Lava)': ('SilverRupee', True, 0x00F7, {'alias': ('Silver Rupee (Gerudo Training Ground Lava)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Gerudo Training Ground Water)': ('SilverRupee', True, 0x00F8, {'alias': ('Silver Rupee (Gerudo Training Ground Water)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Spirit Temple Child Early Torches)': ('SilverRupee', True, 0x00F9, {'alias': ('Silver Rupee (Spirit Temple Child Early Torches)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Spirit Temple Adult Boulders)': ('SilverRupee', True, 0x00FA, {'alias': ('Silver Rupee (Spirit Temple Adult Boulders)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Spirit Temple Lobby and Lower Adult)': ('SilverRupee', True, 0x00FB, {'alias': ('Silver Rupee (Spirit Temple Lobby and Lower Adult)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Spirit Temple Sun Block)': ('SilverRupee', True, 0x00FC, {'alias': ('Silver Rupee (Spirit Temple Sun Block)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Spirit Temple Adult Climb)': ('SilverRupee', True, 0x00FD, {'alias': ('Silver Rupee (Spirit Temple Adult Climb)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ganons Castle Spirit Trial)': ('SilverRupee', True, 0x00FE, {'alias': ('Silver Rupee (Ganons Castle Spirit Trial)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ganons Castle Light Trial)': ('SilverRupee', True, 0x00FF, {'alias': ('Silver Rupee (Ganons Castle Light Trial)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ganons Castle Fire Trial)': ('SilverRupee', True, 0x0100, {'alias': ('Silver Rupee (Ganons Castle Fire Trial)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ganons Castle Shadow Trial)': ('SilverRupee', True, 0x0101, {'alias': ('Silver Rupee (Ganons Castle Shadow Trial)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ganons Castle Water Trial)': ('SilverRupee', True, 0x0102, {'alias': ('Silver Rupee (Ganons Castle Water Trial)', 10), 'progressive': 1}), - 'Silver Rupee Pouch (Ganons Castle Forest Trial)': ('SilverRupee', True, 0x0103, {'alias': ('Silver Rupee (Ganons Castle Forest Trial)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Dodongos Cavern Staircase)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_DODONGOS_CAVERN_STAIRCASE, {'alias': ('Silver Rupee (Dodongos Cavern Staircase)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ice Cavern Spinning Scythe)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_ICE_CAVERN_SPINNING_SCYTHE, {'alias': ('Silver Rupee (Ice Cavern Spinning Scythe)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ice Cavern Push Block)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_ICE_CAVERN_PUSH_BLOCK, {'alias': ('Silver Rupee (Ice Cavern Push Block)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Bottom of the Well Basement)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_BOTTOM_OF_THE_WELL_BASEMENT, {'alias': ('Silver Rupee (Bottom of the Well Basement)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Shadow Temple Scythe Shortcut)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_SCYTHE_SHORTCUT, {'alias': ('Silver Rupee (Shadow Temple Scythe Shortcut)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Shadow Temple Invisible Blades)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_BLADES, {'alias': ('Silver Rupee (Shadow Temple Invisible Blades)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Shadow Temple Huge Pit)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_HUGE_PIT, {'alias': ('Silver Rupee (Shadow Temple Huge Pit)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Shadow Temple Invisible Spikes)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SHADOW_TEMPLE_INVISIBLE_SPIKES, {'alias': ('Silver Rupee (Shadow Temple Invisible Spikes)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Gerudo Training Ground Slopes)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_SLOPES, {'alias': ('Silver Rupee (Gerudo Training Ground Slopes)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Gerudo Training Ground Lava)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_LAVA, {'alias': ('Silver Rupee (Gerudo Training Ground Lava)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Gerudo Training Ground Water)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GERUDO_TRAINING_GROUND_WATER, {'alias': ('Silver Rupee (Gerudo Training Ground Water)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Spirit Temple Child Early Torches)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_CHILD_EARLY_TORCHES, {'alias': ('Silver Rupee (Spirit Temple Child Early Torches)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Spirit Temple Adult Boulders)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_BOULDERS, {'alias': ('Silver Rupee (Spirit Temple Adult Boulders)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Spirit Temple Lobby and Lower Adult)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_LOBBY_AND_LOWER_ADULT, {'alias': ('Silver Rupee (Spirit Temple Lobby and Lower Adult)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Spirit Temple Sun Block)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_SUN_BLOCK, {'alias': ('Silver Rupee (Spirit Temple Sun Block)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Spirit Temple Adult Climb)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_SPIRIT_TEMPLE_ADULT_CLIMB, {'alias': ('Silver Rupee (Spirit Temple Adult Climb)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ganons Castle Spirit Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SPIRIT_TRIAL, {'alias': ('Silver Rupee (Ganons Castle Spirit Trial)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ganons Castle Light Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_LIGHT_TRIAL, {'alias': ('Silver Rupee (Ganons Castle Light Trial)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ganons Castle Fire Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FIRE_TRIAL, {'alias': ('Silver Rupee (Ganons Castle Fire Trial)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ganons Castle Shadow Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_SHADOW_TRIAL, {'alias': ('Silver Rupee (Ganons Castle Shadow Trial)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ganons Castle Water Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_WATER_TRIAL, {'alias': ('Silver Rupee (Ganons Castle Water Trial)', 10), 'progressive': 1}), + 'Silver Rupee Pouch (Ganons Castle Forest Trial)': ('SilverRupee', True, GetItemId.GI_SILVER_RUPEE_POUCH_GANONS_CASTLE_FOREST_TRIAL, {'alias': ('Silver Rupee (Ganons Castle Forest Trial)', 10), 'progressive': 1}), - 'Ocarina A Button': ('Item', True, 0x0104, {'ocarina_button': True}), - 'Ocarina C up Button': ('Item', True, 0x0105, {'ocarina_button': True}), - 'Ocarina C down Button': ('Item', True, 0x0106, {'ocarina_button': True}), - 'Ocarina C left Button': ('Item', True, 0x0107, {'ocarina_button': True}), - 'Ocarina C right Button': ('Item', True, 0x0108, {'ocarina_button': True}), + 'Ocarina A Button': ('Item', True, GetItemId.GI_OCARINA_BUTTON_A, {'ocarina_button': True}), + 'Ocarina C up Button': ('Item', True, GetItemId.GI_OCARINA_BUTTON_C_UP, {'ocarina_button': True}), + 'Ocarina C down Button': ('Item', True, GetItemId.GI_OCARINA_BUTTON_C_DOWN, {'ocarina_button': True}), + 'Ocarina C left Button': ('Item', True, GetItemId.GI_OCARINA_BUTTON_C_LEFT, {'ocarina_button': True}), + 'Ocarina C right Button': ('Item', True, GetItemId.GI_OCARINA_BUTTON_C_RIGHT, {'ocarina_button': True}), # Event items otherwise generated by generic event logic # can be defined here to enforce their appearance in playthroughs. @@ -252,37 +560,37 @@ 'Deku Nuts': ('Refill', None, None, None), 'Rupees': ('Refill', None, None, None), - 'Minuet of Forest': ('Song', True, 0x00BB, + 'Minuet of Forest': ('Song', True, GetItemId.GI_MINUET_OF_FOREST, { 'text_id': 0x73, 'song_id': 0x02, 'item_id': 0x5A, }), - 'Bolero of Fire': ('Song', True, 0x00BC, + 'Bolero of Fire': ('Song', True, GetItemId.GI_BOLERO_OF_FIRE, { 'text_id': 0x74, 'song_id': 0x03, 'item_id': 0x5B, }), - 'Serenade of Water': ('Song', True, 0x00BD, + 'Serenade of Water': ('Song', True, GetItemId.GI_SERENADE_OF_WATER, { 'text_id': 0x75, 'song_id': 0x04, 'item_id': 0x5C, }), - 'Requiem of Spirit': ('Song', True, 0x00BE, + 'Requiem of Spirit': ('Song', True, GetItemId.GI_REQUIEM_OF_SPIRIT, { 'text_id': 0x76, 'song_id': 0x05, 'item_id': 0x5D, }), - 'Nocturne of Shadow': ('Song', True, 0x00BF, + 'Nocturne of Shadow': ('Song', True, GetItemId.GI_NOCTURN_OF_SHADOW, { 'text_id': 0x77, 'song_id': 0x06, 'item_id': 0x5E, }), - 'Prelude of Light': ('Song', True, 0x00C0, + 'Prelude of Light': ('Song', True, GetItemId.GI_PRELUDE_OF_LIGHT, { 'text_id': 0x78, 'song_id': 0x07, From 3e95b2683647880461eb25ee7cf4359c358d0869 Mon Sep 17 00:00:00 2001 From: angie Date: Mon, 16 Oct 2023 09:11:53 -0300 Subject: [PATCH 5/9] missing values --- ItemList.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ItemList.py b/ItemList.py index 89767a061..6b20e81ff 100644 --- a/ItemList.py +++ b/ItemList.py @@ -596,37 +596,37 @@ class GetItemId(IntEnum): 'song_id': 0x07, 'item_id': 0x5F, }), - 'Zeldas Lullaby': ('Song', True, 0x00C1, + 'Zeldas Lullaby': ('Song', True, GetItemId.GI_ZELDAS_LULLABY, { 'text_id': 0xD4, 'song_id': 0x0A, 'item_id': 0x60, }), - 'Eponas Song': ('Song', True, 0x00C2, + 'Eponas Song': ('Song', True, GetItemId.GI_EPONAS_SONG, { 'text_id': 0xD2, 'song_id': 0x09, 'item_id': 0x61, }), - 'Sarias Song': ('Song', True, 0x00C3, + 'Sarias Song': ('Song', True, GetItemId.GI_SARIAS_SONG, { 'text_id': 0xD1, 'song_id': 0x08, 'item_id': 0x62, }), - 'Suns Song': ('Song', True, 0x00C4, + 'Suns Song': ('Song', True, GetItemId.GI_SUNS_SONG, { 'text_id': 0xD3, 'song_id': 0x0B, 'item_id': 0x63, }), - 'Song of Time': ('Song', True, 0x00C5, + 'Song of Time': ('Song', True, GetItemId.GI_SONG_OF_TIME, { 'text_id': 0xD5, 'song_id': 0x0C, 'item_id': 0x64, }), - 'Song of Storms': ('Song', True, 0x00C6, + 'Song of Storms': ('Song', True, GetItemId.GI_SONG_OF_STORMS, { 'text_id': 0xD6, 'song_id': 0x0D, From 1aa97fcfa17ce1bef9a6519478fc2a8029469034 Mon Sep 17 00:00:00 2001 From: angie Date: Mon, 16 Oct 2023 09:34:56 -0300 Subject: [PATCH 6/9] a few other places I missed --- ASM/c/get_items.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ASM/c/get_items.c b/ASM/c/get_items.c index 3cc425fda..a6dc46eba 100644 --- a/ASM/c/get_items.c +++ b/ASM/c/get_items.c @@ -192,7 +192,7 @@ void activate_override(override_t override) { item_row_t *item_row = get_item_row(resolved_item_id); active_override = override; - if (resolved_item_id == 0xCA) { + if (resolved_item_id == GI_TRIFORCE_PIECE) { active_override_is_outgoing = 2; // Send to everyone } else { active_override_is_outgoing = override.value.base.player != PLAYER_ID; @@ -321,7 +321,7 @@ void after_key_received(override_key_t key) { void pop_ice_trap() { override_key_t key = { .all = z64_file.scene_flags[0x30].unk_00_ }; override_value_base_t value = { .all = z64_file.scene_flags[0x31].unk_00_ }; - if (value.item_id == 0x7C && value.player == PLAYER_ID) { + if (value.item_id == GI_ICE_TRAP && value.player == PLAYER_ID) { push_pending_ice_trap(); pop_pending_item(); after_key_received(key); @@ -379,7 +379,7 @@ void try_pending_item() { return; } - if (override.value.base.item_id == 0xCA && override.value.base.player != PLAYER_ID) { + if (override.value.base.item_id == GI_TRIFORCE_PIECE && override.value.base.player != PLAYER_ID) { uint16_t resolved_item_id = resolve_upgrades(override); item_row_t *item_row = get_item_row(resolved_item_id); call_effect_function(item_row); @@ -466,10 +466,10 @@ void get_item(z64_actor_t *from_actor, z64_link_t *link, int8_t incoming_item_id if (from_actor->actor_id == 0x0A) { // Update chest contents - if (override.value.base.item_id == 0x7C && override.value.base.player == PLAYER_ID && (FAST_CHESTS || active_item_fast_chest) && z64_game.scene_index != 0x0010) { + if (override.value.base.item_id == GI_ICE_TRAP && override.value.base.player == PLAYER_ID && (FAST_CHESTS || active_item_fast_chest) && z64_game.scene_index != 0x0010) { // Use ice trap base item ID to freeze Link as the chest opens rather than playing the full item get animation //HACK: Not used in treasure box shop since it causes crashes that seem to be related to a timer being shared between ice traps and something in the minigame - base_item_id = 0x7C; + base_item_id = GI_ICE_TRAP; } from_actor->variable = (from_actor->variable & 0xF01F) | (base_item_id << 5); } @@ -772,7 +772,7 @@ int16_t get_override_drop_id(int16_t dropId) { void dispatch_item(uint16_t resolved_item_id, uint8_t player, override_t *override, item_row_t *item_row) { // Give the item to the right place - if (resolved_item_id == 0xCA) { + if (resolved_item_id == GI_TRIFORCE_PIECE) { // Send triforce to everyone push_outgoing_override(override); z64_GiveItem(&z64_game, item_row->action_id); @@ -874,7 +874,7 @@ void get_skulltula_token(z64_actor_t *token_actor) { uint8_t player; if (override.key.all == 0) { // Give a skulltula token if there is no override - item_id = 0x5B; + item_id = GI_SKULL_TOKEN; player = PLAYER_ID; } else { item_id = override.value.base.item_id; @@ -909,11 +909,11 @@ void fairy_ocarina_getitem() { override_t override = lookup_override_by_key(lw_gift_from_saria); uint16_t resolved_item_id = resolve_upgrades(override); switch (resolved_item_id) { - case 0x003B: { // Fairy Ocarina + case GI_OCARINA_FAIRY: { // Fairy Ocarina z64_file.items[Z64_SLOT_OCARINA] = 0x07; break; } - case 0x000C: { // Ocarina of Time + case GI_OCARINA_OF_TIME: { // Ocarina of Time z64_file.items[Z64_SLOT_OCARINA] = 0x08; break; } From 2822fcc6b1b05898dc550c83d3a5b859e8025afa Mon Sep 17 00:00:00 2001 From: angie Date: Mon, 16 Oct 2023 10:20:39 -0300 Subject: [PATCH 7/9] Introduce MIN and MAX enum values for ranged items --- ASM/c/item_table.c | 6 +++--- ASM/c/item_table.h | 28 ++++++++++++++++++++-------- ASM/c/item_upgrades.c | 6 +++--- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ASM/c/item_table.c b/ASM/c/item_table.c index 3cc18278d..a9e23212d 100644 --- a/ASM/c/item_table.c +++ b/ASM/c/item_table.c @@ -421,7 +421,7 @@ uint16_t resolve_text_small_keys_cmg(item_row_t *item_row, uint16_t item_id, boo uint16_t resolve_text_keyrings(item_row_t *item_row, uint16_t item_id, bool is_outgoing) { int16_t dungeon_id = item_row->effect_arg1; - if (item_id >= GI_SMALL_KEY_RING_FOREST_TEMPLE && item_id < GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL && KEYRING_BOSSKEY_CONDITION) { + if (item_id >= GI_SMALL_KEY_RING_TEMPLE_MIN && item_id <= GI_SMALL_KEY_RING_TEMPLE_MAX && KEYRING_BOSSKEY_CONDITION) { return item_row->text_id + dungeon_id + 14; } return item_row->text_id + dungeon_id; @@ -441,11 +441,11 @@ item_row_t *get_item_row(uint16_t item_id) { /* uint16_t resolve_item_text_id(uint16_t item_id, bool is_outgoing) { item_row_t *item_row = get_item_row(item_id); - if ((item_id >= GI_SMALL_KEY_FOREST_TEMPLE && item_id <= GI_SMALL_KEY_GANONS_CASTLE) || (item_id >= GI_SMALL_KEY_MODEL_FOREST_TEMPLE && item_id <= GI_SMALL_KEY_MODEL_GANONS_CASTLE) || (SHUFFLE_CHEST_GAME && (item_id == GI_DOOR_KEY || item_id == GI_SMALL_KEY_MODEL_CHEST_GAME)) && !is_outgoing) { + if ((item_id >= GI_SMALL_KEY_MIN && item_id <= GI_SMALL_KEY_MAX) || (item_id >= GI_SMALL_KEY_MODEL_MIN && item_id <= GI_SMALL_KEY_MODEL_MAX) || (SHUFFLE_CHEST_GAME && (item_id == GI_DOOR_KEY || item_id == GI_SMALL_KEY_MODEL_CHEST_GAME)) && !is_outgoing) { return item_row->text_id + (z64_file.scene_flags[item_row->effect_arg1].unk_00_ >> 0x10); // Dynamically select the text box based on key count } // Change message for key rings when they include boss keys - if (item_id >= GI_SMALL_KEY_RING_FOREST_TEMPLE && item_id <= GI_SMALL_KEY_RING_SHADOW_TEMPLE && KEYRING_BOSSKEY_CONDITION) { + if (item_id >= GI_SMALL_KEY_RING_TEMPLE_MIN && item_id <= GI_SMALL_KEY_RING_TEMPLE_MAX && KEYRING_BOSSKEY_CONDITION) { return item_row->text_id + 9; } return item_row->text_id; diff --git a/ASM/c/item_table.h b/ASM/c/item_table.h index 10dcb13e2..5ee344911 100644 --- a/ASM/c/item_table.h +++ b/ASM/c/item_table.h @@ -6,6 +6,8 @@ #include "get_items.h" #include "z64.h" +// Enum that indexes into item_table. +// Please update comments accordingly when adding new entries typedef enum GetItemID { /* 0x0000 */ GI_NONE, /* 0x0001 */ GI_BOMBS_5, // Bombs (5) @@ -162,7 +164,8 @@ typedef enum GetItemID { /* 0x0093 */ GI_BOTTLE_WITH_BIG_POE, // Bottle with Big Poe /* 0x0094 */ GI_BOTTLE_WITH_POE, // Bottle with Poe - /* 0x0095 */ GI_BOSS_KEY_FOREST_TEMPLE, // Forest Temple Boss Key + /* 0x0095 */ GI_BOSS_KEY_TEMPLE, + /* 0x0095 */ GI_BOSS_KEY_FOREST_TEMPLE = GI_BOSS_KEY_TEMPLE, // Forest Temple Boss Key /* 0x0096 */ GI_BOSS_KEY_FIRE_TEMPLE, // Fire Temple Boss Key /* 0x0097 */ GI_BOSS_KEY_WATER_TEMPLE, // Water Temple Boss Key /* 0x0098 */ GI_BOSS_KEY_SPIRIT_TEMPLE, // Spirit Temple Boss Key @@ -191,7 +194,8 @@ typedef enum GetItemID { /* 0x00AD */ GI_MAP_BOTTOM_OF_THE_WELL, // Bottom of the Well Map /* 0x00AE */ GI_MAP_ICE_CAVERN, // Ice Cavern Map - /* 0x00AF */ GI_SMALL_KEY_FOREST_TEMPLE, // Forest Temple Small Key + /* 0x00AF */ GI_SMALL_KEY_MIN, + /* 0x00AF */ GI_SMALL_KEY_FOREST_TEMPLE = GI_SMALL_KEY_MIN, // Forest Temple Small Key /* 0x00B0 */ GI_SMALL_KEY_FIRE_TEMPLE, // Fire Temple Small Key /* 0x00B1 */ GI_SMALL_KEY_WATER_TEMPLE, // Water Temple Small Key /* 0x00B2 */ GI_SMALL_KEY_SPIRIT_TEMPLE, // Spirit Temple Small Key @@ -199,7 +203,8 @@ typedef enum GetItemID { /* 0x00B4 */ GI_SMALL_KEY_BOTTOM_OF_THE_WELL, // Bottom of the Well Small Key /* 0x00B5 */ GI_SMALL_KEY_GERUDO_TRAINING, // Gerudo Training Small Key /* 0x00B6 */ GI_SMALL_KEY_THIEVES_HIDEOUT, // Thieves' Hideout Small Key - /* 0x00B7 */ GI_SMALL_KEY_GANONS_CASTLE, // Ganon's Castle Small Key + /* 0x00AF */ GI_SMALL_KEY_MAX, + /* 0x00B7 */ GI_SMALL_KEY_GANONS_CASTLE = GI_SMALL_KEY_MAX, // Ganon's Castle Small Key /* 0x00B8 */ GI_DOUBLE_DEFENSE, // Double Defense /* 0x00B9 */ GI_MAGIC_METER, // Magic Meter @@ -224,11 +229,13 @@ typedef enum GetItemID { /* 0x00C9 */ GI_MAGIC_BEAN_PACK, // Magic Bean Pack /* 0x00CA */ GI_TRIFORCE_PIECE, // Triforce piece - /* 0x00CB */ GI_SMALL_KEY_RING_FOREST_TEMPLE, // Forest Temple Small Key Ring + /* 0x00CB */ GI_SMALL_KEY_RING_TEMPLE_MIN, + /* 0x00CB */ GI_SMALL_KEY_RING_FOREST_TEMPLE = GI_SMALL_KEY_RING_TEMPLE_MIN, // Forest Temple Small Key Ring /* 0x00CC */ GI_SMALL_KEY_RING_FIRE_TEMPLE, // Fire Temple Small Key Ring /* 0x00CD */ GI_SMALL_KEY_RING_WATER_TEMPLE, // Water Temple Small Key Ring /* 0x00CE */ GI_SMALL_KEY_RING_SPIRIT_TEMPLE, // Spirit Temple Small Key Ring - /* 0x00CF */ GI_SMALL_KEY_RING_SHADOW_TEMPLE, // Shadow Temple Small Key Ring + /* 0x00CF */ GI_SMALL_KEY_RING_TEMPLE_MAX, + /* 0x00CF */ GI_SMALL_KEY_RING_SHADOW_TEMPLE = GI_SMALL_KEY_RING_TEMPLE_MAX, // Shadow Temple Small Key Ring /* 0x00D0 */ GI_SMALL_KEY_RING_BOTTOM_OF_THE_WELL, // Bottom of the Well Small Key Ring /* 0x00D1 */ GI_SMALL_KEY_RING_GERUDO_TRAINING, // Gerudo Training Small Key Ring /* 0x00D2 */ GI_SMALL_KEY_RING_THIEVES_HIDEOUT, // Thieves' Hideout Small Key Ring @@ -294,13 +301,15 @@ typedef enum GetItemID { /* 0x0108 */ GI_OCARINA_BUTTON_C_RIGHT, // Ocarina C right // Custom Key Models - /* 0x0109 */ GI_BOSS_KEY_MODEL_FOREST_TEMPLE, // Forest Temple Boss Key + /* 0x0109 */ GI_BOSS_KEY_MODEL_MIN, + /* 0x0109 */ GI_BOSS_KEY_MODEL_FOREST_TEMPLE = GI_BOSS_KEY_MODEL_MIN, // Forest Temple Boss Key /* 0x010A */ GI_BOSS_KEY_MODEL_FIRE_TEMPLE, // Fire Temple Boss Key /* 0x010B */ GI_BOSS_KEY_MODEL_WATER_TEMPLE, // Water Temple Boss Key /* 0x010C */ GI_BOSS_KEY_MODEL_SPIRIT_TEMPLE, // Spirit Temple Boss Key /* 0x010D */ GI_BOSS_KEY_MODEL_SHADOW_TEMPLE, // Shadow Temple Boss Key /* 0x010E */ GI_BOSS_KEY_MODEL_GANONS_CASTLE, // Ganon's Castle Boss Key - /* 0x010F */ GI_SMALL_KEY_MODEL_FOREST_TEMPLE, // Forest Temple Small Key + /* 0x010F */ GI_SMALL_KEY_MODEL_MIN, + /* 0x010F */ GI_SMALL_KEY_MODEL_FOREST_TEMPLE = GI_SMALL_KEY_MODEL_MIN, // Forest Temple Small Key /* 0x0110 */ GI_SMALL_KEY_MODEL_FIRE_TEMPLE, // Fire Temple Small Key /* 0x0111 */ GI_SMALL_KEY_MODEL_WATER_TEMPLE, // Water Temple Small Key /* 0x0112 */ GI_SMALL_KEY_MODEL_SPIRIT_TEMPLE, // Spirit Temple Small Key @@ -308,12 +317,15 @@ typedef enum GetItemID { /* 0x0114 */ GI_SMALL_KEY_MODEL_BOTTOM_OF_THE_WELL, // Bottom of the Well Small Key /* 0x0115 */ GI_SMALL_KEY_MODEL_GERUDO_TRAINING, // Gerudo Training Small Key /* 0x0116 */ GI_SMALL_KEY_MODEL_THIEVES_HIDEOUT, // Thieves' Hideout Small Key - /* 0x0117 */ GI_SMALL_KEY_MODEL_GANONS_CASTLE, // Ganon's Castle Small Key + /* 0x0117 */ GI_SMALL_KEY_MODEL_MAX, + /* 0x0117 */ GI_SMALL_KEY_MODEL_GANONS_CASTLE = GI_SMALL_KEY_MODEL_MAX, // Ganon's Castle Small Key /* 0x0118 */ GI_SMALL_KEY_MODEL_CHEST_GAME, // Small Key (Chest Game) /* 0x0119 */ GI_RANDO_MAX } GetItemId; +_Static_assert(GI_RANDO_MAX == 0x0119, "Remember to update the comment and the assert for the value of GI_RANDO_MAX when adding new items"); + typedef enum { /* 0 */ BROWN_CHEST, // big default chest /* 1 */ BIG_ROOM_CLEAR_CHEST, // appear on room clear, store temp clear as permanent clear diff --git a/ASM/c/item_upgrades.c b/ASM/c/item_upgrades.c index 20073ba44..d288f7af5 100644 --- a/ASM/c/item_upgrades.c +++ b/ASM/c/item_upgrades.c @@ -185,12 +185,12 @@ uint16_t upgrade_key_model(z64_file_t *save, override_t override) { if (item_id == GI_DOOR_KEY) { // Treasure Chest Game Key return GI_SMALL_KEY_MODEL_CHEST_GAME; - } else if (item_id < GI_SMALL_KEY_FOREST_TEMPLE) { + } else if (item_id < GI_SMALL_KEY_MIN) { // Boss Keys - return item_id + GI_BOSS_KEY_MODEL_FOREST_TEMPLE - GI_BOSS_KEY_FOREST_TEMPLE; + return item_id + GI_BOSS_KEY_MODEL_MIN - GI_BOSS_KEY_TEMPLE; } else { // Small Keys - return item_id + GI_SMALL_KEY_MODEL_FOREST_TEMPLE - GI_SMALL_KEY_FOREST_TEMPLE; + return item_id + GI_SMALL_KEY_MODEL_MIN - GI_SMALL_KEY_MIN; } } else { return item_id; From 2be356c3969ff55072758ae09a0f37e2023be537 Mon Sep 17 00:00:00 2001 From: angie Date: Sat, 11 Nov 2023 19:00:11 -0300 Subject: [PATCH 8/9] review --- ASM/c/item_table.c | 2 +- ASM/c/item_table.h | 2 +- ItemList.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ASM/c/item_table.c b/ASM/c/item_table.c index a9e23212d..4c2f8395f 100644 --- a/ASM/c/item_table.c +++ b/ASM/c/item_table.c @@ -227,7 +227,7 @@ item_row_t item_table[GI_RANDO_MAX] = { [GI_BOLERO_OF_FIRE] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9092, 0x0196, 0x79, no_upgrade, give_song, 7, -1, NULL), // Bolero of Fire [GI_SERENADE_OF_WATER] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9093, 0x0196, 0x7A, no_upgrade, give_song, 8, -1, NULL), // Serenade of Water [GI_REQUIEM_OF_SPIRIT] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9094, 0x0196, 0x7B, no_upgrade, give_song, 9, -1, NULL), // Requiem of Spirit - [GI_NOCTURN_OF_SHADOW] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9095, 0x0196, 0x7C, no_upgrade, give_song, 10, -1, NULL), // Nocturn of Shadow + [GI_NOCTURNE_OF_SHADOW] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9095, 0x0196, 0x7C, no_upgrade, give_song, 10, -1, NULL), // Nocturn of Shadow [GI_PRELUDE_OF_LIGHT] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x9096, 0x0196, 0x7D, no_upgrade, give_song, 11, -1, NULL), // Prelude of Light [GI_ZELDAS_LULLABY] = ITEM_ROW(0x53, GILDED_CHEST, 0x41, -1, 0x909A, 0x00B6, 0x04, no_upgrade, give_song, 12, -1, NULL), // Zelda's Lullaby diff --git a/ASM/c/item_table.h b/ASM/c/item_table.h index 5ee344911..ea523a041 100644 --- a/ASM/c/item_table.h +++ b/ASM/c/item_table.h @@ -214,7 +214,7 @@ typedef enum GetItemID { /* 0x00BC */ GI_BOLERO_OF_FIRE, // Bolero of Fire /* 0x00BD */ GI_SERENADE_OF_WATER, // Serenade of Water /* 0x00BE */ GI_REQUIEM_OF_SPIRIT, // Requiem of Spirit - /* 0x00BF */ GI_NOCTURN_OF_SHADOW, // Nocturn of Shadow + /* 0x00BF */ GI_NOCTURNE_OF_SHADOW, // Nocturne of Shadow /* 0x00C0 */ GI_PRELUDE_OF_LIGHT, // Prelude of Light /* 0x00C1 */ GI_ZELDAS_LULLABY, // Zelda's Lullaby diff --git a/ItemList.py b/ItemList.py index 6b20e81ff..016d5124a 100644 --- a/ItemList.py +++ b/ItemList.py @@ -205,7 +205,7 @@ class GetItemId(IntEnum): GI_BOLERO_OF_FIRE = 0x00BC GI_SERENADE_OF_WATER = 0x00BD GI_REQUIEM_OF_SPIRIT = 0x00BE - GI_NOCTURN_OF_SHADOW = 0x00BF + GI_NOCTURNE_OF_SHADOW = 0x00BF GI_PRELUDE_OF_LIGHT = 0x00C0 GI_ZELDAS_LULLABY = 0x00C1 @@ -584,7 +584,7 @@ class GetItemId(IntEnum): 'song_id': 0x05, 'item_id': 0x5D, }), - 'Nocturne of Shadow': ('Song', True, GetItemId.GI_NOCTURN_OF_SHADOW, + 'Nocturne of Shadow': ('Song', True, GetItemId.GI_NOCTURNE_OF_SHADOW, { 'text_id': 0x77, 'song_id': 0x06, From 253c738ae89d6bda668c827137b6581c38b99d20 Mon Sep 17 00:00:00 2001 From: angie Date: Sun, 1 Sep 2024 16:37:39 -0400 Subject: [PATCH 9/9] some minor stuff --- ASM/c/objects.c | 5 +++-- Patches.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ASM/c/objects.c b/ASM/c/objects.c index e6c70ca6a..cc526b556 100644 --- a/ASM/c/objects.c +++ b/ASM/c/objects.c @@ -1,6 +1,7 @@ #include "objects.h" #include "z64.h" #include "get_items.h" +#include "item_table.h" extern uint8_t FIX_BROKEN_DROPS; @@ -27,10 +28,10 @@ void enitem00_set_link_incoming_item_id(z64_actor_t* actor, z64_game_t* game, in // Run z64_ActorOfferGetItem regardless of FIX_BROKEN_DROPS if (!z64_ActorOfferGetItem(&this->actor, game, incoming_item_id, 50.0f, 10.0f) && FIX_BROKEN_DROPS) { switch (incoming_item_id) { - case 0x43: // GI_MAGIC_SMALL + case GI_MAGIC_JAR_SMALL: // GI_MAGIC_SMALL z64_GiveItem(game, Z64_ITEM_MAGIC_SMALL); break; - case 0x44: // GI_MAGIC_LARGE + case GI_MAGIC_JAR_LARGE: // GI_MAGIC_LARGE z64_GiveItem(game, Z64_ITEM_MAGIC_LARGE); break; } diff --git a/Patches.py b/Patches.py index 5f9619d6d..cb8376279 100644 --- a/Patches.py +++ b/Patches.py @@ -2138,8 +2138,8 @@ def update_scrub_text(message: bytearray, text_replacement: list[str], default_p rom.write_byte(symbol, 0x01) # Autocollect incoming_item_id for magic jars are swapped in vanilla code - rom.write_int16(0xA88066, 0x0044) # Change GI_MAGIC_SMALL to GI_MAGIC_LARGE - rom.write_int16(0xA88072, 0x0043) # Change GI_MAGIC_LARGE to GI_MAGIC_SMALL + rom.write_int16(0xA88066, 0x0044) # Change GI_MAGIC_JAR_SMALL to GI_MAGIC_JAR_LARGE + rom.write_int16(0xA88072, 0x0043) # Change GI_MAGIC_JAR_LARGE to GI_MAGIC_JAR_SMALL else: # Remove deku shield drop from spirit pot because it's "vanilla behavior" # Replace actor parameters in scene 06, room 27 actor list