From 14f53cdf56ad3b3d616ac0295c7d6c3d14e84b3e Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 6 May 2024 12:34:10 -0400 Subject: [PATCH] document a couple pedestal member names --- include/d/actor/d_a_pedestal.h | 22 ++++--- include/d/d_particle_name.h | 1 + src/d/actor/d_a_pedestal.cpp | 112 +++++++++++++++------------------ 3 files changed, 66 insertions(+), 69 deletions(-) diff --git a/include/d/actor/d_a_pedestal.h b/include/d/actor/d_a_pedestal.h index 7d8214537..5089a5c70 100644 --- a/include/d/actor/d_a_pedestal.h +++ b/include/d/actor/d_a_pedestal.h @@ -16,14 +16,12 @@ namespace daPedestal { void execute(JPABaseEmitter*); void end(); - void makeEmitter(unsigned short, const cXyz*, const csXyz*, const cXyz*); + void makeEmitter(u16, const cXyz*, const csXyz*, const cXyz*); JPABaseEmitter* getEmitter() { return mpEmitter; } void setAngle(const csXyz* angle) { mpAngle = angle; } void setPos(const cXyz* pos) { mpPos = pos; } - void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, signed char) { - mpEmitter = emitter; - } + void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) { mpEmitter = emitter; } private: /* 0x04 */ JPABaseEmitter* mpEmitter; @@ -33,6 +31,12 @@ namespace daPedestal { class daPds_c : public fopAc_ac_c { public: + enum ActionStatus { + ACTION_STARTING = 0, + ACTION_ONGOING = 1, + ACTION_ENDING = -1, + }; + typedef int (daPds_c::* ActionFunc_t)(void*); BOOL _delete(); @@ -61,17 +65,17 @@ namespace daPedestal { static const char m_arcname[]; public: - /* 0x290 */ request_of_phase_process_class mPhs; + /* 0x290 */ request_of_phase_process_class mPhase; /* 0x298 */ J3DModel* mpModel; /* 0x29C */ mDoExt_brkAnm mBrk; /* 0x2B4 */ Mtx mMtx; /* 0x2E4 */ dBgW* mpBgW; - /* 0x2E8 */ daPds_infiniteEcallBack_c mInfiniteEcallBack; + /* 0x2E8 */ daPds_infiniteEcallBack_c mOctagonGlowCb; /* 0x2F8 */ ActionFunc_t mAction; - /* 0x304 */ f32 unk304; + /* 0x304 */ f32 mTargetYPos; /* 0x308 */ f32 unk308; - /* 0x30C */ s8 unk30C; - /* 0x30D */ u8 mParam; + /* 0x30C */ s8 mActionStatus; + /* 0x30D */ u8 mType; /* 0x30E */ u8 unk30E; /* 0x30F */ s8 unk30F; /* 0x310 */ s16 unk310; diff --git a/include/d/d_particle_name.h b/include/d/d_particle_name.h index 6fc899c94..6fc713fa8 100644 --- a/include/d/d_particle_name.h +++ b/include/d/d_particle_name.h @@ -16,6 +16,7 @@ namespace dPa_name { ID_COMMON_LIGHT_EXPLOSION = 0x272, ID_COMMON_STARS_SPIN = 0x27A, ID_COMMON_STARS_BLOW = 0x27B, + ID_PEDESTAL_OCTAGON_GLOW = 0x826D, ID_WARPFOUT_WARP4 = 0x830e, }; diff --git a/src/d/actor/d_a_pedestal.cpp b/src/d/actor/d_a_pedestal.cpp index cb02c1760..b959044a6 100644 --- a/src/d/actor/d_a_pedestal.cpp +++ b/src/d/actor/d_a_pedestal.cpp @@ -13,30 +13,29 @@ static f32 dummy2[3] = {1.0f, 1.0f, 1.0f}; static u8 dummy3[4] = {0x02, 0x00, 0x02, 0x01}; static f64 dummy4[2] = {3.0, 0.5}; -const char daPedestal::daPds_c::m_arcname[] = "Hdai1"; +namespace daPedestal { + +const char daPds_c::m_arcname[] = "Hdai1"; /* 00000078-000000DC .text _delete__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::_delete() { +BOOL daPds_c::_delete() { if (heap != NULL) { dComIfG_Bgsp()->Release(mpBgW); } - mInfiniteEcallBack.end(); - dComIfG_resDelete(&mPhs, m_arcname); + mOctagonGlowCb.end(); + dComIfG_resDelete(&mPhase, m_arcname); return TRUE; } -namespace daPedestal { /* 000000DC-000000FC .text CheckCreateHeap__10daPedestalFP10fopAc_ac_c */ static BOOL CheckCreateHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->CreateHeap(); } -} // namespace daPedestal - /* 000000FC-00000244 .text CreateHeap__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::CreateHeap() { +BOOL daPds_c::CreateHeap() { J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname, HDAI1_BDL_HDAI1); JUT_ASSERT(0xC1, modelData != 0); @@ -58,22 +57,21 @@ BOOL daPedestal::daPds_c::CreateHeap() { return FALSE; } - - /* 00000244-00000380 .text CreateInit__Q210daPedestal7daPds_cFv */ -void daPedestal::daPds_c::CreateInit() { +void daPds_c::CreateInit() { static char* l_os_name[] = { "Os", "Os1", "Os2" }; - mParam = fopAcM_GetParam(this) & 0xFF; + mType = fopAcM_GetParam(this) & 0xFF; fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); fopAcM_setCullSizeBox(this, -150.0f, -20.0f, -150.0f, 150.0f, 250.0f, 150.0f); - if (!mParam) { + if (mType == 0) { + // Type 0: A pedestal that a npc_os starts on in its original room. if (wakeupCheck()) { if (subtype <= 2) { fopAc_ac_c* pActor = fopAcM_searchFromName(l_os_name[subtype], 0, 0); @@ -85,7 +83,8 @@ void daPedestal::daPds_c::CreateInit() { current.pos.y -= 240.0f; } - } else if (mParam == 1 && finishCheck()) { + } else if (mType == 1 && finishCheck()) { + // Type 1: A pedestal that a npc_os ends on in the central room. current.pos.y += 240.0f; } @@ -95,10 +94,10 @@ void daPedestal::daPds_c::CreateInit() { } /* 00000380-00000474 .text _create__Q210daPedestal7daPds_cFv */ -s32 daPedestal::daPds_c::_create() { - fopAcM_SetupActor(this, daPedestal::daPds_c); +s32 daPds_c::_create() { + fopAcM_SetupActor(this, daPds_c); - s32 phase_state = dComIfG_resLoad(&mPhs, m_arcname); + s32 phase_state = dComIfG_resLoad(&mPhase, m_arcname); if (phase_state == cPhs_COMPLEATE_e) { if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x2000)) { @@ -113,7 +112,7 @@ s32 daPedestal::daPds_c::_create() { } /* 00000474-0000052C .text getMyStaffId__Q210daPedestal7daPds_cFv */ -int daPedestal::daPds_c::getMyStaffId() { +int daPds_c::getMyStaffId() { if (subtype == 0) { return dComIfGp_evmng_getMyStaffId("Hdai1"); } else if (subtype == 1) { @@ -126,7 +125,7 @@ int daPedestal::daPds_c::getMyStaffId() { } /* 0000052C-000005D8 .text wakeupCheck__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::wakeupCheck() { +BOOL daPds_c::wakeupCheck() { if (subtype == 0) { if (dComIfGs_isEventBit(0x1780)) { return TRUE; @@ -145,7 +144,7 @@ BOOL daPedestal::daPds_c::wakeupCheck() { } /* 000005D8-00000684 .text finishCheck__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::finishCheck() { +BOOL daPds_c::finishCheck() { if (subtype == 0) { if (dComIfGs_isEventBit(0x1710)) { return TRUE; @@ -164,14 +163,14 @@ BOOL daPedestal::daPds_c::finishCheck() { } /* 00000684-0000073C .text setAction__Q210daPedestal7daPds_cFMQ210daPedestal7daPds_cFPCvPvPv_iPv */ -BOOL daPedestal::daPds_c::setAction(ActionFunc_t action, void* param_1) { +BOOL daPds_c::setAction(ActionFunc_t action, void* param_1) { if (mAction != NULL) { - unk30C = 0xFF; + mActionStatus = ACTION_ENDING; (this->*mAction)(param_1); } mAction = action; - unk30C = 0; + mActionStatus = ACTION_STARTING; unk310 = 0; unk312 = 0; unk314 = 0; @@ -183,7 +182,7 @@ BOOL daPedestal::daPds_c::setAction(ActionFunc_t action, void* param_1) { } /* 0000073C-000007C4 .text action__Q210daPedestal7daPds_cFPv */ -void daPedestal::daPds_c::action(void* param_1) { +void daPds_c::action(void* param_1) { if (!mAction) { setAction(&waitAction, NULL); } @@ -192,16 +191,14 @@ void daPedestal::daPds_c::action(void* param_1) { } /* 000007C4-000007E0 .text waitAction__Q210daPedestal7daPds_cFPv */ -BOOL daPedestal::daPds_c::waitAction(void*) { - if (unk30C == 0) { - unk30C += 1; +BOOL daPds_c::waitAction(void*) { + if (mActionStatus == ACTION_STARTING) { + mActionStatus += 1; // ACTION_ONGOING } return TRUE; } -namespace daPedestal { - typedef void (daPds_c::* eventInitFunc)(int); static eventInitFunc event_init_tbl[] = { daPds_c::initialDefault, @@ -225,10 +222,8 @@ static char* cut_name_tbl[] = { "EFFEND" }; -}; // namespace daPedestal - /* 000007E0-000008E4 .text eventProc__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::eventProc() { +BOOL daPds_c::eventProc() { int staffIdx = getMyStaffId(); if (dComIfGp_event_runCheck()) { @@ -255,15 +250,15 @@ BOOL daPedestal::daPds_c::eventProc() { } /* 000008E4-000008E8 .text initialDefault__Q210daPedestal7daPds_cFi */ -void daPedestal::daPds_c::initialDefault(int) {} +void daPds_c::initialDefault(int) {} /* 000008E8-000008F0 .text actionDefault__Q210daPedestal7daPds_cFi */ -BOOL daPedestal::daPds_c::actionDefault(int) { +BOOL daPds_c::actionDefault(int) { return TRUE; } /* 000008F0-000009A8 .text initialMoveEvent__Q210daPedestal7daPds_cFi */ -void daPedestal::daPds_c::initialMoveEvent(int staffIdx) { +void daPds_c::initialMoveEvent(int staffIdx) { f32* pSpeed = dComIfGp_evmng_getMyFloatP(staffIdx, "Speed"); if (pSpeed) { @@ -274,32 +269,32 @@ void daPedestal::daPds_c::initialMoveEvent(int staffIdx) { f32* pDist = dComIfGp_evmng_getMyFloatP(staffIdx, "Dist"); if (pDist) { - unk304 = current.pos.y + *pDist; + mTargetYPos = current.pos.y + *pDist; } else { - unk304 = current.pos.y; + mTargetYPos = current.pos.y; } } /* 000009A8-00000AEC .text actionMoveEvent__Q210daPedestal7daPds_cFi */ -BOOL daPedestal::daPds_c::actionMoveEvent(int) { +BOOL daPds_c::actionMoveEvent(int) { current.pos.y += speed.y; BOOL ret = FALSE; if (speed.y < 0.0f) { - if (current.pos.y <= unk304) { - current.pos.y = unk304; + if (current.pos.y <= mTargetYPos) { + current.pos.y = mTargetYPos; speed.y = 0.0f; ret = TRUE; } } else if (speed.y > 0.0f) { - if (current.pos.y >= unk304) { - current.pos.y = unk304; + if (current.pos.y >= mTargetYPos) { + current.pos.y = mTargetYPos; speed.y = 0.0f; ret = TRUE; } } else { - current.pos.y = unk304; + current.pos.y = mTargetYPos; ret = TRUE; } @@ -313,19 +308,19 @@ BOOL daPedestal::daPds_c::actionMoveEvent(int) { } /* 00000AEC-00000B40 .text initialEffectSet__Q210daPedestal7daPds_cFi */ -void daPedestal::daPds_c::initialEffectSet(int) { - mInfiniteEcallBack.makeEmitter(0x826DU, ¤t.pos, &shape_angle, NULL); +void daPds_c::initialEffectSet(int) { + mOctagonGlowCb.makeEmitter(dPa_name::ID_PEDESTAL_OCTAGON_GLOW, ¤t.pos, &shape_angle, NULL); initBrkAnm(0, true); } /* 00000B40-00000B80 .text initialEffectEnd__Q210daPedestal7daPds_cFi */ -void daPedestal::daPds_c::initialEffectEnd(int) { - mInfiniteEcallBack.end(); +void daPds_c::initialEffectEnd(int) { + mOctagonGlowCb.end(); initBrkAnm(2, true); } /* 00000B80-00000C10 .text set_mtx__Q210daPedestal7daPds_cFv */ -void daPedestal::daPds_c::set_mtx() { +void daPds_c::set_mtx() { mpModel->setBaseScale(scale); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(current.angle.y); @@ -334,7 +329,7 @@ void daPedestal::daPds_c::set_mtx() { } /* 00000C10-00000D58 .text initBrkAnm__Q210daPedestal7daPds_cFUcb */ -BOOL daPedestal::daPds_c::initBrkAnm(u8 param_1, bool param_2) { +BOOL daPds_c::initBrkAnm(u8 param_1, bool param_2) { struct AnmTableEntry { /* 0x00 */ int loopMode; /* 0x04 */ f32 speed; @@ -354,7 +349,6 @@ BOOL daPedestal::daPds_c::initBrkAnm(u8 param_1, bool param_2) { J3DAnmTevRegKey* a_brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname, HDAI1_BRK_HDAI1); JUT_ASSERT(0x28C, a_brk != 0); - if (mBrk.init(modelData, a_brk, TRUE, brkAnmTbl[param_1].loopMode, brkAnmTbl[param_1].speed, 0, -1, param_2, 0)) { unk30E = param_1; if (brkAnmTbl[param_1].unk_4 < 0) { @@ -370,13 +364,13 @@ BOOL daPedestal::daPds_c::initBrkAnm(u8 param_1, bool param_2) { } /* 00000D58-00000D98 .text playBrkAnm__Q210daPedestal7daPds_cFv */ -void daPedestal::daPds_c::playBrkAnm() { +void daPds_c::playBrkAnm() { unk30F = mBrk.play(); unk308 = mBrk.getFrame(); } /* 00000D98-00000E48 .text _execute__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::_execute() { +BOOL daPds_c::_execute() { playBrkAnm(); if (!eventProc()) { @@ -386,7 +380,7 @@ BOOL daPedestal::daPds_c::_execute() { set_mtx(); mpBgW->Move(); - if (mInfiniteEcallBack.getEmitter() != NULL) { + if (mOctagonGlowCb.getEmitter() != NULL) { fopAcM_seStartCurrent(this, JA_SE_OBJ_ST_DAI_LIGHT, 0); } @@ -394,7 +388,7 @@ BOOL daPedestal::daPds_c::_execute() { } /* 00000E48-00000F10 .text _draw__Q210daPedestal7daPds_cFv */ -BOOL daPedestal::daPds_c::_draw() { +BOOL daPds_c::_draw() { g_env_light.settingTevStruct(TEV_TYPE_BG0, ¤t.pos, &tevStr); g_env_light.setLightTevColorType(mpModel, &tevStr); @@ -411,9 +405,7 @@ BOOL daPedestal::daPds_c::_draw() { return TRUE; } -namespace daPedestal { - -/* 00000F10-00000F30 .text daPedestal::daPds_create__10daPedestalFPv */ +/* 00000F10-00000F30 .text daPds_Create__10daPedestalFPv */ static s32 daPds_Create(void* i_this) { return static_cast(i_this)->_create(); } @@ -462,13 +454,13 @@ void daPds_infiniteEcallBack_c::end() { mpEmitter->setEmitterCallBackPtr(NULL); mpEmitter = NULL; - mpPos = NULL; - mpAngle = NULL; + setPos(NULL); + setAngle(NULL); } } /* 00001044-000010D4 .text makeEmitter__Q210daPedestal25daPds_infiniteEcallBack_cFUsPC4cXyzPC5csXyzPC4cXyz */ -void daPds_infiniteEcallBack_c::makeEmitter(unsigned short particleID, const cXyz* pos, const csXyz* angle, const cXyz* scale) { +void daPds_infiniteEcallBack_c::makeEmitter(u16 particleID, const cXyz* pos, const csXyz* angle, const cXyz* scale) { end(); dComIfGp_particle_set(particleID, pos, angle, scale, 0xFF, this);