From 3d63a54587795a7a237de6f749b69e8518a57c10 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Wed, 8 Jan 2025 15:05:14 -0500 Subject: [PATCH] Player inlines and enums --- include/d/actor/d_a_player.h | 11 +++++- include/d/actor/d_a_player_main.h | 61 +++++++++++++++++++------------ src/d/actor/d_a_auction.cpp | 35 ++++++++++-------- src/d/actor/d_a_obj_toripost.cpp | 10 ++--- src/d/actor/d_a_player_bow.inc | 8 +++- src/d/actor/d_a_player_main.cpp | 54 ++++++++++++++------------- src/d/actor/d_a_player_tact.inc | 4 +- 7 files changed, 107 insertions(+), 76 deletions(-) diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 1a0b3f0eb..5ca609872 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -39,7 +39,14 @@ public: class daPy_demo_c { public: enum { - // TODO + DEMO_UNK1_e = 0x01, + DEMO_UNK14_e = 0x14, + DEMO_UNK18_e = 0x18, + DEMO_UNK1D_e = 0x1D, + DEMO_UNK25_e = 0x25, + DEMO_UNK44_e = 0x44, + DEMO_UNK48_e = 0x48, + DEMO_UNK4A_e = 0x4A, DEMO_LAST_e = 0x4B, DEMO_NEW_ANM0_e = 0x200, }; @@ -387,7 +394,7 @@ public: } void cancelOriginalDemo() { mDemo.setSystemDemoType(); - mDemo.setDemoMode(1); + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK1_e); } void onNoResetFlg0(daPy_FLG0 flag) { mNoResetFlg0 |= flag; } diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 04120b64c..7e1e64d97 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -857,6 +857,16 @@ public: daPyItem_UNK10B_e = 0x10B, }; + enum daPy_lk_ITEM_BTN { + /* 0x01 */ BTN_A = (1 << 0), + /* 0x02 */ BTN_B = (1 << 1), + /* 0x04 */ BTN_X = (1 << 2), + /* 0x08 */ BTN_Y = (1 << 3), + /* 0x10 */ BTN_Z = (1 << 4), + /* 0x20 */ BTN_L = (1 << 5), + /* 0x40 */ BTN_R = (1 << 6), + }; + typedef BOOL (daPy_lk_c::*ProcFunc)(); void seStartOnlyReverb(u32); @@ -989,13 +999,13 @@ public: BOOL checkScopeEnd(); void setSubjectMode(); BOOL checkMaskDraw(); - BOOL checkSubjectEnd(int); + BOOL checkSubjectEnd(BOOL); BOOL checkGuardAccept(); void cancelNoDamageMode(); BOOL commonProcInit(daPy_PROC proc); BOOL procScope_init(int); BOOL procScope(); - BOOL procSubjectivity_init(int); + BOOL procSubjectivity_init(BOOL); BOOL procSubjectivity(); BOOL procCall_init(); BOOL procCall(); @@ -1507,7 +1517,7 @@ public: BOOL procBoomerangCatch_init(); BOOL procBoomerangCatch(); void bowJointCB(int); - void bowButton() const; + BOOL bowButton() const; BOOL checkBowReadyAnime() const; BOOL checkBowAnime() const; void makeArrow(); @@ -1752,8 +1762,29 @@ public: J3DAnmTransform* getNowAnmPackUnder(daPy_UNDER idx) { return mAnmRatioUnder[idx].getAnmTransform(); } J3DAnmTransform* getNowAnmPackUpper(daPy_UPPER idx) { return mAnmRatioUpper[idx].getAnmTransform(); } + BOOL doButton() const { return mItemButton & BTN_A; } + BOOL swordButton() const { return mItemButton & BTN_B; } + BOOL itemButtonX() const { return mItemButton & BTN_X; } + BOOL itemButtonY() const { return mItemButton & BTN_Y; } + BOOL itemButtonZ() const { return mItemButton & BTN_Z; } + BOOL spActionButton() const { return mItemButton & BTN_R; } + + BOOL doTrigger() const { return mItemTrigger & BTN_A; } + BOOL talkTrigger() const { return mItemTrigger & BTN_A; } + BOOL swordTrigger() const { return mItemTrigger & BTN_B; } + BOOL cancelTrigger() const { return mItemTrigger & BTN_B; } + BOOL itemTriggerX() const { return mItemTrigger & BTN_X; } + BOOL itemTriggerY() const { return mItemTrigger & BTN_Y; } + BOOL itemTriggerZ() const { return mItemTrigger & BTN_Z; } + BOOL spLTrigger() const { return mItemTrigger & BTN_L; } + BOOL spActionTrigger() const { return mItemTrigger & BTN_R; } void allTrigger() const {} - void cancelTrigger() const {} + void otherWeaponTrigger() const {} + void spBattleTrigger() const {} + + void checkPlayerDemoMode() const {} + void checkSpecialDemoMode() const {} + void checkAttentionLock() {} void checkBoomerangRock() {} void checkBothItemEquipAnime() const {} @@ -1766,40 +1797,22 @@ public: void checkIsland() const {} void checkMirrorShieldEquip() const {} void checkNoUpperAnime() const {} - void checkPlayerDemoMode() const {} void checkPowerGloveEquip() const {} void checkRopeThrowAnime() const {} void checkShieldEquip() const {} - void checkSpecialDemoMode() const {} void checkSwordEquipAnime() const {} void checkUpperAnime(u16) const {} - void doButton() const {} - void doTrigger() const {} void getAnmSpeedStickRate(f32, f32) {} void getBombWaterPillarBrk() {} void getBombWaterPillarBtk() {} void getStartModeFromParam(u32) {} void getTactLeftHandPos() const {} - void itemButtonX() const {} - void itemButtonY() const {} - void itemButtonZ() const {} - void itemTriggerX() const {} - void itemTriggerY() const {} - void itemTriggerZ() const {} - void otherWeaponTrigger() const {} void seStartSystem(u32) {} void setFootEffectPosType(u8) {} void setSpeedAndAngleBoomerang() {} void setSpeedAndAngleBow() {} void setSpeedAndAngleHookshot() {} void setSpeedAndAngleRope() {} - void spActionButton() const {} - void spActionTrigger() const {} - void spBattleTrigger() const {} - void spLTrigger() const {} - void swordButton() const {} - void swordTrigger() const {} - void talkTrigger() const {} virtual void setPlayerPosAndAngle(cXyz*, s16); virtual void setPlayerPosAndAngle(cXyz*, csXyz*); @@ -2008,8 +2021,8 @@ public: /* 0x34C5 */ u8 m34C5; /* 0x34C6 */ u8 m34C6; /* 0x34C7 */ u8 mActivePlayerBombs; - /* 0x34C8 */ u8 mPressedButtons; - /* 0x34C9 */ u8 m34C9; + /* 0x34C8 */ u8 mItemTrigger; + /* 0x34C9 */ u8 mItemButton; /* 0x34CA */ u8 m34CA; /* 0x34CB */ u8 mDekuSpRestartPoint; /* 0x34CC */ u8 m34CC; diff --git a/src/d/actor/d_a_auction.cpp b/src/d/actor/d_a_auction.cpp index e623f55be..91ed7f8bf 100644 --- a/src/d/actor/d_a_auction.cpp +++ b/src/d/actor/d_a_auction.cpp @@ -730,7 +730,7 @@ void daAuction_c::eventMainInit() { daPy_py_c* pLink = (daPy_py_c*)dComIfGp_getLinkPlayer(); pLink->changeOriginalDemo(); - mCurLinkAnm = 1; + mCurLinkAnm = daPy_demo_c::DEMO_UNK1_e; dComIfGp_event_setTalkPartner(this); m82F = 0; @@ -753,8 +753,13 @@ static daAuction_c::ProcFunc_t eventProc[] = { bool daAuction_c::eventMain() { daPy_lk_c* pLink = (daPy_lk_c*)dComIfGp_getLinkPlayer(); - if (pLink->getBaseAnimeFrameRate() == 0.0f && mCurLinkAnm != 1 && mCurLinkAnm != 0x1D && mCurLinkAnm != 0x25) { - setLinkAnm(1); + if ( + pLink->getBaseAnimeFrameRate() == 0.0f && + mCurLinkAnm != daPy_demo_c::DEMO_UNK1_e && + mCurLinkAnm != daPy_demo_c::DEMO_UNK1D_e && + mCurLinkAnm != daPy_demo_c::DEMO_UNK25_e + ) { + setLinkAnm(daPy_demo_c::DEMO_UNK1_e); } mFlags &= 4; @@ -897,7 +902,7 @@ void daAuction_c::eventMainKai() { m800 = mCurrBid + 1; dComIfGp_setMessageSetNumber(mCurrBid + 1); end = 0x1CFA; - setLinkAnm(0x48); + setLinkAnm(daPy_demo_c::DEMO_UNK48_e); mpTimer->mpScrnDraw->setShowType(1); dAuction_screen_gaugeUp(); @@ -929,8 +934,8 @@ void daAuction_c::eventMainKai() { dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m824)].field_0x00); setMessage2(msgParam); setCameraNpc(m824, 0); - if (m824 == 0 && mCurLinkAnm != 0x1D) { - setLinkAnm(0x14); + if (m824 == 0 && mCurLinkAnm != daPy_demo_c::DEMO_UNK1D_e) { + setLinkAnm(daPy_demo_c::DEMO_UNK14_e); } m834 |= 0x20; @@ -1040,7 +1045,7 @@ void daAuction_c::eventMainUri() { setCameraNpc(m824, 0); if (m824 == 0) { - setLinkAnm(0x14); + setLinkAnm(daPy_demo_c::DEMO_UNK14_e); } m834 |= 0x20; @@ -1081,8 +1086,8 @@ void daAuction_c::eventMainMsgSet() { /* 0000279C-0000294C .text eventMainMsgEnd__11daAuction_cFv */ void daAuction_c::eventMainMsgEnd() { if (eventMesEnd()) { - if (mCurLinkAnm != 1 && mCurLinkAnm != 0x1D) { - setLinkAnm(1); + if (mCurLinkAnm != daPy_demo_c::DEMO_UNK1_e && mCurLinkAnm != daPy_demo_c::DEMO_UNK1D_e) { + setLinkAnm(daPy_demo_c::DEMO_UNK1_e); } if (m834 & 0x20) { @@ -1316,7 +1321,7 @@ u16 daAuction_c::next_msgStatus(u32* pMsgNo) { m826 = tmp; m824 = tmp; if (m826 != 0) { - setLinkAnm(1); + setLinkAnm(daPy_demo_c::DEMO_UNK1_e); } break; } @@ -1325,12 +1330,12 @@ u16 daAuction_c::next_msgStatus(u32* pMsgNo) { if (dComIfGs_getRupee() < msgSetNo) { mDoAud_seStart(JA_SE_AUC_BID_NG); - setLinkAnm(0x4A); + setLinkAnm(daPy_demo_c::DEMO_UNK4A_e); *pMsgNo = 0x1CFB; m7C4[0] = 50.0f; } else if (msgSetNo <= mCurrBid) { mDoAud_seStart(JA_SE_AUC_BID_NG); - setLinkAnm(0x4A); + setLinkAnm(daPy_demo_c::DEMO_UNK4A_e); *pMsgNo = 0x1D1E; m7C4[0] = 50.0f; } else { @@ -1388,7 +1393,7 @@ u16 daAuction_c::next_msgStatus(u32* pMsgNo) { case 0x1D21: case 0x1D22: case 0x1D23: { - setLinkAnm(0x14); + setLinkAnm(daPy_demo_c::DEMO_UNK14_e); int rnd = getRand(6) + 1; *pMsgNo = l_npc_msg_dat[getAucMdlNo(rnd)].field_0x06; m825 = rnd; @@ -1538,8 +1543,8 @@ void daAuction_c::setCameraNpc(int idx, s16 param_2) { /* 000039FC-00003A3C .text setLinkAnm__11daAuction_cFUc */ void daAuction_c::setLinkAnm(u8 linkAnm) { - if (linkAnm == 1 && m826 == 0) { - linkAnm = 0x1D; + if (linkAnm == daPy_demo_c::DEMO_UNK1_e && m826 == 0) { + linkAnm = daPy_demo_c::DEMO_UNK1D_e; } daPy_lk_c* pLink = (daPy_lk_c*)dComIfGp_getLinkPlayer(); diff --git a/src/d/actor/d_a_obj_toripost.cpp b/src/d/actor/d_a_obj_toripost.cpp index ae79e19b5..eab2cb524 100644 --- a/src/d/actor/d_a_obj_toripost.cpp +++ b/src/d/actor/d_a_obj_toripost.cpp @@ -723,9 +723,8 @@ void daObjTpost_c::modeTalkXY() { } if(field_0x8E4 != -1 && cLib_calcTimer(&field_0x8E4) == 0) { - player->mDemo.setOriginalDemoType(); - player->mDemo.setParam0(0); - player->mDemo.setDemoMode(0x18); + player->changeOriginalDemo(); + player->changeDemoMode(daPy_demo_c::DEMO_UNK18_e); field_0x8E4 = -1; } @@ -736,9 +735,8 @@ void daObjTpost_c::modeTalkXY() { case 0xCF0: case 0xCF1: if(player->getBaseAnimeFrameRate() == 0.0f) { - player->mDemo.setOriginalDemoType(); - player->mDemo.setParam0(0); - player->mDemo.setDemoMode(1); + player->changeOriginalDemo(); + player->changeDemoMode(daPy_demo_c::DEMO_UNK1_e); } break; diff --git a/src/d/actor/d_a_player_bow.inc b/src/d/actor/d_a_player_bow.inc index 96e28b4a6..7b6512cca 100644 --- a/src/d/actor/d_a_player_bow.inc +++ b/src/d/actor/d_a_player_bow.inc @@ -24,8 +24,12 @@ static BOOL daPy_bowJointCB(J3DNode*, int) { } /* 80149FD0-8014A008 .text bowButton__9daPy_lk_cCFv */ -void daPy_lk_c::bowButton() const { - /* Nonmatching */ +BOOL daPy_lk_c::bowButton() const { + if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e) { + return doButton(); + } else { + return itemButton(); + } } /* 8014A008-8014A02C .text checkBowReadyAnime__9daPy_lk_cCFv */ diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 250f8c93e..ed9d1b745 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -293,22 +293,22 @@ void daPy_lk_c::voiceStart(u32 param_1) { /* 801031A4-801031DC .text itemButton__9daPy_lk_cCFv */ BOOL daPy_lk_c::itemButton() const { if (mReadyItemBtn == dItemBtn_X_e) { - return m34C9 & 0x04; + return itemButtonX(); } else if (mReadyItemBtn == dItemBtn_Y_e) { - return m34C9 & 0x08; + return itemButtonY(); } else { - return m34C9 & 0x10; + return itemButtonZ(); } } /* 801031DC-80103214 .text itemTrigger__9daPy_lk_cCFv */ BOOL daPy_lk_c::itemTrigger() const { if (mReadyItemBtn == dItemBtn_X_e) { - return mPressedButtons & 0x04; + return itemTriggerX(); } else if (mReadyItemBtn == dItemBtn_Y_e) { - return mPressedButtons & 0x08; + return itemTriggerY(); } else { - return mPressedButtons & 0x10; + return itemTriggerZ(); } } @@ -343,15 +343,15 @@ BOOL daPy_lk_c::checkGroupItem(int param_1, int itemNo) { /* 801032E4-801033E4 .text checkSetItemTrigger__9daPy_lk_cFii */ BOOL daPy_lk_c::checkSetItemTrigger(int param_1, int param_2) { if (param_2 == 0 || !daPy_dmEcallBack_c::checkCurse()) { - if (mPressedButtons & 0x04 && checkGroupItem(param_1, dComIfGp_getSelectItem(dItemBtn_X_e))) { + if (itemTriggerX() && checkGroupItem(param_1, dComIfGp_getSelectItem(dItemBtn_X_e))) { mReadyItemBtn = dItemBtn_X_e; return TRUE; } - if (mPressedButtons & 0x08 && checkGroupItem(param_1, dComIfGp_getSelectItem(dItemBtn_Y_e))) { + if (itemTriggerY() && checkGroupItem(param_1, dComIfGp_getSelectItem(dItemBtn_Y_e))) { mReadyItemBtn = dItemBtn_Y_e; return TRUE; } - if (mPressedButtons & 0x10 && checkGroupItem(param_1, dComIfGp_getSelectItem(dItemBtn_Z_e))) { + if (itemTriggerZ() && checkGroupItem(param_1, dComIfGp_getSelectItem(dItemBtn_Z_e))) { mReadyItemBtn = dItemBtn_Z_e; return TRUE; } @@ -1625,24 +1625,24 @@ BOOL daPy_lk_c::checkItemChangeFromButton() { !checkPlayerGuard() ) { if (!daPy_dmEcallBack_c::checkCurse()) { - if (mPressedButtons & 0x02 && checkSwordEquip() && mEquipItem != daPyItem_SWORD_e) { + if (swordTrigger() && checkSwordEquip() && mEquipItem != daPyItem_SWORD_e) { setAnimeEquipSword(1); - } else if (mPressedButtons & 0x04) { + } else if (itemTriggerX()) { if (checkNewItemChange(0)) { mReadyItemBtn = dItemBtn_X_e; return TRUE; } - } else if (mPressedButtons & 0x08) { + } else if (itemTriggerY()) { if (checkNewItemChange(1)) { mReadyItemBtn = dItemBtn_Y_e; return TRUE; } - } else if (mPressedButtons & 0x10) { + } else if (itemTriggerZ()) { if (checkNewItemChange(2)) { mReadyItemBtn = dItemBtn_Z_e; return TRUE; } - } else if (mPressedButtons & 0x01) { + } else if (doTrigger()) { if (dComIfGp_getDoStatus() == 0x08) { // A button shows "Put Away" setAnimeUnequip(); } @@ -1657,12 +1657,12 @@ BOOL daPy_lk_c::checkItemChangeFromButton() { return procBottleDrink_init(dComIfGp_getSelectItem(mReadyItemBtn)); } else if (checkSetItemTrigger(FAIRY_BOTTLE, 0)) { return procBottleOpen_init(FAIRY_BOTTLE); - } else if (mPressedButtons & 0x01) { + } else if (doTrigger()) { if (dComIfGp_getDoStatus() == 0x08) { // A button shows "Put Away" setAnimeUnequip(); } } - } else if (mPressedButtons & 0x01) { + } else if (doTrigger()) { if (dComIfGp_getDoStatus() == 0x08) { // A button shows "Put Away" setAnimeUnequip(); } @@ -2098,9 +2098,10 @@ BOOL daPy_lk_c::checkMaskDraw() { } /* 801121C8-80112280 .text checkSubjectEnd__9daPy_lk_cFi */ -BOOL daPy_lk_c::checkSubjectEnd(int param_1) { - if(dComIfGp_event_runCheck() || (mPressedButtons & 3) || (m34C9 & 0x20) || dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x2000)) { - if(param_1) { +BOOL daPy_lk_c::checkSubjectEnd(BOOL i_playSound) { + // TODO: these trigger/button checks are likely inlines + if(dComIfGp_event_runCheck() || (mItemTrigger & (BTN_A | BTN_B)) || (mItemButton & BTN_L) || dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x2000)) { + if(i_playSound) { mDoAud_seStart(JA_SE_SUBJ_VIEW_OUT); } @@ -2317,27 +2318,30 @@ BOOL daPy_lk_c::procScope() { } /* 80112AA8-80112B18 .text procSubjectivity_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procSubjectivity_init(int param_1) { +BOOL daPy_lk_c::procSubjectivity_init(BOOL i_crouch) { commonProcInit(daPyProc_SUBJECTIVITY_e); mVelocity = 0.0f; setSubjectMode(); - if(param_1 == 0) { + if(!i_crouch) { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); } - m3570 = param_1; + m3570 = i_crouch; return true; } /* 80112B18-80112BEC .text procSubjectivity__9daPy_lk_cFv */ BOOL daPy_lk_c::procSubjectivity() { - dComIfGp_setAStatus(7); + dComIfGp_setAStatus(7); // Show "Return" on the B button - if(checkSubjectEnd(0) || (m3570 != 0 && (m34C9 & 0x40) == 0)) { + if( + checkSubjectEnd(FALSE) || + (m3570 != 0 && !spActionButton() // Player released R while crouching + )) { mDoAud_seStart(JA_SE_SUBJ_VIEW_OUT); if(m3570 != 0) { if(mEquipItem == daPyItem_NONE_e) { @@ -3118,7 +3122,7 @@ BOOL daPy_lk_c::startRestartRoom(u32 mode, int eventInfoIdx, f32 param_3, int i_ if (!checkNoResetFlg0(daPyFlg0_UNK4000) && (i_point != 0 || dComIfGp_event_compulsory(this))) { mDemo.setOriginalDemoType(); if (i_point == 0) { - mDemo.setDemoMode(1); + mDemo.setDemoMode(daPy_demo_c::DEMO_UNK1_e); } onNoResetFlg0(daPyFlg0_UNK4000); changePlayer(this); diff --git a/src/d/actor/d_a_player_tact.inc b/src/d/actor/d_a_player_tact.inc index 28fdae769..53247c481 100644 --- a/src/d/actor/d_a_player_tact.inc +++ b/src/d/actor/d_a_player_tact.inc @@ -338,7 +338,7 @@ BOOL daPy_lk_c::procTactWait() { dComIfGp_setAStatus(7); } - if (m34D2 == 0 || ((mPressedButtons & 2) != 0 && dComIfGp_getAStatus() == 7) || m35AC <= 0.0f) { + if (m34D2 == 0 || (cancelTrigger() && dComIfGp_getAStatus() == 7) || m35AC <= 0.0f) { if (m34D2 != 0) { resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); resetActAnimeUpper(UPPER_MOVE1_e, -1.0f); @@ -347,7 +347,7 @@ BOOL daPy_lk_c::procTactWait() { g_dComIfG_gameInfo.play.field_0x4947 = 0; - if ((mPressedButtons & 2) != 0 && m3570 == 5) { + if (cancelTrigger() && m3570 == 5) { m35AC = -1000.0f; }