item_mdl_misc OK

This commit is contained in:
robojumper
2026-04-26 20:55:47 +02:00
parent f7b4c029fd
commit b80ede8f48
11 changed files with 2543 additions and 200 deletions
+18
View File
@@ -78,11 +78,19 @@ public:
static u32 getKeyPieceCount();
static u32 getSmallKeyCount();
static bool isJellyBlob(ITEM_ID item);
static bool isStarryFirefly(ITEM_ID item);
static bool isRupee(ITEM_ID item);
static bool isKeyPiece(ITEM_ID item);
static bool isTreasure(ITEM_ID item);
static bool isTear(ITEM_ID item);
bool isSingleArrow() const;
bool isTriforce() const;
u32 getParams2Lower_shift1_0x7() const;
static bool getItemGetEventName(u16 item, const char **outName);
static void itemGetEventStart(dAcBase_c *);
static void itemGetEventEnd(dAcBase_c *);
@@ -101,6 +109,16 @@ public:
static Trial_e getCurrentTrial();
enum Tear_e {
TEAR_0,
TEAR_1,
TEAR_2,
TEAR_3,
TEAR_MAX
};
static Tear_e getTearSubtype(ITEM_ID item);
static void healLink(u32 amount, bool); // move to dAcPy_c
static bool isPerformingInitialCollection() {
+43
View File
@@ -0,0 +1,43 @@
#ifndef TOBESORTED_ITEM_MDL_H
#define TOBESORTED_ITEM_MDL_H
#include "m/m3d/m_mdl.h"
#include "m/m_allocator.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "m/types_m.h"
#include "toBeSorted/mdl_base.h"
// all names made up
class dAcItem_c;
// vtable at 80533eb0
class dItemMdl_c : public dMdl_c {
public:
/* 0x08 */ virtual ~dItemMdl_c() {}
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) = 0;
/* 0x10 */ virtual void vt_0x10(u8) = 0;
/* 0x14 */ virtual void setScale(const mVec3_c &scale) = 0;
/* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) = 0;
/* 0x1C */ virtual void draw() = 0;
/* 0x20 */ virtual void vt_0x20() = 0;
/* 0x24 */ virtual void setPriorityDraw() = 0;
/* 0x28 */ virtual void unsetPriorityDraw() = 0;
/* 0x2C */ virtual m3d::smdl_c *getMdl() {
return nullptr;
}
enum ItemMdl0x14_e {
ITEM_MDL_UNK0x14_0,
ITEM_MDL_UNK0x14_1,
ITEM_MDL_UNK0x14_2,
ITEM_MDL_UNK0x14_3,
};
protected:
/* 0x10 */ dAcItem_c *mpItem;
/* 0x14 */ u8 field_0x14;
};
#endif
+228
View File
@@ -0,0 +1,228 @@
#ifndef TOBESORTED_ITEM_MDL_MISC_H
#define TOBESORTED_ITEM_MDL_MISC_H
#include "m/m3d/m_anmchr.h"
#include "m/m3d/m_anmmatclr.h"
#include "m/m3d/m_anmmdl.h"
#include "m/m3d/m_anmtexpat.h"
#include "m/m3d/m_anmtexsrt.h"
#include "m/m3d/m_mdl.h"
#include "m/m3d/m_smdl.h"
#include "m/types_m.h"
#include "toBeSorted/item_mdl.h"
class dItemMdlPut_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlPut_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() override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
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;
const char *getResFile;
const char *getResMdl;
};
static const MdlConfig sMdlConfig[];
static const u8 sMdlIdx[];
/* 0x18 */ m3d::smdl_c mGetMdl;
/* 0x34 */ m3d::smdl_c mPutMdl;
};
class dItemMdlShield_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlShield_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() override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
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;
const char *mdlName;
const char *anmName;
};
static const MdlConfig sMdlConfig[];
static const u8 sMdlIdx[];
/* 0x18 */ m3d::smdl_c mMdl;
/* 0x34 */ m3d::anmTexPat_c mAnmTexPat;
};
// Maybe a bad name because fairies etc. are also supported
class dItemMdlBottle_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlBottle_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() override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
/* 0x2C */ virtual m3d::smdl_c *getMdl() override {
return &mMdl.getModel();
}
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;
const char *anmName;
};
static const MdlConfig sMdlConfig[];
static const u8 sMdlIdx[];
/* 0x18 */ m3d::mdlAnmChr mMdl;
/* 0x80 */ u32 mFlags;
};
class dItemMdlTear_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlTear_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() override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
static bool isMdlForItemId(u16 itemId);
private:
struct MdlConfig {
f32 frame;
};
static const MdlConfig sMdlConfig[];
static const u8 sMdlIdx[];
/* 0x18 */ m3d::smdl_c mMdl1;
/* 0x34 */ m3d::smdl_c mMdl2;
/* 0x50 */ m3d::anmTexPat_c mAnmTexPat1;
/* 0x7C */ m3d::anmTexPat_c mAnmTexPat2;
/* 0xA8 */ m3d::anmTexSrt_c mAnmTexSrt1;
/* 0xD4 */ m3d::anmTexSrt_c mAnmTexSrt2;
};
class dItemMdlFirefly_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlFirefly_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() override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
/* 0x2C */ virtual m3d::smdl_c *getMdl() override;
static bool isMdlForItemId(u16 itemId);
private:
/* 0x18 */ m3d::smdl_c mMdl;
/* 0x34 */ m3d::anmMatClr_c mAnmMatClr;
};
// Maybe a bad name because crystals are also supported
class dItemMdlPotion_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlPotion_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() override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
/* 0x2C */ virtual m3d::smdl_c *getMdl() override;
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;
const char *anmChrName;
const char *anmTexSrtName;
};
static const MdlConfig sMdlConfig[];
static const u8 sMdlIdx[];
/* 0x18 */ m3d::smdl_c mMdl;
/* 0x34 */ m3d::anmChr_c mAnmChr;
/* 0x6C */ m3d::anmTexSrt_c mAnmTexSrt;
};
#endif
+183
View File
@@ -0,0 +1,183 @@
#ifndef TOBESORTED_ITEM_MDL_NAME_H
#define TOBESORTED_ITEM_MDL_NAME_H
#include "common.h"
// all names made up
enum ItemMdlIdx {
ITEMMDL_SMALL_KEY,
ITEMMDL_GREEN_RUPEE,
ITEMMDL_BLUE_RUPEE,
ITEMMDL_RED_RUPEE,
ITEMMDL_COMPLETE_TRIFORCE,
ITEMMDL_HEART,
ITEMMDL_SINGLE_ARROW,
ITEMMDL_BUNDLE_ARROWS,
ITEMMDL_GODDESS_WHITESWORD,
ITEMMDL_PRACTICE_SWORD,
ITEMMDL_GODDESS_SWORD,
ITEMMDL_GODDESS_LONGSWORD,
ITEMMDL_MASTER_SWORD,
ITEMMDL_TRUE_MASTER_SWORD,
ITEMMDL_SAILCLOTH,
ITEMMDL_GODDESS_HARP,
ITEMMDL_SPIRIT_VESSEL,
ITEMMDL_BOW,
ITEMMDL_CLAWSHOWS,
ITEMMDL_BIRD_STATUETTE,
ITEMMDL_AC_BK,
ITEMMDL_FS_BK,
ITEMMDL_SSH_BK,
ITEMMDL_KEY_PIECE,
ITEMMDL_SV_BK,
ITEMMDL_ET_BK,
ITEMMDL_LMF_BK,
ITEMMDL_SILVER_RUPEE,
ITEMMDL_GOLD_RUPEE,
ITEMMDL_RUPOOR,
ITEMMDL_5_CRYSTALS,
ITEMMDL_GLITTERING_SPORES,
ITEMMDL_5_BOMBS,
ITEMMDL_10_BOMBS,
ITEMMDL_STAMINA_FRUIT,
ITEMMDL_FARORE_TEAR,
ITEMMDL_DIN_TEAR,
ITEMMDL_NAYRU_TEAR,
ITEMMDL_SACRED_TEAR,
ITEMMDL_LIGHT_FRUIT,
ITEMMDL_1_CRYSTAL,
ITEMMDL_GUST_BELLOWS,
ITEMMDL_DUNGEON_MAP_FI,
ITEMMDL_DUNGEON_MAP,
ITEMMDL_SLINGSHOT,
ITEMMDL_BEETLE,
ITEMMDL_WATER,
ITEMMDL_MUSHROOM_SPORES,
ITEMMDL_DIGGING_MITTS,
ITEMMDL_5_DEKU_SEEDS,
ITEMMDL_10_DEKU_SEEDS,
ITEMMDL_GUARDIAN_POTION,
ITEMMDL_GUARDIAN_POTION_PLUS,
ITEMMDL_WATER_SCALE,
ITEMMDL_BUG_MEDAL,
ITEMMDL_BUG_NET,
ITEMMDL_FAIRY,
ITEMMDL_SACRED_WATER,
ITEMMDL_HOOK_BEETLE,
ITEMMDL_QUICK_BEETLE,
ITEMMDL_TOUGH_BEETLE,
ITEMMDL_HEART_POTION,
ITEMMDL_HEART_POTION_PLUS,
ITEMMDL_HEART_POTION_ALSO_PLUS,
ITEMMDL_STAMINA_POTION,
ITEMMDL_STAMINA_POTION_PLUS,
ITEMMDL_AIR_POTION,
ITEMMDL_AIR_POTION_PLUS,
ITEMMDL_BOTTLED_FAIRY,
ITEMMDL_IRON_BOW,
ITEMMDL_SACRED_BOW,
ITEMMDL_BOMB_BAG,
ITEMMDL_HEART_CONTAINER,
ITEMMDL_HEART_PIECE,
ITEMMDL_TRI_COURAGE,
ITEMMDL_TRI_POWER,
ITEMMDL_TRI_WISDOWM,
ITEMMDL_SEA_CHART,
ITEMMDL_MOGMA_MITTS,
ITEMMDL_HEART_MEDAL,
ITEMMDL_RUPEE_MEDAL,
ITEMMDL_TREASURE_MEDAL,
ITEMMDL_POTION_MEDAL,
ITEMMDL_CURSED_MEDAL,
ITEMMDL_MIGHTY_SCATTERSHOT,
ITEMMDL_85,
ITEMMDL_MEDIUM_WALLET,
ITEMMDL_BIG_WALLET,
ITEMMDL_GIANT_WALLET,
ITEMMDL_TYCOON_WALLET,
ITEMMDL_ADVENTURE_POUCH,
ITEMMDL_POUCH_EXPANSION,
ITEMMDL_LIFE_MEDAL,
ITEMMDL_WOODEN_SHIELD,
ITEMMDL_BANDED_SHIELD,
ITEMMDL_BRACED_SHIELD,
ITEMMDL_IRON_SHIELD,
ITEMMDL_REINFORCED_SHIELD,
ITEMMDL_FORTIFIED_SHIELD,
ITEMMDL_SACRED_SHIELD,
ITEMMDL_DIVINE_SHIELD,
ITEMMDL_GODDESS_SHIELD,
ITEMMDL_HYLIAN_SHIELD,
ITEMMDL_REVITALIZING_POTION,
ITEMMDL_REVITALIZING_POTION_PLUS,
ITEMMDL_SMALL_SEED_SATCHEL,
ITEMMDL_MEDIUM_SEED_SATCHEL,
ITEMMDL_LARGE_SEED_SATCHEL,
ITEMMDL_SMALL_QUIVER,
ITEMMDL_MEDIUM_QUIVER,
ITEMMDL_LARGE_QUIVER,
ITEMMDL_SMALL_BOMB_BAG,
ITEMMDL_MEDIUM_BOMB_BAG,
ITEMMDL_LARGE_BOMB_BAG,
ITEMMDL_WHIP,
ITEMMDL_FIRESHIELD_EARRINGS,
ITEMMDL_BIG_BUG_NET,
ITEMMDL_FARON_GRASSHOPPER,
ITEMMDL_WOODLAND_RHINO_BEETLE,
ITEMMDL_DEKU_HORNET,
ITEMMDL_SKYLOFT_MANTIS,
ITEMMDL_VOLCANIC_LADYBUG,
ITEMMDL_BLESSED_BUTTERFLY,
ITEMMDL_LANAYRU_ANT,
ITEMMDL_SAND_CICADA,
ITEMMDL_GERUDO_DRAGONFLY,
ITEMMDL_ELDIN_ROLLER,
ITEMMDL_SKY_STAG_BEETLE,
ITEMMDL_STARRY_FIREFLY,
ITEMMDL_BOTTLE,
ITEMMDL_CAWLIN_LETTER,
ITEMMDL_BEEDLE_INSECT_CAGE,
ITEMMDL_RATTLE,
ITEMMDL_HORNET_LARVAE,
ITEMMDL_BIRD_FEATHER,
ITEMMDL_TUMBLE_WEED,
ITEMMDL_LIZARD_TAIL,
ITEMMDL_ELDIN_ORE,
ITEMMDL_ANCIENT_FLOWER,
ITEMMDL_AMBER_RELIC,
ITEMMDL_DUSK_RELIC,
ITEMMDL_JELLY_BLOB,
ITEMMDL_MONSTER_CLAW,
ITEMMDL_MONSTER_HORN,
ITEMMDL_ORNAMENTAL_SKULL,
ITEMMDL_EVIL_CRYSTAL,
ITEMMDL_BLUE_BIRD_FEATHER,
ITEMMDL_GOLDEN_SKULL,
ITEMMDL_GODDESS_PLUME,
ITEMMDL_EMERALD_TABLET,
ITEMMDL_RUBY_TABLET,
ITEMMDL_AMBER_TABLET,
ITEMMDL_STONE_OF_TRIALS,
ITEMMDL_BALLAD_OF_THE_GODDESS,
ITEMMDL_FARORES_COURAGE,
ITEMMDL_NAYRUS_WISDOM,
ITEMMDL_DINS_POWER,
ITEMMDL_FARON_SOTH,
ITEMMDL_ELDIN_SOTH,
ITEMMDL_LANAYRU_SOTH,
ITEMMDL_ITEM_SOTH,
ITEMMDL_REVITALIZING_POTION_PLUS_PLUS,
ITEMMDL_HOT_SOUP,
ITEMMDL_COLD_SOUP,
ITEMMDL_LIFE_TREE_SEED,
ITEMMDL_LIFE_TREE_FRUIT,
ITEMMDL_EXTRA_WALLET,
ITEMMDL_MAX,
};
bool hasItemMdl(u16 itemId);
u16 getItemMdlIdx(u16 itemId);
#endif
+12
View File
@@ -0,0 +1,12 @@
#ifndef TOBESORTED_MDL_BASE_H
#define TOBESORTED_MDL_BASE_H
#include "egg/core/eggDisposer.h"
class dMdl_c : public EGG::Disposer {
protected:
dMdl_c();
virtual ~dMdl_c();
};
#endif