From ea78ea5f5c15361be7d29ab8fd712b46b916e4e3 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Wed, 3 Jan 2024 15:55:56 -0500 Subject: [PATCH] d_a_player_main --- include/JAZelAudio/JAZelAudio_BGM.h | 196 ++-- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 13 +- .../J3DGraphAnimator/J3DMaterialAttach.h | 2 +- .../JSystem/J3DGraphAnimator/J3DModelData.h | 4 +- include/JSystem/J3DGraphBase/J3DMaterial.h | 47 +- include/JSystem/J3DGraphBase/J3DTexture.h | 10 +- include/JSystem/JKernel/JKRArchive.h | 4 +- include/SSystem/SComponent/c_counter.h | 6 +- include/d/actor/d_a_hookshot.h | 4 +- include/d/actor/d_a_player.h | 238 +++- include/d/actor/d_a_player_main.h | 47 +- include/d/d_com_inf_game.h | 9 +- include/m_Do/m_Do_audio.h | 8 + include/m_Do/m_Do_ext.h | 6 +- .../J3DGraphAnimator/J3DMaterialAttach.cpp | 15 +- src/d/actor/d_a_hookshot.cpp | 8 +- src/d/actor/d_a_item.cpp | 2 +- src/d/actor/d_a_obj_barrier.cpp | 2 +- src/d/actor/d_a_obj_mknjd.cpp | 10 +- src/d/actor/d_a_player_fan.inc | 4 +- src/d/actor/d_a_player_food.inc | 2 +- src/d/actor/d_a_player_main.cpp | 1041 +++++++++++++---- src/d/actor/d_a_player_particle.inc | 2 +- src/d/actor/d_a_rd.cpp | 6 +- src/d/actor/d_a_tbox.cpp | 2 +- src/d/d_event_data.cpp | 6 +- 26 files changed, 1269 insertions(+), 425 deletions(-) diff --git a/include/JAZelAudio/JAZelAudio_BGM.h b/include/JAZelAudio/JAZelAudio_BGM.h index adcf0e963..d1e46b640 100644 --- a/include/JAZelAudio/JAZelAudio_BGM.h +++ b/include/JAZelAudio/JAZelAudio_BGM.h @@ -2,104 +2,104 @@ #define JAZELAUDIO_BGM_H enum { - JA_BGM_SE_SEQUENCE = 0x0800, - JA_BGM_ISLAND_LINK = 0x0001, - JA_BGM_ITEM_GET = 0x0002, - JA_BGM_GOMA = 0x0003, - JA_BGM_BATTLE_NORM = 0x0004, - JA_BGM_KINDAN_BOSS = 0x0005, - JA_BGM_D_RYU_MT = 0x0006, - JA_BGM_I_MAJU = 0x0007, - JA_BGM_HOUSE = 0x0008, - JA_BGM_OPEN_BOX = 0x0009, - JA_BGM_DIE_LINK = 0x000A, - JA_BGM_SEA_GAME = 0x000B, - JA_BGM_SEA_GOAL = 0x000C, - JA_BGM_SEA_FAIL = 0x000D, - JA_BGM_ISLAND_LINK_2 = 0x000E, - JA_BGM_I_MAJU_JAIL = 0x000F, - JA_BGM_GOMA_2 = 0x0010, - JA_BGM_JI_TRAINING = 0x0011, - JA_BGM_TETRA_MEET = 0x0012, - JA_BGM_BK_FLY_DOWN = 0x0013, - JA_BGM_DK_BATTLE = 0x0014, - JA_BGM_MJ_TOWER_BATTLE = 0x0015, - JA_BGM_FIND_TETRA = 0x0016, - JA_BGM_I_LINK_FOREST = 0x0017, - JA_BGM_HOUSE_G = 0x0018, - JA_BGM_MBOSS = 0x0019, - JA_BGM_MBOSS_S = 0x001A, - JA_BGM_BOAT_SHOP = 0x001B, - JA_BGM_SEA_ENEMY = 0x001C, - JA_BGM_MORNING = 0x001D, - JA_BGM_SELECT = 0x001E, - JA_BGM_MEDRI_AWAKE = 0x001F, - JA_BGM_MAKORE_AWAKE = 0x0020, - JA_BGM_TAKT_MAKORE = 0x0021, - JA_BGM_TAKT_MEDRI = 0x0022, - JA_BGM_BST_BATTLE = 0x0023, - JA_BGM_GET_HEART = 0x0024, - JA_BGM_ITEM_GET_S = 0x0025, - JA_BGM_D_FOREST = 0x0026, - JA_BGM_GET_SONG = 0x0027, - JA_BGM_KAMI_TOWER = 0x0028, - JA_BGM_RANE_BATTLE = 0x0029, - JA_BGM_PIRATE = 0x002A, - JA_BGM_DIOCTA_BATTLE = 0x002B, - JA_BGM_PIRATE_C = 0x002C, - JA_BGM_D_EARTH = 0x002D, - JA_BGM_SEA = 0x002E, - JA_BGM_D_WIND = 0x002F, - JA_BGM_TAKT_CHUYA = 0x0030, - JA_BGM_TAKT_KAZE = 0x0031, - JA_BGM_TAKT_SHIPPU = 0x0032, - JA_BGM_TETRA_MEET_B = 0x0033, - JA_BGM_HYRULE_OFF = 0x0034, - JA_BGM_HYRULE_ON = 0x0035, - JA_BGM_CB_NEXTYEAR = 0x0036, - JA_BGM_CB_NEXTYEAR_W = 0x0037, - JA_BGM_ISLAND_LINK_0 = 0x0038, - JA_BGM_ISLAND_WOOD = 0x0039, - JA_BGM_ISLAND_DRAGON = 0x003A, - JA_BGM_ISLAND_TAURA = 0x003B, - JA_BGM_SEA_STORM = 0x003C, - JA_BGM_PIRATE_DEMO5 = 0x003D, - JA_BGM_JI_TRAINING_2 = 0x003E, - JA_BGM_I_WOOD_INNER = 0x003F, - JA_BGM_DRUG_STORE = 0x0040, - JA_BGM_P_GANON_1 = 0x0041, - JA_BGM_D_GANON_1 = 0x0042, - JA_BGM_D_GANON_2 = 0x0043, - JA_BGM_BAACHAN = 0x0044, - JA_BGM_DEKU_PINCH = 0x0045, - JA_BGM_DIOCTA_2 = 0x0046, - JA_BGM_P_GANON_2 = 0x0047, - JA_BGM_BIG_POW = 0x0048, - JA_BGM_PAST_BIG_POW = 0x0049, - JA_BGM_PAST_BKM = 0x004A, - JA_BGM_PAST_GOMA = 0x004B, - JA_BGM_PAST_RANE = 0x004C, - JA_BGM_GANON_BATTLE = 0x004D, - JA_BGM_MASTER_SWORD = 0x004E, - JA_BGM_GET_PEARL = 0x004F, - JA_BGM_BIRDMAN = 0x0050, - JA_BGM_BIRDMAN_GOAL = 0x0051, - JA_BGM_BIRDMAN_FAIL = 0x0052, - JA_BGM_ELF = 0x0053, - JA_BGM_PAST_GOMA_2 = 0x0054, - JA_BGM_ISLAND_LINK_3 = 0x0055, - JA_BGM_DEATH_VALLEY = 0x0056, - JA_BGM_JABOO_CAVE = 0x0057, - JA_BGM_SUB_DUNGEON = 0x0058, - JA_BGM_BGN_KUGUTSU = 0x0059, - JA_BGM_BGN_TARABA = 0x005A, - JA_BGM_BGN_HAYAMUSHI = 0x005B, - JA_BGM_BGN_TARABA_IN = 0x005C, - JA_BGM_BGN_GET_BOX = 0x005D, - JA_BGM_I_MAJU_2ND = 0x005E, - JA_BGM_MAKORE_TAKT_8 = 0x005F, - JA_BGM_MEDORI_TAKT_8 = 0x0060, - JA_BGM_TRIFORCE_DEMO = 0x0061, + JA_BGM_SE_SEQUENCE = 0x80000800, + JA_BGM_ISLAND_LINK = 0x80000001, + JA_BGM_ITEM_GET = 0x80000002, + JA_BGM_GOMA = 0x80000003, + JA_BGM_BATTLE_NORM = 0x80000004, + JA_BGM_KINDAN_BOSS = 0x80000005, + JA_BGM_D_RYU_MT = 0x80000006, + JA_BGM_I_MAJU = 0x80000007, + JA_BGM_HOUSE = 0x80000008, + JA_BGM_OPEN_BOX = 0x80000009, + JA_BGM_DIE_LINK = 0x8000000A, + JA_BGM_SEA_GAME = 0x8000000B, + JA_BGM_SEA_GOAL = 0x8000000C, + JA_BGM_SEA_FAIL = 0x8000000D, + JA_BGM_ISLAND_LINK_2 = 0x8000000E, + JA_BGM_I_MAJU_JAIL = 0x8000000F, + JA_BGM_GOMA_2 = 0x80000010, + JA_BGM_JI_TRAINING = 0x80000011, + JA_BGM_TETRA_MEET = 0x80000012, + JA_BGM_BK_FLY_DOWN = 0x80000013, + JA_BGM_DK_BATTLE = 0x80000014, + JA_BGM_MJ_TOWER_BATTLE = 0x80000015, + JA_BGM_FIND_TETRA = 0x80000016, + JA_BGM_I_LINK_FOREST = 0x80000017, + JA_BGM_HOUSE_G = 0x80000018, + JA_BGM_MBOSS = 0x80000019, + JA_BGM_MBOSS_S = 0x8000001A, + JA_BGM_BOAT_SHOP = 0x8000001B, + JA_BGM_SEA_ENEMY = 0x8000001C, + JA_BGM_MORNING = 0x8000001D, + JA_BGM_SELECT = 0x8000001E, + JA_BGM_MEDRI_AWAKE = 0x8000001F, + JA_BGM_MAKORE_AWAKE = 0x80000020, + JA_BGM_TAKT_MAKORE = 0x80000021, + JA_BGM_TAKT_MEDRI = 0x80000022, + JA_BGM_BST_BATTLE = 0x80000023, + JA_BGM_GET_HEART = 0x80000024, + JA_BGM_ITEM_GET_S = 0x80000025, + JA_BGM_D_FOREST = 0x80000026, + JA_BGM_GET_SONG = 0x80000027, + JA_BGM_KAMI_TOWER = 0x80000028, + JA_BGM_RANE_BATTLE = 0x80000029, + JA_BGM_PIRATE = 0x8000002A, + JA_BGM_DIOCTA_BATTLE = 0x8000002B, + JA_BGM_PIRATE_C = 0x8000002C, + JA_BGM_D_EARTH = 0x8000002D, + JA_BGM_SEA = 0x8000002E, + JA_BGM_D_WIND = 0x8000002F, + JA_BGM_TAKT_CHUYA = 0x80000030, + JA_BGM_TAKT_KAZE = 0x80000031, + JA_BGM_TAKT_SHIPPU = 0x80000032, + JA_BGM_TETRA_MEET_B = 0x80000033, + JA_BGM_HYRULE_OFF = 0x80000034, + JA_BGM_HYRULE_ON = 0x80000035, + JA_BGM_CB_NEXTYEAR = 0x80000036, + JA_BGM_CB_NEXTYEAR_W = 0x80000037, + JA_BGM_ISLAND_LINK_0 = 0x80000038, + JA_BGM_ISLAND_WOOD = 0x80000039, + JA_BGM_ISLAND_DRAGON = 0x8000003A, + JA_BGM_ISLAND_TAURA = 0x8000003B, + JA_BGM_SEA_STORM = 0x8000003C, + JA_BGM_PIRATE_DEMO5 = 0x8000003D, + JA_BGM_JI_TRAINING_2 = 0x8000003E, + JA_BGM_I_WOOD_INNER = 0x8000003F, + JA_BGM_DRUG_STORE = 0x80000040, + JA_BGM_P_GANON_1 = 0x80000041, + JA_BGM_D_GANON_1 = 0x80000042, + JA_BGM_D_GANON_2 = 0x80000043, + JA_BGM_BAACHAN = 0x80000044, + JA_BGM_DEKU_PINCH = 0x80000045, + JA_BGM_DIOCTA_2 = 0x80000046, + JA_BGM_P_GANON_2 = 0x80000047, + JA_BGM_BIG_POW = 0x80000048, + JA_BGM_PAST_BIG_POW = 0x80000049, + JA_BGM_PAST_BKM = 0x8000004A, + JA_BGM_PAST_GOMA = 0x8000004B, + JA_BGM_PAST_RANE = 0x8000004C, + JA_BGM_GANON_BATTLE = 0x8000004D, + JA_BGM_MASTER_SWORD = 0x8000004E, + JA_BGM_GET_PEARL = 0x8000004F, + JA_BGM_BIRDMAN = 0x80000050, + JA_BGM_BIRDMAN_GOAL = 0x80000051, + JA_BGM_BIRDMAN_FAIL = 0x80000052, + JA_BGM_ELF = 0x80000053, + JA_BGM_PAST_GOMA_2 = 0x80000054, + JA_BGM_ISLAND_LINK_3 = 0x80000055, + JA_BGM_DEATH_VALLEY = 0x80000056, + JA_BGM_JABOO_CAVE = 0x80000057, + JA_BGM_SUB_DUNGEON = 0x80000058, + JA_BGM_BGN_KUGUTSU = 0x80000059, + JA_BGM_BGN_TARABA = 0x8000005A, + JA_BGM_BGN_HAYAMUSHI = 0x8000005B, + JA_BGM_BGN_TARABA_IN = 0x8000005C, + JA_BGM_BGN_GET_BOX = 0x8000005D, + JA_BGM_I_MAJU_2ND = 0x8000005E, + JA_BGM_MAKORE_TAKT_8 = 0x8000005F, + JA_BGM_MEDORI_TAKT_8 = 0x80000060, + JA_BGM_TRIFORCE_DEMO = 0x80000061, }; #endif /* JAZELAUDIO_BGM_H */ \ No newline at end of file diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 3411bfee2..8bea0b3d4 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -370,6 +370,7 @@ protected: /* 0x22 */ u16 field_0x22; }; // Size: 0x24 +// BCK class J3DAnmTransformKey : public J3DAnmTransform { public: friend class J3DAnmKeyLoader_v15; @@ -389,6 +390,7 @@ private: /* 0x28 */ J3DAnmTransformKeyTable* field_0x28; }; // Size: 0x2C +// BCA class J3DAnmTransformFull : public J3DAnmTransform { public: friend class J3DAnmFullLoader_v15; @@ -408,6 +410,7 @@ struct J3DTextureSRTInfo; class J3DModelData; class J3DMaterialTable; +// BTK class J3DAnmTextureSRTKey : public J3DAnmBase { public: friend class J3DAnmKeyLoader_v15; @@ -453,8 +456,8 @@ public: JUTNameTab * getPostUpdateMaterialName() { return &mPostUpdateMaterialName; } u16 getPostUpdateTexMtxID(u16 idx) const { return mPostUpdateTexMtxID[idx]; } - u32 getTexMtxCalcType() const { return mTexMtxCalcType; } - Vec& getSRTCenter(u16 idx) const { return mSRTCenter[idx]; } + u32 getTexMtxCalcType() { return mTexMtxCalcType; } + Vec& getSRTCenter(u16 idx) { return mSRTCenter[idx]; } private: /* 0x10 */ int mDecShift; @@ -487,6 +490,7 @@ private: STATIC_ASSERT(sizeof(J3DAnmTextureSRTKey) == 0x88); +// BVA class J3DAnmVisibilityFull : public J3DAnmBase { public: friend class J3DAnmFullLoader_v15; @@ -511,6 +515,7 @@ private: /* 0x18 */ u8* mVisibility; }; // Size: 0x1C +// BTP class J3DAnmTexPattern : public J3DAnmBase { public: friend class J3DAnmFullLoader_v15; @@ -543,6 +548,7 @@ private: /* 0x20 */ JUTNameTab mUpdateMaterialName; }; // Size: 0x2C +// BRK class J3DAnmTevRegKey : public J3DAnmBase { public: friend class J3DAnmKeyLoader_v15; @@ -616,6 +622,7 @@ private: /* 0x70 */ s16 * mAnmKRegDataA; }; // Size: 0x74 +// BPK class J3DAnmColor : public J3DAnmBase { public: J3DAnmColor() : J3DAnmBase(0) { @@ -775,6 +782,7 @@ protected: /* 0x10 */ f32* mWeight; }; // Size: 0x14 +// BLA class J3DAnmClusterFull : public J3DAnmCluster { public: friend class J3DAnmFullLoader_v15; @@ -791,6 +799,7 @@ private: /* 0x14 */ J3DAnmClusterFullTable * mAnmTable; }; +// BLK class J3DAnmClusterKey : public J3DAnmCluster { public: friend class J3DAnmKeyLoader_v15; diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h index 408c89423..2702be18c 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h @@ -30,7 +30,7 @@ public: int removeTevRegAnimator(J3DAnmTevRegKey*); s32 setMatColorAnimator(J3DAnmColor*, J3DMatColorAnm *); s32 setTexNoAnimator(J3DAnmTexPattern*, J3DTexNoAnm*); - s32 setTexMtxAnimator(J3DAnmTextureSRTKey*, J3DTexMtxAnm*, J3DTexMtxAnm*); + s32 setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* pTexAnm, J3DTexMtxAnm* pDualAnmR); s32 setTevRegAnimator(J3DAnmTevRegKey*, J3DTevColorAnm*, J3DTevKColorAnm*); virtual ~J3DMaterialTable(); diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index bd2e5974e..521a97f97 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -81,6 +81,9 @@ public: bool checkBBoardFlag() const { return mbHasBillboard == 1; } void entryTexMtxAnimator(J3DAnmTextureSRTKey* anm) { mMaterialTable.entryTexMtxAnimator(anm); } void entryTevRegAnimator(J3DAnmTevRegKey* anm) { mMaterialTable.entryTevRegAnimator(anm); } + void setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* pTexAnm, J3DTexMtxAnm* pDualAnmR) { + mMaterialTable.setTexMtxAnimator(pAnm, pTexAnm, pDualAnmR); + } int removeTexNoAnimator(J3DAnmTexPattern* anm) { return mMaterialTable.removeTexNoAnimator(anm); } @@ -104,7 +107,6 @@ public: void getBinary() {} void getRootNode() {} void setMatColorAnimator(J3DAnmColor*, J3DMatColorAnm*) {} - void setTexMtxAnimator(J3DAnmTextureSRTKey*, J3DTexMtxAnm*, J3DTexMtxAnm*) {} void setTexNoAnimator(J3DAnmTexPattern*, J3DTexNoAnm*) {} private: diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index 669d1004f..c325f3ea0 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -44,27 +44,26 @@ public: J3DMaterial() { initialize(); } ~J3DMaterial() {} - J3DMaterial* getNext() const { return mNext; } + J3DMaterial* getNext() { return mNext; } void setNext(J3DMaterial* material) {mNext = material; } - J3DShape* getShape() const { return mShape; } - u32 getMaterialMode() { return mMaterialMode; } - void setMaterialMode(u32 mode) { mMaterialMode = mode; } - J3DTevBlock* getTevBlock() const { return mTevBlock; } - J3DColorBlock* getColorBlock() const { return mColorBlock; } - J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; } - J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; } - J3DIndBlock* getIndBlock() const { return mIndBlock; } J3DShape* getShape() { return mShape; } J3DJoint* getJoint() { return mJoint; } - J3DMaterialAnm* getMaterialAnm() const { + u32 getMaterialMode() { return mMaterialMode; } + void setMaterialMode(u32 mode) { mMaterialMode = mode; } + J3DTevBlock* getTevBlock() { return mTevBlock; } + J3DColorBlock* getColorBlock() { return mColorBlock; } + J3DTexGenBlock* getTexGenBlock() { return mTexGenBlock; } + J3DDisplayListObj* getSharedDisplayListObj() { return mSharedDLObj; } + J3DIndBlock* getIndBlock() { return mIndBlock; } + J3DMaterialAnm* getMaterialAnm() { if ((u32)mMaterialAnm < 0xC0000000) { return mMaterialAnm; } else { return NULL; } } - J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); } - u16 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); } + J3DNBTScale* getNBTScale() { return mTexGenBlock->getNBTScale(); } + u16 getTexNo(u32 idx) { return mTevBlock->getTexNo(idx); } J3DGXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); } J3DGXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); } J3DFog* getFog() { return mPEBlock->getFog(); } @@ -73,6 +72,8 @@ public: J3DAlphaComp* getAlphaComp() { return mPEBlock->getAlphaComp(); } u8 getZCompLoc() { return mPEBlock->getZCompLoc(); } J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); } + void setTexMtx(u32 idx, J3DTexMtx* texMtx) { mTexGenBlock->setTexMtx(idx, texMtx); } + J3DTexCoord* getTexCoord(u32 idx) { return mTexGenBlock->getTexCoord(idx); } u16 getIndex() { return mIndex; } bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; } J3DPEBlock* getPEBlock() { return mPEBlock; } @@ -87,6 +88,28 @@ public: void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; } void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); } + void addShape(J3DShape*) {} + void getAmbColor(u32) {} + void getColorChan(u32) {} + void getColorChanNum() const {} + void getCullMode() const {} + void getCurrentMtx() const {} + void getDither() const {} + void getIndTevStage(u32) {} + void getIndTexCoordScale(u32) {} + void getIndTexOrder(u32) {} + void getLight(u32) {} + void getMatColor(u32) {} + void getTevKAlphaSel(u32) {} + void getTevKColorSel(u32) {} + void getTevOrder(u32) {} + void getTevStage(u32) {} + void getTevSwapModeTable(u32) {} + void getZCompLoc() const {} + void setJoint(J3DJoint*) {} + void setLight(u32, J3DLightObj*) {} + void setTevStageNum(u8) {} + public: /* 0x04 */ J3DMaterial* mNext; /* 0x08 */ J3DShape* mShape; diff --git a/include/JSystem/J3DGraphBase/J3DTexture.h b/include/JSystem/J3DGraphBase/J3DTexture.h index 3eafd0e9f..594cbd16e 100644 --- a/include/JSystem/J3DGraphBase/J3DTexture.h +++ b/include/JSystem/J3DGraphBase/J3DTexture.h @@ -57,9 +57,9 @@ public: mTexMtxInfo = info; } ~J3DTexMtx() {} - void load(u32 i) const { + void load(u32 texMtxID) const { GDOverflowCheck(53); - J3DGDLoadTexMtxImm((Mtx&)mMtx, i * 3 + 30, (GXTexMtxType)mTexMtxInfo.mProjection); + J3DGDLoadTexMtxImm((Mtx&)mMtx, GX_TEXMTX0 + texMtxID * 3, (GXTexMtxType)mTexMtxInfo.mProjection); }; void calc(); void calcTexMtx(f32 const (*)[4]); @@ -71,13 +71,15 @@ public: Mtx& getMtx() { return mMtx; } void setEffectMtx(Mtx effectMtx) { mTexMtxInfo.setEffectMtx(effectMtx); } Mtx& getViewMtx() { return mViewMtx; } - void setViewMtx(const Mtx viewMtx) { MTXCopy(viewMtx, mViewMtx); } + void setViewMtx(Mtx viewMtx) { MTXCopy(viewMtx, mViewMtx); } + + void getTextureSRT() {} private: /* 0x00 */ J3DTexMtxInfo mTexMtxInfo; /* 0x64 */ Mtx mMtx; /* 0x94 */ Mtx mViewMtx; -}; // Size: 0xc4 +}; // Size: 0xC4 struct J3DTexCoord : public J3DTexCoordInfo { J3DTexCoord() { *(J3DTexCoordInfo*)this = j3dDefaultTexCoordInfo[0]; } diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index 2904592de..1e374ec0a 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -121,8 +121,8 @@ public: bool getDirEntry(SDirEntry*, u32) const; void* getIdxResource(u32); void* getResource(u16); - u32 readIdxResource(void*, u32, u32); - u32 readResource(void*, u32, u16); + u32 readIdxResource(void* buffer, u32 bufferSize, u32 index); + u32 readResource(void* buffer, u32 bufferSize, u16 id); u32 countResource(u32) const; JKRArcFinder* getFirstResource(u32) const; u32 getFileAttribute(u32) const; diff --git a/include/SSystem/SComponent/c_counter.h b/include/SSystem/SComponent/c_counter.h index 975824eb9..3c962cdca 100644 --- a/include/SSystem/SComponent/c_counter.h +++ b/include/SSystem/SComponent/c_counter.h @@ -4,9 +4,9 @@ #include "dolphin/types.h" struct counter_class { - u32 mCounter0; - s32 mCounter1; - u32 mTimer; + /* 0x00 */ u32 mCounter0; + /* 0x04 */ s32 mCounter1; + /* 0x08 */ u32 mTimer; }; extern counter_class g_Counter; diff --git a/include/d/actor/d_a_hookshot.h b/include/d/actor/d_a_hookshot.h index f029351af..daedf0fb9 100644 --- a/include/d/actor/d_a_hookshot.h +++ b/include/d/actor/d_a_hookshot.h @@ -22,7 +22,7 @@ public: cXyz getMoveVec() const { return mMoveVec; } u32 getCarryActorID() const { return mCarryActorID; } void getHookAngle() {} - void getMtxTop() {} + MtxP getMtxTop() { return mMtx; } void getObjHookFlg() const {} void getSightHit() const {} void getObjSightCrossPos() {} @@ -72,7 +72,7 @@ public: /* 0x3D4 */ dCcD_Cps mCps; /* 0x50C */ cXyz m50C; /* 0x518 */ u32 mCarryActorID; - /* 0x51C */ Mtx m51C; + /* 0x51C */ Mtx mMtx; /* 0x54C */ ProcFunc mCurrProcFunc; }; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index d87992828..122008517 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -36,7 +36,7 @@ public: public: /* 0x6C */ cXy mEyePosOld; /* 0x74 */ cXy mEyePos; -}; +}; // Size: 0x7C class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack { public: @@ -54,9 +54,12 @@ public: STATIC_ASSERT(sizeof(daPy_mtxFollowEcallBack_c) == 0x0C); +// TODO: this probably does not belong in d_a_player.h based on the .text section splitting in d_a_player_main class daPy_HIO_c { public: - daPy_HIO_c() {} + // TODO: constructor should be weak, but not inlined? + // daPy_HIO_c() {} + daPy_HIO_c(); public: /* 0x00 */ u8 temp[0x3F - 0x00]; @@ -109,6 +112,7 @@ public: daPyFlg0_UNK10000 = 0x00010000, daPyFlg0_NO_FALL_VOICE = 0x00040000, daPyFlg0_SCOPE_CANCEL = 0x00080000, + daPyFlg0_PHOTO_BOX_CANCEL = 0x00080000, // Same as scope cancel daPyFlg0_UNK200000 = 0x00200000, daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000, daPyFlg0_NO_DRAW = 0x08000000, @@ -164,42 +168,220 @@ public: }; enum daPy_FACE { - + // Index in daPy_lk_c::mTexAnmIndexTable + daPyFace_TMABAA = 0x00, + daPyFace_TMABAA_TEUP = 0x01, + daPyFace_TMABAB = 0x02, + daPyFace_TMABAC = 0x03, + daPyFace_TMABACB = 0x04, + daPyFace_TMABACB_TEDW = 0x05, + daPyFace_TMABACC = 0x06, + daPyFace_TMABAD = 0x07, + daPyFace_TMABAD_TEDW = 0x08, + daPyFace_TMABAE = 0x09, + daPyFace_TMABAE_TEUP = 0x0A, + daPyFace_TMABAE_TEDW = 0x0B, + daPyFace_TMABAE_TEL = 0x0C, + daPyFace_TMABAE_TER = 0x0D, + daPyFace_TMABAF = 0x0E, + daPyFace_TMABAG = 0x0F, + daPyFace_TMABAH = 0x10, + daPyFace_TMABAI = 0x11, + daPyFace_TMABAJ_TEYORIME = 0x12, + daPyFace_TMABAD_TWAITPICKUP = 0x13, + daPyFace_TMABAC_THOOKSHOTJMP = 0x14, + daPyFace_TGRABP = 0x15, + daPyFace_TGRABUP = 0x16, + daPyFace_TGRABNG = 0x17, + daPyFace_TGRABTHROW = 0x18, + daPyFace_TGRABRE = 0x19, + daPyFace_TWALLWL = 0x1A, + daPyFace_TWALLWR = 0x1B, + daPyFace_TWALLPL = 0x1C, + daPyFace_TWALLPR = 0x1D, + daPyFace_TCUT = 0x1E, + daPyFace_TCUTEA = 0x1F, + daPyFace_TCUTEA_TECN = 0x20, + daPyFace_TEXCA1 = 0x21, + daPyFace_TEXCB1 = 0x22, + daPyFace_TJATTACK = 0x23, + daPyFace_TJATTACK_TEUP = 0x24, + daPyFace_TCUTTURNP = 0x25, + daPyFace_TCUTTURN = 0x26, + daPyFace_TMJMP = 0x27, + daPyFace_TMJMPC = 0x28, + daPyFace_TMROLLL = 0x29, + daPyFace_TMROLLR = 0x2A, + daPyFace_TMROLLLC = 0x2B, + daPyFace_TMROLLRC = 0x2C, + daPyFace_TMSTEPOVER = 0x2D, + daPyFace_TMSTEPOVERA = 0x2E, + daPyFace_TMSTEPOVERLAND = 0x2F, + daPyFace_TATNJL = 0x30, + daPyFace_TATNJR = 0x31, + daPyFace_TJMP = 0x32, + daPyFace_TROLLF = 0x33, + daPyFace_TROLLB = 0x34, + daPyFace_TROLLBLAND = 0x35, + daPyFace_TROLLFMIS = 0x36, + daPyFace_TFALL = 0x37, + daPyFace_TLANDDAMA = 0x38, + daPyFace_TLANDDAMAST = 0x39, + daPyFace_TDAM = 0x3A, + daPyFace_TDAMF = 0x3B, + daPyFace_TDAMFFUP = 0x3C, + daPyFace_TDAMFBUP = 0x3D, + daPyFace_TDAMFLUP = 0x3E, + daPyFace_TDAMFRUP = 0x3F, + daPyFace_TDAMDASH = 0x40, + daPyFace_TGUARD = 0x41, + daPyFace_TSLIDEF = 0x42, + daPyFace_TSLIDEFLAND = 0x43, + daPyFace_TSLIDEB = 0x44, + daPyFace_TSLIDEBLAND = 0x45, + daPyFace_TSWIMP = 0x46, + daPyFace_TSWIMING = 0x47, + daPyFace_TBOOMTHROW = 0x48, + daPyFace_TBOOMCATCH = 0x49, + daPyFace_TWALKPUSH = 0x4A, + daPyFace_TWALKPULL = 0x4B, + daPyFace_TVJMPCHA = 0x4C, + daPyFace_TVJMPCL = 0x4D, + daPyFace_TROPECLIMB = 0x4E, + daPyFace_TROPEDOWN = 0x4F, + daPyFace_TLADDERUPST = 0x50, + daPyFace_TLADDERDWST = 0x51, + daPyFace_TLADDERUPED = 0x52, + daPyFace_TLADDERDWED = 0x53, + daPyFace_THANGING = 0x54, + daPyFace_THANGUP = 0x55, + daPyFace_TLAVADAM = 0x56, + daPyFace_TCUTRE = 0x57, + daPyFace_TCUTTURNB = 0x58, + daPyFace_TWAITATOB = 0x59, + daPyFace_TCOMEOUT = 0x5A, + daPyFace_THOLDUP = 0x5B, + daPyFace_TWALLHOLDUP = 0x5C, + daPyFace_TITEMGET = 0x5D, + daPyFace_TSALTATION = 0x5E, + daPyFace_TWHO = 0x5F, + daPyFace_TPICKUP = 0x60, + daPyFace_TBOXOPENLINK = 0x61, + daPyFace_TBOXOPENSHORTLINK = 0x62, + daPyFace_TDIELONG = 0x63, + daPyFace_TSWIMDIE = 0x64, + daPyFace_TSURPRISED = 0x65, + daPyFace_TTURNBACK = 0x66, + daPyFace_TLOOKUP = 0x67, + daPyFace_TWAITQ = 0x68, + daPyFace_TGLAD = 0x69, + daPyFace_TCUTBOKO = 0x6A, + daPyFace_SHIP_JUMP1 = 0x6B, + daPyFace_SHIP_JUMP2 = 0x6C, + daPyFace_TUSEFANA = 0x6D, + daPyFace_TUSEFANB = 0x6E, + daPyFace_TUSEFANB2 = 0x6F, + daPyFace_TBOWWAIT = 0x70, + daPyFace_TVOMITJMP = 0x71, + daPyFace_TREST = 0x72, + daPyFace_TTAKE = 0x73, + daPyFace_TTAKELR = 0x74, + daPyFace_TSLIPICE = 0x75, + daPyFace_THAMSWINGA = 0x76, + daPyFace_THAMSWINGBPRE = 0x77, + daPyFace_THAMSWINGBHIT = 0x78, + daPyFace_THAMSWINGBEND = 0x79, + daPyFace_TSETBOOTS = 0x7A, + daPyFace_TDOOROPENALINK = 0x7B, + daPyFace_TDOOROPENBLINK = 0x7C, + daPyFace_TSEYYES = 0x7D, + daPyFace_TPRESENTATIONA = 0x7E, + daPyFace_TWINDL = 0x7F, + daPyFace_TWINDR = 0x80, + daPyFace_TPRESENTATIONB = 0x81, + daPyFace_TBINDRINKPRE = 0x82, + daPyFace_TBINDRINKING = 0x83, + daPyFace_TBINDRINKAFTER = 0x84, + daPyFace_TBINDRINKPRE2 = 0x85, + daPyFace_TBINDRINKING2 = 0x86, + daPyFace_TBINDRINKAFTER2 = 0x87, + daPyFace_TBINOPENPRE = 0x88, + daPyFace_TBINOPENA = 0x89, + daPyFace_TBINOPENB = 0x8A, + daPyFace_TBINSWING = 0x8B, + daPyFace_TBINGET = 0x8C, + daPyFace_TARROWRELORD = 0x8D, + daPyFace_TSURPRISEDB = 0x8E, + daPyFace_TFAN = 0x8F, + daPyFace_TNENRIKI = 0x90, + daPyFace_TMABAB_TEDL = 0x91, + daPyFace_TMABAH_TABEKOBE = 0x92, + daPyFace_TSETHYOINOMI = 0x93, + daPyFace_LINK_FREEZ = 0x94, + daPyFace_LINK_MOGAKI = 0x95, + daPyFace_TDAMBIRI = 0x96, + daPyFace_SALVLR = 0x97, + daPyFace_SALVWAIT = 0x98, + daPyFace_SALVBAD = 0x99, + daPyFace_SALVGOOD = 0x9A, + daPyFace_SEARESET = 0x9B, + daPyFace_TWARPIN = 0x9C, + daPyFace_TWARPOUT = 0x9D, + daPyFace_TPOWUPWAIT = 0x9E, + daPyFace_TPOWUP = 0x9F, + daPyFace_TCUTKESA = 0xA0, + daPyFace_TWARPOUTFIRST = 0xA1, + daPyFace_TDASHKAZE = 0xA2, + daPyFace_TIYAYA = 0xA3, + daPyFace_TFREEA = 0xA4, + daPyFace_TFREEB = 0xA5, + daPyFace_TFREED = 0xA6, + daPyFace_TTAKTKAZE = 0xA7, + daPyFace_TTAKTSIPPU = 0xA8, + daPyFace_TTAKTCHUYA = 0xA9, + daPyFace_TTAKTFUJIN = 0xAA, + daPyFace_TTAKTAYATSURI = 0xAB, + daPyFace_TTAKTCHISIN = 0xAC, + daPyFace_UNKNOWN = 0xAD, // Not an index, this is a special value checked in checkNormalFace() }; - /* 0x290 */ u8 mAttackState; + /* 0x290 */ u8 mCutType; /* 0x291 */ u8 field_0x291; /* 0x292 */ u8 field_0x292[0x294 - 0x292]; /* 0x294 */ s16 mDamageWaitTimer; /* 0x296 */ s16 mQuakeTimer; - /* 0x298 */ int field_0x298; + /* 0x298 */ int mFace; /* 0x29C */ u32 mNoResetFlg0; /* 0x2A0 */ u32 mNoResetFlg1; /* 0x2A4 */ u32 mResetFlg0; /* 0x2A8 */ f32 field_0x2a8; - /* 0x2AC */ f32 field_0x2ac; + /* 0x2AC */ f32 mHeight; /* 0x2B0 */ f32 field_0x2b0; /* 0x2B4 */ csXyz mBodyAngle; /* 0x2BA */ u8 field_0x2BA[0x2BC - 0x2BA]; /* 0x2BC */ cXyz mHeadTopPos; /* 0x2C8 */ cXyz mSwordTopPos; - /* 0x2D4 */ cXyz field_0x2d4; - /* 0x2E0 */ cXyz field_0x2e0; + /* 0x2D4 */ cXyz mLeftHandPos; + /* 0x2E0 */ cXyz mRightHandPos; /* 0x2EC */ cXyz mRopePos; /* 0x2F8 */ cXyz field_0x2f8; /* 0x304 */ daPy_demo_c mDemo; /* 0x31C */ /* vtable */ - u8 getCutType() const { return mAttackState; } + f32 getSpeedF() const { return speedF; } + u8 getCutType() const { return mCutType; } s16 getDamageWaitTimer() const { return mDamageWaitTimer; } - s16 getBodyAngleX() { return mBodyAngle.x; } - s16 getBodyAngleY() { return mBodyAngle.y; } - void getLeftHandPos() const {} - void getRightHandPos() const {} - void getSwordTopPos() const {} + f32 getHeight() const { return mHeight; } + s16 getBodyAngleX() const { return mBodyAngle.x; } + s16 getBodyAngleY() const { return mBodyAngle.y; } cXyz getHeadTopPos() const { return mHeadTopPos; } cXyz* getHeadTopPosP() { return &mHeadTopPos; } - f32 getSpeedF() const { return speedF; } + cXyz getSwordTopPos() const { return mSwordTopPos;} + cXyz getLeftHandPos() const { return mLeftHandPos; } + cXyz getRightHandPos() const { return mRightHandPos; } + cXyz getRopePos() const { return mRopePos; } + void getCutCount() const {} // field_0x291? + void getYPos() const {} void changeDemoMode(u32) {} void changeDemoMoveAngle(s16 angle) { mDemo.setMoveAngle(angle); } @@ -208,6 +390,7 @@ public: mDemo.setOriginalDemoType(); mDemo.setParam0(0); } + void cancelOriginalDemo() {} void onNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 |= flag; } void offNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 &= ~flag; } @@ -218,6 +401,7 @@ public: bool checkEquipHoverBoots() const { return checkNoResetFlg0(daPyFlg0_HOVER_BOOTS); } void onNoFallVoice() { onNoResetFlg0(daPyFlg0_NO_FALL_VOICE); } void onScopeCancel() { onNoResetFlg0(daPyFlg0_SCOPE_CANCEL); } + void onPhotoBoxCancel() { onNoResetFlg0(daPyFlg0_PHOTO_BOX_CANCEL); } bool checkEquipHeavyBoots() const { return checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); } void onPlayerNoDraw() { onNoResetFlg0(daPyFlg0_NO_DRAW); } void offPlayerNoDraw() { offNoResetFlg0(daPyFlg0_NO_DRAW); } @@ -271,13 +455,19 @@ public: bool checkArrowShoot() const { return checkResetFlg0(daPyRFlg0_ARROW_SHOOT); } bool checkGrabWear() const { return field_0x2b0 < 0.0f; } - void checkMasterSwordEquip() const {} + void setFace(daPy_FACE face) { mFace = face; } - // checkSwordMiniGame__9daPy_py_cCFv - // checkNormalSwordEquip__9daPy_py_cCFv - // checkBowMiniGame__9daPy_py_cCFv - // checkUseArrowEffect__9daPy_py_cCFv - // checkFinalMasterSwordEquip__9daPy_py_cCFv + void checkNormalSwordEquip() const {} + void checkMasterSwordEquip() const {} + void checkFinalMasterSwordEquip() const {} + void checkBowMiniGame() const {} + void checkSwordMiniGame() const {} + void checkSoupPowerUp() const {} + void checkSubjectAccept() const {} + void checkTactInput() const {} + void checkUseArrowEffect() const {} + void getRopeJumpLand() const {} + void checkRopeForceEnd() const {} virtual MtxP getLeftHandMatrix() = 0; virtual MtxP getRightHandMatrix() = 0; @@ -301,7 +491,7 @@ public: virtual u32 getThrowBoomerangID() const { return -1; } virtual u32 getGrabActorID() const { return -1; } virtual BOOL checkGrabBarrel() { return FALSE; } - virtual BOOL checkPlayerNoDraw() { return FALSE; } + virtual u32 checkPlayerNoDraw() { return FALSE; } virtual BOOL checkRopeTag() { return FALSE; } virtual BOOL checkRopeReadyAnime() const { return FALSE; } virtual void voiceStart(u32) {} @@ -317,14 +507,10 @@ public: virtual void changeTextureAnime(u16, u16, int) {} virtual void cancelChangeTextureAnime() {} - void getRopeJumpLand() const; - void checkRopeForceEnd() const; void changePlayer(fopAc_ac_c*); void objWindHitCheck(dCcD_Cyl*); void setDoButtonQuake(); void stopDoButtonQuake(int); - void getRopePos() const; - void setFace(daPy_py_c::daPy_FACE) {} }; // Size: 0x320 #endif /* D_A_PLAYER */ diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 25eecee52..8e867392e 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -206,21 +206,24 @@ class daPy_footData_c { public: ~daPy_footData_c(); daPy_footData_c(); - + +public: /* 0x000 */ u8 field_0x000[0x034 - 0x000]; /* 0x034 */ dBgS_LinkGndChk field_0x034; /* 0x088 */ u8 field_0x088[0x118 - 0x088]; }; struct daPy_aura_c { - J3DModel* mpYaura00Model; - f32 mFrame; - +public: void setModel(J3DModel* model) { mpYaura00Model = model; } J3DModel* getModel() { return mpYaura00Model; } void setFrame(f32 frame) { mFrame = frame; } f32 getFrame() { return mFrame; } -}; + +public: + /* 0x00 */ J3DModel* mpYaura00Model; + /* 0x04 */ f32 mFrame; +}; // Size: 0x08 class daPy_anmIndex_c { public: @@ -1496,7 +1499,7 @@ public: J3DAnmTransform* getAnimeResource(daPy_anmHeap_c*, u16, u32); void getUnderUpperAnime(daPy_anmIndex_c const*, J3DAnmTransform**, J3DAnmTransform**, int, u32); void setTextureAnimeResource(J3DAnmTexPattern*, int); - void loadTextureAnimeResource(u32, int); + J3DAnmTexPattern* loadTextureAnimeResource(u32, BOOL); BOOL checkBossBgm(); BOOL checkMabaAnimeBtp(int); BOOL checkNormalFace(); @@ -2151,8 +2154,8 @@ public: BOOL procHookshotMove(); BOOL procHookshotFly_init(); BOOL procHookshotFly(); - void fanWindEffectDraw(); - void fanWindCrashEffectDraw(); + BOOL fanWindEffectDraw(); + BOOL fanWindCrashEffectDraw(); void fanJointCB(int); void parachuteJointCB(int); void setShapeFanLeaf(); @@ -2421,7 +2424,7 @@ public: virtual u32 getThrowBoomerangID() const { return mActorKeepThrow.getID(); } virtual u32 getGrabActorID() const { return mActorKeepGrab.getID(); } virtual BOOL checkGrabBarrel() { return checkGrabBarrelSearch(1); } - virtual BOOL checkPlayerNoDraw() { return dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 2) || checkNoResetFlg0(daPyFlg0_NO_DRAW); } + virtual u32 checkPlayerNoDraw() { return dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 2) || checkNoResetFlg0(daPyFlg0_NO_DRAW); } virtual BOOL checkRopeTag() { return mActorKeepEquip.getActor() == NULL; } virtual BOOL checkRopeReadyAnime() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_ROPETHROWWAIT; } virtual void voiceStart(u32); @@ -2445,10 +2448,10 @@ public: /* 0x0338 */ ResTIMG* mpCurrLinktex; /* 0x033C */ ResTIMG mOtherLinktex; /* 0x035C */ J3DAnmTexPattern* m035C; - /* 0x0360 */ J3DTexNoAnm* mpTexNoAnm; + /* 0x0360 */ J3DTexNoAnm* m_texNoAnms; /* 0x0364 */ J3DAnmTextureSRTKey* mpTexScrollResData; - /* 0x0368 */ J3DTexMtxAnm* mpTexMtxAnm; - /* 0x036C */ daPy_matAnm_c* mpTexEyeScroll[2]; + /* 0x0368 */ J3DTexMtxAnm* m_texMtxAnm; + /* 0x036C */ daPy_matAnm_c* m_tex_eye_scroll[2]; /* 0x0374 */ J3DShape* mpZOffBlendShape[4]; /* 0x0384 */ J3DShape* mpZOffNoneShape[4]; /* 0x0394 */ J3DShape* mpZOnShape[4]; @@ -2543,18 +2546,8 @@ public: /* 0x31AC */ fopAc_ac_c* mpAttnActorY; /* 0x31B0 */ fopAc_ac_c* mpAttnActorZ; /* 0x31B4 */ mDoExt_MtxCalcOldFrame* m_old_fdata; - /* 0x31B8 */ u16 mTexAnimeResIdx; - /* 0x31BA */ u16 m31BA; - /* 0x31BC */ u16 m31BC; - /* 0x31BE */ u16 m31BE; - /* 0x31C0 */ void* mpTextureAnimeResData; - /* 0x31C4 */ JKRSolidHeap* mpTextureAnimeResHeap; - /* 0x31C8 */ u16 mTexScrollResIdx; - /* 0x31CA */ u16 m31CA; - /* 0x31CC */ u16 m31CC; - /* 0x31CE */ u16 m31CE; - /* 0x31D0 */ void* mpTextureScrollResData; - /* 0x31D4 */ JKRSolidHeap* mpTextureScrollResHeap; + /* 0x31B8 */ daPy_anmHeap_c m_tex_anm_heap; + /* 0x31C8 */ daPy_anmHeap_c m_tex_scroll_heap; /* 0x31D8 */ int mCurProc; /* 0x31DC */ ProcFunc mCurProcFunc; /* 0x31E8 */ daPy_footEffect_c m31E8[2]; @@ -2658,8 +2651,8 @@ public: /* 0x352A */ s16 m352A; /* 0x352C */ s16 m352C; /* 0x352E */ s16 m352E; - /* 0x3530 */ s16 m3530; - /* 0x3532 */ s16 m3532; + /* 0x3530 */ u16 m3530; + /* 0x3532 */ u16 m3532; /* 0x3534 */ s16 m3534; /* 0x3536 */ s16 m3536; /* 0x3538 */ s16 m3538; @@ -2681,7 +2674,7 @@ public: /* 0x3558 */ s16 m3558; /* 0x355A */ s16 m355A; /* 0x355C */ s16 m355C; - /* 0x355E */ u16 m355E; + /* 0x355E */ s16 m355E; /* 0x3560 */ u16 mHeldItemType; /* 0x3562 */ u8 m3562[0x3564 - 0x3562]; /* 0x3564 */ s16 m3564; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 3f77eb2de..c2cac3e96 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -410,6 +410,7 @@ public: } } + JKRArchive* getLkDemoAnmArchive() { return mpLkDArc; } void setLkDemoAnmArchive(JKRArchive* i_arc) { mpLkDArc = i_arc; } void setStatus(u16 status) { mStatus = status; } void onStatus(u16 status) { mStatus |= status; } @@ -536,6 +537,8 @@ public: inline void stopFwaterTimer() { mFwaterTimer = 0; } inline u8 checkFwaterTimer() { return mFwaterTimer; } + inline u8 getMiniGameType() { return mMiniGameType; } + /* 0x0000 */ dBgS mBgS; /* 0x1404 */ dCcS mCcS; /* 0x3DF8 */ dADM mADM; @@ -1948,6 +1951,10 @@ inline dDemo_actor_c* dComIfGp_demo_getActor(u8 id) { return g_dComIfG_gameInfo.play.getDemo()->mDemoObj.getActor(id); } +inline JKRArchive* dComIfGp_getLkDemoAnmArchive() { + return g_dComIfG_gameInfo.play.getLkDemoAnmArchive(); +} + inline void dComIfGp_setLkDemoAnmArchive(JKRArchive* i_arc) { g_dComIfG_gameInfo.play.setLkDemoAnmArchive(i_arc); } @@ -2163,7 +2170,7 @@ inline void dComIfGp_setCurrentGrafPort(J2DOrthoGraph* i_graf) { inline u8 dComIfGp_getMiniGameType() { // TODO add enum for minigame type. // 0 for none, 8 for shooting the fishman, 2/6 for orca, 7 for mail sorting, etc - return g_dComIfG_gameInfo.play.mMiniGameType; + return g_dComIfG_gameInfo.play.getMiniGameType(); } inline void dComIfGp_setAStatus(u8 status) { diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h index 77730ee95..92ce43922 100644 --- a/include/m_Do/m_Do_audio.h +++ b/include/m_Do/m_Do_audio.h @@ -70,6 +70,14 @@ inline void mDoAud_bgmStop(u32 param_0) { mDoAud_zelAudio_c::getInterface()->bgmStop(param_0, 0); } +inline int mDoAud_checkPlayingMainBgmFlag() { + return mDoAud_zelAudio_c::getInterface()->checkPlayingMainBgmFlag(); +} + +inline int mDoAud_checkPlayingSubBgmFlag() { + return mDoAud_zelAudio_c::getInterface()->checkPlayingSubBgmFlag(); +} + inline void mDoAud_prepareLandingDemo(u32 idx) { mDoAud_zelAudio_c::getInterface()->prepareLandingDemo(idx); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 3be986580..3d47457c6 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -223,7 +223,7 @@ public: private: /* 0x2C */ void* mBas; -}; +}; // Size: 0x30 class mDoExt_MtxCalcOldFrame { public: @@ -555,6 +555,8 @@ public: ~mDoExt_offCupOnAupPacket(); void draw(); + + void entryOpa() { j3dSys.getDrawBuffer(0)->entryImm(this, 0); } }; class mDoExt_onCupOffAupPacket : public J3DPacket { @@ -562,6 +564,8 @@ public: ~mDoExt_onCupOffAupPacket(); void draw(); + + void entryOpa() { j3dSys.getDrawBuffer(0)->entryImm(this, 0); } }; class mDoExt_3Dline_c { diff --git a/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp b/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp index 7fe8e76ef..0e1e1f0ae 100644 --- a/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp @@ -231,6 +231,7 @@ s32 J3DMaterialTable::setTexNoAnimator(J3DAnmTexPattern* pAnm, J3DTexNoAnm* pAnm /* 802F6600-802F6798 .text setTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKeyP12J3DTexMtxAnmP12J3DTexMtxAnm */ s32 J3DMaterialTable::setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* pTexAnm, J3DTexMtxAnm* pDualAnmR) { + /* Nonmatching - regalloc */ s32 ret = 0; u16 materialNum = pAnm->getUpdateMaterialNum(); @@ -246,12 +247,18 @@ s32 J3DMaterialTable::setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* if (pMatAnm == NULL) { ret = 1; } else if (texMtxID != 0xFF) { - if (pMaterial->getTexGenBlock()->getTexCoord(texMtxID) != NULL) - pMaterial->getTexGenBlock()->getTexCoord(texMtxID)->setTexGenMtx(GX_TEXMTX0 + (texMtxID & 0xFF) * 3); + if (pMaterial->getTexCoord(texMtxID) != NULL) + pMaterial->getTexCoord(texMtxID)->setTexGenMtx(GX_TEXMTX0 + (texMtxID & 0xFF) * 3); - J3DTexMtx *pTexMtx = pMaterial->getTexGenBlock()->getTexMtx(texMtxID); + J3DTexMtx *pTexMtx = pMaterial->getTexMtx(texMtxID); pTexMtx->getTexMtxInfo().mInfo = ((pTexMtx->getTexMtxInfo().mInfo) & 0x7F) | (pAnm->getTexMtxCalcType() << 7); - pTexMtx->getTexMtxInfo().mCenter = pAnm->getSRTCenter(i); + // Fakematch? The codegen doesn't match unless a temp variable is used and assigned to multiple times. + Vec* temp = &pAnm->getSRTCenter(i); + pTexMtx->getTexMtxInfo().mCenter.x = temp->x; + temp = &pAnm->getSRTCenter(i); + pTexMtx->getTexMtxInfo().mCenter.y = temp->y; + temp = &pAnm->getSRTCenter(i); + pTexMtx->getTexMtxInfo().mCenter.z = temp->z; pMatAnm->setTexMtxAnm(texMtxID, &pTexAnm[i]); } diff --git a/src/d/actor/d_a_hookshot.cpp b/src/d/actor/d_a_hookshot.cpp index 226da8459..19e7cadd7 100644 --- a/src/d/actor/d_a_hookshot.cpp +++ b/src/d/actor/d_a_hookshot.cpp @@ -219,10 +219,10 @@ BOOL daHookshot_c::procWait() { daPy_lk_c* link = daPy_getPlayerLinkActorClass(); current.pos = link->getHookshotRootPos(); MtxP leftHandtx = link->getModelJointMtx(0x08); // cl_LhandA joint - cMtx_copy(leftHandtx, m51C); - m51C[0][3] = current.pos.x; - m51C[1][3] = current.pos.y; - m51C[2][3] = current.pos.z; + cMtx_copy(leftHandtx, mMtx); + mMtx[0][3] = current.pos.x; + mMtx[1][3] = current.pos.y; + mMtx[2][3] = current.pos.z; m2B0 = 0; if (fopAcM_GetParam(this) == 1) { diff --git a/src/d/actor/d_a_item.cpp b/src/d/actor/d_a_item.cpp index 0aa8c61e7..037f13b27 100644 --- a/src/d/actor/d_a_item.cpp +++ b/src/d/actor/d_a_item.cpp @@ -1368,7 +1368,7 @@ BOOL daItem_c::initAction() { return TRUE; } - // TODO: usage of uninitialized register? + // TODO: bug? usage of uninitialized register f31 in some cases f32 temp_f31; switch (mAction) { case 1: diff --git a/src/d/actor/d_a_obj_barrier.cpp b/src/d/actor/d_a_obj_barrier.cpp index d838037ac..f61c984ee 100644 --- a/src/d/actor/d_a_obj_barrier.cpp +++ b/src/d/actor/d_a_obj_barrier.cpp @@ -231,7 +231,7 @@ void daObjBarrier_c::break_start_wait_proc() { if ((player_p->current.pos - current.pos).absXZ() >= 8800.0f && dComIfGs_getSelectEquip(0) == MASTER_SWORD_EX) { - switch (player_p->mAttackState) { + switch (player_p->getCutType()) { case 1: case 2: case 3: diff --git a/src/d/actor/d_a_obj_mknjd.cpp b/src/d/actor/d_a_obj_mknjd.cpp index d12624aa2..700f2c2de 100644 --- a/src/d/actor/d_a_obj_mknjd.cpp +++ b/src/d/actor/d_a_obj_mknjd.cpp @@ -521,13 +521,13 @@ void daObjMknjD::Act_c::privateCut() { case ACT_BREAK: if (daObjMknjD_break() == true) { if (strcmp(dComIfGp_getStartStageName(), "Ekaze") == 0 || strcmp(dComIfGp_getStartStageName(), "Edaichi") == 0) { - mDoAud_bgmStart(0x80000000 | JA_BGM_JABOO_CAVE); + mDoAud_bgmStart(JA_BGM_JABOO_CAVE); } else if (m043E == true) { - mDoAud_bgmStart(0x80000000 | JA_BGM_D_WIND); + mDoAud_bgmStart(JA_BGM_D_WIND); } else { - mDoAud_bgmStart(0x80000000 | JA_BGM_D_EARTH); + mDoAud_bgmStart(JA_BGM_D_EARTH); } if (mSmokeCBs[2].getEmitter() != NULL) { @@ -908,10 +908,10 @@ int daObjMknjD::Act_c::Execute(Mtx** i_mtx) { } if (m0432 == 1) { if (m043E == true) { - mDoAud_bgmStart(0x80000000 | JA_BGM_TAKT_MAKORE); + mDoAud_bgmStart(JA_BGM_TAKT_MAKORE); } else { - mDoAud_bgmStart(0x80000000 | JA_BGM_TAKT_MEDRI); + mDoAud_bgmStart(JA_BGM_TAKT_MEDRI); } m0432 = 0; diff --git a/src/d/actor/d_a_player_fan.inc b/src/d/actor/d_a_player_fan.inc index ae487f589..1df5fe7bf 100644 --- a/src/d/actor/d_a_player_fan.inc +++ b/src/d/actor/d_a_player_fan.inc @@ -13,12 +13,12 @@ #include "d/actor/d_a_player_main.h" /* 8014BAA0-8014BAEC .text fanWindEffectDraw__9daPy_lk_cFv */ -void daPy_lk_c::fanWindEffectDraw() { +BOOL daPy_lk_c::fanWindEffectDraw() { /* Nonmatching */ } /* 8014BAEC-8014BB38 .text fanWindCrashEffectDraw__9daPy_lk_cFv */ -void daPy_lk_c::fanWindCrashEffectDraw() { +BOOL daPy_lk_c::fanWindCrashEffectDraw() { /* Nonmatching */ } diff --git a/src/d/actor/d_a_player_food.inc b/src/d/actor/d_a_player_food.inc index e42fe593e..5588a185c 100644 --- a/src/d/actor/d_a_player_food.inc +++ b/src/d/actor/d_a_player_food.inc @@ -127,7 +127,7 @@ BOOL daPy_lk_c::procFoodThrow() { } } else if (frameCtrl.checkPass(9.0f)) { seStartOnlyReverb(JA_SE_LK_ESA_THROW); - void* esa = fopAcM_fastCreate(PROC_ESA, 0xFFFF0014, &field_0x2d4, fopAcM_GetRoomNo(this), &shape_angle); + void* esa = fopAcM_fastCreate(PROC_ESA, 0xFFFF0014, &mLeftHandPos, fopAcM_GetRoomNo(this), &shape_angle); if (esa) { m3630 = fopAcM_GetID(esa); if (mDemo.getDemoType() != 5) { diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index bf9ae8730..a7ab89d45 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -20,7 +20,11 @@ #include "d/d_item_data.h" #include "d/d_item.h" #include "m_Do/m_Do_mtx.h" +#include "m_Do/m_Do_lib.h" #include "d/d_material.h" +#include "JSystem/J3DGraphLoader/J3DAnmLoader.h" +#include "d/actor/d_a_hookshot.h" +#include "SSystem/SComponent/c_counter.h" const Vec l_ship_offset = {0.0f, 15.0f, -35.0f}; const Vec l_ship_offset2 = {0.0f, 15.0f, -66.8f}; @@ -53,179 +57,179 @@ const Vec l_crawl_rside_front_offset = {-50.0f, 5.0f, 80.0f}; const Vec l_crawl_min_side_offset = {30.0f, 0.0f, 0.0f}; const daPy_lk_c::TexAnmTableEntry daPy_lk_c::mTexAnmIndexTable[] = { - {LKANM_BTP_TMABAA, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAA, LKANM_BTK_TEUP}, - {LKANM_BTP_TMABAB, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAC, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABACB, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABACB, LKANM_BTK_TEDW}, - {LKANM_BTP_TMABACC, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAD, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAD, LKANM_BTK_TEDW}, - {LKANM_BTP_TMABAE, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAE, LKANM_BTK_TEUP}, - {LKANM_BTP_TMABAE, LKANM_BTK_TEDW}, - {LKANM_BTP_TMABAE, LKANM_BTK_TEL}, - {LKANM_BTP_TMABAE, LKANM_BTK_TER}, - {LKANM_BTP_TMABAF, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAG, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAH, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAI, LKANM_BTK_TMABA}, - {LKANM_BTP_TMABAJ, LKANM_BTK_TEYORIME}, - {LKANM_BTP_TMABAD, LKANM_BTK_TWAITPICKUP}, - {LKANM_BTP_TMABAC, LKANM_BTK_THOOKSHOTJMP}, - {LKANM_BTP_TGRABP, LKANM_BTK_TGRABP}, - {LKANM_BTP_TGRABUP, LKANM_BTK_TGRABUP}, - {LKANM_BTP_TGRABNG, LKANM_BTK_TGRABNG}, - {LKANM_BTP_TGRABTHROW, LKANM_BTK_TGRABTHROW}, - {LKANM_BTP_TGRABRE, LKANM_BTK_TECN}, - {LKANM_BTP_TWALLWL, LKANM_BTK_TER}, - {LKANM_BTP_TWALLWR, LKANM_BTK_TEL}, - {LKANM_BTP_TWALLPL, LKANM_BTK_TWALLPL}, - {LKANM_BTP_TWALLPR, LKANM_BTK_TWALLPR}, - {LKANM_BTP_TCUT, LKANM_BTK_TECN}, - {LKANM_BTP_TCUTEA, LKANM_BTK_TCUTEA}, - {LKANM_BTP_TCUTEA, LKANM_BTK_TECN}, - {LKANM_BTP_TEXCA1, LKANM_BTK_TEXCA1}, - {LKANM_BTP_TEXCB1, LKANM_BTK_TEXCB1}, - {LKANM_BTP_TJATTACK, LKANM_BTK_TJATTACK}, - {LKANM_BTP_TJATTACK, LKANM_BTK_TEUP}, - {LKANM_BTP_TCUTTURNP, LKANM_BTK_TECN}, - {LKANM_BTP_TCUTTURN, LKANM_BTK_TCUTTURN}, - {LKANM_BTP_TMJMP, LKANM_BTK_TMJMP}, - {LKANM_BTP_TMJMPC, LKANM_BTK_TMJMPC}, - {LKANM_BTP_TMROLLL, LKANM_BTK_TMROLLL}, - {LKANM_BTP_TMROLLR, LKANM_BTK_TMROLLR}, - {LKANM_BTP_TMROLLLRC, LKANM_BTK_TMROLLLC}, - {LKANM_BTP_TMROLLLRC, LKANM_BTK_TMROLLRC}, - {LKANM_BTP_TMSTEPOVER, LKANM_BTK_TMSTEPOVER}, - {LKANM_BTP_TMSTEPOVERA, LKANM_BTK_TMSTEPOVERA}, - {LKANM_BTP_TMSTEPOVERLAND, LKANM_BTK_TMSTEPOVERLAND}, - {LKANM_BTP_TATNJLR, LKANM_BTK_TATNJL}, - {LKANM_BTP_TATNJLR, LKANM_BTK_TATNJR}, - {LKANM_BTP_TJMP, LKANM_BTK_TJMP}, - {LKANM_BTP_TROLLF, LKANM_BTK_TROLLF}, - {LKANM_BTP_TROLLB, LKANM_BTK_TROLLB}, - {LKANM_BTP_TROLLBLAND, LKANM_BTK_TECN}, - {LKANM_BTP_TROLLFMIS, LKANM_BTK_TROLLFMIS}, - {LKANM_BTP_TFALL, LKANM_BTK_TEDW}, - {LKANM_BTP_TLANDDAMA, LKANM_BTK_TLANDDAMA}, - {LKANM_BTP_TLANDDAMAST, LKANM_BTK_TLANDDAMAST}, - {LKANM_BTP_TDAM, LKANM_BTK_TDAM}, - {LKANM_BTP_TDAMF, LKANM_BTK_TECN}, - {LKANM_BTP_TDAMFFUP, LKANM_BTK_TDAMFFUP}, - {LKANM_BTP_TDAMFBUP, LKANM_BTK_TDAMFBUP}, - {LKANM_BTP_TDAMFLRUP, LKANM_BTK_TDAMFLUP}, - {LKANM_BTP_TDAMFLRUP, LKANM_BTK_TDAMFRUP}, - {LKANM_BTP_TDAMDASH, LKANM_BTK_TECN}, - {LKANM_BTP_TGUARD, LKANM_BTK_TGUARD}, - {LKANM_BTP_TSLIDEF, LKANM_BTK_TSLIDEF}, - {LKANM_BTP_TSLIDEFLAND, LKANM_BTK_TSLIDEFLAND}, - {LKANM_BTP_TSLIDEB, LKANM_BTK_TEDW}, - {LKANM_BTP_TSLIDEBLAND, LKANM_BTK_TSLIDEFLAND}, - {LKANM_BTP_TSWIMP, LKANM_BTK_TSWIMP}, - {LKANM_BTP_TSWIMING, LKANM_BTK_TSWIMING}, - {LKANM_BTP_TBOOMTHROW, LKANM_BTK_TBOOMTHROW}, - {LKANM_BTP_TBOOMCATCH, LKANM_BTK_TBOOMCATCH}, - {LKANM_BTP_TWALKPUSH, LKANM_BTK_TWALKPUSH}, - {LKANM_BTP_TWALKPULL, LKANM_BTK_TWALKPULL}, - {LKANM_BTP_TVJMPCHA, LKANM_BTK_TVJMPCHA}, - {LKANM_BTP_TVJMPCL, LKANM_BTK_TVJMPCL}, - {LKANM_BTP_TROPECLIMB, LKANM_BTK_TEUP}, - {LKANM_BTP_TROPEDOWN, LKANM_BTK_TEDW}, - {LKANM_BTP_TLADDERUPST, LKANM_BTK_TLADDERUPST}, - {LKANM_BTP_TLADDERDWST, LKANM_BTK_TLADDERDWST}, - {LKANM_BTP_TLADDERUPED, LKANM_BTK_TLADDERUPED}, - {LKANM_BTP_TLADDERDWED, LKANM_BTK_TLADDERDWED}, - {LKANM_BTP_THANGING, LKANM_BTK_THANGING}, - {LKANM_BTP_THANGUP, LKANM_BTK_THANGUP}, - {LKANM_BTP_TLAVADAM, LKANM_BTK_TLAVADAM}, - {LKANM_BTP_TCUTRE, LKANM_BTK_TCUTRE}, - {LKANM_BTP_TCUTTURNB, LKANM_BTK_TCUTTURNB}, - {LKANM_BTP_TWAITATOB, LKANM_BTK_TWAITATOB}, - {LKANM_BTP_TCOMEOUT, LKANM_BTK_TCOMEOUT}, - {LKANM_BTP_THOLDUP, LKANM_BTK_TMABA}, - {LKANM_BTP_TWALLHOLDUP, LKANM_BTK_TWALLHOLDUP}, - {LKANM_BTP_TITEMGET, LKANM_BTK_TITEMGET}, - {LKANM_BTP_TSALTATION, LKANM_BTK_TSALTATION}, - {LKANM_BTP_TWHO, LKANM_BTK_TWHO}, - {LKANM_BTP_TPICKUP, LKANM_BTK_TPICKUP}, - {LKANM_BTP_TBOXOPENLINK, LKANM_BTK_TBOXOPENLINK}, - {LKANM_BTP_TBOXOPENSHORTLINK, LKANM_BTK_TBOXOPENSHORTLINK}, - {LKANM_BTP_TDIELONG, LKANM_BTK_TDIELONG}, - {LKANM_BTP_TSWIMDIE, LKANM_BTK_TECN}, - {LKANM_BTP_TSURPRISED, LKANM_BTK_TSURPRISED}, - {LKANM_BTP_TTURNBACK, LKANM_BTK_TTURNBACK}, - {LKANM_BTP_TLOOKUP, LKANM_BTK_TLOOKUP}, - {LKANM_BTP_TWAITQ, LKANM_BTK_TECN}, - {LKANM_BTP_TGLAD, LKANM_BTK_TECN}, - {LKANM_BTP_TCUTBOKO, LKANM_BTK_TCUTBOKO}, - {LKANM_BTP_SHIP_JUMP1, LKANM_BTK_TECN}, - {LKANM_BTP_SHIP_JUMP2, LKANM_BTK_TECN}, - {LKANM_BTP_TUSEFANA, LKANM_BTK_TUSEFANA}, - {LKANM_BTP_TUSEFANB, LKANM_BTK_TUSEFANB}, - {LKANM_BTP_TUSEFANB2, LKANM_BTK_TEDW}, - {LKANM_BTP_TBOWWAIT, LKANM_BTK_TBOWWAIT}, - {LKANM_BTP_TVOMITJMP, LKANM_BTK_TEDW}, - {LKANM_BTP_TREST, LKANM_BTK_TREST}, - {LKANM_BTP_TTAKE, LKANM_BTK_TTAKE}, - {LKANM_BTP_TTAKELR, LKANM_BTK_TECN}, - {LKANM_BTP_TSLIPICE, LKANM_BTK_TECN}, - {LKANM_BTP_THAMSWINGA, LKANM_BTK_THAMSWINGA}, - {LKANM_BTP_THAMSWINGBPRE, LKANM_BTK_THAMSWINGBPRE}, - {LKANM_BTP_THAMSWINGBHIT, LKANM_BTK_THAMSWINGBHIT}, - {LKANM_BTP_THAMSWINGBEND, LKANM_BTK_THAMSWINGBEND}, - {LKANM_BTP_TSETBOOTS, LKANM_BTK_TECN}, - {LKANM_BTP_TDOOROPENALINK, LKANM_BTK_TDOOROPENALINK}, - {LKANM_BTP_TDOOROPENBLINK, LKANM_BTK_TDOOROPENBLINK}, - {LKANM_BTP_TSEYYES, LKANM_BTK_TSEYYES}, - {LKANM_BTP_TPRESENTATION, LKANM_BTK_TPRESENTATIONA}, - {LKANM_BTP_TWIND, LKANM_BTK_TWINDL}, - {LKANM_BTP_TWIND, LKANM_BTK_TWINDR}, - {LKANM_BTP_TPRESENTATION, LKANM_BTK_TPRESENTATIONB}, - {LKANM_BTP_TBINDRINKPRE, LKANM_BTK_TBINDRINKPRE}, - {LKANM_BTP_TBINDRINKING, LKANM_BTK_TECN}, - {LKANM_BTP_TBINDRINKAFTER, LKANM_BTK_TBINDRINKAFTER}, - {LKANM_BTP_TBINDRINKPRE2, LKANM_BTK_TBINDRINKPRE}, - {LKANM_BTP_TBINDRINKING2, LKANM_BTK_TECN}, - {LKANM_BTP_TBINDRINKAFTER2, LKANM_BTK_TBINDRINKAFTER2}, - {LKANM_BTP_TBINOPENPRE, LKANM_BTK_TBINOPENPRE}, - {LKANM_BTP_TBINOPENA, LKANM_BTK_TBINOPENA}, - {LKANM_BTP_TBINOPENB, LKANM_BTK_TBINOPENB}, - {LKANM_BTP_TBINSWING, LKANM_BTK_TBINSWING}, - {LKANM_BTP_TBINGET, LKANM_BTK_TBINGET}, - {LKANM_BTP_TARROWRELORD, LKANM_BTK_TARROWRELORD}, - {LKANM_BTP_TSURPRISEDB, LKANM_BTK_TSURPRISEDB}, - {LKANM_BTP_TFAN, LKANM_BTK_TFAN}, - {LKANM_BTP_TNENRIKI, LKANM_BTK_TECN}, - {LKANM_BTP_TMABAB, LKANM_BTK_TEDL}, - {LKANM_BTP_TMABAH, LKANM_BTK_TABEKOBE}, - {LKANM_BTP_TSETHYOINOMI, LKANM_BTK_TSETHYOINOMI}, - {LKANM_BTP_LINK_FREEZ, LKANM_BTK_TECN}, - {LKANM_BTP_LINK_MOGAKI, LKANM_BTK_TECN}, - {LKANM_BTP_TDAMBIRI, LKANM_BTK_TDAMBIRI}, - {LKANM_BTP_SALVLR, LKANM_BTK_SALVWAIT}, - {LKANM_BTP_SALVWAIT, LKANM_BTK_SALVWAIT}, - {LKANM_BTP_SALVBAD, LKANM_BTK_SALVWAIT}, - {LKANM_BTP_SALVGOOD, LKANM_BTK_SALVWAIT}, - {LKANM_BTP_SEARESET, LKANM_BTK_SEARESET}, - {LKANM_BTP_TWARPIN, LKANM_BTK_TWARPIN}, - {LKANM_BTP_TWARPOUT, LKANM_BTK_TWARPOUT}, - {LKANM_BTP_TPOWUPWAIT, LKANM_BTK_TPOWUPWAIT}, - {LKANM_BTP_TPOWUP, LKANM_BTK_TPOWUP}, - {LKANM_BTP_TCUTKESA, LKANM_BTK_TCUTKESA}, - {LKANM_BTP_TWARPOUTFIRST, LKANM_BTK_TWARPOUTFIRST}, - {LKANM_BTP_TDASHKAZE, LKANM_BTK_TDASHKAZE}, - {LKANM_BTP_TIYAYA, LKANM_BTK_TECN}, - {LKANM_BTP_TFREEA, LKANM_BTK_TFREEA}, - {LKANM_BTP_TFREEB, LKANM_BTK_TFREEB}, - {LKANM_BTP_TFREED, LKANM_BTK_TFREED}, - {LKANM_BTP_TTAKTKAZE, LKANM_BTK_TECN}, - {LKANM_BTP_TTAKTSIPPU, LKANM_BTK_TECN}, - {LKANM_BTP_TTAKTCHUYA, LKANM_BTK_TECN}, - {LKANM_BTP_TTAKTFUJIN, LKANM_BTK_TECN}, - {LKANM_BTP_TTAKTAYATSURI, LKANM_BTK_TECN}, - {LKANM_BTP_TTAKTCHISIN, LKANM_BTK_TECN}, + /* 0x00 */ {LKANM_BTP_TMABAA, LKANM_BTK_TMABA}, + /* 0x01 */ {LKANM_BTP_TMABAA, LKANM_BTK_TEUP}, + /* 0x02 */ {LKANM_BTP_TMABAB, LKANM_BTK_TMABA}, + /* 0x03 */ {LKANM_BTP_TMABAC, LKANM_BTK_TMABA}, + /* 0x04 */ {LKANM_BTP_TMABACB, LKANM_BTK_TMABA}, + /* 0x05 */ {LKANM_BTP_TMABACB, LKANM_BTK_TEDW}, + /* 0x06 */ {LKANM_BTP_TMABACC, LKANM_BTK_TMABA}, + /* 0x07 */ {LKANM_BTP_TMABAD, LKANM_BTK_TMABA}, + /* 0x08 */ {LKANM_BTP_TMABAD, LKANM_BTK_TEDW}, + /* 0x09 */ {LKANM_BTP_TMABAE, LKANM_BTK_TMABA}, + /* 0x0A */ {LKANM_BTP_TMABAE, LKANM_BTK_TEUP}, + /* 0x0B */ {LKANM_BTP_TMABAE, LKANM_BTK_TEDW}, + /* 0x0C */ {LKANM_BTP_TMABAE, LKANM_BTK_TEL}, + /* 0x0D */ {LKANM_BTP_TMABAE, LKANM_BTK_TER}, + /* 0x0E */ {LKANM_BTP_TMABAF, LKANM_BTK_TMABA}, + /* 0x0F */ {LKANM_BTP_TMABAG, LKANM_BTK_TMABA}, + /* 0x10 */ {LKANM_BTP_TMABAH, LKANM_BTK_TMABA}, + /* 0x11 */ {LKANM_BTP_TMABAI, LKANM_BTK_TMABA}, + /* 0x12 */ {LKANM_BTP_TMABAJ, LKANM_BTK_TEYORIME}, + /* 0x13 */ {LKANM_BTP_TMABAD, LKANM_BTK_TWAITPICKUP}, + /* 0x14 */ {LKANM_BTP_TMABAC, LKANM_BTK_THOOKSHOTJMP}, + /* 0x15 */ {LKANM_BTP_TGRABP, LKANM_BTK_TGRABP}, + /* 0x16 */ {LKANM_BTP_TGRABUP, LKANM_BTK_TGRABUP}, + /* 0x17 */ {LKANM_BTP_TGRABNG, LKANM_BTK_TGRABNG}, + /* 0x18 */ {LKANM_BTP_TGRABTHROW, LKANM_BTK_TGRABTHROW}, + /* 0x19 */ {LKANM_BTP_TGRABRE, LKANM_BTK_TECN}, + /* 0x1A */ {LKANM_BTP_TWALLWL, LKANM_BTK_TER}, + /* 0x1B */ {LKANM_BTP_TWALLWR, LKANM_BTK_TEL}, + /* 0x1C */ {LKANM_BTP_TWALLPL, LKANM_BTK_TWALLPL}, + /* 0x1D */ {LKANM_BTP_TWALLPR, LKANM_BTK_TWALLPR}, + /* 0x1E */ {LKANM_BTP_TCUT, LKANM_BTK_TECN}, + /* 0x1F */ {LKANM_BTP_TCUTEA, LKANM_BTK_TCUTEA}, + /* 0x20 */ {LKANM_BTP_TCUTEA, LKANM_BTK_TECN}, + /* 0x21 */ {LKANM_BTP_TEXCA1, LKANM_BTK_TEXCA1}, + /* 0x22 */ {LKANM_BTP_TEXCB1, LKANM_BTK_TEXCB1}, + /* 0x23 */ {LKANM_BTP_TJATTACK, LKANM_BTK_TJATTACK}, + /* 0x24 */ {LKANM_BTP_TJATTACK, LKANM_BTK_TEUP}, + /* 0x25 */ {LKANM_BTP_TCUTTURNP, LKANM_BTK_TECN}, + /* 0x26 */ {LKANM_BTP_TCUTTURN, LKANM_BTK_TCUTTURN}, + /* 0x27 */ {LKANM_BTP_TMJMP, LKANM_BTK_TMJMP}, + /* 0x28 */ {LKANM_BTP_TMJMPC, LKANM_BTK_TMJMPC}, + /* 0x29 */ {LKANM_BTP_TMROLLL, LKANM_BTK_TMROLLL}, + /* 0x2A */ {LKANM_BTP_TMROLLR, LKANM_BTK_TMROLLR}, + /* 0x2B */ {LKANM_BTP_TMROLLLRC, LKANM_BTK_TMROLLLC}, + /* 0x2C */ {LKANM_BTP_TMROLLLRC, LKANM_BTK_TMROLLRC}, + /* 0x2D */ {LKANM_BTP_TMSTEPOVER, LKANM_BTK_TMSTEPOVER}, + /* 0x2E */ {LKANM_BTP_TMSTEPOVERA, LKANM_BTK_TMSTEPOVERA}, + /* 0x2F */ {LKANM_BTP_TMSTEPOVERLAND, LKANM_BTK_TMSTEPOVERLAND}, + /* 0x30 */ {LKANM_BTP_TATNJLR, LKANM_BTK_TATNJL}, + /* 0x31 */ {LKANM_BTP_TATNJLR, LKANM_BTK_TATNJR}, + /* 0x32 */ {LKANM_BTP_TJMP, LKANM_BTK_TJMP}, + /* 0x33 */ {LKANM_BTP_TROLLF, LKANM_BTK_TROLLF}, + /* 0x34 */ {LKANM_BTP_TROLLB, LKANM_BTK_TROLLB}, + /* 0x35 */ {LKANM_BTP_TROLLBLAND, LKANM_BTK_TECN}, + /* 0x36 */ {LKANM_BTP_TROLLFMIS, LKANM_BTK_TROLLFMIS}, + /* 0x37 */ {LKANM_BTP_TFALL, LKANM_BTK_TEDW}, + /* 0x38 */ {LKANM_BTP_TLANDDAMA, LKANM_BTK_TLANDDAMA}, + /* 0x39 */ {LKANM_BTP_TLANDDAMAST, LKANM_BTK_TLANDDAMAST}, + /* 0x3A */ {LKANM_BTP_TDAM, LKANM_BTK_TDAM}, + /* 0x3B */ {LKANM_BTP_TDAMF, LKANM_BTK_TECN}, + /* 0x3C */ {LKANM_BTP_TDAMFFUP, LKANM_BTK_TDAMFFUP}, + /* 0x3D */ {LKANM_BTP_TDAMFBUP, LKANM_BTK_TDAMFBUP}, + /* 0x3E */ {LKANM_BTP_TDAMFLRUP, LKANM_BTK_TDAMFLUP}, + /* 0x3F */ {LKANM_BTP_TDAMFLRUP, LKANM_BTK_TDAMFRUP}, + /* 0x40 */ {LKANM_BTP_TDAMDASH, LKANM_BTK_TECN}, + /* 0x41 */ {LKANM_BTP_TGUARD, LKANM_BTK_TGUARD}, + /* 0x42 */ {LKANM_BTP_TSLIDEF, LKANM_BTK_TSLIDEF}, + /* 0x43 */ {LKANM_BTP_TSLIDEFLAND, LKANM_BTK_TSLIDEFLAND}, + /* 0x44 */ {LKANM_BTP_TSLIDEB, LKANM_BTK_TEDW}, + /* 0x45 */ {LKANM_BTP_TSLIDEBLAND, LKANM_BTK_TSLIDEFLAND}, + /* 0x46 */ {LKANM_BTP_TSWIMP, LKANM_BTK_TSWIMP}, + /* 0x47 */ {LKANM_BTP_TSWIMING, LKANM_BTK_TSWIMING}, + /* 0x48 */ {LKANM_BTP_TBOOMTHROW, LKANM_BTK_TBOOMTHROW}, + /* 0x49 */ {LKANM_BTP_TBOOMCATCH, LKANM_BTK_TBOOMCATCH}, + /* 0x4A */ {LKANM_BTP_TWALKPUSH, LKANM_BTK_TWALKPUSH}, + /* 0x4B */ {LKANM_BTP_TWALKPULL, LKANM_BTK_TWALKPULL}, + /* 0x4C */ {LKANM_BTP_TVJMPCHA, LKANM_BTK_TVJMPCHA}, + /* 0x4D */ {LKANM_BTP_TVJMPCL, LKANM_BTK_TVJMPCL}, + /* 0x4E */ {LKANM_BTP_TROPECLIMB, LKANM_BTK_TEUP}, + /* 0x4F */ {LKANM_BTP_TROPEDOWN, LKANM_BTK_TEDW}, + /* 0x50 */ {LKANM_BTP_TLADDERUPST, LKANM_BTK_TLADDERUPST}, + /* 0x51 */ {LKANM_BTP_TLADDERDWST, LKANM_BTK_TLADDERDWST}, + /* 0x52 */ {LKANM_BTP_TLADDERUPED, LKANM_BTK_TLADDERUPED}, + /* 0x53 */ {LKANM_BTP_TLADDERDWED, LKANM_BTK_TLADDERDWED}, + /* 0x54 */ {LKANM_BTP_THANGING, LKANM_BTK_THANGING}, + /* 0x55 */ {LKANM_BTP_THANGUP, LKANM_BTK_THANGUP}, + /* 0x56 */ {LKANM_BTP_TLAVADAM, LKANM_BTK_TLAVADAM}, + /* 0x57 */ {LKANM_BTP_TCUTRE, LKANM_BTK_TCUTRE}, + /* 0x58 */ {LKANM_BTP_TCUTTURNB, LKANM_BTK_TCUTTURNB}, + /* 0x59 */ {LKANM_BTP_TWAITATOB, LKANM_BTK_TWAITATOB}, + /* 0x5A */ {LKANM_BTP_TCOMEOUT, LKANM_BTK_TCOMEOUT}, + /* 0x5B */ {LKANM_BTP_THOLDUP, LKANM_BTK_TMABA}, + /* 0x5C */ {LKANM_BTP_TWALLHOLDUP, LKANM_BTK_TWALLHOLDUP}, + /* 0x5D */ {LKANM_BTP_TITEMGET, LKANM_BTK_TITEMGET}, + /* 0x5E */ {LKANM_BTP_TSALTATION, LKANM_BTK_TSALTATION}, + /* 0x5F */ {LKANM_BTP_TWHO, LKANM_BTK_TWHO}, + /* 0x60 */ {LKANM_BTP_TPICKUP, LKANM_BTK_TPICKUP}, + /* 0x61 */ {LKANM_BTP_TBOXOPENLINK, LKANM_BTK_TBOXOPENLINK}, + /* 0x62 */ {LKANM_BTP_TBOXOPENSHORTLINK, LKANM_BTK_TBOXOPENSHORTLINK}, + /* 0x63 */ {LKANM_BTP_TDIELONG, LKANM_BTK_TDIELONG}, + /* 0x64 */ {LKANM_BTP_TSWIMDIE, LKANM_BTK_TECN}, + /* 0x65 */ {LKANM_BTP_TSURPRISED, LKANM_BTK_TSURPRISED}, + /* 0x66 */ {LKANM_BTP_TTURNBACK, LKANM_BTK_TTURNBACK}, + /* 0x67 */ {LKANM_BTP_TLOOKUP, LKANM_BTK_TLOOKUP}, + /* 0x68 */ {LKANM_BTP_TWAITQ, LKANM_BTK_TECN}, + /* 0x69 */ {LKANM_BTP_TGLAD, LKANM_BTK_TECN}, + /* 0x6A */ {LKANM_BTP_TCUTBOKO, LKANM_BTK_TCUTBOKO}, + /* 0x6B */ {LKANM_BTP_SHIP_JUMP1, LKANM_BTK_TECN}, + /* 0x6C */ {LKANM_BTP_SHIP_JUMP2, LKANM_BTK_TECN}, + /* 0x6D */ {LKANM_BTP_TUSEFANA, LKANM_BTK_TUSEFANA}, + /* 0x6E */ {LKANM_BTP_TUSEFANB, LKANM_BTK_TUSEFANB}, + /* 0x6F */ {LKANM_BTP_TUSEFANB2, LKANM_BTK_TEDW}, + /* 0x70 */ {LKANM_BTP_TBOWWAIT, LKANM_BTK_TBOWWAIT}, + /* 0x71 */ {LKANM_BTP_TVOMITJMP, LKANM_BTK_TEDW}, + /* 0x72 */ {LKANM_BTP_TREST, LKANM_BTK_TREST}, + /* 0x73 */ {LKANM_BTP_TTAKE, LKANM_BTK_TTAKE}, + /* 0x74 */ {LKANM_BTP_TTAKELR, LKANM_BTK_TECN}, + /* 0x75 */ {LKANM_BTP_TSLIPICE, LKANM_BTK_TECN}, + /* 0x76 */ {LKANM_BTP_THAMSWINGA, LKANM_BTK_THAMSWINGA}, + /* 0x77 */ {LKANM_BTP_THAMSWINGBPRE, LKANM_BTK_THAMSWINGBPRE}, + /* 0x78 */ {LKANM_BTP_THAMSWINGBHIT, LKANM_BTK_THAMSWINGBHIT}, + /* 0x79 */ {LKANM_BTP_THAMSWINGBEND, LKANM_BTK_THAMSWINGBEND}, + /* 0x7A */ {LKANM_BTP_TSETBOOTS, LKANM_BTK_TECN}, + /* 0x7B */ {LKANM_BTP_TDOOROPENALINK, LKANM_BTK_TDOOROPENALINK}, + /* 0x7C */ {LKANM_BTP_TDOOROPENBLINK, LKANM_BTK_TDOOROPENBLINK}, + /* 0x7D */ {LKANM_BTP_TSEYYES, LKANM_BTK_TSEYYES}, + /* 0x7E */ {LKANM_BTP_TPRESENTATION, LKANM_BTK_TPRESENTATIONA}, + /* 0x7F */ {LKANM_BTP_TWIND, LKANM_BTK_TWINDL}, + /* 0x80 */ {LKANM_BTP_TWIND, LKANM_BTK_TWINDR}, + /* 0x81 */ {LKANM_BTP_TPRESENTATION, LKANM_BTK_TPRESENTATIONB}, + /* 0x82 */ {LKANM_BTP_TBINDRINKPRE, LKANM_BTK_TBINDRINKPRE}, + /* 0x83 */ {LKANM_BTP_TBINDRINKING, LKANM_BTK_TECN}, + /* 0x84 */ {LKANM_BTP_TBINDRINKAFTER, LKANM_BTK_TBINDRINKAFTER}, + /* 0x85 */ {LKANM_BTP_TBINDRINKPRE2, LKANM_BTK_TBINDRINKPRE}, + /* 0x86 */ {LKANM_BTP_TBINDRINKING2, LKANM_BTK_TECN}, + /* 0x87 */ {LKANM_BTP_TBINDRINKAFTER2, LKANM_BTK_TBINDRINKAFTER2}, + /* 0x88 */ {LKANM_BTP_TBINOPENPRE, LKANM_BTK_TBINOPENPRE}, + /* 0x89 */ {LKANM_BTP_TBINOPENA, LKANM_BTK_TBINOPENA}, + /* 0x8A */ {LKANM_BTP_TBINOPENB, LKANM_BTK_TBINOPENB}, + /* 0x8B */ {LKANM_BTP_TBINSWING, LKANM_BTK_TBINSWING}, + /* 0x8C */ {LKANM_BTP_TBINGET, LKANM_BTK_TBINGET}, + /* 0x8D */ {LKANM_BTP_TARROWRELORD, LKANM_BTK_TARROWRELORD}, + /* 0x8E */ {LKANM_BTP_TSURPRISEDB, LKANM_BTK_TSURPRISEDB}, + /* 0x8F */ {LKANM_BTP_TFAN, LKANM_BTK_TFAN}, + /* 0x90 */ {LKANM_BTP_TNENRIKI, LKANM_BTK_TECN}, + /* 0x91 */ {LKANM_BTP_TMABAB, LKANM_BTK_TEDL}, + /* 0x92 */ {LKANM_BTP_TMABAH, LKANM_BTK_TABEKOBE}, + /* 0x93 */ {LKANM_BTP_TSETHYOINOMI, LKANM_BTK_TSETHYOINOMI}, + /* 0x94 */ {LKANM_BTP_LINK_FREEZ, LKANM_BTK_TECN}, + /* 0x95 */ {LKANM_BTP_LINK_MOGAKI, LKANM_BTK_TECN}, + /* 0x96 */ {LKANM_BTP_TDAMBIRI, LKANM_BTK_TDAMBIRI}, + /* 0x97 */ {LKANM_BTP_SALVLR, LKANM_BTK_SALVWAIT}, + /* 0x98 */ {LKANM_BTP_SALVWAIT, LKANM_BTK_SALVWAIT}, + /* 0x99 */ {LKANM_BTP_SALVBAD, LKANM_BTK_SALVWAIT}, + /* 0x9A */ {LKANM_BTP_SALVGOOD, LKANM_BTK_SALVWAIT}, + /* 0x9B */ {LKANM_BTP_SEARESET, LKANM_BTK_SEARESET}, + /* 0x9C */ {LKANM_BTP_TWARPIN, LKANM_BTK_TWARPIN}, + /* 0x9D */ {LKANM_BTP_TWARPOUT, LKANM_BTK_TWARPOUT}, + /* 0x9E */ {LKANM_BTP_TPOWUPWAIT, LKANM_BTK_TPOWUPWAIT}, + /* 0x9F */ {LKANM_BTP_TPOWUP, LKANM_BTK_TPOWUP}, + /* 0xA0 */ {LKANM_BTP_TCUTKESA, LKANM_BTK_TCUTKESA}, + /* 0xA1 */ {LKANM_BTP_TWARPOUTFIRST, LKANM_BTK_TWARPOUTFIRST}, + /* 0xA2 */ {LKANM_BTP_TDASHKAZE, LKANM_BTK_TDASHKAZE}, + /* 0xA3 */ {LKANM_BTP_TIYAYA, LKANM_BTK_TECN}, + /* 0xA4 */ {LKANM_BTP_TFREEA, LKANM_BTK_TFREEA}, + /* 0xA5 */ {LKANM_BTP_TFREEB, LKANM_BTK_TFREEB}, + /* 0xA6 */ {LKANM_BTP_TFREED, LKANM_BTK_TFREED}, + /* 0xA7 */ {LKANM_BTP_TTAKTKAZE, LKANM_BTK_TECN}, + /* 0xA8 */ {LKANM_BTP_TTAKTSIPPU, LKANM_BTK_TECN}, + /* 0xA9 */ {LKANM_BTP_TTAKTCHUYA, LKANM_BTK_TECN}, + /* 0xAA */ {LKANM_BTP_TTAKTFUJIN, LKANM_BTK_TECN}, + /* 0xAB */ {LKANM_BTP_TTAKTAYATSURI, LKANM_BTK_TECN}, + /* 0xAC */ {LKANM_BTP_TTAKTCHISIN, LKANM_BTK_TECN}, }; const daPy_anmIndex_c daPy_lk_c::mSwordAnmIndexTable[] = { @@ -2711,13 +2715,182 @@ u8 daPy_matAnm_c::m_morf_frame; s16 daPy_dmEcallBack_c::m_timer = 0; u16 daPy_dmEcallBack_c::m_type = 3; +u8 right_dir_4883[0xC]; +u8 texObj_5157[0x20]; + daPy_waterDropPcallBack_c daPy_waterDropEcallBack_c::m_pcallback; +u8 normal_ripple_scale_5638[0xC]; +u8 small_ripple_scale_5641[0xC]; +u8 waterfall_splash_trans_5699[0xC]; +u8 run_splash_scale_6040[0xC]; +u8 run_grass_scale_6043[0xC]; +u8 heavy_emit_smoke_scale_6046[0xC]; +u8 heavy_dyn_smoke_scale_6049[0xC]; +u8 heavy_pat_smoke_scale_6052[0xC]; +u8 tail_scale_6508[0xC]; +u8 arm_flame_scale_6651[0xC]; +u8 _6785[0xC]; +u8 eff_scale0_6784[0xC]; +u8 _6789[0xC]; +u8 eff_scale2_6788[0xC]; +u8 direction_6792[0xC]; +u8 splash_scale_14445[0xC]; +u8 ripple_scale_14448[0xC]; +u8 _15293[0xC]; +u8 arm_pos_15292[0xC]; +u8 _15297[0xC]; +u8 armA_offset_15296[0xC]; +u8 dynamic_scale_16750[0xC]; +u8 particle_scale_16753[0xC]; +u8 _17480[0xC]; +u8 local_height_offset_17479[0xC]; +u8 eff_scale_18886[0xC]; +u8 eff_dscale_18889[0xC]; +u8 eff_pscale_18892[0xC]; +u8 smoke_kusa_particle_scale_21005[0xC]; +u8 emitter_scale_21008[0xC]; +u8 emitter_trans_21011[0xC]; +u8 d_scale_23162[0xC]; +u8 p_scale_23165[0xC]; +u8 emitter_trans_24824[0xC]; +u8 particle_scale_24827[0xC]; +u8 root_mtx_25647[0x30]; + static mDoExt_offCupOnAupPacket l_offCupOnAupPacket1; static mDoExt_offCupOnAupPacket l_offCupOnAupPacket2; static mDoExt_onCupOffAupPacket l_onCupOffAupPacket1; static mDoExt_onCupOffAupPacket l_onCupOffAupPacket2; +static void dummydatafunc(f32* temp, f64* temp2) { + // temporary hack to improve diffs until sdata2 offsets are figured out + *temp = 2.0f; + *temp = -1000000000.0f; + *temp = -1.0f; + *temp = 0.0f; + *temp = 0.08f; + *temp = 1.0f; + *temp = 12.0f; + *temp = 13.0f; + *temp = 150.0f; + *temp = 30.0f; + *temp = 0.65f; + *temp = 0.35f; + *temp = 32768.0f; + *temp = 16384.0f; + *temp = 10.0f; + *temp2 = 4503601774854144.0; + *temp2 = 4503599627370496.0; + *temp = 25.0f; + *temp = -0.05f; + *temp2 = 0.5; + *temp2 = 3.0; + *temp = 0.6f; + *temp = 0.01f; + *temp = 0.001f; + *temp = 15.0f; + *temp = 1.5f; + *temp = 3.1415927f; + *temp = 0.5f; + *temp = 0.3f; + *temp = 1.2f; + *temp = 0.4f; + *temp = 5.0f; + *temp = 0.1f; + *temp = 0.8f; + *temp = 60.0f; + *temp = 4.0f; + *temp = 0.25f; + *temp = 0.75f; + *temp = 16.0f; + *temp = 8.0f; + *temp = 18.0f; + *temp = 3.0f; + *temp = 0.2f; + *temp = 0.05f; + *temp = 45.0f; + *temp = 11.0f; + *temp = 17.5f; + *temp = 1000000000.0f; + OSReport("Adanmae"); + OSReport("d_a_player_dproc.inc"); + OSReport("0"); + OSReport("Halt"); + OSReport("Link"); + OSReport("DEFAULT_GETITEM"); + OSReport("GanonK"); + OSReport("GTower"); + OSReport("d_a_player_bow.inc"); + OSReport("d_a_player_hook.inc"); + OSReport("d_a_player_fan.inc"); + OSReport("d_a_player_hammer.inc"); + OSReport("Type"); + OSReport("Omori"); + OSReport("d_a_player_sword.inc"); + OSReport("M_DaiB"); + OSReport("Xboss2"); + OSReport("M_DragB"); + OSReport("Xboss0"); + OSReport("fall"); + OSReport("d_a_player_main.cpp"); + OSReport("(demo_mode < daPy_demo_c::DEMO_LAST_e) || (demo_mode == daPy_demo_c::DEMO_NEW_ANM0_e)"); + OSReport("Ojhous"); + OSReport("Orichh"); + OSReport("kinBOSS"); + OSReport("Xboss1"); + OSReport("ICE_FAILED"); + OSReport("pos"); + OSReport("angle"); + OSReport("prm0"); + OSReport("prm1"); + OSReport("stick"); + OSReport("face"); + OSReport("GanonM"); + OSReport("sea"); + OSReport("m_tex_anm_heap.m_buffer != 0"); + OSReport("m_texNoAnms != 0"); + OSReport("mat_anm != 0"); + OSReport("m_tex_scroll_heap.m_buffer != 0"); + OSReport("material_num == 2"); + OSReport("m_texMtxAnm != 0"); + OSReport("m_tex_eye_scroll[no] != 0"); + OSReport("tmtx != 0"); + OSReport("mtl->getMaterialAnm() != 0"); + OSReport("tmp_modelData != 0"); + OSReport("aura_p->getModel() != 0"); + OSReport("m_old_fdata != 0"); + OSReport("m_pbCalc[PART_UNDER_e] != 0"); + OSReport("m_pbCalc[PART_UPPER_e] != 0"); + OSReport("m_HIO != 0"); + OSReport("m_anm_heap_under[UNDER_MOVE0_e].m_buffer != 0"); + OSReport("m_sanm_buffer != 0"); + OSReport("m_item_bck_buffer != 0"); + OSReport("tmp_trans_bas != 0"); + OSReport("tmp_trans != 0"); + OSReport("tmp_tp != 0"); + OSReport("tmp_tk != 0"); + OSReport("*i_model != 0"); + OSReport("btk_anm != 0"); + OSReport("brk_anm != 0"); + OSReport("zoff_blend_cnt <= 4"); + OSReport("zoff_none_cnt <= 4"); + OSReport("zon_cnt <= 4"); + OSReport("zon_cnt == 4"); + OSReport("zoff_none_cnt == 4"); + OSReport("zoff_blend_cnt == 4"); + OSReport("dummy_data != 0"); + OSReport("Always"); + OSReport("tmp_tex != 0"); + OSReport("tmp_img != 0"); + OSReport("texture != 0"); + OSReport("textureName != 0"); + OSReport("linktexS3TC"); + OSReport("Pjavdou"); + OSReport("ShipD"); + OSReport("Siren"); + OSReport("data_size < l_sanm_buffer_size"); +} + /* 80102E8C-80102EAC .text daPy_createHeap__FP10fopAc_ac_c */ static BOOL daPy_createHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->createHeap(); @@ -2940,28 +3113,40 @@ void daPy_lk_c::setBlurPosResource(u16 index) { } /* 80104280-80104364 .text getItemAnimeResource__9daPy_lk_cFUs */ -J3DAnmTransform* daPy_lk_c::getItemAnimeResource(u16) { - /* Nonmatching */ +J3DAnmTransform* daPy_lk_c::getItemAnimeResource(u16 index) { + dComIfGp_getAnmArchive()->readIdxResource(m_item_bck_buffer, 0x1000, index); + JKRHeap* oldHeap = setAnimeHeap(m2ECC); + mDoExt_transAnmBas* bas = new mDoExt_transAnmBas(NULL); + J3DAnmLoaderDataBase::setResource(bas, m_item_bck_buffer); + mDoExt_setCurrentHeap(oldHeap); + return bas; } /* 80104364-801043F0 .text getAnimeResource__9daPy_lk_cFP14daPy_anmHeap_cUsUl */ -J3DAnmTransform* daPy_lk_c::getAnimeResource(daPy_anmHeap_c*, u16, u32) { - /* Nonmatching */ +J3DAnmTransform* daPy_lk_c::getAnimeResource(daPy_anmHeap_c* anmHeap, u16 index, u32 bufferSize) { + J3DAnmTransform* bck; + dComIfGp_getAnmArchive()->readIdxResource(anmHeap->m_buffer, bufferSize, index); + JKRHeap* oldHeap = setAnimeHeap(anmHeap->mpAnimeHeap); + bck = static_cast(J3DAnmLoaderDataBase::load(anmHeap->m_buffer)); + mDoExt_setCurrentHeap(oldHeap); + anmHeap->mIdx = index; + anmHeap->field_0x2 = -1; + return bck; } /* 801043F0-801044E8 .text getUnderUpperAnime__9daPy_lk_cFPC15daPy_anmIndex_cPP15J3DAnmTransformPP15J3DAnmTransformiUl */ -void daPy_lk_c::getUnderUpperAnime(const daPy_anmIndex_c* anmIndex, J3DAnmTransform** pUnderBck, J3DAnmTransform** pUpperBck, int r7, u32 r28) { +void daPy_lk_c::getUnderUpperAnime(const daPy_anmIndex_c* anmIndex, J3DAnmTransform** pUnderBck, J3DAnmTransform** pUpperBck, int r7, u32 bufferSize) { if (m_anm_heap_under[r7].mIdx != anmIndex->mUnderBckIdx) { - *pUnderBck = getAnimeResource(&m_anm_heap_under[r7], anmIndex->mUnderBckIdx, r28); + *pUnderBck = getAnimeResource(&m_anm_heap_under[r7], anmIndex->mUnderBckIdx, bufferSize); } else { *pUnderBck = mAnmRatioUnder[r7].getAnmTransform(); } if (anmIndex->mUnderBckIdx != anmIndex->mUpperBckIdx) { - if (r28 == 0xB400) { - r28 = 0x4800; + if (bufferSize == 0xB400) { + bufferSize = 0x4800; } if (m_anm_heap_upper[r7].mIdx != anmIndex->mUpperBckIdx) { - *pUpperBck = getAnimeResource(&m_anm_heap_upper[r7], anmIndex->mUpperBckIdx, r28); + *pUpperBck = getAnimeResource(&m_anm_heap_upper[r7], anmIndex->mUpperBckIdx, bufferSize); } else { *pUpperBck = mAnmRatioUpper[r7].getAnmTransform(); } @@ -2972,18 +3157,47 @@ void daPy_lk_c::getUnderUpperAnime(const daPy_anmIndex_c* anmIndex, J3DAnmTransf } /* 801044E8-80104564 .text setTextureAnimeResource__9daPy_lk_cFP16J3DAnmTexPatterni */ -void daPy_lk_c::setTextureAnimeResource(J3DAnmTexPattern*, int) { - /* Nonmatching */ +void daPy_lk_c::setTextureAnimeResource(J3DAnmTexPattern* btp, int r31) { + btp->searchUpdateMaterialID(mpCLModelData); + m035C = btp; + m3530 = r31; + u16 material_num = btp->getUpdateMaterialNum(); + for (u16 i = 0; i < material_num; i++) { + m_texNoAnms[i].setAnmTexPattern(btp); + } } /* 80104564-80104600 .text loadTextureAnimeResource__9daPy_lk_cFUli */ -void daPy_lk_c::loadTextureAnimeResource(u32, int) { - /* Nonmatching */ +J3DAnmTexPattern* daPy_lk_c::loadTextureAnimeResource(u32 index, BOOL isDemo) { + J3DAnmTexPattern* btp; + if (isDemo) { + dComIfGp_getLkDemoAnmArchive()->readResource(m_tex_anm_heap.m_buffer, 0x1000, index); + } else { + dComIfGp_getAnmArchive()->readIdxResource(m_tex_anm_heap.m_buffer, 0x1000, index); + } + JKRHeap* oldHeap = setAnimeHeap(m_tex_anm_heap.mpAnimeHeap); + btp = static_cast(J3DAnmLoaderDataBase::load(m_tex_anm_heap.m_buffer)); + mDoExt_setCurrentHeap(oldHeap); + return btp; } /* 80104600-801046CC .text checkBossBgm__9daPy_lk_cFv */ BOOL daPy_lk_c::checkBossBgm() { - /* Nonmatching */ + u32 mainBgm = mDoAud_checkPlayingMainBgmFlag(); + u32 subBgm = mDoAud_checkPlayingSubBgmFlag(); + if (mainBgm == JA_BGM_GOMA || mainBgm == JA_BGM_GOMA_2 || mainBgm == JA_BGM_KINDAN_BOSS || + mainBgm == JA_BGM_DK_BATTLE || mainBgm == JA_BGM_MJ_TOWER_BATTLE || mainBgm == JA_BGM_BST_BATTLE || + mainBgm == JA_BGM_RANE_BATTLE || mainBgm == JA_BGM_PAST_GOMA_2 || mainBgm == JA_BGM_BIG_POW || + mainBgm == JA_BGM_PAST_BIG_POW || mainBgm == JA_BGM_PAST_BKM || mainBgm == JA_BGM_PAST_GOMA || + mainBgm == JA_BGM_PAST_RANE || mainBgm == JA_BGM_GANON_BATTLE || mainBgm == JA_BGM_BGN_KUGUTSU || + mainBgm == JA_BGM_BGN_TARABA || mainBgm == JA_BGM_BGN_HAYAMUSHI || subBgm == JA_BGM_MBOSS || + subBgm == JA_BGM_MBOSS_S || subBgm == JA_BGM_P_GANON_1 || subBgm == JA_BGM_P_GANON_2 || + subBgm == JA_BGM_DIOCTA_BATTLE || subBgm == JA_BGM_DIOCTA_2) + { + return TRUE; + } else { + return FALSE; + } } /* 801046CC-801046EC .text checkMabaAnimeBtp__9daPy_lk_cFi */ @@ -3147,7 +3361,298 @@ void daPy_lk_c::onBodyEffect() { /* 80107308-80108204 .text draw__9daPy_lk_cFv */ BOOL daPy_lk_c::draw() { - /* Nonmatching */ + /* Nonmatching - regalloc */ + if (mSightPacket.getDrawFlg()) { + mSightPacket.setSight(); + } + g_env_light.settingTevStruct(TEV_TYPE_PLAYER, ¤t.pos, &mTevStr); + if (checkPlayerNoDraw()) { + offBodyEffect(); + drawMirrorLightModel(); + return TRUE; + } + + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) { + offBodyEffect(); + } else { + onBodyEffect(); + } + + s16 origFogR, origFogG, origFogB; + f32 origFogStartZ, origFogEndZ; + origFogR = mTevStr.mFogColor.r; + origFogG = mTevStr.mFogColor.g; + origFogB = mTevStr.mFogColor.b; + origFogStartZ = mTevStr.mFogStartZ; + origFogEndZ = mTevStr.mFogEndZ; + if (!checkFreezeState() && mCurProc != PROC_ELEC_DAMAGE_e && (daPy_dmEcallBack_c::checkCurse() || checkConfuse() || mDamageWaitTimer > 0)) { + cXyz sp18; + mDoLib_pos2camera(¤t.pos, &sp18); + f32 f2 = fabsf(cM_ssin(g_Counter.mTimer * 0x800)); + if (daPy_dmEcallBack_c::checkCurse() || checkConfuse()) { + mTevStr.mFogColor.r = 0x80; + mTevStr.mFogColor.g = 0x00; + mTevStr.mFogColor.b = 0xFF; + } else { + mTevStr.mFogColor.r = 0xFF; + mTevStr.mFogColor.g = 0x3C; + mTevStr.mFogColor.b = 0x3C; + } + mTevStr.mFogStartZ = -sp18.z - 200.0f + 200.0f * f2; + mTevStr.mFogEndZ = mTevStr.mFogStartZ + 300.0f; + } + + u16 material_num = m035C->getUpdateMaterialNum(); + for (u16 i = 0; i < material_num; i++) { + u16 matID = m035C->getUpdateMaterialID(i); + if (matID != 0xFFFF) { + J3DMaterial* mtl = mpCLModelData->getMaterialNodePointer(matID); + J3DMaterialAnm* mtlAnm = mtl->getMaterialAnm(); + u8 texNo = m035C->getAnmTable()[i].mTexNo; + mtlAnm->setTexNoAnm(texNo, &m_texNoAnms[i]); + if (matID != 0xE) { + // Not mouth (i.e. it's eyeL, eyeR, mayuL, or mayuR) + mtl = mpCLModelData->getMaterialNodePointer(matID+1); + mtlAnm = mtl->getMaterialAnm(); + mtlAnm->setTexNoAnm(texNo, &m_texNoAnms[i]); + } + } + } + + mpCLModelData->setTexMtxAnimator(mpTexScrollResData, m_texMtxAnm, NULL); + m035C->setFrame(m3530); + mpTexScrollResData->setFrame(m3532); + g_env_light.setLightTevColorType(mpCLModel, &mTevStr); + J3DJoint* link_root_joint = mpCLModelData->getJointNodePointer(0x00); // link_root joint + mpCLModelData->getJointNodePointer(0x08)->getMesh()->getShape()->hide(); // cl_LhandA joint + mpCLModelData->getJointNodePointer(0x0C)->getMesh()->getShape()->hide(); // cl_RhandA joint + + J3DMaterial* mtl = link_root_joint->getMesh(); + for (int i = 0; i < 4; i++) { + mtl = mtl->getNext(); + } + mtl->getShape()->show(); + + J3DJoint* cl_eye_joint = mpCLModelData->getJointNodePointer(0x13); // cl_eye joint + J3DJoint* cl_mayu_joint = mpCLModelData->getJointNodePointer(0x15); // cl_mayu joint + setDrawHandModel(); + j3dSys.setModel(mpCLModel); + j3dSys.setTexture(mpCLModelData->getTexture()); + j3dSys.getModel()->unlock(); + + BOOL r24 = field_0x2b0 <= -85.0f; + if (r24) { + for (int i = 0; i < ARRAY_SIZE(mpZOffBlendShape); i++) { + mpZOffBlendShape[i]->hide(); + mpZOffNoneShape[i]->hide(); + mpZOnShape[i]->hide(); + } + mpCLModelData->getJointNodePointer(0x08)->getMesh()->getShape()->hide(); // cl_LhandA joint + mpCLModelData->getJointNodePointer(0x0C)->getMesh()->getShape()->hide(); // cl_RhandA joint + mtl = link_root_joint->getMesh(); + for (int i = 0; mtl != NULL; i++, mtl = mtl->getNext()) { + if (i != 3) { + mtl->getShape()->hide(); + } else { + mtl->getShape()->show(); + } + } + } else if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) { + for (int i = 0; i < ARRAY_SIZE(mpZOffBlendShape); i++) { + mpZOffBlendShape[i]->hide(); + mpZOffNoneShape[i]->hide(); + mpZOnShape[i]->hide(); + } + mtl = link_root_joint->getMesh(); + for (int i = 0; mtl != NULL; i++, mtl = mtl->getNext()) { + if (i != 0 && i != 3) { + mtl->getShape()->hide(); + } else { + mtl->getShape()->show(); + } + } + mpCLModelData->getJointNodePointer(0x14)->getMesh()->getShape()->hide(); // cl_hana joint + } else { + if (!checkFreezeState()) { + dComIfGd_setListP0(); + l_onCupOffAupPacket2.entryOpa(); + for (int i = 0; i < ARRAY_SIZE(mpZOffBlendShape); i++) { + mpZOffBlendShape[i]->hide(); + mpZOnShape[i]->hide(); + mpZOffNoneShape[i]->show(); + } + cl_eye_joint->entryIn(); + cl_mayu_joint->entryIn(); + l_offCupOnAupPacket2.entryOpa(); + for (int i = 0; i < ARRAY_SIZE(mpZOffBlendShape); i++) { + mpZOffBlendShape[i]->show(); + mpZOffNoneShape[i]->hide(); + } + cl_eye_joint->entryIn(); + cl_mayu_joint->entryIn(); + mtl = link_root_joint->getMesh(); + for (int i = 0; mtl != NULL; i++, mtl = mtl->getNext()) { + if (i != 2 && i != 5) { + mtl->getShape()->hide(); + } + } + link_root_joint->entryIn(); + if (checkMaskDraw()) { + entryDLSetLight(mpYamuModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + j3dSys.setModel(mpCLModel); + j3dSys.setTexture(mpCLModelData->getTexture()); + hideHatAndBackle(link_root_joint->getMesh()); + l_onCupOffAupPacket1.entryOpa(); + for (int i = 0; i < ARRAY_SIZE(mpZOffBlendShape); i++) { + mpZOffBlendShape[i]->hide(); + mpZOnShape[i]->show(); + mpZOffNoneShape[i]->hide(); + } + cl_eye_joint->entryIn(); + cl_mayu_joint->entryIn(); + l_offCupOnAupPacket1.entryOpa(); + for (int i = 0; i < ARRAY_SIZE(mpZOffBlendShape); i++) { + mpZOnShape[i]->hide(); + } + } else { + hideHatAndBackle(link_root_joint->getMesh()); + } + bool r4 = dComIfGs_getSelectEquip(0) == SWORD || dComIfGp_getMiniGameType() == 2; // TODO this may be an inline + if (!r4 && dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) != 5 || checkCaughtShapeHide() || checkDemoShieldNoDraw()) { + mpCLModelData->getJointNodePointer(0x0D)->getMesh()->getShape()->hide(); // cl_podA joint + } else { + mpCLModelData->getJointNodePointer(0x0D)->getMesh()->getShape()->show(); // cl_podA joint + } + } + + // regalloc issues with j3dSys from here on + dComIfGd_setListP1(); + if (checkFreezeState()) { + dMat_control_c::iceEntryDL(mpCLModel, -1, NULL); + } else { + mDoExt_modelEntryDL(mpCLModel); + } + mtl = link_root_joint->getMesh(); + while (mtl != NULL) { + mtl->getShape()->show(); + mtl = mtl->getNext(); + } + mpCLModelData->getJointNodePointer(0x14)->getMesh()->getShape()->show(); // cl_hana joint + mpCLModelData->getJointNodePointer(0x29)->getMesh()->getShape()->show(); // cl_back joint + if (!r24) { + entryDLSetLight(mpHandsModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + if (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES) && !checkCaughtShapeHide() && !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) { + entryDLSetLight(mpKatsuraModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + if (checkFreezeState() && checkMaskDraw()) { + entryDLSetLight(mpYamuModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + if (dComIfGs_getSelectEquip(2) == PWR_GROOVE) { + entryDLSetLight(mpPringModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + // TODO this may be an inline + bool r4 = dComIfGs_getSelectEquip(0) == MASTER_SWORD || dComIfGs_getSelectEquip(0) == LV3_SWORD || dComIfGs_getSelectEquip(0) == MASTER_SWORD_EX; + if (r4 && !checkCaughtShapeHide() && !checkDemoShieldNoDraw()) { + updateDLSetLight(mpPodmsModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + } + if (checkEquipHeavyBoots()) { + entryDLSetLight(mpHbootsModels[0], mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + entryDLSetLight(mpHbootsModels[1], mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + + mTevStr.mFogColor.r = origFogR; + mTevStr.mFogColor.g = origFogG; + mTevStr.mFogColor.b = origFogB; + mTevStr.mFogStartZ = origFogStartZ; + mTevStr.mFogEndZ = origFogEndZ; + + if (!r24) { + if (mCurProc == PROC_CUT_F_e || mCurProc == PROC_BT_VERTICAL_JUMP_CUT_e) { + updateDLSetLight(mpSwordTipStabModel, 0); + } else if (checkModeFlg(0x40000) && checkNoResetFlg0(daPyFlg0_UNK100) && !(mCurProc == DPROC_DEAD_e && m34D6 == 0)) { + GXColor spc; + GXColor sp8; + dKy_get_seacolor(&spc, &sp8); + J3DGXColorS10 sp10; + sp10.mColor.r = spc.r; + sp10.mColor.g = spc.g; + sp10.mColor.b = spc.b; + int matID = mpSuimenMunyaModel->getModelData()->getMaterialNum() - 1; + for (; matID >= 0; matID--) { + mpSuimenMunyaModel->getModelData()->getMaterialNodePointer(matID)->setTevColor(0, &sp10); + } + mDoExt_modelUpdateDL(mpSuimenMunyaModel); + } + if (!r24 && !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) { + bool r4 = dComIfGs_getSelectEquip(0) != NO_ITEM || dComIfGp_getMiniGameType() == 2; // TODO this may be an inline + if (r4 && !checkDemoSwordNoDraw(1)) { + entryDLSetLight(mpEquippedSwordModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + } + if (dComIfGs_getSelectEquip(1) != NO_ITEM && !checkCaughtShapeHide() && !checkDemoShieldNoDraw()) { + entryDLSetLight(mpEquippedShieldModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + } + dComIfGd_setList(); + drawMirrorLightModel(); + dComIfGd_setListP1(); + + if (mpBottleContentsModel != NULL) { + updateDLSetLight(mpBottleContentsModel, 0); + } + if (mpHeldItemModel && !checkCaughtShapeHide() && !checkDemoSwordNoDraw(0)) { + if (!checkBowItem(mHeldItemType) || !checkPlayerGuard()) { + if (mHeldItemType == HOOKSHOT) { + if (mActorKeepEquip.getActor()) { + daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor(); + mpHeldItemModel->setAnmMtx(4, hookshot->getMtxTop()); + } + } + entryDLSetLight(mpHeldItemModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE); + if (mpSwordModel1 != NULL) { + if (checkChanceMode() || checkNoResetFlg1(daPyFlg1_UNK8000) || dComIfGs_getSelectEquip(0) == MASTER_SWORD_EX) { + updateDLSetLight(mpSwordModel1, 0); + } + } + } + } + if (mpBottleCapModel != NULL && m355E != 0) { + updateDLSetLight(mpBottleCapModel, 0); + } + + if (!dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) { + f32 frame = mYaura00rBrk.getBrkAnm()->getFrame(); + if (frame > 0.0f) { + daPy_aura_c* auraEntry = &mMagicArmorAuraEntries[0]; + mYaura00rBrk.entry(auraEntry->getModel()->getModelData(), frame); + for (int i = 0; i < (s32)ARRAY_SIZE(mMagicArmorAuraEntries); i++, auraEntry++) { + mpYaura00Btk->setFrame(auraEntry->getFrame()); + updateDLSetLight(auraEntry->getModel(), 0); + } + } + frame = mYmgcs00Brk.getBrkAnm()->getFrame(); + if (frame > 0.0f) { + mYmgcs00Brk.entry(mpYmgcs00Model->getModelData(), frame); + mDoExt_modelEntryDL(mpYmgcs00Model); + } + } + } + if (fanWindEffectDraw()) { + updateDLSetLight(mpYuchw00Model, 0); + } + if (fanWindCrashEffectDraw()) { + updateDLSetLight(mpYbafo00Model, 0); + } + dComIfGd_setList(); + if (mCurProc != DPROC_CAUGHT_e && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + drawShadow(); + } + if (mSwBlur.field_0x014 > 0) { + dComIfGd_entryZSortXluList(&mSwBlur, mSwBlur.field_0x304[0]); + } + + return TRUE; } /* 80108204-80108224 .text daPy_Draw__FP9daPy_lk_c */ @@ -3720,7 +4225,8 @@ BOOL daPy_lk_c::checkGuardAccept() { /* 80112330-80112348 .text cancelNoDamageMode__9daPy_lk_cFv */ void daPy_lk_c::cancelNoDamageMode() { - /* Nonmatching */ + offNoResetFlg1(daPyFlg1_EQUIP_DRAGON_SHIELD); + mTinkleShieldTimer = 0; } /* 80112348-80112954 .text commonProcInit__9daPy_lk_cFQ29daPy_lk_c9daPy_PROC */ @@ -4468,6 +4974,9 @@ void daPy_lk_c::resetCurse() { /* Nonmatching */ } +u8 normal_scale_38064[0xC]; +u8 boss_scale_38067[0xC]; + /* 8011D110-8011D4D0 .text checkLightHit__9daPy_lk_cFv */ BOOL daPy_lk_c::checkLightHit() { /* Nonmatching */ @@ -4564,8 +5073,8 @@ BOOL daPy_lk_c::checkLavaFace(cXyz* param_1, int attributeCode) { } if (param_1) { - cXyz temp(current.pos.x, param_1->y + 20.0f, current.pos.z); - m08EC.SetPos(&temp); + cXyz pos(current.pos.x, param_1->y + 20.0f, current.pos.z); + m08EC.SetPos(&pos); m35D4 = dComIfG_Bgsp()->GroundCross(&m08EC); if (mAcch.GetGroundH() > m35D4) { m35D4 = -1000000000.0f; @@ -4793,8 +5302,8 @@ BOOL daPy_lk_c::playerDelete() { mDoExt_destroySolidHeap(m_anm_heap_upper[i].mpAnimeHeap); } - mDoExt_destroySolidHeap(mpTextureAnimeResHeap); - mDoExt_destroySolidHeap(mpTextureScrollResHeap); + mDoExt_destroySolidHeap(m_tex_anm_heap.mpAnimeHeap); + mDoExt_destroySolidHeap(m_tex_scroll_heap.mpAnimeHeap); mDoExt_destroySolidHeap(mpItemHeaps[0]); mDoExt_destroySolidHeap(mpItemHeaps[1]); mDoExt_destroySolidHeap(m2ECC); @@ -4821,17 +5330,111 @@ static BOOL daPy_Delete(daPy_lk_c* i_this) { /* 80123078-80123360 .text initTextureAnime__9daPy_lk_cFv */ void daPy_lk_c::initTextureAnime() { - /* Nonmatching */ + m_tex_anm_heap.m_buffer = new(0x20) u8[0x1000]; + JUT_ASSERT(20869, m_tex_anm_heap.m_buffer != 0); + + dComIfGp_getAnmArchive()->readIdxResource(m_tex_anm_heap.m_buffer, 0x1000, LKANM_BTP_TMABAA); + J3DAnmTexPattern* btp = static_cast(J3DAnmLoaderDataBase::load(m_tex_anm_heap.m_buffer)); + btp->searchUpdateMaterialID(mpCLModelData); + u16 material_num = btp->getUpdateMaterialNum(); + m_texNoAnms = new J3DTexNoAnm[material_num]; + JUT_ASSERT(20885, m_texNoAnms != 0); + + for (u16 i = 0; i < material_num; i++) { + u16 matID = btp->getUpdateMaterialID(i); + if (matID != 0xFFFF) { + J3DMaterialAnm* mat_anm = new J3DMaterialAnm(); + JUT_ASSERT(20894, mat_anm != 0); + + if (matID != 1 && matID != 4) { + // Not eyeL or eyeR (i.e. it's mouth, mayuL, or mayuR) + // Set the animation on the specified material + mpCLModelData->getMaterialNodePointer(matID)->change(); + mpCLModelData->getMaterialNodePointer(matID)->setMaterialAnm(mat_anm); + if (matID != 0xE) { + // Not mouth (i.e. it's mayuL or mayuR) + // Additionally, set the animation on mayuLdamA and mayuLdamB or mayuRdamA and mayuRdamB + mpCLModelData->getMaterialNodePointer(matID+1)->change(); + mpCLModelData->getMaterialNodePointer(matID+1)->setMaterialAnm(mat_anm); + mpCLModelData->getMaterialNodePointer(matID+2)->change(); + mpCLModelData->getMaterialNodePointer(matID+2)->setMaterialAnm(mat_anm); + } + } else { + // eyeL or eyeR + // Don't the animation on the specified material + // Instead, set it on eyeLdamA and eyeLdamB or eyeRdamA and eyeRdamB + mpCLModelData->getMaterialNodePointer(matID+1)->change(); + mpCLModelData->getMaterialNodePointer(matID+1)->setMaterialAnm(mat_anm); + mpCLModelData->getMaterialNodePointer(matID+2)->change(); + mpCLModelData->getMaterialNodePointer(matID+2)->setMaterialAnm(mat_anm); + } + } + + m_texNoAnms[i].setAnmIndex(i); + } } /* 80123360-80123830 .text initTextureScroll__9daPy_lk_cFv */ void daPy_lk_c::initTextureScroll() { - /* Nonmatching */ + /* Nonmatching - regalloc */ + m_tex_scroll_heap.m_buffer = new(0x20) u8[0x800]; + JUT_ASSERT(20944, m_tex_scroll_heap.m_buffer != 0); + + dComIfGp_getAnmArchive()->readIdxResource(m_tex_scroll_heap.m_buffer, 0x800, LKANM_BTK_TMABA); + J3DAnmTextureSRTKey* btk = static_cast(J3DAnmLoaderDataBase::load(m_tex_scroll_heap.m_buffer)); + btk->searchUpdateMaterialID(mpCLModelData); + u16 material_num = btk->getUpdateMaterialNum(); + JUT_ASSERT(20958, material_num == 2); + + m_texMtxAnm = new J3DTexMtxAnm[material_num]; + JUT_ASSERT(20961, m_texMtxAnm != 0); + + for (u16 no = 0; no < material_num; no++) { + u16 matID = btk->getUpdateMaterialID(no); + if (matID != 0xFFFF) { + m_tex_eye_scroll[no] = new daPy_matAnm_c(); + JUT_ASSERT(20972, m_tex_eye_scroll[no] != 0); + + mpCLModelData->getMaterialNodePointer(matID)->change(); + mpCLModelData->getMaterialNodePointer(matID)->setMaterialAnm(m_tex_eye_scroll[no]); + + J3DMaterial* mtl = mpCLModelData->getMaterialNodePointer(matID); + u8 texMtxID = btk->getUpdateTexMtxID(no); + if (texMtxID != 0xFF) { + J3DTexMtx* tmtx; + if (mtl->getTexMtx(texMtxID) == NULL) { + tmtx = new J3DTexMtx(); + JUT_ASSERT(20984, tmtx != 0); + mtl->setTexMtx(no, tmtx); + } + if (mtl->getTexCoord(texMtxID) != NULL) { + mtl->getTexCoord(texMtxID)->setTexGenMtx(GX_TEXMTX0 + (texMtxID & 0xFF) * 3); + } + tmtx = mtl->getTexMtx(no); + + m_texMtxAnm[no].setAnmTransform(btk); + m_texMtxAnm[no].setAnmIndex(no); + + tmtx->getTexMtxInfo().mInfo = tmtx->getTexMtxInfo().mInfo & 0x7F | btk->getTexMtxCalcType() << 7; + // Fakematch? The codegen doesn't match unless a temp variable is used and assigned to multiple times. + Vec* temp = &btk->getSRTCenter(no); + tmtx->getTexMtxInfo().mCenter.x = temp->x; + temp = &btk->getSRTCenter(no); + tmtx->getTexMtxInfo().mCenter.y = temp->y; + temp = &btk->getSRTCenter(no); + tmtx->getTexMtxInfo().mCenter.z = temp->z; + + JUT_ASSERT(21001, mtl->getMaterialAnm() != 0); + + mtl->getMaterialAnm()->setTexMtxAnm(texMtxID, &m_texMtxAnm[no]); + } + } + } } /* 80123834-8012469C .text createHeap__9daPy_lk_cFv */ BOOL daPy_lk_c::createHeap() { - /* Nonmatching - data offsets */ + /* Nonmatching - daPy_HIO_c constructor */ J3DModelData* tmp_modelData; J3DAnmTransform* bck; J3DAnmTevRegKey* brk; @@ -4862,7 +5465,7 @@ BOOL daPy_lk_c::createHeap() { mpTshmsBtk = entryBtk(tmp_modelData, LINK_BTK_TSHMS); J3DSkinDeform* shmsSkinDeform = new J3DSkinDeform(); if (!shmsSkinDeform) { JUT_ASSERT(21077, 0); } - if (!mpShmsModel->setSkinDeform(shmsSkinDeform, 1)) { JUT_ASSERT(21080, 0); } + if (mpShmsModel->setSkinDeform(shmsSkinDeform, 1) != J3DErrType_Success ) { JUT_ASSERT(21080, 0); } tmp_modelData = initModel(&mpYmsls00Model, LINK_BDL_YMSLS00, 0x13000222); mpYmsls00Btk = entryBtk(tmp_modelData, LINK_BTK_YMSLS00); @@ -4885,7 +5488,7 @@ BOOL daPy_lk_c::createHeap() { mpYbafo00Btk = entryBtk(tmp_modelData, LINK_BTK_YBAFO00); mpYbafo00Btk->setFrame(mpYbafo00Btk->getFrameMax()-0.001f); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_YAURA00); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_YAURA00)); JUT_ASSERT(21130, tmp_modelData != 0); daPy_aura_c* aura_p = mMagicArmorAuraEntries; for (int i = 0; i < 6; i++) { @@ -4897,37 +5500,37 @@ BOOL daPy_lk_c::createHeap() { brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, LINK_BRK_YAURA00_R); ret = mYaura00rBrk.init(tmp_modelData, brk, false, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); if (!ret) { JUT_ASSERT(21147, 0); } - mYaura00rBrk.setFrame(0.0f); + mYaura00rBrk.entryFrame(0.0f); tmp_modelData = initModel(&mpYmgcs00Model, LINK_BDL_YMGCS00, 0x11001222); mpYmgcs00Btk = entryBtk(tmp_modelData, LINK_BTK_YMGCS00); brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, LINK_BRK_YMGCS00_MS); ret = mYmgcs00Brk.init(tmp_modelData, brk, false, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false, 0); if (!ret) { JUT_ASSERT(21161, 0); } - mYmgcs00Brk.setFrame(0.0f); + mYmgcs00Brk.entryFrame(0.0f); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_BOMB); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_BOMB)); JUT_ASSERT(21169, tmp_modelData != 0); mpBombBrk = entryBrk(tmp_modelData, LINK_BRK_BOMB); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_GWP00); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_GWP00)); JUT_ASSERT(21176, tmp_modelData != 0); mpGwp00BrkData = entryBrk(tmp_modelData, LINK_BRK_GWP00); mpGwp00BtkData = entryBtk(tmp_modelData, LINK_BTK_GWP00); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_ARROW); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_ARROW)); JUT_ASSERT(21184, tmp_modelData != 0); mpIceArrowBtk = entryBtk(tmp_modelData, LINK_BTK_TTIPICE); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_ARROWGLITTER); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_ARROWGLITTER)); JUT_ASSERT(21191, tmp_modelData != 0); mpLightArrowBtk = entryBtk(tmp_modelData, LINK_BTK_TARROWGLITTER); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_GICER00); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_GICER00)); JUT_ASSERT(21198, tmp_modelData != 0); mpGicer00Btk = entryBtk(tmp_modelData, LINK_BTK_GICER00); - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, LINK_BDL_GICER01); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, LINK_BDL_GICER01)); JUT_ASSERT(21205, tmp_modelData != 0); mpGicer01Btk = entryBtk(tmp_modelData, LINK_BTK_GICER01); @@ -4967,7 +5570,7 @@ void daPy_lk_c::createAnimeHeap(JKRSolidHeap**, daPy_lk_c::daPy_HEAP_TYPE) { /* 80124A40-80124B30 .text initModel__9daPy_lk_cFPP8J3DModeliUl */ J3DModelData* daPy_lk_c::initModel(J3DModel** i_model, int i_fileIndex, u32 i_differedDlistFlag) { J3DModelData* tmp_modelData; - tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, i_fileIndex); + tmp_modelData = static_cast(dComIfG_getObjectRes(l_arcName, i_fileIndex)); JUT_ASSERT(21340, tmp_modelData != 0); *i_model = mDoExt_J3DModel__create(tmp_modelData, 0x00080000, i_differedDlistFlag); JUT_ASSERT(21344, *i_model != 0); @@ -5075,7 +5678,7 @@ void daPy_lk_c::playerInit() { mAcchCir[1].SetWall(89.9f, 35.0f); mAcchCir[2].SetWall(125.0f, 35.0f); mHeadTopPos.setall(0.0f); - field_0x2ac = 125.0f; + mHeight = 125.0f; mHeldItemType = 0x100; mKeepItemType = 0x100; mCameraInfoIdx = dComIfGp_getPlayerCameraID(0); @@ -5122,16 +5725,16 @@ void daPy_lk_c::playerInit() { m_anm_heap_upper[i].field_0x2 = -1; m_anm_heap_upper[i].field_0x4 = -1; } - createAnimeHeap(&mpTextureAnimeResHeap, HEAP_TYPE_TEXTURE_ANIME_e); - mTexAnimeResIdx = -1; - m31BA = -1; - m31BC = -1; - m31BE = -1; - createAnimeHeap(&mpTextureScrollResHeap, HEAP_TYPE_TEXTURE_SCROLL_e); - mTexScrollResIdx = -1; - m31CA = -1; - m31CC = -1; - m31CE = -1; + createAnimeHeap(&m_tex_anm_heap.mpAnimeHeap, HEAP_TYPE_TEXTURE_ANIME_e); + m_tex_anm_heap.mIdx = -1; + m_tex_anm_heap.field_0x2 = -1; + m_tex_anm_heap.field_0x4 = -1; + m_tex_anm_heap.field_0x6 = -1; + createAnimeHeap(&m_tex_scroll_heap.mpAnimeHeap, HEAP_TYPE_TEXTURE_SCROLL_e); + m_tex_scroll_heap.mIdx = -1; + m_tex_scroll_heap.field_0x2 = -1; + m_tex_scroll_heap.field_0x4 = -1; + m_tex_scroll_heap.field_0x6 = -1; mSeAnmIdx = -1; m34F0 = -1; @@ -5213,7 +5816,7 @@ void daPy_lk_c::playerInit() { dKy_plight_set(&mLightInfluence); m352E = 900; - field_0x298 = 0xAD; + mFace = daPyFace_UNKNOWN; m34DE = shape_angle.y; ResTIMG* linktex_casual = (ResTIMG*)dComIfG_getObjectRes(l_arcName, LINK_BTI_LINKTEXBCI4); diff --git a/src/d/actor/d_a_player_particle.inc b/src/d/actor/d_a_player_particle.inc index 72aeeca6c..d44963366 100644 --- a/src/d/actor/d_a_player_particle.inc +++ b/src/d/actor/d_a_player_particle.inc @@ -28,7 +28,7 @@ void daPy_swimTailEcallBack_c::getMaxWaterY(JGeometry::TVec3* pos) { if (field_0x10 > pos->y) { pos->y = field_0x10 + 2.0f; } - } else if (field_0x10 != 0.0f) { + } else if (field_0x10 != -1e9f) { pos->y = field_0x10 + 2.0f; } else { pos->y = field_0x0C; diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index 79dba38fb..e6f2f3a56 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -657,19 +657,19 @@ bool daRd_c::checkTgHit() { atInfo.pParticlePos = NULL; atInfo.mpObj = mCyl.GetTgHitObj(); if (r29) { - cXyz* temp = mCyl.GetTgHitPosP(); + cXyz* hitPos = mCyl.GetTgHitPosP(); cc_at_check(this, &atInfo); if (mHitType == 1 || mHitType == 7 || mHitType == 8 || mHealth <= 0) { dComIfGp_particle_set(0x10, mCyl.GetTgHitPosP()); cXyz scale(2.0f, 2.0f, 2.0f); - dComIfGp_particle_set(dPa_name::ID_COMMON_BIG_HIT, temp, &player->shape_angle, &scale); + dComIfGp_particle_set(dPa_name::ID_COMMON_BIG_HIT, hitPos, &player->shape_angle, &scale); if (mHealth <= 0) { modeProcInit(MODE_DEATH); } else { modeProcInit(MODE_DAMAGE); } } else { - dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, temp, &player->shape_angle); + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, hitPos, &player->shape_angle); modeProcInit(MODE_DAMAGE); } } else if (mHitType == 0xE) { diff --git a/src/d/actor/d_a_tbox.cpp b/src/d/actor/d_a_tbox.cpp index d65a68e5e..7741c9a6d 100644 --- a/src/d/actor/d_a_tbox.cpp +++ b/src/d/actor/d_a_tbox.cpp @@ -1017,7 +1017,7 @@ BOOL daTbox_c::actionOpenWait() { } if (getShapeType() != 0) { - mDoAud_subBgmStart(0x80000000 | JA_BGM_OPEN_BOX); + mDoAud_subBgmStart(JA_BGM_OPEN_BOX); mAllColRatio = 0.4f; flagOn(0x08); diff --git a/src/d/d_event_data.cpp b/src/d/d_event_data.cpp index 7f818f196..28c73face 100644 --- a/src/d/d_event_data.cpp +++ b/src/d/d_event_data.cpp @@ -587,9 +587,9 @@ void dEvDtStaff_c::specialProcDirector() { u32* pBGM = dComIfGp_evmng_getMyIntegerP(staffIdx, "BGM_ID"); u32 bgm; static u32 bgm_table[] = { - 0x80000007, // JA_BGM_I_MAJU - 0x80000012, // JA_BGM_TETRA_MEET - 0x80000017, // JA_BGM_I_LINK_FOREST + JA_BGM_I_MAJU, + JA_BGM_TETRA_MEET, + JA_BGM_I_LINK_FOREST, }; if (pBGM != NULL) {