From d6711a18c804d90aa4b42aa4a4565c649fddfd30 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Wed, 22 Oct 2025 21:38:51 -0400 Subject: [PATCH] d_a_obj_grz_rock and d_a_obj_h_saku matching (#2749) * matching * h_saku initial work * h_saku matching * PR cleanup * fixed header padding --- configure.py | 4 +- include/d/actor/d_a_obj_grz_rock.h | 28 +- include/d/actor/d_a_obj_h_saku.h | 42 +- src/d/actor/d_a_obj_grz_rock.cpp | 371 +++++-------- src/d/actor/d_a_obj_h_saku.cpp | 837 ++++++++++------------------- 5 files changed, 465 insertions(+), 817 deletions(-) diff --git a/configure.py b/configure.py index 61907ec6dc5..8ceb326690f 100755 --- a/configure.py +++ b/configure.py @@ -2023,8 +2023,8 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gra_rock"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_grave_stone"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_groundwater"), - ActorRel(NonMatching, "d_a_obj_grz_rock"), - ActorRel(NonMatching, "d_a_obj_h_saku"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_grz_rock"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_h_saku"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hakai_brl"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hakai_ftr"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hasu2"), diff --git a/include/d/actor/d_a_obj_grz_rock.h b/include/d/actor/d_a_obj_grz_rock.h index b87077315f2..515481e3d4d 100644 --- a/include/d/actor/d_a_obj_grz_rock.h +++ b/include/d/actor/d_a_obj_grz_rock.h @@ -1,7 +1,8 @@ #ifndef D_A_OBJ_GRZ_ROCK_H #define D_A_OBJ_GRZ_ROCK_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_acch.h" +#include "d/d_bg_s_movebg_actor.h" /** * @ingroup actors-objects @@ -10,26 +11,31 @@ * * @details * - */ -class daObjGrzRock_c : public fopAc_ac_c { +*/ + +class daObjGrzRock_c : public dBgS_MoveBgActor { public: /* 80C14BD8 */ void setBaseMtx(); /* 80C14C54 */ void setEnvTevColor(); /* 80C14CB0 */ void setRoomNo(); /* 80C14CF0 */ void setPrtcl(); - /* 80C14DA0 */ void Create(); - /* 80C14EE0 */ void CreateHeap(); - /* 80C14F50 */ void create(); - /* 80C1514C */ void Execute(Mtx**); - /* 80C151A4 */ void Draw(); - /* 80C15248 */ void Delete(); + /* 80C14DA0 */ int Create(); + /* 80C14EE0 */ int CreateHeap(); + /* 80C14F50 */ cPhs__Step create(); + /* 80C1514C */ int Execute(Mtx**); + /* 80C151A4 */ int Draw(); + /* 80C15248 */ int Delete(); void setSmashFlag(u8 i_smashFlag) { mSmashFlag = i_smashFlag; } private: - /* 0x568 */ u8 field_0x568[0x801 - 0x568]; + /* 0x568 */ request_of_phase_process_class mPhase[1]; + /* 0x5A0 */ J3DModel* mpModel; + /* 0x5AC */ dBgS_ObjAcch mBgc; + /* 0x784 */ dBgS_AcchCir mAcchCir; + /* 0x7C4 */ cBgS_GndChk mGndChk; + /* 0x800 */ u8 field_0x800; /* 0x801 */ u8 mSmashFlag; - /* 0x802 */ u8 field_0x802[0x804 - 0x802]; }; STATIC_ASSERT(sizeof(daObjGrzRock_c) == 0x804); diff --git a/include/d/actor/d_a_obj_h_saku.h b/include/d/actor/d_a_obj_h_saku.h index fdce5eae82e..72a48aad2c2 100644 --- a/include/d/actor/d_a_obj_h_saku.h +++ b/include/d/actor/d_a_obj_h_saku.h @@ -1,6 +1,9 @@ #ifndef D_A_OBJ_H_SAKU_H #define D_A_OBJ_H_SAKU_H +#include "d/d_bg_s_acch.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -10,23 +13,42 @@ * * @details * - */ -class daObjH_Saku_c : public fopAc_ac_c { +*/ + +class daObjH_Saku_c : public dBgS_MoveBgActor { public: /* 80C1552C */ void BreakSet(); - /* 80C15810 */ void SpeedSet(cXyz*, cXyz*, f32); + /* 80C15810 */ u8 SpeedSet(cXyz*, cXyz*, f32); /* 80C15A4C */ void Action(); /* 80C15E00 */ void initBaseMtx(); /* 80C15E44 */ void setBaseMtx(); - /* 80C161E8 */ void CreateHeap(); - /* 80C1629C */ void Create(); - /* 80C162F4 */ void Execute(Mtx**); - /* 80C16340 */ void Draw(); - /* 80C1641C */ void Delete(); + /* 80C161E8 */ inline int CreateHeap(); + /* 80C1629C */ inline int Create(); + /* 80C162F4 */ inline int Execute(Mtx**); + /* 80C16340 */ inline int Draw(); + /* 80C1641C */ inline int Delete(); + inline cPhs__Step create(); - /* 0x568 */ u8 field_0x568[0x5e0 - 0x568]; + /* 0x5A0 */ u8 field_0x5a0; + /* 0x5A1 */ u8 field_0x5a1; + /* 0x5A4 */ cXyz field_0x5a4; + /* 0x5B0 */ cXyz field_0x5b0; + /* 0x5BC */ csXyz field_0x5bc; + /* 0x5C4 */ f32 field_0x5c4; + /* 0x5C8 */ s16 field_0x5c8; + /* 0x5CA */ csXyz field_0x5ca; + /* 0x5D0 */ csXyz field_0x5d0; + /* 0x5D6 */ csXyz field_0x5d6; + /* 0x5DC */ u8 field_0x5dc; + /* 0x5DD */ u8 field_0x5dd; + /* 0x5DE */ u8 field_0x5de; /* 0x5E0 */ cXyz field_0x5e0; - /* 0x5EC */ u8 field_0x5ec[0x850 - 0x5ec]; + /* 0x5EC */ dCcD_Stts mStts; + /* 0x628 */ J3DModel* field_0x628; + /* 0x62C */ J3DModel* field_0x62c; + /* 0x630 */ request_of_phase_process_class mPhase; + /* 0x638 */ dBgS_AcchCir mAcchCir; + /* 0x678 */ dBgS_ObjAcch mBgc; }; STATIC_ASSERT(sizeof(daObjH_Saku_c) == 0x850); diff --git a/src/d/actor/d_a_obj_grz_rock.cpp b/src/d/actor/d_a_obj_grz_rock.cpp index 66f03b155fa..9651222d094 100644 --- a/src/d/actor/d_a_obj_grz_rock.cpp +++ b/src/d/actor/d_a_obj_grz_rock.cpp @@ -6,169 +6,176 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_grz_rock.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" void setBaseMtx__14daObjGrzRock_cFv(); -extern "C" void setEnvTevColor__14daObjGrzRock_cFv(); -extern "C" void setRoomNo__14daObjGrzRock_cFv(); -extern "C" void setPrtcl__14daObjGrzRock_cFv(); -extern "C" void Create__14daObjGrzRock_cFv(); -extern "C" void CreateHeap__14daObjGrzRock_cFv(); -extern "C" void create__14daObjGrzRock_cFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void Execute__14daObjGrzRock_cFPPA3_A4_f(); -extern "C" void Draw__14daObjGrzRock_cFv(); -extern "C" void Delete__14daObjGrzRock_cFv(); -extern "C" static void daObjGrzRock_Draw__FP14daObjGrzRock_c(); -extern "C" static void daObjGrzRock_Execute__FP14daObjGrzRock_c(); -extern "C" static bool daObjGrzRock_IsDelete__FP14daObjGrzRock_c(); -extern "C" static void daObjGrzRock_Delete__FP14daObjGrzRock_c(); -extern "C" static void daObjGrzRock_create__FP10fopAc_ac_c(); -extern "C" static void func_80C15348(); -extern "C" static void func_80C15350(); -extern "C" extern char const* const d_a_obj_grz_rock__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; - -// -// Declarations: -// /* 80C14BD8-80C14C54 000078 007C+00 2/2 0/0 0/0 .text setBaseMtx__14daObjGrzRock_cFv */ void daObjGrzRock_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); } -/* 80C14C54-80C14CB0 0000F4 005C+00 1/1 0/0 0/0 .text setEnvTevColor__14daObjGrzRock_cFv - */ +/* 80C14C54-80C14CB0 0000F4 005C+00 1/1 0/0 0/0 .text setEnvTevColor__14daObjGrzRock_cFv */ void daObjGrzRock_c::setEnvTevColor() { - // NONMATCHING + tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(mGndChk); + tevStr.room_no = dComIfG_Bgsp().GetRoomId(mGndChk); } /* 80C14CB0-80C14CF0 000150 0040+00 1/1 0/0 0/0 .text setRoomNo__14daObjGrzRock_cFv */ void daObjGrzRock_c::setRoomNo() { - // NONMATCHING + fopAcM_SetRoomNo(this, dComIfG_Bgsp().GetRoomId(mGndChk)); } -/* ############################################################################################## */ -/* 80C15360-80C1536C 000000 000C+00 1/1 0/0 0/0 .rodata l_prticles_id$3832 */ -SECTION_RODATA static u8 const l_prticles_id[12] = { - 0x89, 0xC2, 0x89, 0xC3, 0x89, 0xC4, 0x89, 0xC5, 0x89, 0xC6, 0x89, 0xC7, -}; -COMPILER_STRIP_GATE(0x80C15360, &l_prticles_id); - -/* 80C1536C-80C15370 00000C 0004+00 0/1 0/0 0/0 .rodata @3849 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3849 = 17.0f / 20.0f; -COMPILER_STRIP_GATE(0x80C1536C, &lit_3849); -#pragma pop - -/* 80C15370-80C15374 000010 0004+00 0/1 0/0 0/0 .rodata @3850 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3850 = 1.0f; -COMPILER_STRIP_GATE(0x80C15370, &lit_3850); -#pragma pop - /* 80C14CF0-80C14DA0 000190 00B0+00 1/1 0/0 0/0 .text setPrtcl__14daObjGrzRock_cFv */ void daObjGrzRock_c::setPrtcl() { - // NONMATCHING -} + static u16 const l_prticles_id[6] = { + dPa_RM(ID_ZI_S_BOMBROCK_FL_BREAK_A), dPa_RM(ID_ZI_S_BOMBROCK_FL_BREAK_B), dPa_RM(ID_ZI_S_BOMBROCK_FL_BREAK_C), + dPa_RM(ID_ZI_S_BOMBROCK_FL_BREAK_D), dPa_RM(ID_ZI_S_BOMBROCK_FL_BREAK_E), dPa_RM(ID_ZI_S_BOMBROCK_FL_BREAK_F), + }; -/* ############################################################################################## */ -/* 80C15374-80C15378 000014 0004+00 1/1 0/0 0/0 .rodata @3886 */ -SECTION_RODATA static u8 const lit_3886[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C15374, &lit_3886); + cXyz i_scale(0.85f, 0.85f, 0.85f); + for (int i = 0; i < 6; i++) { + dComIfGp_particle_set(l_prticles_id[i], ¤t.pos, &tevStr, ¤t.angle, &i_scale); + } +} /* 80C14DA0-80C14EE0 000240 0140+00 1/0 0/0 0/0 .text Create__14daObjGrzRock_cFv */ -void daObjGrzRock_c::Create() { - // NONMATCHING +int daObjGrzRock_c::Create() { + setBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + J3DJoint* joint_p = mpModel->getModelData()->getJointNodePointer(0); + fopAcM_setCullSizeBox(this, joint_p->getMin()->x, joint_p->getMin()->y, joint_p->getMin()->z, joint_p->getMax()->x, joint_p->getMax()->y, joint_p->getMax()->z); + mAcchCir.SetWall(0.0f, 0.0f); + mBgc.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); + mBgc.CrrPos(dComIfG_Bgsp()); + mGndChk = mBgc.m_gnd; + setEnvTevColor(); + setRoomNo(); + return 1; } -/* ############################################################################################## */ -/* 80C15378-80C15378 000018 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C15378 = "grZRock"; -#pragma pop - /* 80C1538C-80C15390 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_grz_rock__stringBase0; +static char* l_arcName = "grZRock"; /* 80C14EE0-80C14F50 000380 0070+00 1/0 0/0 0/0 .text CreateHeap__14daObjGrzRock_cFv */ -void daObjGrzRock_c::CreateHeap() { - // NONMATCHING +int daObjGrzRock_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); + JUT_ASSERT(246, modelData != NULL); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11020084); + if (mpModel == NULL) { + return 0; + } + + return 1; } -/* ############################################################################################## */ -/* 80C15378-80C15378 000018 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C15380 = "grZRock.dzb"; -#pragma pop +/* 80C14F50-80C150DC 0003F0 018C+00 1/1 0/0 0/0 .text create__14daObjGrzRock_cFv */ +cPhs__Step daObjGrzRock_c::create() { + fopAcM_ct(this, daObjGrzRock_c); + + if (dComIfGs_isSwitch((fopAcM_GetParam(this) >> 8) & 0xFF, fopAcM_GetRoomNo(this))) { + return cPhs_ERROR_e; + } + + int dzb_id = 0; + int i = 0; + cPhs__Step phase; + for (; i < 1; i++) { + phase = (cPhs__Step)dComIfG_resLoad(&mPhase[i], l_arcName); + if (phase == cPhs_ERROR_e || phase == cPhs_UNK3_e) { + return cPhs_ERROR_e; + } + + if (phase == cPhs_COMPLEATE_e) { + dzb_id++; + } + } + + if (i == dzb_id) { + dzb_id = dComIfG_getObjctResName2Index(l_arcName, "grZRock.dzb"); + JUT_ASSERT(302, dzb_id != -1); + + phase = (cPhs__Step)MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x1030, NULL); + if (phase == cPhs_ERROR_e) { + return phase; + } + + mSmashFlag = 0; + } + + return phase; +} + +/* 80C1514C-80C151A4 0005EC 0058+00 1/0 0/0 0/0 .text Execute__14daObjGrzRock_cFPPA3_A4_f */ +int daObjGrzRock_c::Execute(Mtx** mtx) { + if (mSmashFlag) { + setPrtcl(); + fopAcM_delete(this); + return 1; + } + + *mtx = &mBgMtx; + setBaseMtx(); + return 1; +} + +/* 80C151A4-80C15248 000644 00A4+00 1/0 0/0 0/0 .text Draw__14daObjGrzRock_cFv */ +int daObjGrzRock_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 80C15248-80C152B4 0006E8 006C+00 1/0 0/0 0/0 .text Delete__14daObjGrzRock_cFv */ +int daObjGrzRock_c::Delete() { + for (int i = 0; i < 1; i++) { + dComIfG_resDelete(&mPhase[i], l_arcName); + } + + if (mpBgW != NULL && mpBgW->ChkUsed()) { + if (dComIfG_Bgsp().Release(mpBgW)) { + OS_REPORT("Release Error\n"); + } + } + + return 1; +} + +/* 80C152B4-80C152E0 000754 002C+00 1/0 0/0 0/0 .text daObjGrzRock_Draw__FP14daObjGrzRock_c */ +static int daObjGrzRock_Draw(daObjGrzRock_c* i_this) { + return i_this->Draw(); +} + +/* 80C152E0-80C15300 000780 0020+00 1/0 0/0 0/0 .text daObjGrzRock_Execute__FP14daObjGrzRock_c */ +static int daObjGrzRock_Execute(daObjGrzRock_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C15300-80C15308 0007A0 0008+00 1/0 0/0 0/0 .text daObjGrzRock_IsDelete__FP14daObjGrzRock_c */ +static int daObjGrzRock_IsDelete(daObjGrzRock_c* i_this) { + return 1; +} + +/* 80C15308-80C15328 0007A8 0020+00 1/0 0/0 0/0 .text daObjGrzRock_Delete__FP14daObjGrzRock_c */ +static int daObjGrzRock_Delete(daObjGrzRock_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C15328-80C15348 0007C8 0020+00 1/0 0/0 0/0 .text daObjGrzRock_create__FP10fopAc_ac_c */ +static int daObjGrzRock_create(fopAc_ac_c* a_this) { + return static_cast(a_this)->create(); +} /* 80C15390-80C153B0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjGrzRock_Method */ static actor_method_class l_daObjGrzRock_Method = { - (process_method_func)daObjGrzRock_create__FP10fopAc_ac_c, - (process_method_func)daObjGrzRock_Delete__FP14daObjGrzRock_c, - (process_method_func)daObjGrzRock_Execute__FP14daObjGrzRock_c, - (process_method_func)daObjGrzRock_IsDelete__FP14daObjGrzRock_c, - (process_method_func)daObjGrzRock_Draw__FP14daObjGrzRock_c, + (process_method_func)daObjGrzRock_create, + (process_method_func)daObjGrzRock_Delete, + (process_method_func)daObjGrzRock_Execute, + (process_method_func)daObjGrzRock_IsDelete, + (process_method_func)daObjGrzRock_Draw, }; /* 80C153B0-80C153E0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GrzRock */ @@ -188,95 +195,3 @@ extern actor_process_profile_definition g_profile_Obj_GrzRock = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C153E0-80C15404 000054 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80C15350, - (void*)NULL, - (void*)NULL, - (void*)func_80C15348, -}; - -/* 80C15404-80C1542C 000078 0028+00 1/1 0/0 0/0 .data __vt__14daObjGrzRock_c */ -SECTION_DATA extern void* __vt__14daObjGrzRock_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__14daObjGrzRock_cFv, - (void*)Create__14daObjGrzRock_cFv, - (void*)Execute__14daObjGrzRock_cFPPA3_A4_f, - (void*)Draw__14daObjGrzRock_cFv, - (void*)Delete__14daObjGrzRock_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C14F50-80C150DC 0003F0 018C+00 1/1 0/0 0/0 .text create__14daObjGrzRock_cFv */ -void daObjGrzRock_c::create() { - // NONMATCHING -} - -/* 80C150DC-80C1514C 00057C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80C1514C-80C151A4 0005EC 0058+00 1/0 0/0 0/0 .text Execute__14daObjGrzRock_cFPPA3_A4_f - */ -void daObjGrzRock_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 80C151A4-80C15248 000644 00A4+00 1/0 0/0 0/0 .text Draw__14daObjGrzRock_cFv */ -void daObjGrzRock_c::Draw() { - // NONMATCHING -} - -/* 80C15248-80C152B4 0006E8 006C+00 1/0 0/0 0/0 .text Delete__14daObjGrzRock_cFv */ -void daObjGrzRock_c::Delete() { - // NONMATCHING -} - -/* 80C152B4-80C152E0 000754 002C+00 1/0 0/0 0/0 .text daObjGrzRock_Draw__FP14daObjGrzRock_c */ -static void daObjGrzRock_Draw(daObjGrzRock_c* param_0) { - // NONMATCHING -} - -/* 80C152E0-80C15300 000780 0020+00 1/0 0/0 0/0 .text daObjGrzRock_Execute__FP14daObjGrzRock_c */ -static void daObjGrzRock_Execute(daObjGrzRock_c* param_0) { - // NONMATCHING -} - -/* 80C15300-80C15308 0007A0 0008+00 1/0 0/0 0/0 .text daObjGrzRock_IsDelete__FP14daObjGrzRock_c */ -static bool daObjGrzRock_IsDelete(daObjGrzRock_c* param_0) { - return true; -} - -/* 80C15308-80C15328 0007A8 0020+00 1/0 0/0 0/0 .text daObjGrzRock_Delete__FP14daObjGrzRock_c */ -static void daObjGrzRock_Delete(daObjGrzRock_c* param_0) { - // NONMATCHING -} - -/* 80C15328-80C15348 0007C8 0020+00 1/0 0/0 0/0 .text daObjGrzRock_create__FP10fopAc_ac_c - */ -static void daObjGrzRock_create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80C15348-80C15350 0007E8 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80C15348() { - // NONMATCHING -} - -/* 80C15350-80C15358 0007F0 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80C15350() { - // NONMATCHING -} - -/* 80C15378-80C15378 000018 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_h_saku.cpp b/src/d/actor/d_a_obj_h_saku.cpp index bb223d576b2..6af2816193a 100644 --- a/src/d/actor/d_a_obj_h_saku.cpp +++ b/src/d/actor/d_a_obj_h_saku.cpp @@ -6,302 +6,319 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_h_saku.h" -#include "dol2asm.h" +#include "Z2AudioLib/Z2Instances.h" - -// -// Forward References: -// - -extern "C" void BreakSet__13daObjH_Saku_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void SpeedSet__13daObjH_Saku_cFP4cXyzP4cXyzf(); -extern "C" void Action__13daObjH_Saku_cFv(); -extern "C" void initBaseMtx__13daObjH_Saku_cFv(); -extern "C" void setBaseMtx__13daObjH_Saku_cFv(); -extern "C" static void daObjH_Saku_Draw__FP13daObjH_Saku_c(); -extern "C" static void daObjH_Saku_Execute__FP13daObjH_Saku_c(); -extern "C" static bool daObjH_Saku_IsDelete__FP13daObjH_Saku_c(); -extern "C" static void daObjH_Saku_Delete__FP13daObjH_Saku_c(); -extern "C" static void daObjH_Saku_Create__FP10fopAc_ac_c(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void CreateHeap__13daObjH_Saku_cFv(); -extern "C" void Create__13daObjH_Saku_cFv(); -extern "C" void Execute__13daObjH_Saku_cFPPA3_A4_f(); -extern "C" void Draw__13daObjH_Saku_cFv(); -extern "C" void Delete__13daObjH_Saku_cFv(); -extern "C" void __sinit_d_a_obj_h_saku_cpp(); -extern "C" static void func_80C164A4(); -extern "C" static void func_80C164AC(); -extern "C" extern char const* const d_a_obj_h_saku__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void __apl__5csXyzFR5csXyz(); -extern "C" void cM_rndF__Ff(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C164C8-80C164CC 000000 0004+00 6/6 0/0 0/0 .rodata @3703 */ -SECTION_RODATA static f32 const lit_3703 = 240.0f; -COMPILER_STRIP_GATE(0x80C164C8, &lit_3703); - -/* 80C164CC-80C164D0 000004 0004+00 0/4 0/0 0/0 .rodata @3704 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3704[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C164CC, &lit_3704); -#pragma pop - -/* 80C164D0-80C164D4 000008 0004+00 0/3 0/0 0/0 .rodata @3705 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3705 = -30.0f; -COMPILER_STRIP_GATE(0x80C164D0, &lit_3705); -#pragma pop - -/* 80C164D4-80C164D8 00000C 0004+00 0/3 0/0 0/0 .rodata @3706 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3706 = 1.0f; -COMPILER_STRIP_GATE(0x80C164D4, &lit_3706); -#pragma pop - -/* 80C164D8-80C164DC 000010 0004+00 0/2 0/0 0/0 .rodata @3707 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3707 = -1.0f; -COMPILER_STRIP_GATE(0x80C164D8, &lit_3707); -#pragma pop - -/* 80C164DC-80C164E0 000014 0004+00 0/2 0/0 0/0 .rodata @3708 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3708 = 10.0f; -COMPILER_STRIP_GATE(0x80C164DC, &lit_3708); -#pragma pop - -/* 80C164E0-80C164E4 000018 0004+00 0/2 0/0 0/0 .rodata @3709 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3709 = 2.0f; -COMPILER_STRIP_GATE(0x80C164E0, &lit_3709); -#pragma pop - -/* 80C164E4-80C164E8 00001C 0004+00 0/1 0/0 0/0 .rodata @3710 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3710 = 15.0f; -COMPILER_STRIP_GATE(0x80C164E4, &lit_3710); -#pragma pop - -/* 80C164E8-80C164EC 000020 0004+00 0/1 0/0 0/0 .rodata @3711 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3711 = 512.0f; -COMPILER_STRIP_GATE(0x80C164E8, &lit_3711); -#pragma pop - -/* 80C164EC-80C164F0 000024 0004+00 0/1 0/0 0/0 .rodata @3712 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3712 = 200.0f; -COMPILER_STRIP_GATE(0x80C164EC, &lit_3712); -#pragma pop - -/* 80C164F0-80C164F4 000028 0004+00 0/1 0/0 0/0 .rodata @3713 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3713 = -512.0f; -COMPILER_STRIP_GATE(0x80C164F0, &lit_3713); -#pragma pop +/* 80C16540-80C16544 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ +static char* l_arcName = "H_Saku"; /* 80C1552C-80C157D4 0000EC 02A8+00 0/0 0/0 1/1 .text BreakSet__13daObjH_Saku_cFv */ void daObjH_Saku_c::BreakSet() { - // NONMATCHING -} + cXyz pos(240.0f, 0.0f, -30.0f); + cLib_offsetPos(&pos, ¤t.pos, shape_angle.y, &pos); + dComIfGp_particle_set(dPa_RM(ID_ZF_S_KAKURESAKU1_00), &pos, &tevStr, &shape_angle, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZF_S_KAKURESAKU1_01), &pos, &tevStr, &shape_angle, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZF_S_KAKURESAKU1_02), &pos, &tevStr, &shape_angle, NULL); + Z2GetAudioMgr()->seStart(Z2SE_OBJ_H_SAKU_ORERU, &pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x5a0++; + speedF = 10.0f; + speed.y = 2.0f; + field_0x5b0.y = 15.0f; + field_0x5d0.set(-0x200, cM_rndF(200.0f) + 512.0f, 0); + field_0x5d6.set(0x200, cM_rndF(200.0f) + -512.0f, 0); -/* 80C157D4-80C15810 000394 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} + cXyz vecTrans(0.0f, speed.y, speedF); + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&vecTrans, &vecTrans); + speed = vecTrans; + field_0x5b0 = vecTrans; + field_0x5c8 = 10; -/* ############################################################################################## */ -/* 80C164F4-80C164F8 00002C 0004+00 0/1 0/0 0/0 .rodata @3765 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3765 = -2.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C164F4, &lit_3765); -#pragma pop + if (mpBgW != NULL && mpBgW->ChkUsed()) { + if (dComIfG_Bgsp().Release(mpBgW)) { + OS_REPORT("Release Error\n"); + } + } +} /* 80C15810-80C15A4C 0003D0 023C+00 1/1 0/0 0/0 .text SpeedSet__13daObjH_Saku_cFP4cXyzP4cXyzf */ -void daObjH_Saku_c::SpeedSet(cXyz* param_0, cXyz* param_1, f32 param_2) { - // NONMATCHING +u8 daObjH_Saku_c::SpeedSet(cXyz* param_1, cXyz* param_2, f32 param_3) { + field_0x5c4 += 1.0f; + cXyz spa0(*param_1); + param_2->y += gravity; + *param_1 += *param_2; + + if (field_0x5c4 > 10.0f) { + dBgS_LinChk lin_chk; + lin_chk.Set(&spa0, param_1, NULL); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + *param_1 = lin_chk.GetCross(); + param_2->y *= -0.4f; + + dComIfGp_particle_set(0x8856, param_1, &tevStr, &shape_angle, NULL); + dComIfGp_particle_set(0x8857, param_1, &tevStr, &shape_angle, NULL); + dComIfGp_particle_set(0x8858, param_1, &tevStr, &shape_angle, NULL); + Z2GetAudioMgr()->seStart(Z2SE_OBJ_H_SAKU_BREAK, param_1, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + return true; + } + } + + return false; } -/* ############################################################################################## */ -/* 80C164F8-80C164FC 000030 0004+00 0/2 0/0 0/0 .rodata @3809 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3809 = 0.5f; -COMPILER_STRIP_GATE(0x80C164F8, &lit_3809); -#pragma pop +/* 80C161E8-80C1629C 000DA8 00B4+00 1/0 0/0 0/0 .text CreateHeap__13daObjH_Saku_cFv */ +int daObjH_Saku_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "H_Saku.bmd"); + JUT_ASSERT(80, modelData != NULL); -/* 80C164FC-80C16500 000034 0004+00 0/1 0/0 0/0 .rodata @3810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3810 = 1.5f; -COMPILER_STRIP_GATE(0x80C164FC, &lit_3810); -#pragma pop + field_0x628 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (field_0x628 == NULL) { + return 0; + } -/* 80C16500-80C16508 000038 0008+00 0/1 0/0 0/0 .rodata @3812 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3812[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C16500, &lit_3812); -#pragma pop + field_0x62c = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (field_0x62c == NULL) { + return 0; + } + + return 1; +} + +cPhs__Step daObjH_Saku_c::create() { + fopAcM_ct(this, daObjH_Saku_c); + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhase, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "H_Saku.dzb"); + JUT_ASSERT(113, dzb_id != -1); + + phase = (cPhs__Step)MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x1320, NULL); + if (phase == cPhs_ERROR_e) { + return phase; + } + } + + field_0x5de = 0; + gravity = -8.0f; + cXyz offset(480.0f, 0.0f, -30.0f); + cLib_offsetPos(&field_0x5a4, ¤t.pos, shape_angle.y, &offset); + offset.x *= 0.5f; + cLib_offsetPos(&field_0x5e0, ¤t.pos, shape_angle.y, &offset); + + return phase; +} /* 80C15A4C-80C15E00 00060C 03B4+00 1/1 0/0 0/0 .text Action__13daObjH_Saku_cFv */ void daObjH_Saku_c::Action() { - // NONMATCHING + switch (field_0x5a0) { + case 0: + break; + + case 1: + field_0x5c8--; + if (field_0x5c8 == 0) { + field_0x5a1++; + field_0x5a0++; + field_0x5d6.y *= 0.5f; + field_0x5d0.y *= 0.5f; + } + + shape_angle.y += field_0x5d6.y; + shape_angle.x += field_0x5d6.x; + shape_angle.z -= (s16)0x100; + field_0x5bc.y += field_0x5d0.y * 1.5f; + field_0x5bc.x += field_0x5d0.x; + field_0x5bc.z -= (s16)0x100; + break; + + case 2: + if ((int)(u8)SpeedSet(¤t.pos, &speed, speedF)) { + field_0x5dd++; + if (field_0x5dd > 2) { + field_0x5a0++; + } + + field_0x5de |= 1; + if ((int)(u8)field_0x5de == 17) { + fopAcM_delete(this); + } + } + + cLib_chaseAngleS(&shape_angle.z, 0, 0x200); + + if (field_0x5dd != 0) { + if (speed.y > 0.0f) { + shape_angle.z += (s16)0x400; + } else { + shape_angle.z -= (s16)0x400; + } + + cLib_chaseAngleS(&shape_angle.x, 0x4000, field_0x5d6.x); + shape_angle.y += field_0x5d6.y; + } else { + shape_angle += field_0x5d6; + } + break; + + case 3: + if (cLib_chaseAngleS(&shape_angle.x, 0x4000, field_0x5d6.x) != 0) { + field_0x5a0++; + } + break; + } + + switch (field_0x5a1) { + case 0: + break; + + case 1: + if ((int)(u8)SpeedSet(&field_0x5a4, &field_0x5b0, speedF)) { + field_0x5dc++; + if (field_0x5dc > 2) { + field_0x5a1++; + } + + field_0x5de |= 17; + if ((int)(u8)field_0x5de == 1) { + fopAcM_delete(this); + } + } + + if (field_0x5dc != 0) { + if (field_0x5b0.y > 0.0f) { + field_0x5bc.z += (s16)0x400; + } else { + field_0x5bc.z -= (s16)0x400; + } + + cLib_chaseAngleS(&field_0x5bc.x, -0x4000, field_0x5d6.x); + field_0x5bc.y += field_0x5d0.y; + } else { + field_0x5bc += field_0x5d0; + } + + cLib_chaseAngleS(&field_0x5bc.z, 0, 0x200); + break; + + case 2: + if (cLib_chaseAngleS(&field_0x5bc.x, -0x4000, field_0x5d6.x) != 0) { + field_0x5a1++; + } + break; + } } /* 80C15E00-80C15E44 0009C0 0044+00 1/1 0/0 0/0 .text initBaseMtx__13daObjH_Saku_cFv */ void daObjH_Saku_c::initBaseMtx() { - // NONMATCHING + setBaseMtx(); + fopAcM_SetMtx(this, field_0x628->getBaseTRMtx()); + fopAcM_SetMtx(this, field_0x62c->getBaseTRMtx()); } -/* ############################################################################################## */ -/* 80C16508-80C1650C 000040 0004+00 0/1 0/0 0/0 .rodata @3856 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3856 = 30.0f; -COMPILER_STRIP_GATE(0x80C16508, &lit_3856); -#pragma pop - /* 80C15E44-80C15F4C 000A04 0108+00 2/2 0/0 0/0 .text setBaseMtx__13daObjH_Saku_cFv */ void daObjH_Saku_c::setBaseMtx() { - // NONMATCHING + csXyz angle(field_0x5bc.x, field_0x5bc.y, field_0x5bc.z); + mDoMtx_stack_c::transS(field_0x5a4); + mDoMtx_stack_c::YrotM(current.angle.y + 0x8000); + mDoMtx_stack_c::transM(0.0f, 0.0f, -30.0f); + mDoMtx_stack_c::ZXYrotM(angle); + mDoMtx_stack_c::transM(0.0f, 0.0f, 30.0f); + field_0x628->setBaseTRMtx(mDoMtx_stack_c::get()); + + angle.set(shape_angle.x, shape_angle.y, shape_angle.z); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(angle); + field_0x62c->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoMtx_stack_c::scaleM(2.0f, 1.0f, 1.0f); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); } -/* 80C15F4C-80C15F78 000B0C 002C+00 1/0 0/0 0/0 .text daObjH_Saku_Draw__FP13daObjH_Saku_c - */ -static void daObjH_Saku_Draw(daObjH_Saku_c* param_0) { - // NONMATCHING +/* 80C15F4C-80C15F78 000B0C 002C+00 1/0 0/0 0/0 .text daObjH_Saku_Draw__FP13daObjH_Saku_c */ +static int daObjH_Saku_Draw(daObjH_Saku_c* i_this) { + return i_this->MoveBGDraw(); } /* 80C15F78-80C15F98 000B38 0020+00 1/0 0/0 0/0 .text daObjH_Saku_Execute__FP13daObjH_Saku_c */ -static void daObjH_Saku_Execute(daObjH_Saku_c* param_0) { - // NONMATCHING +static int daObjH_Saku_Execute(daObjH_Saku_c* i_this) { + return i_this->MoveBGExecute(); } /* 80C15F98-80C15FA0 000B58 0008+00 1/0 0/0 0/0 .text daObjH_Saku_IsDelete__FP13daObjH_Saku_c */ -static bool daObjH_Saku_IsDelete(daObjH_Saku_c* param_0) { - return true; +static int daObjH_Saku_IsDelete(daObjH_Saku_c* i_this) { + return 1; } /* 80C15FA0-80C15FC4 000B60 0024+00 1/0 0/0 0/0 .text daObjH_Saku_Delete__FP13daObjH_Saku_c */ -static void daObjH_Saku_Delete(daObjH_Saku_c* param_0) { - // NONMATCHING +static int daObjH_Saku_Delete(daObjH_Saku_c* i_this) { + fpc_ProcID id = fopAcM_GetID(i_this); + i_this->MoveBGDelete(); + return 1; } -/* ############################################################################################## */ -/* 80C1650C-80C16510 000044 0004+00 0/1 0/0 0/0 .rodata @3930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3930 = -8.0f; -COMPILER_STRIP_GATE(0x80C1650C, &lit_3930); -#pragma pop +/* 80C15FC4-80C16178 000B84 01B4+00 1/0 0/0 0/0 .text daObjH_Saku_Create__FP10fopAc_ac_c */ +static int daObjH_Saku_Create(fopAc_ac_c* a_this) { + daObjH_Saku_c* i_this = (daObjH_Saku_c*)a_this; + fpc_ProcID id = fopAcM_GetID(a_this); + return i_this->create(); +} -/* 80C16510-80C16514 000048 0004+00 0/1 0/0 0/0 .rodata @3931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3931 = 480.0f; -COMPILER_STRIP_GATE(0x80C16510, &lit_3931); -#pragma pop +/* 80C1629C-80C162F4 000E5C 0058+00 1/0 0/0 0/0 .text Create__13daObjH_Saku_cFv */ +int daObjH_Saku_c::Create() { + fopAcM_setCullSizeBox(this, -700.0f, -700.0f, -700.0f, 700.0f, 700.0f, 7000.0f); + initBaseMtx(); + return cPhs_COMPLEATE_e; +} -/* 80C16520-80C16520 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C16520 = "H_Saku"; -SECTION_DEAD static char const* const stringBase_80C16527 = "H_Saku.dzb"; -#pragma pop +/* 80C162F4-80C16340 000EB4 004C+00 1/0 0/0 0/0 .text Execute__13daObjH_Saku_cFPPA3_A4_f */ +int daObjH_Saku_c::Execute(Mtx** mtx) { + Action(); + *mtx = &mBgMtx; + setBaseMtx(); + return 1; +} -/* 80C16540-80C16544 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_h_saku__stringBase0; +/* 80C16340-80C1641C 000F00 00DC+00 1/0 0/0 0/0 .text Draw__13daObjH_Saku_cFv */ +int daObjH_Saku_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(field_0x628, &tevStr); + g_env_light.setLightTevColorType_MAJI(field_0x62c, &tevStr); + dComIfGd_setListBG(); + + if ((int)(u8)field_0x5de != 1) { + mDoExt_modelUpdateDL(field_0x62c); + } + + if ((int)(u8)field_0x5de != 17) { + mDoExt_modelUpdateDL(field_0x628); + } + + dComIfGd_setList(); + return 1; +} + +/* 80C1641C-80C16450 000FDC 0034+00 1/0 0/0 0/0 .text Delete__13daObjH_Saku_cFv */ +int daObjH_Saku_c::Delete() { + dComIfG_resDelete(&mPhase, l_arcName); + return 1; +} + +namespace { +/* 80C16634-80C16640 000054 000C+00 0/1 0/0 0/0 .bss s_pos_l__28@unnamed@d_a_obj_h_saku_cpp@ */ +static cXyz s_pos_l; + +/* 80C1664C-80C16658 00006C 000C+00 0/1 0/0 0/0 .bss s_pos_r__28@unnamed@d_a_obj_h_saku_cpp@ */ +static cXyz s_pos_r; +} // namespace + +AUDIO_INSTANCES; /* 80C16544-80C16564 -00001 0020+00 1/0 0/0 0/0 .data l_daObjH_Saku_Method */ static actor_method_class l_daObjH_Saku_Method = { - (process_method_func)daObjH_Saku_Create__FP10fopAc_ac_c, - (process_method_func)daObjH_Saku_Delete__FP13daObjH_Saku_c, - (process_method_func)daObjH_Saku_Execute__FP13daObjH_Saku_c, - (process_method_func)daObjH_Saku_IsDelete__FP13daObjH_Saku_c, - (process_method_func)daObjH_Saku_Draw__FP13daObjH_Saku_c, + (process_method_func)daObjH_Saku_Create, + (process_method_func)daObjH_Saku_Delete, + (process_method_func)daObjH_Saku_Execute, + (process_method_func)daObjH_Saku_IsDelete, + (process_method_func)daObjH_Saku_Draw, }; /* 80C16564-80C16594 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_H_Saku */ @@ -321,315 +338,3 @@ extern actor_process_profile_definition g_profile_Obj_H_Saku = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C16594-80C165B8 000054 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80C164AC, - (void*)NULL, - (void*)NULL, - (void*)func_80C164A4, -}; - -/* 80C165B8-80C165E0 000078 0028+00 1/1 0/0 0/0 .data __vt__13daObjH_Saku_c */ -SECTION_DATA extern void* __vt__13daObjH_Saku_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjH_Saku_cFv, - (void*)Create__13daObjH_Saku_cFv, - (void*)Execute__13daObjH_Saku_cFPPA3_A4_f, - (void*)Draw__13daObjH_Saku_cFv, - (void*)Delete__13daObjH_Saku_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C15FC4-80C16178 000B84 01B4+00 1/0 0/0 0/0 .text daObjH_Saku_Create__FP10fopAc_ac_c - */ -static void daObjH_Saku_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80C16178-80C161E8 000D38 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C16520-80C16520 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C16532 = "H_Saku.bmd"; -#pragma pop - -/* 80C161E8-80C1629C 000DA8 00B4+00 1/0 0/0 0/0 .text CreateHeap__13daObjH_Saku_cFv */ -void daObjH_Saku_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C16514-80C16518 00004C 0004+00 0/1 0/0 0/0 .rodata @3965 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3965 = -700.0f; -COMPILER_STRIP_GATE(0x80C16514, &lit_3965); -#pragma pop - -/* 80C16518-80C1651C 000050 0004+00 0/1 0/0 0/0 .rodata @3966 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3966 = 700.0f; -COMPILER_STRIP_GATE(0x80C16518, &lit_3966); -#pragma pop - -/* 80C1651C-80C16520 000054 0004+00 0/1 0/0 0/0 .rodata @3967 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3967 = 7000.0f; -COMPILER_STRIP_GATE(0x80C1651C, &lit_3967); -#pragma pop - -/* 80C1629C-80C162F4 000E5C 0058+00 1/0 0/0 0/0 .text Create__13daObjH_Saku_cFv */ -void daObjH_Saku_c::Create() { - // NONMATCHING -} - -/* 80C162F4-80C16340 000EB4 004C+00 1/0 0/0 0/0 .text Execute__13daObjH_Saku_cFPPA3_A4_f - */ -void daObjH_Saku_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 80C16340-80C1641C 000F00 00DC+00 1/0 0/0 0/0 .text Draw__13daObjH_Saku_cFv */ -void daObjH_Saku_c::Draw() { - // NONMATCHING -} - -/* 80C1641C-80C16450 000FDC 0034+00 1/0 0/0 0/0 .text Delete__13daObjH_Saku_cFv */ -void daObjH_Saku_c::Delete() { - // NONMATCHING -} - -/* 80C16628-80C16634 000048 000C+00 0/1 0/0 0/0 .bss @3639 */ -#pragma push -#pragma force_active on -static u8 lit_3639[12]; -#pragma pop - -/* 80C16634-80C16640 000054 000C+00 0/1 0/0 0/0 .bss s_pos_l__28@unnamed@d_a_obj_h_saku_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_80C16634[12]; -#pragma pop - -/* 80C16640-80C1664C 000060 000C+00 0/1 0/0 0/0 .bss @3640 */ -#pragma push -#pragma force_active on -static u8 lit_3640[12]; -#pragma pop - -/* 80C1664C-80C16658 00006C 000C+00 0/1 0/0 0/0 .bss s_pos_r__28@unnamed@d_a_obj_h_saku_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_80C1664C[12]; -#pragma pop - -/* 80C16450-80C164A4 001010 0054+00 0/0 1/0 0/0 .text __sinit_d_a_obj_h_saku_cpp */ -void __sinit_d_a_obj_h_saku_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C16450, __sinit_d_a_obj_h_saku_cpp); -#pragma pop - -/* 80C164A4-80C164AC 001064 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80C164A4() { - // NONMATCHING -} - -/* 80C164AC-80C164B4 00106C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80C164AC() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C16658-80C1665C 000078 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_80C16658[4]; -#pragma pop - -/* 80C1665C-80C16660 00007C 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_80C1665C[4]; -#pragma pop - -/* 80C16660-80C16664 000080 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C16660[4]; -#pragma pop - -/* 80C16664-80C16668 000084 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C16664[4]; -#pragma pop - -/* 80C16668-80C1666C 000088 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C16668[4]; -#pragma pop - -/* 80C1666C-80C16670 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C1666C[4]; -#pragma pop - -/* 80C16670-80C16674 000090 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80C16670[4]; -#pragma pop - -/* 80C16674-80C16678 000094 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80C16674[4]; -#pragma pop - -/* 80C16678-80C1667C 000098 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80C16678[4]; -#pragma pop - -/* 80C1667C-80C16680 00009C 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80C1667C[4]; -#pragma pop - -/* 80C16680-80C16684 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C16680[4]; -#pragma pop - -/* 80C16684-80C16688 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C16684[4]; -#pragma pop - -/* 80C16688-80C1668C 0000A8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C16688[4]; -#pragma pop - -/* 80C1668C-80C16690 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C1668C[4]; -#pragma pop - -/* 80C16690-80C16694 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80C16690[4]; -#pragma pop - -/* 80C16694-80C16698 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80C16694[4]; -#pragma pop - -/* 80C16698-80C1669C 0000B8 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_80C16698[4]; -#pragma pop - -/* 80C1669C-80C166A0 0000BC 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80C1669C[4]; -#pragma pop - -/* 80C166A0-80C166A4 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80C166A0[4]; -#pragma pop - -/* 80C166A4-80C166A8 0000C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C166A4[4]; -#pragma pop - -/* 80C166A8-80C166AC 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_80C166A8[4]; -#pragma pop - -/* 80C166AC-80C166B0 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C166AC[4]; -#pragma pop - -/* 80C166B0-80C166B4 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C166B0[4]; -#pragma pop - -/* 80C166B4-80C166B8 0000D4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C166B4[4]; -#pragma pop - -/* 80C166B8-80C166BC 0000D8 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C166B8[4]; -#pragma pop - -/* 80C16520-80C16520 000058 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */