From 6aeb7e5aa8579cdfe967c778a648ba5617d3d76c Mon Sep 17 00:00:00 2001 From: Dylan Ascencio Date: Thu, 14 Sep 2023 23:28:30 -0400 Subject: [PATCH] Work on d_a_mozo --- src/d/actor/d_a_mozo.cpp | 369 +++++++++++++++++++++++---------------- 1 file changed, 223 insertions(+), 146 deletions(-) diff --git a/src/d/actor/d_a_mozo.cpp b/src/d/actor/d_a_mozo.cpp index 56d94259c..1492a279a 100644 --- a/src/d/actor/d_a_mozo.cpp +++ b/src/d/actor/d_a_mozo.cpp @@ -3,9 +3,84 @@ // Translation Unit: d_a_mozo.cpp // -#include "d_a_mozo.h" +#include "f_op/f_op_actor_mng.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JUtility/JUTAssert.h" +#include "d/d_com_inf_game.h" +#include "d/d_kankyo.h" +#include "d/d_procname.h" +#include "d/d_cc_d.h" +#include "m_do/m_Do_mtx.h" +#include "m_Do/m_Do_ext.h" #include "dolphin/types.h" + +/*** HIO ***/ +class daMozo_HIO_c { +public: + daMozo_HIO_c(); + ~daMozo_HIO_c(); +}; + +static daMozo_HIO_c l_HIO; + +class daMozo_childHIO_c { +public: + ~daMozo_childHIO_c(); +}; + +class daMozo_FireChildHIO_c { +public: + ~daMozo_FireChildHIO_c(); +}; + +class daMozo_BeamChildHIO_c { +public: + ~daMozo_BeamChildHIO_c(); +}; + +/*** Actor ***/ +class daMozo_c : public fopAc_ac_c { +public: + s32 _create(); + bool _delete(); + bool _draw(); + bool _execute(); + void anime_proc(); + void checkRange(int); + s32 CreateHeap(); + s32 CreateInit(); + void event_move(); + void getBeamActor(u32); + void search_beam_proc(); + void search_beam_proc_init(); + void search_fire_proc(); + void search_fire_proc_init(); + void set_mtx(); + void setAnm(int, float); + void towait_proc(); + void towait_proc_init(); + void wait_proc(); + void wait_proc_init(); + + typedef void(daMozo_c::*proc_t)(void); + proc_t mCurrentProc; + request_of_phase_process_class mPhs; + + mDoExt_McaMorf* mAnimMorf; + + mDoExt_brkAnm mBrkAnm; + J3DAnmTevRegKey* m_brk; + + mDoExt_btkAnm mBtkAnm; + J3DAnmTextureSRTKey* m_btk; + + // ... + + dCcD_Stts mColStatus; + dCcD_Cps mCapsuleCol; +}; + /* 000000EC-000001D0 .text __ct__12daMozo_HIO_cFv */ daMozo_HIO_c::daMozo_HIO_c() { /* Nonmatching */ @@ -42,18 +117,53 @@ void daMozo_nodeCallBack(J3DNode*, int) { } /* 0000078C-000007AC .text CheckCreateHeap__FP10fopAc_ac_c */ -void CheckCreateHeap(fopAc_ac_c*) { - /* Nonmatching */ +s32 CheckCreateHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); } /* 000007AC-00000A24 .text CreateHeap__8daMozo_cFv */ -void daMozo_c::CreateHeap() { +s32 daMozo_c::CreateHeap() { /* Nonmatching */ + J3DModelData* mdlData = (J3DModelData*)dComIfG_getObjectRes("Mozo", 9); + + mDoExt_McaMorf* newMorf = new mDoExt_McaMorf( + mdlData, + 0, + 0, + static_cast(dComIfG_getObjectRes("Mozo", 6)), + 2, + 1.0f, + 0, + -1, + 0, + 0, + 0, + 0x11020203 + ); + + mAnimMorf = newMorf; + + m_brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Mozo", 0x0C); + JUT_ASSERT(0x16A, m_brk != 0); + + m_btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Mozo", 0x0F); + JUT_ASSERT(0x16D, m_btk != 0); + + int brkInitResult = mBrkAnm.init(mdlData, m_brk, true, 0, 1.0f, 0, -1, false, 0); + int btkInitResult = mBtkAnm.init(mdlData, m_btk, true, 0, 1.0f, 0, -1, false, 0); + + return mdlData != 0 && mAnimMorf != 0 && mAnimMorf->getModel() != 0 && brkInitResult != 0 && btkInitResult != 0; } /* 00000A24-00000AAC .text set_mtx__8daMozo_cFv */ void daMozo_c::set_mtx() { - /* Nonmatching */ + J3DModel* mdl = mAnimMorf->getModel(); + mdl->setBaseScale(mScale); + + mDoMtx_stack_c::transS(getPosition()); + mDoMtx_stack_c::YrotM(getAngle().y); + + mdl->i_setBaseTRMtx(mDoMtx_stack_c::get()); } /* 00000AAC-00000C38 .text anime_proc__8daMozo_cFv */ @@ -112,22 +222,75 @@ void daMozo_c::setAnm(int, float) { } /* 00001F70-00002228 .text CreateInit__8daMozo_cFv */ -void daMozo_c::CreateInit() { +s32 daMozo_c::CreateInit() { /* Nonmatching */ + J3DModelData* mdlData = mAnimMorf->getModel()->getModelData(); + + int param = mBase.mParameters * 0xFF; + if (param == 0xFF) { + param = 0; + } + + int a = 2; + if (param < 3) { + a = param; + } + + //m0376 = a; + + mAnimMorf->getModel()->setUserArea(this); + for (int i = 0; i < mdlData->getJointNum(); i++) { + if (i == 2) { + mdlData->getJointNodePointer(2)->setCallBack((J3DNodeCallBack)daMozo_nodeCallBack); + } + } + + //mQuatRotation = ZeroQuat; + + fopAcM_setCullSizeBox(this, -1000.f, -1000.f, -1000.f, 1000.0f, 1000.0f, 1000.0f); + mCullMtx = mAnimMorf->getModel()->getBaseTRMtx(); + + //m02F4 = getPosition(); + //m0300 = getPosition(); + + //if () + + set_mtx(); + mAnimMorf->calc(); + wait_proc_init(); + + return cPhs_COMPLEATE_e; } /* 00002228-000023B0 .text _create__8daMozo_cFv */ -void daMozo_c::_create() { +s32 daMozo_c::_create() { /* Nonmatching */ + fopAcM_SetupActor(this, daMozo_c); + + s32 result = dComIfG_resLoad(&mPhs, "Mozo"); + + if (result == cPhs_COMPLEATE_e) { + s32 solidHeapResult = fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckCreateHeap, 0x1AA0); + + if (solidHeapResult & 0xFF == 0) { + result = cPhs_ERROR_e; + } + else { + result = CreateInit(); + _execute(); + } + } + + return result; } /* 000023B0-0000242C .text _delete__8daMozo_cFv */ -void daMozo_c::_delete() { +bool daMozo_c::_delete() { /* Nonmatching */ } /* 0000242C-00002498 .text getBeamActor__8daMozo_cFUi */ -void daMozo_c::getBeamActor(unsigned int) { +void daMozo_c::getBeamActor(u32) { /* Nonmatching */ } @@ -137,38 +300,53 @@ void daMozo_c::event_move() { } /* 00002588-000025DC .text _execute__8daMozo_cFv */ -void daMozo_c::_execute() { - /* Nonmatching */ +bool daMozo_c::_execute() { + mAnimMorf->calc(); + + (this->*mCurrentProc)(); + event_move(); + set_mtx(); + + return true; } /* 000025DC-0000267C .text _draw__8daMozo_cFv */ -void daMozo_c::_draw() { +bool daMozo_c::_draw() { /* Nonmatching */ + J3DModelData* mdlData = mAnimMorf->getModel()->getModelData(); + g_env_light.settingTevStruct(TEV_TYPE_BG0, getPositionP(), &mTevStr); + g_env_light.setLightTevColorType(mAnimMorf->getModel(), &mTevStr); + + mBrkAnm.entry(mdlData); + mBtkAnm.entry(mdlData); + mAnimMorf->entryDL(); + + return true; } /* 0000267C-000026A0 .text daMozo_Draw__FP8daMozo_c */ -void daMozo_Draw(daMozo_c*) { - /* Nonmatching */ +s32 daMozo_Draw(daMozo_c* i_this) { + return i_this->_draw(); } /* 000026A0-000026C4 .text daMozo_Execute__FP8daMozo_c */ -void daMozo_Execute(daMozo_c*) { - /* Nonmatching */ +s32 daMozo_Execute(daMozo_c* i_this) { + return i_this->_execute(); } /* 000026C4-000026CC .text daMozo_IsDelete__FP8daMozo_c */ -void daMozo_IsDelete(daMozo_c*) { - /* Nonmatching */ +s32 daMozo_IsDelete(daMozo_c*) { + return TRUE; } /* 000026CC-000026F0 .text daMozo_Delete__FP8daMozo_c */ -void daMozo_Delete(daMozo_c*) { - /* Nonmatching */ +s32 daMozo_Delete(daMozo_c* i_this) { + return i_this->_delete(); } /* 000026F0-00002710 .text daMozo_Create__FP10fopAc_ac_c */ -void daMozo_Create(fopAc_ac_c*) { - /* Nonmatching */ +s32 daMozo_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->_create(); } /* 00002710-000027AC .text __dt__12daMozo_HIO_cFv */ @@ -176,128 +354,27 @@ daMozo_HIO_c::~daMozo_HIO_c() { /* Nonmatching */ } -/* 000027E8-000027F0 .text @280@__dt__8dCcD_CpsFv */ -void @280@__dt__8dCcD_CpsFv { - /* Nonmatching */ -} - -/* 000027F0-000027F8 .text @248@__dt__8dCcD_CpsFv */ -void @248@__dt__8dCcD_CpsFv { - /* Nonmatching */ -} - -/* 000027F8-00002834 .text __dt__4cXyzFv */ -cXyz::~cXyz() { - /* Nonmatching */ -} - -/* 00002834-00002914 .text __dt__8dCcD_CpsFv */ -dCcD_Cps::~dCcD_Cps() { - /* Nonmatching */ -} - -/* 00002914-00002924 .text GetShapeAttr__8dCcD_CpsFv */ -void dCcD_Cps::GetShapeAttr() { - /* Nonmatching */ -} - -/* 00002924-00002980 .text __dt__14cCcD_ShapeAttrFv */ -cCcD_ShapeAttr::~cCcD_ShapeAttr() { - /* Nonmatching */ -} - -/* 00002980-00002988 .text CrossAtTg__12cCcD_CpsAttrCFRC12cCcD_AabAttrP4cXyz */ -void cCcD_CpsAttr::CrossAtTg(const cCcD_AabAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 00002988-00002990 .text CrossAtTg__12cCcD_CpsAttrCFRC12cCcD_PntAttrP4cXyz */ -void cCcD_CpsAttr::CrossAtTg(const cCcD_PntAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 00002990-000029C8 .text CrossAtTg__12cCcD_CpsAttrCFRC14cCcD_ShapeAttrP4cXyz */ -void cCcD_CpsAttr::CrossAtTg(const cCcD_ShapeAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 000029C8-000029D0 .text CrossCo__12cCcD_CpsAttrCFRC12cCcD_AabAttrPf */ -void cCcD_CpsAttr::CrossCo(const cCcD_AabAttr&, float*) const { - /* Nonmatching */ -} - -/* 000029D0-000029D8 .text CrossCo__12cCcD_CpsAttrCFRC12cCcD_TriAttrPf */ -void cCcD_CpsAttr::CrossCo(const cCcD_TriAttr&, float*) const { - /* Nonmatching */ -} - -/* 000029D8-000029E0 .text CrossCo__12cCcD_CpsAttrCFRC12cCcD_PntAttrPf */ -void cCcD_CpsAttr::CrossCo(const cCcD_PntAttr&, float*) const { - /* Nonmatching */ -} - -/* 000029E0-00002A18 .text CrossCo__12cCcD_CpsAttrCFRC14cCcD_ShapeAttrPf */ -void cCcD_CpsAttr::CrossCo(const cCcD_ShapeAttr&, float*) const { - /* Nonmatching */ -} - -/* 00002A18-00002A24 .text GetCoCP__14cCcD_ShapeAttrFv */ -void cCcD_ShapeAttr::GetCoCP() { - /* Nonmatching */ -} - -/* 00002A24-00002A30 .text GetCoCP__14cCcD_ShapeAttrCFv */ -void cCcD_ShapeAttr::GetCoCP() const { - /* Nonmatching */ -} - -/* 00002A30-00002A34 .text GetGObjInf__12cCcD_GObjInfCFv */ -void cCcD_GObjInf::GetGObjInf() const { - /* Nonmatching */ -} - -/* 00002A34-00002A3C .text GetShapeAttr__8cCcD_ObjCFv */ -void cCcD_Obj::GetShapeAttr() const { - /* Nonmatching */ -} - -/* 00002A3C-00002A44 .text CrossAtTg__14cCcD_ShapeAttrCFRC14cCcD_ShapeAttrP4cXyz */ -void cCcD_ShapeAttr::CrossAtTg(const cCcD_ShapeAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 00002A44-00002A4C .text CrossCo__14cCcD_ShapeAttrCFRC14cCcD_ShapeAttrPf */ -void cCcD_ShapeAttr::CrossCo(const cCcD_ShapeAttr&, float*) const { - /* Nonmatching */ -} - -/* 00002A4C-00002AA8 .text __dt__8cM3dGCpsFv */ -cM3dGCps::~cM3dGCps() { - /* Nonmatching */ -} - -/* 00002AA8-00002AF0 .text __dt__8cM3dGLinFv */ -cM3dGLin::~cM3dGLin() { - /* Nonmatching */ -} - -/* 00002AF0-00002B38 .text __dt__8cM3dGAabFv */ -cM3dGAab::~cM3dGAab() { - /* Nonmatching */ -} - -/* 00002B38-00002B94 .text __dt__13mDoExt_btkAnmFv */ -mDoExt_btkAnm::~mDoExt_btkAnm() { - /* Nonmatching */ -} - -/* 00002B94-00002BF0 .text __dt__13mDoExt_brkAnmFv */ -mDoExt_brkAnm::~mDoExt_brkAnm() { - /* Nonmatching */ -} - -/* 00002BF0-00002C38 .text __dt__14mDoExt_baseAnmFv */ -mDoExt_baseAnm::~mDoExt_baseAnm() { - /* Nonmatching */ -} +static actor_method_class l_daMozo_Method = { + (process_method_func)daMozo_Create, + (process_method_func)daMozo_Delete, + (process_method_func)daMozo_Execute, + (process_method_func)daMozo_IsDelete, + (process_method_func)daMozo_Draw, +}; +extern actor_process_profile_definition g_profile_MOZO = { + fpcLy_CURRENT_e, + 7, + fpcPi_CURRENT_e, + PROC_MOZO, + &g_fpcLf_Method.mBase, + sizeof(daMozo_c), + 0, + 0, + &g_fopAc_Method.base, + 0x00D1, + &l_daMozo_Method, + 0x00040100, + fopAc_ACTOR_e, + fopAc_CULLBOX_CUSTOM_e, +};