From c9838e29fa7dcbc7d05e3a2ea6a8eb77a8ee938e Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Fri, 31 Oct 2025 01:13:14 -0700 Subject: [PATCH] obj_lv8kekkaitrap / obj_nougu done, obj_lv7bridge almost (#2763) * obj_lv8kekkaitrap / obj_nougu done, obj_lv7bridge almost * kekkaitrap cleanup --- configure.py | 6 +- include/d/actor/d_a_obj_lv7bridge.h | 54 +- include/d/actor/d_a_obj_lv8KekkaiTrap.h | 31 +- include/d/actor/d_a_obj_nougu.h | 48 +- include/d/actor/d_a_obj_swspinner.h | 4 +- src/d/actor/d_a_obj_lv4gear.cpp | 2 +- src/d/actor/d_a_obj_lv7bridge.cpp | 952 ++++++++++-------------- src/d/actor/d_a_obj_lv8KekkaiTrap.cpp | 518 ++++++------- src/d/actor/d_a_obj_nougu.cpp | 663 ++++++----------- src/d/actor/d_a_obj_swspinner.cpp | 12 +- 10 files changed, 939 insertions(+), 1351 deletions(-) diff --git a/configure.py b/configure.py index 1788bfd39ad..7d1f54e3690 100755 --- a/configure.py +++ b/configure.py @@ -2115,8 +2115,8 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6swturn"), ActorRel(NonMatching, "d_a_obj_lv7BsGate"), ActorRel(NonMatching, "d_a_obj_lv7PropellerY"), - ActorRel(NonMatching, "d_a_obj_lv7bridge"), - ActorRel(NonMatching, "d_a_obj_lv8KekkaiTrap"), + ActorRel(Equivalent, "d_a_obj_lv7bridge"), # small regalloc + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8KekkaiTrap"), ActorRel(NonMatching, "d_a_obj_lv8Lift"), ActorRel(NonMatching, "d_a_obj_lv8OptiLift"), ActorRel(NonMatching, "d_a_obj_lv8UdFloor"), @@ -2139,7 +2139,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_nagaisu"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_nan"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_ndoor"), - ActorRel(NonMatching, "d_a_obj_nougu"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_nougu"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_octhashi"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_oiltubo"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_onsen"), diff --git a/include/d/actor/d_a_obj_lv7bridge.h b/include/d/actor/d_a_obj_lv7bridge.h index 58c710fc1a4..de35cc8181a 100644 --- a/include/d/actor/d_a_obj_lv7bridge.h +++ b/include/d/actor/d_a_obj_lv7bridge.h @@ -2,6 +2,11 @@ #define D_A_OBJ_LV7BRIDGE_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" + +class daObjSwSpinner_c; /** * @ingroup actors-objects @@ -11,29 +16,56 @@ * @details * */ -class daObjLv7Brg_c : public fopAc_ac_c { +class daObjLv7Brg_c : public dBgS_MoveBgActor { public: - /* 80C863EC */ void search_swspinner(); + /* 80C863EC */ daObjSwSpinner_c* search_swspinner(); /* 80C86454 */ void initBaseMtx(); /* 80C864B4 */ void setBaseMtx(); - /* 80C865B8 */ void Create(); - /* 80C867CC */ void CreateHeap(); - /* 80C86A44 */ void create1st(); - /* 80C86B40 */ void Execute(Mtx**); + /* 80C86A44 */ int create1st(); /* 80C86E68 */ void action(); /* 80C86F44 */ void mode_action(); /* 80C87210 */ void mode_end(); /* 80C87214 */ void calcCoPos(); - /* 80C87304 */ void Draw(); - /* 80C87458 */ void Delete(); + + /* 80C867CC */ virtual int CreateHeap(); + /* 80C865B8 */ virtual int Create(); + /* 80C86B40 */ virtual int Execute(Mtx**); + /* 80C87304 */ virtual int Draw(); + /* 80C87458 */ virtual int Delete(); + + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwbit3() { return field_0xa80 & 0xFF; } + + u8 getType() { return fopAcM_GetParamBit(this, 16, 4); } + u8 getKind() { return fopAcM_GetParamBit(this, 24, 1); } + + void setMode(u8 i_mode) { mMode = i_mode; } void setDestroyAnmA() { field_0xa94 = 0; } void setDestroyAnmB() { field_0xa94 = 1; } private: - /* 0x568 */ u8 field_0x568[0xa94 - 0x568]; - /* 0xA94 */ u8 field_0xa94; - /* 0xA95 */ u8 field_0xa95[0xaa4 - 0xA95]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ dBgS_ObjAcch mAcch; + /* 0x784 */ dBgS_AcchCir mAcchCir; + /* 0x7C4 */ dCcD_Stts mCcStts; + /* 0x800 */ dCcD_Cyl mCcCyl[2]; + /* 0xA78 */ f32 field_0xa78; + /* 0xA7C */ u8 mType; + /* 0xA7D */ u8 mMode; + /* 0xA7E */ u8 mKind; + /* 0xA7F */ u8 mInitParams; + /* 0xA80 */ u16 field_0xa80; + /* 0xA82 */ u16 field_0xa82; + /* 0xA84 */ J3DModel* mpBrokenModel; + /* 0xA88 */ mDoExt_bckAnm* mpBck[2]; + /* 0xA90 */ dBgW* mpBgw2; + /* 0xA94 */ s8 field_0xa94; + /* 0xA95 */ s8 field_0xa95; + /* 0xA96 */ u8 field_0xa96; + /* 0xA98 */ cXyz field_0xa98; }; STATIC_ASSERT(sizeof(daObjLv7Brg_c) == 0xaa4); diff --git a/include/d/actor/d_a_obj_lv8KekkaiTrap.h b/include/d/actor/d_a_obj_lv8KekkaiTrap.h index dc3fcaf031c..53b6587eaa6 100644 --- a/include/d/actor/d_a_obj_lv8KekkaiTrap.h +++ b/include/d/actor/d_a_obj_lv8KekkaiTrap.h @@ -2,6 +2,7 @@ #define D_A_OBJ_LV8KEKKAITRAP_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" /** * @ingroup actors-objects @@ -11,12 +12,10 @@ * @details * */ -class daKekaiTrap_c : public fopAc_ac_c { +class daKekaiTrap_c : public dBgS_MoveBgActor { public: /* 80C87D40 */ void setBaseMtx(); - /* 80C87DC8 */ void CreateHeap(); - /* 80C87E48 */ void create(); - /* 80C87FB0 */ void Execute(Mtx**); + /* 80C87E48 */ int create(); /* 80C88000 */ void moveMain(); /* 80C88104 */ void init_modeWait(); /* 80C88110 */ void modeWait(); @@ -24,20 +23,26 @@ public: /* 80C88138 */ void modeMoveUp(); /* 80C881F0 */ void init_modeMoveDown(); /* 80C88214 */ void modeMoveDown(); - /* 80C882C8 */ void Draw(); - /* 80C8836C */ void Delete(); + + /* 80C87DC8 */ virtual int CreateHeap(); + /* 80C87FB0 */ virtual int Execute(Mtx**); + /* 80C882C8 */ virtual int Draw(); + /* 80C8836C */ virtual int Delete(); + + int getType() { return fopAcM_GetParamBit(this, 0, 4); } + int getSwBit() { return fopAcM_GetParamBit(this, 4, 8); } private: - /* 0x568 */ u8 field_0x568[0x5b4 - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ u8 mIsSwitch; + /* 0x5AD */ u8 mSwbit; + /* 0x5AE */ u8 mType; + /* 0x5AF */ u8 mMode; + /* 0x5B0 */ u8 mTimer; }; STATIC_ASSERT(sizeof(daKekaiTrap_c) == 0x5b4); -class daKekaiTrap_HIO_c { -public: - /* 80C87CAC */ daKekaiTrap_HIO_c(); - /* 80C88438 */ ~daKekaiTrap_HIO_c(); -}; - #endif /* D_A_OBJ_LV8KEKKAITRAP_H */ diff --git a/include/d/actor/d_a_obj_nougu.h b/include/d/actor/d_a_obj_nougu.h index c6b288b83e9..c1a2592a76f 100644 --- a/include/d/actor/d_a_obj_nougu.h +++ b/include/d/actor/d_a_obj_nougu.h @@ -2,6 +2,8 @@ #define D_A_OBJ_NOUGU_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -13,32 +15,50 @@ */ class daObj_Nougu_c : public fopAc_ac_c { public: - /* 80CA3C0C */ ~daObj_Nougu_c(); - /* 80CA3E24 */ void create(); - /* 80CA4328 */ void CreateHeap(); - /* 80CA43A0 */ void Delete(); - /* 80CA43D4 */ void Execute(); - /* 80CA45F4 */ void Draw(); - /* 80CA46B8 */ void createHeapCallBack(fopAc_ac_c*); - /* 80CA46D8 */ void getResName(); - /* 80CA46E8 */ void isDelete(); + /* 0x568 */ u8 field_0x568[0x56C - 0x568]; + /* 0x56C */ request_of_phase_process_class mPhase; + /* 0x574 */ J3DModel* mpModel; + /* 0x578 */ dBgS_ObjAcch mAcch; + /* 0x750 */ dCcD_Stts mCcStts; + /* 0x78C */ dBgS_AcchCir mAcchCir; + /* 0x7CC */ cBgS_GndChk mGndChk; + /* 0x808 */ dCcD_Sph mCcSph[5]; + /* 0xE20 */ f32 mGroundH; + /* 0xE24 */ u32 mShadowId; + /* 0xE28 */ u8 mType; + + /* 80CA3C0C */ virtual ~daObj_Nougu_c(); + /* 80CA3E24 */ int create(); + /* 80CA4328 */ int CreateHeap(); + /* 80CA43A0 */ int Delete(); + /* 80CA43D4 */ int Execute(); + /* 80CA45F4 */ int Draw(); + /* 80CA46B8 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80CA46D8 */ const char* getResName(); + /* 80CA46E8 */ int isDelete(); /* 80CA4708 */ void setEnvTevColor(); /* 80CA4764 */ void setRoomNo(); /* 80CA47A4 */ void setMtx(); - static u8 mCcDSph[64]; + int getType() { return 0; } -private: - /* 0x568 */ u8 field_0x568[0xe30 - 0x568]; + static dCcD_SrcSph mCcDSph; }; STATIC_ASSERT(sizeof(daObj_Nougu_c) == 0xe30); +struct daObj_Nougu_HIOParam { + /* 0x0 */ f32 attention_offset; + /* 0x4 */ f32 gravity; + /* 0x8 */ f32 scale; + /* 0xC */ f32 shadow_size; +}; + class daObj_Nougu_Param_c { public: - /* 80CA494C */ ~daObj_Nougu_Param_c(); + /* 80CA494C */ virtual ~daObj_Nougu_Param_c() {} - static u8 const m[16]; + static const daObj_Nougu_HIOParam m; }; diff --git a/include/d/actor/d_a_obj_swspinner.h b/include/d/actor/d_a_obj_swspinner.h index 2efcad6159c..b5d69121cf3 100644 --- a/include/d/actor/d_a_obj_swspinner.h +++ b/include/d/actor/d_a_obj_swspinner.h @@ -24,8 +24,8 @@ public: /* 80D00890 */ int Draw(); /* 80D00954 */ int Delete(); - u8 getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } - u8 getSwBit2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); } int GetRotSpeedY() { return mRotSpeedY; } f32 GetR() { return 100.0f; } diff --git a/src/d/actor/d_a_obj_lv4gear.cpp b/src/d/actor/d_a_obj_lv4gear.cpp index c72debfe769..ec9b7a4cfe2 100644 --- a/src/d/actor/d_a_obj_lv4gear.cpp +++ b/src/d/actor/d_a_obj_lv4gear.cpp @@ -19,7 +19,7 @@ static void* searchSwSpinSub(void* i_actor, void* i_data) { daObjLv4Gear_c* gear = (daObjLv4Gear_c*)i_data; if (sw != NULL && fopAc_IsActor(sw) && fpcM_GetProfName(sw) == PROC_Obj_SwSpinner) { - u8 sw_bit = sw->getSwBit(); + u8 sw_bit = sw->getSwbit(); if (sw_bit != 0xFF && sw_bit == gear->getSwBit()) { return sw; } diff --git a/src/d/actor/d_a_obj_lv7bridge.cpp b/src/d/actor/d_a_obj_lv7bridge.cpp index 36d82c3e9a1..d390f1469dc 100644 --- a/src/d/actor/d_a_obj_lv7bridge.cpp +++ b/src/d/actor/d_a_obj_lv7bridge.cpp @@ -6,236 +6,97 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_lv7bridge.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" static void searchSwSpinner__FPvPv(); -extern "C" void search_swspinner__13daObjLv7Brg_cFv(); -extern "C" void initBaseMtx__13daObjLv7Brg_cFv(); -extern "C" void setBaseMtx__13daObjLv7Brg_cFv(); -extern "C" void Create__13daObjLv7Brg_cFv(); -extern "C" void CreateHeap__13daObjLv7Brg_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void create1st__13daObjLv7Brg_cFv(); -extern "C" void Execute__13daObjLv7Brg_cFPPA3_A4_f(); -extern "C" void action__13daObjLv7Brg_cFv(); -extern "C" void mode_action__13daObjLv7Brg_cFv(); -extern "C" void mode_end__13daObjLv7Brg_cFv(); -extern "C" void calcCoPos__13daObjLv7Brg_cFv(); -extern "C" void Draw__13daObjLv7Brg_cFv(); -extern "C" void Delete__13daObjLv7Brg_cFv(); -extern "C" static void daObjLv7Brg_create1st__FP13daObjLv7Brg_c(); -extern "C" void __dt__8dCcD_CylFv(); -extern "C" void __ct__8dCcD_CylFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" static void daObjLv7Brg_MoveBGDelete__FP13daObjLv7Brg_c(); -extern "C" static void daObjLv7Brg_MoveBGExecute__FP13daObjLv7Brg_c(); -extern "C" static void daObjLv7Brg_MoveBGDraw__FP13daObjLv7Brg_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_80C87988(); -extern "C" static void func_80C87990(); -extern "C" extern char const* const d_a_obj_lv7bridge__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_cFRC4cXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb(); -extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void StartQuake__12dVibration_cFii4cXyz(); -extern "C" void StopQuake__12dVibration_cFi(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -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 Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __construct_array(); -extern "C" void __ptmf_scall(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -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" extern u8 data_80C87BB8[4]; - -// -// Declarations: -// +#include "d/actor/d_a_obj_swspinner.h" +#include "d/d_s_play.h" /* 80C86378-80C863EC 000078 0074+00 1/1 0/0 0/0 .text searchSwSpinner__FPvPv */ -static void searchSwSpinner(void* param_0, void* param_1) { - // NONMATCHING +static void* searchSwSpinner(void* i_actor, void* i_data) { + fopAc_ac_c* swspinner = (fopAc_ac_c*)i_actor; + fopAc_ac_c* brg = (fopAc_ac_c*)i_data; + + if (swspinner != NULL && fopAcM_IsActor(swspinner) && fopAcM_GetProfName(swspinner) == PROC_Obj_SwSpinner) { + if (((daObjLv7Brg_c*)brg)->getSwbit() == ((daObjSwSpinner_c*)swspinner)->getSwbit()) { + return swspinner; + } + } + + return NULL; } /* 80C863EC-80C86454 0000EC 0068+00 1/1 0/0 0/0 .text search_swspinner__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::search_swspinner() { - // NONMATCHING +daObjSwSpinner_c* daObjLv7Brg_c::search_swspinner() { + daObjSwSpinner_c* swspinner = NULL; + if (parentActorID == fpcM_ERROR_PROCESS_ID_e) { + swspinner = (daObjSwSpinner_c*)fpcM_Search(searchSwSpinner, this); + if (swspinner != NULL) { + parentActorID = fopAcM_GetID(swspinner); + } + } + + return swspinner; } /* 80C86454-80C864B4 000154 0060+00 1/1 0/0 0/0 .text initBaseMtx__13daObjLv7Brg_cFv */ void daObjLv7Brg_c::initBaseMtx() { - // NONMATCHING + mpModel->setBaseScale(scale); + + if (mpBrokenModel != NULL) { + mpBrokenModel->setBaseScale(scale); + } + + setBaseMtx(); } -/* ############################################################################################## */ /* 80C879A0-80C879A8 000000 0008+00 4/4 0/0 0/0 .rodata l_bmd */ -SECTION_RODATA static u8 const l_bmd[8] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, -}; -COMPILER_STRIP_GATE(0x80C879A0, &l_bmd); +static const int l_bmd[] = {4, 10}; /* 80C879A8-80C879B0 000008 0008+00 1/1 0/0 0/0 .rodata l_dzb */ -SECTION_RODATA static u8 const l_dzb[8] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, -}; -COMPILER_STRIP_GATE(0x80C879A8, &l_dzb); +static const int l_dzb[] = {7, 13}; /* 80C879B0-80C879C4 000010 0012+02 0/1 0/0 0/0 .rodata l_eff_id */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_eff_id[18 + 2 /* padding */] = { - 0x8B, - 0x55, - 0x8B, - 0x56, - 0x8B, - 0x57, - 0x8B, - 0x58, - 0x8B, - 0x59, - 0x8B, - 0x5A, - 0x8B, - 0x5B, - 0x8B, - 0x5C, - 0x8B, - 0x5D, - /* padding */ - 0x00, - 0x00, +static const u16 l_eff_id[] = { + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_A), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_B), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_C), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_D), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_E), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_F), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_G), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_H), + dPa_RM(ID_ZI_S_LV7BRDG_BREAK_I), }; -COMPILER_STRIP_GATE(0x80C879B0, &l_eff_id); -#pragma pop /* 80C879C4-80C879CC 000024 0008+00 1/1 0/0 0/0 .rodata l_heap_size */ -SECTION_RODATA static u8 const l_heap_size[8] = { - 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C879C4, &l_heap_size); - -/* 80C879CC-80C879D0 00002C 0004+00 3/5 0/0 0/0 .rodata @3697 */ -SECTION_RODATA static u8 const lit_3697[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C879CC, &lit_3697); +static const u32 l_heap_size[] = {0x6000, 0x20000}; /* 80C864B4-80C865B8 0001B4 0104+00 2/2 0/0 0/0 .text setBaseMtx__13daObjLv7Brg_cFv */ void daObjLv7Brg_c::setBaseMtx() { - // NONMATCHING + cXyz sp8(field_0xa78, 0.0f, 0.0f); + if (mKind == 1) { + sp8.set(-field_0xa78, 0.0f, 0.0f); + } + + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&sp8, &sp8); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(sp8); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); + + if (mKind == 1) { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(sp8); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpBrokenModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } } -/* ############################################################################################## */ -/* 80C879D0-80C879D4 000030 0004+00 1/2 0/0 0/0 .rodata @3767 */ -SECTION_RODATA static f32 const lit_3767 = 5100.0f; -COMPILER_STRIP_GATE(0x80C879D0, &lit_3767); - -/* 80C879D4-80C879D8 000034 0004+00 1/1 0/0 0/0 .rodata @3768 */ -SECTION_RODATA static f32 const lit_3768 = 100.0f; -COMPILER_STRIP_GATE(0x80C879D4, &lit_3768); - -/* 80C879D8-80C879E0 000038 0008+00 1/1 0/0 0/0 .rodata @3770 */ -SECTION_RODATA static u8 const lit_3770[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C879D8, &lit_3770); - -/* 80C87A20-80C87A20 000080 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C87A20 = "Obj_l7brg"; -SECTION_DEAD static char const* const stringBase_80C87A2A = "K_bridge"; -#pragma pop - /* 80C87A54-80C87A5C -00001 0008+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName[2] = { - (void*)&d_a_obj_lv7bridge__stringBase0, - (void*)(((char*)&d_a_obj_lv7bridge__stringBase0) + 0xA), +static char* l_arcName[2] = { + "Obj_l7brg", + "K_bridge", }; /* 80C87A5C-80C87AA0 000028 0044+00 1/1 0/0 0/0 .data l_cyl_src */ @@ -254,63 +115,354 @@ static dCcD_SrcCyl l_cyl_src = { }; /* 80C865B8-80C867CC 0002B8 0214+00 1/0 0/0 0/0 .text Create__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::Create() { - // NONMATCHING +int daObjLv7Brg_c::Create() { + field_0xa94 = -1; + field_0xa95 = field_0xa94; + + if (mKind == 1) { + if (fopAcM_isSwitch(this, getSwbit3())) { + if (mpBgW != NULL && mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); + } + + if (mpBgw2 != NULL && !mpBgw2->ChkUsed()) { + dComIfG_Bgsp().Regist(mpBgw2, this); + } + + field_0xa94 = 1; + mpBck[1]->setFrame(mpBck[1]->getEndFrame()); + field_0xa96 = 1; + OS_REPORT("壊れる橋:破壊済みです!\n"); + } + + if (fopAcM_isSwitch(this, getSwbit2())) { + field_0xa78 = 5100.0f; + setMode(1); + OS_REPORT("壊れる橋:移動済みです!\n"); + } + } else if (mType == 0 && fopAcM_isSwitch(this, getSwbit2())) { + field_0xa78 = 5100.0f; + setMode(1); + } + + fopAcM_setCullSizeFar(this, 100.0f); + initBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + mCcStts.Init(0xFF, 0xFF, this); + + for (int i = 0; i < 2; i++) { + mCcCyl[i].Set(l_cyl_src); + mCcCyl[i].SetStts(&mCcStts); + } + + calcCoPos(); + MoveBGExecute(); + return 1; } -/* ############################################################################################## */ -/* 80C879E0-80C879E8 000040 0008+00 0/1 0/0 0/0 .rodata l_bck$3780 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_bck[8] = { - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, -}; -COMPILER_STRIP_GATE(0x80C879E0, &l_bck); -#pragma pop +/* 80C867CC-80C869FC 0004CC 0230+00 1/0 0/0 0/0 .text CreateHeap__13daObjLv7Brg_cFv */ +int daObjLv7Brg_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mKind], l_bmd[mKind]); + JUT_ASSERT(374, modelData != NULL); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } -/* 80C879E8-80C879EC 000048 0004+00 0/3 0/0 0/0 .rodata @3830 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3830 = 1.0f; -COMPILER_STRIP_GATE(0x80C879E8, &lit_3830); -#pragma pop + if (mKind == 1) { + J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mKind], 9); + JUT_ASSERT(374, modelData2 != NULL); + mpBrokenModel = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11000084); + if (mpBrokenModel == NULL) { + return 0; + } -/* 80C87AA0-80C87AAC -00001 000C+00 0/1 0/0 0/0 .data @3941 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3941[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_action__13daObjLv7Brg_cFv, -}; -#pragma pop + for (int i = 0; i < 2; i++) { + static const int l_bck[] = {5, 6}; -/* 80C87AAC-80C87AB8 -00001 000C+00 0/1 0/0 0/0 .data @3942 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3942[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_end__13daObjLv7Brg_cFv, -}; -#pragma pop + J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName[mKind], l_bck[i]); + JUT_ASSERT(411, pbck != NULL); -/* 80C87AB8-80C87AD0 000084 0018+00 0/1 0/0 0/0 .data mode_proc$3940 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + mpBck[i] = new mDoExt_bckAnm(); + if (mpBck[i] == NULL || !mpBck[i]->init(pbck, 1, 0, 1.0f, 0, -1, 0)) { + return 0; + } + } + + mpBgw2 = new dBgW(); + if (mpBgw2 != NULL && !mpBgw2->Set((cBgD_t*)dComIfG_getObjectRes(l_arcName[mKind], 0xE), 1, &mBgMtx)) { + mpBgw2->SetCrrFunc(dBgS_MoveBGProc_Typical); + } else { + mpBgw2 = NULL; + return 0; + } + } + + return 1; +} + +/* 80C86A44-80C86B40 000744 00FC+00 1/1 0/0 0/0 .text create1st__13daObjLv7Brg_cFv */ +int daObjLv7Brg_c::create1st() { + if (!mInitParams) { + mInitParams = TRUE; + field_0xa80 = home.angle.x; + field_0xa82 = home.angle.z; + shape_angle.x = 0; + current.angle.x = 0; + home.angle.x = 0; + shape_angle.z = 0; + current.angle.z = 0; + home.angle.z = 0; + } + + mType = getType(); + mKind = getKind(); + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName[mKind]); + if (phase_state == cPhs_COMPLEATE_e) { + phase_state = MoveBGCreate(l_arcName[mKind], l_dzb[mKind], dBgS_MoveBGProc_Typical, l_heap_size[mKind], NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } + } + + return phase_state; +} + +/* 80C86B40-80C86E68 000840 0328+00 1/0 0/0 0/0 .text Execute__13daObjLv7Brg_cFPPA3_A4_f + */ +int daObjLv7Brg_c::Execute(Mtx** param_0) { + search_swspinner(); + action(); + + *param_0 = &mBgMtx; + setBaseMtx(); + + cXyz sp1C(2550.0f, 0.0f, 0.0f); + if (mKind == 1) { + sp1C.x = -sp1C.x; + } + + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&sp1C, &sp1C); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(sp1C); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVecZero(&eyePos); + + sp1C.set(7650.0f, 0.0f, 0.0f); + if (mKind == 1) { + sp1C.x = -sp1C.x; + } + + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&sp1C, &sp1C); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(sp1C); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVecZero(&field_0xa98); + + if (field_0xa94 == 0) { + mpBck[0]->setPlaySpeed(1.0f); + mpBck[0]->play(); + + if (field_0xa95 == -1) { + cXyz effpos(-field_0xa78, 0.0f, 0.0f); + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&effpos, &effpos); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(effpos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVecZero(&effpos); + + for (int i = 0; i < 9; i++) { + dComIfGp_particle_set(l_eff_id[i], &effpos, &home.angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + } + } + } else if (field_0xa94 == 1) { + mpBck[1]->setPlaySpeed(1.0f); + if (mpBck[1]->play()) { + if (mpBgW->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW); + } + + if (mpBgw2 != NULL && !mpBgw2->ChkUsed()) { + dComIfG_Bgsp().Regist(mpBgw2, this); + } + + field_0xa96 = 1; + } + } + + if (mpBgw2 != NULL && mpBgw2->ChkUsed()) { + mpBgw2->Move(); + } + + field_0xa95 = field_0xa94; + return 1; +} + +/* 80C86E68-80C86F44 000B68 00DC+00 1/1 0/0 0/0 .text action__13daObjLv7Brg_cFv */ +void daObjLv7Brg_c::action() { + static void (daObjLv7Brg_c::*mode_proc[])() = { + &daObjLv7Brg_c::mode_action, + &daObjLv7Brg_c::mode_end, + }; + + (this->*mode_proc[mMode])(); + + if (speedF < 0.0f || KREG_S(7) != 0) { + dComIfG_Ccsp()->Set(&mCcCyl[0]); + dComIfG_Ccsp()->Set(&mCcCyl[1]); + } +} + +/* 80C86F44-80C87210 000C44 02CC+00 1/0 0/0 0/0 .text mode_action__13daObjLv7Brg_cFv */ +// NONMATCHING - small regalloc +void daObjLv7Brg_c::mode_action() { + f32 var_f31; + f32 temp_f30 = field_0xa78; + f32 temp_f29 = speedF; + + if (fopAcM_isSwitch(this, getSwbit())) { + if (5100.0f == field_0xa78) { + var_f31 = 0.0f; + } else { + var_f31 = 30.0f; + } + } else if (0.0f == field_0xa78) { + var_f31 = 0.0f; + } else { + var_f31 = -45.0f; + } + + cLib_addCalc(&speedF, var_f31, 0.02f, 1.0f, 0.1f); + field_0xa78 += speedF; + + if (0.0f != speedF) { + fopAcM_seStartLevel(this, 0x8025F, (127.0f * speedF) / 30.0f); + } + + if (0.0f != speedF && 0.0f == temp_f29) { + dComIfGp_getVibration().StartQuake(2, 0xF, cXyz(0.0f, 1.0f, 0.0f)); + } + + if (field_0xa78 < 0.0f) { + field_0xa78 = 0.0f; + speedF = 0.0f; + dComIfGp_getVibration().StopQuake(0x1F); + + if (temp_f30 > 0.0f) { + dComIfGp_getVibration().StartShock(8, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + } + } else if (field_0xa78 > 5100.0f) { + field_0xa78 = 5100.0f; + speedF = 0.0f; + dComIfGp_getVibration().StopQuake(0x1F); + + if (temp_f30 < 5100.0f) { + mDoAud_seStart(Z2SE_OBJ_BRDG_STOP, &field_0xa98, 0, 0); + dComIfGp_getVibration().StartShock(8, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + if (mType == 0) { + fopAcM_onSwitch(this, getSwbit2()); + setMode(1); + } + } + } +} + +/* 80C87210-80C87214 000F10 0004+00 1/0 0/0 0/0 .text mode_end__13daObjLv7Brg_cFv */ +void daObjLv7Brg_c::mode_end() {} + +/* 80C87214-80C87304 000F14 00F0+00 1/1 0/0 0/0 .text calcCoPos__13daObjLv7Brg_cFv */ +void daObjLv7Brg_c::calcCoPos() { + cXyz sp8[2]; + sp8[0].set(2700.0f, -80.0f, 450.0f); + sp8[1].set(2700.0f, -80.0f, -450.0f); + + if (mKind == 1) { + sp8[0].set(-2700.0f, -80.0f, 450.0f); + sp8[1].set(-2700.0f, -80.0f, -450.0f); + } + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + + for (int i = 0; i < 2; i++) { + mDoMtx_stack_c::multVec(&sp8[i], &sp8[i]); + } + + mCcCyl[0].SetC(sp8[0]); + mCcCyl[1].SetC(sp8[1]); +} + +/* 80C87304-80C87458 001004 0154+00 1/0 0/0 0/0 .text Draw__13daObjLv7Brg_cFv */ +int daObjLv7Brg_c::Draw() { + if (0.0f == field_0xa78) { + return 1; + } + + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + + if (mKind == 1) { + g_env_light.setLightTevColorType_MAJI(mpBrokenModel, &tevStr); + if (mpBck[0] != NULL && mpBck[1] != NULL && field_0xa96 == 0) { + if (field_0xa94 != -1) { + mpBck[field_0xa94]->entry(mpBrokenModel->getModelData()); + } + mDoExt_modelUpdateDL(mpBrokenModel); + mDoExt_bckAnmRemove(mpBrokenModel->getModelData()); + } + } + + dComIfGd_setList(); + return 1; +} + +/* 80C87458-80C874CC 001158 0074+00 1/0 0/0 0/0 .text Delete__13daObjLv7Brg_cFv */ +int daObjLv7Brg_c::Delete() { + if (mpBgw2 != NULL && mpBgw2->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgw2); + } + + dComIfG_resDelete(&mPhase, l_arcName[mKind]); + return 1; +} + +/* 80C874CC-80C875B8 0011CC 00EC+00 1/0 0/0 0/0 .text daObjLv7Brg_create1st__FP13daObjLv7Brg_c */ +static int daObjLv7Brg_create1st(daObjLv7Brg_c* i_this) { + fopAcM_ct(i_this, daObjLv7Brg_c); + return i_this->create1st(); +} + +/* 80C878D4-80C878F4 0015D4 0020+00 1/0 0/0 0/0 .text daObjLv7Brg_MoveBGDelete__FP13daObjLv7Brg_c + */ +static int daObjLv7Brg_MoveBGDelete(daObjLv7Brg_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C878F4-80C87914 0015F4 0020+00 1/0 0/0 0/0 .text daObjLv7Brg_MoveBGExecute__FP13daObjLv7Brg_c + */ +static int daObjLv7Brg_MoveBGExecute(daObjLv7Brg_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C87914-80C87940 001614 002C+00 1/0 0/0 0/0 .text daObjLv7Brg_MoveBGDraw__FP13daObjLv7Brg_c */ +static int daObjLv7Brg_MoveBGDraw(daObjLv7Brg_c* i_this) { + return i_this->MoveBGDraw(); +} /* 80C87AD0-80C87AF0 -00001 0020+00 1/0 0/0 0/0 .data daObjLv7Brg_METHODS */ static actor_method_class daObjLv7Brg_METHODS = { - (process_method_func)daObjLv7Brg_create1st__FP13daObjLv7Brg_c, - (process_method_func)daObjLv7Brg_MoveBGDelete__FP13daObjLv7Brg_c, - (process_method_func)daObjLv7Brg_MoveBGExecute__FP13daObjLv7Brg_c, + (process_method_func)daObjLv7Brg_create1st, + (process_method_func)daObjLv7Brg_MoveBGDelete, + (process_method_func)daObjLv7Brg_MoveBGExecute, 0, - (process_method_func)daObjLv7Brg_MoveBGDraw__FP13daObjLv7Brg_c, + (process_method_func)daObjLv7Brg_MoveBGDraw, }; /* 80C87AF0-80C87B20 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv7Bridge */ @@ -330,301 +482,3 @@ extern actor_process_profile_definition g_profile_Obj_Lv7Bridge = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C87B20-80C87B2C 0000EC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80C87B2C-80C87B38 0000F8 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80C87B38-80C87B44 000104 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80C87B44-80C87B50 000110 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80C87B50-80C87B5C 00011C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80C87B5C-80C87B80 000128 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_80C87990, - (void*)NULL, - (void*)NULL, - (void*)func_80C87988, -}; - -/* 80C87B80-80C87B8C 00014C 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80C867CC-80C869FC 0004CC 0230+00 1/0 0/0 0/0 .text CreateHeap__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::CreateHeap() { - // NONMATCHING -} - -/* 80C869FC-80C86A44 0006FC 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80C86A44-80C86B40 000744 00FC+00 1/1 0/0 0/0 .text create1st__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::create1st() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C879EC-80C879F0 00004C 0004+00 0/1 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 2550.0f; -COMPILER_STRIP_GATE(0x80C879EC, &lit_3935); -#pragma pop - -/* 80C879F0-80C879F4 000050 0004+00 0/1 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3936 = 7650.0f; -COMPILER_STRIP_GATE(0x80C879F0, &lit_3936); -#pragma pop - -/* 80C86B40-80C86E68 000840 0328+00 1/0 0/0 0/0 .text Execute__13daObjLv7Brg_cFPPA3_A4_f - */ -void daObjLv7Brg_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 80C86E68-80C86F44 000B68 00DC+00 1/1 0/0 0/0 .text action__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::action() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C879F4-80C879F8 000054 0004+00 0/1 0/0 0/0 .rodata @4027 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4027 = 30.0f; -COMPILER_STRIP_GATE(0x80C879F4, &lit_4027); -#pragma pop - -/* 80C879F8-80C879FC 000058 0004+00 0/1 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = -45.0f; -COMPILER_STRIP_GATE(0x80C879F8, &lit_4028); -#pragma pop - -/* 80C879FC-80C87A00 00005C 0004+00 0/1 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = 1.0f / 50.0f; -COMPILER_STRIP_GATE(0x80C879FC, &lit_4029); -#pragma pop - -/* 80C87A00-80C87A04 000060 0004+00 0/1 0/0 0/0 .rodata @4030 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4030 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C87A00, &lit_4030); -#pragma pop - -/* 80C87A04-80C87A08 000064 0004+00 0/1 0/0 0/0 .rodata @4031 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4031 = 127.0f; -COMPILER_STRIP_GATE(0x80C87A04, &lit_4031); -#pragma pop - -/* 80C87A08-80C87A0C 000068 0004+00 0/1 0/0 0/0 .rodata @4032 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4032 = -1.0f; -COMPILER_STRIP_GATE(0x80C87A08, &lit_4032); -#pragma pop - -/* 80C86F44-80C87210 000C44 02CC+00 1/0 0/0 0/0 .text mode_action__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::mode_action() { - // NONMATCHING -} - -/* 80C87210-80C87214 000F10 0004+00 1/0 0/0 0/0 .text mode_end__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::mode_end() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80C87A0C-80C87A10 00006C 0004+00 0/1 0/0 0/0 .rodata @4067 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4067 = 2700.0f; -COMPILER_STRIP_GATE(0x80C87A0C, &lit_4067); -#pragma pop - -/* 80C87A10-80C87A14 000070 0004+00 0/1 0/0 0/0 .rodata @4068 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4068 = -80.0f; -COMPILER_STRIP_GATE(0x80C87A10, &lit_4068); -#pragma pop - -/* 80C87A14-80C87A18 000074 0004+00 0/1 0/0 0/0 .rodata @4069 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4069 = 450.0f; -COMPILER_STRIP_GATE(0x80C87A14, &lit_4069); -#pragma pop - -/* 80C87A18-80C87A1C 000078 0004+00 0/1 0/0 0/0 .rodata @4070 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4070 = -450.0f; -COMPILER_STRIP_GATE(0x80C87A18, &lit_4070); -#pragma pop - -/* 80C87A1C-80C87A20 00007C 0004+00 0/1 0/0 0/0 .rodata @4071 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4071 = -2700.0f; -COMPILER_STRIP_GATE(0x80C87A1C, &lit_4071); -#pragma pop - -/* 80C87214-80C87304 000F14 00F0+00 1/1 0/0 0/0 .text calcCoPos__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::calcCoPos() { - // NONMATCHING -} - -/* 80C87304-80C87458 001004 0154+00 1/0 0/0 0/0 .text Draw__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::Draw() { - // NONMATCHING -} - -/* 80C87458-80C874CC 001158 0074+00 1/0 0/0 0/0 .text Delete__13daObjLv7Brg_cFv */ -void daObjLv7Brg_c::Delete() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C87B8C-80C87BB4 000158 0028+00 1/1 0/0 0/0 .data __vt__13daObjLv7Brg_c */ -SECTION_DATA extern void* __vt__13daObjLv7Brg_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjLv7Brg_cFv, - (void*)Create__13daObjLv7Brg_cFv, - (void*)Execute__13daObjLv7Brg_cFPPA3_A4_f, - (void*)Draw__13daObjLv7Brg_cFv, - (void*)Delete__13daObjLv7Brg_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C874CC-80C875B8 0011CC 00EC+00 1/0 0/0 0/0 .text daObjLv7Brg_create1st__FP13daObjLv7Brg_c */ -static void daObjLv7Brg_create1st(daObjLv7Brg_c* param_0) { - // NONMATCHING -} - -/* 80C875B8-80C87684 0012B8 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_CylFv */ -// dCcD_Cyl::~dCcD_Cyl() { -extern "C" void __dt__8dCcD_CylFv() { - // NONMATCHING -} - -/* 80C87684-80C87708 001384 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_CylFv */ -// dCcD_Cyl::dCcD_Cyl() { -extern "C" void __ct__8dCcD_CylFv() { - // NONMATCHING -} - -/* 80C87708-80C87750 001408 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80C87750-80C87798 001450 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C87798-80C877F4 001498 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C877F4-80C87864 0014F4 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80C87864-80C878D4 001564 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80C878D4-80C878F4 0015D4 0020+00 1/0 0/0 0/0 .text daObjLv7Brg_MoveBGDelete__FP13daObjLv7Brg_c - */ -static void daObjLv7Brg_MoveBGDelete(daObjLv7Brg_c* param_0) { - // NONMATCHING -} - -/* 80C878F4-80C87914 0015F4 0020+00 1/0 0/0 0/0 .text daObjLv7Brg_MoveBGExecute__FP13daObjLv7Brg_c - */ -static void daObjLv7Brg_MoveBGExecute(daObjLv7Brg_c* param_0) { - // NONMATCHING -} - -/* 80C87914-80C87940 001614 002C+00 1/0 0/0 0/0 .text daObjLv7Brg_MoveBGDraw__FP13daObjLv7Brg_c */ -static void daObjLv7Brg_MoveBGDraw(daObjLv7Brg_c* param_0) { - // NONMATCHING -} - -/* 80C87940-80C87988 001640 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C87988-80C87990 001688 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80C87988() { - // NONMATCHING -} - -/* 80C87990-80C87998 001690 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80C87990() { - // NONMATCHING -} - -/* 80C87A20-80C87A20 000080 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_lv8KekkaiTrap.cpp b/src/d/actor/d_a_obj_lv8KekkaiTrap.cpp index 95b1d291c32..ff8e26847f5 100644 --- a/src/d/actor/d_a_obj_lv8KekkaiTrap.cpp +++ b/src/d/actor/d_a_obj_lv8KekkaiTrap.cpp @@ -6,152 +6,236 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_lv8KekkaiTrap.h" -#include "dol2asm.h" +class daKekaiTrap_HIO_c : public mDoHIO_entry_c { +public: + /* 80C87CAC */ daKekaiTrap_HIO_c(); + /* 80C88438 */ virtual ~daKekaiTrap_HIO_c() {} + void genMessage(JORMContext*); -// -// Forward References: -// - -extern "C" void __ct__17daKekaiTrap_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__13daKekaiTrap_cFv(); -extern "C" void CreateHeap__13daKekaiTrap_cFv(); -extern "C" void create__13daKekaiTrap_cFv(); -extern "C" void Execute__13daKekaiTrap_cFPPA3_A4_f(); -extern "C" void moveMain__13daKekaiTrap_cFv(); -extern "C" void init_modeWait__13daKekaiTrap_cFv(); -extern "C" void modeWait__13daKekaiTrap_cFv(); -extern "C" void init_modeMoveUp__13daKekaiTrap_cFv(); -extern "C" void modeMoveUp__13daKekaiTrap_cFv(); -extern "C" void init_modeMoveDown__13daKekaiTrap_cFv(); -extern "C" void modeMoveDown__13daKekaiTrap_cFv(); -extern "C" void Draw__13daKekaiTrap_cFv(); -extern "C" void Delete__13daKekaiTrap_cFv(); -extern "C" static void daKekaiTrap_Draw__FP13daKekaiTrap_c(); -extern "C" static void daKekaiTrap_Execute__FP13daKekaiTrap_c(); -extern "C" static void daKekaiTrap_Delete__FP13daKekaiTrap_c(); -extern "C" static void daKekaiTrap_Create__FP10fopAc_ac_c(); -extern "C" void __dt__17daKekaiTrap_HIO_cFv(); -extern "C" void __sinit_d_a_obj_lv8KekkaiTrap_cpp(); -extern "C" extern char const* const d_a_obj_lv8KekkaiTrap__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_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -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 Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool Create__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 settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C884E4-80C884E8 000000 0004+00 4/4 0/0 0/0 .rodata @3651 */ -SECTION_RODATA static u8 const lit_3651[4] = { - 0x00, - 0x00, - 0x00, - 0x00, + /* 0x04 */ f32 appear_init_speed; + /* 0x08 */ f32 appear_max_speed; + /* 0x0C */ u8 appear_wait; + /* 0x10 */ f32 disappear_init_speed; + /* 0x14 */ f32 disappear_max_speed; + /* 0x18 */ u8 disappear_wait; }; -COMPILER_STRIP_GATE(0x80C884E4, &lit_3651); -/* 80C884E8-80C884EC 000004 0004+00 1/1 0/0 0/0 .rodata @3652 */ -SECTION_RODATA static f32 const lit_3652 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C884E8, &lit_3652); - -/* 80C884F8-80C884F8 000014 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C884F8 = "Lv8Kekkai"; -#pragma pop +/* 80C8861C-80C88638 000014 001C+00 5/5 0/0 0/0 .bss l_HIO */ +static daKekaiTrap_HIO_c l_HIO; /* 80C88524-80C88528 -00001 0004+00 3/3 0/0 0/0 .data l_type */ -SECTION_DATA static void* l_type = (void*)&d_a_obj_lv8KekkaiTrap__stringBase0; +static char* l_type[] = {"Lv8Kekkai"}; /* 80C88528-80C8852C 000024 0004+00 1/1 0/0 0/0 .data l_bmdIdx */ -SECTION_DATA static u32 l_bmdIdx = 0x00000004; +static int l_bmdIdx[] = {4}; /* 80C8852C-80C88530 000028 0004+00 1/1 0/0 0/0 .data l_dzbIdx */ -SECTION_DATA static u32 l_dzbIdx = 0x00000007; +static int l_dzbIdx[] = {7}; -/* 80C88530-80C8853C -00001 000C+00 0/1 0/0 0/0 .data @3756 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3756[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWait__13daKekaiTrap_cFv, -}; -#pragma pop +/* 80C87CAC-80C87CF8 0000EC 004C+00 1/1 0/0 0/0 .text __ct__17daKekaiTrap_HIO_cFv */ +daKekaiTrap_HIO_c::daKekaiTrap_HIO_c() { + appear_init_speed = 0.0f; + appear_max_speed = 0.7f; + appear_wait = 10; + disappear_init_speed = 0.0f; + disappear_max_speed = 0.7f; + disappear_wait = 30; +} -/* 80C8853C-80C88548 -00001 000C+00 0/1 0/0 0/0 .data @3757 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3757[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMoveUp__13daKekaiTrap_cFv, -}; -#pragma pop +/* 80C87D40-80C87DC8 000180 0088+00 2/2 0/0 0/0 .text setBaseMtx__13daKekaiTrap_cFv */ +void daKekaiTrap_c::setBaseMtx() { + 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->setBaseScale(scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} -/* 80C88548-80C88554 -00001 000C+00 0/1 0/0 0/0 .data @3758 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3758[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeMoveDown__13daKekaiTrap_cFv, -}; -#pragma pop +/* 80C87DC8-80C87E48 000208 0080+00 1/0 0/0 0/0 .text CreateHeap__13daKekaiTrap_cFv */ +int daKekaiTrap_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_type[mType], l_bmdIdx[mType]); + JUT_ASSERT(170, modelData != NULL); -/* 80C88554-80C88578 000050 0024+00 0/1 0/0 0/0 .data mode_proc$3755 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[36] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + return 1; +} + +/* 80C87E48-80C87FB0 000288 0168+00 1/1 0/0 0/0 .text create__13daKekaiTrap_cFv */ +int daKekaiTrap_c::create() { + fopAcM_ct(this, daKekaiTrap_c); + + mType = getType(); + + int phase_state = dComIfG_resLoad(&mPhase, l_type[mType]); + if (phase_state == cPhs_COMPLEATE_e) { + if (MoveBGCreate(l_type[mType], l_dzbIdx[mType], dBgS_MoveBGProc_TypicalRotY, 0x4000, NULL) == cPhs_ERROR_e) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + + mSwbit = getSwBit(); + mIsSwitch = fopAcM_isSwitch(this, mSwbit); + if (!mIsSwitch) { + if (mpBgW != NULL) { + dComIfG_Bgsp().Release(mpBgW); + } + scale.y = 0.0f; + } + + init_modeWait(); + setBaseMtx(); + + #if DEBUG + l_HIO.entryHIO("結界トラップ(Lv8)"); + #endif + } + + return phase_state; +} + +/* 80C87FB0-80C88000 0003F0 0050+00 1/0 0/0 0/0 .text Execute__13daKekaiTrap_cFPPA3_A4_f + */ +int daKekaiTrap_c::Execute(Mtx** param_0) { + moveMain(); + *param_0 = &mpModel->getBaseTRMtx(); + setBaseMtx(); + return 1; +} + +/* 80C88000-80C88104 000440 0104+00 1/1 0/0 0/0 .text moveMain__13daKekaiTrap_cFv */ +void daKekaiTrap_c::moveMain() { + static void (daKekaiTrap_c::*mode_proc[])() = { + &daKekaiTrap_c::modeWait, + &daKekaiTrap_c::modeMoveUp, + &daKekaiTrap_c::modeMoveDown, + }; + + u8 prev_switch = mIsSwitch; + mIsSwitch = fopAcM_isSwitch(this, mSwbit); + if (mIsSwitch != prev_switch) { + if (mIsSwitch) { + init_modeMoveUp(); + } else { + init_modeMoveDown(); + } + } + + (this->*mode_proc[mMode])(); +} + +/* 80C88104-80C88110 000544 000C+00 3/3 0/0 0/0 .text init_modeWait__13daKekaiTrap_cFv */ +void daKekaiTrap_c::init_modeWait() { + mMode = 0; +} + +/* 80C88110-80C88114 000550 0004+00 1/0 0/0 0/0 .text modeWait__13daKekaiTrap_cFv */ +void daKekaiTrap_c::modeWait() {} + +/* 80C88114-80C88138 000554 0024+00 1/1 0/0 0/0 .text init_modeMoveUp__13daKekaiTrap_cFv + */ +void daKekaiTrap_c::init_modeMoveUp() { + fopAcM_SetSpeedF(this, l_HIO.appear_init_speed); + mTimer = l_HIO.appear_wait; + mMode = 1; +} + +/* 80C88138-80C881F0 000578 00B8+00 1/0 0/0 0/0 .text modeMoveUp__13daKekaiTrap_cFv */ +void daKekaiTrap_c::modeMoveUp() { + if (mTimer != 0) { + mTimer--; + return; + } + + cLib_chaseF(&speedF, l_HIO.appear_max_speed, l_HIO.appear_max_speed / 30.0f); + + if (cLib_addCalc(&scale.y, 1.0f, 1.0f, fopAcM_GetSpeedF(this), 0.03f) == 0.0f) { + if (mpBgW != NULL) { + dComIfG_Bgsp().Regist(mpBgW, this); + } + init_modeWait(); + } +} + +/* 80C881F0-80C88214 000630 0024+00 1/1 0/0 0/0 .text init_modeMoveDown__13daKekaiTrap_cFv */ +void daKekaiTrap_c::init_modeMoveDown() { + fopAcM_SetSpeedF(this, l_HIO.disappear_init_speed); + mTimer = l_HIO.disappear_wait; + mMode = 2; +} + +/* 80C88214-80C882C8 000654 00B4+00 1/0 0/0 0/0 .text modeMoveDown__13daKekaiTrap_cFv */ +void daKekaiTrap_c::modeMoveDown() { + if (mTimer != 0) { + mTimer--; + return; + } + + cLib_chaseF(&speedF, l_HIO.disappear_max_speed, l_HIO.disappear_max_speed / 30.0f); + + if (cLib_addCalc(&scale.y, 0.0f, 1.0f, fopAcM_GetSpeedF(this), 0.03f) == 0.0f) { + if (mpBgW != NULL) { + dComIfG_Bgsp().Release(mpBgW); + } + init_modeWait(); + } +} + +/* 80C882C8-80C8836C 000708 00A4+00 1/0 0/0 0/0 .text Draw__13daKekaiTrap_cFv */ +int daKekaiTrap_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; +} + +/* 80C8836C-80C883AC 0007AC 0040+00 1/0 0/0 0/0 .text Delete__13daKekaiTrap_cFv */ +int daKekaiTrap_c::Delete() { + dComIfG_resDelete(&mPhase, l_type[mType]); + #if DEBUG + l_HIO.removeHIO(); + #endif + return 1; +} + +/* 80C883AC-80C883D8 0007EC 002C+00 1/0 0/0 0/0 .text daKekaiTrap_Draw__FP13daKekaiTrap_c + */ +static int daKekaiTrap_Draw(daKekaiTrap_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 80C883D8-80C883F8 000818 0020+00 1/0 0/0 0/0 .text daKekaiTrap_Execute__FP13daKekaiTrap_c */ +static int daKekaiTrap_Execute(daKekaiTrap_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C883F8-80C88418 000838 0020+00 1/0 0/0 0/0 .text daKekaiTrap_Delete__FP13daKekaiTrap_c */ +static int daKekaiTrap_Delete(daKekaiTrap_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C88418-80C88438 000858 0020+00 1/0 0/0 0/0 .text daKekaiTrap_Create__FP10fopAc_ac_c + */ +static int daKekaiTrap_Create(fopAc_ac_c* i_this) { + return ((daKekaiTrap_c*)i_this)->create(); +} /* 80C88578-80C88598 -00001 0020+00 1/0 0/0 0/0 .data l_daKekaiTrap_Method */ static actor_method_class l_daKekaiTrap_Method = { - (process_method_func)daKekaiTrap_Create__FP10fopAc_ac_c, - (process_method_func)daKekaiTrap_Delete__FP13daKekaiTrap_c, - (process_method_func)daKekaiTrap_Execute__FP13daKekaiTrap_c, - 0, - (process_method_func)daKekaiTrap_Draw__FP13daKekaiTrap_c, + (process_method_func)daKekaiTrap_Create, + (process_method_func)daKekaiTrap_Delete, + (process_method_func)daKekaiTrap_Execute, + NULL, + (process_method_func)daKekaiTrap_Draw, }; /* 80C88598-80C885C8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv8KekkaiTrap */ @@ -171,181 +255,3 @@ extern actor_process_profile_definition g_profile_Obj_Lv8KekkaiTrap = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C885C8-80C885F0 0000C4 0028+00 1/1 0/0 0/0 .data __vt__13daKekaiTrap_c */ -SECTION_DATA extern void* __vt__13daKekaiTrap_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daKekaiTrap_cFv, - (void*)Create__16dBgS_MoveBgActorFv, - (void*)Execute__13daKekaiTrap_cFPPA3_A4_f, - (void*)Draw__13daKekaiTrap_cFv, - (void*)Delete__13daKekaiTrap_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C885F0-80C885FC 0000EC 000C+00 2/2 0/0 0/0 .data __vt__17daKekaiTrap_HIO_c */ -SECTION_DATA extern void* __vt__17daKekaiTrap_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17daKekaiTrap_HIO_cFv, -}; - -/* 80C885FC-80C88608 0000F8 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */ -SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14mDoHIO_entry_cFv, -}; - -/* 80C87CAC-80C87CF8 0000EC 004C+00 1/1 0/0 0/0 .text __ct__17daKekaiTrap_HIO_cFv */ -daKekaiTrap_HIO_c::daKekaiTrap_HIO_c() { - // NONMATCHING -} - -/* 80C87CF8-80C87D40 000138 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */ -// mDoHIO_entry_c::~mDoHIO_entry_c() { -extern "C" void __dt__14mDoHIO_entry_cFv() { - // NONMATCHING -} - -/* 80C87D40-80C87DC8 000180 0088+00 2/2 0/0 0/0 .text setBaseMtx__13daKekaiTrap_cFv */ -void daKekaiTrap_c::setBaseMtx() { - // NONMATCHING -} - -/* 80C87DC8-80C87E48 000208 0080+00 1/0 0/0 0/0 .text CreateHeap__13daKekaiTrap_cFv */ -void daKekaiTrap_c::CreateHeap() { - // NONMATCHING -} - -/* 80C87E48-80C87FB0 000288 0168+00 1/1 0/0 0/0 .text create__13daKekaiTrap_cFv */ -void daKekaiTrap_c::create() { - // NONMATCHING -} - -/* 80C87FB0-80C88000 0003F0 0050+00 1/0 0/0 0/0 .text Execute__13daKekaiTrap_cFPPA3_A4_f - */ -void daKekaiTrap_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C88610-80C8861C 000008 000C+00 1/1 0/0 0/0 .bss @3645 */ -static u8 lit_3645[12]; - -/* 80C8861C-80C88638 000014 001C+00 5/5 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[28]; - -/* 80C88638-80C8863C 000030 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80C88638[4]; - -/* 80C88000-80C88104 000440 0104+00 1/1 0/0 0/0 .text moveMain__13daKekaiTrap_cFv */ -void daKekaiTrap_c::moveMain() { - // NONMATCHING -} - -/* 80C88104-80C88110 000544 000C+00 3/3 0/0 0/0 .text init_modeWait__13daKekaiTrap_cFv */ -void daKekaiTrap_c::init_modeWait() { - // NONMATCHING -} - -/* 80C88110-80C88114 000550 0004+00 1/0 0/0 0/0 .text modeWait__13daKekaiTrap_cFv */ -void daKekaiTrap_c::modeWait() { - /* empty function */ -} - -/* 80C88114-80C88138 000554 0024+00 1/1 0/0 0/0 .text init_modeMoveUp__13daKekaiTrap_cFv - */ -void daKekaiTrap_c::init_modeMoveUp() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C884EC-80C884F0 000008 0004+00 0/2 0/0 0/0 .rodata @3802 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3802 = 30.0f; -COMPILER_STRIP_GATE(0x80C884EC, &lit_3802); -#pragma pop - -/* 80C884F0-80C884F4 00000C 0004+00 0/2 0/0 0/0 .rodata @3803 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3803 = 1.0f; -COMPILER_STRIP_GATE(0x80C884F0, &lit_3803); -#pragma pop - -/* 80C884F4-80C884F8 000010 0004+00 0/2 0/0 0/0 .rodata @3804 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3804 = 3.0f / 100.0f; -COMPILER_STRIP_GATE(0x80C884F4, &lit_3804); -#pragma pop - -/* 80C88138-80C881F0 000578 00B8+00 1/0 0/0 0/0 .text modeMoveUp__13daKekaiTrap_cFv */ -void daKekaiTrap_c::modeMoveUp() { - // NONMATCHING -} - -/* 80C881F0-80C88214 000630 0024+00 1/1 0/0 0/0 .text init_modeMoveDown__13daKekaiTrap_cFv */ -void daKekaiTrap_c::init_modeMoveDown() { - // NONMATCHING -} - -/* 80C88214-80C882C8 000654 00B4+00 1/0 0/0 0/0 .text modeMoveDown__13daKekaiTrap_cFv */ -void daKekaiTrap_c::modeMoveDown() { - // NONMATCHING -} - -/* 80C882C8-80C8836C 000708 00A4+00 1/0 0/0 0/0 .text Draw__13daKekaiTrap_cFv */ -void daKekaiTrap_c::Draw() { - // NONMATCHING -} - -/* 80C8836C-80C883AC 0007AC 0040+00 1/0 0/0 0/0 .text Delete__13daKekaiTrap_cFv */ -void daKekaiTrap_c::Delete() { - // NONMATCHING -} - -/* 80C883AC-80C883D8 0007EC 002C+00 1/0 0/0 0/0 .text daKekaiTrap_Draw__FP13daKekaiTrap_c - */ -static void daKekaiTrap_Draw(daKekaiTrap_c* param_0) { - // NONMATCHING -} - -/* 80C883D8-80C883F8 000818 0020+00 1/0 0/0 0/0 .text daKekaiTrap_Execute__FP13daKekaiTrap_c */ -static void daKekaiTrap_Execute(daKekaiTrap_c* param_0) { - // NONMATCHING -} - -/* 80C883F8-80C88418 000838 0020+00 1/0 0/0 0/0 .text daKekaiTrap_Delete__FP13daKekaiTrap_c */ -static void daKekaiTrap_Delete(daKekaiTrap_c* param_0) { - // NONMATCHING -} - -/* 80C88418-80C88438 000858 0020+00 1/0 0/0 0/0 .text daKekaiTrap_Create__FP10fopAc_ac_c - */ -static void daKekaiTrap_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80C88438-80C88494 000878 005C+00 2/1 0/0 0/0 .text __dt__17daKekaiTrap_HIO_cFv */ -daKekaiTrap_HIO_c::~daKekaiTrap_HIO_c() { - // NONMATCHING -} - -/* 80C88494-80C884D0 0008D4 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv8KekkaiTrap_cpp - */ -void __sinit_d_a_obj_lv8KekkaiTrap_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C88494, __sinit_d_a_obj_lv8KekkaiTrap_cpp); -#pragma pop - -/* 80C884F8-80C884F8 000014 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_nougu.cpp b/src/d/actor/d_a_obj_nougu.cpp index fd7211a03c0..aeb729f17f9 100644 --- a/src/d/actor/d_a_obj_nougu.cpp +++ b/src/d/actor/d_a_obj_nougu.cpp @@ -6,131 +6,231 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_nougu.h" -#include "dol2asm.h" - - - -// -// Forward References: -// - -extern "C" void __dt__13daObj_Nougu_cFv(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void create__13daObj_Nougu_cFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void CreateHeap__13daObj_Nougu_cFv(); -extern "C" void Delete__13daObj_Nougu_cFv(); -extern "C" void Execute__13daObj_Nougu_cFv(); -extern "C" void Draw__13daObj_Nougu_cFv(); -extern "C" void createHeapCallBack__13daObj_Nougu_cFP10fopAc_ac_c(); -extern "C" void getResName__13daObj_Nougu_cFv(); -extern "C" void isDelete__13daObj_Nougu_cFv(); -extern "C" void setEnvTevColor__13daObj_Nougu_cFv(); -extern "C" void setRoomNo__13daObj_Nougu_cFv(); -extern "C" void setMtx__13daObj_Nougu_cFv(); -extern "C" static void daObj_Nougu_Create__FPv(); -extern "C" static void daObj_Nougu_Delete__FPv(); -extern "C" static void daObj_Nougu_Execute__FPv(); -extern "C" static void daObj_Nougu_Draw__FPv(); -extern "C" static bool daObj_Nougu_IsDelete__FPv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __sinit_d_a_obj_nougu_cpp(); -extern "C" void __dt__19daObj_Nougu_Param_cFv(); -extern "C" static void func_80CA4994(); -extern "C" static void func_80CA499C(); -extern "C" u8 const m__19daObj_Nougu_Param_c[16]; -extern "C" extern char const* const d_a_obj_nougu__stringBase0; -extern "C" u8 mCcDSph__13daObj_Nougu_c[64]; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -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 -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void __ct__12dBgS_AcchCirFv(); -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 SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __ct__11cBgS_GndChkFv(); -extern "C" void __dt__11cBgS_GndChkFv(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void __dl__FPv(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_24(); -extern "C" void _restgpr_24(); -extern "C" u8 const mCcDObjData__8daNpcT_c[48]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80CA49F8-80CA49F8 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CA49F8 = "Jagar4"; -#pragma pop +#include "d/actor/d_a_npc.h" +#include "SSystem/SComponent/c_counter.h" /* 80CA4A00-80CA4A40 000000 0040+00 2/2 0/0 0/0 .data mCcDSph__13daObj_Nougu_c */ -SECTION_DATA u8 daObj_Nougu_c::mCcDSph[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +dCcD_SrcSph daObj_Nougu_c::mCcDSph = { + daNpcT_c::mCcDObjData, + { + {{0.0f, 0.0f, 0.0f}, 0.0f} + }, }; /* 80CA4A40-80CA4A44 -00001 0004+00 1/1 0/0 0/0 .data l_resName */ -SECTION_DATA static void* l_resName = (void*)&d_a_obj_nougu__stringBase0; +static char* l_resName = "Jagar4"; + +/* 80CA3C0C-80CA3D58 0000EC 014C+00 1/0 0/0 0/0 .text __dt__13daObj_Nougu_cFv */ +daObj_Nougu_c::~daObj_Nougu_c() { + OS_REPORT("|%06d:%x|daObj_Nougu_c -> デストラクト\n", g_Counter.mCounter0, this); + dComIfG_resDelete(&mPhase, getResName()); +} + +/* 80CA49B8-80CA49C8 000000 0010+00 3/3 0/0 0/0 .rodata m__19daObj_Nougu_Param_c */ +const daObj_Nougu_HIOParam daObj_Nougu_Param_c::m = { + 0.0f, + -3.0f, + 1.0f, + 200.0f +}; + +/* 80CA3E24-80CA40D8 000304 02B4+00 1/1 0/0 0/0 .text create__13daObj_Nougu_cFv */ +int daObj_Nougu_c::create() { + fopAcM_ct(this, daObj_Nougu_c); + + mType = getType(); + + int phase_state = dComIfG_resLoad(&mPhase, getResName()); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("\t(%s:%d) <%08x> -> roomNo.%d", fopAcM_getProcNameString(this), getType(), fopAcM_GetParam(this), fopAcM_GetRoomNo(this)); + + if (isDelete()) { + OS_REPORT("===>isDelete:TRUE\n"); + return cPhs_ERROR_e; + } + + OS_REPORT("\n"); + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x800)) { + return cPhs_ERROR_e; + } + + mpModel->getModelData(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox(this, -75.0f, -50.0f, -100.0f, 75.0f, 50.0f, 100.0f); + + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); + + mCcStts.Init(0xFF, 0, this); + + for (int i = 0; i < 5; i++) { + mCcSph[i].Set(mCcDSph); + mCcSph[i].SetStts(&mCcStts); + } + + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + + mGroundH = mAcch.GetGroundH(); + if (-G_CM3D_F_INF != mGroundH) { + setEnvTevColor(); + setRoomNo(); + } + + Execute(); + } + + return phase_state; +} + +/* 80CA4328-80CA43A0 000808 0078+00 1/1 0/0 0/0 .text CreateHeap__13daObj_Nougu_cFv */ +int daObj_Nougu_c::CreateHeap() { + J3DModelData* mdlData_p = (J3DModelData*)dComIfG_getObjectRes(getResName(), 3); + if (mdlData_p == NULL) { + return 0; + } + + mpModel = mDoExt_J3DModel__create(mdlData_p, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + return 1; +} + +/* 80CA43A0-80CA43D4 000880 0034+00 1/1 0/0 0/0 .text Delete__13daObj_Nougu_cFv */ +int daObj_Nougu_c::Delete() { + OS_REPORT("|%06d:%x|daObj_Nougu_c -> Delete\n", g_Counter.mCounter0, this); + this->~daObj_Nougu_c(); + return 1; +} + +/* 80CA43D4-80CA45F4 0008B4 0220+00 2/2 0/0 0/0 .text Execute__13daObj_Nougu_cFv */ +int daObj_Nougu_c::Execute() { + cXyz sp14; + cXyz sp8; + + mAcch.CrrPos(dComIfG_Bgsp()); + mGndChk = mAcch.m_gnd; + mGroundH = mAcch.GetGroundH(); + + if (-G_CM3D_F_INF != mGroundH) { + setEnvTevColor(); + setRoomNo(); + } + + setMtx(); + + f32 var_f31 = 60.0f; + for (int i = 0; i < 5; i++) { + sp14.set(0.0f, 0.0f, var_f31); + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&sp14, &sp14); + sp14 += current.pos; + + mCcSph[i].SetC(sp14); + mCcSph[i].SetR(30.0f); + dComIfG_Ccsp()->Set(&mCcSph[i]); + + mCcSph[i].ClrCoHit(); + var_f31 -= 30.0f; + } + + attention_info.position = current.pos; + attention_info.position.y += daObj_Nougu_Param_c::m.attention_offset; + eyePos = attention_info.position; + attention_info.flags = 0; + return 1; +} + +/* 80CA45F4-80CA46B8 000AD4 00C4+00 1/1 0/0 0/0 .text Draw__13daObj_Nougu_cFv */ +int daObj_Nougu_c::Draw() { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + mDoExt_modelUpdateDL(mpModel); + + if (-G_CM3D_F_INF != mGroundH) { + mShadowId = dComIfGd_setShadow(mShadowId, 1, mpModel, ¤t.pos, daObj_Nougu_Param_c::m.shadow_size, 20.0f, current.pos.y, mGroundH, mGndChk, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + + return 1; +} + +/* 80CA46B8-80CA46D8 000B98 0020+00 1/1 0/0 0/0 .text + * createHeapCallBack__13daObj_Nougu_cFP10fopAc_ac_c */ +int daObj_Nougu_c::createHeapCallBack(fopAc_ac_c* i_this) { + return ((daObj_Nougu_c*)i_this)->CreateHeap(); +} + +/* 80CA46D8-80CA46E8 000BB8 0010+00 3/3 0/0 0/0 .text getResName__13daObj_Nougu_cFv */ +const char* daObj_Nougu_c::getResName() { + return l_resName; +} + +/* 80CA46E8-80CA4708 000BC8 0020+00 1/1 0/0 0/0 .text isDelete__13daObj_Nougu_cFv */ +int daObj_Nougu_c::isDelete() { + switch (mType) { + case 0: + return 0; + } + + return 0; +} + +/* 80CA4708-80CA4764 000BE8 005C+00 2/2 0/0 0/0 .text setEnvTevColor__13daObj_Nougu_cFv + */ +void daObj_Nougu_c::setEnvTevColor() { + tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(mGndChk); + tevStr.room_no = dComIfG_Bgsp().GetRoomId(mGndChk); +} + +/* 80CA4764-80CA47A4 000C44 0040+00 2/2 0/0 0/0 .text setRoomNo__13daObj_Nougu_cFv */ +void daObj_Nougu_c::setRoomNo() { + fopAcM_SetRoomNo(this, dComIfG_Bgsp().GetRoomId(mGndChk)); +} + +/* 80CA47A4-80CA4808 000C84 0064+00 1/1 0/0 0/0 .text setMtx__13daObj_Nougu_cFv */ +void daObj_Nougu_c::setMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} + +/* 80CA4808-80CA4828 000CE8 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Create__FPv */ +static int daObj_Nougu_Create(void* i_this) { + return ((daObj_Nougu_c*)i_this)->create(); +} + +/* 80CA4828-80CA4848 000D08 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Delete__FPv */ +static int daObj_Nougu_Delete(void* i_this) { + return ((daObj_Nougu_c*)i_this)->Delete(); +} + +/* 80CA4848-80CA4868 000D28 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Execute__FPv */ +static int daObj_Nougu_Execute(void* i_this) { + return ((daObj_Nougu_c*)i_this)->Execute(); +} + +/* 80CA4868-80CA4888 000D48 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Draw__FPv */ +static int daObj_Nougu_Draw(void* i_this) { + return ((daObj_Nougu_c*)i_this)->Draw(); +} + +/* 80CA4888-80CA4890 000D68 0008+00 1/0 0/0 0/0 .text daObj_Nougu_IsDelete__FPv */ +static int daObj_Nougu_IsDelete(void* i_this) { + return 1; +} + +/* 80CA4B24-80CA4B28 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +static daObj_Nougu_Param_c l_HIO; /* 80CA4A44-80CA4A64 -00001 0020+00 1/0 0/0 0/0 .data daObj_Nougu_MethodTable */ static actor_method_class daObj_Nougu_MethodTable = { - (process_method_func)daObj_Nougu_Create__FPv, - (process_method_func)daObj_Nougu_Delete__FPv, - (process_method_func)daObj_Nougu_Execute__FPv, - (process_method_func)daObj_Nougu_IsDelete__FPv, - (process_method_func)daObj_Nougu_Draw__FPv, + (process_method_func)daObj_Nougu_Create, + (process_method_func)daObj_Nougu_Delete, + (process_method_func)daObj_Nougu_Execute, + (process_method_func)daObj_Nougu_IsDelete, + (process_method_func)daObj_Nougu_Draw, }; /* 80CA4A64-80CA4A94 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_NOUGU */ @@ -150,332 +250,3 @@ extern actor_process_profile_definition g_profile_OBJ_NOUGU = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80CA4A94-80CA4AA0 000094 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80CA4AA0-80CA4AAC 0000A0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80CA4AAC-80CA4AD0 0000AC 0024+00 3/3 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_80CA499C, - (void*)NULL, - (void*)NULL, - (void*)func_80CA4994, -}; - -/* 80CA4AD0-80CA4ADC 0000D0 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80CA4ADC-80CA4AE8 0000DC 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80CA4AE8-80CA4AF4 0000E8 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80CA4AF4-80CA4B00 0000F4 000C+00 2/2 0/0 0/0 .data __vt__13daObj_Nougu_c */ -SECTION_DATA extern void* __vt__13daObj_Nougu_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__13daObj_Nougu_cFv, -}; - -/* 80CA3C0C-80CA3D58 0000EC 014C+00 1/0 0/0 0/0 .text __dt__13daObj_Nougu_cFv */ -daObj_Nougu_c::~daObj_Nougu_c() { - // NONMATCHING -} - -/* 80CA3D58-80CA3E24 000238 00CC+00 2/2 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CA49B8-80CA49C8 000000 0010+00 3/3 0/0 0/0 .rodata m__19daObj_Nougu_Param_c */ -SECTION_RODATA u8 const daObj_Nougu_Param_c::m[16] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CA49B8, &daObj_Nougu_Param_c::m); - -/* 80CA49C8-80CA49CC 000010 0004+00 0/1 0/0 0/0 .rodata @3916 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3916 = -75.0f; -COMPILER_STRIP_GATE(0x80CA49C8, &lit_3916); -#pragma pop - -/* 80CA49CC-80CA49D0 000014 0004+00 0/1 0/0 0/0 .rodata @3917 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3917 = -50.0f; -COMPILER_STRIP_GATE(0x80CA49CC, &lit_3917); -#pragma pop - -/* 80CA49D0-80CA49D4 000018 0004+00 0/1 0/0 0/0 .rodata @3918 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3918 = -100.0f; -COMPILER_STRIP_GATE(0x80CA49D0, &lit_3918); -#pragma pop - -/* 80CA49D4-80CA49D8 00001C 0004+00 0/1 0/0 0/0 .rodata @3919 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3919 = 75.0f; -COMPILER_STRIP_GATE(0x80CA49D4, &lit_3919); -#pragma pop - -/* 80CA49D8-80CA49DC 000020 0004+00 0/1 0/0 0/0 .rodata @3920 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3920 = 50.0f; -COMPILER_STRIP_GATE(0x80CA49D8, &lit_3920); -#pragma pop - -/* 80CA49DC-80CA49E0 000024 0004+00 0/1 0/0 0/0 .rodata @3921 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3921 = 100.0f; -COMPILER_STRIP_GATE(0x80CA49DC, &lit_3921); -#pragma pop - -/* 80CA49E0-80CA49E4 000028 0004+00 0/3 0/0 0/0 .rodata @3922 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3922 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x80CA49E0, &lit_3922); -#pragma pop - -/* 80CA3E24-80CA40D8 000304 02B4+00 1/1 0/0 0/0 .text create__13daObj_Nougu_cFv */ -void daObj_Nougu_c::create() { - // NONMATCHING -} - -/* 80CA40D8-80CA415C 0005B8 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80CA415C-80CA41A4 00063C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80CA41A4-80CA41EC 000684 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80CA41EC-80CA425C 0006CC 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80CA425C-80CA42B8 00073C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CA42B8-80CA4328 000798 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80CA4328-80CA43A0 000808 0078+00 1/1 0/0 0/0 .text CreateHeap__13daObj_Nougu_cFv */ -void daObj_Nougu_c::CreateHeap() { - // NONMATCHING -} - -/* 80CA43A0-80CA43D4 000880 0034+00 1/1 0/0 0/0 .text Delete__13daObj_Nougu_cFv */ -void daObj_Nougu_c::Delete() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CA49E4-80CA49E8 00002C 0004+00 0/1 0/0 0/0 .rodata @4046 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4046 = 60.0f; -COMPILER_STRIP_GATE(0x80CA49E4, &lit_4046); -#pragma pop - -/* 80CA49E8-80CA49EC 000030 0004+00 0/1 0/0 0/0 .rodata @4047 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4047[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CA49E8, &lit_4047); -#pragma pop - -/* 80CA49EC-80CA49F0 000034 0004+00 0/1 0/0 0/0 .rodata @4048 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4048 = 30.0f; -COMPILER_STRIP_GATE(0x80CA49EC, &lit_4048); -#pragma pop - -/* 80CA43D4-80CA45F4 0008B4 0220+00 2/2 0/0 0/0 .text Execute__13daObj_Nougu_cFv */ -void daObj_Nougu_c::Execute() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CA49F0-80CA49F4 000038 0004+00 0/1 0/0 0/0 .rodata @4060 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4060 = 20.0f; -COMPILER_STRIP_GATE(0x80CA49F0, &lit_4060); -#pragma pop - -/* 80CA49F4-80CA49F8 00003C 0004+00 0/1 0/0 0/0 .rodata @4061 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4061 = 1.0f; -COMPILER_STRIP_GATE(0x80CA49F4, &lit_4061); -#pragma pop - -/* 80CA45F4-80CA46B8 000AD4 00C4+00 1/1 0/0 0/0 .text Draw__13daObj_Nougu_cFv */ -void daObj_Nougu_c::Draw() { - // NONMATCHING -} - -/* 80CA46B8-80CA46D8 000B98 0020+00 1/1 0/0 0/0 .text - * createHeapCallBack__13daObj_Nougu_cFP10fopAc_ac_c */ -void daObj_Nougu_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80CA46D8-80CA46E8 000BB8 0010+00 3/3 0/0 0/0 .text getResName__13daObj_Nougu_cFv */ -void daObj_Nougu_c::getResName() { - // NONMATCHING -} - -/* 80CA46E8-80CA4708 000BC8 0020+00 1/1 0/0 0/0 .text isDelete__13daObj_Nougu_cFv */ -void daObj_Nougu_c::isDelete() { - // NONMATCHING -} - -/* 80CA4708-80CA4764 000BE8 005C+00 2/2 0/0 0/0 .text setEnvTevColor__13daObj_Nougu_cFv - */ -void daObj_Nougu_c::setEnvTevColor() { - // NONMATCHING -} - -/* 80CA4764-80CA47A4 000C44 0040+00 2/2 0/0 0/0 .text setRoomNo__13daObj_Nougu_cFv */ -void daObj_Nougu_c::setRoomNo() { - // NONMATCHING -} - -/* 80CA47A4-80CA4808 000C84 0064+00 1/1 0/0 0/0 .text setMtx__13daObj_Nougu_cFv */ -void daObj_Nougu_c::setMtx() { - // NONMATCHING -} - -/* 80CA4808-80CA4828 000CE8 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Create__FPv */ -static void daObj_Nougu_Create(void* param_0) { - // NONMATCHING -} - -/* 80CA4828-80CA4848 000D08 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Delete__FPv */ -static void daObj_Nougu_Delete(void* param_0) { - // NONMATCHING -} - -/* 80CA4848-80CA4868 000D28 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Execute__FPv */ -static void daObj_Nougu_Execute(void* param_0) { - // NONMATCHING -} - -/* 80CA4868-80CA4888 000D48 0020+00 1/0 0/0 0/0 .text daObj_Nougu_Draw__FPv */ -static void daObj_Nougu_Draw(void* param_0) { - // NONMATCHING -} - -/* 80CA4888-80CA4890 000D68 0008+00 1/0 0/0 0/0 .text daObj_Nougu_IsDelete__FPv */ -static bool daObj_Nougu_IsDelete(void* param_0) { - return true; -} - -/* 80CA4890-80CA48D8 000D70 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CA4B00-80CA4B0C 000100 000C+00 2/2 0/0 0/0 .data __vt__19daObj_Nougu_Param_c */ -SECTION_DATA extern void* __vt__19daObj_Nougu_Param_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19daObj_Nougu_Param_cFv, -}; - -/* 80CA4B18-80CA4B24 000008 000C+00 1/1 0/0 0/0 .bss @3805 */ -static u8 lit_3805[12]; - -/* 80CA4B24-80CA4B28 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[4]; - -/* 80CA48D8-80CA494C 000DB8 0074+00 0/0 1/0 0/0 .text __sinit_d_a_obj_nougu_cpp */ -void __sinit_d_a_obj_nougu_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80CA48D8, __sinit_d_a_obj_nougu_cpp); -#pragma pop - -/* 80CA494C-80CA4994 000E2C 0048+00 2/1 0/0 0/0 .text __dt__19daObj_Nougu_Param_cFv */ -daObj_Nougu_Param_c::~daObj_Nougu_Param_c() { - // NONMATCHING -} - -/* 80CA4994-80CA499C 000E74 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80CA4994() { - // NONMATCHING -} - -/* 80CA499C-80CA49A4 000E7C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80CA499C() { - // NONMATCHING -} - -/* 80CA49F8-80CA49F8 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_swspinner.cpp b/src/d/actor/d_a_obj_swspinner.cpp index b38a98b668f..73f63b135a6 100644 --- a/src/d/actor/d_a_obj_swspinner.cpp +++ b/src/d/actor/d_a_obj_swspinner.cpp @@ -56,7 +56,7 @@ void daObjSwSpinner_c::setBaseMtx() { /* 80D00284-80D0035C 000384 00D8+00 1/0 0/0 0/0 .text Create__16daObjSwSpinner_cFv */ int daObjSwSpinner_c::Create() { - if (fopAcM_isSwitch(this, getSwBit2())) { + if (fopAcM_isSwitch(this, getSwbit2())) { mPartBHeight = 50.0f; mCanUse = false; } else { @@ -141,7 +141,7 @@ int daObjSwSpinner_c::Execute(Mtx** param_0) { mCount++; } - if (fopAcM_isSwitch(this, getSwBit2())) { + if (fopAcM_isSwitch(this, getSwbit2())) { if (cLib_addCalc(&mPartBHeight, 50.0f, 0.1f, 10.0f, 2.0f) == 0.0f && mCanUse) { if (mSpinnerIn) { spinner->offSpinnerTag(); @@ -158,13 +158,13 @@ int daObjSwSpinner_c::Execute(Mtx** param_0) { } else if (mSpinnerIn) { if (mCount > 200) { if (mRotSpeedY > 3000) { - fopAcM_onSwitch(this, getSwBit()); + fopAcM_onSwitch(this, getSwbit()); } else { - fopAcM_offSwitch(this, getSwBit()); + fopAcM_offSwitch(this, getSwbit()); } } } else { - dComIfGs_offSwitch(getSwBit() & 0xFF, fopAcM_GetHomeRoomNo(this)); + dComIfGs_offSwitch(getSwbit() & 0xFF, fopAcM_GetHomeRoomNo(this)); } if (mSpinnerIn && !mPrevSpinnerIn) { @@ -182,7 +182,7 @@ int daObjSwSpinner_c::Execute(Mtx** param_0) { attention_info.position = current.pos; attention_info.position.y -= 100.0f; - mPrevIsSwbit2 = fopAcM_isSwitch(this, getSwBit2()); + mPrevIsSwbit2 = fopAcM_isSwitch(this, getSwbit2()); mPrevSpinnerIn = mSpinnerIn; return 1; }