From 5b5772c2e1a5e6fab305e1d65919a66f23bc444b Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 20 Nov 2023 02:32:10 -0500 Subject: [PATCH] agbsw0 and agb cleanup and some matches --- include/d/actor/d_a_agb.h | 22 ++++++-- include/d/actor/d_a_npc_md.h | 44 ++++++++------- include/d/actor/d_a_player.h | 7 ++- include/d/actor/d_a_player_main.h | 15 +++-- src/d/actor/d_a_agb.cpp | 93 ++++++++++++------------------- src/d/actor/d_a_agbsw0.cpp | 77 +++++++++++++------------ src/d/actor/d_a_npc_md.cpp | 44 +++++++-------- 7 files changed, 152 insertions(+), 150 deletions(-) diff --git a/include/d/actor/d_a_agb.h b/include/d/actor/d_a_agb.h index 65d009467..0e1c06e93 100644 --- a/include/d/actor/d_a_agb.h +++ b/include/d/actor/d_a_agb.h @@ -38,6 +38,8 @@ public: class daAgb_c : public fopAc_ac_c { public: + // daAgb_BmRp_c struct? + void NameConv(); int uploadInitCheck(); int uploadPortCheckWait(); @@ -76,6 +78,18 @@ public: BOOL isMsgSend() { return mIsMsgSend; } BOOL isActive() { return mIsActive; } + void onActive() { mIsActive = true; } + void offActive() { mIsActive = false; } + void onBombDeny() { mBombDeny = true; } + void offBombDeny() { mBombDeny = false; } + void setDenyMessage(u16 msg) { mDenyMessage = msg; } + BOOL isFree() { return mIsFree; } + void offFree() {} + void isHold() {} + s32 getFollowTarget() { return mFollowTarget; } + void setFollowTarget(bool) {} + void getTargetID() {} + void setTargetID(unsigned int) {} static int mEffect; @@ -154,7 +168,7 @@ public: /* 0x65A */ u16 field_0x65a; /* 0x65C */ u16 field_0x65c; /* 0x65E */ u16 field_0x65e; - /* 0x660 */ u16 field_0x660; + /* 0x660 */ u16 mDenyMessage; /* 0x662 */ u16 field_0x662; /* 0x664 */ u16 field_0x664; /* 0x666 */ u8 mPortNo; @@ -167,18 +181,18 @@ public: /* 0x66E */ u8 field_0x66e; /* 0x66F */ s8 field_0x66f; /* 0x670 */ u8 field_0x670; - /* 0x671 */ u8 field_0x671; + /* 0x671 */ bool mIsFree; /* 0x672 */ bool mIsActive; /* 0x673 */ u8 field_0x673; /* 0x674 */ u8 field_0x674; /* 0x675 */ u8 field_0x675; /* 0x676 */ u8 field_0x676; - /* 0x677 */ u8 field_0x677; + /* 0x677 */ u8 mFollowTarget; /* 0x678 */ bool mIsMsgSend; /* 0x679 */ u8 field_0x679; /* 0x67A */ bool field_0x67a; /* 0x67B */ u8 field_0x67b; - /* 0x67C */ u8 field_0x67c; + /* 0x67C */ bool mBombDeny; /* 0x67D */ u8 field_0x67d; /* 0x67E */ u8 field_0x67e; /* 0x67F */ u8 field_0x67f; diff --git a/include/d/actor/d_a_npc_md.h b/include/d/actor/d_a_npc_md.h index 394ad6f36..da85d4ccc 100644 --- a/include/d/actor/d_a_npc_md.h +++ b/include/d/actor/d_a_npc_md.h @@ -185,7 +185,7 @@ public: ~daNpc_Md_followEcallBack_c() {} void execute(JPABaseEmitter*); - void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char); + void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8); void end(); public: @@ -224,7 +224,7 @@ public: void playerAction(void*); void setPlayerAction(ActionFunc, void*); void getStickAngY(int); - void calcStickPos(short, cXyz*); + void calcStickPos(s16, cXyz*); BOOL flyCheck(); BOOL mirrorCancelCheck(); void setWingEmitter(); @@ -240,8 +240,8 @@ public: void wallHitCheck(); void NpcCall(int*); void checkCollision(int); - void restartPoint(short); - void setMessageAnimation(unsigned char); + void restartPoint(s16); + void setMessageAnimation(u8); void waitGroundCheck(); void chkAdanmaeDemoOrder(); int waitNpcAction(void*); @@ -268,16 +268,16 @@ public: int piyo2NpcAction(void*); int deleteNpcAction(void*); int demoFlyNpcAction(void*); - void routeAngCheck(cXyz&, short*); - void routeWallCheck(cXyz&, cXyz&, short*); - void checkForwardGroundY(short); - void checkWallJump(short); - void routeCheck(float, short*); + void routeAngCheck(cXyz&, s16*); + void routeWallCheck(cXyz&, cXyz&, s16*); + void checkForwardGroundY(s16); + void checkWallJump(s16); + void routeCheck(f32, s16*); int searchNpcAction(void*); int hitNpcAction(void*); - void setNormalSpeedF(float, float, float, float, float); - void setSpeedAndAngleNormal(float, short); - void walkProc(float, short); + void setNormalSpeedF(f32, f32, f32, f32, f32); + void setSpeedAndAngleNormal(f32, s16); + void walkProc(f32, s16); int jumpNpcAction(void*); int escapeNpcAction(void*); int waitPlayerAction(void*); @@ -327,27 +327,27 @@ public: void actionLookDown(int); void talk_init(); void talk(int); - void getAnmType(unsigned char); - BOOL initTexPatternAnm(unsigned char, bool); + void getAnmType(u8); + BOOL initTexPatternAnm(u8, bool); void playTexPatternAnm(); BOOL initLightBtkAnm(bool); void playLightBtkAnm(); void setAnm(int); - void dNpc_Md_setAnm(mDoExt_McaMorf2*, float, int, float, float, char*, char*, const char*); - void dNpc_Md_setAnm(mDoExt_McaMorf*, int, float, float, char*, const char*); - void chkAttention(cXyz, short, int); + void dNpc_Md_setAnm(mDoExt_McaMorf2*, f32, int, f32, f32, char*, char*, const char*); + void dNpc_Md_setAnm(mDoExt_McaMorf*, int, f32, f32, char*, const char*); + void chkAttention(cXyz, s16, int); void chkArea(cXyz*); void carryCheck(); void eventOrder(); void checkOrder(); void checkCommandTalk(); - void next_msgStatus(unsigned long*); + void next_msgStatus(u32*); void getMsg(); void setCollision(); void setAttention(bool); void lookBack(int, int, int); void lookBack(cXyz*, int, int); - void lookBackWaist(short, float); + void lookBackWaist(s16, f32); void setBaseMtx(); void deletePiyoPiyo(); void init(); @@ -355,8 +355,8 @@ public: void animationPlay(); void checkPlayerRoom(); BOOL execute(); - void particle_set(JPABaseEmitter**, unsigned short); - void emitterTrace(JPABaseEmitter*, float(*)[4], csXyz*); + void particle_set(JPABaseEmitter**, u16); + void emitterTrace(JPABaseEmitter*, MtxP, csXyz*); void emitterDelete(JPABaseEmitter**); virtual BOOL isTagCheckOK(); @@ -372,7 +372,9 @@ public: static s16 m_flyingTimer; static bool m_playerRoom; + static bool isFlying() { return m_flying; } static s16 getMaxFlyingTimer(); + static bool isPlayerRoom() { return m_playerRoom; } public: /* 0x04EC */ request_of_phase_process_class mPhs; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 50c2114a7..b395d7ab4 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -86,8 +86,9 @@ public: daPyFlg0_DEKU_SP_RETURN_FLG = 0x00000010, daPyFlg0_CUT_AT_FLG = 0x00000040, daPyFlg0_UNK100 = 0x00000100, + daPyFlg0_SHIP_DROP = 0x00000200, daPyFlg0_PUSH_PULL_KEEP = 0x00000800, - daPyFlg0_UNK1000 = 0x00001000, + daPyFlg0_HOVER_BOOTS = 0x00001000, daPyFlg0_UNK4000 = 0x00004000, daPyFlg0_UNK10000 = 0x00010000, daPyFlg0_NO_FALL_VOICE = 0x00040000, @@ -196,6 +197,7 @@ public: bool getCutAtFlg() const { return checkNoResetFlg0(daPyFlg0_CUT_AT_FLG); } void onPushPullKeep() { onNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); } void offPushPullKeep() { offNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); } + bool checkEquipHoverBoots() const { return checkNoResetFlg0(daPyFlg0_HOVER_BOOTS); } void onNoFallVoice() { onNoResetFlg0(daPyFlg0_NO_FALL_VOICE); } void onScopeCancel() { onNoResetFlg0(daPyFlg0_SCOPE_CANCEL); } bool checkEquipHeavyBoots() const { return checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); } @@ -258,7 +260,6 @@ public: // checkBowMiniGame__9daPy_py_cCFv // checkUseArrowEffect__9daPy_py_cCFv // checkFinalMasterSwordEquip__9daPy_py_cCFv - // checkEquipHoverBoots__9daPy_py_cCFv virtual MtxP getLeftHandMatrix() = 0; virtual MtxP getRightHandMatrix() = 0; @@ -267,7 +268,7 @@ public: virtual int getTactTimerCancel() const { return 0; } virtual BOOL checkPlayerGuard() const { return FALSE; } virtual fopAc_ac_c* getGrabMissActor() { return NULL; } - virtual BOOL checkPlayerFly() const { return FALSE; } + virtual u32 checkPlayerFly() const { return 0; } virtual BOOL checkFrontRoll() const { return FALSE; } virtual BOOL checkBottleSwing() const { return FALSE; } virtual BOOL checkCutCharge() const { return FALSE; } diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index db7f2052b..71405107a 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -2056,12 +2056,19 @@ public: s16 checkTinkleShield() const { return mTinkleShieldTimer; } void setTinkleShield(s16 time) { mTinkleShieldTimer = time; } bool checkNoDamageMode() const { return checkEquipDragonShield() || checkTinkleShield() != 0; } + void setHoverBoots(s16 time) { + onNoResetFlg0(daPyFlg0_HOVER_BOOTS); + m354C = time; + } void onShipTact() { onNoResetFlg1(daPyFlg1_SHIP_TACT); } void offShipTact() { offNoResetFlg1(daPyFlg1_SHIP_TACT); } void checkShipGetOff() {} - void onShipDrop(s16) {} + void onShipDrop(s16 param_1) { + onNoResetFlg0(daPyFlg0_SHIP_DROP); + m3550 = param_1; + } void checkCarryActionNow() const {} - void checkNoControll() const {} + bool checkNoControll() const { return dComIfGp_getPlayer(0) != this; } void clearDamageWait() {} void exchangeGrabActor(fopAc_ac_c*) {} void getDekuLeafWindPos() const {} @@ -2078,7 +2085,7 @@ public: void onModeFlg(u32 flag) { mModeFlg |= flag; } void offModeFlg(u32 flag) { mModeFlg &= ~flag; } - BOOL checkModeFlg(u32 flag) const { return mModeFlg & flag; } + u32 checkModeFlg(u32 flag) const { return mModeFlg & flag; } request_of_phase_process_class* getPhase() { return &mPhsLoad; } @@ -2089,7 +2096,7 @@ public: virtual int getTactTimerCancel() const; virtual BOOL checkPlayerGuard() const; virtual fopAc_ac_c* getGrabMissActor(); - virtual BOOL checkPlayerFly() const { return checkModeFlg(0x10452822); } // TODO add enum + virtual u32 checkPlayerFly() const { return checkModeFlg(0x10452822); } // TODO add enum virtual BOOL checkFrontRoll() const { return mCurProcID == PROC_FRONT_ROLL_e; } virtual BOOL checkBottleSwing() const { return mCurProcID == PROC_BOTTLE_SWING_e; } virtual BOOL checkCutCharge() const { return mCurProcID == PROC_CUT_TURN_MOVE_e; } diff --git a/src/d/actor/d_a_agb.cpp b/src/d/actor/d_a_agb.cpp index fa4ebb4ae..67e47625e 100644 --- a/src/d/actor/d_a_agb.cpp +++ b/src/d/actor/d_a_agb.cpp @@ -17,31 +17,19 @@ #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_gba_com.h" #include "m_Do/m_Do_mtx.h" +#include "d/actor/d_a_npc_md.h" +#include "d/actor/d_a_bomb.h" // stripped or compiler generated? static u32 unused_lit_2100[] = {0x3F800000, 0x3F800000, 0x3F800000, 0x3F800000, 0x3F800000, 0x3F800000}; // temp -class daNpc_Md_c { -public: - static bool m_flying; -}; - class daNpc_Cb1_c { public: static bool m_flying; }; -class daBomb_c { -public: - enum State_e { - STATE_8_e = 8, - }; - - static u32 prm_make(State_e, bool, bool); -}; - static mDoDvdThd_toMainRam_c* l_gbaCommand; int daAgb_c::mEffect; @@ -445,10 +433,6 @@ void daAgb_c::modeLookAttention() { } } -u8 daAgb_c::DungeonNoTable[] = { - 0, 11, 11, 1, 2, 3, 4, 5, 17, 17, 17, 17, 17, 17, 17, 17, -}; - /* 800D0490-800D0580 .text DungeonNoGet__7daAgb_cFv */ u8 daAgb_c::DungeonNoGet() { u8 var_r0 = DungeonNoTable[field_0x66c]; @@ -499,6 +483,10 @@ u8 daAgb_c::DungeonNoGet() { return dungeon_no; } +u8 daAgb_c::DungeonNoTable[] = { + 0, 11, 11, 1, 2, 3, 4, 5, 17, 17, 17, 17, 17, 17, 17, 17, +}; + /* 800D0580-800D05D4 .text MapNoSet__7daAgb_cFUcUcUc */ void daAgb_c::MapNoSet(u8 param_0, u8 param_1, u8 param_2) { field_0x66c = param_0; @@ -511,9 +499,9 @@ void daAgb_c::MapNoSet(u8 param_0, u8 param_1, u8 param_2) { /* 800D05D4-800D05F0 .text onFree__7daAgb_cFv */ void daAgb_c::onFree() { - field_0x671 = 1; + mIsFree = true; field_0x650 = -1; - field_0x677 = 0; + mFollowTarget = 0; } /* 800D05F0-800D0608 .text onHold__7daAgb_cFv */ @@ -531,8 +519,8 @@ void daAgb_c::offHold() { /* 800D0620-800D070C .text resetCursor__7daAgb_cFb */ void daAgb_c::resetCursor(bool param_0) { fopAc_ac_c* player_p = dComIfGp_getPlayer(0); - field_0x671 = 0; - field_0x677 = 0; + mIsFree = false; + mFollowTarget = 0; field_0x650 = -1; if (fopAcM_GetName(player_p) != PROC_NPC_KAM) { @@ -563,7 +551,7 @@ void daAgb_c::resetCursor(bool param_0) { /* 800D070C-800D0734 .text FlashCheck__7daAgb_cFv */ bool daAgb_c::FlashCheck() { - if (field_0x671 != 0 || field_0x677 == 1) { + if (mIsFree != 0 || mFollowTarget == 1) { return true; } @@ -646,7 +634,6 @@ void daAgb_c::SwitchOn() { } /* 800D0A54-800D1188 .text GbaItemUse__7daAgb_cFv */ -// NONMATCHING - mostly done, some regswaps void daAgb_c::GbaItemUse() { u32 temp_r29 = mItem.field_0x0; u32 var_r28 = 0; @@ -658,8 +645,8 @@ void daAgb_c::GbaItemUse() { dComIfGp_roomControl_getStatusRoomDt(roomNo)->getFileListInfo(); if (fili_p != NULL && fili_p->mParam & 4) { - if (field_0x67c != 0) { - mEffect = BigLittleChange((field_0x660 << 0x10) | 0x300); + if (mBombDeny) { + mEffect = BigLittleChange((mDenyMessage << 0x10) | 0x300); return; } else if (temp_r29 == 5) { f32 temp_f1 = cM_rndF(100.0f); @@ -695,9 +682,9 @@ void daAgb_c::GbaItemUse() { switch (temp_r29) { case 16: - if (daPy_getPlayerLinkActorClass() != dComIfGp_getPlayer(0) || + if (daPy_getPlayerLinkActorClass()->checkNoControll() || dComIfGp_checkPlayerStatus0(0, 0x8000000) || - (daPy_getPlayerLinkActorClass()->checkPlayerFly() && + (daPy_getPlayerActorClass()->checkPlayerFly() && !dComIfGp_checkPlayerStatus0(0, 0x100000) && !dComIfGp_checkPlayerStatus0(0, 0x10000))) { mEffect = BigLittleChange(0x1F0300); @@ -714,15 +701,15 @@ void daAgb_c::GbaItemUse() { return; } - if (daPy_getPlayerLinkActorClass() != dComIfGp_getPlayer(0) && - fopAcM_searchPlayerDistanceXZ(this) < 232.0f) + if (daPy_getPlayerLinkActorClass()->checkNoControll() && + fopAcM_searchActorDistanceXZ(this, daPy_getPlayerLinkActorClass()) < 232.0f) { mEffect = 0; return; } - if ((int)field_0x671 != 0 || (int)field_0x677 == 1) { - if ((int)field_0x671 == 0 && dComIfGs_getGbaRupeeCount() < 24 && + if (isFree() || getFollowTarget() == 1) { + if (!isFree() && dComIfGs_getGbaRupeeCount() < 24 && fopAcM_IsExecuting(field_0x650)) { fopAc_ac_c* actor_p = fopAcM_SearchByID(field_0x650); @@ -738,7 +725,7 @@ void daAgb_c::GbaItemUse() { temp_r29 = 15; } - fopAcM_create(0x128, daBomb_c::prm_make(daBomb_c::STATE_8_e, false, false), + fopAcM_create(0x128, daBomb_c::prm_make(daBomb_c::STATE_8, false, false), ¤t.pos, -1, NULL, NULL, -1, NULL); field_0x65c = 0x78; } else { @@ -750,7 +737,7 @@ void daAgb_c::GbaItemUse() { break; case 0x15: resetCursor(false); - fopAcM_create(0x128, daBomb_c::prm_make(daBomb_c::STATE_8_e, false, false), ¤t.pos, + fopAcM_create(0x128, daBomb_c::prm_make(daBomb_c::STATE_8, false, false), ¤t.pos, -1, NULL, NULL, -1, NULL); field_0x65c = 0x78; break; @@ -758,9 +745,7 @@ void daAgb_c::GbaItemUse() { mEffect = BigLittleChange(temp_r29); return; case 3: - daPy_lk_c* temp_r3 = daPy_getPlayerLinkActorClass(); - temp_r3->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000); - temp_r3->m354C = 5*30; + daPy_getPlayerLinkActorClass()->setHoverBoots(5*30); resetCursor(false); field_0x65c = 0x96; mBrk.setPlaySpeed(6.0f); @@ -786,15 +771,13 @@ void daAgb_c::GbaItemUse() { } break; case 12: - if (field_0x67c != 0) { - mEffect = BigLittleChange((field_0x660 << 0x10) | 0x300); + if (mBombDeny) { + mEffect = BigLittleChange((mDenyMessage << 0x10) | 0x300); return; } else { - daPy_lk_c* temp_r4 = daPy_getPlayerLinkActorClass(); - temp_r4->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000); - temp_r4->m354C = 300; - if (!(daPy_getPlayerLinkActorClass()->checkEquipDragonShield())) { - temp_r4->setTinkleShield(300); + daPy_getPlayerLinkActorClass()->setHoverBoots(10*30); + if (!daPy_getPlayerLinkActorClass()->checkEquipDragonShield()) { + daPy_getPlayerLinkActorClass()->setTinkleShield(300); } resetCursor(false); @@ -803,11 +786,11 @@ void daAgb_c::GbaItemUse() { } break; case 13: - if (field_0x67c != 0) { - mEffect = BigLittleChange((field_0x660 << 0x10) | 0x300); + if (mBombDeny) { + mEffect = BigLittleChange((mDenyMessage << 0x10) | 0x300); return; } else { - if ((daPy_getPlayerLinkActorClass()->checkEquipDragonShield())) { + if (daPy_getPlayerLinkActorClass()->checkEquipDragonShield()) { mEffect = 0; return; } @@ -951,12 +934,8 @@ int daAgb_Execute(daAgb_c* i_this) { if (i_this->field_0x65c != 0) { if (i_this->field_0x66b == 3 || i_this->field_0x66b == 12) { - daPy_lk_c* player_p = daPy_getPlayerLinkActorClass(); - player_p->onNoResetFlg0(daPy_py_c::daPyFlg0_UNK1000); - player_p->m354C = 10; - } else if (i_this->field_0x66b == 4 || i_this->field_0x66b == 13 || - i_this->field_0x66b == 12) - { + daPy_getPlayerLinkActorClass()->setHoverBoots(10); + } else if (i_this->field_0x66b == 4 || i_this->field_0x66b == 13 || i_this->field_0x66b == 12) { daPy_getPlayerLinkActorClass()->setTinkleShield(10); } @@ -972,7 +951,7 @@ int daAgb_Execute(daAgb_c* i_this) { i_this->modeProcCall(); if (g_mDoGaC_gbaCom.mDoGaC_GbaLink()) { - if ((int)i_this->field_0x671 != 0) { + if (i_this->isFree()) { if (i_this->current.pos.x != i_this->next.pos.x || i_this->current.pos.z != i_this->next.pos.z) { @@ -983,7 +962,7 @@ int daAgb_Execute(daAgb_c* i_this) { } else { daPy_lk_c* player_p2 = daPy_getPlayerLinkActorClass(); if ((dComIfGp_getPlayer(0) == player_p2 && !temp_r29->checkPlayerFly()) || - ((fopAcM_GetName(temp_r29) == PROC_NPC_MD && !daNpc_Md_c::m_flying) || + ((fopAcM_GetName(temp_r29) == PROC_NPC_MD && !daNpc_Md_c::isFlying()) || (fopAcM_GetName(temp_r29) == PROC_NPC_CB1 && !daNpc_Cb1_c::m_flying) || fopAcM_GetName(temp_r29) == PROC_NPC_OS)) { @@ -1036,7 +1015,7 @@ int daAgb_Execute(daAgb_c* i_this) { i_this->mBrk.play(); } } else if (((i_this->isActive() || i_this->field_0x676 != 0) && - ((int)i_this->field_0x671 != 0 || (int)i_this->field_0x677 == 1)) || + (i_this->isFree() || i_this->getFollowTarget() == 1)) || (i_this->field_0x66b == 14 && i_this->field_0x65c > 120)) { i_this->mBrk.play(); @@ -1172,7 +1151,7 @@ int daAgb_Create(fopAc_ac_c* i_this) { a_this->mIsMsgSend = g_mDoGaC_gbaCom.field_0x0 > 0; a_this->field_0x654 = 0; a_this->field_0x650 = -1; - a_this->field_0x677 = 0; + a_this->mFollowTarget = 0; a_this->field_0x67b = 0; a_this->field_0x680 = 1; diff --git a/src/d/actor/d_a_agbsw0.cpp b/src/d/actor/d_a_agbsw0.cpp index a089f6921..590ee46d3 100644 --- a/src/d/actor/d_a_agbsw0.cpp +++ b/src/d/actor/d_a_agbsw0.cpp @@ -23,6 +23,7 @@ static f64 dummy4[2] = {3.0, 0.5}; #include "d/actor/d_a_player_main.h" #include "d/actor/d_a_bomb.h" #include "m_Do/m_Do_gba_com.h" +#include "d/actor/d_a_npc_md.h" static dCcD_SrcCyl l_cyl_src = { // dCcD_SrcGObjInf @@ -55,7 +56,6 @@ static dCcD_SrcCyl l_cyl_src = { }; BOOL daAgbsw0_c::draw() { - /* Nonmatching */ u8 toCheck = getSw0(); u8 behavior = getType(); s16 condition = getParamNo(); @@ -113,31 +113,31 @@ BOOL daAgbsw0_c::draw() { } else if(behavior == 2 || behavior == 0xD || behavior == 0xE) { u8 iconType; - u16 iconRot; + s32 iconRot; u8 temp; if(condition == 0) { iconType = 8; - iconRot = -0x8000; + iconRot = 0x8000; temp = 0; } else if(condition <= 8) { iconType = 9; - iconRot = (4 - (condition - 1)) * 0x2000; // missing a mr after the clrlslwi + iconRot = (u16)((4 - (condition - 1)) * 0x2000); temp = 0; } else if(condition < 0x19) { iconType = 10; - iconRot = -0x8000; + iconRot = 0x8000; temp = condition - 9; } else if(condition == 0x22) { iconType = 0x15; - iconRot = -0x8000; + iconRot = 0x8000; temp = 0; } else { iconType = 0xB; - iconRot = -0x8000; + iconRot = 0x8000; temp = 0; } @@ -359,7 +359,7 @@ BOOL daAgbsw0_c::ExeSubA() { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink()) { if(g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 != 1) && HitCheck(agb)) { + if(agb && (agb->isFree() || agb->getFollowTarget() != 1) && HitCheck(agb)) { u32 param = fopAcM_GetParam(this); MailSend(BigLittleChange(getMsgNo()) >> 0x10, 1, getSw1(), 0xFF, 0); field_0x298 = 1; @@ -439,7 +439,7 @@ BOOL daAgbsw0_c::ExeSubAT() { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink()) { if(g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 != 1) && HitCheck(agb)) { + if(agb && (agb->isFree() || agb->getFollowTarget() != 1) && HitCheck(agb)) { if(flag < 0x20) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 2, getSw1(), 0xFF, 0); } @@ -522,7 +522,7 @@ BOOL daAgbsw0_c::ExeSubA2() { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink()) { if(g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 == 0) && HitCheck(agb)) { + if(agb && (agb->isFree() || agb->getFollowTarget() == 0) && HitCheck(agb)) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 4, getSw1(), sw, 0); field_0x298 = 1; } @@ -566,7 +566,7 @@ BOOL daAgbsw0_c::ExeSubF() { } if(g_mDoGaC_gbaCom.mDoGaC_GbaLink() && g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && agb->isActive() && (int)agb->field_0x671 == 0 && (int)agb->field_0x677 == 0 && HitCheck(agb)) { + if(agb && agb->isActive() && !agb->isFree() && agb->getFollowTarget() == 0 && HitCheck(agb)) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 6, getSw1(), sw, 0); } } @@ -619,7 +619,7 @@ BOOL daAgbsw0_c::ExeSubF2() { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink() && g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5) && agb) { fopAc_ac_c* player = dComIfGp_getPlayer(0); if(field_0x299 == 0) { - if(agb->isActive() && (int)agb->field_0x671 == 0 && (int)agb->field_0x677 == 0 && HitCheck(agb)) { + if(agb->isActive() && !agb->isFree() && agb->getFollowTarget() == 0 && HitCheck(agb)) { MailSend(0x5A00, 6, 0xFF, 0xFF, 0); agb->onFree(); agb->onHold(); @@ -684,7 +684,7 @@ BOOL daAgbsw0_c::ExeSubM() { else { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink() && g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && agb->isActive() && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 != 1) && HitCheck(agb)) { + if(agb && agb->isActive() && (agb->isFree() || agb->getFollowTarget() != 1) && HitCheck(agb)) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 0x3, 0xFF, 0xFF, 0); field_0x298 = 1; } @@ -724,7 +724,7 @@ BOOL daAgbsw0_c::ExeSubM2() { else { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink() && g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && agb->isActive() && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 != 1) && HitCheck(agb)) { + if(agb && agb->isActive() && (agb->isFree() || agb->getFollowTarget() != 1) && HitCheck(agb)) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 0x3, 0xFF, 0xFF, 0); field_0x298 = 1; } @@ -765,7 +765,7 @@ BOOL daAgbsw0_c::ExeSubM3() { else { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink() && g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && agb->isActive() && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 != 1) && HitCheck(agb)) { + if(agb && agb->isActive() && (agb->isFree() || agb->getFollowTarget() != 1) && HitCheck(agb)) { u16 gbaMsgId = TriforceCheck(agb); MailSend(BigLittleChange(gbaMsgId) >> 0x10, 0xF, 0xFF, 0xFF, 0); field_0x298 = 1; @@ -933,11 +933,10 @@ u16 daAgbsw0_c::BeatedMsg[] = { 0x0031, 0x004F, 0x0058, - 0x0059 -}; -//no idea why this is getting pused out an extra 2 bytes +}; u16 daAgbsw0_c::DisposedMsg[] = { - 0x005C + 0x0059, + 0x005C, }; BOOL daAgbsw0_c::ExeSubMW() { @@ -1046,7 +1045,7 @@ BOOL daAgbsw0_c::ExeSubS() { else if(field_0x299 == 0 && g_mDoGaC_gbaCom.mDoGaC_GbaLink()) { daAgb_c* agb = dComIfGp_getAgb(); if(getParamNo() < 0) { - if(agb && agb->isActive() && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 != 1) && HitCheck(agb)) { + if(agb && agb->isActive() && (agb->isFree() || agb->getFollowTarget() != 1) && HitCheck(agb)) { if(getMsgNo() == 0xFFFF) { fopAcM_onSwitch(this, sw); if(sw1 != 0xFF) { @@ -1119,7 +1118,7 @@ BOOL daAgbsw0_c::ExeSubR() { return true; } else if(agb && agb->isActive()) { - if((int)agb->field_0x671 != 0 && HitCheck(agb)) { + if(agb->isFree() && HitCheck(agb)) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 0xA, 0xFF, getSw0(), 0); field_0x299 = 1; field_0x298 = 1; @@ -1213,7 +1212,7 @@ BOOL daAgbsw0_c::ExeSubB() { return true; } else { - if(agb && (int)agb->field_0x671 != 0 && HitCheck(agb)) { + if(agb && agb->isFree() && HitCheck(agb)) { f32 xzDiff = fopAcM_searchActorDistanceXZ(agb, this); cXyz posDiff = current.pos - agb->current.pos; @@ -1274,7 +1273,7 @@ BOOL daAgbsw0_c::ExeSubB() { else if((restriction != 2 && sw != 0xFF && fopAcM_isSwitch(this, sw)) || (restriction == 2 && sw < 0x20 && dComIfGs_isTbox(sw))) { if(agb) { if(restriction == 3) { - agb->field_0x67c = 0; + agb->offBombDeny(); } else if(restriction != 6) { agb->field_0x67b = 0; @@ -1288,13 +1287,13 @@ BOOL daAgbsw0_c::ExeSubB() { if(agb) { if(restriction == 3) { if(HitCheck(player->current.pos, 60.0f)) { - agb->field_0x67c = 1; - agb->field_0x660 = fopAcM_GetParam(this); + agb->onBombDeny(); + agb->setDenyMessage(fopAcM_GetParam(this)); field_0x298 = 1; } else { if(field_0x298 == 1) { - agb->field_0x67c = 0; + agb->offBombDeny(); field_0x298 = 0; } } @@ -1335,7 +1334,7 @@ BOOL daAgbsw0_c::ExeSubD() { if(g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5) && agb) { fopAc_ac_c* player = dComIfGp_getPlayer(0); if(field_0x299 == 0) { - if(agb->isActive() && (int)agb->field_0x671 != 0 && HitCheck(agb)) { + if(agb->isActive() && agb->isFree() && HitCheck(agb)) { MailSend(0x5F00, 0xC, 0xFF, 0xFF, 0x19); agb->onHold(); agb->field_0x675 = 1; @@ -1481,7 +1480,7 @@ BOOL daAgbsw0_c::ExeSubFA() { if(g_mDoGaC_gbaCom.mDoGaC_GbaLink()) { if(g_mDoGaC_gbaCom.mDoGaC_SendStatusCheck(5)) { daAgb_c* agb = dComIfGp_getAgb(); - if(agb && ((int)agb->field_0x671 != 0 || (int)agb->field_0x677 == 0) && HitCheck(agb)) { + if(agb && (agb->isFree() || agb->getFollowTarget() == 0) && HitCheck(agb)) { MailSend(BigLittleChange(getMsgNo()) >> 0x10, 0xD, getSw1(), sw, 0); field_0x298 = 1; } @@ -2275,59 +2274,59 @@ BOOL daAgbsw0_c::MoveCheck(s16 param_1) { break; case 0x7B: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171/* && m_flying*/) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171 && daNpc_Md_c::isFlying()) { return 0; } break; case 0x7C: - if(!fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171/* || !m_flying*/) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) != 0x171 || !daNpc_Md_c::isFlying()) { return 0; } break; case 0x7D: - if(!fopAcM_isSwitch(this, 0x7C)) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171/* && daNpc_Cb1_c::isFlying()*/) { return 0; } break; case 0x7E: - if(dComIfGs_checkGetItem(HUMMER) && !dComIfGs_isEventBit(0x2D01)) { + if(!fpcM_GetName(dComIfGp_getPlayer(0)) != 0x171/* || !daNpc_Cb1_c::isFlying()*/) { return 0; } break; case 0x7F: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171/* && m_flying*/) { + if(!fopAcM_isSwitch(this, 0x7C)) { return 0; } break; case 0x80: - if(!fpcM_GetName(dComIfGp_getPlayer(0)) != 0x171/* || !m_flying*/) { + if(dComIfGs_checkGetItem(HUMMER) && !dComIfGs_isEventBit(0x2D01)) { return 0; } break; case 0x82: if(field_0x29B == 0) { - if(field_0x298 /* daNpc_Md_c::isPlayerRoom() */) { + if(daNpc_Md_c::isPlayerRoom()) { field_0x29B = 1; } } - else if(!field_0x298 /* !daNpc_Md_c::isPlayerRoom() */) { + else if(!daNpc_Md_c::isPlayerRoom()) { return 0; } break; case 0x83: if(field_0x29B == 0) { - if(field_0x298 /* daNpc_Md_c::isPlayerRoom() */) { + if(field_0x298 /* daNpc_Cb1_c::isPlayerRoom() */) { field_0x29B = 1; } } - else if(!field_0x298 /* !daNpc_Md_c::isPlayerRoom() */) { + else if(!field_0x298 /* !daNpc_Cb1_c::isPlayerRoom() */) { return 0; } @@ -2372,7 +2371,7 @@ static BOOL daAgbsw0_Delete(daAgbsw0_c* i_this) { if(id == 0xA) { s16 temp = i_this->current.angle.x & 0xFFFF; if(temp == 3) { - agb->field_0x67c = 0; + agb->offBombDeny(); } else if(temp == 4) { daAgb_c::mFlags.field_0x3 = 0; //has an extra stb + mr but at least it does rlwimi on 0 now diff --git a/src/d/actor/d_a_npc_md.cpp b/src/d/actor/d_a_npc_md.cpp index 62d7cdca2..c71246c28 100644 --- a/src/d/actor/d_a_npc_md.cpp +++ b/src/d/actor/d_a_npc_md.cpp @@ -401,7 +401,7 @@ static int hairTopNodeCallBack(J3DNode*, int) { } /* 00001D0C-00001F5C .text vecChange__FP4cXyzP4cXyzs */ -static void vecChange(cXyz*, cXyz*, short) { +static void vecChange(cXyz*, cXyz*, s16) { /* Nonmatching */ } @@ -650,7 +650,7 @@ void daNpc_Md_c::getStickAngY(int) { } /* 00003430-00003588 .text calcStickPos__10daNpc_Md_cFsP4cXyz */ -void daNpc_Md_c::calcStickPos(short, cXyz*) { +void daNpc_Md_c::calcStickPos(s16, cXyz*) { /* Nonmatching */ } @@ -739,7 +739,7 @@ void daNpc_Md_c::checkCollision(int) { } /* 00003FE0-00004040 .text restartPoint__10daNpc_Md_cFs */ -void daNpc_Md_c::restartPoint(short) { +void daNpc_Md_c::restartPoint(s16) { /* Nonmatching */ } @@ -749,7 +749,7 @@ BOOL daNpc_Md_c::isTagCheckOK() { } /* 00004174-00004230 .text setMessageAnimation__10daNpc_Md_cFUc */ -void daNpc_Md_c::setMessageAnimation(unsigned char) { +void daNpc_Md_c::setMessageAnimation(u8) { /* Nonmatching */ } @@ -889,27 +889,27 @@ int daNpc_Md_c::demoFlyNpcAction(void*) { } /* 00007A98-00007B64 .text routeAngCheck__10daNpc_Md_cFR4cXyzPs */ -void daNpc_Md_c::routeAngCheck(cXyz&, short*) { +void daNpc_Md_c::routeAngCheck(cXyz&, s16*) { /* Nonmatching */ } /* 00007B64-00007DC8 .text routeWallCheck__10daNpc_Md_cFR4cXyzR4cXyzPs */ -void daNpc_Md_c::routeWallCheck(cXyz&, cXyz&, short*) { +void daNpc_Md_c::routeWallCheck(cXyz&, cXyz&, s16*) { /* Nonmatching */ } /* 00007DC8-00008054 .text checkForwardGroundY__10daNpc_Md_cFs */ -void daNpc_Md_c::checkForwardGroundY(short) { +void daNpc_Md_c::checkForwardGroundY(s16) { /* Nonmatching */ } /* 000081EC-000082C0 .text checkWallJump__10daNpc_Md_cFs */ -void daNpc_Md_c::checkWallJump(short) { +void daNpc_Md_c::checkWallJump(s16) { /* Nonmatching */ } /* 000082C0-00008858 .text routeCheck__10daNpc_Md_cFfPs */ -void daNpc_Md_c::routeCheck(float, short*) { +void daNpc_Md_c::routeCheck(f32, s16*) { /* Nonmatching */ } @@ -924,17 +924,17 @@ int daNpc_Md_c::hitNpcAction(void*) { } /* 00008E54-00008FFC .text setNormalSpeedF__10daNpc_Md_cFfffff */ -void daNpc_Md_c::setNormalSpeedF(float, float, float, float, float) { +void daNpc_Md_c::setNormalSpeedF(f32, f32, f32, f32, f32) { /* Nonmatching */ } /* 00008FFC-000090EC .text setSpeedAndAngleNormal__10daNpc_Md_cFfs */ -void daNpc_Md_c::setSpeedAndAngleNormal(float, short) { +void daNpc_Md_c::setSpeedAndAngleNormal(f32, s16) { /* Nonmatching */ } /* 000090EC-00009180 .text walkProc__10daNpc_Md_cFfs */ -void daNpc_Md_c::walkProc(float, short) { +void daNpc_Md_c::walkProc(f32, s16) { /* Nonmatching */ } @@ -1183,12 +1183,12 @@ void daNpc_Md_c::talk(int) { } /* 0000CDCC-0000CDF4 .text getAnmType__10daNpc_Md_cFUc */ -void daNpc_Md_c::getAnmType(unsigned char) { +void daNpc_Md_c::getAnmType(u8) { /* Nonmatching */ } /* 0000CDF4-0000CF18 .text initTexPatternAnm__10daNpc_Md_cFUcb */ -BOOL daNpc_Md_c::initTexPatternAnm(unsigned char, bool) { +BOOL daNpc_Md_c::initTexPatternAnm(u8, bool) { /* Nonmatching */ } @@ -1213,17 +1213,17 @@ void daNpc_Md_c::setAnm(int) { } /* 0000D4CC-0000D5E4 .text dNpc_Md_setAnm__10daNpc_Md_cFP15mDoExt_McaMorf2fiffPcPcPCc */ -void daNpc_Md_c::dNpc_Md_setAnm(mDoExt_McaMorf2*, float, int, float, float, char*, char*, const char*) { +void daNpc_Md_c::dNpc_Md_setAnm(mDoExt_McaMorf2*, f32, int, f32, f32, char*, char*, const char*) { /* Nonmatching */ } /* 0000D5E4-0000D614 .text dNpc_Md_setAnm__10daNpc_Md_cFP14mDoExt_McaMorfiffPcPCc */ -void daNpc_Md_c::dNpc_Md_setAnm(mDoExt_McaMorf*, int, float, float, char*, const char*) { +void daNpc_Md_c::dNpc_Md_setAnm(mDoExt_McaMorf*, int, f32, f32, char*, const char*) { /* Nonmatching */ } /* 0000D614-0000D82C .text chkAttention__10daNpc_Md_cF4cXyzsi */ -void daNpc_Md_c::chkAttention(cXyz, short, int) { +void daNpc_Md_c::chkAttention(cXyz, s16, int) { /* Nonmatching */ } @@ -1253,7 +1253,7 @@ void daNpc_Md_c::checkCommandTalk() { } /* 0000DCB0-0000E410 .text next_msgStatus__10daNpc_Md_cFPUl */ -void daNpc_Md_c::next_msgStatus(unsigned long*) { +void daNpc_Md_c::next_msgStatus(u32*) { /* Nonmatching */ } @@ -1283,7 +1283,7 @@ void daNpc_Md_c::lookBack(cXyz*, int, int) { } /* 0000EC38-0000EDD0 .text lookBackWaist__10daNpc_Md_cFsf */ -void daNpc_Md_c::lookBackWaist(short, float) { +void daNpc_Md_c::lookBackWaist(s16, f32) { /* Nonmatching */ } @@ -1323,12 +1323,12 @@ BOOL daNpc_Md_c::execute() { } /* 000108B0-00010948 .text particle_set__10daNpc_Md_cFPP14JPABaseEmitterUs */ -void daNpc_Md_c::particle_set(JPABaseEmitter**, unsigned short) { +void daNpc_Md_c::particle_set(JPABaseEmitter**, u16) { /* Nonmatching */ } /* 00010948-000109A0 .text emitterTrace__10daNpc_Md_cFP14JPABaseEmitterPA4_fP5csXyz */ -void daNpc_Md_c::emitterTrace(JPABaseEmitter*, float(*)[4], csXyz*) { +void daNpc_Md_c::emitterTrace(JPABaseEmitter*, MtxP, csXyz*) { /* Nonmatching */ } @@ -1374,7 +1374,7 @@ void daNpc_Md_followEcallBack_c::execute(JPABaseEmitter*) { } /* 0001119C-000111A4 .text setup__26daNpc_Md_followEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */ -void daNpc_Md_followEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) { +void daNpc_Md_followEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) { /* Nonmatching */ }