diff --git a/config/GZ2E01/rels/d_a_obj_firepillar/symbols.txt b/config/GZ2E01/rels/d_a_obj_firepillar/symbols.txt index efe72e917e4..34ba7d88813 100644 --- a/config/GZ2E01/rels/d_a_obj_firepillar/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_firepillar/symbols.txt @@ -20,10 +20,10 @@ actionOn__14daObjFPillar_cFv = .text:0x00000800; // type:function size:0xE0 scop drawCylinder__FP4cXyzP4cXyzP5csXyz = .text:0x000008E0; // type:function size:0x4 scope:global draw__14daObjFPillar_cFv = .text:0x000008E4; // type:function size:0x34 scope:global _delete__14daObjFPillar_cFv = .text:0x00000918; // type:function size:0x8 scope:global -daObjFPillar_Draw__FP14daObjFPillar_c = .text:0x00000920; // type:function size:0x20 scope:global -daObjFPillar_Execute__FP14daObjFPillar_c = .text:0x00000940; // type:function size:0x20 scope:global -daObjFPillar_Delete__FP14daObjFPillar_c = .text:0x00000960; // type:function size:0x20 scope:global -daObjFPillar_Create__FP10fopAc_ac_c = .text:0x00000980; // type:function size:0x20 scope:global +daObjFPillar_Draw__FP14daObjFPillar_c = .text:0x00000920; // type:function size:0x20 scope:local +daObjFPillar_Execute__FP14daObjFPillar_c = .text:0x00000940; // type:function size:0x20 scope:local +daObjFPillar_Delete__FP14daObjFPillar_c = .text:0x00000960; // type:function size:0x20 scope:local +daObjFPillar_Create__FP10fopAc_ac_c = .text:0x00000980; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x000009A0; // type:function size:0x48 scope:global @36@__dt__12dBgS_ObjAcchFv = .text:0x000009E8; // type:function size:0x8 scope:local @20@__dt__12dBgS_ObjAcchFv = .text:0x000009F0; // type:function size:0x8 scope:local @@ -38,19 +38,19 @@ _dtors = .dtors:0x00000000; // type:label scope:global @3853 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float @3895 = .rodata:0x00000018; // type:object size:0x4 scope:local ...data.0 = .data:0x00000000; // type:label scope:local -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -l_cull_box = .data:0x00000020; // type:object size:0x18 scope:global data:float -l_cps_src = .data:0x00000038; // type:object size:0x4C scope:global +l_cull_box = .data:0x00000020; // type:object size:0x18 scope:local data:float +l_cps_src = .data:0x00000038; // type:object size:0x4C scope:local @3789 = .data:0x00000084; // type:object size:0xC scope:local @3790 = .data:0x00000090; // type:object size:0xC scope:local @3791 = .data:0x0000009C; // type:object size:0xC scope:local l_func$3788 = .data:0x000000A8; // type:object size:0x24 scope:local -l_daObjFPillar_Method = .data:0x000000CC; // type:object size:0x20 scope:global +l_daObjFPillar_Method = .data:0x000000CC; // type:object size:0x20 scope:local g_profile_Obj_FirePillar = .data:0x000000EC; // type:object size:0x30 scope:global __vt__12dBgS_AcchCir = .data:0x0000011C; // type:object size:0xC scope:global __vt__10cCcD_GStts = .data:0x00000128; // type:object size:0xC scope:global __vt__10dCcD_GStts = .data:0x00000134; // type:object size:0xC scope:global __vt__8cM3dGAab = .data:0x00000140; // type:object size:0xC scope:global __vt__12dBgS_ObjAcch = .data:0x0000014C; // type:object size:0x24 scope:global -lbl_447_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +lbl_447_bss_0 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte diff --git a/config/GZ2E01/rels/d_a_obj_ladder/symbols.txt b/config/GZ2E01/rels/d_a_obj_ladder/symbols.txt index aee176f3f58..9711705a2f9 100644 --- a/config/GZ2E01/rels/d_a_obj_ladder/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_ladder/symbols.txt @@ -22,11 +22,11 @@ set_mtx__Q211daObjLadder5Act_cFv = .text:0x000008F0; // type:function size:0x94 init_mtx__Q211daObjLadder5Act_cFv = .text:0x00000984; // type:function size:0x3C scope:global Execute__Q211daObjLadder5Act_cFPPA3_A4_f = .text:0x000009C0; // type:function size:0x118 scope:global Draw__Q211daObjLadder5Act_cFv = .text:0x00000AD8; // type:function size:0xA4 scope:global -Mthd_Create__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000B7C; // type:function size:0x20 scope:global -Mthd_Delete__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000B9C; // type:function size:0x20 scope:global -Mthd_Execute__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000BBC; // type:function size:0x20 scope:global -Mthd_Draw__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000BDC; // type:function size:0x2C scope:global -Mthd_IsDelete__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000C08; // type:function size:0x2C scope:global +Mthd_Create__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000B7C; // type:function size:0x20 scope:local +Mthd_Delete__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000B9C; // type:function size:0x20 scope:local +Mthd_Execute__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000BBC; // type:function size:0x20 scope:local +Mthd_Draw__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000BDC; // type:function size:0x2C scope:local +Mthd_IsDelete__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv = .text:0x00000C08; // type:function size:0x2C scope:local PrmAbstract__5daObjFPC10fopAc_ac_cQ311daObjLadder5Act_c5Prm_eQ311daObjLadder5Act_c5Prm_e = .text:0x00000C34; // type:function size:0x1C scope:global @20@__dt__14dBgS_ObjGndChkFv = .text:0x00000C50; // type:function size:0x8 scope:local @76@__dt__14dBgS_ObjGndChkFv = .text:0x00000C58; // type:function size:0x8 scope:local @@ -34,7 +34,7 @@ PrmAbstract__5daObjFPC10fopAc_ac_cQ311daObjLadder5A _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global ...rodata.0 = .rodata:0x00000000; // type:label scope:local -L_attr__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ = .rodata:0x00000000; // type:object size:0x24 scope:global +L_attr__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ = .rodata:0x00000000; // type:object size:0x24 scope:local M_arcname__Q211daObjLadder5Act_c = .rodata:0x00000024; // type:object size:0x5 scope:global data:string @3667 = .rodata:0x0000002C; // type:object size:0x4 scope:local @3668 = .rodata:0x00000030; // type:object size:0x4 scope:local @@ -49,18 +49,18 @@ M_arcname__Q211daObjLadder5Act_c = .rodata:0x00000024; // type:object size:0x5 s @3839 = .rodata:0x00000054; // type:object size:0x4 scope:local @3840 = .rodata:0x00000058; // type:object size:0x4 scope:local ...data.0 = .data:0x00000000; // type:label scope:local -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local -L_attr_type__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ = .data:0x00000020; // type:object size:0x30 scope:global +L_attr_type__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ = .data:0x00000020; // type:object size:0x30 scope:local @3878 = .data:0x00000050; // type:object size:0xC scope:local @3879 = .data:0x0000005C; // type:object size:0xC scope:local @3880 = .data:0x00000068; // type:object size:0xC scope:local @3881 = .data:0x00000074; // type:object size:0xC scope:local @3882 = .data:0x00000080; // type:object size:0xC scope:local mode_proc$3877 = .data:0x0000008C; // type:object size:0x3C scope:local -Mthd_Table__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ = .data:0x000000C8; // type:object size:0x20 scope:global +Mthd_Table__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ = .data:0x000000C8; // type:object size:0x20 scope:local g_profile_Obj_Ladder = .data:0x000000E8; // type:object size:0x30 scope:global __vt__14dBgS_ObjGndChk = .data:0x00000118; // type:object size:0x30 scope:global __vt__Q211daObjLadder5Act_c = .data:0x00000148; // type:object size:0x28 scope:global M_tmp_mtx__Q211daObjLadder5Act_c = .bss:0x00000000; // type:object size:0x30 scope:global -lbl_103_bss_30 = .bss:0x00000030; // type:object size:0x1 data:byte +lbl_103_bss_30 = .bss:0x00000030; // type:object size:0x1 scope:local data:byte diff --git a/configure.py b/configure.py index e11d5effb7f..104e2687c3f 100644 --- a/configure.py +++ b/configure.py @@ -1451,7 +1451,7 @@ def JSystemLib(lib_name, objects, progress_category="third_party"): ActorRel(Matching, "d_a_obj_kgate"), ActorRel(NonMatching, "d_a_obj_klift00"), ActorRel(NonMatching, "d_a_obj_ktOnFire"), - ActorRel(NonMatching, "d_a_obj_ladder"), + ActorRel(Matching, "d_a_obj_ladder"), ActorRel(Matching, "d_a_obj_lv2Candle"), ActorRel(NonMatching, "d_a_obj_magne_arm"), ActorRel(NonMatching, "d_a_obj_metalbox"), @@ -1795,7 +1795,7 @@ def JSystemLib(lib_name, objects, progress_category="third_party"): ActorRel(NonMatching, "d_a_obj_fchain"), ActorRel(Matching, "d_a_obj_fireWood"), ActorRel(Matching, "d_a_obj_fireWood2"), - ActorRel(NonMatching, "d_a_obj_firepillar"), + ActorRel(Matching, "d_a_obj_firepillar"), ActorRel(NonMatching, "d_a_obj_firepillar2"), ActorRel(NonMatching, "d_a_obj_flag"), ActorRel(NonMatching, "d_a_obj_flag2"), diff --git a/include/d/actor/d_a_obj_firepillar.h b/include/d/actor/d_a_obj_firepillar.h index 7f6720c59b2..2440ab05515 100644 --- a/include/d/actor/d_a_obj_firepillar.h +++ b/include/d/actor/d_a_obj_firepillar.h @@ -1,7 +1,10 @@ #ifndef D_A_OBJ_FIREPILLAR_H #define D_A_OBJ_FIREPILLAR_H +#include "d/d_bg_s_acch.h" +#include "f_op/f_op_actor.h" #include "f_op/f_op_actor_mng.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -13,11 +16,27 @@ */ class daObjFPillar_c : public fopAc_ac_c { public: + typedef void (daObjFPillar_c::*actionFunc)(); + + enum Action { + ACTION_OFF, + ACTION_ON_WAIT, + ACTION_ON, + }; + + class daObjFPillar_prm { + public: + static u8 getArg0(daObjFPillar_c* i_this) { return fopAcM_GetParam(i_this) >> 8; } + static u8 getArg1(daObjFPillar_c* i_this) { return fopAcM_GetParam(i_this) >> 24; } + static u8 getArg2(daObjFPillar_c* i_this) { return fopAcM_GetParam(i_this) >> 16; } + static u8 getSwNo(daObjFPillar_c* i_this) { return fopAcM_GetParam(i_this); } + }; + /* 80BE9118 */ void initBaseMtx(); /* 80BE9138 */ void setBaseMtx(); - /* 80BE9190 */ void Create(); - /* 80BE9230 */ void create(); - /* 80BE94E4 */ void execute(); + /* 80BE9190 */ int Create(); + /* 80BE9230 */ int create(); + /* 80BE94E4 */ int execute(); /* 80BE9610 */ void action(); /* 80BE96B4 */ void actionOffInit(); /* 80BE96E0 */ void actionOff(); @@ -25,11 +44,22 @@ class daObjFPillar_c : public fopAc_ac_c { /* 80BE97B8 */ void actionOnWait(); /* 80BE986C */ void actionOnInit(); /* 80BE98A0 */ void actionOn(); - /* 80BE9984 */ void draw(); - /* 80BE99B8 */ bool _delete(); + /* 80BE9984 */ int draw(); + /* 80BE99B8 */ int _delete(); private: - /* 0x568 */ u8 field_0x568[0x974 - 0x568]; + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ int field_0x570; + /* 0x574 */ dBgS_ObjAcch mAcch; + /* 0x74C */ dBgS_AcchCir mAcchCir; + /* 0x78C */ dCcD_Stts mStts; + /* 0x7C8 */ dCcD_Cps mCps; + /* 0x90C */ u8 field_0x90c[0x93c - 0x90c]; + /* 0x93C */ cXyz mCylScale; + /* 0x948 */ Vec field_0x948; + /* 0x954 */ cM3dGCpsS field_0x954; + /* 0x970 */ u8 mAction; + /* 0x972 */ u16 mActionTimer; }; STATIC_ASSERT(sizeof(daObjFPillar_c) == 0x974); diff --git a/include/d/actor/d_a_obj_ladder.h b/include/d/actor/d_a_obj_ladder.h index 444a83f6713..e1a64328446 100644 --- a/include/d/actor/d_a_obj_ladder.h +++ b/include/d/actor/d_a_obj_ladder.h @@ -1,7 +1,8 @@ #ifndef D_A_OBJ_LADDER_H #define D_A_OBJ_LADDER_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_a_obj.h" /** * @ingroup actors-objects @@ -11,17 +12,40 @@ * @details * */ -class daObjLadder : public fopAc_ac_c { -public: - class Act_c { +namespace daObjLadder { + class Act_c : public dBgS_MoveBgActor { public: - struct Prm_e {}; + enum Prm_e { + PRM_0 = 0, + PRM_3 = 3, + PRM_8 = 8, + PRM_16 = 16, + }; - /* 8058D158 */ void CreateHeap(); - /* 8058D1D8 */ void Create(); - /* 8058D378 */ void Mthd_Create(); - /* 8058D4F0 */ bool Delete(); - /* 8058D4F8 */ void Mthd_Delete(); + enum Type_e { + TYPE_0, + TYPE_1, + TYPE_2, + TYPE_3, + TYPE_4, + TYPE_5, + }; + + enum Mode { + MODE_WAIT, + MODE_DEMOREQ, + MODE_VIB, + MODE_DROP, + MODE_FELL, + }; + + typedef void (Act_c::*modeProc)(); + + /* 8058D158 */ int CreateHeap(); + /* 8058D1D8 */ int Create(); + /* 8058D378 */ int Mthd_Create(); + /* 8058D4F0 */ int Delete(); + /* 8058D4F8 */ int Mthd_Delete(); /* 8058D544 */ void demo_end_reset(); /* 8058D5AC */ void mode_wait_init(); /* 8058D5B8 */ void mode_wait(); @@ -35,28 +59,41 @@ class daObjLadder : public fopAc_ac_c { /* 8058D9CC */ void mode_fell(); /* 8058D9D0 */ void set_mtx(); /* 8058DA64 */ void init_mtx(); - /* 8058DAA0 */ void Execute(f32 (**)[3][4]); - /* 8058DBB8 */ void Draw(); + /* 8058DAA0 */ int Execute(f32 (**)[3][4]); + /* 8058DBB8 */ int Draw(); - static u8 const M_arcname[5 + 3 /* padding */]; - static u8 M_tmp_mtx[48]; - }; + u8 prm_get_evId() { + return daObj::PrmAbstract(this, PRM_8, PRM_16); + } -private: - /* 0x568 */ u8 field_0x568[0x620 - 0x568]; -}; + int prm_get_swSave() { + return daObj::PrmAbstract(this,PRM_8, PRM_8); + } -STATIC_ASSERT(sizeof(daObjLadder) == 0x620); + Type_e prm_get_type() { + return(Type_e)daObj::PrmAbstract(this,PRM_3, PRM_0); + } -struct daObj { -public: - /* 800373C0 */ void posMoveF_stream(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32); - template - void PrmAbstract(/* ... */); - /* 8058DD14 */ /* daObj::PrmAbstract */ - void func_8058DD14(void* _this, fopAc_ac_c const*, daObjLadder::Act_c::Prm_e, - daObjLadder::Act_c::Prm_e); + static char const M_arcname[5]; + static Mtx M_tmp_mtx; +private: + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mModel; + /* 0x5AC */ Type_e mType; + /* 0x5B0 */ Mode mMode; + /* 0x5B4 */ s16 mVibrationTimer; + /* 0x5B6 */ s16 field_0x5b6; + /* 0x5B8 */ f32 mHeight; + /* 0x5BC */ dBgS_ObjGndChk mGndChk; + /* 0x610 */ s16 field_0x610; + /* 0x612 */ s16 field_0x612; + /* 0x614 */ f32 field_0x614; + /* 0x618 */ f32 field_0x618; + /* 0x61C */ s16 mEventIdx; + /* 0x61E */ bool mInDemo; + }; }; +STATIC_ASSERT(sizeof(daObjLadder::Act_c) == 0x620); #endif /* D_A_OBJ_LADDER_H */ diff --git a/include/d/d_bg_s.h b/include/d/d_bg_s.h index b8207d72d56..56a03a579b3 100644 --- a/include/d/d_bg_s.h +++ b/include/d/d_bg_s.h @@ -109,6 +109,7 @@ class dBgS : public cBgS { bool WaterChk(dBgS_SplGrpChk* chk) { return SplGrpChk(chk); } u32 GetMtrlSndId(const cBgS_PolyInfo& param_0) { return dKy_pol_sound_get(¶m_0); } + void DebugDrawPoly(dBgW_Base *param_1) {} }; // Size: 0x1404 bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&); diff --git a/src/d/actor/d_a_obj_firepillar.cpp b/src/d/actor/d_a_obj_firepillar.cpp index 87d47d6016f..6b8f28ee82e 100644 --- a/src/d/actor/d_a_obj_firepillar.cpp +++ b/src/d/actor/d_a_obj_firepillar.cpp @@ -5,101 +5,30 @@ #include "d/actor/d_a_obj_firepillar.h" #include "d/d_cc_d.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" void initBaseMtx__14daObjFPillar_cFv(); -extern "C" void setBaseMtx__14daObjFPillar_cFv(); -extern "C" void Create__14daObjFPillar_cFv(); -extern "C" void create__14daObjFPillar_cFv(); -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" void execute__14daObjFPillar_cFv(); -extern "C" void action__14daObjFPillar_cFv(); -extern "C" void actionOffInit__14daObjFPillar_cFv(); -extern "C" void actionOff__14daObjFPillar_cFv(); -extern "C" void actionOnWaitInit__14daObjFPillar_cFv(); -extern "C" void actionOnWait__14daObjFPillar_cFv(); -extern "C" void actionOnInit__14daObjFPillar_cFv(); -extern "C" void actionOn__14daObjFPillar_cFv(); -extern "C" static void drawCylinder__FP4cXyzP4cXyzP5csXyz(); -extern "C" void draw__14daObjFPillar_cFv(); -extern "C" bool _delete__14daObjFPillar_cFv(); -extern "C" static void daObjFPillar_Draw__FP14daObjFPillar_c(); -extern "C" static void daObjFPillar_Execute__FP14daObjFPillar_c(); -extern "C" static void daObjFPillar_Delete__FP14daObjFPillar_c(); -extern "C" static void daObjFPillar_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_80BE9A88(); -extern "C" static void func_80BE9A90(); - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotS__FPA4_fsss(); -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -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 Set__8dCcD_CpsFRC11dCcD_SrcCps(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void __ct__8cM3dGCpsFv(); -extern "C" void Set__8cM3dGCpsFRC9cM3dGCpsS(); -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" extern void* __vt__8dCcD_Cps[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CpsAttr[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" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 data_80BE9C30[4]; - -// -// Declarations: -// +#include "d/d_com_inf_game.h" +#include "f_op/f_op_actor_mng.h" /* 80BE9118-80BE9138 000078 0020+00 1/1 0/0 0/0 .text initBaseMtx__14daObjFPillar_cFv */ void daObjFPillar_c::initBaseMtx() { - // NONMATCHING + setBaseMtx(); } /* 80BE9138-80BE9190 000098 0058+00 1/1 0/0 0/0 .text setBaseMtx__14daObjFPillar_cFv */ void daObjFPillar_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); } /* ############################################################################################## */ /* 80BE9ABC-80BE9AC8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { +static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80BE9AC8-80BE9ADC 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ #pragma push #pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { +static u32 lit_1787[1 + 4 /* padding */] = { 0x02000201, /* padding */ 0x40080000, @@ -110,9 +39,9 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 80BE9ADC-80BE9AF4 000020 0018+00 1/1 0/0 0/0 .data l_cull_box */ -SECTION_DATA static u8 l_cull_box[24] = { - 0xC1, 0xF0, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, +static f32 l_cull_box[6] = { + -30.0f, -10.0f, -30.0f, + 30.0f, 60.0f, 30.0f, }; /* 80BE9AF4-80BE9B40 000038 004C+00 1/1 0/0 0/0 .data l_cps_src */ @@ -129,286 +58,224 @@ static dCcD_SrcCps l_cps_src = { }; /* 80BE9190-80BE9230 0000F0 00A0+00 1/1 0/0 0/0 .text Create__14daObjFPillar_cFv */ -void daObjFPillar_c::Create() { - // NONMATCHING +int daObjFPillar_c::Create() { + initBaseMtx(); + mStts.Init(0, 0xff, this); + mCps.Set(l_cps_src); + mCps.SetStts(&mStts); + f32 maxy = l_cull_box[4] * scale.y; + fopAcM_setCullSizeBox(this, + (l_cull_box[0] * scale.x), + (l_cull_box[1] * scale.y), + (l_cull_box[2] * scale.x), + (l_cull_box[3] * scale.x), + maxy, + maxy); + return 1; } -/* ############################################################################################## */ -/* 80BE9B40-80BE9B4C -00001 000C+00 0/1 0/0 0/0 .data @3789 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3789[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOff__14daObjFPillar_cFv, -}; -#pragma pop - -/* 80BE9B4C-80BE9B58 -00001 000C+00 0/1 0/0 0/0 .data @3790 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3790[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOnWait__14daObjFPillar_cFv, -}; -#pragma pop - -/* 80BE9B58-80BE9B64 -00001 000C+00 0/1 0/0 0/0 .data @3791 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3791[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOn__14daObjFPillar_cFv, -}; -#pragma pop - -/* 80BE9B64-80BE9B88 0000A8 0024+00 0/1 0/0 0/0 .data l_func$3788 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[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 - -/* 80BE9B88-80BE9BA8 -00001 0020+00 1/0 0/0 0/0 .data l_daObjFPillar_Method */ -static actor_method_class l_daObjFPillar_Method = { - (process_method_func)daObjFPillar_Create__FP10fopAc_ac_c, - (process_method_func)daObjFPillar_Delete__FP14daObjFPillar_c, - (process_method_func)daObjFPillar_Execute__FP14daObjFPillar_c, - 0, - (process_method_func)daObjFPillar_Draw__FP14daObjFPillar_c, -}; - -/* 80BE9BA8-80BE9BD8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_FirePillar */ -extern actor_process_profile_definition g_profile_Obj_FirePillar = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_FirePillar, // mProcName - &g_fpcLf_Method.mBase, // sub_method - sizeof(daObjFPillar_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 446, // mPriority - &l_daObjFPillar_Method, // sub_method - 0x00040000, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80BE9BD8-80BE9BE4 00011C 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, -}; - -/* 80BE9BE4-80BE9BF0 000128 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, -}; - -/* 80BE9BF0-80BE9BFC 000134 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, -}; - -/* 80BE9BFC-80BE9C08 000140 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80BE9C08-80BE9C2C 00014C 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_80BE9A90, - (void*)NULL, - (void*)NULL, - (void*)func_80BE9A88, -}; - /* 80BE9230-80BE9360 000190 0130+00 1/1 0/0 0/0 .text create__14daObjFPillar_cFv */ -void daObjFPillar_c::create() { - // NONMATCHING -} - -/* 80BE9360-80BE93A8 0002C0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80BE93A8-80BE9404 000308 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING +int daObjFPillar_c::create() { + fopAcM_SetupActor(this, daObjFPillar_c); + int rv = Create(); + if (rv == 0) { + return cPhs_ERROR_e; + } + return cPhs_COMPLEATE_e; } -/* 80BE9404-80BE9474 000364 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80BE9474-80BE94E4 0003D4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80BE9AA0-80BE9AA4 000000 0004+00 3/3 0/0 0/0 .rodata @3780 */ -SECTION_RODATA static u8 const lit_3780[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BE9AA0, &lit_3780); - -/* 80BE9AA4-80BE9AA8 000004 0004+00 0/1 0/0 0/0 .rodata @3781 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3781 = 1.0f; -COMPILER_STRIP_GATE(0x80BE9AA4, &lit_3781); -#pragma pop - -/* 80BE9AA8-80BE9AAC 000008 0004+00 0/1 0/0 0/0 .rodata @3782 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3782 = 100.0f; -COMPILER_STRIP_GATE(0x80BE9AA8, &lit_3782); -#pragma pop - -/* 80BE9AAC-80BE9AB0 00000C 0004+00 0/1 0/0 0/0 .rodata @3783 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3783 = 50.0f; -COMPILER_STRIP_GATE(0x80BE9AAC, &lit_3783); -#pragma pop - -/* 80BE9AB0-80BE9AB4 000010 0004+00 3/4 0/0 0/0 .rodata @3784 */ -SECTION_RODATA static f32 const lit_3784 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80BE9AB0, &lit_3784); - /* 80BE94E4-80BE9610 000444 012C+00 1/1 0/0 0/0 .text execute__14daObjFPillar_cFv */ -void daObjFPillar_c::execute() { - // NONMATCHING +int daObjFPillar_c::execute() { + action(); + mCylScale.x = scale.x; + mCylScale.z = scale.z; + cXyz cStack_1c(0.0f, 1.0f, 0.0f); + cStack_1c.y *= mCylScale.y * 100.0f; + mDoMtx_stack_c::ZXYrotS(current.angle.x, current.angle.y, current.angle.z); + mDoMtx_stack_c::multVec(&cStack_1c, &cStack_1c); + field_0x954.mStart = current.pos; + field_0x954.mEnd = cStack_1c + current.pos; + field_0x954.mRadius = scale.x * 50.0f; + if (mCylScale.y > scale.y * 0.1f) { + mCps.cM3dGCps::Set(field_0x954); + dComIfG_Ccsp()->Set(&mCps); + } + return 1; } /* 80BE9610-80BE96B4 000570 00A4+00 1/1 0/0 0/0 .text action__14daObjFPillar_cFv */ void daObjFPillar_c::action() { - // NONMATCHING + static daObjFPillar_c::actionFunc l_func[3] = { + &daObjFPillar_c::actionOff, + &daObjFPillar_c::actionOnWait, + &daObjFPillar_c::actionOn, + }; + (this->*(l_func[mAction]))(); } /* 80BE96B4-80BE96E0 000614 002C+00 2/2 0/0 0/0 .text actionOffInit__14daObjFPillar_cFv */ void daObjFPillar_c::actionOffInit() { - // NONMATCHING + u8 bVar1 = daObjFPillar_prm::getArg0(this); + if (bVar1 == 0xff) { + bVar1 = 1; + } + mActionTimer = bVar1 * 15; + mAction = ACTION_OFF; } /* 80BE96E0-80BE9784 000640 00A4+00 1/0 0/0 0/0 .text actionOff__14daObjFPillar_cFv */ void daObjFPillar_c::actionOff() { - // NONMATCHING + cLib_chaseF(&mCylScale.y, 0.0f, scale.y * 0.1f); + if (mActionTimer == 0) { + actionOnWaitInit(); + } else { + if (daObjFPillar_prm::getSwNo(this) != 0xff) { + if (fopAcM_isSwitch(this, daObjFPillar_prm::getSwNo(this))) { + mActionTimer--; + } + } else { + mActionTimer--; + } + } } /* 80BE9784-80BE97B8 0006E4 0034+00 1/1 0/0 0/0 .text actionOnWaitInit__14daObjFPillar_cFv */ void daObjFPillar_c::actionOnWaitInit() { - // NONMATCHING + u8 bVar1 = daObjFPillar_prm::getArg1(this); + if (bVar1 == 0xff) { + bVar1 = 1; + } + mActionTimer = bVar1 * 15; + mActionTimer = 30; + mAction = ACTION_ON_WAIT; } -/* ############################################################################################## */ -/* 80BE9AB4-80BE9AB8 000014 0004+00 1/1 0/0 0/0 .rodata @3853 */ -SECTION_RODATA static f32 const lit_3853 = 1.0f / 50.0f; -COMPILER_STRIP_GATE(0x80BE9AB4, &lit_3853); - /* 80BE97B8-80BE986C 000718 00B4+00 1/0 0/0 0/0 .text actionOnWait__14daObjFPillar_cFv */ void daObjFPillar_c::actionOnWait() { - // NONMATCHING + cLib_chaseF(&mCylScale.y, scale.y * 0.1f, scale.y * 0.02f); + if (mActionTimer == 0) { + actionOnInit(); + } else { + if (daObjFPillar_prm::getSwNo(this) != 0xff) { + if (fopAcM_isSwitch(this, daObjFPillar_prm::getSwNo(this))) { + mActionTimer--; + } else { + actionOffInit(); + } + } else { + mActionTimer--; + } + } } /* 80BE986C-80BE98A0 0007CC 0034+00 1/1 0/0 0/0 .text actionOnInit__14daObjFPillar_cFv */ void daObjFPillar_c::actionOnInit() { - // NONMATCHING + u8 bVar1 = daObjFPillar_prm::getArg2(this); + if (bVar1 == 0xff) { + bVar1 = 1; + } + mActionTimer = bVar1 * 15; + mActionTimer = 30; + mAction = ACTION_ON; } /* 80BE98A0-80BE9980 000800 00E0+00 1/0 0/0 0/0 .text actionOn__14daObjFPillar_cFv */ void daObjFPillar_c::actionOn() { - // NONMATCHING + f32 target = scale.y; + if (mActionTimer == 0) { + target = 0.0; + } else { + if (daObjFPillar_prm::getSwNo(this) != 0xff) { + if (fopAcM_isSwitch(this, daObjFPillar_prm::getSwNo(this))) { + mActionTimer--; + } else { + target = 0.0; + } + } else { + mActionTimer--; + } + } + int reachedTarget = cLib_chaseF(&mCylScale.y, target, scale.y * 0.1f); + if (reachedTarget && target == 0.0f) { + actionOffInit(); + } } /* 80BE9980-80BE9984 0008E0 0004+00 1/1 0/0 0/0 .text drawCylinder__FP4cXyzP4cXyzP5csXyz */ -static void drawCylinder(cXyz* param_0, cXyz* param_1, csXyz* param_2) { - /* empty function */ +static void drawCylinder(cXyz* pos, cXyz* scale, csXyz* angle) { + static GXColor const color = {0xFF,00,00,0x60}; + + #if DEBUG + mDoMtx_stack_c::transS(pos->x, pos->y, pos->z); + mDoMtx_stack_c::ZXYrotM(angle->x, angle->y, angle->z); + mDoMtx_stack_c::scaleM(scale.x * 50.0f, scale.y * 50.0f, scale.x * 50.0f); + mDoMtx_stack_c::transM(0.0f, 1.0f, 0.0f); + mDoMtx_stack_c::XrotM(0x4000); + Mtx mtx; + MTXCopy(mDoMtx_stack_c::get(), mtx); + dDbVw_drawCylinderMXlu(mtx, color, 1); + #endif } /* 80BE9984-80BE99B8 0008E4 0034+00 1/1 0/0 0/0 .text draw__14daObjFPillar_cFv */ -void daObjFPillar_c::draw() { - // NONMATCHING +int daObjFPillar_c::draw() { + drawCylinder(¤t.pos, &mCylScale, ¤t.angle); + return 1; } /* 80BE99B8-80BE99C0 000918 0008+00 1/1 0/0 0/0 .text _delete__14daObjFPillar_cFv */ -bool daObjFPillar_c::_delete() { - return true; +int daObjFPillar_c::_delete() { + return 1; } /* 80BE99C0-80BE99E0 000920 0020+00 1/0 0/0 0/0 .text daObjFPillar_Draw__FP14daObjFPillar_c */ -static void daObjFPillar_Draw(daObjFPillar_c* param_0) { - // NONMATCHING +static int daObjFPillar_Draw(daObjFPillar_c* i_this) { + return i_this->draw(); } /* 80BE99E0-80BE9A00 000940 0020+00 1/0 0/0 0/0 .text daObjFPillar_Execute__FP14daObjFPillar_c */ -static void daObjFPillar_Execute(daObjFPillar_c* param_0) { - // NONMATCHING +static int daObjFPillar_Execute(daObjFPillar_c* i_this) { + return i_this->execute(); } /* 80BE9A00-80BE9A20 000960 0020+00 1/0 0/0 0/0 .text daObjFPillar_Delete__FP14daObjFPillar_c */ -static void daObjFPillar_Delete(daObjFPillar_c* param_0) { - // NONMATCHING +static int daObjFPillar_Delete(daObjFPillar_c* i_this) { + fopAcM_GetID(i_this); + return i_this->_delete(); } /* 80BE9A20-80BE9A40 000980 0020+00 1/0 0/0 0/0 .text daObjFPillar_Create__FP10fopAc_ac_c */ -static void daObjFPillar_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80BE9A40-80BE9A88 0009A0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80BE9A88-80BE9A90 0009E8 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80BE9A88() { - // NONMATCHING +static int daObjFPillar_Create(fopAc_ac_c* i_this) { + fopAcM_GetID(i_this); + return static_cast(i_this)->create(); } -/* 80BE9A90-80BE9A98 0009F0 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80BE9A90() { - // NONMATCHING -} +/* 80BE9B88-80BE9BA8 -00001 0020+00 1/0 0/0 0/0 .data l_daObjFPillar_Method */ +static actor_method_class l_daObjFPillar_Method = { + (process_method_func)daObjFPillar_Create, + (process_method_func)daObjFPillar_Delete, + (process_method_func)daObjFPillar_Execute, + NULL, + (process_method_func)daObjFPillar_Draw, +}; -/* ############################################################################################## */ -/* 80BE9AB8-80BE9ABC 000018 0004+00 0/0 0/0 0/0 .rodata @3895 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3895 = 0xFF000060; -COMPILER_STRIP_GATE(0x80BE9AB8, &lit_3895); -#pragma pop \ No newline at end of file +/* 80BE9BA8-80BE9BD8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_FirePillar */ +extern actor_process_profile_definition g_profile_Obj_FirePillar = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_FirePillar, // mProcName + &g_fpcLf_Method.mBase, // sub_method + sizeof(daObjFPillar_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 446, // mPriority + &l_daObjFPillar_Method, // sub_method + 0x00040000, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_obj_ladder.cpp b/src/d/actor/d_a_obj_ladder.cpp index e2ba5b6bba6..838606eb421 100644 --- a/src/d/actor/d_a_obj_ladder.cpp +++ b/src/d/actor/d_a_obj_ladder.cpp @@ -4,7 +4,13 @@ */ #include "d/actor/d_a_obj_ladder.h" +#include "JSystem/J3DGraphAnimator/J3DModelData.h" +#include "SSystem/SComponent/c_math.h" +#include "d/d_com_inf_game.h" +#include "d/d_bg_s.h" +#include "d/d_bg_w.h" #include "dol2asm.h" +#include "f_op/f_op_actor_mng.h" // // Forward References: @@ -92,7 +98,6 @@ 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" extern u8 g_dComIfG_gameInfo[122384]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -101,29 +106,38 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // Declarations: // +struct Attr { + /* 0x00 */ f32 field_0x00; + /* 0x04 */ f32 field_0x04; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0c; + /* 0x10 */ u8 field_0x10; + /* 0x11 */ u8 field_0x11; + /* 0x12 */ u8 field_0x12; + /* 0x13 */ u8 field_0x13; + /* 0x14 */ u8 field_0x14; + /* 0x16 */ s16 field_0x16; + /* 0x18 */ s16 field_0x18; + /* 0x1A */ s16 vibrationTimer; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; +}; + /* ############################################################################################## */ /* 8058DD50-8058DD74 000000 0024+00 5/5 0/0 0/0 .rodata * L_attr__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ */ -SECTION_RODATA static u8 const data_8058DD50[36] = { - 0xC0, 0x40, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x03, 0x12, 0x6F, - 0x3F, 0x00, 0x00, 0x00, 0x03, 0x4B, 0x32, 0x2D, 0x28, 0x00, 0x4E, 0x20, - 0x3C, 0xC3, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, + SECTION_RODATA static Attr const L_attr = { + -3.0f, 0.005f, 0.0005f, + 0.5f, 0x03, 0x4B, 0x32, 0x2D, 0x28, 0x4E20, + 0x3CC3, 0x0F, 2.0f, 1.0f, }; -COMPILER_STRIP_GATE(0x8058DD50, &data_8058DD50); + +inline static const Attr& attr() { + return L_attr; +} /* 8058DD74-8058DD7C 000024 0005+03 3/3 0/0 0/0 .rodata M_arcname__Q211daObjLadder5Act_c */ -SECTION_RODATA u8 const daObjLadder::Act_c::M_arcname[5 + 3 /* padding */] = { - 0x4D, - 0x68, - 0x73, - 0x67, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8058DD74, &daObjLadder::Act_c::M_arcname); +SECTION_RODATA char const daObjLadder::Act_c::M_arcname[5] = "Mhsg"; /* 8058DDAC-8058DDB8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { @@ -143,391 +157,315 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { }; #pragma pop +struct AttrType { + /* 0x0 */ s16 field_0x0; + /* 0x2 */ s16 field_0x2; + /* 0x4 */ f32 field_0x4; +}; + /* 8058DDCC-8058DDFC 000020 0030+00 3/3 0/0 0/0 .data * L_attr_type__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ */ -SECTION_DATA static u8 data_8058DDCC[48] = { - 0x00, 0x08, 0x00, 0x10, 0x44, 0x16, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x44, 0x61, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x0C, 0x44, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0D, 0x44, 0xBB, 0x80, 0x00, - 0x00, 0x07, 0x00, 0x0F, 0x43, 0xE1, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0E, 0x43, 0x96, 0x00, 0x00, +SECTION_DATA static AttrType L_attr_type[6] = { + { 0x08, 0x10, 600.0f}, + { 0x09, 0x11, 900.0f}, + { 0x04, 0x0C, 1200.0f}, + { 0x05, 0x0D, 1500.0f}, + { 0x07, 0x0F, 450.0f}, + { 0x06, 0x0E, 300.0f}, }; +static inline const AttrType& attr_type(daObjLadder::Act_c::Type_e type) { + return L_attr_type[type]; +} + /* 8058D158-8058D1D8 000078 0080+00 1/0 0/0 0/0 .text CreateHeap__Q211daObjLadder5Act_cFv */ -void daObjLadder::Act_c::CreateHeap() { - // NONMATCHING +int daObjLadder::Act_c::CreateHeap() { + J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(M_arcname, attr_type(mType).field_0x0); + JUT_ASSERT(382, model_data != 0); + mModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084); + return mModel != NULL; } -/* ############################################################################################## */ -/* 8058DD7C-8058DD80 00002C 0004+00 0/1 0/0 0/0 .rodata @3667 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3667 = -55.0f; -COMPILER_STRIP_GATE(0x8058DD7C, &lit_3667); -#pragma pop - -/* 8058DD80-8058DD84 000030 0004+00 0/2 0/0 0/0 .rodata @3668 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3668 = -1.0f; -COMPILER_STRIP_GATE(0x8058DD80, &lit_3668); -#pragma pop - -/* 8058DD84-8058DD88 000034 0004+00 0/1 0/0 0/0 .rodata @3669 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3669 = -10.0f; -COMPILER_STRIP_GATE(0x8058DD84, &lit_3669); -#pragma pop - -/* 8058DD88-8058DD8C 000038 0004+00 0/1 0/0 0/0 .rodata @3670 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3670 = 55.0f; -COMPILER_STRIP_GATE(0x8058DD88, &lit_3670); -#pragma pop - -/* 8058DD8C-8058DD90 00003C 0004+00 0/1 0/0 0/0 .rodata @3671 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3671 = 41.0f; -COMPILER_STRIP_GATE(0x8058DD8C, &lit_3671); -#pragma pop - -/* 8058DD90-8058DD94 000040 0004+00 0/1 0/0 0/0 .rodata @3672 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3672 = 10.0f; -COMPILER_STRIP_GATE(0x8058DD90, &lit_3672); -#pragma pop - -/* 8058DD94-8058DD98 000044 0004+00 1/3 0/0 0/0 .rodata @3673 */ -SECTION_RODATA static u8 const lit_3673[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8058DD94, &lit_3673); - -/* 8058DD98-8058DD9C 000048 0004+00 0/1 0/0 0/0 .rodata @3674 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3674 = 5.0f; -COMPILER_STRIP_GATE(0x8058DD98, &lit_3674); -#pragma pop - /* 8058D1D8-8058D378 0000F8 01A0+00 1/0 0/0 0/0 .text Create__Q211daObjLadder5Act_cFv */ -void daObjLadder::Act_c::Create() { +int daObjLadder::Act_c::Create() { // NONMATCHING + fopAcM_SetMtx(this, mModel->getBaseTRMtx()); + init_mtx(); + fopAcM_setCullSizeBox(this, -55.0f, -1.0f, -10.0f, 55.0f, attr_type(mType).field_0x4 + 41.0f, + 10.0f); + cXyz gndVec; + mDoMtx_stack_c::push(); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::transM(0.0f, 10.0f, 5.0f); + mDoMtx_stack_c::multVecZero(&gndVec); + mDoMtx_stack_c::pop(); + mGndChk.SetPos(&gndVec); + mGndChk.SetActorPid(mBase.mBsPcId); + mHeight = dComIfG_Bgsp().GroundCross(&mGndChk); + mInDemo = false; + mEventIdx = dComIfGp_getEventManager().getEventIdx(this, prm_get_evId()); + if (prm_get_swSave() != 0xff && fopAcM_isSwitch(this, prm_get_swSave())) { + current.pos.y = mHeight; + set_mtx(); + mode_fell_init(); + } else { + mode_wait_init(); + } + + return 1; } -/* ############################################################################################## */ -/* 8058DDFC-8058DE08 -00001 000C+00 0/1 0/0 0/0 .data @3878 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3878[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_wait__Q211daObjLadder5Act_cFv, -}; -#pragma pop - -/* 8058DE08-8058DE14 -00001 000C+00 0/1 0/0 0/0 .data @3879 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3879[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_demoreq__Q211daObjLadder5Act_cFv, -}; -#pragma pop - -/* 8058DE14-8058DE20 -00001 000C+00 0/1 0/0 0/0 .data @3880 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3880[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_vib__Q211daObjLadder5Act_cFv, -}; -#pragma pop - -/* 8058DE20-8058DE2C -00001 000C+00 0/1 0/0 0/0 .data @3881 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3881[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_drop__Q211daObjLadder5Act_cFv, -}; -#pragma pop - -/* 8058DE2C-8058DE38 -00001 000C+00 0/1 0/0 0/0 .data @3882 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3882[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_fell__Q211daObjLadder5Act_cFv, -}; -#pragma pop - -/* 8058DE38-8058DE74 00008C 003C+00 0/1 0/0 0/0 .data mode_proc$3877 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[60] = { - 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, -}; -#pragma pop - -/* 8058DE74-8058DE94 -00001 0020+00 1/0 0/0 0/0 .data - * Mthd_Table__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ */ -static actor_method_class data_8058DE74 = { - (process_method_func)func_8058DC5C, - (process_method_func)func_8058DC7C, - (process_method_func)func_8058DC9C, - (process_method_func)func_8058DCE8, - (process_method_func)func_8058DCBC, -}; - -/* 8058DE94-8058DEC4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ladder */ -extern actor_process_profile_definition g_profile_Obj_Ladder = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Ladder, // mProcName - &g_fpcLf_Method.mBase, // sub_method - sizeof(daObjLadder), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 23, // mPriority - &data_8058DE74, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 8058DEC4-8058DEF4 000118 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_8058DD30, - (void*)NULL, - (void*)NULL, - (void*)func_8058DD40, - (void*)NULL, - (void*)NULL, - (void*)func_8058DD38, -}; - -/* 8058DEF4-8058DF1C 000148 0028+00 1/1 0/0 0/0 .data __vt__Q211daObjLadder5Act_c */ -SECTION_DATA extern void* __vt__Q211daObjLadder5Act_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__Q211daObjLadder5Act_cFv, - (void*)Create__Q211daObjLadder5Act_cFv, - (void*)Execute__Q211daObjLadder5Act_cFPPA3_A4_f, - (void*)Draw__Q211daObjLadder5Act_cFv, - (void*)Delete__Q211daObjLadder5Act_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - /* 8058D378-8058D478 000298 0100+00 1/1 0/0 0/0 .text Mthd_Create__Q211daObjLadder5Act_cFv */ -void daObjLadder::Act_c::Mthd_Create() { - // NONMATCHING -} - -/* 8058D478-8058D4F0 000398 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING +int daObjLadder::Act_c::Mthd_Create() { + fopAcM_SetupActor(this, Act_c); + int phase_state = dComIfG_resLoad(&mPhase, M_arcname); + if (phase_state == cPhs_COMPLEATE_e) { + mType = prm_get_type(); + phase_state = MoveBGCreate(M_arcname, attr_type(mType).field_0x2, + dBgS_MoveBGProc_Trans, 0xcb0, NULL); + JUT_ASSERT(486, (phase_state == cPhs_COMPLEATE_e) || (phase_state == cPhs_ERROR_e)); + } + return phase_state; } /* 8058D4F0-8058D4F8 000410 0008+00 1/0 0/0 0/0 .text Delete__Q211daObjLadder5Act_cFv */ -bool daObjLadder::Act_c::Delete() { - return true; +int daObjLadder::Act_c::Delete() { + return 1; } /* 8058D4F8-8058D544 000418 004C+00 1/1 0/0 0/0 .text Mthd_Delete__Q211daObjLadder5Act_cFv */ -void daObjLadder::Act_c::Mthd_Delete() { - // NONMATCHING +int daObjLadder::Act_c::Mthd_Delete() { + int rv = MoveBGDelete(); + dComIfG_resDelete(&mPhase, M_arcname); + return rv; } /* 8058D544-8058D5AC 000464 0068+00 1/1 0/0 0/0 .text demo_end_reset__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::demo_end_reset() { - // NONMATCHING + if (mInDemo && dComIfGp_evmng_endCheck(mEventIdx)) { + dComIfGp_event_reset(); + mInDemo = false; + } } /* 8058D5AC-8058D5B8 0004CC 000C+00 1/1 0/0 0/0 .text mode_wait_init__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_wait_init() { - // NONMATCHING + mMode = MODE_WAIT; } /* 8058D5B8-8058D614 0004D8 005C+00 1/0 0/0 0/0 .text mode_wait__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_wait() { - // NONMATCHING + if (fopAcM_isSwitch(this, prm_get_swSave())) { + mode_demoreq_init(); + } } /* 8058D614-8058D628 000534 0014+00 1/1 0/0 0/0 .text mode_demoreq_init__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_demoreq_init() { - // NONMATCHING + mMode = MODE_DEMOREQ; + mInDemo = false; +} + +static inline bool dComIfGp_evmng_existence(s16 eventIdx) { + return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventIdx) != NULL; } /* 8058D628-8058D6E8 000548 00C0+00 1/0 0/0 0/0 .text mode_demoreq__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_demoreq() { - // NONMATCHING + bool isDemo = false; + if (dComIfGp_evmng_existence(mEventIdx)) { + if (eventInfo.checkCommandDemoAccrpt()) { + isDemo = true; + mInDemo = true; + } else { + fopAcM_orderOtherEventId(this, mEventIdx, prm_get_evId(), 0xffff, 0, 1); + eventInfo.i_onCondition(2); + } + } else { + isDemo = true; + } + if (isDemo) { + mode_vib_init(); + } } /* 8058D6E8-8058D710 000608 0028+00 1/1 0/0 0/0 .text mode_vib_init__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_vib_init() { - // NONMATCHING + mVibrationTimer = attr().vibrationTimer; + field_0x610 = 0; + field_0x612 = 0; + mMode = MODE_VIB; } /* 8058D710-8058D7A8 000630 0098+00 1/0 0/0 0/0 .text mode_vib__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_vib() { - // NONMATCHING + field_0x610 += attr().field_0x16; + field_0x612 += attr().field_0x18; + field_0x614 = cM_scos(field_0x610) * attr().field_0x1c; + field_0x618 = cM_scos(field_0x612) * attr().field_0x20; + if (--mVibrationTimer <= 0) { + mode_drop_init(); + } } -/* ############################################################################################## */ -/* 8058DD9C-8058DDA0 00004C 0004+00 1/1 0/0 0/0 .rodata @3792 */ -SECTION_RODATA static f32 const lit_3792 = -5.0f; -COMPILER_STRIP_GATE(0x8058DD9C, &lit_3792); - /* 8058D7A8-8058D7EC 0006C8 0044+00 1/1 0/0 0/0 .text mode_drop_init__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_drop_init() { - // NONMATCHING + gravity = -5.0f; + speed.set(cXyz::Zero); + field_0x5b6 = attr().field_0x10; + mMode = MODE_DROP; } -/* ############################################################################################## */ -/* 8058DDA0-8058DDA4 000050 0004+00 0/1 0/0 0/0 .rodata @3838 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3838 = 1.0f; -COMPILER_STRIP_GATE(0x8058DDA0, &lit_3838); -#pragma pop - -/* 8058DDA4-8058DDA8 000054 0004+00 0/1 0/0 0/0 .rodata @3839 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3839 = 0.5f; -COMPILER_STRIP_GATE(0x8058DDA4, &lit_3839); -#pragma pop - -/* 8058DDA8-8058DDAC 000058 0004+00 0/1 0/0 0/0 .rodata @3840 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3840 = -0.5f; -COMPILER_STRIP_GATE(0x8058DDA8, &lit_3840); -#pragma pop - /* 8058D7EC-8058D9C0 00070C 01D4+00 1/0 0/0 0/0 .text mode_drop__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_drop() { - // NONMATCHING + daObj::posMoveF_stream(this, NULL, &cXyz::Zero, attr().field_0x04, attr().field_0x08); + if (current.pos.y < mHeight) { + if (field_0x5b6 == attr().field_0x10) { + fopAcM_seStart(this, Z2SE_SY_DUMMY, dComIfG_Bgsp().GetMtrlSndId(mGndChk)); + dComIfGp_getVibration().StartShock(4, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); + } else { + int uVar7; + int iVar5 = attr().field_0x10 - field_0x5b6; + if (iVar5 == 1) { + uVar7 = attr().field_0x11; + } else if (iVar5 == 2) { + uVar7 = attr().field_0x12; + } else if (iVar5 == 3) { + uVar7 = attr().field_0x13; + } else { + uVar7 = attr().field_0x14; + } + fopAcM_seStart(this, Z2SE_SY_DUMMY, uVar7); + } + if (field_0x5b6 >= 0) { + field_0x5b6--; + current.pos.y = + mHeight - (current.pos.y - mHeight) * 0.5f; + speed.y *= -0.5f; + } else { + current.pos.y = mHeight; + mode_fell_init(); + } + } } /* 8058D9C0-8058D9CC 0008E0 000C+00 2/2 0/0 0/0 .text mode_fell_init__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_fell_init() { - // NONMATCHING + mMode = MODE_FELL; } /* 8058D9CC-8058D9D0 0008EC 0004+00 1/0 0/0 0/0 .text mode_fell__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::mode_fell() { - /* empty function */ } /* ############################################################################################## */ /* 8058DF20-8058DF50 000000 0030+00 2/2 0/0 0/0 .bss M_tmp_mtx__Q211daObjLadder5Act_c */ -u8 daObjLadder::Act_c::M_tmp_mtx[48]; +Mtx daObjLadder::Act_c::M_tmp_mtx; /* 8058D9D0-8058DA64 0008F0 0094+00 3/3 0/0 0/0 .text set_mtx__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::set_mtx() { - // 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); + cMtx_copy(mDoMtx_stack_c::get(), M_tmp_mtx); + mDoMtx_stack_c::transM(field_0x614, field_0x618, 0.0f); + mModel->setBaseTRMtx(mDoMtx_stack_c::get()); } /* 8058DA64-8058DAA0 000984 003C+00 1/1 0/0 0/0 .text init_mtx__Q211daObjLadder5Act_cFv */ void daObjLadder::Act_c::init_mtx() { - // NONMATCHING + mModel->setBaseScale(scale); + set_mtx(); } -/* ############################################################################################## */ -/* 8058DF50-8058DF54 000030 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_8058DF50[4]; - /* 8058DAA0-8058DBB8 0009C0 0118+00 1/0 0/0 0/0 .text Execute__Q211daObjLadder5Act_cFPPA3_A4_f */ -void daObjLadder::Act_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING +int daObjLadder::Act_c::Execute(f32 (**param_1)[3][4]) { + static const daObjLadder::Act_c::modeProc mode_proc[5] = { + &daObjLadder::Act_c::mode_wait, &daObjLadder::Act_c::mode_demoreq, + &daObjLadder::Act_c::mode_vib, &daObjLadder::Act_c::mode_drop, + &daObjLadder::Act_c::mode_fell, + }; + + demo_end_reset(); + (this->*(mode_proc[mMode]))(); + eyePos.y = current.pos.y; + set_mtx(); + *param_1 = &M_tmp_mtx; + return 1; } /* 8058DBB8-8058DC5C 000AD8 00A4+00 1/0 0/0 0/0 .text Draw__Q211daObjLadder5Act_cFv */ -void daObjLadder::Act_c::Draw() { - // NONMATCHING +int daObjLadder::Act_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mModel); + dComIfGd_setList(); + dComIfG_Bgsp().DebugDrawPoly(mpBgW); + return 1; } /* 8058DC5C-8058DC7C 000B7C 0020+00 1/0 0/0 0/0 .text * Mthd_Create__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv */ -static void func_8058DC5C() { - // NONMATCHING +static int Mthd_Create(daObjLadder::Act_c* i_this) { + return i_this->Mthd_Create(); } /* 8058DC7C-8058DC9C 000B9C 0020+00 1/0 0/0 0/0 .text * Mthd_Delete__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv */ -static void func_8058DC7C() { - // NONMATCHING +static int Mthd_Delete(daObjLadder::Act_c* i_this) { + return i_this->Mthd_Delete(); } /* 8058DC9C-8058DCBC 000BBC 0020+00 1/0 0/0 0/0 .text * Mthd_Execute__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv */ -static void func_8058DC9C() { - // NONMATCHING +static int Mthd_Execute(daObjLadder::Act_c* i_this) { + return i_this->MoveBGExecute(); } /* 8058DCBC-8058DCE8 000BDC 002C+00 1/0 0/0 0/0 .text * Mthd_Draw__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv */ -static void func_8058DCBC() { - // NONMATCHING +static int Mthd_Draw(daObjLadder::Act_c* i_this) { + return i_this->MoveBGDraw(); } /* 8058DCE8-8058DD14 000C08 002C+00 1/0 0/0 0/0 .text * Mthd_IsDelete__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@FPv */ -static void func_8058DCE8() { - // NONMATCHING -} - -/* 8058DD14-8058DD30 000C34 001C+00 4/4 0/0 0/0 .text - * PrmAbstract__5daObjFPC10fopAc_ac_cQ311daObjLadder5Act_c5Prm_eQ311daObjLadder5Act_c5Prm_e - */ -extern "C" void func_8058DD14(void* _this, fopAc_ac_c const* param_0, - daObjLadder::Act_c::Prm_e param_1, - daObjLadder::Act_c::Prm_e param_2) { - // NONMATCHING -} - -/* 8058DD30-8058DD38 000C50 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_8058DD30() { - // NONMATCHING +static int Mthd_IsDelete(daObjLadder::Act_c* i_this) { + return i_this->MoveBGIsDelete(); } -/* 8058DD38-8058DD40 000C58 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_8058DD38() { - // NONMATCHING -} +/* 8058DE74-8058DE94 -00001 0020+00 1/0 0/0 0/0 .data + * Mthd_Table__Q211daObjLadder28@unnamed@d_a_obj_ladder_cpp@ */ +static actor_method_class Mthd_Table = { + (process_method_func)Mthd_Create, + (process_method_func)Mthd_Delete, + (process_method_func)Mthd_Execute, + (process_method_func)Mthd_IsDelete, + (process_method_func)Mthd_Draw, +}; -/* 8058DD40-8058DD48 000C60 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_8058DD40() { - // NONMATCHING -} \ No newline at end of file +/* 8058DE94-8058DEC4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Ladder */ +extern actor_process_profile_definition g_profile_Obj_Ladder = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Ladder, // mProcName + &g_fpcLf_Method.mBase, // sub_method + sizeof(daObjLadder::Act_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 23, // mPriority + &Mthd_Table, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +};