From 0146842436b0a9217c013ad61ab206b9854bc0c8 Mon Sep 17 00:00:00 2001 From: robojumper Date: Thu, 30 Apr 2026 22:38:49 +0200 Subject: [PATCH] item_mdl_item OK --- config/SOUE01/symbols.txt | 31 +- configure.py | 2 +- include/d/a/d_a_item.h | 3 +- include/toBeSorted/item_mdl_item.h | 34 ++ include/toBeSorted/item_mdl_misc.h | 47 --- include/toBeSorted/item_mdl_name.h | 2 +- src/toBeSorted/item_mdl_item.cpp | 483 +++++++++++++++++++++++++++++ src/toBeSorted/item_mdl_misc.cpp | 55 +++- src/toBeSorted/item_mdl_name.cpp | 2 +- 9 files changed, 589 insertions(+), 70 deletions(-) create mode 100644 include/toBeSorted/item_mdl_item.h create mode 100644 src/toBeSorted/item_mdl_item.cpp diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 688320b7..8fb46bc8 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -9522,16 +9522,17 @@ getMdl__16dItemMdlBottle_cFv = .text:0x8016F860; // type:function size:0x8 scope __dt__16dItemMdlBottle_cFv = .text:0x8016F870; // type:function size:0x70 scope:weak __dt__16dItemMdlShield_cFv = .text:0x8016F8E0; // type:function size:0x7C scope:weak __dt__13dItemMdlPut_cFv = .text:0x8016F960; // type:function size:0x7C scope:weak -hasItemModel = .text:0x8016F9E0; // type:function size:0x6C -getItemModelForItem = .text:0x8016FA50; // type:function size:0x2C0 -fn_8016FD10 = .text:0x8016FD10; // type:function size:0x8 -fn_8016FD20 = .text:0x8016FD20; // type:function size:0x8 -fn_8016FD30 = .text:0x8016FD30; // type:function size:0x8 -fn_8016FD40 = .text:0x8016FD40; // type:function size:0x34 -fn_8016FD80 = .text:0x8016FD80; // type:function size:0x10 -fn_8016FD90 = .text:0x8016FD90; // type:function size:0x10 -fn_8016FDA0 = .text:0x8016FDA0; // type:function size:0x8 -fn_8016FDB0 = .text:0x8016FDB0; // type:function size:0x70 +isMdlForItemId__14dItemMdlItem_cFUs = .text:0x8016F9E0; // type:function size:0x6C +init__14dItemMdlItem_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016FA50; // type:function size:0x2C0 +vt_0x10__14dItemMdlItem_cFUc = .text:0x8016FD10; // type:function size:0x8 +setScale__14dItemMdlItem_cFRC7mVec3_c = .text:0x8016FD20; // type:function size:0x8 +setLocalMtx__14dItemMdlItem_cFRC6mMtx_c = .text:0x8016FD30; // type:function size:0x8 +draw__14dItemMdlItem_cFv = .text:0x8016FD40; // type:function size:0x30 +vt_0x20__14dItemMdlItem_cFUs = .text:0x8016FD70; // type:function size:0x4 +setPriorityDraw__14dItemMdlItem_cFv = .text:0x8016FD80; // type:function size:0x10 +unsetPriorityDraw__14dItemMdlItem_cFv = .text:0x8016FD90; // type:function size:0x10 +getMdl__14dItemMdlItem_cFv = .text:0x8016FDA0; // type:function size:0x8 +__dt__14dItemMdlItem_cFv = .text:0x8016FDB0; // type:function size:0x70 isMdlForItemId__15dItemMdlRupee_cFUs = .text:0x8016FE20; // type:function size:0x4C init__15dItemMdlRupee_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016FE70; // type:function size:0x2C0 vt_0x10__15dItemMdlRupee_cFUc = .text:0x80170130; // type:function size:0x1C @@ -13469,7 +13470,7 @@ AcItem__isNaryruTear = .text:0x80250A20; // type:function size:0x10 AcItem__isSacredTear = .text:0x80250A30; // type:function size:0x10 isItemLightFruit = .text:0x80250A40; // type:function size:0x10 isSingleGratitudeCrystal = .text:0x80250A50; // type:function size:0x10 -isItemSligshot = .text:0x80250A60; // type:function size:0x10 +isSlingshot__9dAcItem_cF7ITEM_ID = .text:0x80250A60; // type:function size:0x10 is10DekuSeeds = .text:0x80250A70; // type:function size:0x10 AcItem__isHeartPiece = .text:0x80250A80; // type:function size:0x10 AcItem__isDekuHornet = .text:0x80250A90; // type:function size:0x10 @@ -13646,7 +13647,7 @@ ActorLink__hasLifeTreeSeeding = .text:0x80252730; // type:function size:0x38 AcItem__giveLifeTreeSeedling = .text:0x80252770; // type:function size:0x94 getExtraWalletCount__9dAcItem_cFv = .text:0x80252810; // type:function size:0x8 increaseExtraWalletCounter = .text:0x80252820; // type:function size:0xC -getTotalRequiredKeyPieceCount = .text:0x80252830; // type:function size:0x8 +getTotalRequiredKeyPieceCount__9dAcItem_cFv = .text:0x80252830; // type:function size:0x8 hasAllKeyPieces = .text:0x80252840; // type:function size:0x44 AcItem__getDefaultOffset = .text:0x80252890; // type:function size:0xC is4 = .text:0x802528A0; // type:function size:0x8 @@ -28363,8 +28364,8 @@ sMdlConfig__16dItemMdlBottle_c = .rodata:0x804E94F8; // type:object size:0x60 sMdlConfig__14dItemMdlTear_c = .rodata:0x804E9558; // type:object size:0x10 sMdlIdx__16dItemMdlPotion_c = .rodata:0x804E9568; // type:object size:0xA7 sMdlConfig__16dItemMdlPotion_c = .rodata:0x804E9610; // type:object size:0x40 -ITEM_MODEL_INDEX = .rodata:0x804E9650; // type:object size:0xA8 -ITEM_MODEL_DEFS = .rodata:0x804E96F8; // type:object size:0x350 +sMdlIdx__14dItemMdlItem_c = .rodata:0x804E9650; // type:object size:0xA8 +sMdlConfig__14dItemMdlItem_c = .rodata:0x804E96F8; // type:object size:0x350 RUPEE_ITEM_TO_TEX_FRAME = .rodata:0x804E9A48; // type:object size:0x38 data:2byte sEffectResourceIds = .rodata:0x804E9A80; // type:object size:0x18 data:2byte lbl_804E9A98 = .rodata:0x804E9A98; // type:object size:0xF data:string @@ -35240,7 +35241,7 @@ lbl_805289FC = .data:0x805289FC; // type:object size:0xA data:string lbl_80528A08 = .data:0x80528A08; // type:object size:0xE data:string lbl_80528A18 = .data:0x80528A18; // type:object size:0xE data:string lbl_80528A28 = .data:0x80528A28; // type:object size:0xE data:string -ItemModel_vtable = .data:0x80528A38; // type:object size:0x30 +__vt__14dItemMdlItem_c = .data:0x80528A38; // type:object size:0x30 lbl_80528A68 = .data:0x80528A68; // type:object size:0x9 data:string lbl_80528A74 = .data:0x80528A74; // type:object size:0x9 data:string __vt__15dItemMdlRupee_c = .data:0x80528A80; // type:object size:0x30 diff --git a/configure.py b/configure.py index 8db3ba6f..47ababb1 100644 --- a/configure.py +++ b/configure.py @@ -594,7 +594,7 @@ config.libs = [ Object(Matching, "toBeSorted/counters/key_piece_counter.cpp"), Object(Matching, "toBeSorted/counters/extra_wallet_counter.cpp"), Object(Matching, "toBeSorted/item_mdl_misc.cpp"), - Object(NonMatching, "toBeSorted/item_mdl_item.cpp"), + Object(Matching, "toBeSorted/item_mdl_item.cpp"), Object(Matching, "toBeSorted/item_mdl_rupee.cpp"), Object(NonMatching, "toBeSorted/item_mdl_light_fruit.cpp"), Object(NonMatching, "toBeSorted/item_mdl_stamina_fruit.cpp"), diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index fa07912b..cdaa3115 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -75,12 +75,13 @@ public: static u32 getHeartContainerHealthCount(); static u32 getGratitudeCrystalCount(); + static u32 getTotalRequiredKeyPieceCount(); static u32 getKeyPieceCount(); static u32 getSmallKeyCount(); static bool isJellyBlob(ITEM_ID item); static bool isStarryFirefly(ITEM_ID item); - + static bool isSlingshot(ITEM_ID item); static bool isRupee(ITEM_ID item); static bool isKeyPiece(ITEM_ID item); static bool isTreasure(ITEM_ID item); diff --git a/include/toBeSorted/item_mdl_item.h b/include/toBeSorted/item_mdl_item.h new file mode 100644 index 00000000..d2dbbfd1 --- /dev/null +++ b/include/toBeSorted/item_mdl_item.h @@ -0,0 +1,34 @@ +#ifndef TOBESORTED_ITEM_MDL_ITEM_H +#define TOBESORTED_ITEM_MDL_ITEM_H + +#include "m/m3d/m_smdl.h" +#include "toBeSorted/item_mdl.h" + + +class dItemMdlItem_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlItem_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20(u16 itemId) override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + /* 0x2C */ virtual m3d::smdl_c *getMdl() override; + + static bool isMdlForItemId(u16 itemId); + +private: + struct MdlConfig { + const char *resFile; + const char *mdlName; + }; + static const MdlConfig sMdlConfig[]; + static const u8 sMdlIdx[]; + + /* 0x18 */ m3d::smdl_c mMdl; +}; + +#endif diff --git a/include/toBeSorted/item_mdl_misc.h b/include/toBeSorted/item_mdl_misc.h index 0e0bc9dd..a595fbcb 100644 --- a/include/toBeSorted/item_mdl_misc.h +++ b/include/toBeSorted/item_mdl_misc.h @@ -25,20 +25,6 @@ public: static bool isMdlForItemId(u16 itemId); private: - enum MdlIdx { - MDL_PUT_ARROW, - MDL_PUT_ARROW_BUNDLE, - MDL_PUT_HEART, - MDL_PUT_KEY_SMALL, - MDL_PUT_BOMB_SET, - MDL_PUT_SEED, - MDL_PUT_HEART_UTUWA, - MDL_PUT_HEART_KAKERA, - MDL_PUT_TRI_FORCE, - MDL_PUT_GARAGARA, - MDL_PUT_MAX, - }; - struct MdlConfig { const char *putResFile; const char *putResMdl; @@ -67,19 +53,6 @@ public: static bool isMdlForItemId(u16 itemId); private: - enum ShieldIdx { - MDL_SHIELD_WOOD_0, - MDL_SHIELD_WOOD_1, - MDL_SHIELD_WOOD_2, - MDL_SHIELD_IRON_0, - MDL_SHIELD_IRON_1, - MDL_SHIELD_IRON_2, - MDL_SHIELD_HOLY_0, - MDL_SHIELD_HOLY_1, - MDL_SHIELD_HOLY_2, - MDL_SHIELD_MAX - }; - struct MdlConfig { f32 frame; const char *resFile; @@ -112,18 +85,6 @@ public: static bool isMdlForItemId(u16 itemId); private: - enum BottleIdx { - MDL_BOTTLE_WATER, - MDL_BOTTLE_FAIRY, - MDL_BOTTLE_HOLY, - MDL_BOTTLE_KUSURI, - MDL_BOTTLE_KUSURI_S, - MDL_BOTTLE_B_FAIRY, - MDL_BOTTLE_SOZAI_I, - MDL_BOTTLE_PUMPKIN, - MDL_BOTTLE_MAX - }; - struct MdlConfig { const char *resFile; const char *mdlName; @@ -202,14 +163,6 @@ public: static bool isMdlForItemId(u16 itemId); private: - enum PotionIdx { - MDL_POTION_MUTEKI, - MDL_POTION_GUTS, - MDL_POTION_AIR, - MDL_POTION_GENKI, - MDL_POTION_MAX, - }; - struct MdlConfig { const char *resFile; const char *mdlName; diff --git a/include/toBeSorted/item_mdl_name.h b/include/toBeSorted/item_mdl_name.h index 8d678dd0..bf01f59d 100644 --- a/include/toBeSorted/item_mdl_name.h +++ b/include/toBeSorted/item_mdl_name.h @@ -25,7 +25,7 @@ enum ItemMdlIdx { ITEMMDL_GODDESS_HARP, ITEMMDL_SPIRIT_VESSEL, ITEMMDL_BOW, - ITEMMDL_CLAWSHOWS, + ITEMMDL_CLAWSHOTS, ITEMMDL_BIRD_STATUETTE, ITEMMDL_AC_BK, ITEMMDL_FS_BK, diff --git a/src/toBeSorted/item_mdl_item.cpp b/src/toBeSorted/item_mdl_item.cpp new file mode 100644 index 00000000..db8d7dd4 --- /dev/null +++ b/src/toBeSorted/item_mdl_item.cpp @@ -0,0 +1,483 @@ +#include "toBeSorted/item_mdl_item.h" + +#include "common.h" +#include "d/a/d_a_item.h" +#include "d/a/d_a_itembase.h" +#include "sized_string.h" +#include "toBeSorted/arc_managers/oarc_manager.h" +#include "toBeSorted/item_mdl_name.h" + +enum ItemIdx { + MDL_ITEM_COMPLETE_TRIFORCE, + MDL_ITEM_GODDESS_WHITESWORD, + MDL_ITEM_PRACTICE_SWORD, + MDL_ITEM_GODDESS_SWORD, + MDL_ITEM_GODDESS_LONGSWORD, + MDL_ITEM_MASTER_SWORD, + MDL_ITEM_TRUE_MASTER_SWORD, + MDL_ITEM_SAILCLOTH, + MDL_ITEM_GODDESS_HARP, + MDL_ITEM_SPIRIT_VESSEL, + MDL_ITEM_BOW, + MDL_ITEM_CLAWSHOTS, + MDL_ITEM_BIRD_STATUETTE, + MDL_ITEM_AC_BK, + MDL_ITEM_FS_BK, + MDL_ITEM_SSH_BK, + MDL_ITEM_KEY_PIECE, + MDL_ITEM_SV_BK, + MDL_ITEM_ET_BK, + MDL_ITEM_LMF_BK, + MDL_ITEM_GLITTERING_SPORES, + MDL_ITEM_5_BOMBS, + MDL_ITEM_GUST_BELLOWS, + MDL_ITEM_DUNGEON_MAP, + MDL_ITEM_SLINGSHOT, + MDL_ITEM_BEETLE, + MDL_ITEM_MUSHROOM_SPORES, + MDL_ITEM_DIGGING_MITTS, + MDL_ITEM_28, // unused + MDL_ITEM_10_DEKU_SEEDS, + MDL_ITEM_WATER_SCALE, + MDL_ITEM_BUG_MEDAL, + MDL_ITEM_BUG_NET, + MDL_ITEM_HOOK_BEETLE, + MDL_ITEM_QUICK_BEETLE, + MDL_ITEM_TOUGH_BEETLE, + MDL_ITEM_IRON_BOW, + MDL_ITEM_SACRED_BOW, + MDL_ITEM_BOMB_BAG, + MDL_ITEM_SEA_CHART, + MDL_ITEM_MOGMA_MITTS, + MDL_ITEM_HEART_MEDAL, + MDL_ITEM_RUPEE_MEDAL, + MDL_ITEM_TREASURE_MEDAL, + MDL_ITEM_POTION_MEDAL, + MDL_ITEM_CURSED_MEDAL, + MDL_ITEM_MIGHTY_SCATTERSHOT, + MDL_ITEM_47, + MDL_ITEM_MEDIUM_WALLET, + MDL_ITEM_BIG_WALLET, + MDL_ITEM_GIANT_WALLET, + MDL_ITEM_TYCOON_WALLET, + MDL_ITEM_ADVENTURE_POUCH, + MDL_ITEM_POUCH_EXPANSION, + MDL_ITEM_LIFE_MEDAL, + MDL_ITEM_HYLIAN_SHIELD, + MDL_ITEM_REVITALIZING_POTION, + MDL_ITEM_SMALL_SEED_SATCHEL, + MDL_ITEM_MEDIUM_SEED_SATCHEL, + MDL_ITEM_LARGE_SEED_SATCHEL, + MDL_ITEM_SMALL_QUIVER, + MDL_ITEM_MEDIUM_QUIVER, + MDL_ITEM_LARGE_QUIVER, + MDL_ITEM_SMALL_BOMB_BAG, + MDL_ITEM_MEDIUM_BOMB_BAG, + MDL_ITEM_LARGE_BOMB_BAG, + MDL_ITEM_WHIP, + MDL_ITEM_FIRESHIELD_EARRINGS, + MDL_ITEM_BIG_BUG_NET, + MDL_ITEM_FARON_GRASSHOPPER, + MDL_ITEM_WOODLAND_RHINO_BEETLE, + MDL_ITEM_DEKU_HORNET, + MDL_ITEM_SKYLOFT_MANTIS, + MDL_ITEM_VOLCANIC_LADYBUG, + MDL_ITEM_BLESSED_BUTTERFLY, + MDL_ITEM_LANAYRU_ANT, + MDL_ITEM_SAND_CICADA, + MDL_ITEM_GERUDO_DRAGONFLY, + MDL_ITEM_ELDIN_ROLLER, + MDL_ITEM_SKY_STAG_BEETLE, + MDL_ITEM_BOTTLE, + MDL_ITEM_CAWLIN_LETTER, + MDL_ITEM_BEEDLE_INSECT_CAGE, + MDL_ITEM_HORNET_LARVAE, + MDL_ITEM_BIRD_FEATHER, + MDL_ITEM_TUMBLE_WEED, + MDL_ITEM_LIZARD_TAIL, + MDL_ITEM_ELDIN_ORE, + MDL_ITEM_ANCIENT_FLOWER, + MDL_ITEM_AMBER_RELIC, + MDL_ITEM_DUSK_RELIC, + MDL_ITEM_MONSTER_CLAW, + MDL_ITEM_MONSTER_HORN, + MDL_ITEM_ORNAMENTAL_SKULL, + MDL_ITEM_EVIL_CRYSTAL, + MDL_ITEM_BLUE_BIRD_FEATHER, + MDL_ITEM_GOLDEN_SKULL, + MDL_ITEM_GODDESS_PLUME, + MDL_ITEM_EMERALD_TABLET, + MDL_ITEM_RUBY_TABLET, + MDL_ITEM_AMBER_TABLET, + MDL_ITEM_STONE_OF_TRIALS, + MDL_ITEM_REVITALIZING_POTION_PLUS_PLUS, + MDL_ITEM_LIFE_TREE_SEED, + MDL_ITEM_LIFE_TREE_FRUIT, + MDL_ITEM_EXTRA_WALLET, + MDL_ITEM_MAX = 106, +}; + +const u8 dItemMdlItem_c::sMdlIdx[] = { + MDL_ITEM_MAX, /* ITEMMDL_SMALL_KEY */ + MDL_ITEM_MAX, /* ITEMMDL_GREEN_RUPEE */ + MDL_ITEM_MAX, /* ITEMMDL_BLUE_RUPEE */ + MDL_ITEM_MAX, /* ITEMMDL_RED_RUPEE */ + MDL_ITEM_COMPLETE_TRIFORCE, /* ITEMMDL_COMPLETE_TRIFORCE */ + MDL_ITEM_MAX, /* ITEMMDL_HEART */ + MDL_ITEM_MAX, /* ITEMMDL_SINGLE_ARROW */ + MDL_ITEM_MAX, /* ITEMMDL_BUNDLE_ARROWS */ + MDL_ITEM_GODDESS_WHITESWORD, /* ITEMMDL_GODDESS_WHITESWORD */ + MDL_ITEM_PRACTICE_SWORD, /* ITEMMDL_PRACTICE_SWORD */ + MDL_ITEM_GODDESS_SWORD, /* ITEMMDL_GODDESS_SWORD */ + MDL_ITEM_GODDESS_LONGSWORD, /* ITEMMDL_GODDESS_LONGSWORD */ + MDL_ITEM_MASTER_SWORD, /* ITEMMDL_MASTER_SWORD */ + MDL_ITEM_TRUE_MASTER_SWORD, /* ITEMMDL_TRUE_MASTER_SWORD */ + MDL_ITEM_SAILCLOTH, /* ITEMMDL_SAILCLOTH */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_GODDESS_HARP */ + MDL_ITEM_SPIRIT_VESSEL, /* ITEMMDL_SPIRIT_VESSEL */ + MDL_ITEM_BOW, /* ITEMMDL_BOW */ + MDL_ITEM_CLAWSHOTS, /* ITEMMDL_CLAWSHOTS */ + MDL_ITEM_BIRD_STATUETTE, /* ITEMMDL_BIRD_STATUETTE */ + MDL_ITEM_AC_BK, /* ITEMMDL_AC_BK */ + MDL_ITEM_FS_BK, /* ITEMMDL_FS_BK */ + MDL_ITEM_SSH_BK, /* ITEMMDL_SSH_BK */ + MDL_ITEM_KEY_PIECE, /* ITEMMDL_KEY_PIECE */ + MDL_ITEM_SV_BK, /* ITEMMDL_SV_BK */ + MDL_ITEM_ET_BK, /* ITEMMDL_ET_BK */ + MDL_ITEM_LMF_BK, /* ITEMMDL_LMF_BK */ + MDL_ITEM_MAX, /* ITEMMDL_SILVER_RUPEE */ + MDL_ITEM_MAX, /* ITEMMDL_GOLD_RUPEE */ + MDL_ITEM_MAX, /* ITEMMDL_RUPOOR */ + MDL_ITEM_MAX, /* ITEMMDL_5_CRYSTALS */ + MDL_ITEM_GLITTERING_SPORES, /* ITEMMDL_GLITTERING_SPORES */ + MDL_ITEM_5_BOMBS, /* ITEMMDL_5_BOMBS */ + MDL_ITEM_MAX, /* ITEMMDL_10_BOMBS */ + MDL_ITEM_MAX, /* ITEMMDL_STAMINA_FRUIT */ + MDL_ITEM_MAX, /* ITEMMDL_FARORE_TEAR */ + MDL_ITEM_MAX, /* ITEMMDL_DIN_TEAR */ + MDL_ITEM_MAX, /* ITEMMDL_NAYRU_TEAR */ + MDL_ITEM_MAX, /* ITEMMDL_SACRED_TEAR */ + MDL_ITEM_MAX, /* ITEMMDL_LIGHT_FRUIT */ + MDL_ITEM_MAX, /* ITEMMDL_1_CRYSTAL */ + MDL_ITEM_GUST_BELLOWS, /* ITEMMDL_GUST_BELLOWS */ + MDL_ITEM_DUNGEON_MAP, /* ITEMMDL_DUNGEON_MAP_FI */ + MDL_ITEM_DUNGEON_MAP, /* ITEMMDL_DUNGEON_MAP */ + MDL_ITEM_SLINGSHOT, /* ITEMMDL_SLINGSHOT */ + MDL_ITEM_BEETLE, /* ITEMMDL_BEETLE */ + MDL_ITEM_MAX, /* ITEMMDL_WATER */ + MDL_ITEM_MUSHROOM_SPORES, /* ITEMMDL_MUSHROOM_SPORES */ + MDL_ITEM_DIGGING_MITTS, /* ITEMMDL_DIGGING_MITTS */ + MDL_ITEM_MAX, /* ITEMMDL_5_DEKU_SEEDS */ + MDL_ITEM_10_DEKU_SEEDS, /* ITEMMDL_10_DEKU_SEEDS */ + MDL_ITEM_MAX, /* ITEMMDL_GUARDIAN_POTION */ + MDL_ITEM_MAX, /* ITEMMDL_GUARDIAN_POTION_PLUS */ + MDL_ITEM_WATER_SCALE, /* ITEMMDL_WATER_SCALE */ + MDL_ITEM_BUG_MEDAL, /* ITEMMDL_BUG_MEDAL */ + MDL_ITEM_BUG_NET, /* ITEMMDL_BUG_NET */ + MDL_ITEM_MAX, /* ITEMMDL_FAIRY */ + MDL_ITEM_MAX, /* ITEMMDL_SACRED_WATER */ + MDL_ITEM_HOOK_BEETLE, /* ITEMMDL_HOOK_BEETLE */ + MDL_ITEM_QUICK_BEETLE, /* ITEMMDL_QUICK_BEETLE */ + MDL_ITEM_TOUGH_BEETLE, /* ITEMMDL_TOUGH_BEETLE */ + MDL_ITEM_MAX, /* ITEMMDL_HEART_POTION */ + MDL_ITEM_MAX, /* ITEMMDL_HEART_POTION_PLUS */ + MDL_ITEM_MAX, /* ITEMMDL_HEART_POTION_ALSO_PLUS */ + MDL_ITEM_MAX, /* ITEMMDL_STAMINA_POTION */ + MDL_ITEM_MAX, /* ITEMMDL_STAMINA_POTION_PLUS */ + MDL_ITEM_MAX, /* ITEMMDL_AIR_POTION */ + MDL_ITEM_MAX, /* ITEMMDL_AIR_POTION_PLUS */ + MDL_ITEM_MAX, /* ITEMMDL_BOTTLED_FAIRY */ + MDL_ITEM_IRON_BOW, /* ITEMMDL_IRON_BOW */ + MDL_ITEM_SACRED_BOW, /* ITEMMDL_SACRED_BOW */ + MDL_ITEM_BOMB_BAG, /* ITEMMDL_BOMB_BAG */ + MDL_ITEM_MAX, /* ITEMMDL_HEART_CONTAINER */ + MDL_ITEM_MAX, /* ITEMMDL_HEART_PIECE */ + MDL_ITEM_MAX, /* ITEMMDL_TRI_COURAGE */ + MDL_ITEM_MAX, /* ITEMMDL_TRI_POWER */ + MDL_ITEM_MAX, /* ITEMMDL_TRI_WISDOWM */ + MDL_ITEM_SEA_CHART, /* ITEMMDL_SEA_CHART */ + MDL_ITEM_MOGMA_MITTS, /* ITEMMDL_MOGMA_MITTS */ + MDL_ITEM_HEART_MEDAL, /* ITEMMDL_HEART_MEDAL */ + MDL_ITEM_RUPEE_MEDAL, /* ITEMMDL_RUPEE_MEDAL */ + MDL_ITEM_TREASURE_MEDAL, /* ITEMMDL_TREASURE_MEDAL */ + MDL_ITEM_POTION_MEDAL, /* ITEMMDL_POTION_MEDAL */ + MDL_ITEM_CURSED_MEDAL, /* ITEMMDL_CURSED_MEDAL */ + MDL_ITEM_MIGHTY_SCATTERSHOT, /* ITEMMDL_MIGHTY_SCATTERSHOT */ + MDL_ITEM_47, /* ITEMMDL_85 */ + MDL_ITEM_MEDIUM_WALLET, /* ITEMMDL_MEDIUM_WALLET */ + MDL_ITEM_BIG_WALLET, /* ITEMMDL_BIG_WALLET */ + MDL_ITEM_GIANT_WALLET, /* ITEMMDL_GIANT_WALLET */ + MDL_ITEM_TYCOON_WALLET, /* ITEMMDL_TYCOON_WALLET */ + MDL_ITEM_ADVENTURE_POUCH, /* ITEMMDL_ADVENTURE_POUCH */ + MDL_ITEM_POUCH_EXPANSION, /* ITEMMDL_POUCH_EXPANSION */ + MDL_ITEM_LIFE_MEDAL, /* ITEMMDL_LIFE_MEDAL */ + MDL_ITEM_MAX, /* ITEMMDL_WOODEN_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_BANDED_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_BRACED_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_IRON_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_REINFORCED_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_FORTIFIED_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_SACRED_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_DIVINE_SHIELD */ + MDL_ITEM_MAX, /* ITEMMDL_GODDESS_SHIELD */ + MDL_ITEM_HYLIAN_SHIELD, /* ITEMMDL_HYLIAN_SHIELD */ + MDL_ITEM_REVITALIZING_POTION, /* ITEMMDL_REVITALIZING_POTION */ + MDL_ITEM_REVITALIZING_POTION, /* ITEMMDL_REVITALIZING_POTION_PLUS */ + MDL_ITEM_SMALL_SEED_SATCHEL, /* ITEMMDL_SMALL_SEED_SATCHEL */ + MDL_ITEM_MEDIUM_SEED_SATCHEL, /* ITEMMDL_MEDIUM_SEED_SATCHEL */ + MDL_ITEM_LARGE_SEED_SATCHEL, /* ITEMMDL_LARGE_SEED_SATCHEL */ + MDL_ITEM_SMALL_QUIVER, /* ITEMMDL_SMALL_QUIVER */ + MDL_ITEM_MEDIUM_QUIVER, /* ITEMMDL_MEDIUM_QUIVER */ + MDL_ITEM_LARGE_QUIVER, /* ITEMMDL_LARGE_QUIVER */ + MDL_ITEM_SMALL_BOMB_BAG, /* ITEMMDL_SMALL_BOMB_BAG */ + MDL_ITEM_MEDIUM_BOMB_BAG, /* ITEMMDL_MEDIUM_BOMB_BAG */ + MDL_ITEM_LARGE_BOMB_BAG, /* ITEMMDL_LARGE_BOMB_BAG */ + MDL_ITEM_WHIP, /* ITEMMDL_WHIP */ + MDL_ITEM_FIRESHIELD_EARRINGS, /* ITEMMDL_FIRESHIELD_EARRINGS */ + MDL_ITEM_BIG_BUG_NET, /* ITEMMDL_BIG_BUG_NET */ + MDL_ITEM_FARON_GRASSHOPPER, /* ITEMMDL_FARON_GRASSHOPPER */ + MDL_ITEM_WOODLAND_RHINO_BEETLE, /* ITEMMDL_WOODLAND_RHINO_BEETLE */ + MDL_ITEM_DEKU_HORNET, /* ITEMMDL_DEKU_HORNET */ + MDL_ITEM_SKYLOFT_MANTIS, /* ITEMMDL_SKYLOFT_MANTIS */ + MDL_ITEM_VOLCANIC_LADYBUG, /* ITEMMDL_VOLCANIC_LADYBUG */ + MDL_ITEM_BLESSED_BUTTERFLY, /* ITEMMDL_BLESSED_BUTTERFLY */ + MDL_ITEM_LANAYRU_ANT, /* ITEMMDL_LANAYRU_ANT */ + MDL_ITEM_SAND_CICADA, /* ITEMMDL_SAND_CICADA */ + MDL_ITEM_GERUDO_DRAGONFLY, /* ITEMMDL_GERUDO_DRAGONFLY */ + MDL_ITEM_ELDIN_ROLLER, /* ITEMMDL_ELDIN_ROLLER */ + MDL_ITEM_SKY_STAG_BEETLE, /* ITEMMDL_SKY_STAG_BEETLE */ + MDL_ITEM_MAX, /* ITEMMDL_STARRY_FIREFLY */ + MDL_ITEM_BOTTLE, /* ITEMMDL_BOTTLE */ + MDL_ITEM_CAWLIN_LETTER, /* ITEMMDL_CAWLIN_LETTER */ + MDL_ITEM_BEEDLE_INSECT_CAGE, /* ITEMMDL_BEEDLE_INSECT_CAGE */ + MDL_ITEM_MAX, /* ITEMMDL_RATTLE */ + MDL_ITEM_HORNET_LARVAE, /* ITEMMDL_HORNET_LARVAE */ + MDL_ITEM_BIRD_FEATHER, /* ITEMMDL_BIRD_FEATHER */ + MDL_ITEM_TUMBLE_WEED, /* ITEMMDL_TUMBLE_WEED */ + MDL_ITEM_LIZARD_TAIL, /* ITEMMDL_LIZARD_TAIL */ + MDL_ITEM_ELDIN_ORE, /* ITEMMDL_ELDIN_ORE */ + MDL_ITEM_ANCIENT_FLOWER, /* ITEMMDL_ANCIENT_FLOWER */ + MDL_ITEM_AMBER_RELIC, /* ITEMMDL_AMBER_RELIC */ + MDL_ITEM_DUSK_RELIC, /* ITEMMDL_DUSK_RELIC */ + MDL_ITEM_MAX, /* ITEMMDL_JELLY_BLOB */ + MDL_ITEM_MONSTER_CLAW, /* ITEMMDL_MONSTER_CLAW */ + MDL_ITEM_MONSTER_HORN, /* ITEMMDL_MONSTER_HORN */ + MDL_ITEM_ORNAMENTAL_SKULL, /* ITEMMDL_ORNAMENTAL_SKULL */ + MDL_ITEM_EVIL_CRYSTAL, /* ITEMMDL_EVIL_CRYSTAL */ + MDL_ITEM_BLUE_BIRD_FEATHER, /* ITEMMDL_BLUE_BIRD_FEATHER */ + MDL_ITEM_GOLDEN_SKULL, /* ITEMMDL_GOLDEN_SKULL */ + MDL_ITEM_GODDESS_PLUME, /* ITEMMDL_GODDESS_PLUME */ + MDL_ITEM_EMERALD_TABLET, /* ITEMMDL_EMERALD_TABLET */ + MDL_ITEM_RUBY_TABLET, /* ITEMMDL_RUBY_TABLET */ + MDL_ITEM_AMBER_TABLET, /* ITEMMDL_AMBER_TABLET */ + MDL_ITEM_STONE_OF_TRIALS, /* ITEMMDL_STONE_OF_TRIALS */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_BALLAD_OF_THE_GODDESS */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_FARORES_COURAGE */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_NAYRUS_WISDOM */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_DINS_POWER */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_FARON_SOTH */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_ELDIN_SOTH */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_LANAYRU_SOTH */ + MDL_ITEM_GODDESS_HARP, /* ITEMMDL_ITEM_SOTH */ + MDL_ITEM_REVITALIZING_POTION_PLUS_PLUS, /* ITEMMDL_REVITALIZING_POTION_PLUS_PLUS */ + MDL_ITEM_MAX, /* ITEMMDL_HOT_SOUP */ + MDL_ITEM_MAX, /* ITEMMDL_COLD_SOUP */ + MDL_ITEM_LIFE_TREE_SEED, /* ITEMMDL_LIFE_TREE_SEED */ + MDL_ITEM_LIFE_TREE_FRUIT, /* ITEMMDL_LIFE_TREE_FRUIT */ + MDL_ITEM_EXTRA_WALLET, /* ITEMMDL_EXTRA_WALLET */ +}; + +const dItemMdlItem_c::MdlConfig dItemMdlItem_c::sMdlConfig[] = { + { "GetTriForce", "GetTriForce"}, + { "GetRupee", "GetRupee"}, + { "GetSwordA", "GetSwordA"}, + { "GetRupee", "GetRupee"}, + { "GetRupee", "GetRupee"}, + { "GetRupee", "GetRupee"}, + { "GetRupee", "GetRupee"}, + { "GetRupee", "GetRupee"}, + { "GetHarp", "GetHarp"}, + { "GetSirenFlower", "GetSirenFlower"}, + { "GetBowA", "GetBowA"}, + { "GetHookShot", "GetHookShot"}, + { "GetBirdStatue", "GetBirdStatue"}, + { "GetKeyBoss2A", "GetKeyBoss2A"}, + { "GetKeyBoss2B", "GetKeyBoss2B"}, + { "GetKeyBoss2C", "GetKeyBoss2C"}, + { "GetKeyKakera", nullptr}, + { "GetKeyBossA", "GetKeyBossA"}, + { "GetKeyBossB", "GetKeyBossB"}, + { "GetKeyBossC", "GetKeyBossC"}, + { "GetBottleKinokoA", "GetBottleKinokoA"}, + { "GetBomb", "GetBomb"}, + { "GetVacuum", "GetVacuum"}, + { "GetMap", "GetMap"}, + { "GetPachinkoA", "GetPachinkoA"}, + { "GetBeetleA", "GetBeetleA"}, + { "GetBottleKinokoB", "GetBottleKinokoB"}, + { "GetMoleGloveA", "GetMoleGloveA"}, + { "GetRupee", "GetRupee"}, + { "GetSeedSet", "GetSeedSet"}, + { "GetUroko", "GetUroko"}, + { "GetMedal", "GetMedalReturn"}, + { "GetNetA", "GetNetA"}, + { "GetBeetleB", "GetBeetleB"}, + { "GetBeetleC", "GetBeetleC"}, + { "GetBeetleD", "GetBeetleD"}, + { "GetBowB", "GetBowB"}, + { "GetBowC", "GetBowC"}, + { "GetBombBag", "GetBombBag"}, + { "GetMapSea", "GetMapSea"}, + { "GetMoleGloveB", "GetMoleGloveB"}, + { "GetMedal", "GetMedalHeart"}, + { "GetMedal", "GetMedalLucky"}, + { "GetMedal", "GetMedalHunter"}, + { "GetMedal", "GetMedalDurable"}, + { "GetMedal", "GetMedalDemon"}, + { "GetPachinkoB", "GetPachinkoB"}, + { "GetRupee", "GetRupee"}, + { "GetPurseB", "GetPurseB"}, + { "GetPurseC", "GetPurseC"}, + { "GetPurseD", "GetPurseD"}, + { "GetPurseE", "GetPurseE"}, + { "GetPouchA", "GetPorchA"}, + { "GetPouchB", "GetPorchB"}, + { "GetMedal", "GetMedalLife"}, + { "GetShieldHylia", "GetShieldHylia"}, + { "GetBottleRepair", "GetBottleRepair"}, + { "GetSpareSeedA", "GetSpareSeedA"}, + { "GetSpareSeedB", "GetSpareSeedB"}, + { "GetSpareSeedC", "GetSpareSeedC"}, + { "GetSpareQuiverA", "GetSpareQuiverA"}, + { "GetSpareQuiverB", "GetSpareQuiverB"}, + { "GetSpareQuiverC", "GetSpareQuiverC"}, + { "GetSpareBombBagA", "GetSpareBombBagA"}, + { "GetSpareBombBagB", "GetSpareBombBagB"}, + { "GetSpareBombBagC", "GetSpareBombBagC"}, + { "GetWhip", "GetWhip"}, + { "GetEarring", "GetEarring"}, + { "GetNetB", "GetNetB"}, + {"GetInsectGrasshopper", "GetInsectGrasshopper"}, + { "GetInsectBeetle", "GetInsectBeetle"}, + { "GetInsectBee", "GetInsectBee"}, + { "GetInsectKamakiri", "GetInsectKamakiri"}, + { "GetInsectLadybug", "GetInsectLadybug"}, + { "GetInsectButterfly", "GetInsectButterfly"}, + { "GetInsectAnt", "GetInsectAnt"}, + { "GetInsectCicada", "GetInsectCicada"}, + { "GetInsectDragonfly", "GetInsectDragonfly"}, + { "GetInsectScarab", "GetInsectScarab"}, + { "GetInsectKuwagata", "GetInsectKuwagata"}, + { "GetBottleEmpty", "GetBottleEmpty"}, + { "GetKobunALetter", "GetKobunALetter"}, + { "GetTerryCage", "GetTerryCage"}, + { "GetSozaiA", "GetSozaiA"}, + { "GetSozaiB", "GetSozaiB"}, + { "GetSozaiC", "GetSozaiC"}, + { "GetSozaiD", "GetSozaiD"}, + { "GetSozaiE", "GetSozaiE"}, + { "GetSozaiF", "GetSozaiF"}, + { "GetSozaiG", "GetSozaiG"}, + { "GetSozaiH", "GetSozaiH"}, + { "GetSozaiJ", "GetSozaiJ"}, + { "GetSozaiL", "GetSozaiL"}, + { "GetSozaiK", "GetSozaiK"}, + { "GetSozaiM", "GetSozaiM"}, + { "GetSozaiN", "GetSozaiN"}, + { "GetSozaiO", "GetSozaiO"}, + { "GetSozaiP", "GetSozaiP"}, + { "GetSekibanMapA", "SekibanMapA"}, + { "GetSekibanMapB", "SekibanMapB"}, + { "GetSekibanMapC", "SekibanMapC"}, + { "GetSirenKey", "GetSirenKey"}, + { "GetBottleRepairS", "GetBottleRepairS"}, + { "GetSeedLife", "GetSeedLife"}, + { "GetFruitB", "GetFruitB"}, + { "GetSparePurse", "GetSparePurse"}, +}; + +bool dItemMdlItem_c::isMdlForItemId(u16 itemId) { + if (hasItemMdl(itemId) == false) { + return false; + } else { + return sMdlIdx[getItemMdlIdx(itemId)] <= MDL_ITEM_MAX - 1; + } +} + +bool dItemMdlItem_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + const MdlConfig *mdlConfig; + bool scattershotOverride = dAcItem_c::isSlingshot((ITEM_ID)itemId) && dAcItem_c::checkFlag(ITEM_MIGHTY_SCATTERSHOT); + if (scattershotOverride) { + mdlConfig = &sMdlConfig[sMdlIdx[getItemMdlIdx(ITEM_MIGHTY_SCATTERSHOT)]]; + } else { + mdlConfig = &sMdlConfig[sMdlIdx[getItemMdlIdx(itemId)]]; + } + + void *resData = OarcManager::GetInstance()->getMdlFromArc2(mdlConfig->resFile); + if (resData == nullptr) { + return false; + } + nw4r::g3d::ResFile res(resData); + if (!res.IsValid()) { + return false; + } + + SizedString<0x20> str; + if (dAcItem_c::isKeyPiece((ITEM_ID)itemId)) { + if (dAcItem_c::getKeyPieceCount() < dAcItem_c::getTotalRequiredKeyPieceCount() - 1) { + str = "GetKeyKakeraA"; + } else { + str = "GetKeyKakeraB"; + } + } else { + str = mdlConfig->mdlName; + } + + nw4r::g3d::ResMdl mdl = res.GetResMdl(str); + if (!mdl.IsValid()) { + return false; + } + if (!mMdl.create(mdl, allocator, 0x120)) { + return false; + } + + mpItem = item; + return true; +} + +void dItemMdlItem_c::vt_0x10(u8 arg) { + field_0x14 = arg; +} + +void dItemMdlItem_c::setScale(const mVec3_c &scale) { + mMdl.setScale(scale); +} + +void dItemMdlItem_c::setLocalMtx(const mMtx_c &mtx) { + mMdl.setLocalMtx(mtx); +} + +void dItemMdlItem_c::draw() { + if (field_0x14 == ITEM_MDL_UNK0x14_2) { + mpItem->fn_8002ECD0(&mMdl, 6); + } else { + ITEM_MDL_UNK0x14_1: + mpItem->fn_8002ECD0(&mMdl, 7); + } +} + +void dItemMdlItem_c::vt_0x20(u16 itemId) { + // no-op +} + +void dItemMdlItem_c::setPriorityDraw() { + mMdl.setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlItem_c::unsetPriorityDraw() { + mMdl.setPriorityDraw(0x7F, 0x7F); +} + +m3d::smdl_c *dItemMdlItem_c::getMdl() { + return &mMdl; +} diff --git a/src/toBeSorted/item_mdl_misc.cpp b/src/toBeSorted/item_mdl_misc.cpp index 97194a1f..f9b0fbf9 100644 --- a/src/toBeSorted/item_mdl_misc.cpp +++ b/src/toBeSorted/item_mdl_misc.cpp @@ -12,6 +12,20 @@ #include "toBeSorted/arc_managers/oarc_manager.h" #include "toBeSorted/item_mdl_name.h" +enum MdlIdx { + MDL_PUT_ARROW, + MDL_PUT_ARROW_BUNDLE, + MDL_PUT_HEART, + MDL_PUT_KEY_SMALL, + MDL_PUT_BOMB_SET, + MDL_PUT_SEED, + MDL_PUT_HEART_UTUWA, + MDL_PUT_HEART_KAKERA, + MDL_PUT_TRI_FORCE, + MDL_PUT_GARAGARA, + MDL_PUT_MAX, +}; + const u8 dItemMdlPut_c::sMdlIdx[] = { MDL_PUT_KEY_SMALL, /* ITEMMDL_SMALL_KEY */ MDL_PUT_MAX, /* ITEMMDL_GREEN_RUPEE */ @@ -31,7 +45,7 @@ const u8 dItemMdlPut_c::sMdlIdx[] = { MDL_PUT_MAX, /* ITEMMDL_GODDESS_HARP */ MDL_PUT_MAX, /* ITEMMDL_SPIRIT_VESSEL */ MDL_PUT_MAX, /* ITEMMDL_BOW */ - MDL_PUT_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_PUT_MAX, /* ITEMMDL_CLAWSHOTS */ MDL_PUT_MAX, /* ITEMMDL_BIRD_STATUETTE */ MDL_PUT_MAX, /* ITEMMDL_AC_BK */ MDL_PUT_MAX, /* ITEMMDL_FS_BK */ @@ -289,6 +303,19 @@ void dItemMdlPut_c::unsetPriorityDraw() { mPutMdl.setPriorityDraw(0x7F, 0x7F); } +enum ShieldIdx { + MDL_SHIELD_WOOD_0, + MDL_SHIELD_WOOD_1, + MDL_SHIELD_WOOD_2, + MDL_SHIELD_IRON_0, + MDL_SHIELD_IRON_1, + MDL_SHIELD_IRON_2, + MDL_SHIELD_HOLY_0, + MDL_SHIELD_HOLY_1, + MDL_SHIELD_HOLY_2, + MDL_SHIELD_MAX +}; + const u8 dItemMdlShield_c::sMdlIdx[] = { MDL_SHIELD_MAX, /* ITEMMDL_SMALL_KEY */ MDL_SHIELD_MAX, /* ITEMMDL_GREEN_RUPEE */ @@ -308,7 +335,7 @@ const u8 dItemMdlShield_c::sMdlIdx[] = { MDL_SHIELD_MAX, /* ITEMMDL_GODDESS_HARP */ MDL_SHIELD_MAX, /* ITEMMDL_SPIRIT_VESSEL */ MDL_SHIELD_MAX, /* ITEMMDL_BOW */ - MDL_SHIELD_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_SHIELD_MAX, /* ITEMMDL_CLAWSHOTS */ MDL_SHIELD_MAX, /* ITEMMDL_BIRD_STATUETTE */ MDL_SHIELD_MAX, /* ITEMMDL_AC_BK */ MDL_SHIELD_MAX, /* ITEMMDL_FS_BK */ @@ -551,6 +578,18 @@ void dItemMdlShield_c::unsetPriorityDraw() { mMdl.setPriorityDraw(0x7F, 0x7F); } +enum BottleIdx { + MDL_BOTTLE_WATER, + MDL_BOTTLE_FAIRY, + MDL_BOTTLE_HOLY, + MDL_BOTTLE_KUSURI, + MDL_BOTTLE_KUSURI_S, + MDL_BOTTLE_B_FAIRY, + MDL_BOTTLE_SOZAI_I, + MDL_BOTTLE_PUMPKIN, + MDL_BOTTLE_MAX +}; + const u8 dItemMdlBottle_c::sMdlIdx[] = { MDL_BOTTLE_MAX, /* ITEMMDL_SMALL_KEY */ MDL_BOTTLE_MAX, /* ITEMMDL_GREEN_RUPEE */ @@ -570,7 +609,7 @@ const u8 dItemMdlBottle_c::sMdlIdx[] = { MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_HARP */ MDL_BOTTLE_MAX, /* ITEMMDL_SPIRIT_VESSEL */ MDL_BOTTLE_MAX, /* ITEMMDL_BOW */ - MDL_BOTTLE_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_BOTTLE_MAX, /* ITEMMDL_CLAWSHOTS */ MDL_BOTTLE_MAX, /* ITEMMDL_BIRD_STATUETTE */ MDL_BOTTLE_MAX, /* ITEMMDL_AC_BK */ MDL_BOTTLE_MAX, /* ITEMMDL_FS_BK */ @@ -1021,6 +1060,14 @@ m3d::smdl_c *dItemMdlFirefly_c::getMdl() { return &mMdl; } +enum PotionIdx { + MDL_POTION_MUTEKI, + MDL_POTION_GUTS, + MDL_POTION_AIR, + MDL_POTION_GENKI, + MDL_POTION_MAX, +}; + const u8 dItemMdlPotion_c::sMdlIdx[] = { MDL_POTION_MAX, /* ITEMMDL_SMALL_KEY */ MDL_POTION_MAX, /* ITEMMDL_GREEN_RUPEE */ @@ -1040,7 +1087,7 @@ const u8 dItemMdlPotion_c::sMdlIdx[] = { MDL_POTION_MAX, /* ITEMMDL_GODDESS_HARP */ MDL_POTION_MAX, /* ITEMMDL_SPIRIT_VESSEL */ MDL_POTION_MAX, /* ITEMMDL_BOW */ - MDL_POTION_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_POTION_MAX, /* ITEMMDL_CLAWSHOTS */ MDL_POTION_MAX, /* ITEMMDL_BIRD_STATUETTE */ MDL_POTION_MAX, /* ITEMMDL_AC_BK */ MDL_POTION_MAX, /* ITEMMDL_FS_BK */ diff --git a/src/toBeSorted/item_mdl_name.cpp b/src/toBeSorted/item_mdl_name.cpp index a0b95f77..a9587885 100644 --- a/src/toBeSorted/item_mdl_name.cpp +++ b/src/toBeSorted/item_mdl_name.cpp @@ -22,7 +22,7 @@ static const u16 ITEM_TO_MODEL_INDEX[512] = { ITEMMDL_SPIRIT_VESSEL, /* ITEM_SPIRIT_VESSEL */ ITEMMDL_MAX, /* ITEM_UNK_18 */ ITEMMDL_BOW, /* ITEM_BOW */ - ITEMMDL_CLAWSHOWS, /* ITEM_CLAWSHOTS */ + ITEMMDL_CLAWSHOTS, /* ITEM_CLAWSHOTS */ ITEMMDL_BIRD_STATUETTE, /* ITEM_BIRD_STATUETTE */ ITEMMDL_MAX, /* ITEM_COMMON_BUG */ ITEMMDL_MAX, /* ITEM_UNCOMMON_BUG */