From 7cc32c05fa4c6da8715ae07a4e190a5085bb859c Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Sat, 30 Nov 2024 02:08:38 -0800 Subject: [PATCH] d_a_obj_pillar done (#2255) --- config/GZ2E01/rels/d_a_obj_pillar/symbols.txt | 30 +- configure.py | 2 +- include/d/actor/d_a_obj_carry.h | 4 +- include/d/actor/d_a_obj_pillar.h | 90 +- src/d/actor/d_a_b_zant.cpp | 4 +- src/d/actor/d_a_obj_pillar.cpp | 1061 ++++++++--------- 6 files changed, 565 insertions(+), 626 deletions(-) diff --git a/config/GZ2E01/rels/d_a_obj_pillar/symbols.txt b/config/GZ2E01/rels/d_a_obj_pillar/symbols.txt index cc8cb7455df..5b42fd4bab7 100644 --- a/config/GZ2E01/rels/d_a_obj_pillar/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_pillar/symbols.txt @@ -5,7 +5,7 @@ __register_global_object = .text:0x00000078; // type:function size:0x1C scope:gl __destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global __ct__14daPillar_HIO_cFv = .text:0x000000EC; // type:function size:0x84 scope:global __dt__14mDoHIO_entry_cFv = .text:0x00000170; // type:function size:0x48 scope:global -rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000001B8; // type:function size:0xBC scope:global +rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c = .text:0x000001B8; // type:function size:0xBC scope:local setBaseMtx__10daPillar_cFv = .text:0x00000274; // type:function size:0x138 scope:global Create__10daPillar_cFv = .text:0x000003AC; // type:function size:0x1BC scope:global CreateHeap__10daPillar_cFv = .text:0x00000568; // type:function size:0xFC scope:global @@ -26,10 +26,10 @@ actionEnd__10daPillar_cFv = .text:0x0000118C; // type:function size:0x4 scope:gl Execute__10daPillar_cFPPA3_A4_f = .text:0x00001190; // type:function size:0x288 scope:global Draw__10daPillar_cFv = .text:0x00001418; // type:function size:0xE8 scope:global Delete__10daPillar_cFv = .text:0x00001500; // type:function size:0x40 scope:global -daPillar_create1st__FP10daPillar_c = .text:0x00001540; // type:function size:0xF4 scope:global -daPillar_MoveBGDelete__FP10daPillar_c = .text:0x00001634; // type:function size:0x20 scope:global -daPillar_MoveBGExecute__FP10daPillar_c = .text:0x00001654; // type:function size:0x20 scope:global -daPillar_MoveBGDraw__FP10daPillar_c = .text:0x00001674; // type:function size:0x2C scope:global +daPillar_create1st__FP10daPillar_c = .text:0x00001540; // type:function size:0xF4 scope:local +daPillar_MoveBGDelete__FP10daPillar_c = .text:0x00001634; // type:function size:0x20 scope:local +daPillar_MoveBGExecute__FP10daPillar_c = .text:0x00001654; // type:function size:0x20 scope:local +daPillar_MoveBGDraw__FP10daPillar_c = .text:0x00001674; // type:function size:0x2C scope:local __dt__10cCcD_GSttsFv = .text:0x000016A0; // type:function size:0x48 scope:global __dt__14daPillar_HIO_cFv = .text:0x000016E8; // type:function size:0x5C scope:global __sinit_d_a_obj_pillar_cpp = .text:0x00001744; // type:function size:0x3C scope:local @@ -37,12 +37,12 @@ _ctors = .ctors:0x00000000; // type:label scope:global __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global _dtors = .dtors:0x00000000; // type:label scope:global ...rodata.0 = .rodata:0x00000000; // type:label scope:local -l_bmd = .rodata:0x00000000; // type:object size:0x8 scope:global -l_dzb = .rodata:0x00000008; // type:object size:0x8 scope:global -l_shadowBmd = .rodata:0x00000010; // type:object size:0x8 scope:global -l_heap_size = .rodata:0x00000018; // type:object size:0x8 scope:global -l_cyl_src = .rodata:0x00000020; // type:object size:0x44 scope:global -l_shake_data = .rodata:0x00000064; // type:object size:0x30 scope:global data:2byte +l_bmd = .rodata:0x00000000; // type:object size:0x8 scope:local +l_dzb = .rodata:0x00000008; // type:object size:0x8 scope:local +l_shadowBmd = .rodata:0x00000010; // type:object size:0x8 scope:local +l_heap_size = .rodata:0x00000018; // type:object size:0x8 scope:local +l_cyl_src = .rodata:0x00000020; // type:object size:0x44 scope:local +l_shake_data = .rodata:0x00000064; // type:object size:0x30 scope:local data:2byte @3664 = .rodata:0x00000094; // type:object size:0x4 scope:local @3665 = .rodata:0x00000098; // type:object size:0x4 scope:local @3681 = .rodata:0x0000009C; // type:object size:0x4 scope:local @@ -64,14 +64,14 @@ l_shake_data = .rodata:0x00000064; // type:object size:0x30 scope:global data:2b @4267 = .rodata:0x000000F4; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x000000F8; // type:object size:0x1B scope:local data:string_table ...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_arcName = .data:0x00000020; // type:object size:0x8 scope:global +l_arcName = .data:0x00000020; // type:object size:0x8 scope:local @4193 = .data:0x00000028; // type:object size:0xC scope:local @4194 = .data:0x00000034; // type:object size:0xC scope:local @4195 = .data:0x00000040; // type:object size:0xC scope:local l_func$4192 = .data:0x0000004C; // type:object size:0x24 scope:local -daPillar_METHODS = .data:0x00000070; // type:object size:0x20 scope:global +daPillar_METHODS = .data:0x00000070; // type:object size:0x20 scope:local g_profile_Obj_Pillar = .data:0x00000090; // type:object size:0x30 scope:global __vt__10cCcD_GStts = .data:0x000000C0; // type:object size:0xC scope:global __vt__10dCcD_GStts = .data:0x000000CC; // type:object size:0xC scope:global @@ -82,5 +82,5 @@ __vt__14daPillar_HIO_c = .data:0x00000118; // type:object size:0xC scope:global __vt__14mDoHIO_entry_c = .data:0x00000124; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @3657 = .bss:0x00000008; // type:object size:0xC scope:local -l_HIO = .bss:0x00000014; // type:object size:0x28 scope:global data:float +l_HIO = .bss:0x00000014; // type:object size:0x28 scope:local data:float lbl_593_bss_3C = .bss:0x0000003C; // type:object size:0x1 data:byte diff --git a/configure.py b/configure.py index 5df3bbb9f0f..9d753cb9037 100644 --- a/configure.py +++ b/configure.py @@ -1958,7 +1958,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_pdtile"), ActorRel(NonMatching, "d_a_obj_pdwall"), ActorRel(NonMatching, "d_a_obj_picture"), - ActorRel(NonMatching, "d_a_obj_pillar"), + ActorRel(Matching, "d_a_obj_pillar"), ActorRel(Matching, "d_a_obj_pleaf"), ActorRel(NonMatching, "d_a_obj_poCandle"), ActorRel(NonMatching, "d_a_obj_poFire"), diff --git a/include/d/actor/d_a_obj_carry.h b/include/d/actor/d_a_obj_carry.h index cd003078d61..40a7f828be8 100644 --- a/include/d/actor/d_a_obj_carry.h +++ b/include/d/actor/d_a_obj_carry.h @@ -201,6 +201,7 @@ public: s8 prm_chk_type_lightball() { return (getType() == TYPE_BALL_S || getType() == TYPE_BALL_S_2); } void startCtrl() { mCtrl = 1; } void endCtrl() { mCtrl = 0; } + void setDrop() { field_0xcf2 = 3; } static void make_prm(csXyz* param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5, u8 param_6=0) { param_1->x = (param_4 << 8) | param_3; @@ -227,7 +228,8 @@ public: /* 0xCEC */ float field_0xcec; /* 0xCF0 */ u8 mType; /* 0xCF1 */ u8 field_0xcf1; - /* 0xCF2 */ u8 field_0xCF2[0xCF4 - 0xCF2]; + /* 0xCF2 */ u8 field_0xcf2; + /* 0xCF3 */ u8 field_0xCF3[0xCF4 - 0xCF3]; /* 0xCF4 */ cXyz field_0xcf4; /* 0xD00 */ s16 field_0xd00; /* 0xD02 */ u8 field_0xD02[0xD04 - 0xD02]; diff --git a/include/d/actor/d_a_obj_pillar.h b/include/d/actor/d_a_obj_pillar.h index e186a344741..e393353d94d 100644 --- a/include/d/actor/d_a_obj_pillar.h +++ b/include/d/actor/d_a_obj_pillar.h @@ -2,6 +2,8 @@ #define D_A_OBJ_PILLAR_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -11,15 +13,32 @@ * @details * */ -class daPillar_c : public fopAc_ac_c { +class daPillar_c : public dBgS_MoveBgActor { public: + enum shake_e { + SHAKE_CRASH, + SHAKE_STRONG, + SHAKE_WEAK, + SHAKE_CRASH_LV1, + SHAKE_IRONBALL, + SHAKE_NONE = 0xFF, + }; + + struct sdata_t { + /* 0x0 */ u8 mPower; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ s16 mInitAngleX; + /* 0x4 */ s16 mTime; + /* 0x6 */ s16 mSpeedY; + /* 0x8 */ s16 mMaxChangeX; + /* 0xA */ s16 mMinChangeX; + }; + /* 80CAF4B4 */ void setBaseMtx(); - /* 80CAF5EC */ void Create(); - /* 80CAF7A8 */ void CreateHeap(); - /* 80CAF8A4 */ void create1st(); - /* 80CAFB44 */ void checkAttacked(); + /* 80CAF8A4 */ int create1st(); + /* 80CAFB44 */ bool checkAttacked(); /* 80CAFC08 */ void on_switch(); - /* 80CAFD64 */ void checkShake(); + /* 80CAFD64 */ int checkShake(); /* 80CAFF60 */ void setShake_rcrash(); /* 80CB01E0 */ void setShake_strong(); /* 80CB022C */ void setShake_weak(); @@ -27,30 +46,61 @@ public: /* 80CB031C */ void actionSwOnWait(); /* 80CB0378 */ void actionSwOn(); /* 80CB03CC */ void actionEnd(); - /* 80CB03D0 */ void Execute(f32 (**)[3][4]); - /* 80CB0658 */ void Draw(); - /* 80CB0740 */ void Delete(); + + /* 80CAF7A8 */ virtual int CreateHeap(); + /* 80CAF5EC */ virtual int Create(); + /* 80CB03D0 */ virtual int Execute(Mtx**); + /* 80CB0658 */ virtual int Draw(); + /* 80CB0740 */ virtual int Delete(); + + u16 getTimer() { return fopAcM_GetParamBit(this, 0x18, 8); } + u8 checkShadow() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getType() { return fopAcM_GetParamBit(this, 0x10, 8); } + u8 getMdlType() { return field_0x73e & 0xF; } - bool checkRollAttack() { return field_0x732 == true; } - void setShake(int i_shake) { field_0x738 = i_shake; } + bool checkRollAttack() { return mIsRollAttack == true; } + void setShake(int i_shake) { mShake = i_shake; } + void setAction(u8 i_action) { mAction = i_action; } -private: - /* 0x568 */ u8 field_0x568[0x732 - 0x568]; - /* 0x732 */ u8 field_0x732; - /* 0x733 */ u8 field_0x733[0x738 - 0x733]; - /* 0x738 */ int field_0x738; - /* 0x73C */ u8 field_0x73c[0x73E - 0x73C]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ dCcD_Stts mColliderStts; + /* 0x5E8 */ dCcD_Cyl mCylCollider; + /* 0x724 */ J3DModel* mpShadowModel; + /* 0x728 */ u8 field_0x728[0x72D - 0x728]; + /* 0x72D */ u8 mIsPrmInit; + /* 0x72E */ s16 mRotY; + /* 0x730 */ u8 field_0x730[0x732 - 0x730]; + /* 0x732 */ u8 mIsRollAttack; + /* 0x733 */ u8 mAction; + /* 0x734 */ s16 field_0x734; + /* 0x736 */ s16 mTimer; + /* 0x738 */ int mShake; + /* 0x73C */ s16 field_0x73c; /* 0x73E */ u16 field_0x73e; - /* 0x740 */ u8 field_0x740[0x750 - 0x740]; + /* 0x740 */ u8 mMdlType; + /* 0x741 */ u8 mShakeMode; + /* 0x742 */ sdata_t mShakeData; + /* 0x74E */ s16 mQuakeTimer; }; STATIC_ASSERT(sizeof(daPillar_c) == 0x750); -class daPillar_HIO_c { +class daPillar_HIO_c : public mDoHIO_entry_c { public: /* 80CAF32C */ daPillar_HIO_c(); - /* 80CB0928 */ ~daPillar_HIO_c(); + /* 80CB0928 */ virtual ~daPillar_HIO_c() {} + + /* 0x04 */ daPillar_c::sdata_t mShakeData; + /* 0x10 */ u8 field_0x10[0x1C - 0x10]; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ u8 field_0x24; + /* 0x25 */ u8 field_0x25; + /* 0x26 */ u8 field_0x26; + /* 0x27 */ u8 mIsAdjust; }; diff --git a/src/d/actor/d_a_b_zant.cpp b/src/d/actor/d_a_b_zant.cpp index 280e35d5818..47a7afc8161 100644 --- a/src/d/actor/d_a_b_zant.cpp +++ b/src/d/actor/d_a_b_zant.cpp @@ -3474,7 +3474,7 @@ void daB_ZANT_c::executeMonkey() { fopAcM_SearchByID(mPillarIDs[field_0x70a], &ppillar); if (ppillar != NULL) { - ((daPillar_c*)ppillar)->setShake(2); + ((daPillar_c*)ppillar)->setShake(daPillar_c::SHAKE_WEAK); } } break; @@ -3495,7 +3495,7 @@ void daB_ZANT_c::executeMonkey() { fopAcM_SearchByID(mPillarIDs[field_0x70a], &ppillar); if (ppillar != NULL) { - ((daPillar_c*)ppillar)->setShake(2); + ((daPillar_c*)ppillar)->setShake(daPillar_c::SHAKE_WEAK); } mMode = 1; diff --git a/src/d/actor/d_a_obj_pillar.cpp b/src/d/actor/d_a_obj_pillar.cpp index 8edb619e111..5256261dec3 100644 --- a/src/d/actor/d_a_obj_pillar.cpp +++ b/src/d/actor/d_a_obj_pillar.cpp @@ -4,139 +4,33 @@ */ #include "d/actor/d_a_obj_pillar.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" +#include "d/actor/d_a_player.h" +#include "d/d_com_inf_game.h" +#include "d/actor/d_a_obj_carry.h" +#include "SSystem/SComponent/c_math.h" +#include "d/d_bg_w.h" +#define ACTION_WAIT 0 +#define ACTION_SWON 1 +#define ACTION_END 2 +#define SHAKE_MODE_WAIT 0 +#define SHAKE_MODE_START 100 +#define SHAKE_MODE_RESET_ANGLE 101 +#define SHAKE_MODE_QUAKE 102 +#define SHAKE_MODE_END 103 -// -// Forward References: -// - -extern "C" void __ct__14daPillar_HIO_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" static void rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" void setBaseMtx__10daPillar_cFv(); -extern "C" void Create__10daPillar_cFv(); -extern "C" void CreateHeap__10daPillar_cFv(); -extern "C" void create1st__10daPillar_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void checkAttacked__10daPillar_cFv(); -extern "C" void on_switch__10daPillar_cFv(); -extern "C" void checkShake__10daPillar_cFv(); -extern "C" void setShake_rcrash__10daPillar_cFv(); -extern "C" void setShake_strong__10daPillar_cFv(); -extern "C" void setShake_weak__10daPillar_cFv(); -extern "C" void switch_proc_call__10daPillar_cFv(); -extern "C" void actionSwOnWait__10daPillar_cFv(); -extern "C" void actionSwOn__10daPillar_cFv(); -extern "C" void actionEnd__10daPillar_cFv(); -extern "C" void Execute__10daPillar_cFPPA3_A4_f(); -extern "C" void Draw__10daPillar_cFv(); -extern "C" void Delete__10daPillar_cFv(); -extern "C" static void daPillar_create1st__FP10daPillar_c(); -extern "C" static void daPillar_MoveBGDelete__FP10daPillar_c(); -extern "C" static void daPillar_MoveBGExecute__FP10daPillar_c(); -extern "C" static void daPillar_MoveBGDraw__FP10daPillar_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__14daPillar_HIO_cFv(); -extern "C" void __sinit_d_a_obj_pillar_cpp(); -extern "C" extern char const* const d_a_obj_pillar__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_rollPlayerCrash__FPC10fopAc_ac_cfUlffif(); -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 StartShock__12dVibration_cFii4cXyz(); -extern "C" void StartQuake__12dVibration_cFii4cXyz(); -extern "C" void StopQuake__12dVibration_cFi(); -extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -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 __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__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 cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -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" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80CB09D4-80CB09DC 000000 0008+00 7/7 0/0 0/0 .rodata l_bmd */ -SECTION_RODATA static u8 const l_bmd[8] = { - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, -}; -COMPILER_STRIP_GATE(0x80CB09D4, &l_bmd); +static const int l_bmd[] = {5, 5}; /* 80CB09DC-80CB09E4 000008 0008+00 1/1 0/0 0/0 .rodata l_dzb */ -SECTION_RODATA static u8 const l_dzb[8] = { - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, -}; -COMPILER_STRIP_GATE(0x80CB09DC, &l_dzb); +static const int l_dzb[] = {8, 8}; /* 80CB09E4-80CB09EC 000010 0008+00 1/1 0/0 0/0 .rodata l_shadowBmd */ -SECTION_RODATA static u8 const l_shadowBmd[8] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, -}; -COMPILER_STRIP_GATE(0x80CB09E4, &l_shadowBmd); +static const int l_shadowBmd[] = {4, 4}; /* 80CB09EC-80CB09F4 000018 0008+00 1/1 0/0 0/0 .rodata l_heap_size */ -SECTION_RODATA static u8 const l_heap_size[8] = { - 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x0C, 0x00, -}; -COMPILER_STRIP_GATE(0x80CB09EC, &l_heap_size); +static const u32 l_heap_size[] = {0x1830, 0xC00}; /* 80CB09F4-80CB0A38 000020 0044+00 1/1 0/0 0/0 .rodata l_cyl_src */ const static dCcD_SrcCyl l_cyl_src = { @@ -153,111 +47,476 @@ const static dCcD_SrcCyl l_cyl_src = { } // mCyl }; +#define SHAKE_DATA_CRASH_FIRST 0 +#define SHAKE_DATA_STRONG 1 +#define SHAKE_DATA_WEAK 2 +#define SHAKE_DATA_CRASH 3 + /* 80CB0A38-80CB0A68 000064 0030+00 2/4 0/0 0/0 .rodata l_shake_data */ -SECTION_RODATA static u8 const l_shake_data[48] = { - 0x05, 0x00, 0x03, 0x20, 0x00, 0x14, 0x1B, 0x58, 0x01, 0x90, 0x00, 0x41, 0xFF, 0x00, 0x02, 0x58, - 0x00, 0x14, 0x17, 0x70, 0x01, 0x2C, 0x00, 0x28, 0xFF, 0x00, 0x01, 0x90, 0x00, 0x14, 0x13, 0x88, - 0x00, 0xC8, 0x00, 0x1E, 0x05, 0x00, 0x03, 0x20, 0x00, 0x78, 0x1B, 0x58, 0x00, 0x1E, 0x00, 0x0F, -}; -COMPILER_STRIP_GATE(0x80CB0A38, &l_shake_data); - -/* 80CB0A68-80CB0A6C 000094 0004+00 0/6 0/0 0/0 .rodata @3664 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3664[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CB0A68, &lit_3664); -#pragma pop - -/* 80CB0A6C-80CB0A70 000098 0004+00 0/1 0/0 0/0 .rodata @3665 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3665 = -7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CB0A6C, &lit_3665); -#pragma pop - -/* 80CB0ACC-80CB0ACC 0000F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CB0ACC = "K_mbhasi0"; -SECTION_DEAD static char const* const stringBase_80CB0AD6 = "K_mbhasi1"; -#pragma pop - -/* 80CB0AE8-80CB0AF4 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static const daPillar_c::sdata_t l_shake_data[] = { + /* CRASH FIRST */ {5, 0, 800, 20, 7000, 400, 65}, + /* STRONG */ {255, 0, 600, 20, 6000, 300, 40}, + /* WEAK */ {255, 0, 400, 20, 5000, 200, 30}, + /* CRASH */ {5, 0, 800, 120, 7000, 30, 15}, }; -/* 80CB0AF4-80CB0B08 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 */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA /* 80CB0B08-80CB0B10 -00001 0008+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName[2] = { - (void*)&d_a_obj_pillar__stringBase0, - (void*)(((char*)&d_a_obj_pillar__stringBase0) + 0xA), +static char* l_arcName[] = { + "K_mbhasi0", + "K_mbhasi1", }; -/* 80CB0B10-80CB0B1C -00001 000C+00 0/1 0/0 0/0 .data @4193 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4193[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionSwOnWait__10daPillar_cFv, -}; -#pragma pop +/* 80CAF32C-80CAF3B0 0000EC 0084+00 1/1 0/0 0/0 .text __ct__14daPillar_HIO_cFv */ +daPillar_HIO_c::daPillar_HIO_c() { + mShakeData = l_shake_data[SHAKE_DATA_CRASH_FIRST]; + field_0x1c = 0.0f; + field_0x20 = -0.7f; + field_0x24 = 0; + field_0x25 = 0; + field_0x26 = 0; + mIsAdjust = false; +} -/* 80CB0B1C-80CB0B28 -00001 000C+00 0/1 0/0 0/0 .data @4194 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4194[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionSwOn__10daPillar_cFv, -}; -#pragma pop +/* 80CAF3F8-80CAF4B4 0001B8 00BC+00 1/1 0/0 0/0 .text + * rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +static void rideCallBack(dBgW* i_bgw, fopAc_ac_c* i_this, fopAc_ac_c* i_rideActor) { + daPy_py_c* player = dComIfGp_getLinkPlayer(); + if (((daPillar_c*)i_this)->mIsRollAttack && fopAcM_GetName(i_rideActor) == PROC_Obj_Carry) { + s16 var_r28 = cM_rndF(1300.0f) + 8192.0f; + if (cM_rndFX(1.0f) < 0.0f) { + var_r28 = -var_r28; + } -/* 80CB0B28-80CB0B34 -00001 000C+00 0/1 0/0 0/0 .data @4195 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4195[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEnd__10daPillar_cFv, -}; -#pragma pop + i_rideActor->current.angle.y = player->current.angle.y + 0x7FFF + var_r28; + i_rideActor->speedF = 30.0f; + i_rideActor->speed.y = 1.0f; + ((daObjCarry_c*)i_rideActor)->setDrop(); + } +} -/* 80CB0B34-80CB0B58 00004C 0024+00 0/1 0/0 0/0 .data l_func$4192 */ -#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 +/* 80CAF4B4-80CAF5EC 000274 0138+00 2/2 0/0 0/0 .text setBaseMtx__10daPillar_cFv */ +void daPillar_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, mRotY, shape_angle.z); + mDoMtx_stack_c::YrotM(-mRotY); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); + + if (mpShadowModel != NULL) { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 1.0f, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y + shape_angle.x * cM_ssin(mRotY)); + mpShadowModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } +} + +/* 80CAF5EC-80CAF7A8 0003AC 01BC+00 1/0 0/0 0/0 .text Create__10daPillar_cFv */ +int daPillar_c::Create() { + setBaseMtx(); + + if (mpShadowModel != NULL) { + fopAcM_SetMtx(this, mpShadowModel->getBaseTRMtx()); + } else { + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + } + + mColliderStts.Init(0xFF, 0xFF, this); + mCylCollider.Set(l_cyl_src); + mCylCollider.SetStts(&mColliderStts); + + J3DJoint* pjoint = mpModel->getModelData()->getJointNodePointer(0); + cXyz cull_min(*pjoint->getMin()); + cXyz cull_max(*pjoint->getMax()); + + if (mpShadowModel != NULL) { + J3DJoint* pshadow_joint = mpShadowModel->getModelData()->getJointNodePointer(0); + + if (cull_min.x > pshadow_joint->getMin()->x) { + cull_min.x = pshadow_joint->getMin()->x; + } + + if (cull_min.y > pshadow_joint->getMin()->y) { + cull_min.y = pshadow_joint->getMin()->y; + } + + if (cull_min.z > pshadow_joint->getMin()->z) { + cull_min.z = pshadow_joint->getMin()->z; + } + + if (cull_max.x < pshadow_joint->getMax()->x) { + cull_max.x = pshadow_joint->getMax()->x; + } + + if (cull_max.y < pshadow_joint->getMax()->y) { + cull_max.y = pshadow_joint->getMax()->y; + } + + if (cull_max.z < pshadow_joint->getMax()->z) { + cull_max.z = pshadow_joint->getMax()->z; + } + } + + J3DTransformInfo* pjoint_transform = &pjoint->getTransformInfo(); + cull_min.y += pjoint_transform->mTranslate.y; + cull_max.y += pjoint_transform->mTranslate.y; + fopAcM_setCullSizeBox(this, cull_min.x, cull_min.y, cull_min.z, cull_max.x, cull_max.y, cull_max.z); + + u16 timer = getTimer(); + if (timer == 0 || timer == 255) { + mTimer = 4; + } else { + mTimer = timer; + } + + mShake = SHAKE_NONE; + mpBgW->SetRideCallback(rideCallBack); + return 1; +} + +/* 80CAF7A8-80CAF8A4 000568 00FC+00 1/0 0/0 0/0 .text CreateHeap__10daPillar_cFv */ +int daPillar_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mMdlType], l_bmd[mMdlType]); + JUT_ASSERT(modelData != 0); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + if (checkShadow() == 0xFF) { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[mMdlType], l_shadowBmd[mMdlType]); + JUT_ASSERT(modelData != 0); + mpShadowModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpShadowModel == NULL) { + return 0; + } + } + + return 1; +} + +/* 80CAF8A4-80CAFA58 000664 01B4+00 1/1 0/0 0/0 .text create1st__10daPillar_cFv */ +int daPillar_c::create1st() { + fopAcM_SetupActor(this, daPillar_c); + + if (!mIsPrmInit) { + mIsPrmInit = true; + field_0x73c = home.angle.x; + field_0x73e = home.angle.z; + mMdlType = field_0x73e & 0xF; + + home.angle.z = 0; + home.angle.x = 0; + current.angle.z = 0; + current.angle.x = 0; + shape_angle.z = 0; + shape_angle.x = 0; + } + + int phase_state = dComIfG_resLoad(&mPhase, l_arcName[mMdlType]); + if (phase_state == cPhs_COMPLEATE_e) { + phase_state = MoveBGCreate(l_arcName[mMdlType], l_dzb[mMdlType], dBgS_MoveBGProc_Typical, l_heap_size[mMdlType], NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } + } + + return phase_state; +} + +/* 80CAFB44-80CAFC08 000904 00C4+00 2/2 0/0 0/0 .text checkAttacked__10daPillar_cFv */ +bool daPillar_c::checkAttacked() { + u8 swbit = getSwbit(); + if (swbit != 0xFF) { + if (getType() == 0xFF) { + return fopAcM_isSwitch(this, swbit); + } + + if (getType() == 0) { + bool var_r27 = false; + for (int i = 0; i < 4; i++) { + if (fopAcM_isSwitch(this, swbit + i)) { + var_r27 = true; + } + } + + return var_r27; + } + } + + return false; +} + +/* 80CAFC08-80CAFD64 0009C8 015C+00 1/1 0/0 0/0 .text on_switch__10daPillar_cFv */ +void daPillar_c::on_switch() { + u8 swbit = getSwbit(); + if (swbit != 0xFF) { + if (getType() == 0xFF) { + fopAcM_onSwitch(this, swbit); + } else if (getType() == 0) { + bool var_r27 = false; + for (int i = 0; i < 4; i++) { + if (fopAcM_isSwitch(this, swbit + i)) { + var_r27 = true; + } + } + + if (!var_r27) { + f32 var_f31 = cM_sht2d(field_0x734); + if (var_f31 < 0.0f) { + var_f31 = 359.9f + var_f31; + } + + u16 var_r23 = (u16)(var_f31 / 24.0f + 1.0f); + u16 var_r26 = 1; + for (int i = 0; i < 4; i++) { + if (var_r23 & var_r26) { + fopAcM_onSwitch(this, swbit + i); + } + + var_r26 = (var_r26 << 1); + } + } + } + } +} + +/* 80CAFD64-80CAFF60 000B24 01FC+00 1/1 0/0 0/0 .text checkShake__10daPillar_cFv */ +int daPillar_c::checkShake() { + daPy_py_c* player = daPy_getPlayerActorClass(); + f32 player_dist = player->current.pos.abs(current.pos); + f32 attack_range = 150.0f; + + if (daPy_py_c::i_checkNowWolf()) { + attack_range = 220.0f; + } + + if (player_dist < attack_range && (player->checkFrontRollCrash() || player->checkWolfAttackReverse())) { + if (strcmp(dComIfGp_getStartStageName(), "D_MN05") == 0 && fopAcM_GetRoomNo(this) == 2) { + return SHAKE_CRASH_LV1; + } else { + return SHAKE_CRASH; + } + } else { + if (mShake != SHAKE_NONE) { + return mShake; + } + + if (mCylCollider.ChkTgHit()) { + cCcD_Obj* hitobj = mCylCollider.GetTgHitObj(); + if (hitobj != NULL && hitobj->ChkAtType(AT_TYPE_IRON_BALL)) { + return SHAKE_IRONBALL; + } + } + } + + return SHAKE_NONE; +} + +/* 80CAFF60-80CB01E0 000D20 0280+00 1/1 0/0 0/0 .text setShake_rcrash__10daPillar_cFv */ +void daPillar_c::setShake_rcrash() { + daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer(); + u8 swbit = getSwbit(); + + if (strcmp(dComIfGp_getStartStageName(), "D_MN05") == 0 && fopAcM_GetRoomNo(this) == 2 && fopAcM_isSwitch(this, swbit)) { + mShakeData = l_shake_data[SHAKE_DATA_CRASH]; + mQuakeTimer = 0; + mShakeMode = SHAKE_MODE_START; + fopAcM_seStart(this, Z2SE_OBJ_COLUMN_SHAKE_HARD, 0); + } else { + mShakeData = l_shake_data[SHAKE_DATA_CRASH_FIRST]; + + if (strcmp(dComIfGp_getStartStageName(), "D_MN05") == 0 && fopAcM_GetRoomNo(this) == 2) { + fopAcM_seStart(this, Z2SE_OBJ_COLUMN_SHAKE_FIRST, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_MK_COLUMN_SHAKE, 0); + } + } + + shape_angle.x = mShakeData.mInitAngleX; + dComIfGp_getVibration().StartShock(mShakeData.mPower, 15, cXyz(0.0f, 1.0f, 0.0f)); + mIsRollAttack = true; + + if (!checkAttacked()) { + field_0x734 = player->shape_angle.y; + } +} + +/* 80CB01E0-80CB022C 000FA0 004C+00 1/1 0/0 0/0 .text setShake_strong__10daPillar_cFv */ +void daPillar_c::setShake_strong() { + mShakeData = l_shake_data[SHAKE_DATA_STRONG]; + shape_angle.x = mShakeData.mInitAngleX; +} + +/* 80CB022C-80CB0278 000FEC 004C+00 1/1 0/0 0/0 .text setShake_weak__10daPillar_cFv */ +void daPillar_c::setShake_weak() { + mShakeData = l_shake_data[SHAKE_DATA_WEAK]; + shape_angle.x = mShakeData.mInitAngleX; +} + +/* 80CB0C2C-80CB0C54 000014 0028+00 2/2 0/0 0/0 .bss l_HIO */ +static daPillar_HIO_c l_HIO; + +/* 80CB0278-80CB031C 001038 00A4+00 1/1 0/0 0/0 .text switch_proc_call__10daPillar_cFv */ +void daPillar_c::switch_proc_call() { + typedef void (daPillar_c::*actionFunc)(); + static actionFunc l_func[] = { + &daPillar_c::actionSwOnWait, + &daPillar_c::actionSwOn, + &daPillar_c::actionEnd, + }; + + (this->*l_func[mAction])(); +} + +/* 80CB031C-80CB0378 0010DC 005C+00 1/0 0/0 0/0 .text actionSwOnWait__10daPillar_cFv */ +void daPillar_c::actionSwOnWait() { + if (mIsRollAttack) { + if (checkAttacked()) { + OS_REPORT("toACTION_END\n"); + setAction(ACTION_END); + } else { + OS_REPORT("toSWON\n"); + setAction(ACTION_SWON); + actionSwOn(); + } + } +} + +/* 80CB0378-80CB03CC 001138 0054+00 2/1 0/0 0/0 .text actionSwOn__10daPillar_cFv */ +void daPillar_c::actionSwOn() { + OS_REPORT("swon:mTimer<%d>\n", mTimer); + if (mTimer > 0) { + mTimer--; + } else if (mTimer == 0) { + on_switch(); + setAction(ACTION_END); + } +} + +/* 80CB03CC-80CB03D0 00118C 0004+00 1/0 0/0 0/0 .text actionEnd__10daPillar_cFv */ +void daPillar_c::actionEnd() {} + +/* 80CB03D0-80CB0658 001190 0288+00 1/0 0/0 0/0 .text Execute__10daPillar_cFPPA3_A4_f */ +int daPillar_c::Execute(Mtx** param_0) { + fopAcM_rollPlayerCrash(this, l_HIO.field_0x1c + 85.0f, 0xD, 200.0f, -100.0f, TRUE, l_HIO.field_0x20); + mIsRollAttack = false; + + switch (checkShake()) { + case SHAKE_CRASH: + case SHAKE_CRASH_LV1: + case SHAKE_IRONBALL: + setShake_rcrash(); + break; + case SHAKE_STRONG: + setShake_strong(); + break; + case SHAKE_WEAK: + setShake_weak(); + break; + } + + mShake = SHAKE_NONE; + + switch (mShakeMode) { + case SHAKE_MODE_WAIT: + cLib_addCalcAngleS(&shape_angle.x, 0, mShakeData.mTime, mShakeData.mMaxChangeX, mShakeData.mMinChangeX); + break; + case SHAKE_MODE_START: + // "Shake!!!!\n" + OS_REPORT("揺れ!!!!\n"); + dComIfGp_getVibration().StartQuake(4, 1, cXyz(0.0f, 1.0f, 0.0f)); + mShakeMode = SHAKE_MODE_RESET_ANGLE; + break; + case SHAKE_MODE_RESET_ANGLE: + cLib_addCalcAngleS(&shape_angle.x, 0, 40, 20, 5); + if (shape_angle.x < 260) { + dComIfGp_getVibration().StopQuake(31); + dComIfGp_getVibration().StartQuake(2, 1, cXyz(0.0f, 1.0f, 0.0f)); + mShakeMode = SHAKE_MODE_QUAKE; + } + case SHAKE_MODE_QUAKE: + mQuakeTimer++; + if (mQuakeTimer > 110) { + dComIfGp_getVibration().StopQuake(31); + mShakeMode = SHAKE_MODE_END; + } + break; + case SHAKE_MODE_END: + if(cLib_addCalcAngleS(&shape_angle.x, 0, 60, 10, 3) == 0) { + mShakeMode = SHAKE_MODE_WAIT; + } + break; + default: + JUT_ASSERT(0); + } + + if (shape_angle.x != 0) { + mRotY += (s16)(mShakeData.mSpeedY + (0x300 / shape_angle.x)); + } + + *param_0 = &mBgMtx; + setBaseMtx(); + switch_proc_call(); + + mCylCollider.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCylCollider); + return 1; +} + +/* 80CB0658-80CB0740 001418 00E8+00 1/0 0/0 0/0 .text Draw__10daPillar_cFv */ +int daPillar_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + + if (mpShadowModel != NULL) { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpShadowModel, &tevStr); + mDoExt_modelUpdateDL(mpShadowModel); + } + + return 1; +} + +/* 80CB0740-80CB0780 001500 0040+00 1/0 0/0 0/0 .text Delete__10daPillar_cFv */ +int daPillar_c::Delete() { + dComIfG_resDelete(&mPhase, l_arcName[mMdlType]); + return 1; +} + +/* 80CB0780-80CB0874 001540 00F4+00 1/0 0/0 0/0 .text daPillar_create1st__FP10daPillar_c + */ +static int daPillar_create1st(daPillar_c* i_this) { + fopAcM_SetupActor(i_this, daPillar_c); + return i_this->create1st(); +} + +/* 80CB0874-80CB0894 001634 0020+00 1/0 0/0 0/0 .text daPillar_MoveBGDelete__FP10daPillar_c */ +static int daPillar_MoveBGDelete(daPillar_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80CB0894-80CB08B4 001654 0020+00 1/0 0/0 0/0 .text daPillar_MoveBGExecute__FP10daPillar_c */ +static int daPillar_MoveBGExecute(daPillar_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80CB08B4-80CB08E0 001674 002C+00 1/0 0/0 0/0 .text daPillar_MoveBGDraw__FP10daPillar_c + */ +static int daPillar_MoveBGDraw(daPillar_c* i_this) { + return i_this->MoveBGDraw(); +} /* 80CB0B58-80CB0B78 -00001 0020+00 1/0 0/0 0/0 .data daPillar_METHODS */ static actor_method_class daPillar_METHODS = { - (process_method_func)daPillar_create1st__FP10daPillar_c, - (process_method_func)daPillar_MoveBGDelete__FP10daPillar_c, - (process_method_func)daPillar_MoveBGExecute__FP10daPillar_c, - 0, - (process_method_func)daPillar_MoveBGDraw__FP10daPillar_c, + (process_method_func)daPillar_create1st, + (process_method_func)daPillar_MoveBGDelete, + (process_method_func)daPillar_MoveBGExecute, + NULL, + (process_method_func)daPillar_MoveBGDraw, }; /* 80CB0B78-80CB0BA8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Pillar */ @@ -277,375 +536,3 @@ extern actor_process_profile_definition g_profile_Obj_Pillar = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80CB0BA8-80CB0BB4 0000C0 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, -}; - -/* 80CB0BB4-80CB0BC0 0000CC 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, -}; - -/* 80CB0BC0-80CB0BCC 0000D8 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, -}; - -/* 80CB0BCC-80CB0BD8 0000E4 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, -}; - -/* 80CB0BD8-80CB0C00 0000F0 0028+00 2/2 0/0 0/0 .data __vt__10daPillar_c */ -SECTION_DATA extern void* __vt__10daPillar_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daPillar_cFv, - (void*)Create__10daPillar_cFv, - (void*)Execute__10daPillar_cFPPA3_A4_f, - (void*)Draw__10daPillar_cFv, - (void*)Delete__10daPillar_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80CB0C00-80CB0C0C 000118 000C+00 2/2 0/0 0/0 .data __vt__14daPillar_HIO_c */ -SECTION_DATA extern void* __vt__14daPillar_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daPillar_HIO_cFv, -}; - -/* 80CB0C0C-80CB0C18 000124 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, -}; - -/* 80CAF32C-80CAF3B0 0000EC 0084+00 1/1 0/0 0/0 .text __ct__14daPillar_HIO_cFv */ -daPillar_HIO_c::daPillar_HIO_c() { - // NONMATCHING -} - -/* 80CAF3B0-80CAF3F8 000170 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 -} - -/* ############################################################################################## */ -/* 80CB0A70-80CB0A74 00009C 0004+00 0/1 0/0 0/0 .rodata @3681 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3681 = 8192.0f; -COMPILER_STRIP_GATE(0x80CB0A70, &lit_3681); -#pragma pop - -/* 80CB0A74-80CB0A78 0000A0 0004+00 0/1 0/0 0/0 .rodata @3682 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3682 = 1300.0f; -COMPILER_STRIP_GATE(0x80CB0A74, &lit_3682); -#pragma pop - -/* 80CB0A78-80CB0A7C 0000A4 0004+00 1/5 0/0 0/0 .rodata @3683 */ -SECTION_RODATA static f32 const lit_3683 = 1.0f; -COMPILER_STRIP_GATE(0x80CB0A78, &lit_3683); - -/* 80CB0A7C-80CB0A84 0000A8 0004+04 0/1 0/0 0/0 .rodata @3684 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3684[1 + 1 /* padding */] = { - 30.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80CB0A7C, &lit_3684); -#pragma pop - -/* 80CAF3F8-80CAF4B4 0001B8 00BC+00 1/1 0/0 0/0 .text - * rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -static void rideCallBack(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB0A84-80CB0A8C 0000B0 0008+00 1/2 0/0 0/0 .rodata @3716 */ -SECTION_RODATA static u8 const lit_3716[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CB0A84, &lit_3716); - -/* 80CAF4B4-80CAF5EC 000274 0138+00 2/2 0/0 0/0 .text setBaseMtx__10daPillar_cFv */ -void daPillar_c::setBaseMtx() { - // NONMATCHING -} - -/* 80CAF5EC-80CAF7A8 0003AC 01BC+00 1/0 0/0 0/0 .text Create__10daPillar_cFv */ -void daPillar_c::Create() { - // NONMATCHING -} - -/* 80CAF7A8-80CAF8A4 000568 00FC+00 1/0 0/0 0/0 .text CreateHeap__10daPillar_cFv */ -void daPillar_c::CreateHeap() { - // NONMATCHING -} - -/* 80CAF8A4-80CAFA58 000664 01B4+00 1/1 0/0 0/0 .text create1st__10daPillar_cFv */ -void daPillar_c::create1st() { - // NONMATCHING -} - -/* 80CAFA58-80CAFAA0 000818 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80CAFAA0-80CAFAE8 000860 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80CAFAE8-80CAFB44 0008A8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CAFB44-80CAFC08 000904 00C4+00 2/2 0/0 0/0 .text checkAttacked__10daPillar_cFv */ -void daPillar_c::checkAttacked() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB0A8C-80CB0A90 0000B8 0004+00 0/1 0/0 0/0 .rodata @4060 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4060 = 0x3BB40000; -COMPILER_STRIP_GATE(0x80CB0A8C, &lit_4060); -#pragma pop - -/* 80CB0A90-80CB0A94 0000BC 0004+00 0/1 0/0 0/0 .rodata @4061 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4061 = 0x43B3F333; -COMPILER_STRIP_GATE(0x80CB0A90, &lit_4061); -#pragma pop - -/* 80CB0A94-80CB0A9C 0000C0 0004+04 0/1 0/0 0/0 .rodata @4062 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4062[1 + 1 /* padding */] = { - 24.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80CB0A94, &lit_4062); -#pragma pop - -/* 80CAFC08-80CAFD64 0009C8 015C+00 1/1 0/0 0/0 .text on_switch__10daPillar_cFv */ -void daPillar_c::on_switch() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB0A9C-80CB0AA4 0000C8 0008+00 0/1 0/0 0/0 .rodata @4116 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4116[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CB0A9C, &lit_4116); -#pragma pop - -/* 80CB0AA4-80CB0AAC 0000D0 0008+00 0/1 0/0 0/0 .rodata @4117 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4117[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CB0AA4, &lit_4117); -#pragma pop - -/* 80CB0AAC-80CB0AB4 0000D8 0008+00 0/1 0/0 0/0 .rodata @4118 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4118[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CB0AAC, &lit_4118); -#pragma pop - -/* 80CB0AB4-80CB0AB8 0000E0 0004+00 0/1 0/0 0/0 .rodata @4119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4119 = 150.0f; -COMPILER_STRIP_GATE(0x80CB0AB4, &lit_4119); -#pragma pop - -/* 80CB0AB8-80CB0ABC 0000E4 0004+00 0/1 0/0 0/0 .rodata @4120 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4120 = 220.0f; -COMPILER_STRIP_GATE(0x80CB0AB8, &lit_4120); -#pragma pop - -/* 80CB0ACC-80CB0ACC 0000F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CB0AE0 = "D_MN05"; -#pragma pop - -/* 80CAFD64-80CAFF60 000B24 01FC+00 1/1 0/0 0/0 .text checkShake__10daPillar_cFv */ -void daPillar_c::checkShake() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB0ABC-80CB0AC0 0000E8 0004+00 0/1 0/0 0/0 .rodata @4178 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4178 = -1.0f; -COMPILER_STRIP_GATE(0x80CB0ABC, &lit_4178); -#pragma pop - -/* 80CAFF60-80CB01E0 000D20 0280+00 1/1 0/0 0/0 .text setShake_rcrash__10daPillar_cFv */ -void daPillar_c::setShake_rcrash() { - // NONMATCHING -} - -/* 80CB01E0-80CB022C 000FA0 004C+00 1/1 0/0 0/0 .text setShake_strong__10daPillar_cFv */ -void daPillar_c::setShake_strong() { - // NONMATCHING -} - -/* 80CB022C-80CB0278 000FEC 004C+00 1/1 0/0 0/0 .text setShake_weak__10daPillar_cFv */ -void daPillar_c::setShake_weak() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CB0C20-80CB0C2C 000008 000C+00 1/1 0/0 0/0 .bss @3657 */ -static u8 lit_3657[12]; - -/* 80CB0C2C-80CB0C54 000014 0028+00 2/2 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[40]; - -/* 80CB0C54-80CB0C58 00003C 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_80CB0C54[4]; - -/* 80CB0278-80CB031C 001038 00A4+00 1/1 0/0 0/0 .text switch_proc_call__10daPillar_cFv */ -void daPillar_c::switch_proc_call() { - // NONMATCHING -} - -/* 80CB031C-80CB0378 0010DC 005C+00 1/0 0/0 0/0 .text actionSwOnWait__10daPillar_cFv */ -void daPillar_c::actionSwOnWait() { - // NONMATCHING -} - -/* 80CB0378-80CB03CC 001138 0054+00 2/1 0/0 0/0 .text actionSwOn__10daPillar_cFv */ -void daPillar_c::actionSwOn() { - // NONMATCHING -} - -/* 80CB03CC-80CB03D0 00118C 0004+00 1/0 0/0 0/0 .text actionEnd__10daPillar_cFv */ -void daPillar_c::actionEnd() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80CB0AC0-80CB0AC4 0000EC 0004+00 0/1 0/0 0/0 .rodata @4265 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4265 = 85.0f; -COMPILER_STRIP_GATE(0x80CB0AC0, &lit_4265); -#pragma pop - -/* 80CB0AC4-80CB0AC8 0000F0 0004+00 0/1 0/0 0/0 .rodata @4266 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4266 = 200.0f; -COMPILER_STRIP_GATE(0x80CB0AC4, &lit_4266); -#pragma pop - -/* 80CB0AC8-80CB0ACC 0000F4 0004+00 0/1 0/0 0/0 .rodata @4267 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4267 = -100.0f; -COMPILER_STRIP_GATE(0x80CB0AC8, &lit_4267); -#pragma pop - -/* 80CB03D0-80CB0658 001190 0288+00 1/0 0/0 0/0 .text Execute__10daPillar_cFPPA3_A4_f */ -void daPillar_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* 80CB0658-80CB0740 001418 00E8+00 1/0 0/0 0/0 .text Draw__10daPillar_cFv */ -void daPillar_c::Draw() { - // NONMATCHING -} - -/* 80CB0740-80CB0780 001500 0040+00 1/0 0/0 0/0 .text Delete__10daPillar_cFv */ -void daPillar_c::Delete() { - // NONMATCHING -} - -/* 80CB0780-80CB0874 001540 00F4+00 1/0 0/0 0/0 .text daPillar_create1st__FP10daPillar_c - */ -static void daPillar_create1st(daPillar_c* param_0) { - // NONMATCHING -} - -/* 80CB0874-80CB0894 001634 0020+00 1/0 0/0 0/0 .text daPillar_MoveBGDelete__FP10daPillar_c */ -static void daPillar_MoveBGDelete(daPillar_c* param_0) { - // NONMATCHING -} - -/* 80CB0894-80CB08B4 001654 0020+00 1/0 0/0 0/0 .text daPillar_MoveBGExecute__FP10daPillar_c */ -static void daPillar_MoveBGExecute(daPillar_c* param_0) { - // NONMATCHING -} - -/* 80CB08B4-80CB08E0 001674 002C+00 1/0 0/0 0/0 .text daPillar_MoveBGDraw__FP10daPillar_c - */ -static void daPillar_MoveBGDraw(daPillar_c* param_0) { - // NONMATCHING -} - -/* 80CB08E0-80CB0928 0016A0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CB0928-80CB0984 0016E8 005C+00 2/1 0/0 0/0 .text __dt__14daPillar_HIO_cFv */ -daPillar_HIO_c::~daPillar_HIO_c() { - // NONMATCHING -} - -/* 80CB0984-80CB09C0 001744 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_pillar_cpp */ -void __sinit_d_a_obj_pillar_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80CB0984, __sinit_d_a_obj_pillar_cpp); -#pragma pop - -/* 80CB0ACC-80CB0ACC 0000F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */