From 8ab8d352926122c6e7ec27610613f0adce5d0118 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Thu, 23 Nov 2023 23:34:48 -0500 Subject: [PATCH] d_a_arrow + others cleanup and doc --- include/d/actor/d_a_arrow.h | 66 ++++---- include/d/actor/d_a_obj_movebox.h | 3 +- src/d/actor/d_a_agbsw0.cpp | 26 ++-- src/d/actor/d_a_arrow.cpp | 245 +++++++++++++++--------------- src/d/actor/d_a_item.cpp | 2 +- src/d/actor/d_a_obj_monument.cpp | 6 +- src/d/actor/d_a_obj_movebox.cpp | 6 +- src/d/actor/d_a_obj_paper.cpp | 10 +- src/d/d_s_actor_data_mng.cpp | 16 +- src/d/d_shop.cpp | 6 +- 10 files changed, 188 insertions(+), 198 deletions(-) diff --git a/include/d/actor/d_a_arrow.h b/include/d/actor/d_a_arrow.h index e3995067f..7b51c7bc6 100644 --- a/include/d/actor/d_a_arrow.h +++ b/include/d/actor/d_a_arrow.h @@ -11,7 +11,7 @@ class J3DAnmTextureSRTKey; class J3DMaterial; -class daArrow_c : fopAc_ac_c { +class daArrow_c : public fopAc_ac_c { public: enum ArrowType { TYPE_NORMAL = 0, @@ -22,6 +22,7 @@ public: typedef BOOL (daArrow_c::*daArrow_c_ProcFunc)(); + daArrow_c() {} BOOL _createHeap(); void _atHit(dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); void checkCreater(); @@ -52,77 +53,66 @@ public: BOOL _execute(); BOOL _draw(); s32 _create(); - daArrow_c(); BOOL _delete(); static u8 getKeepType(); static void setKeepType(u8 type); - // TODO inlines - void ArrowAtOff() {} - void chkAtHitNormal() {} - void clrAtHitNormal() {} - void clrAtHitPosBuff(cXyz*) {} - void getAtHitNormalActor() {} - void getAtHitPosBuffP() {} - void isLinkReflect() {} - void isSetByZelda() {} - void setAtHitNormal() {} - void setAtHitNormalActor(fopAc_ac_c*) {} - void setAtHitPosBuff(cXyz*) {} + bool isSetByZelda() { return mbSetByZelda; } + bool isLinkReflect() { return mbLinkReflect; } + void ArrowAtOff() { mAtCps.OffAtSetBit(); } + bool chkAtHitNormal() { return mbHitActor; } + void setAtHitNormal() { mbHitActor = true; } + void clrAtHitNormal() { mbHitActor = false; } + fopAc_ac_c* getAtHitNormalActor() { return mpAtHitActor; } + void setAtHitNormalActor(fopAc_ac_c* actor) { mpAtHitActor = actor; } + cXyz* getAtHitPosBuffP() { return &mAtHitPos; } + void setAtHitPosBuff(cXyz* pos) { mAtHitPos = *pos; } + void clrAtHitPosBuff(cXyz* pos) {} // Not sure what this inline would have been for public: - /* 0x290 */ bool mbShotByZelda; - /* 0x291 */ u8 field_0x291[0x294 - 0x291]; + /* 0x290 */ bool mbSetByZelda; /* 0x294 */ J3DModel* mpModel; /* 0x298 */ J3DMaterial* mpTipMat; /* 0x29C */ J3DAnmTextureSRTKey* mpBtk; /* 0x2A0 */ dBgS_ArrowLinChk mLinChk; /* 0x30C */ dBgS_ObjGndChk mGndChk; /* 0x360 */ dCcD_Stts mStts; - /* 0x39C */ dCcD_Cps mCps; - /* 0x4D4 */ dCcD_Sph mSph; + /* 0x39C */ dCcD_Cps mAtCps; + /* 0x4D4 */ dCcD_Sph mCoSph; /* 0x600 */ bool field_0x600; /* 0x601 */ u8 mArrowType; /* 0x602 */ s16 field_0x602; /* 0x604 */ s16 field_0x604; /* 0x606 */ u8 field_0x606[0x608 - 0x606]; - /* 0x608 */ s16 field_0x608; - /* 0x60A */ u8 field_0x60A[0x60C - 0x60A]; + /* 0x608 */ s16 mSparkleTimer; /* 0x60C */ JPABaseEmitter* mpSparkleEmitter; - /* 0x610 */ s32 mHitActorProcID; + /* 0x610 */ u32 mHitActorProcID; /* 0x614 */ s32 mHitJointIndex; /* 0x618 */ cXyz field_0x618; /* 0x624 */ u8 field_0x624[0x660 - 0x624]; /* 0x660 */ f32 mBtkFrame; - /* 0x664 */ u8 field_0x664; - /* 0x665 */ u8 field_0x665[0x668 - 0x665]; - /* 0x668 */ dPa_followEcallBack mPtclFollowCb; - /* 0x67C */ csXyz field_0x67c; + /* 0x664 */ bool mbLinkReflect; + /* 0x668 */ dPa_followEcallBack mBlurFollowCb; + /* 0x67C */ csXyz mBlurAngle; /* 0x682 */ u8 field_0x682; - /* 0x683 */ u8 field_0x683[0x684 - 0x683]; - /* 0x684 */ u32 field_0x684; - /* 0x688 */ bool field_0x688; - /* 0x689 */ u8 field_0x689[0x68C - 0x689]; + /* 0x684 */ u32 mLightEffPID; + /* 0x688 */ bool mbHasLightEff; /* 0x68C */ daArrow_c_ProcFunc mCurrProcFunc; - /* 0x698 */ u8 field_0x698; + /* 0x698 */ bool field_0x698; /* 0x699 */ u8 field_0x699; - /* 0x69A */ u8 field_0x69a; - /* 0x69B */ u8 field_0x69B[0x69C - 0x69B]; + /* 0x69A */ bool field_0x69a; /* 0x69C */ s16 field_0x69c; - /* 0x69E */ u8 field_0x69E[0x6A0 - 0x69E]; /* 0x6A0 */ s32 field_0x6a0; /* 0x6A4 */ s32 mInWaterTimer; /* 0x6A8 */ cXyz field_0x6a8; /* 0x6B4 */ Mtx field_0x6b4; - /* 0x6E4 */ u8 field_0x6e4; - /* 0x6E5 */ u8 field_0x6E5[0x6E6 - 0x6E5]; + /* 0x6E4 */ bool field_0x6e4; /* 0x6E6 */ csXyz field_0x6e6; - /* 0x6EC */ fopAc_ac_c* field_0x6ec; - /* 0x6F0 */ cXyz mNearestHitPos; + /* 0x6EC */ fopAc_ac_c* mpAtHitActor; + /* 0x6F0 */ cXyz mAtHitPos; /* 0x6FC */ f32 mNearestHitDist; /* 0x700 */ bool mbHitActor; - /* 0x701 */ u8 field_0x701[0x704 - 0x701]; static u8 m_keep_type; static s16 m_count; diff --git a/include/d/actor/d_a_obj_movebox.h b/include/d/actor/d_a_obj_movebox.h index 727f06cb8..1fdf1e151 100644 --- a/include/d/actor/d_a_obj_movebox.h +++ b/include/d/actor/d_a_obj_movebox.h @@ -187,6 +187,7 @@ namespace daObjMovebox { inline void mode_proc_call(); bool chk_walk(cXyz*) { /* TODO */ } + void set_rollCrash() { mbRollCrash = TRUE; } void prmZ_init(); void prmX_init(); @@ -267,7 +268,7 @@ namespace daObjMovebox { /* 0x64F */ bool m64F; /* 0x650 */ EffSmokeCB mSmokeCbs[2]; /* 0x6B8 */ u32 mChildPID; - /* 0x6BC */ int m6BC; + /* 0x6BC */ BOOL mbRollCrash; static const char* const M_arcname[13]; static const dCcD_SrcCyl M_cyl_src; diff --git a/src/d/actor/d_a_agbsw0.cpp b/src/d/actor/d_a_agbsw0.cpp index 0252220f9..d9ede4b3c 100644 --- a/src/d/actor/d_a_agbsw0.cpp +++ b/src/d/actor/d_a_agbsw0.cpp @@ -1936,49 +1936,49 @@ BOOL daAgbsw0_c::MoveCheck(s16 param_1) { return 0; case 0x44: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x13C) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == PROC_NPC_OS) { return 0; } break; case 0x45: - if(fpcM_GetName(dComIfGp_getPlayer(0)) != 0x13C) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) != PROC_NPC_OS) { return 0; } break; case 0x46: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == PROC_NPC_MD) { return 0; } break; case 0x47: - if(fpcM_GetName(dComIfGp_getPlayer(0)) != 0x171) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) != PROC_NPC_MD) { return 0; } break; case 0x48: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x150) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == PROC_NPC_CB1) { return 0; } break; case 0x49: - if(fpcM_GetName(dComIfGp_getPlayer(0)) != 0x150) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) != PROC_NPC_CB1) { return 0; } break; case 0x4A: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0xC4) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == PROC_NPC_KAM) { return 0; } break; case 0x4B: - if(fpcM_GetName(dComIfGp_getPlayer(0)) != 0xC4) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) != PROC_NPC_KAM) { return 0; } @@ -2274,25 +2274,27 @@ BOOL daAgbsw0_c::MoveCheck(s16 param_1) { break; case 0x7B: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171 && daNpc_Md_c::isFlying()) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) == PROC_NPC_MD && daNpc_Md_c::isFlying()) { return 0; } break; case 0x7C: - if(fpcM_GetName(dComIfGp_getPlayer(0)) != 0x171 || !daNpc_Md_c::isFlying()) { + if(fpcM_GetName(dComIfGp_getPlayer(0)) != PROC_NPC_MD || !daNpc_Md_c::isFlying()) { return 0; } break; case 0x7D: - if(fpcM_GetName(dComIfGp_getPlayer(0)) == 0x171/* && daNpc_Cb1_c::isFlying()*/) { + // Potential bug: This seems to check if the current player is Medli, but that Makar is flying? + if(fpcM_GetName(dComIfGp_getPlayer(0)) == PROC_NPC_MD/* && daNpc_Cb1_c::isFlying()*/) { return 0; } break; case 0x7E: - if(!fpcM_GetName(dComIfGp_getPlayer(0)) != 0x171/* || !daNpc_Cb1_c::isFlying()*/) { + // Potential bug: This seems to check if the current player is Medli, but that Makar is flying? + if(!fpcM_GetName(dComIfGp_getPlayer(0)) != PROC_NPC_MD/* || !daNpc_Cb1_c::isFlying()*/) { return 0; } diff --git a/src/d/actor/d_a_arrow.cpp b/src/d/actor/d_a_arrow.cpp index 2055a9415..612bdff2d 100644 --- a/src/d/actor/d_a_arrow.cpp +++ b/src/d/actor/d_a_arrow.cpp @@ -85,7 +85,7 @@ const dCcD_SrcSph daArrow_c::m_co_sph_src = { /* 800D455C-800D457C .text createHeap_CB__FP10fopAc_ac_c */ static BOOL createHeap_CB(fopAc_ac_c* i_this) { - return ((daArrow_c*)i_this)->_createHeap(); + return static_cast(i_this)->_createHeap(); } /* 800D457C-800D4648 .text _createHeap__9daArrow_cFv */ @@ -103,8 +103,8 @@ BOOL daArrow_c::_createHeap() { } /* 800D4648-800D4668 .text atHit_CB__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -void atHit_CB(fopAc_ac_c* i_this, dCcD_GObjInf* thisObjInf, fopAc_ac_c* hitActor, dCcD_GObjInf* hitObjInf) { - ((daArrow_c*)i_this)->_atHit(thisObjInf, hitActor, hitObjInf); +static void atHit_CB(fopAc_ac_c* i_this, dCcD_GObjInf* thisObjInf, fopAc_ac_c* hitActor, dCcD_GObjInf* hitObjInf) { + static_cast(i_this)->_atHit(thisObjInf, hitActor, hitObjInf); } /* 800D4668-800D47C0 .text _atHit__9daArrow_cFP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ @@ -126,13 +126,13 @@ void daArrow_c::_atHit(dCcD_GObjInf* thisObjInf, fopAc_ac_c* hitActor, dCcD_GObj mNearestHitDist = hitDist; mHitActorProcID = fopAcM_GetID(hitActor); if (hitObjInf->ChkTgShield()) { - mbHitActor = false; - field_0x6ec = NULL; + clrAtHitNormal(); + setAtHitNormalActor(NULL); } else { - mbHitActor = true; - field_0x6ec = hitActor; + setAtHitNormal(); + setAtHitNormalActor(hitActor); } - mNearestHitPos = *thisObjInf->GetAtHitPosP(); + setAtHitPosBuff(thisObjInf->GetAtHitPosP()); } } @@ -142,7 +142,7 @@ void daArrow_c::checkCreater() { fopAc_ac_c* archer; if (fopAcM_SearchByID(mParentPcId, &archer)) { if (fpcM_GetName(archer) == PROC_PZ) { - mbShotByZelda = true; + mbSetByZelda = true; } } } @@ -153,45 +153,45 @@ void daArrow_c::setLightEffect() { if (mArrowType == TYPE_NORMAL) { return; } - if (!field_0x688) { - field_0x684 = fopAcM_createChild( + if (!mbHasLightEff) { + mLightEffPID = fopAcM_createChild( PROC_ARROW_LIGHTEFF, fopAcM_GetID(this), mArrowType, &field_0x6a8, current.roomNo, &shape_angle, NULL, -1, NULL ); - if (field_0x684 != -1) { - field_0x688 = true; + if (mLightEffPID != fpcM_ERROR_PROCESS_ID_e) { + mbHasLightEff = true; } } } else { - fopAcM_delete(fopAcM_SearchByID(field_0x684)); - field_0x688 = false; + fopAcM_delete(fopAcM_SearchByID(mLightEffPID)); + mbHasLightEff = false; } field_0x682 = mArrowType; } /* 800D48E8-800D4994 .text setBlur__9daArrow_cFv */ void daArrow_c::setBlur() { - JPABaseEmitter* emitter = mPtclFollowCb.getEmitter(); - if (!emitter) { + JPABaseEmitter* blurEmitter = mBlurFollowCb.getEmitter(); + if (!blurEmitter) { return; } - s32 alpha = emitter->getGlobalAlpha(); + s32 alpha = blurEmitter->getGlobalAlpha(); if (alpha - 50 <= 0) { - mPtclFollowCb.end(); + mBlurFollowCb.end(); } else { - emitter->setGlobalAlpha(alpha - 50); + blurEmitter->setGlobalAlpha(alpha - 50); } mDoMtx_stack_c::transS(current.pos); - mDoMtx_stack_c::ZXYrotM(field_0x67c); - emitter->setGlobalRTMatrix(mDoMtx_stack_c::get()); + mDoMtx_stack_c::ZXYrotM(mBlurAngle); + blurEmitter->setGlobalRTMatrix(mDoMtx_stack_c::get()); } /* 800D4994-800D4A04 .text createBlur__9daArrow_cFv */ void daArrow_c::createBlur() { - if (!mPtclFollowCb.getEmitter()) { - dComIfGp_particle_setP1(0x48, ¤t.pos, NULL, NULL, 0xFF, &mPtclFollowCb); + if (!mBlurFollowCb.getEmitter()) { + dComIfGp_particle_setP1(0x48, ¤t.pos, NULL, NULL, 0xFF, &mBlurFollowCb); } } @@ -247,13 +247,13 @@ void daArrow_c::setDrawShapeMaterial() { }, }; - mCps.SetAtType(arrow_mat[mArrowType].mAtType); - mCps.SetAtAtp(arrow_mat[mArrowType].mAtp); + mAtCps.SetAtType(arrow_mat[mArrowType].mAtType); + mAtCps.SetAtAtp(arrow_mat[mArrowType].mAtp); - if (mbShotByZelda) { - mCps.SetAtAtp(4); - mCps.SetAtType(arrow_mat[0].mAtType); - mCps.OnAtSPrmBit(0xE); + if (mbSetByZelda) { + mAtCps.SetAtAtp(4); + mAtCps.SetAtType(arrow_mat[0].mAtType); + mAtCps.OnAtSPrmBit(0xE); } if (arrow_mat[mArrowType].mTipJointIdx != 0) { @@ -273,14 +273,14 @@ void daArrow_c::arrowShooting() { setArrowShootSe(); - if (mArrowType == TYPE_LIGHT && !mbShotByZelda) { + if (mArrowType == TYPE_LIGHT && !mbSetByZelda) { if (strcmp(dComIfGp_getStartStageName(), "GanonK") != 0) { // Not in Puppet Ganon's boss room. - mCps.SetAtSpl((dCcG_At_Spl)0xB); + mAtCps.SetAtSpl((dCcG_At_Spl)0xB); } } - field_0x67c = shape_angle; + mBlurAngle = shape_angle; createBlur(); @@ -291,17 +291,17 @@ void daArrow_c::arrowShooting() { } cXyz end = current.pos + speed*1.25f; - mCps.SetStartEnd(current.pos, end); - mCps.SetR(5.0f); - mCps.CalcAtVec(); + mAtCps.SetStartEnd(current.pos, end); + mAtCps.SetR(5.0f); + mAtCps.CalcAtVec(); - dComIfG_Ccsp()->Set(&mCps); + dComIfG_Ccsp()->Set(&mAtCps); // Using the dComIfG_Ccsp inline here breaks the match. // dComIfG_Ccsp()->SetMass(&mCps, 1); - g_dComIfG_gameInfo.play.mCcS.SetMass(&mCps, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mAtCps, 1); - mbHitActor = false; - mNearestHitPos = end; + clrAtHitNormal(); + setAtHitPosBuff(&end); mNearestHitDist = MAXFLOAT; } @@ -343,10 +343,10 @@ void daArrow_c::ShieldReflect() { fopAc_ac_c* ganondorf; if (fopAcM_SearchByName(PROC_GND, &ganondorf) && dComIfGp_getAttention().LockonTruth() && dComIfGp_getAttention().LockonTarget(0) == ganondorf) { cXyz ganondorfChestPos = ganondorf->current.pos; - ganondorfChestPos.y = g_regHIO.mChild[8].mFloatRegs[0] + 130.0f; + ganondorfChestPos.y = 130.0f + g_regHIO.mChild[8].mFloatRegs[0]; targetAngleX = -cLib_targetAngleX(&link->current.pos, &ganondorfChestPos); fpcM_SetParam(ganondorf, 0x23); - field_0x608 = g_regHIO.mChild[0].mShortRegs[3] + 15; + mSparkleTimer = 15 + g_regHIO.mChild[0].mShortRegs[3]; mpSparkleEmitter = dComIfGp_particle_set(0x3EE, &link->current.pos); } @@ -396,7 +396,7 @@ bool daArrow_c::check_water_in() { if (mArrowType == TYPE_FIRE) { mInWaterTimer = 1; dComIfGp_particle_setP1(0x35A, &waterHitPos); - if (field_0x6e4 == 0) { + if (!field_0x6e4) { dKy_arrowcol_chg_on(¤t.pos, 0); } } else if (mArrowType == TYPE_ICE) { @@ -405,13 +405,13 @@ bool daArrow_c::check_water_in() { PROC_ARROW_ICEEFF, fopAcM_GetID(this), mArrowType, &waterHitPos, current.roomNo, ¤t.angle, NULL, -1, NULL ); - if (field_0x6e4 == 0) { + if (!field_0x6e4) { dKy_arrowcol_chg_on(¤t.pos, 1); } } else if (mArrowType == TYPE_LIGHT) { dComIfGp_particle_setP1(0x2A1, &waterHitPos); fopAcM_seStartCurrent(this, JA_SE_OBJ_LIGHT_ARW_EFF, 0); - if (field_0x6e4 == 0) { + if (!field_0x6e4) { dKy_arrowcol_chg_on(¤t.pos, 2); } mInWaterTimer = 1; @@ -419,7 +419,7 @@ bool daArrow_c::check_water_in() { mInWaterTimer = 1; } - field_0x698 = 0; + field_0x698 = false; return TRUE; } else { @@ -528,7 +528,7 @@ void daArrow_c::setRoomInfo() { /* 800D56B0-800D5854 .text setKeepMatrix__9daArrow_cFv */ void daArrow_c::setKeepMatrix() { // Transform the arrow onto its archer's hand. - if (mbShotByZelda) { + if (mbSetByZelda) { fopNpc_npc_c* zelda; fopAcM_SearchByID(mParentPcId, (fopAc_ac_c**)&zelda); @@ -615,7 +615,7 @@ BOOL daArrow_c::procWait() { field_0x6e6 = shape_angle; if (fopAcM_GetParam(this) == 1) { - if (!mbShotByZelda) { + if (!mbSetByZelda) { arrowUseMp(); checkRestMp(); } @@ -636,45 +636,45 @@ BOOL daArrow_c::procMove() { field_0x6e6 = shape_angle; cMtx_copy(mpModel->getBaseTRMtx(), field_0x6b4); - field_0x67c.z += 0x889; + mBlurAngle.z += 0x889; s32 hitType = 0; // No hit - if (mCps.ChkAtHit()) { + if (mAtCps.ChkAtHit()) { cXyz temp12; cXyz hitPos; csXyz temp11; - if (mArrowType == TYPE_LIGHT && field_0x664 == 0 && mCps.ChkAtShieldHit() && fpcM_GetName(mCps.GetAtHitAc()) == PROC_PLAYER) { - mCps.GetAtHitAc(); - hitPos = *mCps.GetAtHitPosP(); + if (mArrowType == TYPE_LIGHT && !mbLinkReflect && mAtCps.ChkAtShieldHit() && fpcM_GetName(mAtCps.GetAtHitAc()) == PROC_PLAYER) { + mAtCps.GetAtHitAc(); + hitPos = *mAtCps.GetAtHitPosP(); hitType = -1; // Reflected hit - field_0x664 = 1; + mbLinkReflect = true; ShieldReflect(); } else { fopAc_ac_c* hitActor; BOOL hitWasBlocked; - s32 bHitActor = mbHitActor; + s32 bHitActor = chkAtHitNormal(); if (bHitActor) { - hitActor = field_0x6ec; - hitPos = mNearestHitPos; + hitActor = getAtHitNormalActor(); + hitPos = *getAtHitPosBuffP(); hitWasBlocked = FALSE; } else { - hitActor = mCps.GetAtHitAc(); - hitPos = *mCps.GetAtHitPosP(); - hitWasBlocked = mCps.ChkAtShieldHit(); + hitActor = mAtCps.GetAtHitAc(); + hitPos = *mAtCps.GetAtHitPosP(); + hitWasBlocked = mAtCps.ChkAtShieldHit(); } if (hitActor) { JntHit_c* jntHit = fopAcM_GetJntHit(hitActor); if (mArrowType == TYPE_LIGHT) { - if (fpcM_GetName(mCps.GetAtHitAc()) == PROC_BGN || - fpcM_GetName(mCps.GetAtHitAc()) == PROC_BGN2 || - fpcM_GetName(mCps.GetAtHitAc()) == PROC_BGN3) { + if (fpcM_GetName(mAtCps.GetAtHitAc()) == PROC_BGN || + fpcM_GetName(mAtCps.GetAtHitAc()) == PROC_BGN2 || + fpcM_GetName(mAtCps.GetAtHitAc()) == PROC_BGN3) { // Hit Puppet Ganon. if (hitWasBlocked) { field_0x6a8 = hitPos; current.pos = hitPos - (speed * 0.25f); - if (field_0x6e4 == 0) { + if (!field_0x6e4) { dKy_arrowcol_chg_on(¤t.pos, 2); } @@ -723,8 +723,8 @@ BOOL daArrow_c::procMove() { field_0x604 = 0x28; fopAcM_OnStatus(this, fopAcStts_UNK4000_e); - if (mPtclFollowCb.mpEmitter) { - mPtclFollowCb.end(); + if (mBlurFollowCb.mpEmitter) { + mBlurFollowCb.end(); } if (hitType == 1) { // Blocked hit @@ -744,12 +744,12 @@ BOOL daArrow_c::procMove() { if (mArrowType == TYPE_FIRE) { fopAcM_seStartCurrent(this, JA_SE_OBJ_FIRE_ARW_EFF, 0); - field_0x698 = 0; + field_0x698 = false; } else if (mArrowType == TYPE_ICE) { fopAcM_seStartCurrent(this, JA_SE_OBJ_ICE_ARW_EFF, 0); } else if (mArrowType == TYPE_LIGHT) { fopAcM_seStartCurrent(this, JA_SE_OBJ_LIGHT_ARW_EFF, 0); - field_0x698 = 0; + field_0x698 = false; } setStopActorMatrix(); @@ -775,7 +775,7 @@ BOOL daArrow_c::procMove() { temp8 = -1; } - if (temp8 >= 0 && field_0x6e4 == 0) { + if (temp8 >= 0 && !field_0x6e4) { dKy_arrowcol_chg_on(¤t.pos, temp8); } @@ -797,7 +797,7 @@ BOOL daArrow_c::procMove() { dComIfGp_particle_setP1(0x29A, &field_0x6a8, &temp10); dComIfGp_particle_setP1(0x29B, &field_0x6a8, &temp10); fopAcM_seStartCurrent(this, JA_SE_OBJ_FIRE_ARW_EFF, 0); - field_0x698 = 0; + field_0x698 = false; } else if (mArrowType == TYPE_ICE) { if (dComIfG_Bgsp()->ChkGrpInf(mLinChk, 0x200)) { fopAcM_create(PROC_Obj_Magmarock, NULL, &field_0x6a8, current.roomNo, NULL, NULL, -1, NULL); @@ -815,7 +815,7 @@ BOOL daArrow_c::procMove() { } else if (mArrowType == TYPE_LIGHT) { dComIfGp_particle_setP1(0x2A1, &field_0x6a8, &temp10); fopAcM_seStartCurrent(this, JA_SE_OBJ_LIGHT_ARW_EFF, 0); - field_0x698 = 0; + field_0x698 = false; } s32 attribCode = dComIfG_Bgsp()->GetAttributeCode(mLinChk); @@ -857,7 +857,7 @@ BOOL daArrow_c::procMove() { return TRUE; } } else if ((current.pos - field_0x6a8).abs() > 20000.0f) { - field_0x6e4 = 1; + field_0x6e4 = true; } createBlur(); @@ -867,14 +867,14 @@ BOOL daArrow_c::procMove() { mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); cXyz end = current.pos + speed*1.25f; - mCps.SetStartEnd(current.pos, end); - mCps.SetR(5.0f); - mCps.CalcAtVec(); + mAtCps.SetStartEnd(current.pos, end); + mAtCps.SetR(5.0f); + mAtCps.CalcAtVec(); - dComIfG_Ccsp()->Set(&mCps); + dComIfG_Ccsp()->Set(&mAtCps); // Using the dComIfG_Ccsp inline here breaks the match. // dComIfG_Ccsp()->SetMass(&mCps, 1); - g_dComIfG_gameInfo.play.mCcS.SetMass(&mCps, 1); + g_dComIfG_gameInfo.play.mCcS.SetMass(&mAtCps, 1); } return TRUE; @@ -904,7 +904,7 @@ BOOL daArrow_c::procReturn() { field_0x69c = (temp3 / 2); triPla = dComIfG_Bgsp()->GetTriPla(mLinChk); if (triPla->mNormal.y >= 0.5f) { - field_0x69a = 1; + field_0x69a = true; } } else if (field_0x69a && speed.y < 0.0f) { fopAcM_delete(this); @@ -958,12 +958,12 @@ BOOL daArrow_c::procStop_BG() { } if (mArrowType == TYPE_NORMAL) { - mSph.SetC(current.pos); - dComIfG_Ccsp()->Set(&mSph); + mCoSph.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCoSph); if (field_0x6a0 == 0) { field_0x600 = true; - field_0x698 = 0; + field_0x698 = false; } else { field_0x6a0--; @@ -971,16 +971,16 @@ BOOL daArrow_c::procStop_BG() { // This matches but probably isn't what they actually wrote. u32 signBit = ((u32)field_0x6a0)>>31; if ((((field_0x6a0&1) ^ signBit) - signBit) == 0) { - field_0x698 = 0; + field_0x698 = false; } else { - field_0x698 = 1; + field_0x698 = true; } } else { - field_0x698 = 1; + field_0x698 = true; } } - if (mSph.ChkCoHit()) { + if (mCoSph.ChkCoHit()) { dComIfGp_setItemArrowNumCount(1); fopAcM_createItemForSimpleDemo(¤t.pos, ARROW_10, -1, NULL, NULL, 0.0f, 0.0f); mDoAud_seStart(JA_SE_CONSUMP_ITEM_GET, NULL, 0, 0); @@ -989,7 +989,7 @@ BOOL daArrow_c::procStop_BG() { } } - if (mbShotByZelda) { + if (mbSetByZelda) { field_0x600 = true; } @@ -1067,11 +1067,11 @@ BOOL daArrow_c::createInit() { mCull.mBox.mMax.z = 65.0f; mStts.Init(10, 0xFF, this); - mCps.Set(m_at_cps_src); - mCps.SetStts(&mStts); - mCps.SetAtHitCallback(&atHit_CB); - mSph.Set(m_co_sph_src); - mSph.SetStts(&mStts); + mAtCps.Set(m_at_cps_src); + mAtCps.SetStts(&mStts); + mAtCps.SetAtHitCallback(&atHit_CB); + mCoSph.Set(m_co_sph_src); + mCoSph.SetStts(&mStts); field_0x602 = -1; @@ -1084,15 +1084,15 @@ BOOL daArrow_c::createInit() { } setDrawShapeMaterial(); - field_0x698 = 1; + field_0x698 = true; field_0x699 = 0; - field_0x69a = 0; + field_0x69a = false; field_0x69c = 0; field_0x6a0 = 300; mInWaterTimer = 0; - field_0x6e4 = 0; - field_0x688 = 0; - field_0x664 = 0; + field_0x6e4 = false; + mbHasLightEff = false; + mbLinkReflect = false; field_0x604 = 0; return TRUE; @@ -1100,30 +1100,30 @@ BOOL daArrow_c::createInit() { /* 800D74FC-800D7820 .text _execute__9daArrow_cFv */ BOOL daArrow_c::_execute() { - if (mbShotByZelda) { - if (field_0x664 == 0) { + if (mbSetByZelda) { + if (!mbLinkReflect) { if (daPy_getPlayerLinkActorClass()->checkPlayerGuard()) { - mCps.SetAtSpl((dCcG_At_Spl)0); - mCps.SetAtType(AT_TYPE_NORMAL_ARROW); + mAtCps.SetAtSpl((dCcG_At_Spl)0); + mAtCps.SetAtType(AT_TYPE_NORMAL_ARROW); } else { - mCps.SetAtSpl((dCcG_At_Spl)0xB); - mCps.SetAtType(AT_TYPE_LIGHT_ARROW); + mAtCps.SetAtSpl((dCcG_At_Spl)0xB); + mAtCps.SetAtType(AT_TYPE_LIGHT_ARROW); } } else { - mCps.SetAtSpl((dCcG_At_Spl)0); - mCps.SetAtType(AT_TYPE_NORMAL_ARROW); + mAtCps.SetAtSpl((dCcG_At_Spl)0); + mAtCps.SetAtType(AT_TYPE_NORMAL_ARROW); } } - if (field_0x608 != 0) { - field_0x608--; + if (mSparkleTimer != 0) { + mSparkleTimer--; s8 temp4 = 0; daPy_py_c* player = daPy_getPlayerActorClass(); cXyz offset; offset.x = 0.0f; - offset.y = g_regHIO.mChild->mFloatRegs[8] + 45.0f; - offset.z = g_regHIO.mChild->mFloatRegs[9] + 30.0f; + offset.y = 45.0f + g_regHIO.mChild->mFloatRegs[8]; + offset.z = 30.0f + g_regHIO.mChild->mFloatRegs[9]; mDoMtx_YrotS(*calc_mtx, player->shape_angle.y); cXyz offsetOut; MtxPosition(&offset, &offsetOut); @@ -1134,8 +1134,8 @@ BOOL daArrow_c::_execute() { mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); if (mpSparkleEmitter) { - if (field_0x608) { - f32 scale = field_0x608*2.0f; + if (mSparkleTimer != 0) { + f32 scale = mSparkleTimer*2.0f; if (scale > 7.0f) { scale = 7.0f; } @@ -1223,7 +1223,7 @@ s32 daArrow_c::_create() { checkCreater(); - if (mbShotByZelda) { + if (mbSetByZelda) { mArrowType = TYPE_LIGHT; } else { setTypeByPlayer(); @@ -1248,37 +1248,34 @@ s32 daArrow_c::_create() { return createInit() ? 4 : 5; } -/* 800D7A38-800D7DB4 .text __ct__9daArrow_cFv */ -daArrow_c::daArrow_c() : mPtclFollowCb(0, 0) {} - /* 800D81D0-800D8200 .text _delete__9daArrow_cFv */ BOOL daArrow_c::_delete() { - mPtclFollowCb.end(); + mBlurFollowCb.end(); return TRUE; } /* 800D8200-800D8220 .text daArrowCreate__FPv */ -s32 daArrowCreate(void* i_this) { - return ((daArrow_c*)i_this)->_create(); +static s32 daArrowCreate(void* i_this) { + return static_cast(i_this)->_create(); } /* 800D8220-800D8240 .text daArrowDelete__FPv */ -BOOL daArrowDelete(void* i_this) { - return ((daArrow_c*)i_this)->_delete(); +static BOOL daArrowDelete(void* i_this) { + return static_cast(i_this)->_delete(); } /* 800D8240-800D8260 .text daArrowExecute__FPv */ -BOOL daArrowExecute(void* i_this) { - return ((daArrow_c*)i_this)->_execute(); +static BOOL daArrowExecute(void* i_this) { + return static_cast(i_this)->_execute(); } /* 800D8260-800D8280 .text daArrowDraw__FPv */ -BOOL daArrowDraw(void* i_this) { - return ((daArrow_c*)i_this)->_draw(); +static BOOL daArrowDraw(void* i_this) { + return static_cast(i_this)->_draw(); } /* 800D8280-800D8288 .text daArrowIsDelete__FPv */ -BOOL daArrowIsDelete(void* i_this) { +static BOOL daArrowIsDelete(void* i_this) { return TRUE; } diff --git a/src/d/actor/d_a_item.cpp b/src/d/actor/d_a_item.cpp index d76cf67ef..c7e97cbec 100644 --- a/src/d/actor/d_a_item.cpp +++ b/src/d/actor/d_a_item.cpp @@ -415,7 +415,7 @@ void daItem_c::execWaitGetDemoDirection() { if (mEvtInfo.checkCommandItem()) { mCurState = STATE_MAIN_GET_DEMO; - if (mDemoItemBsPcId != -1) { + if (mDemoItemBsPcId != fpcM_ERROR_PROCESS_ID_e) { dComIfGp_event_setItemPartnerId(mDemoItemBsPcId); } } else { diff --git a/src/d/actor/d_a_obj_monument.cpp b/src/d/actor/d_a_obj_monument.cpp index bd25e8099..942ab0c27 100644 --- a/src/d/actor/d_a_obj_monument.cpp +++ b/src/d/actor/d_a_obj_monument.cpp @@ -20,17 +20,17 @@ namespace daObjMonument { TWO_e, }; - struct L_attr_entry { + struct Attr_c { /* 0x00 */ s16 mModelId; /* 0x01 */ s16 mBgWId; }; - static L_attr_entry L_attr[2] = { + static Attr_c L_attr[2] = { { 0x04, 0x08 }, { 0x05, 0x09 }, }; - inline const L_attr_entry & attr(Type_e type) { return L_attr[type]; } + inline const Attr_c & attr(Type_e type) { return L_attr[type]; } } class Act_c : fopAc_ac_c { diff --git a/src/d/actor/d_a_obj_movebox.cpp b/src/d/actor/d_a_obj_movebox.cpp index 2c2c1100c..200779451 100644 --- a/src/d/actor/d_a_obj_movebox.cpp +++ b/src/d/actor/d_a_obj_movebox.cpp @@ -1451,7 +1451,7 @@ namespace daObjMovebox { } init_mtx(); - m6BC = 0; + mbRollCrash = FALSE; mode_wait_init(); return TRUE; } @@ -1514,7 +1514,7 @@ namespace daObjMovebox { int r30 = -1; bool r29 = true; - if (m64A && cLib_checkBit(mBgc.mStateFlags, Bgc_c::BgcState_UNK01) && (mType != TYPE_BLACK_BOX_WITH_MKIE || mChildPID == -1)) { + if (m64A && cLib_checkBit(mBgc.mStateFlags, Bgc_c::BgcState_UNK01) && (mType != TYPE_BLACK_BOX_WITH_MKIE || mChildPID == fpcM_ERROR_PROCESS_ID_e)) { BOOL temp = cLib_checkBit(mPPLabel, dBgW::PP_UNK2_e); BOOL r3 = cLib_checkBit(mPPLabel, dBgW::PP_UNK4_e); s16 r0; @@ -1880,7 +1880,7 @@ namespace daObjMovebox { /* 00003E04-000040D0 .text Execute__Q212daObjMovebox5Act_cFPPA3_A4_f */ BOOL Act_c::Execute(Mtx** pMtx) { - if (mCyl.ChkTgHit() || m6BC != 0) { + if (mCyl.ChkTgHit() || mbRollCrash) { make_item(); eff_break(); sound_break(); diff --git a/src/d/actor/d_a_obj_paper.cpp b/src/d/actor/d_a_obj_paper.cpp index dc6720214..9a6cb7b4a 100644 --- a/src/d/actor/d_a_obj_paper.cpp +++ b/src/d/actor/d_a_obj_paper.cpp @@ -33,7 +33,7 @@ namespace daObjPaper { Piwa_e, }; - struct L_attr_entry { + struct Attr_c { /* 0x00 */ char* mResName; /* 0x04 */ s32 mHeapSize; /* 0x06 */ s16 mModelId; @@ -50,13 +50,13 @@ namespace daObjPaper { /* 0x16 */ s16 mColCylinderHeight; }; - static const L_attr_entry L_attr[3] = { + static const Attr_c L_attr[3] = { { "Opaper", 0x04C0, 3, 0x00, 0x28, 0x28, 0x00, 0x1D, 0x1E, 0x01, 0x00, 0x00 }, { "Ppos", 0x04C0, 3, 0x00, 0x32, 0x3C, 0x00, 0x1F, 0x20, 0x00, 0x00, 0x00 }, { "Piwa", 0x04C0, 3, 0x3C, 0x82, 0x50, 0x3C, 0x1D, 0x1E, 0x00, 0x37, 0x73 } }; - inline const L_attr_entry & attr(Type_e type) { return L_attr[type]; } + inline const Attr_c & attr(Type_e type) { return L_attr[type]; } } static const dCcD_SrcCyl M_cyl_src = { @@ -143,6 +143,7 @@ namespace daObjPaper { PRM_TYPE_S = 0x10, }; + u32 prm_get_msgNo() const { return daObj::PrmAbstract(this, PRM_MSG_NO_W, PRM_MSG_NO_S); } Type_e prm_get_type() const { return (Type_e)daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S); } }; @@ -249,8 +250,7 @@ namespace daObjPaper { /* 000007A4-00000820 .text mode_talk0__Q210daObjPaper5Act_cFv */ void daObjPaper::Act_c::mode_talk0() { if (mMsgId == fpcM_ERROR_PROCESS_ID_e && dComIfGp_checkCameraAttentionStatus(dComIfGp_getPlayerCameraID(0), 4)) { - int msgNo = daObj::PrmAbstract(this, PRM_MSG_NO_W, PRM_MSG_NO_S); - mMsgId = fopMsgM_messageSet(msgNo, &mEyePos); + mMsgId = fopMsgM_messageSet(prm_get_msgNo(), &mEyePos); mode_talk1_init(); } diff --git a/src/d/d_s_actor_data_mng.cpp b/src/d/d_s_actor_data_mng.cpp index a3863756f..ca4c15053 100644 --- a/src/d/d_s_actor_data_mng.cpp +++ b/src/d/d_s_actor_data_mng.cpp @@ -15,17 +15,17 @@ dADM_CharTbl::~dADM_CharTbl() { /* 800C2758-800C2844 .text SetData__12dADM_CharTblFUlUlUlUlUlUlUl */ void dADM_CharTbl::SetData(u32 offs, u32 row_num, u32 row_offs, u32 colum_num, u32 colum_offs, u32 dat_size, u32 data) { - char** row = (char**)row_offs; - char** colum = (char**)colum_offs; + /* Nonmatching - regalloc */ + u32* row = (u32*)row_offs; + for (u32 i = 0; i < row_num; i++, row++) + *row += offs; - for (u32 i = 0; i < row_num; i++, row_offs += 4) - *((u32*)row_offs) += offs; - - for (u32 i = 0; i < colum_num; i++, colum_offs += 4) - *((u32*)colum_offs) += offs; + u32* colum = (u32*)colum_offs; + for (u32 i = 0; i < colum_num; i++, colum++) + *colum += offs; JUT_ASSERT(0x39, dat_size == row_num * colum_num); - cDT::Set(row_num, row, colum_num, colum, (u8*)data); + cDT::Set(row_num, (char**)row_offs, colum_num, (char**)colum_offs, (u8*)data); SetUpIndex(); } diff --git a/src/d/d_shop.cpp b/src/d/d_shop.cpp index a6786fff3..b8635b930 100644 --- a/src/d/d_shop.cpp +++ b/src/d/d_shop.cpp @@ -1108,11 +1108,11 @@ BOOL ShopItems_c::Item_ZoomUp(cXyz& pos) { BOOL ShopItems_c::Item_Move() { for (int i = 0; i < mNumItems; i++) { if (i == mSelectedItemIdx) { - if (mItemActorProcessIds[i] != -1) { + if (mItemActorProcessIds[i] != fpcM_ERROR_PROCESS_ID_e) { Item_Select(i); } } else { - if (mItemActorProcessIds[i] != -1) { + if (mItemActorProcessIds[i] != fpcM_ERROR_PROCESS_ID_e) { Item_Wait(i); } } @@ -1227,7 +1227,7 @@ s16 dShop_get_next_select(int param_1, ShopItems_c* shopItems) { if (selectedItemIdx == shopItems->mSelectedItemIdx) { break; } - if (shopItems->mItemActorProcessIds[selectedItemIdx] != -1) { + if (shopItems->mItemActorProcessIds[selectedItemIdx] != fpcM_ERROR_PROCESS_ID_e) { break; } }