Merge pull request #311 from robojumper/item_mdl

some item model stuff
This commit is contained in:
robojumper
2026-05-24 23:08:30 +02:00
committed by GitHub
51 changed files with 6929 additions and 602 deletions
+35 -4
View File
@@ -1220,10 +1220,37 @@ toBeSorted/counters/extra_wallet_counter.cpp:
.data start:0x805280B0 end:0x805280D0
.sbss start:0x80575640 end:0x80575648
toBeSorted/item_mdl.cpp:
.text start:0x8016E2A0 end:0x80171AA8 align:16
.rodata start:0x804E91D0 end:0x804E9A80
.data start:0x805280D0 end:0x80528B20
toBeSorted/item_mdl_misc.cpp:
.text start:0x8016E2A0 end:0x8016F9DC align:16
.rodata start:0x804E91D0 end:0x804E9650
.data start:0x805280D0 end:0x80528490
.sdata start:0x80572A10 end:0x80572A28
.sdata2 start:0x8057A1D8 end:0x8057A1E0
toBeSorted/item_mdl_item.cpp:
.text start:0x8016F9E0 end:0x8016FE20 align:16
.rodata start:0x804E9650 end:0x804E9A48
.data start:0x80528490 end:0x80528A68
.sdata start:0x80572A28 end:0x80572A70
toBeSorted/item_mdl_rupee.cpp:
.text start:0x8016FE20 end:0x80170414 align:16
.rodata start:0x804E9A48 end:0x804E9A80
.data start:0x80528A68 end:0x80528AB0
.sdata start:0x80572A70 end:0x80572A78
toBeSorted/item_mdl_light_fruit.cpp:
.text start:0x80170420 end:0x801708E4 align:16
.data start:0x80528AB0 end:0x80528AE0
.sdata start:0x80572A78 end:0x80572A90
toBeSorted/item_mdl_stamina_fruit.cpp:
.text start:0x801708F0 end:0x80170DA4 align:16
.data start:0x80528AE0 end:0x80528B20
.sdata start:0x80572A90 end:0x80572AA0
toBeSorted/item_spawn.cpp:
.text start:0x80170DB0 end:0x80171AA8 align:16
toBeSorted/unk_screen_effect.cpp:
.text start:0x80171AB0 end:0x801749D8 align:16
@@ -1468,12 +1495,14 @@ d/a/d_a_player.cpp:
.rodata start:0x804EACF0 end:0x804EBBB0
.data start:0x80530170 end:0x80533268
.sbss start:0x805757B8 end:0x805758B8
.sdata2 start:0x8057B650 end:0x8057BD88
d/a/d_a_item.cpp:
.text start:0x80247200 end:0x80258E58 align:16
.ctors start:0x804DB828 end:0x804DB82C
.rodata start:0x804EBBB0 end:0x804ED340
.data start:0x80533268 end:0x80534490
.sdata start:0x80573968 end:0x805739B0
.sbss start:0x805758B8 end:0x805758E0
.sdata2 start:0x8057BD88 end:0x8057BF80
.bss start:0x805B4490 end:0x805B48A8
@@ -1483,6 +1512,7 @@ d/a/obj/d_a_obj_bomb.cpp:
.ctors start:0x804DB82C end:0x804DB830
.rodata start:0x804ED340 end:0x804ED350
.data start:0x80534490 end:0x805347A8
.sdata start:0x805739B0 end:0x805739C8
.sbss start:0x805758E0 end:0x805758F0
d/a/obj/d_a_obj_arrow.cpp:
@@ -1490,6 +1520,7 @@ d/a/obj/d_a_obj_arrow.cpp:
.ctors start:0x804DB830 end:0x804DB834
.rodata start:0x804ED350 end:0x804ED380
.data start:0x805347A8 end:0x80534AD0
.sdata start:0x805739C8 end:0x805739D8
.sbss start:0x805758F0 end:0x80575900
d/a/obj/d_a_obj_boomerang.cpp:
+466 -450
View File
File diff suppressed because it is too large Load Diff
+8 -3
View File
@@ -413,7 +413,7 @@ config.libs = [
Object(Matching, "toBeSorted/d_lib.cpp"),
Object(NonMatching, "toBeSorted/unk_sorajima_list.cpp"),
Object(Matching, "toBeSorted/mpls.cpp"),
Object(NonMatching, "toBeSorted/mdl_base.cpp"),
Object(Matching, "toBeSorted/mdl_base.cpp"),
Object(Matching, "toBeSorted/d_exception.cpp"),
Object(NonMatching, "toBeSorted/d_jstudio.cpp"),
Object(Matching, "toBeSorted/save_file.cpp"),
@@ -583,7 +583,7 @@ config.libs = [
Object(Matching, "d/lyt/d_lyt_common_title.cpp"),
Object(Matching, "d/lyt/d_lyt_cursor_stick.cpp"),
Object(Matching, "toBeSorted/fi_context.cpp"),
Object(NonMatching, "toBeSorted/item_mdl_name.cpp"),
Object(Matching, "toBeSorted/item_mdl_name.cpp"),
Object(Matching, "toBeSorted/counters/counter.cpp"),
Object(NonMatching, "toBeSorted/counters/counters.cpp"),
Object(Matching, "toBeSorted/counters/rupee_counter.cpp"),
@@ -593,7 +593,12 @@ config.libs = [
Object(Matching, "toBeSorted/counters/slingshot_seed_counter.cpp"),
Object(Matching, "toBeSorted/counters/key_piece_counter.cpp"),
Object(Matching, "toBeSorted/counters/extra_wallet_counter.cpp"),
Object(NonMatching, "toBeSorted/item_mdl.cpp"),
Object(Matching, "toBeSorted/item_mdl_misc.cpp"),
Object(Matching, "toBeSorted/item_mdl_item.cpp"),
Object(NonMatching, "toBeSorted/item_mdl_rupee.cpp"), # should be Matching but non-deterministic codegen
Object(Matching, "toBeSorted/item_mdl_light_fruit.cpp"),
Object(Matching, "toBeSorted/item_mdl_stamina_fruit.cpp"),
Object(NonMatching, "toBeSorted/item_spawn.cpp"), # probably multiple files, see sdata2
Object(NonMatching, "toBeSorted/unk_screen_effect.cpp"),
Object(NonMatching, "toBeSorted/revision_info.cpp"),
Object(NonMatching, "d/a/d_a_bullet_base.cpp"),
+3 -2
View File
@@ -8,6 +8,7 @@
#include "m/m_allocator.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "sized_string.h"
#include "toBeSorted/actor_info.h"
#include "toBeSorted/raii_ptr.h"
#include "toBeSorted/sound_info.h"
@@ -109,8 +110,7 @@ public:
/* 0xEE */ u8 mPolyAttr0;
/* 0xEF */ u8 mPolyAttr1;
/* 0xF0 */ u32 mJStudioActor;
/* 0xF4 */ char someStr[4];
/* 0xF8 */ char field_0xf8[0xfc - 0xf8];
/* 0xF4 */ SizedString<8> mSomeStr;
public:
/* vt 0x08 */ virtual int create();
@@ -240,6 +240,7 @@ public:
void setParams2UpperByte(u32 val);
static u32 buildParams2(u32 lower, u32 upper);
u32 getParams2Lower() const;
u32 getFirstBitParams2() const;
static dAcBase_c *findActor(char *objName, dAcBase_c *parent);
static dAcBase_c *searchActor(dAcBase_c *parent);
// Kinda performs the code of the first param on every actor (second param is optional parent)
+658 -54
View File
@@ -1,14 +1,16 @@
#ifndef D_A_ITEM_H
#define D_A_ITEM_H
// clang-format off
// vtable order
#include "common.h"
#include "d/d_shadow.h"
#include "d/a/d_a_base.h"
#include "d/a/d_a_itembase.h"
#include "d/a/obj/d_a_obj_scattersand.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/c/c_cc_d.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_shadow.h"
#include "f/f_list_mg.h"
#include "f/f_list_nd.h"
#include "m/m_angle.h"
@@ -18,10 +20,100 @@
#include "toBeSorted/actor_event.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/dowsing_target.h"
// clang-format on
class dAcItem_0xB34 {
class dItemMdl_c;
class dAcItem_c;
/** Positions picked up items for a bit. */
class dAcItemPickupPositionIf_c {
public:
virtual ~dAcItem_0xB34();
virtual ~dAcItemPickupPositionIf_c() {}
virtual void init() = 0;
virtual bool execute(dAcItem_c *item) = 0;
};
/** No-op impl that immediately hides the item */
class dAcItemPickupPositionOff_c : public dAcItemPickupPositionIf_c {
public:
virtual ~dAcItemPickupPositionOff_c() {}
virtual void init() override;
virtual bool execute(dAcItem_c *item) override;
};
/** Impl that positions picked up items above Link's head */
class dAcItemPickupPositionOn_c : public dAcItemPickupPositionIf_c {
public:
virtual ~dAcItemPickupPositionOn_c() {}
virtual void init() override;
virtual bool execute(dAcItem_c *item) override;
private:
/* 0x04 */ f32 mHighestRelativeHeadHeight;
/* 0x08 */ u8 mNumFrames;
};
/** Respawns certain items. */
class dAcItemResurgeIf_c {
public:
virtual ~dAcItemResurgeIf_c() {}
virtual void setTimerInitVal(u16) = 0;
virtual void postReset() = 0;
virtual bool isResurgeAllowed(dAcItem_c *) = 0;
virtual s32 getTimerInitVal() = 0;
void startResurgeTimer();
bool canResurge(dAcItem_c *);
void resetTimer();
void execute();
bool isTimerExpired() const;
protected:
/* 0x04 */ s32 mTimer;
};
/** No-op impl that doesn't respawn items */
class dAcItemResurgeOff_c : public dAcItemResurgeIf_c {
public:
dAcItemResurgeOff_c(u16, u16) {}
virtual ~dAcItemResurgeOff_c() {}
virtual void setTimerInitVal(u16) override;
virtual void postReset() override;
virtual bool isResurgeAllowed(dAcItem_c *) override;
virtual s32 getTimerInitVal() override;
};
/** Impl that respawns items */
class dAcItemResurgeOn_c : public dAcItemResurgeIf_c {
public:
dAcItemResurgeOn_c(u16 a1, u16 a2) {
mCb1 = sCb1s[a1];
mCb2 = sCb2s[a2];
}
virtual ~dAcItemResurgeOn_c() {}
virtual void setTimerInitVal(u16) override;
virtual void postReset() override;
virtual bool isResurgeAllowed(dAcItem_c *) override;
virtual s32 getTimerInitVal() override;
public:
typedef void (dAcItemResurgeOn_c::*Callback1)();
// May or may not take a dAcItem_c* argument...
typedef bool (dAcItemResurgeOn_c::*Callback2)();
static Callback1 sCb1s[2];
static Callback2 sCb2s[3];
void Cb1_1();
void Cb1_2();
bool Cb2_1();
bool Cb2_2();
bool Cb2_3();
/* 0x08 */ Callback1 mCb1;
/* 0x14 */ Callback2 mCb2;
/* 0x20 */ s32 mInitVal;
};
class dAcItem_c : public dAcItemBase_c {
@@ -29,6 +121,24 @@ public:
dAcItem_c();
virtual ~dAcItem_c();
virtual bool createHeap() override;
virtual int create() override;
virtual int doDelete() override;
virtual int actorExecute() override;
virtual int draw() override;
virtual u16 getItemIdFromParams() override;
virtual void setItemId(u16 id) override;
virtual bool shouldDespawn();
virtual bool isItemSmallKeyOrHeartPieceOrStaminaFruit();
enum ItemGetAnim_e {
ANIM_DEFAULT,
ANIM_GORGEOUS,
ANIM_FROWN,
ANIM_SMALL,
};
STATE_FUNC_DECLARE(dAcItem_c, Wait);
STATE_FUNC_DECLARE(dAcItem_c, Carry);
STATE_FUNC_DECLARE(dAcItem_c, GetBeetle);
@@ -56,17 +166,23 @@ public:
static void setFlag(s32 id);
static bool checkTreasureTempCollect(u16 itemId);
void setItemPosition(const mVec3_c &);
void getItemFromBWheelItem();
bool isStateWait();
void setItemPosition(const mVec3_c &);
void setItemVelocity(f32 f);
bool isStateWait() const;
void stopCarryAndGet();
static s32 getTotalBombCount();
static s32 getTotalArrowCount();
static s32 getBowArrowCount();
static s32 getTotalSeedCount();
static s32 getSlingshotSeedCount();
static s32 getTotalBombCapacity();
static s32 getTotalSeedCapacity();
static s32 getBowArrowCapacity();
static s32 getTotalArrowCapacity();
static s32 getTotalSeedCapacity();
static s32 getSlingshotSeedCapacity();
static s32 getRupeeCounter();
static u32 getCurrentWalletCapacity();
@@ -75,20 +191,73 @@ 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 isTreasure2(ITEM_ID item);
static bool isTreasure(ITEM_ID item);
bool isTriforce() const;
static bool isTear(ITEM_ID item);
static bool isAnyPouchItem(ITEM_ID item);
static bool isUpgradedPotion(ITEM_ID item);
bool isLightFruit() const;
bool isSingleArrow() const;
bool isArrowBundle() const;
bool isAnyArrow() const;
bool isTriforce() const;
bool isGratitudeCrystal() const;
bool is5GratitudeCrystals() const;
bool isHeart() const;
bool isSmallKey() const;
bool isGreenRupee() const;
bool isBlueRupee() const;
bool isRedRupee() const;
bool isRupoor() const;
bool isSilverRupee() const;
bool isGoldRupee() const;
bool isSlingshot() const;
bool isEldinOre() const;
bool isJellyBlob() const;
bool isUnkTreasureGroup1() const;
bool isHeartPiece() const;
bool isTreasure3() const;
bool isInsect() const;
bool isAnyRupee() const;
bool isAnyTear() const;
bool isBabyRattle() const;
bool is10DekuSeeds() const;
bool isAnyBombs() const;
bool isLifeTreeFruit() const;
bool isBirdStatuette() const;
// These go through the vtable to retrieve the item id. Can't think of a better name for now
bool isKeyPieceV() const;
bool isHeartV() const;
bool isTreasureV() const;
bool isGratitudeCrystalV() const;
bool is5GratitudeCrystalsV() const;
bool isFairyV() const;
bool isBottleFairyV() const;
bool isStarryFireflyV() const;
bool isAnyRupeeV() const;
static void increaseRupeeCounter(s32 by);
u32 getParams2Lower_shift1_0x7() const;
static bool getEventNameForAnim(u32 anim, const char **outName);
static bool getTboxEventNameForAnim(u32 anim, const char **outName);
static bool getItemGetEventName(u16 item, const char **outName);
static bool getItemGetTboxEventName(u16 item, const char **outName);
static void itemGetEventStart(dAcBase_c *);
static void itemGetEventEnd(dAcBase_c *);
static void addRupees(s32 amount);
static bool hasAnyFairy();
enum Trial_e {
@@ -101,6 +270,16 @@ public:
static Trial_e getCurrentTrial();
enum Tear_e {
TEAR_FARON,
TEAR_ELDIN,
TEAR_LANAYRU,
TEAR_GODDESS,
TEAR_MAX
};
static Tear_e getTearSubtype(u32 item);
static void healLink(u32 amount, bool); // move to dAcPy_c
static bool isPerformingInitialCollection() {
@@ -116,10 +295,431 @@ public:
}
private:
bool isField_0xD04GtZero() const {
return 0.0f < field_0xD04;
}
static bool sIsPerformingInitialCollection;
static s32 sCollectionCurrentCount;
/* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system
static s32 sGetItemPouchSlot;
static s32 sGetItemQuantity;
static const mVec3_c sFreestandingDowsingOffset;
static const mVec3_c sScale1Maybe;
static const mVec3_c sScale2Maybe;
static const mVec3_c sUnkOffset1;
static const mVec3_c sUnkOffset2;
static const mVec3_c sUnkOffset3;
static const mVec3_c sUnkOffset4;
static const mVec3_c sUnkOffset5;
static const mVec3_c sUnkOffset6;
static const mVec2_c sUnkVec2;
typedef bool (dAcItem_c::*sStaticPtmf)();
static const sStaticPtmf sStaticPtmfs1[];
static const sStaticPtmf sStaticPtmfs2[];
static dAcRef_c<dAcObjBase_c> sItemListHead;
static dAcRef_c<dAcObjBase_c> sItemListTail;
static const ItemInitStruct *getItemInitStructForId(u16 itemId);
const ItemInitStruct *getItemInitStruct() const;
static void setTreasureTempCollect(u16 id);
static void setSpawnQuantity(s32 quantity);
static void unsetSpawnQuantity();
void setObtainedItemId(u32, bool);
bool checkItemFlagV() const;
void setItemFlagV();
bool checkFlagV() const;
void setFlagV();
void setSceneFlag();
void setDungeonFlag();
static void increaseKeyPieceCounter(s32 by);
static void increaseHeartPieceCounter(s32 by);
static void increaseTotalHeartPieceCounter(s32 by);
static void increaseFaronGrasshopperCounter(s32 by);
static s32 getFaronGrasshooperCounter();
static void increaseWoodlandRhinoBeetleCounter(s32 by);
static s32 getWoodlandRhinoBeetleCounter();
static void increaseDekuHornetCounter(s32 by);
static s32 getDekuHornetCounter();
static void increaseSkyloftMantisCounter(s32 by);
static s32 getSkyloftMantisCounter();
static void increaseVolcanicLadybugCounter(s32 by);
static s32 getVolcanicLadybugCounter();
static void increaseBlessedButterflyCounter(s32 by);
static s32 getBlessedButterflyCounter();
static void increaseLanayruAntCounter(s32 by);
static s32 getLanayruAntCounter();
static void increaseSandCicadaCounter(s32 by);
static s32 getSandCicadaCounter();
static void increaseGerudoDragonflyCounter(s32 by);
static s32 getGerudoDragonflyCounter();
static void increaseEldinRollerCounter(s32 by);
static s32 getEldinRollerCounter();
static void increaseSkyStagBeetleCounter(s32 by);
static s32 getSkyStagBeetleCounter();
static void increaseStarryFireflyCounter(s32 by);
static s32 getStarryFireflyCounter();
static void increaseHornetLarvaeCounter(s32 by);
static s32 getHornetLarvaeCounter();
static void increaseBirdFeatherCounter(s32 by);
static s32 getBirdFeatherCounter();
static void increaseTumbleWeedCounter(s32 by);
static s32 getTumbleWeedCounter();
static void increaseLizardTailCounter(s32 by);
static s32 getLizardTailCounter();
static void increaseEldinOreCounter(s32 by);
static s32 getEldinOreCounter();
static void increaseAncientFlowerCounter(s32 by);
static s32 getAncientFlowerCounter();
static void increaseAmberRelicCounter(s32 by);
static s32 getAmberRelicCounter();
static void increaseDuskRelicCounter(s32 by);
static s32 getDuskRelicCounter();
static void increaseJellyBlobCounter(s32 by);
static s32 getJellyBlobCounter();
static void increaseMonsterClawCounter(s32 by);
static s32 getMonsterClawCounter();
static void increaseMonsterHornCounter(s32 by);
static s32 getMonsterHornCounter();
static void increaseSkullCounter(s32 by);
static s32 getSkullCounter();
static void increaseEvilCrystalCounter(s32 by);
static s32 getEvilCrystalCounter();
static void increaseBlueBirdFeatherCounter(s32 by);
static s32 getBlueBirdFeatherCounter();
static void increaseGoldenSkullCounter(s32 by);
static s32 getGoldenSkullCounter();
static void increaseGoddessPlumeCounter(s32 by);
static s32 getGoddessPlumeCounter();
static void increaseGratitudeCrystalCounter(s32 by);
static s32 getGratitudeCrystalCounter();
static void increaseExtraWalletCounter(s32 by);
static s32 getExtraWalletCounter();
static void increaseSmallKeyCounter(s32 by);
static void increaseArrowCounter(s32 by);
static void increaseDekuSeedCounter(s32 by);
static void increaseArrowAndPouchCounter(s32 by);
static void increaseBombAndPouchCounter(s32 by);
static void increaseDekuSeedAndPouchCounter(s32 by);
static void increaseExtraPouchCounter(s32 by);
static void increaseHealthCapacity(s32 by);
static void setLifeTreeSeedlingFlag(s32 by);
static s32 getLightFruitTime();
static s32 getNumRemainingHeartPiecesForNextHeart();
static void doFullHeal();
static void restoreStamina();
bool isItemDropFromEnemy() const;
static u16 determineActualItemIdFromItem(u16);
u16 getItemId2() const;
static s32 getSubtypeFromParam(u32 params);
bool isFirstBitParams2NotSet();
void setupUnkColliderFlags2();
static bool hitCallback(dAcObjBase_c *i_actorA, cCcD_Obj *i_objInfA, dAcObjBase_c *i_actorB, cCcD_Obj *i_objInfB);
void fn_80253F90(bool);
void fn_80256790();
void fn_802567D0();
void onTouchLink();
void fn_80255DF0();
void fn_80254BB0();
void setDespawnTimer(u16 timer);
void applyBoundingBox();
s32 getTearIdx();
void setFreestandingYOffset(f32);
void setFramesInAir(u32 numFrames);
void unsetFramesInAir();
void incrementFramesInAir();
void setItemFlags(u32 flags);
/** Checks if the ground's specialCode should allow the item to sink, deleting the item when fully submerged */
bool isItemDeleteGround(s32 specialCode) const;
/** Checks if the ground's specialCode should allow the item to "dip" into the ground */
bool isItemSwimGround(s32 specialCode) const;
bool fn_80255CF0();
bool fn_802574A0();
void addToGetQueue();
void removeFromGetQueue();
static bool fn_8024A230();
void unsetHaveNoGravity();
void fn_80252A80();
void tickDespawnTimer();
void fn_80253D50();
bool fn_802577A0();
void fn_80256F20();
bool fn_80256E80();
void getCurrentModelScale(f32 *scale);
f32 getCurrentScale();
void fn_802518C0(mVec3_c *out);
void makeLinkLookTowardItem();
void fn_80254CA0();
void fn_802546A0();
void fn_80254710();
void fn_80254790();
bool checkAbovePosition();
bool isMdlHidden() const;
static bool isBlinkBeforeDespawnShown(s32 timer);
void performCollection();
void performCollectionPart1();
void performCollectionPart2();
void fn_80254BC0();
void fn_80255B10();
void updateLightingMaybe();
void fn_80253E20();
void fn_80254BA0();
void setNotWaiting();
void fn_802548A0();
void decideOnGetOrForcedGet();
void fn_80256710(mVec3_c &);
void fn_80257560(const mVec3_c &);
void fn_80254D10();
bool fn_80254D70();
void fn_802542E0();
static bool fn_80247BB0();
bool checkShouldDemo();
bool fn_80254EC0();
void addGetEvent();
void fn_80254590(mVec3_c &);
void fn_80254680();
void fn_80254810();
static s16 getItemRotateAngle();
bool playHeartStemCutSound();
void getOffsetPosition(mVec3_c &position) const;
f32 scaleBy(f32 f) const;
// Could also return vector
static void fn_80247540(mVec3_c &);
void fn_80247560(const mVec3_c &);
// static PTMF callbacks
bool fn_80248020();
bool fn_80248010();
bool fn_80255B30();
bool fn_80255BA0();
bool fn_80248040();
bool fn_80248030();
bool fn_80255BD0();
bool fn_80255C40();
// PTMF callbacks
f32 fn_80254DE0();
f32 fn_80254DF0();
f32 getSmallKeyFreestandingScale();
f32 getLowValueRupeeFreestandingScale();
f32 getHighValueRupeeFreestandingScale();
f32 getSlingshotFreestandingScale();
f32 getEldinOreFreestandingScale();
f32 getJellyBlobFreestandingScale();
f32 getUnkTreasureGroup1FreestandingScale();
f32 getHeartPieceFreestandingScale();
f32 getGratitudeCrystalFreestandingScale();
f32 getDefaultFreestandingScale();
f32 callGetFreestandingModelScale();
f32 getTreasure3Scale();
f32 getInsectScale();
f32 getDefaultScale();
f32 getHighValueRupeePickupScale();
f32 getDefaultPickupScale();
void moveNormal0();
void moveNormal1();
void moveSpecial();
void fn_802555D0();
void fn_802555F0();
void bounceNone();
void bounceNormal();
void bounceRupee();
void fn_802558F0();
void fn_80255AE0();
void fn_802558E0();
bool fn_80248060();
bool fn_80248050();
bool fn_80255D50();
bool fn_80255DB0();
void setLowValueRupeeBoundingBox();
void setHighValueRupeeBoundingBox();
void setArrowBundleBoundingBox();
void setDefaultBoundingBox();
f32 getSmallKeyGravity1();
f32 getGreenRupeeGravity1();
f32 getBlueRupeeGravity1();
f32 getRedRupeeGravity1();
f32 getHeartGravity1();
f32 getSingleArrowGravity1();
f32 getArrowBundleGravity1();
f32 getSilverRupeeGravity1();
f32 getGoldRupeeGravity1();
f32 getRupoorGravity1();
f32 get5BombsGravity1();
f32 get10BombsGravity1();
f32 getFaroreTearGravity1();
f32 get5SeedsGravity1();
f32 getDefaultGravity1();
f32 getHeartGravity2();
f32 getGreenRupeeGravity3();
f32 getBlueRupeeGravity3();
f32 getRedRupeeGravity3();
f32 getRupoorGravity3();
f32 getSilverRupeeGravity3();
f32 getGoldRupeeGravity3();
f32 getSmallKeyGravity4();
f32 getGreenRupeeGravity4();
f32 getBlueRupeeGravity4();
f32 getRedRupeeGravity4();
f32 getHeartGravity4();
f32 getSingleArrowGravity4();
f32 getArrowBundleGravity4();
f32 getSilverRupeeGravity4();
f32 getGoldRupeeGravity4();
f32 getRupoorGravity4();
f32 get5BombsGravity4();
f32 get10BombsGravity4();
f32 getFaroreTearGravity4();
f32 get5SeedsGravity4();
f32 getDefaultGravit4();
f32 getGreenRupeeDirHitKnockback();
f32 getBlueRupeeDirHitKnockback();
f32 getRedRupeeDirHitKnockback();
f32 getSilverRupeeDirHitKnockback();
f32 getGoldRupeeDirHitKnockback();
f32 getRupoorDirHitKnockback();
f32 getGreenRupeeDirHitKnockbackRand();
f32 getBlueRupeeDirHitKnockbackRand();
f32 getRedRupeeDirHitKnockbackRand();
f32 getSilverRupeeDirHitKnockbackRand();
f32 getGoldRupeeDirHitKnockbackRand();
f32 getRupoorDirHitKnockbackRand();
f32 getGreenRupeeHitKnockback();
f32 getBlueRupeeHitKnockback();
f32 getRedRupeeHitKnockback();
f32 getSilverRupeeHitKnockback();
f32 getGoldRupeeHitKnockback();
f32 getRupoorHitKnockback();
f32 getGreenRupeeHitKnockbackRand();
f32 getBlueRupeeHitKnockbackRand();
f32 getRedRupeeHitKnockbackRand();
f32 getSilverRupeeHitKnockbackRand();
f32 getGoldRupeeHitKnockbackRand();
f32 getRupoorHitKnockbackRand();
f32 getGreenRupeeHitSquareDistance2();
f32 getBlueRupeeHitSquareDistance2();
f32 getRedRupeeHitSquareDistance2();
f32 getSilverRupeeHitSquareDistance2();
f32 getGoldRupeeHitSquareDistance2();
f32 getRupoorHitSquareDistance2();
f32 getHeartHitSquareDistance2();
f32 getGreenRupeeDirHitKnockback2();
f32 getBlueRupeeDirHitKnockback2();
f32 getRedRupeeDirHitKnockback2();
f32 getSilverRupeeDirHitKnockback2();
f32 getGoldRupeeDirHitKnockback2();
f32 getRupoorDirHitKnockback2();
f32 getHeartDirHitKnockback2();
f32 getGreenRupeeDirHitKnockbackRand2();
f32 getBlueRupeeDirHitKnockbackRand2();
f32 getRedRupeeDirHitKnockbackRand2();
f32 getSilverRupeeDirHitKnockbackRand2();
f32 getGoldRupeeDirHitKnockbackRand2();
f32 getRupoorDirHitKnockbackRand2();
f32 getHeartDirHitKnockbackRand2();
f32 getGreenRupeeHitKnockback2();
f32 getBlueRupeeHitKnockback2();
f32 getRedRupeeHitKnockback2();
f32 getSilverRupeeHitKnockback2();
f32 getGoldRupeeHitKnockback2();
f32 getRupoorHitKnockback2();
f32 getHeartHitKnockback2();
f32 getGreenRupeeHitKnockbackRand2();
f32 getBlueRupeeHitKnockbackRand2();
f32 getRedRupeeHitKnockbackRand2();
f32 getSilverRupeeHitKnockbackRand2();
f32 getGoldRupeeHitKnockbackRand2();
f32 getRupoorHitKnockbackRand2();
f32 getHeartHitKnockbackRand2();
f32 getGreenRupeeDirHitKnockback3();
f32 getBlueRupeeDirHitKnockback3();
f32 getRedRupeeDirHitKnockback3();
f32 getSilverRupeeDirHitKnockback3();
f32 getGoldRupeeDirHitKnockback3();
f32 getRupoorDirHitKnockback3();
f32 getHeartDirHitKnockback3();
f32 getGreenRupeeDirHitKnockbackRand3();
f32 getBlueRupeeDirHitKnockbackRand3();
f32 getRedRupeeDirHitKnockbackRand3();
f32 getSilverRupeeDirHitKnockbackRand3();
f32 getGoldRupeeDirHitKnockbackRand3();
f32 getRupoorDirHitKnockbackRand3();
f32 getHeartDirHitKnockbackRand3();
f32 getGreenRupeeHitKnockback3();
f32 getBlueRupeeHitKnockback3();
f32 getRedRupeeHitKnockback3();
f32 getSilverRupeeHitKnockback3();
f32 getGoldRupeeHitKnockback3();
f32 getRupoorHitKnockback3();
f32 getHeartHitKnockback3();
f32 getGreenRupeeHitKnockbackRand3();
f32 getBlueRupeeHitKnockbackRand3();
f32 getRedRupeeHitKnockbackRand3();
f32 getSilverRupeeHitKnockbackRand3();
f32 getGoldRupeeHitKnockbackRand3();
f32 getRupoorHitKnockbackRand3();
f32 getHeartHitKnockbackRand3();
f32 getSinkSpeedHeart();
f32 getSinkSpeedDefault();
public:
void rotateTowardsCamera();
void rotateFixedBirdStatuette();
private:
/* 0x334 */ dItemMdl_c *mpMdl;
/* 0x338 */ dShadowCircle_c mShdw;
/* 0x340 */ mVec3_c field_0x340;
/* 0x34C */ nw4r::ut::Color mColorFilter;
@@ -138,45 +738,45 @@ private:
/* 0xA2C */ dEmitter_c mEff_0xA2C;
/* 0xA60 */ dEmitter_c mEff_0xA60;
/* 0xA94 */ dAcRef_c<dAcOScatterSand> mCoveredSand;
/* 0xAA0 */ dAcRef_c<dAcObjBase_c> mUnkRef;
/* 0xAAC */ mVec3_c posCopy;
/* 0xAA0 */ dAcRef_c<dAcObjBase_c> mForceSignRef;
/* 0xAAC */ mVec3_c mItemPosCopy;
/* 0xAB8 */ fLiNdBa_c mNode;
/* 0xAC4 */ ActorEventRelated mEventRelated;
/* 0xB14 */ DowsingTarget mDowsingTarget;
/* 0xB34 */ dAcItem_0xB34 *field_0xB34[2];
/* 0xB34 */ dAcItem_0xB34 *field_0xB3C;
/* 0xB40 */ UNKTYPE (dAcItem_c::*mFunc_0xB40)(UNKTYPE);
/* 0xB4C */ UNKTYPE (dAcItem_c::*mFunc_0xB4C)(UNKTYPE);
/* 0xB58 */ UNKTYPE (dAcItem_c::*mFunc_0xB58)(UNKTYPE);
/* 0xB64 */ UNKTYPE (dAcItem_c::*mFunc_0xB64)(UNKTYPE);
/* 0xB70 */ UNKTYPE (dAcItem_c::*mFunc_0xB70)(UNKTYPE);
/* 0xB7C */ UNKTYPE (dAcItem_c::*mFunc_0xB7C)(UNKTYPE);
/* 0xB88 */ UNKTYPE (dAcItem_c::*mFunc_0xB88)(UNKTYPE);
/* 0xB94 */ UNKTYPE (dAcItem_c::*mFunc_0xB94)(UNKTYPE);
/* 0xBA0 */ UNKTYPE (dAcItem_c::*mFunc_0xBA0)(UNKTYPE);
/* 0xB34 */ dAcItemPickupPositionIf_c *mpPickupPositionCtl[2];
/* 0xB34 */ dAcItemResurgeIf_c *mpResurgeCtl;
/* 0xB40 */ void (dAcItem_c::*mFnAction)();
/* 0xB4C */ void (dAcItem_c::*mFnBounce)();
/* 0xB58 */ void (dAcItem_c::*mFunc_0xB58)();
/* 0xB64 */ void (dAcItem_c::*mFnAction3)();
/* 0xB70 */ bool (dAcItem_c::*mFnAction4)();
/* 0xB7C */ f32 (dAcItem_c::*mFnGetGravity1)();
/* 0xB88 */ f32 (dAcItem_c::*mFnGetHeartGravity)();
/* 0xB94 */ f32 (dAcItem_c::*mFnGetRupeeGravity)();
/* 0xBA0 */ f32 (dAcItem_c::*mFnGetGravity4)();
/* 0xBAC */ UNKTYPE (dAcItem_c::*mFunc_0xBAC)(UNKTYPE);
/* 0xBB8 */ UNKTYPE (dAcItem_c::*mFunc_0xBB8)(UNKTYPE);
/* 0xBC4 */ UNKTYPE (dAcItem_c::*mFunc_0xBC4)(UNKTYPE);
/* 0xBD0 */ UNKTYPE (dAcItem_c::*mFunc_0xBD0)(UNKTYPE);
/* 0xBDC */ UNKTYPE (dAcItem_c::*mFunc_0xBDC)(UNKTYPE);
/* 0xBE8 */ UNKTYPE (dAcItem_c::*mFunc_0xBE8)(UNKTYPE);
/* 0xBF4 */ UNKTYPE (dAcItem_c::*mFunc_0xBF4)(UNKTYPE);
/* 0xC00 */ UNKTYPE (dAcItem_c::*mFunc_0xC00)(UNKTYPE);
/* 0xC0C */ UNKTYPE (dAcItem_c::*mFunc_0xC0C)(UNKTYPE);
/* 0xC18 */ UNKTYPE (dAcItem_c::*mFunc_0xC18)(UNKTYPE);
/* 0xC24 */ UNKTYPE (dAcItem_c::*mFunc_0xC24)(UNKTYPE);
/* 0xC30 */ UNKTYPE (dAcItem_c::*mFunc_0xC30)(UNKTYPE);
/* 0xC3C */ UNKTYPE (dAcItem_c::*mFunc_0xC3C)(UNKTYPE);
/* 0xC48 */ UNKTYPE (dAcItem_c::*mFunc_0xC48)(UNKTYPE);
/* 0xC54 */ UNKTYPE (dAcItem_c::*mFunc_0xC54)(UNKTYPE);
/* 0xC60 */ UNKTYPE (dAcItem_c::*mFunc_0xC60)(UNKTYPE);
/* 0xC6C */ UNKTYPE (dAcItem_c::*mFunc_0xC6C)(UNKTYPE);
/* 0xC78 */ UNKTYPE (dAcItem_c::*mFunc_0xC78)(UNKTYPE);
/* 0xC84 */ UNKTYPE (dAcItem_c::*mFunc_0xC84)(UNKTYPE);
/* 0xC90 */ UNKTYPE (dAcItem_c::*mFunc_0xC90)(UNKTYPE);
/* 0xC9C */ UNKTYPE (dAcItem_c::*mFunc_0xC9C)(UNKTYPE);
/* 0xCA8 */ UNKTYPE (dAcItem_c::*mFunc_0xCA8)(UNKTYPE);
/* 0xCB4 */ UNKTYPE (dAcItem_c::*mFunc_0xCB4)(UNKTYPE);
/* 0xBC4 */ f32 (dAcItem_c::*mFnGetFreestandingScale)();
/* 0xBD0 */ f32 (dAcItem_c::*mFnGetScale)();
/* 0xBDC */ f32 (dAcItem_c::*mFnGetPickupDemoScale)();
/* 0xBE8 */ f32 (dAcItem_c::*mFnCallGetFreestandingScale)();
/* 0xBF4 */ f32 (dAcItem_c::*mFnGetDirHitKnockback)();
/* 0xC00 */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand)();
/* 0xC0C */ f32 (dAcItem_c::*mFnGetHitKnockback)();
/* 0xC18 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand)();
/* 0xC24 */ f32 (dAcItem_c::*mFnGetHitSquareDistance2)();
/* 0xC30 */ f32 (dAcItem_c::*mFnGetDirHitKnockback2)();
/* 0xC3C */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand2)();
/* 0xC48 */ f32 (dAcItem_c::*mFnGetHitKnockback2)();
/* 0xC54 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand2)();
/* 0xC60 */ f32 (dAcItem_c::*mFnGetDirHitKnockback3)();
/* 0xC6C */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand3)();
/* 0xC78 */ f32 (dAcItem_c::*mFnGetHitKnockback3)();
/* 0xC84 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand3)();
/* 0xC90 */ f32 (dAcItem_c::*mFn_0xC90)();
/* 0xC9C */ void (dAcItem_c::*mFn_0xC9C)();
/* 0xCA8 */ void (dAcItem_c::*mFnSetBoundingBox)();
/* 0xCB4 */ f32 (dAcItem_c::*mFnGetSinkSpeed)();
/* 0xCC0 */ dAcRef_c<dAcItem_c> mItemQueuePrev;
/* 0xCCC */ dAcRef_c<dAcItem_c> mItemQueueNext;
/* 0xCD8 */ f32 field_0xCD8;
@@ -186,25 +786,28 @@ private:
/* 0xCE8 */ f32 field_0xCE8;
/* 0xCEC */ f32 field_0xCEC;
/* 0xCF0 */ u8 _CF0[0xD00 - 0xCF0];
/* 0xD00 */ f32 field_0xD00;
/* 0xD00 */ f32 mSinkOffset;
/* 0xD04 */ f32 field_0xD04;
/* 0xD08 */ u8 _D08[0xD14 - 0xD08];
/* 0xD08 */ f32 field_0xD08;
/* 0xD0C */ f32 field_0xD0C;
/* 0xD10 */ u8 _D10[0xD14 - 0xD10];
/* 0xD14 */ f32 mFreestandingOffsetH;
/* 0xD18 */ f32 field_0xD18;
/* 0xD1C */ int mGetItemPouchSlot;
/* 0xD20 */ int field_0xD20;
/* 0xD1C */ s32 mGetItemPouchSlot;
/* 0xD20 */ s32 field_0xD20;
/* 0xD24 */ u8 _D24[0xD2C - 0xD24];
/* 0xD2C */ u32 mFramesInAir;
/* 0xD30 */ int mItemQuantity;
/* 0xD30 */ u32 mItemQuantity;
/* 0xD34 */ u32 mItemFlags;
/* 0xD38 */ mAng3_c field_0xD38;
/* 0xD38 */ s16 field_0xD38;
/* 0xD3A */ s16 field_0xD3A;
/* 0xD3C */ s16 field_0xD3C;
/* 0xD3E */ u16 field_0xD3E;
/* 0xD40 */ mAng mMdlRotY;
/* 0xD40 */ s16 mMdlRotY;
/* 0xD42 */ s16 field_0xD42;
/* 0xD44 */ u16 mRealItemId;
/* 0xD46 */ s16 mDespawnTimer;
/* 0xD48 */ u8 field_0xD48;
/* 0xD49 */ u8 field_0xD49;
/* 0xD46 */ u16 mDespawnTimer;
/* 0xD48 */ mAng field_0xD48;
/* 0xD4A */ u8 field_0xD4A;
/* 0xD4B */ u8 field_0xD4B;
/* 0xD4C */ u8 field_0xD4C;
@@ -238,6 +841,7 @@ private:
public:
static fLiMgBa_c sItemList;
static fLiMgBa_c sUnusedList;
};
#endif
+12 -2
View File
@@ -234,11 +234,18 @@ struct ItemFlagStruct {
u8 mFlagKind;
u8 field_0x07;
};
struct ItemInitStruct {
u8 _0x00[0x0D - 0x00];
};
class dAcItemBase_c : public dAcObjBase_c {
public:
dAcItemBase_c() {}
virtual ~dAcItemBase_c() {}
virtual u16 getItemId();
virtual u16 getItemId() const;
virtual u16 getItemIdFromParams() = 0;
virtual void setItemId(u16 id);
static bool isValidItemTypeIdx(int itemId);
static bool getItemTypeFromId(u16 itemID, u32 *pOutType);
@@ -254,9 +261,12 @@ public:
return mId;
}
private:
protected:
u16 mId;
const ItemFlagStruct* getItemFlagStruct() const;
static const ItemFlagStruct* getItemFlagStruct(u16 id);
static const ItemFlagStruct sDefaultFlagStruct;
static const ItemFlagStruct sItemFlagStructs[167];
static const u32 sItemTypeFlags[MAX_ITEM_ID - 1];
+8 -1
View File
@@ -63,9 +63,16 @@ public:
|| isLanayruTrialAndCompleted()
|| isHyliaTrialAndCompleted();
}
void onCollectFirstTear() {
mFirstTearCollected = true;
}
private:
/* 0x330 */ u8 field_0x330[0xC66-0x330];
/* 0x330 */ u8 field_0x330[0xC66 - 0x330];
/* 0xC66 */ u8 mTrialIndexBitmask;
/* 0xC67 */ u8 field_0xC67[0xC8D - 0xC67];
/* 0xC8D */ bool mFirstTearCollected;
/* 0x??? */ STATE_MGR_DECLARE(dAcOWarp_c);
};
+1 -1
View File
@@ -388,7 +388,7 @@ public:
// bool ChkRoofHit() {
// return MaskRoofHit();
// }
void OffClrSpeedY() {
void SetClrSpeedY() {
mFlags |= CLR_SPEED_Y;
}
bool ChkClrSpeedY() {
+42 -6
View File
@@ -351,7 +351,7 @@ enum dCcD_ObjAtType {
/* 0x 0001 0000 */ AT_TYPE_BELLOWS = (1 << 16),
/* 0x 0002 0000 */ AT_TYPE_0x20000 = (1 << 17),
/* 0x 0004 0000 */ AT_TYPE_0x40000 = (1 << 18),
/* 0x 0008 0000 */ AT_TYPE_0x80000 = (1 << 19),
/* 0x 0008 0000 */ AT_TYPE_GLITTERING_SPORES = (1 << 19),
/* 0x 0010 0000 */ AT_TYPE_BUBBLE = (1 << 20),
/* 0x 0020 0000 */ AT_TYPE_0x200000 = (1 << 21),
/* 0x 0040 0000 */ AT_TYPE_BEETLE = (1 << 22),
@@ -361,7 +361,7 @@ enum dCcD_ObjAtType {
/* 0x 0400 0000 */ AT_TYPE_KOLOKTOS_SWORD = (1 << 26),
/* 0x 0800 0000 */ AT_TYPE_0x8000000 = (1 << 27),
/* 0x 0148 8200 */ AT_TYPE_COMMON0 =
AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND,
AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND,
};
enum cCcD_AtModifiers_e {
@@ -461,6 +461,10 @@ public:
void OffRPrm(u32 m) {
mRPrm = (mRPrm & ~m) | m;
}
void SetCallback(cCcD_HitCallback cb) {
mHit_cb = cb;
}
};
class cCcD_ObjAt : public cCcD_GAtTgCoCommonBase {
@@ -491,10 +495,6 @@ public:
return MskSPrm(1);
}
void SetCallback(cCcD_HitCallback cb) {
mHit_cb = cb;
}
u32 MskType(u32 mask) const {
return mSrc.mType & mask;
}
@@ -657,6 +657,10 @@ public:
field_0x4B = val;
}
void SetSrcField_0x0C(u16 val) {
mSrc.field_0x0C = val;
}
void SetInfo_0x1(u8 val) {
mSrc.mInfo.field_0x1 = val;
}
@@ -665,6 +669,10 @@ public:
mSrc.mInfo.field_0x2 = val;
}
void OnInfo_0x2(u16 val) {
mSrc.mInfo.field_0x2 |= val;
}
public:
/* 0x1C */ cCcD_SrcGObjTg mSrc;
/* 0x2C */ mVec3_c mAtHitDir;
@@ -825,6 +833,11 @@ public:
mCo.OnSPrm(f);
}
void OffTgCoFlag(u32 f) {
mTg.OffSPrm(f);
mCo.OffSPrm(f);
}
void SetAtType(u32 type) {
mAt.SetType(type);
}
@@ -858,6 +871,10 @@ public:
mTg.SetFlag_0xA(flag);
}
void SetTgSrcField_0x0C(u16 val) {
mTg.SetSrcField_0x0C(val);
}
bool ChkTgHit() {
return mTg.MskRPrm(1) != 0 && mTg.GetActor() != nullptr;
}
@@ -917,6 +934,10 @@ public:
mAt.SetCallback(cb);
}
void SetCoCallback(cCcD_HitCallback cb) {
mCo.SetCallback(cb);
}
u32 ChkTgNoAtHitInfSet() const {
return mTg.MskSPrm(0x40);
}
@@ -997,6 +1018,12 @@ public:
void OnTgElectric() {
return mTg.OnSPrm(0x40000);
}
void OnTg_0x800000() {
return mTg.OnSPrm(0x800000);
}
void OnTg_0x1000000() {
return mTg.OnSPrm(0x1000000);
}
void OnTg_0x8000000() {
return mTg.OnSPrm(0x8000000);
}
@@ -1006,6 +1033,9 @@ public:
void ClrTg_0x10000() {
return mTg.OffSPrm(0x10000);
}
void ClrTg_0x800000() {
return mTg.OffSPrm(0x800000);
}
void ClrTg_0x8000000() {
return mTg.OffSPrm(0x8000000);
}
@@ -1016,6 +1046,9 @@ public:
void OnTg_0x200000() {
mTg.OnSPrm(0x200000);
}
void ClrTg_0x200000() {
mTg.OffSPrm(0x200000);
}
void SetTg_0x4B(u8 val) {
mTg.Set_0x4B(val);
@@ -1026,6 +1059,9 @@ public:
void SetTgInfo_0x2(u16 val) {
mTg.SetInfo_0x2(val);
}
void OnTgInfo_0x2(u16 val) {
mTg.OnInfo_0x2(val);
}
void SetTg_0x40000000() {
mTg.OnSPrm(0x40000000);
}
+17
View File
@@ -0,0 +1,17 @@
#ifndef D_ANGLE_H
#define D_ANGLE_H
#include "m/m_angle.h"
#include "m/m_vec.h"
inline void setRotXY(mAng3_c &rot, s32 x, s32 y) {
rot.x.mVal = x;
rot.y.mVal = y;
rot.z.mVal = 0;
}
inline void setRotXYVec(mAng3_c &rot, const mVec3_c &direction) {
setRotXY(rot, -direction.atan2sY_XZ(), direction.atan2sX_Z());
}
#endif
+3
View File
@@ -29,4 +29,7 @@ void sortStock();
u16 itemCheckFindItemSlot(ITEM_ID item);
void collectPouchItem(u16 id);
void collectPouchItemIntoSlot(s32 slot, u16 id, u32, bool);
#endif
+13
View File
@@ -0,0 +1,13 @@
#ifndef D_T_FORCE_GET_FLAG_H
#define D_T_FORCE_GET_FLAG_H
#include "d/t/d_tg.h"
class dTgForceGetFlag_c : public dTg_c {
public:
static u32 tearIdxToParam(s32 tearNumber);
private:
};
#endif
@@ -1,6 +1,7 @@
#ifndef D_T_MINIGAME_INSECT_CAPTURE_H
#define D_T_MINIGAME_INSECT_CAPTURE_H
#include "d/a/d_a_base.h"
#include "d/t/d_tg.h"
class dTgMinigameInsectCapture_c : public dTg_c {
@@ -8,7 +9,14 @@ public:
dTgMinigameInsectCapture_c();
virtual ~dTgMinigameInsectCapture_c();
static dTgMinigameInsectCapture_c *GetInstance() {
return sInstance.get();
}
void recordCollectedInsect(s32 id, s32 count);
private:
static dAcRef_c<dTgMinigameInsectCapture_c> sInstance;
};
#endif
+10 -1
View File
@@ -31,12 +31,21 @@ public:
return sInstance->_hasCollectedAllTears();
}
static void setLightFruitTime(u16 time) {
if (sInstance == nullptr) {
return;
}
sInstance->mPillarTime = time;
}
private:
bool outOfTime() const;
bool _hasCollectedAllTears();
static dTgSiren_c *sInstance;
/* 0x0FC */ u8 _0x0FC[0x2C0 - 0x0FC];
/* 0x0FC */ u8 _0x0FC[0x140 - 0x0FC];
/* 0x140 */ u32 mPillarTime;
/* 0x144 */ u8 _0x144[0x2C0 - 0x144];
/* 0x2C0 */ Timekeeper mTimekeeper;
};
+43
View File
@@ -0,0 +1,43 @@
#ifndef TOBESORTED_ITEM_MDL_H
#define TOBESORTED_ITEM_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:
dItemMdl_c() : mDrawMode(DrawMode_None) {}
/* 0x08 */ virtual ~dItemMdl_c() {}
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) = 0;
/* 0x10 */ virtual void setDrawMode(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 changeItemId(u16 itemId) = 0;
/* 0x24 */ virtual void setPriorityDraw() = 0;
/* 0x28 */ virtual void unsetPriorityDraw() = 0;
/* 0x2C */ virtual m3d::smdl_c *getMdl() {
return nullptr;
}
enum DrawMode_e {
DrawMode_None,
DrawMode_Put,
DrawMode_Get,
DrawMode_Max,
};
protected:
/* 0x10 */ dAcItem_c *mpItem;
/* 0x14 */ u8 mDrawMode;
};
#endif
+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 setDrawMode(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 changeItemId(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
+30
View File
@@ -0,0 +1,30 @@
#ifndef TOBESORTED_ITEM_MDL_LIGHT_FRUIT_H
#define TOBESORTED_ITEM_MDL_LIGHT_FRUIT_H
#include "m/m3d/m_smdl.h"
#include "m/m3d/m_anmtexsrt.h"
#include "toBeSorted/item_mdl.h"
class dItemMdlLightFruit_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlLightFruit_c() {}
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override;
/* 0x10 */ virtual void setDrawMode(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 changeItemId(u16 itemId) override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
static bool isMdlForItemId(u16 itemId);
private:
/* 0x18 */ m3d::smdl_c mPutMdl;
/* 0x34 */ m3d::smdl_c mGetMdl;
/* 0x50 */ m3d::anmTexSrt_c mPutAnmTexSrt;
/* 0x7C */ m3d::anmTexSrt_c mGetAnmTexSrt;
};
#endif
+181
View File
@@ -0,0 +1,181 @@
#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_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 setDrawMode(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 changeItemId(u16 itemId) override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
static bool isMdlForItemId(u16 itemId);
private:
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 mPutMdl;
/* 0x34 */ m3d::smdl_c mGetMdl;
};
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 setDrawMode(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 changeItemId(u16 itemId) override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
static bool isMdlForItemId(u16 itemId);
private:
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:
dItemMdlBottle_c() : mFlags(0) {}
/* 0x08 */ virtual ~dItemMdlBottle_c() {}
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override;
/* 0x10 */ virtual void setDrawMode(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 changeItemId(u16 itemId) 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:
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 setDrawMode(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 changeItemId(u16 itemId) 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 mPutMdl;
/* 0x34 */ m3d::smdl_c mGetMdl;
/* 0x50 */ m3d::anmTexPat_c mPutAnmTexPat;
/* 0x7C */ m3d::anmTexPat_c mGetAnmTexPat;
/* 0xA8 */ m3d::anmTexSrt_c mPutAnmTexSrt;
/* 0xD4 */ m3d::anmTexSrt_c mGetAnmTexSrt;
};
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 setDrawMode(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 changeItemId(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:
/* 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 setDrawMode(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 changeItemId(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;
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_CLAWSHOTS,
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
+36
View File
@@ -0,0 +1,36 @@
#ifndef TOBESORTED_ITEM_MDL_RUPEE_H
#define TOBESORTED_ITEM_MDL_RUPEE_H
#include "m/m3d/m_anmtexpat.h"
#include "m/m3d/m_smdl.h"
#include "toBeSorted/item_mdl.h"
class dItemMdlRupee_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlRupee_c() {}
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override;
/* 0x10 */ virtual void setDrawMode(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 changeItemId(u16 itemId) override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
static bool isMdlForItemId(u16 itemId);
private:
struct MdlConfig {
u16 itemId;
f32 texPatFrame;
};
static const MdlConfig sMdlConfig[];
/* 0x18 */ m3d::smdl_c mPutMdl;
/* 0x34 */ m3d::smdl_c mGetMdl;
/* 0x50 */ m3d::anmTexPat_c mPutAnmTexPat;
/* 0x7C */ m3d::anmTexPat_c mGetAnmTexPat;
};
#endif
@@ -0,0 +1,30 @@
#ifndef TOBESORTED_ITEM_MDL_STAMINA_FRUIT_H
#define TOBESORTED_ITEM_MDL_STAMINA_FRUIT_H
#include "m/m3d/m_smdl.h"
#include "m/m3d/m_anmtexsrt.h"
#include "toBeSorted/item_mdl.h"
class dItemMdlStaminaFruit_c : public dItemMdl_c {
public:
/* 0x08 */ virtual ~dItemMdlStaminaFruit_c() {}
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override;
/* 0x10 */ virtual void setDrawMode(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 changeItemId(u16 itemId) override;
/* 0x24 */ virtual void setPriorityDraw() override;
/* 0x28 */ virtual void unsetPriorityDraw() override;
static bool isMdlForItemId(u16 itemId);
private:
/* 0x18 */ m3d::smdl_c mPutMdl;
/* 0x34 */ m3d::smdl_c mGetMdl;
/* 0x50 */ m3d::anmTexSrt_c mPutAnmTexSrt;
/* 0x7C */ m3d::anmTexSrt_c mGetAnmTexSrt;
};
#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
+1 -1
View File
@@ -60,7 +60,7 @@ static dCcD_SrcCyl sSrcCyl1 = {
/* mObjInf */
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_BELLOWS | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BELLOWS | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
0x4103,
{0, 0x4, 0x407},
0x0,
+1 -1
View File
@@ -357,7 +357,7 @@ int dAcEremly_c::actorExecute() {
} break;
case 12: {
if (!isState(StateID_Fly) && mAnimation != ANM_Swim && mAnimation != ANM_SwimDamage) {
if (mSph.ChkTgHit() && mSph.ChkTgAtHitType(AT_TYPE_0x80000 | AT_TYPE_SLINGSHOT)) {
if (mSph.ChkTgHit() && mSph.ChkTgAtHitType(AT_TYPE_GLITTERING_SPORES | AT_TYPE_SLINGSHOT)) {
mAngle.y = getXZAngleToPlayer();
mSpeed = -15.f;
changeState(StateID_Stun);
+3 -3
View File
@@ -91,7 +91,7 @@ static dCcD_SrcCyl sSrcCyl = {
{
/* mObjAt */ {AT_TYPE_PHYSICS, 0x10013, {0, 0, 0}, 4, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x2000111, {0, 0xF, 0x407}, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x2000111, {0, 0xF, 0x407}, 0, 0},
/* mObjCo*/ {0xE9},
},
{
@@ -102,7 +102,7 @@ static dCcD_SrcSph sSrcSph = {
{
/* mObjAt */ {AT_TYPE_PHYSICS, 0x10003, {0, 0, 0}, 4, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
0x2000111,
{0, 0xF, 0x407},
0,
@@ -185,7 +185,7 @@ int dAcOBarrel_c::actorCreate() {
}
mSph.Set(sSrcSph);
mSph.SetStts(mStts);
mObjAcch.OffClrSpeedY();
mObjAcch.SetClrSpeedY();
mAcceleration = -4.f;
mMaxSpeed = -40.f;
+1 -1
View File
@@ -12,7 +12,7 @@ dCcD_SrcSph dAcObjBirdSp_c::sCcSrc = {
/* mObjInf */ {
/* mObjAt */ {0, 2, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
// AT_TYPE_COMMON0 - AT_TYPE_WIND
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x00000105, {0, 00, 0x407}, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x00000105, {0, 00, 0x407}, 0, 0},
/* mObjCo */ {0x00004029}},
/* mSphInf */ {1000.0f}
};
+1 -1
View File
@@ -35,7 +35,7 @@ static dCcD_SrcCyl sChairColData = {
/* mObjInf */
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
0x111,
{0, 0x7, 0x407},
0x0,
+1 -1
View File
@@ -31,7 +31,7 @@ dCcD_SrcCps dAcODungeonShip_c::sCcSrc = {
{
{0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
0x111,
{0, 0, 0x407},
0,
@@ -40,7 +40,7 @@ bool dAcOFlyingClawshotTarget_c::createHeap() {
// clang-format off
const cCcD_SrcGObj dAcOFlyingClawshotTarget_c::sColSrc = {
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, 0},
/* mObjCo */ {0x0}
};
// clang-format on
+1 -1
View File
@@ -29,7 +29,7 @@ STATE_DEFINE(dAcOGrave_c, Move);
dCcD_SrcUnk dAcOGrave_c::sUnkSrc = {
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x407}, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x407}, 0, 0},
/* mObjCo */ {0}},
{-65.0f, 0.0f, -25.0f, 65.0f, 156.0f, 25.0f},
};
+1 -1
View File
@@ -23,7 +23,7 @@ dCcD_SrcSph dAcOpinwheel_c::sSphSrc = {
/* mObjInf */
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x8}, 8, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x8}, 8, 0},
/* mObjCo */ {0xE9}},
/* mSphInf */
{50.f},
+1 -1
View File
@@ -38,7 +38,7 @@ dCcD_SrcSph dAcOropeIgaiga_c::sSphSrc = {
/* mObjInf */
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x1F, {0, 0, 0}, 1, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_WIND | AT_TYPE_0x8000 | AT_TYPE_0x80000 | AT_TYPE_BEETLE | AT_TYPE_BUGNET), 0x311, {0, 0, 0x407}, 0, 0},
{~(AT_TYPE_WIND | AT_TYPE_0x8000 | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_BUGNET), 0x311, {0, 0, 0x407}, 0, 0},
/* mObjCo */ {0xA9}},
/* mSphInf */
{20.f},
+1 -1
View File
@@ -8,7 +8,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_SPIKE, dAcOspike_c, fProfile::OBJ_SPIKE, 0x1D9, 0, 2);
// clang-format off
dCcD_SrcUnk dAcOspike_c::sCcSrc = {
{{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, },
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, },
{0}},
{-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}};
// clang-format on
@@ -19,7 +19,7 @@ f32 dAcOtoD3StoneFigure_c::sHeight = 290.0f;
dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = {
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
0x1000111,
{0, 0x06, 0x407},
0,
+1 -1
View File
@@ -11,7 +11,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_TRIFORCE, dAcOtriforce_c, fProfile::OBJ_TRIFORCE, 0x15
// clang-format off
dCcD_SrcSph dAcOtriforce_c::sCcSrc = {
{{0, 0, 0, 0, 0, 0, 0, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, 0},
{0xE9}},
{150.0f}};
// clang-format on
+1 -1
View File
@@ -52,7 +52,7 @@ STATE_DEFINE(dAcOtubo_c, Rebirth);
dCcD_SrcSph dAcOtubo_c::sSphSrc = {
/* mObjInf */
{/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, 0},
/* mObjCo */ {0x1E9}},
/* mSphInf */
{30.f},
+2 -2
View File
@@ -34,7 +34,7 @@ STATE_DEFINE(dAcOTumbleWeed_c, Slope);
dCcD_SrcSph dAcOTumbleWeed_c::sSphSrc = {
/* mObjInf */
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, 0},
/* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, 0},
/* mObjCo */ {0xE9}},
/* mSphInf */
{60.f},
@@ -51,7 +51,7 @@ int dAcOTumbleWeed_c::actorCreate() {
mObjAcch.Set(this, 1, &mAcchCir);
mAcchCir.SetWall(20.f, 60.f);
mObjAcch.OffClrSpeedY();
mObjAcch.SetClrSpeedY();
mObjAcch.SetGndThinCellingOff();
mStts.SetRank(3);
+1 -1
View File
@@ -15,7 +15,7 @@ dCcD_SrcCyl dAcOwarpHole_c::sCylSrc = {
/* mObjInf */
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */
{~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), 0x111, {0, 0, 0x407}, 0, 0},
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), 0x111, {0, 0, 0x407}, 0, 0},
/* mObjCo */ {0x29}},
/* mCylInf */
{320.f, 300.f}
+3 -5
View File
@@ -53,10 +53,8 @@ dAcBase_c::dAcBase_c()
mViewClipIdx(s_Create_ViewClipIdx),
mActorNode(nullptr),
mRoomID(s_Create_RoomId),
mActorSubtype(s_Create_Subtype) {
mJStudioActor = 0;
someStr[0] = 0;
mActorSubtype(s_Create_Subtype),
mJStudioActor(0) {
if (s_Create_Position) {
setPosition(*s_Create_Position);
}
@@ -80,7 +78,7 @@ dAcBase_c::dAcBase_c()
if (mpActorInfo == nullptr) {
mpActorInfo = getActorInfoByProfileAndSubtype(mProfileName, mActorSubtype);
}
someStr[0] = '\0';
mSomeStr.empty();
}
dAcBase_c::~dAcBase_c() {}
+2333 -48
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -17,7 +17,7 @@ STATE_DEFINE(dAcArrow_c, Bound);
cCcD_SrcGObj dAcArrow_c::sCcSrcInf = {
{AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, 0, 0, 0, 0, 0, 0},
{
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT),
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT),
0x210, {0, 0, 0x407}, 0, 0
},
{0},
+4 -4
View File
@@ -92,7 +92,7 @@ static char *const sOpenEventNames[] = {
// TODO just copied from somewhere
const cCcD_SrcGObj dAcTbox_c::sColSrc = {
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, 0},
/* mObjCo */ {0xE9}
};
// clang-format on
@@ -1079,7 +1079,7 @@ int dAcTbox_c::create() {
// clang-format off
static const dCcD_SrcUnk s3 = {{
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {7, 0x407}, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {7, 0x407}, 0, 0},
/* mObjCo */ {0x0}},
{0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f},
};
@@ -1090,7 +1090,7 @@ int dAcTbox_c::create() {
// clang-format off
static const dCcD_SrcUnk s4 = {{
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {6, 0x407}, 0, 0},
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {6, 0x407}, 0, 0},
/* mObjCo */ {0x0}},
{0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f},
};
@@ -1962,7 +1962,7 @@ void dAcTbox_c::initializeState_Open() {
if (item != nullptr) {
mItemRef.link(item);
const char *evName;
if (dAcItem_c::getItemGetEventName(itemId, &evName)) {
if (dAcItem_c::getItemGetTboxEventName(itemId, &evName)) {
Event ev(evName, 300, 4, (void *)dAcItem_c::itemGetEventStart, (void *)dAcItem_c::itemGetEventEnd);
EventManager::changeOwnEvent(this, item, &ev, 0);
}
+1
View File
@@ -31,6 +31,7 @@ void dBgS_ObjRoofChk::ClearInstance() {
sInstance.ClearPi();
}
// TODO: const reference?
bool dBgS_ObjRoofChk::CheckPos(const mVec3_c *pPos) {
sInstance.SetPos(pPos);
sRoofHeight = dBgS::GetInstance()->RoofChk(&sInstance);
+1 -1
View File
@@ -335,7 +335,7 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) {
if (dMessage_c::getInstance()->getField_0x2FC() != -1) {
dMessage_c::getInstance()->setField_0x2FC(0x3C);
}
dAcItem_c::addRupees(params1n2);
dAcItem_c::increaseRupeeCounter(params1n2);
if ((s32)params1n2 > 0) {
dLytMeter_c::setRupyField_0x8AD(1);
}
+482
View File
@@ -0,0 +1,482 @@
#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::setDrawMode(u8 arg) {
mDrawMode = 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 (mDrawMode == DrawMode_Get) {
mpItem->fn_8002ECD0(&mMdl, 6);
} else {
mpItem->fn_8002ECD0(&mMdl, 7);
}
}
void dItemMdlItem_c::changeItemId(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;
}
+117
View File
@@ -0,0 +1,117 @@
#include "toBeSorted/item_mdl_light_fruit.h"
#include "common.h"
#include "d/a/d_a_item.h"
#include "d/a/d_a_itembase.h"
#include "toBeSorted/arc_managers/oarc_manager.h"
bool dItemMdlLightFruit_c::isMdlForItemId(u16 itemId) {
return itemId == ITEM_LIGHT_FRUIT;
}
bool dItemMdlLightFruit_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) {
if (item == nullptr) {
return false;
}
{
void *resData1 = OarcManager::GetInstance()->getMdlFromArc2("PutHoly");
if (resData1 == nullptr) {
return false;
}
nw4r::g3d::ResFile res1(resData1);
if (!res1.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl1 = res1.GetResMdl("PutHoly");
if (!mdl1.IsValid()) {
return false;
}
if (!mPutMdl.create(mdl1, allocator, 0x324)) {
return false;
}
nw4r::g3d::ResAnmTexSrt anmTexSrt1 = res1.GetResAnmTexSrt("Holy");
if (!anmTexSrt1.IsValid()) {
return false;
}
TRY_CREATE(mPutAnmTexSrt.create(mdl1, anmTexSrt1, allocator, nullptr, 1));
mPutMdl.setAnm(mPutAnmTexSrt);
}
{
void *resData2 = OarcManager::GetInstance()->getMdlFromArc2("GetHoly");
if (resData2 == nullptr) {
// return false;
}
nw4r::g3d::ResFile res2(resData2);
if (!res2.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl2 = res2.GetResMdl("GetHoly");
if (!mdl2.IsValid()) {
return false;
}
if (!mGetMdl.create(mdl2, allocator, 0x324)) {
return false;
}
nw4r::g3d::ResAnmTexSrt anmTexSrt2 = res2.GetResAnmTexSrt("Holy");
if (!anmTexSrt2.IsValid()) {
return false;
}
TRY_CREATE(mGetAnmTexSrt.create(mdl2, anmTexSrt2, allocator, nullptr, 1));
mGetMdl.setAnm(mGetAnmTexSrt);
}
mpItem = item;
return true;
}
void dItemMdlLightFruit_c::setDrawMode(u8 arg) {
if (arg == DrawMode_Max) {
mDrawMode = DrawMode_Put;
} else {
mDrawMode = arg;
}
}
void dItemMdlLightFruit_c::setScale(const mVec3_c &scale) {
mPutMdl.setScale(scale);
mGetMdl.setScale(scale);
}
void dItemMdlLightFruit_c::setLocalMtx(const mMtx_c &mtx) {
mPutMdl.setLocalMtx(mtx);
mGetMdl.setLocalMtx(mtx);
}
void dItemMdlLightFruit_c::draw() {
switch (mDrawMode) {
case DrawMode_Put:
mPutAnmTexSrt.play();
mpItem->fn_8002ECD0(&mPutMdl, 7);
break;
case DrawMode_Get:
mGetAnmTexSrt.play();
mpItem->fn_8002ECD0(&mGetMdl, 6);
break;
}
}
void dItemMdlLightFruit_c::changeItemId(u16 itemId) {
// no-op
}
void dItemMdlLightFruit_c::setPriorityDraw() {
mPutMdl.setPriorityDraw(0x82, 0x7F);
mGetMdl.setPriorityDraw(0x82, 0x7F);
}
void dItemMdlLightFruit_c::unsetPriorityDraw() {
mPutMdl.setPriorityDraw(0x7F, 0x7F);
mGetMdl.setPriorityDraw(0x7F, 0x7F);
}
File diff suppressed because it is too large Load Diff
+528
View File
@@ -0,0 +1,528 @@
#include "common.h"
#include "toBeSorted/item_mdl_name.h"
static const u16 ITEM_TO_MODEL_INDEX[512] = {
ITEMMDL_MAX, /* ITEM_NONE */
ITEMMDL_SMALL_KEY, /* ITEM_SMALL_KEY */
ITEMMDL_GREEN_RUPEE, /* ITEM_GREEN_RUPEE */
ITEMMDL_BLUE_RUPEE, /* ITEM_BLUE_RUPEE */
ITEMMDL_RED_RUPEE, /* ITEM_RED_RUPEE */
ITEMMDL_COMPLETE_TRIFORCE, /* ITEM_COMPLETE_TRIFORCE */
ITEMMDL_HEART, /* ITEM_HEART */
ITEMMDL_SINGLE_ARROW, /* ITEM_SINGLE_ARROW */
ITEMMDL_BUNDLE_ARROWS, /* ITEM_BUNDLE_ARROWS */
ITEMMDL_GODDESS_WHITESWORD, /* ITEM_GODDESS_WHITESWORD */
ITEMMDL_PRACTICE_SWORD, /* ITEM_PRACTICE_SWORD */
ITEMMDL_GODDESS_SWORD, /* ITEM_GODDESS_SWORD */
ITEMMDL_GODDESS_LONGSWORD, /* ITEM_GODDESS_LONGSWORD */
ITEMMDL_MASTER_SWORD, /* ITEM_MASTER_SWORD */
ITEMMDL_TRUE_MASTER_SWORD, /* ITEM_TRUE_MASTER_SWORD */
ITEMMDL_SAILCLOTH, /* ITEM_SAILCLOTH */
ITEMMDL_GODDESS_HARP, /* ITEM_GODDESS_HARP */
ITEMMDL_SPIRIT_VESSEL, /* ITEM_SPIRIT_VESSEL */
ITEMMDL_MAX, /* ITEM_UNK_18 */
ITEMMDL_BOW, /* ITEM_BOW */
ITEMMDL_CLAWSHOTS, /* ITEM_CLAWSHOTS */
ITEMMDL_BIRD_STATUETTE, /* ITEM_BIRD_STATUETTE */
ITEMMDL_MAX, /* ITEM_COMMON_BUG */
ITEMMDL_MAX, /* ITEM_UNCOMMON_BUG */
ITEMMDL_MAX, /* ITEM_RARE_BUG */
ITEMMDL_AC_BK, /* ITEM_AC_BK */
ITEMMDL_FS_BK, /* ITEM_FS_BK */
ITEMMDL_SSH_BK, /* ITEM_SSH_BK */
ITEMMDL_KEY_PIECE, /* ITEM_KEY_PIECE */
ITEMMDL_SV_BK, /* ITEM_SV_BK */
ITEMMDL_ET_BK, /* ITEM_ET_BK */
ITEMMDL_LMF_BK, /* ITEM_LMF_BK */
ITEMMDL_SILVER_RUPEE, /* ITEM_SILVER_RUPEE */
ITEMMDL_GOLD_RUPEE, /* ITEM_GOLD_RUPEE */
ITEMMDL_RUPOOR, /* ITEM_RUPOOR */
ITEMMDL_5_CRYSTALS, /* ITEM_5_CRYSTALS */
ITEMMDL_GLITTERING_SPORES, /* ITEM_GLITTERING_SPORES */
ITEMMDL_MAX, /* ITEM_UNK_37 */
ITEMMDL_MAX, /* ITEM_UNK_38 */
ITEMMDL_MAX, /* ITEM_UNK_39 */
ITEMMDL_5_BOMBS, /* ITEM_5_BOMBS */
ITEMMDL_10_BOMBS, /* ITEM_10_BOMBS */
ITEMMDL_STAMINA_FRUIT, /* ITEM_STAMINA_FRUIT */
ITEMMDL_FARORE_TEAR, /* ITEM_FARORE_TEAR */
ITEMMDL_DIN_TEAR, /* ITEM_DIN_TEAR */
ITEMMDL_NAYRU_TEAR, /* ITEM_NAYRU_TEAR */
ITEMMDL_SACRED_TEAR, /* ITEM_SACRED_TEAR */
ITEMMDL_LIGHT_FRUIT, /* ITEM_LIGHT_FRUIT */
ITEMMDL_1_CRYSTAL, /* ITEM_1_CRYSTAL */
ITEMMDL_GUST_BELLOWS, /* ITEM_GUST_BELLOWS */
ITEMMDL_DUNGEON_MAP_FI, /* ITEM_DUNGEON_MAP_FI */
ITEMMDL_DUNGEON_MAP, /* ITEM_DUNGEON_MAP */
ITEMMDL_SLINGSHOT, /* ITEM_SLINGSHOT */
ITEMMDL_BEETLE, /* ITEM_BEETLE */
ITEMMDL_WATER, /* ITEM_WATER */
ITEMMDL_MUSHROOM_SPORES, /* ITEM_MUSHROOM_SPORES */
ITEMMDL_DIGGING_MITTS, /* ITEM_DIGGING_MITTS */
ITEMMDL_5_DEKU_SEEDS, /* ITEM_5_DEKU_SEEDS */
ITEMMDL_MAX, /* ITEM_UNK_58 */
ITEMMDL_MAX, /* ITEM_UNK_59 */
ITEMMDL_10_DEKU_SEEDS, /* ITEM_10_DEKU_SEEDS */
ITEMMDL_MAX, /* ITEM_COMMON_TREASURE */
ITEMMDL_MAX, /* ITEM_COMMON_TREASURE2 */
ITEMMDL_MAX, /* ITEM_UNCOMMON_TREASURE */
ITEMMDL_MAX, /* ITEM_RARE_TREASURE */
ITEMMDL_GUARDIAN_POTION, /* ITEM_GUARDIAN_POTION */
ITEMMDL_GUARDIAN_POTION_PLUS, /* ITEM_GUARDIAN_POTION_PLUS */
ITEMMDL_MAX, /* ITEM_UNK_67 */
ITEMMDL_WATER_SCALE, /* ITEM_WATER_SCALE */
ITEMMDL_MAX, /* ITEM_UNK_69 */
ITEMMDL_BUG_MEDAL, /* ITEM_BUG_MEDAL */
ITEMMDL_BUG_NET, /* ITEM_BUG_NET */
ITEMMDL_FAIRY, /* ITEM_FAIRY */
ITEMMDL_MAX, /* ITEM_UNK_73 */
ITEMMDL_SACRED_WATER, /* ITEM_SACRED_WATER */
ITEMMDL_HOOK_BEETLE, /* ITEM_HOOK_BEETLE */
ITEMMDL_QUICK_BEETLE, /* ITEM_QUICK_BEETLE */
ITEMMDL_TOUGH_BEETLE, /* ITEM_TOUGH_BEETLE */
ITEMMDL_HEART_POTION, /* ITEM_HEART_POTION */
ITEMMDL_HEART_POTION_PLUS, /* ITEM_HEART_POTION_PLUS */
ITEMMDL_MAX, /* ITEM_HEART_POTION_ALSO */
ITEMMDL_HEART_POTION_ALSO_PLUS, /* ITEM_HEART_POTION_PLUS_PLUS */
ITEMMDL_MAX, /* ITEM_UNK_82 */
ITEMMDL_MAX, /* ITEM_GUARDIAN_POTION_NO_TBOX */
ITEMMDL_STAMINA_POTION, /* ITEM_STAMINA_POTION */
ITEMMDL_STAMINA_POTION_PLUS, /* ITEM_STAMINA_POTION_PLUS */
ITEMMDL_AIR_POTION, /* ITEM_AIR_POTION */
ITEMMDL_AIR_POTION_PLUS, /* ITEM_AIR_POTION_PLUS */
ITEMMDL_BOTTLED_FAIRY, /* ITEM_BOTTLED_FAIRY */
ITEMMDL_MAX, /* ITEM_UNK_89 */
ITEMMDL_IRON_BOW, /* ITEM_IRON_BOW */
ITEMMDL_SACRED_BOW, /* ITEM_SACRED_BOW */
ITEMMDL_BOMB_BAG, /* ITEM_BOMB_BAG */
ITEMMDL_HEART_CONTAINER, /* ITEM_HEART_CONTAINER */
ITEMMDL_HEART_PIECE, /* ITEM_HEART_PIECE */
ITEMMDL_TRI_COURAGE, /* ITEM_TRI_COURAGE */
ITEMMDL_TRI_POWER, /* ITEM_TRI_POWER */
ITEMMDL_TRI_WISDOWM, /* ITEM_TRI_WISDOM */
ITEMMDL_SEA_CHART, /* ITEM_SEA_CHART */
ITEMMDL_MOGMA_MITTS, /* ITEM_MOGMA_MITTS */
ITEMMDL_HEART_MEDAL, /* ITEM_HEART_MEDAL */
ITEMMDL_RUPEE_MEDAL, /* ITEM_RUPEE_MEDAL */
ITEMMDL_TREASURE_MEDAL, /* ITEM_TREASURE_MEDAL */
ITEMMDL_POTION_MEDAL, /* ITEM_POTION_MEDAL */
ITEMMDL_CURSED_MEDAL, /* ITEM_CURSED_MEDAL */
ITEMMDL_MIGHTY_SCATTERSHOT, /* ITEM_MIGHTY_SCATTERSHOT */
ITEMMDL_MAX, /* ITEM_UNK_106 */
ITEMMDL_85, /* ITEM_UNK_107 */
ITEMMDL_MEDIUM_WALLET, /* ITEM_MEDIUM_WALLET */
ITEMMDL_BIG_WALLET, /* ITEM_BIG_WALLET */
ITEMMDL_GIANT_WALLET, /* ITEM_GIANT_WALLET */
ITEMMDL_TYCOON_WALLET, /* ITEM_TYCOON_WALLET */
ITEMMDL_ADVENTURE_POUCH, /* ITEM_ADVENTURE_POUCH */
ITEMMDL_POUCH_EXPANSION, /* ITEM_POUCH_EXPANSION */
ITEMMDL_LIFE_MEDAL, /* ITEM_LIFE_MEDAL */
ITEMMDL_MAX, /* ITEM_UNK_115 */
ITEMMDL_WOODEN_SHIELD, /* ITEM_WOODEN_SHIELD */
ITEMMDL_BANDED_SHIELD, /* ITEM_BANDED_SHIELD */
ITEMMDL_BRACED_SHIELD, /* ITEM_BRACED_SHIELD */
ITEMMDL_IRON_SHIELD, /* ITEM_IRON_SHIELD */
ITEMMDL_REINFORCED_SHIELD, /* ITEM_REINFORCED_SHIELD */
ITEMMDL_FORTIFIED_SHIELD, /* ITEM_FORTIFIED_SHIELD */
ITEMMDL_SACRED_SHIELD, /* ITEM_SACRED_SHIELD */
ITEMMDL_DIVINE_SHIELD, /* ITEM_DIVINE_SHIELD */
ITEMMDL_GODDESS_SHIELD, /* ITEM_GODDESS_SHIELD */
ITEMMDL_HYLIAN_SHIELD, /* ITEM_HYLIAN_SHIELD */
ITEMMDL_REVITALIZING_POTION, /* ITEM_REVITALIZING_POTION */
ITEMMDL_REVITALIZING_POTION_PLUS, /* ITEM_REVITALIZING_POTION_PLUS */
ITEMMDL_SMALL_SEED_SATCHEL, /* ITEM_SMALL_SEED_SATCHEL */
ITEMMDL_MEDIUM_SEED_SATCHEL, /* ITEM_MEDIUM_SEED_SATCHEL */
ITEMMDL_LARGE_SEED_SATCHEL, /* ITEM_LARGE_SEED_SATCHEL */
ITEMMDL_SMALL_QUIVER, /* ITEM_SMALL_QUIVER */
ITEMMDL_MEDIUM_QUIVER, /* ITEM_MEDIUM_QUIVER */
ITEMMDL_LARGE_QUIVER, /* ITEM_LARGE_QUIVER */
ITEMMDL_SMALL_BOMB_BAG, /* ITEM_SMALL_BOMB_BAG */
ITEMMDL_MEDIUM_BOMB_BAG, /* ITEM_MEDIUM_BOMB_BAG */
ITEMMDL_LARGE_BOMB_BAG, /* ITEM_LARGE_BOMB_BAG */
ITEMMDL_WHIP, /* ITEM_WHIP */
ITEMMDL_FIRESHIELD_EARRINGS, /* ITEM_FIRESHIELD_EARRINGS */
ITEMMDL_MAX, /* ITEM_UNK_139 */
ITEMMDL_BIG_BUG_NET, /* ITEM_BIG_BUG_NET */
ITEMMDL_FARON_GRASSHOPPER, /* ITEM_FARON_GRASSHOPPER */
ITEMMDL_WOODLAND_RHINO_BEETLE, /* ITEM_WOODLAND_RHINO_BEETLE */
ITEMMDL_DEKU_HORNET, /* ITEM_DEKU_HORNET */
ITEMMDL_SKYLOFT_MANTIS, /* ITEM_SKYLOFT_MANTIS */
ITEMMDL_VOLCANIC_LADYBUG, /* ITEM_VOLCANIC_LADYBUG */
ITEMMDL_BLESSED_BUTTERFLY, /* ITEM_BLESSED_BUTTERFLY */
ITEMMDL_LANAYRU_ANT, /* ITEM_LANAYRU_ANT */
ITEMMDL_SAND_CICADA, /* ITEM_SAND_CICADA */
ITEMMDL_GERUDO_DRAGONFLY, /* ITEM_GERUDO_DRAGONFLY */
ITEMMDL_ELDIN_ROLLER, /* ITEM_ELDIN_ROLLER */
ITEMMDL_SKY_STAG_BEETLE, /* ITEM_SKY_STAG_BEETLE */
ITEMMDL_STARRY_FIREFLY, /* ITEM_STARRY_FIREFLY */
ITEMMDL_BOTTLE, /* ITEM_BOTTLE */
ITEMMDL_MAX, /* ITEM_RUPEE_MEDAL_ALSO */
ITEMMDL_MAX, /* ITEM_HEART_MEDAL_ALSO */
ITEMMDL_MAX, /* ITEM_UNK_156 */
ITEMMDL_MAX, /* ITEM_UNK_157 */
ITEMMDL_CAWLIN_LETTER, /* ITEM_CAWLIN_LETTER */
ITEMMDL_BEEDLE_INSECT_CAGE, /* ITEM_BEEDLE_INSECT_CAGE */
ITEMMDL_RATTLE, /* ITEM_RATTLE */
ITEMMDL_HORNET_LARVAE, /* ITEM_HORNET_LARVAE */
ITEMMDL_BIRD_FEATHER, /* ITEM_BIRD_FEATHER */
ITEMMDL_TUMBLE_WEED, /* ITEM_TUMBLE_WEED */
ITEMMDL_LIZARD_TAIL, /* ITEM_LIZARD_TAIL */
ITEMMDL_ELDIN_ORE, /* ITEM_ELDIN_ORE */
ITEMMDL_ANCIENT_FLOWER, /* ITEM_ANCIENT_FLOWER */
ITEMMDL_AMBER_RELIC, /* ITEM_AMBER_RELIC */
ITEMMDL_DUSK_RELIC, /* ITEM_DUSK_RELIC */
ITEMMDL_JELLY_BLOB, /* ITEM_JELLY_BLOB */
ITEMMDL_MONSTER_CLAW, /* ITEM_MONSTER_CLAW */
ITEMMDL_MONSTER_HORN, /* ITEM_MONSTER_HORN */
ITEMMDL_ORNAMENTAL_SKULL, /* ITEM_ORNAMENTAL_SKULL */
ITEMMDL_EVIL_CRYSTAL, /* ITEM_EVIL_CRYSTAL */
ITEMMDL_BLUE_BIRD_FEATHER, /* ITEM_BLUE_BIRD_FEATHER */
ITEMMDL_GOLDEN_SKULL, /* ITEM_GOLDEN_SKULL */
ITEMMDL_GODDESS_PLUME, /* ITEM_GODDESS_PLUME */
ITEMMDL_EMERALD_TABLET, /* ITEM_EMERALD_TABLET */
ITEMMDL_RUBY_TABLET, /* ITEM_RUBY_TABLET */
ITEMMDL_AMBER_TABLET, /* ITEM_AMBER_TABLET */
ITEMMDL_STONE_OF_TRIALS, /* ITEM_STONE_OF_TRIALS */
ITEMMDL_MAX, /* ITEM_UNK_181 */
ITEMMDL_MAX, /* ITEM_UNK_182 */
ITEMMDL_MAX, /* ITEM_UNK_183 */
ITEMMDL_MAX, /* ITEM_UNK_184 */
ITEMMDL_MAX, /* ITEM_UNK_185 */
ITEMMDL_BALLAD_OF_THE_GODDESS, /* ITEM_BALLAD_OF_THE_GODDESS */
ITEMMDL_FARORES_COURAGE, /* ITEM_FARORES_COURAGE */
ITEMMDL_NAYRUS_WISDOM, /* ITEM_NAYRUS_WISDOM */
ITEMMDL_DINS_POWER, /* ITEM_DINS_POWER */
ITEMMDL_FARON_SOTH, /* ITEM_FARON_SOTH */
ITEMMDL_ELDIN_SOTH, /* ITEM_ELDIN_SOTH */
ITEMMDL_LANAYRU_SOTH, /* ITEM_LANAYRU_SOTH */
ITEMMDL_ITEM_SOTH, /* ITEM_SOTH */
ITEMMDL_REVITALIZING_POTION_PLUS_PLUS, /* ITEM_REVITALIZING_POTION_PLUS_PLUS */
ITEMMDL_HOT_SOUP, /* ITEM_HOT_SOUP */
ITEMMDL_COLD_SOUP, /* ITEM_COLD_SOUP */
ITEMMDL_LIFE_TREE_SEED, /* ITEM_LIFE_TREE_SEED */
ITEMMDL_LIFE_TREE_FRUIT, /* ITEM_LIFE_TREE_FRUIT */
ITEMMDL_EXTRA_WALLET, /* ITEM_EXTRA_WALLET */
ITEMMDL_MAX, /* ITEM_UNK_200 */
ITEMMDL_MAX, /* ITEM_LIFE_MEDAL_AGAIN */
ITEMMDL_MAX, /* ITEM_POUCH_EXPANSION_GODDESS_CHEST */
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
ITEMMDL_MAX,
};
bool hasItemMdl(u16 itemId) {
if (itemId >= ARRAY_LENGTH(ITEM_TO_MODEL_INDEX)) {
return false;
}
return ITEM_TO_MODEL_INDEX[itemId] <= ITEMMDL_MAX - 1;
}
u16 getItemMdlIdx(u16 itemId) {
return ITEM_TO_MODEL_INDEX[itemId];
}
+158
View File
@@ -0,0 +1,158 @@
#include "toBeSorted/item_mdl_rupee.h"
#include "common.h"
#include "d/a/d_a_item.h"
#include "d/a/d_a_itembase.h"
#include "toBeSorted/arc_managers/oarc_manager.h"
const dItemMdlRupee_c::MdlConfig dItemMdlRupee_c::sMdlConfig[] = {
{ ITEM_GREEN_RUPEE, 0.0f},
{ ITEM_BLUE_RUPEE, 1.0f},
{ ITEM_RED_RUPEE, 2.0f},
{ITEM_SILVER_RUPEE, 3.0f},
{ ITEM_GOLD_RUPEE, 4.0f},
{ ITEM_RUPOOR, 5.0f},
{ 0, 0.0f},
};
bool dItemMdlRupee_c::isMdlForItemId(u16 itemId) {
// NON-DETERMINISTIC CODEGEN AAAAAAAAAAAAAAAAAAAAAA
return itemId == ITEM_GREEN_RUPEE || itemId == ITEM_BLUE_RUPEE || itemId == ITEM_RED_RUPEE ||
itemId == ITEM_SILVER_RUPEE || itemId == ITEM_GOLD_RUPEE || itemId == ITEM_RUPOOR;
}
bool dItemMdlRupee_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) {
if (item == nullptr) {
return false;
}
// no-op
int i = 0;
bool found = false;
while (!found && i < ARRAY_LENGTH(sMdlConfig)) {
if (itemId == sMdlConfig[i].itemId) {
found = true;
} else {
i++;
}
}
if (!found) {
return false;
}
{
void *resData1 = OarcManager::GetInstance()->getMdlFromArc2("PutRupee");
if (resData1 == nullptr) {
return false;
}
nw4r::g3d::ResFile res1(resData1);
if (!res1.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl1 = res1.GetResMdl("PutRupee");
if (!mdl1.IsValid()) {
return false;
}
if (!mPutMdl.create(mdl1, allocator, 0x123)) {
return false;
}
nw4r::g3d::ResAnmTexPat anmTexPat1 = res1.GetResAnmTexPat("Rupee");
if (!anmTexPat1.IsValid()) {
return false;
}
if (!mPutAnmTexPat.create(mdl1, anmTexPat1, allocator, nullptr, 1)) {
return false;
}
mPutMdl.setAnm(mPutAnmTexPat);
mPutAnmTexPat.setFrame(sMdlConfig[i].texPatFrame, 0);
}
{
void *resData2 = OarcManager::GetInstance()->getMdlFromArc2("GetRupee");
if (resData2 == nullptr) {
return false;
}
nw4r::g3d::ResFile res2(resData2);
if (!res2.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl2 = res2.GetResMdl("GetRupee");
if (!mdl2.IsValid()) {
return false;
}
if (!mGetMdl.create(mdl2, allocator, 0x123)) {
return false;
}
nw4r::g3d::ResAnmTexPat anmTexPat2 = res2.GetResAnmTexPat("Rupee");
if (!anmTexPat2.IsValid()) {
return false;
}
anmTexPat2.Bind(res2);
if (!mGetAnmTexPat.create(mdl2, anmTexPat2, allocator, nullptr, 1)) {
return false;
}
mGetMdl.setAnm(mGetAnmTexPat);
mGetAnmTexPat.setFrame(sMdlConfig[i].texPatFrame, 0);
}
mpItem = item;
return true;
}
void dItemMdlRupee_c::setDrawMode(u8 arg) {
if (arg == DrawMode_Max) {
mDrawMode = DrawMode_Put;
} else {
mDrawMode = arg;
}
}
void dItemMdlRupee_c::setScale(const mVec3_c &scale) {
mPutMdl.setScale(scale);
mGetMdl.setScale(scale);
}
void dItemMdlRupee_c::setLocalMtx(const mMtx_c &mtx) {
mPutMdl.setLocalMtx(mtx);
mGetMdl.setLocalMtx(mtx);
}
void dItemMdlRupee_c::draw() {
switch (mDrawMode) {
case DrawMode_Put: mpItem->fn_8002ECD0(&mPutMdl, 7); break;
case DrawMode_Get: mpItem->fn_8002ECD0(&mGetMdl, 6); break;
}
}
void dItemMdlRupee_c::changeItemId(u16 itemId) {
int i = 0;
bool found = false;
while (!found && i < ARRAY_LENGTH(sMdlConfig)) {
if (itemId == sMdlConfig[i].itemId) {
found = true;
} else {
i++;
}
}
if (found) {
mPutAnmTexPat.setFrame(sMdlConfig[i].texPatFrame, 0);
mGetAnmTexPat.setFrame(sMdlConfig[i].texPatFrame, 0);
}
}
void dItemMdlRupee_c::setPriorityDraw() {
mPutMdl.setPriorityDraw(0x82, 0x7F);
mGetMdl.setPriorityDraw(0x82, 0x7F);
}
void dItemMdlRupee_c::unsetPriorityDraw() {
mPutMdl.setPriorityDraw(0x7F, 0x7F);
mGetMdl.setPriorityDraw(0x7F, 0x7F);
}
+109
View File
@@ -0,0 +1,109 @@
#include "toBeSorted/item_mdl_stamina_fruit.h"
#include "common.h"
#include "d/a/d_a_item.h"
#include "d/a/d_a_itembase.h"
#include "toBeSorted/arc_managers/oarc_manager.h"
bool dItemMdlStaminaFruit_c::isMdlForItemId(u16 itemId) {
return itemId == ITEM_STAMINA_FRUIT;
}
bool dItemMdlStaminaFruit_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) {
void *resData1 = OarcManager::GetInstance()->getMdlFromArc2("PutGuts");
if (resData1 == nullptr) {
return false;
}
nw4r::g3d::ResFile res1(resData1);
if (!res1.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl1 = res1.GetResMdl("PutGuts");
if (!mdl1.IsValid()) {
return false;
}
if (!mPutMdl.create(mdl1, allocator, 0x324)) {
return false;
}
void *resData2 = OarcManager::GetInstance()->getMdlFromArc2("GetGuts");
if (resData2 == nullptr) {
return false;
}
nw4r::g3d::ResFile res2(resData2);
if (!res2.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl2 = res2.GetResMdl("GetGuts");
if (!mdl2.IsValid()) {
return false;
}
if (!mGetMdl.create(mdl2, allocator, 0x324)) {
return false;
}
nw4r::g3d::ResAnmTexSrt anmTexSrt1 = res1.GetResAnmTexSrt("GutsLight");
if (!anmTexSrt1.IsValid()) {
return false;
}
TRY_CREATE(mPutAnmTexSrt.create(mdl1, anmTexSrt1, allocator, nullptr, 1));
mPutMdl.setAnm(mPutAnmTexSrt);
nw4r::g3d::ResAnmTexSrt anmTexSrt2 = res2.GetResAnmTexSrt("GutsLight");
if (!anmTexSrt2.IsValid()) {
return false;
}
TRY_CREATE(mGetAnmTexSrt.create(mdl2, anmTexSrt2, allocator, nullptr, 1));
mGetMdl.setAnm(mGetAnmTexSrt);
mpItem = item;
return true;
}
void dItemMdlStaminaFruit_c::setDrawMode(u8 arg) {
if (arg == DrawMode_Max) {
mDrawMode = DrawMode_Put;
} else {
mDrawMode = arg;
}
}
void dItemMdlStaminaFruit_c::setScale(const mVec3_c &scale) {
mPutMdl.setScale(scale);
mGetMdl.setScale(scale);
}
void dItemMdlStaminaFruit_c::setLocalMtx(const mMtx_c &mtx) {
mPutMdl.setLocalMtx(mtx);
mGetMdl.setLocalMtx(mtx);
}
void dItemMdlStaminaFruit_c::draw() {
switch (mDrawMode) {
case DrawMode_Put:
mPutAnmTexSrt.play();
mpItem->fn_8002ECD0(&mPutMdl, 7);
break;
case DrawMode_Get:
mGetAnmTexSrt.play();
mpItem->fn_8002ECD0(&mGetMdl, 6);
break;
}
}
void dItemMdlStaminaFruit_c::changeItemId(u16 itemId) {
// no-op
}
void dItemMdlStaminaFruit_c::setPriorityDraw() {
mPutMdl.setPriorityDraw(0x82, 0x7F);
mGetMdl.setPriorityDraw(0x82, 0x7F);
}
void dItemMdlStaminaFruit_c::unsetPriorityDraw() {
mPutMdl.setPriorityDraw(0x7F, 0x7F);
mGetMdl.setPriorityDraw(0x7F, 0x7F);
}
+4
View File
@@ -0,0 +1,4 @@
#include "toBeSorted/mdl_base.h"
dMdl_c::dMdl_c() {}
dMdl_c::~dMdl_c() {}