item_mdl_item OK

This commit is contained in:
robojumper
2026-04-30 22:38:49 +02:00
parent dfb2e9048b
commit 0146842436
9 changed files with 589 additions and 70 deletions
+16 -15
View File
@@ -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
+1 -1
View File
@@ -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"),
+2 -1
View File
@@ -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);
+34
View File
@@ -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
-47
View File
@@ -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;
+1 -1
View File
@@ -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,
+483
View File
@@ -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;
}
+51 -4
View File
@@ -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 */
+1 -1
View File
@@ -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 */