From e931b1fb7967ef3419945c1d7a327c8be3879f50 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Tue, 16 Sep 2025 07:31:37 -0700 Subject: [PATCH] swpush5 / bhashi done (#2663) * swpush5 done * bhashi done * gptaru done --- configure.py | 6 +- include/JSystem/J3DGraphAnimator/J3DModel.h | 6 +- include/d/actor/d_a_b_mgn.h | 1 + include/d/actor/d_a_obj_bhashi.h | 65 +- include/d/actor/d_a_obj_gpTaru.h | 65 +- include/d/actor/d_a_obj_swpush5.h | 43 +- src/d/actor/d_a_obj_bhashi.cpp | 1065 ++++++------- src/d/actor/d_a_obj_gpTaru.cpp | 1558 +++++++------------ src/d/actor/d_a_obj_swpush5.cpp | 1095 +++++-------- 9 files changed, 1589 insertions(+), 2315 deletions(-) diff --git a/configure.py b/configure.py index 400f69e83aa..e7ae78bef35 100755 --- a/configure.py +++ b/configure.py @@ -1615,14 +1615,14 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_maro"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_taro"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_tkj"), - ActorRel(NonMatching, "d_a_obj_bhashi"), + ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_bhashi"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_bkdoor"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_bosswarp"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_cboard"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_digplace"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_eff"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_fmobj"), - ActorRel(NonMatching, "d_a_obj_gpTaru"), + ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_gpTaru"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_hhashi"), ActorRel(NonMatching, "d_a_obj_kanban2"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_kbacket"), @@ -1641,7 +1641,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_stick"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_stoneMark"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_swpropeller"), - ActorRel(NonMatching, "d_a_obj_swpush5"), + ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_swpush5"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_obj_yobikusa"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_scene_exit2"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_shop_item"), diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index b21abd212fd..fadafe77689 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -98,8 +98,8 @@ public: Mtx33* getNrmMtxPtr() { return mMtxBuffer->getNrmMtxPtr(); } Mtx* getDrawMtxPtr() { return mMtxBuffer->getDrawMtxPtr(); } void setBaseScale(const Vec& scale) { mBaseScale = scale; } - void setUserArea(u32 area) { mUserArea = area; } - u32 getUserArea() const { return mUserArea; } + void setUserArea(uintptr_t area) { mUserArea = area; } + uintptr_t getUserArea() const { return mUserArea; } Vec* getBaseScale() { return &mBaseScale; } void setAnmMtx(int jointNo, Mtx m) { mMtxBuffer->setAnmMtx(jointNo, m); } MtxP getAnmMtx(int jointNo) { return mMtxBuffer->getAnmMtx(jointNo); } @@ -110,7 +110,7 @@ public: /* 0x08 */ u32 mFlags; /* 0x0C */ u32 mDiffFlag; /* 0x10 */ J3DCalcCallBack mCalcCallBack; - /* 0x14 */ u32 mUserArea; + /* 0x14 */ uintptr_t mUserArea; /* 0x18 */ Vec mBaseScale; /* 0x24 */ Mtx mBaseTransformMtx; /* 0x54 */ Mtx mInternalView; diff --git a/include/d/actor/d_a_b_mgn.h b/include/d/actor/d_a_b_mgn.h index 192f2cf98bc..2727b6977e6 100644 --- a/include/d/actor/d_a_b_mgn.h +++ b/include/d/actor/d_a_b_mgn.h @@ -90,6 +90,7 @@ public: /* 8060F0D0 */ int create(); bool isDown() { return field_0xb01 != 0; } + bool isAppear() { return field_0xb05 != 0; } private: /* 0x05AC */ request_of_phase_process_class mMgnPhase; diff --git a/include/d/actor/d_a_obj_bhashi.h b/include/d/actor/d_a_obj_bhashi.h index 96466edbc31..6c05dac0b97 100644 --- a/include/d/actor/d_a_obj_bhashi.h +++ b/include/d/actor/d_a_obj_bhashi.h @@ -2,6 +2,27 @@ #define D_A_OBJ_BHASHI_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" + +class Hahen_c { +public: + /* 80577794 */ Hahen_c(); + /* 805777A4 */ void Wall_Check(); + /* 80577868 */ void HahenMotion(); + /* 80577C1C */ bool CheckCull(); + /* 80577DA4 */ bool checkViewArea(); + /* 80577FE0 */ void Roll_Set(cXyz*, f32, s16); + + /* 0x00 */ cXyz pos; + /* 0x0C */ cXyz speed; + /* 0x18 */ cXyz scale; + /* 0x24 */ csXyz rotation; + /* 0x2A */ csXyz rot_speed; + /* 0x30 */ u8 status; + /* 0x31 */ u8 field_0x31; +}; /** * @ingroup actors-objects @@ -11,7 +32,7 @@ * @details * */ -class daObjBHASHI_c : public fopAc_ac_c { +class daObjBHASHI_c : public dBgS_MoveBgActor { public: /* 80576A58 */ void initCcCylinder(); /* 80576AC4 */ void setCcCylinder(); @@ -21,29 +42,33 @@ public: /* 805771EC */ void Obj_Damage(); /* 80577E24 */ void Rolling(cXyz*, f32, f32); /* 805781FC */ void setBaseMtx(); - /* 80578330 */ void CreateHeap(); - /* 8057842C */ void create(); - /* 80578788 */ void Create(); - /* 805787CC */ void Execute(Mtx**); - /* 805788EC */ void Draw(); - /* 805789E8 */ void Delete(); + /* 8057842C */ int create(); + + /* 80578330 */ virtual int CreateHeap(); + /* 80578788 */ virtual int Create(); + /* 805787CC */ virtual int Execute(Mtx**); + /* 805788EC */ virtual int Draw(); + /* 805789E8 */ virtual int Delete(); private: - /* 0x568 */ u8 field_0x568[0x1464 - 0x568]; + /* 0x05A0 */ u8 field_0x5A0[0x05A4 - 0x05A0]; + /* 0x05A4 */ int mMode; + /* 0x05A8 */ s16 field_0x5a8; + /* 0x05AC */ Hahen_c mHahen[60]; + /* 0x11DC */ f32 field_0x11dc; + /* 0x11E0 */ s16 field_0x11e0; + /* 0x11E2 */ u8 mSwbit; + /* 0x11E4 */ s16 mDamageTimer; + /* 0x11E6 */ u8 field_0x11E6[0x11EC - 0x11E6]; + /* 0x11EC */ J3DModel* mpPillarMdl; + /* 0x11F0 */ J3DModel* mpHahenMdls[60]; + /* 0x12E0 */ request_of_phase_process_class mPhase; + /* 0x12E8 */ dCcD_Stts mCcStts; + /* 0x1324 */ dCcD_Cyl mCcCyl; + /* 0x1460 */ u8 field_0x1460; + /* 0x1461 */ u8 mIsHahenSimpleEntry; }; STATIC_ASSERT(sizeof(daObjBHASHI_c) == 0x1464); -class Hahen_c { -public: - /* 80577794 */ Hahen_c(); - /* 805777A4 */ void Wall_Check(); - /* 80577868 */ void HahenMotion(); - /* 80577C1C */ void CheckCull(); - /* 80577DA4 */ void checkViewArea(); - /* 80577FE0 */ void Roll_Set(cXyz*, f32, s16); - /* 80578744 */ ~Hahen_c(); -}; - - #endif /* D_A_OBJ_BHASHI_H */ diff --git a/include/d/actor/d_a_obj_gpTaru.h b/include/d/actor/d_a_obj_gpTaru.h index 271c94dbfce..448dd389ddd 100644 --- a/include/d/actor/d_a_obj_gpTaru.h +++ b/include/d/actor/d_a_obj_gpTaru.h @@ -2,6 +2,8 @@ #define D_A_OBJ_GPTARU_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" /** * @ingroup actors-objects @@ -14,13 +16,11 @@ class daGpTaru_c : public fopAc_ac_c { public: /* 8057D1F8 */ void setBaseMtx(); - /* 8057D2D0 */ void CreateHeap(); - /* 8057D33C */ void create(); - /* 8057D7CC */ void createHeapCallBack(fopAc_ac_c*); - /* 8057DB3C */ void chkSinkAll(); - /* 8057DB60 */ void chkWaterLineIn(); + /* 8057D33C */ int create(); + /* 8057D7CC */ static int createHeapCallBack(fopAc_ac_c*); + /* 8057DB3C */ BOOL chkSinkAll(); + /* 8057DB60 */ BOOL chkWaterLineIn(); /* 8057DB84 */ void bgCheck(); - /* 8057E224 */ void Execute(); /* 8057E494 */ void mode_proc_call(); /* 8057E5DC */ void mode_init_wait(); /* 8057E618 */ void mode_proc_wait(); @@ -37,22 +37,61 @@ public: /* 8057EFFC */ void mode_init_sink(); /* 8057F014 */ void mode_proc_sink(); /* 8057F104 */ void breakEffSet(); - /* 8057F284 */ void Draw(); - /* 8057F328 */ void Delete(); - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; + /* 8057D2D0 */ virtual int CreateHeap(); + /* 8057E224 */ virtual int Execute(); + /* 8057F284 */ virtual int Draw(); + /* 8057F328 */ virtual int Delete(); + + static const dCcD_SrcGObjInf mCcDObjInfo; + static dCcD_SrcCyl mCcDCyl; private: - /* 0x568 */ u8 field_0x568[0x9ac - 0x568]; + /* 0x56C */ request_of_phase_process_class mPhase; + /* 0x574 */ J3DModel* mpModel; + /* 0x578 */ u8 mMode; + /* 0x579 */ u8 mIsPrevCarry; + /* 0x57C */ cXyz field_0x57c; + /* 0x588 */ cXyz field_0x588; + /* 0x594 */ cXyz field_0x594; + /* 0x5A0 */ u8 mIsPrevInWater; + /* 0x5A4 */ dBgS_ObjAcch mAcch; + /* 0x77C */ dBgS_AcchCir mAcchCir; + /* 0x7BC */ dCcD_Stts mCcStts; + /* 0x7F8 */ dCcD_Cyl mCcCyl; + /* 0x934 */ u8 mExploTimer; + /* 0x938 */ f32 field_0x938; + /* 0x93C */ csXyz field_0x93c; + /* 0x944 */ int field_0x944; + /* 0x948 */ f32 mExplosionRange; + /* 0x94C */ u32 mSmokeEmtID; + /* 0x950 */ u32 field_0x950; + /* 0x954 */ u8 field_0x954; + /* 0x955 */ u8 field_0x955; + /* 0x958 */ WIND_INFLUENCE mWind; + /* 0x984 */ LIGHT_INFLUENCE mLight; + /* 0x9A4 */ f32 mExploWindStrength; + /* 0x9A8 */ u8 field_0x9a8; }; STATIC_ASSERT(sizeof(daGpTaru_c) == 0x9ac); -class daGpTaru_HIO_c { +class daGpTaru_HIO_c : public fOpAcm_HIO_entry_c { public: /* 8057D0CC */ daGpTaru_HIO_c(); - /* 8057F458 */ ~daGpTaru_HIO_c(); + /* 8057F458 */ virtual ~daGpTaru_HIO_c() {} + + void genMessage(JORMContext*); + + /* 0x04 */ f32 weight; + /* 0x08 */ f32 shake; + /* 0x0C */ f32 explosion_range; + /* 0x10 */ u8 explosion_wait_time; + /* 0x11 */ u8 vibration; + /* 0x14 */ cXyz effect_scale; + /* 0x20 */ cXyz pre_smoke_scale; + /* 0x2C */ f32 smoke_scale; + /* 0x30 */ cXyz barrel_scale; }; diff --git a/include/d/actor/d_a_obj_swpush5.h b/include/d/actor/d_a_obj_swpush5.h index 39fd0f515ef..391c78f4c61 100644 --- a/include/d/actor/d_a_obj_swpush5.h +++ b/include/d/actor/d_a_obj_swpush5.h @@ -2,6 +2,7 @@ #define D_A_OBJ_SWPUSH5_H #include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_movebg_actor.h" /** * @ingroup actors-objects @@ -11,16 +12,13 @@ * @details Mutli-purpose heavy switch actor. (Iron Boots switch) * */ -class daObjSw5_c : public fopAc_ac_c { +class daObjSw5_c : public dBgS_MoveBgActor { public: /* 8059B804 */ void initBaseMtx(); /* 8059B88C */ void setBaseMtx(); - /* 8059B920 */ void Create(); - /* 8059BA1C */ void CreateHeap(); - /* 8059BB1C */ void create(); - /* 8059BBD4 */ void Execute(Mtx**); + /* 8059BB1C */ int create(); /* 8059BC70 */ void setting_ride_flag(); - /* 8059BD24 */ bool checkPushable(); + /* 8059BD24 */ BOOL checkPushable(); /* 8059BD2C */ void event_proc_call(); /* 8059BE18 */ void actionPauseNoneInit(); /* 8059BE24 */ void actionPauseNone(); @@ -41,11 +39,36 @@ public: /* 8059C370 */ void modeWaitUpper(); /* 8059C3C4 */ void modeUpperInit(); /* 8059C454 */ void modeUpper(); - /* 8059C4BC */ void Draw(); - /* 8059C560 */ void Delete(); -private: - /* 0x568 */ u8 field_0x568[0x600 - 0x568]; + /* 8059BA1C */ virtual int CreateHeap(); + /* 8059B920 */ virtual int Create(); + /* 8059BBD4 */ virtual int Execute(Mtx**); + /* 8059C4BC */ virtual int Draw(); + /* 8059C560 */ virtual int Delete(); + + u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwNo2() { return 0xFF; } + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ u8 mUnkRideTimer; + /* 0x5AD */ u8 field_0x5ad; + /* 0x5AE */ u8 field_0x5ae; + /* 0x5AF */ u8 field_0x5af; + /* 0x5B0 */ u8 field_0x5b0; + /* 0x5B1 */ u8 field_0x5b1; + /* 0x5B2 */ u8 mIsPlayerRideHvy; + /* 0x5B3 */ u8 mIsPlayerRideHvyPrev; + /* 0x5B4 */ int mCounter; + /* 0x5B8 */ dBgW* mpBgW2; + /* 0x5BC */ Mtx mMtx; + /* 0x5EC */ u8 field_0x5EC[0x5EE - 0x5EC]; + /* 0x5EE */ u8 mMode; + /* 0x5EF */ u8 mAction; + /* 0x5F0 */ u8 mPauseTimer; + /* 0x5F4 */ f32 mTopPos; + /* 0x5F8 */ f32 field_0x5f8; + /* 0x5FC */ f32 field_0x5fc; }; STATIC_ASSERT(sizeof(daObjSw5_c) == 0x600); diff --git a/src/d/actor/d_a_obj_bhashi.cpp b/src/d/actor/d_a_obj_bhashi.cpp index bc63c33ecd6..dbf37aae617 100644 --- a/src/d/actor/d_a_obj_bhashi.cpp +++ b/src/d/actor/d_a_obj_bhashi.cpp @@ -6,613 +6,531 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_bhashi.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" - - - -// -// Forward References: -// - -extern "C" void initCcCylinder__13daObjBHASHI_cFv(); -extern "C" void setCcCylinder__13daObjBHASHI_cFv(); -extern "C" static void daObjBHASHI_Create__FP10fopAc_ac_c(); -extern "C" static void daObjBHASHI_Delete__FP13daObjBHASHI_c(); -extern "C" void Set_Hahen__13daObjBHASHI_cFv(); -extern "C" void Set_Speed__13daObjBHASHI_cFssff(); -extern "C" void Obj_Damage__13daObjBHASHI_cFv(); -extern "C" void Obj_Damage__13daObjBHASHI_cF4cXyz(); -extern "C" void __ct__7Hahen_cFv(); -extern "C" void Wall_Check__7Hahen_cFv(); -extern "C" void HahenMotion__7Hahen_cFv(); -extern "C" void CheckCull__7Hahen_cFv(); -extern "C" void checkViewArea__7Hahen_cFv(); -extern "C" void Rolling__13daObjBHASHI_cFP4cXyzff(); -extern "C" void Roll_Set__7Hahen_cFP4cXyzfs(); -extern "C" void setBaseMtx__13daObjBHASHI_cFv(); -extern "C" static void daObjBHASHI_Draw__FP13daObjBHASHI_c(); -extern "C" static void daObjBHASHI_Execute__FP13daObjBHASHI_c(); -extern "C" void CreateHeap__13daObjBHASHI_cFv(); -extern "C" void create__13daObjBHASHI_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__7Hahen_cFv(); -extern "C" static bool daObjBHASHI_IsDelete__FP13daObjBHASHI_c(); -extern "C" void Create__13daObjBHASHI_cFv(); -extern "C" void Execute__13daObjBHASHI_cFPPA3_A4_f(); -extern "C" void Draw__13daObjBHASHI_cFv(); -extern "C" void Delete__13daObjBHASHI_cFv(); -extern "C" extern char const* const d_a_obj_bhashi__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void mDoLib_project__FP3VecP3Vec(); -extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc(); -extern "C" void removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai(); -extern "C" void entrySimpleModel__14dComIfG_play_cFP8J3DModeli(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void getObjectResName2Index__14dRes_control_cFPCcPCc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__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 ResetTgHit__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 GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -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" u8 sincosTable___5JMath[65536]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80578A88-80578ACC 000000 0044+00 11/11 0/0 0/0 .rodata ccCylSrc$3780 */ -const static dCcD_SrcCyl ccCylSrc = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {0.0f, 0.0f, 0.0f}, // mCenter - 300.0f, // mRadius - 2200.0f // mHeight - } // mCyl -}; +#include "d/actor/d_a_player.h" +#include "d/actor/d_a_b_mgn.h" +#include "d/d_s_play.h" /* 80576A58-80576AC4 000078 006C+00 1/1 0/0 0/0 .text initCcCylinder__13daObjBHASHI_cFv */ void daObjBHASHI_c::initCcCylinder() { - // NONMATCHING -} + const static dCcD_SrcCyl ccCylSrc = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x100000, 0x1f}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 300.0f, // mRadius + 2200.0f // mHeight + } // mCyl + }; -/* ############################################################################################## */ -/* 80578ACC-80578AD0 000044 0004+00 2/2 0/0 0/0 .rodata @3795 */ -SECTION_RODATA static f32 const lit_3795 = -1100.0f; -COMPILER_STRIP_GATE(0x80578ACC, &lit_3795); + mCcStts.Init(0xFF, 0xFF, this); + mCcCyl.Set(ccCylSrc); + mCcCyl.SetStts(&mCcStts); + mCcCyl.SetC(current.pos); + mCcCyl.OnTgShield(); +} /* 80576AC4-80576B34 0000E4 0070+00 1/1 0/0 0/0 .text setCcCylinder__13daObjBHASHI_cFv */ void daObjBHASHI_c::setCcCylinder() { - // NONMATCHING + cXyz pos; + pos = current.pos; + pos.y += -1100.0f; + mCcCyl.SetC(pos); + dComIfG_Ccsp()->Set(&mCcCyl); } /* 80576B34-80576B54 000154 0020+00 1/0 0/0 0/0 .text daObjBHASHI_Create__FP10fopAc_ac_c */ -static void daObjBHASHI_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Create(fopAc_ac_c* i_this) { + return ((daObjBHASHI_c*)i_this)->create(); } /* 80576B54-80576B78 000174 0024+00 1/0 0/0 0/0 .text daObjBHASHI_Delete__FP13daObjBHASHI_c */ -static void daObjBHASHI_Delete(daObjBHASHI_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Delete(daObjBHASHI_c* i_this) { + i_this->MoveBGDelete(); + return 1; } -/* ############################################################################################## */ -/* 80578AD0-80578AD4 000048 0004+00 1/5 0/0 0/0 .rodata @3829 */ -SECTION_RODATA static f32 const lit_3829 = 1100.0f; -COMPILER_STRIP_GATE(0x80578AD0, &lit_3829); - -/* 80578AD4-80578AD8 00004C 0004+00 1/1 0/0 0/0 .rodata @3830 */ -SECTION_RODATA static f32 const lit_3830 = 50.0f; -COMPILER_STRIP_GATE(0x80578AD4, &lit_3830); - /* 80576B78-80576C50 000198 00D8+00 2/2 0/0 0/0 .text Set_Hahen__13daObjBHASHI_cFv */ void daObjBHASHI_c::Set_Hahen() { - // NONMATCHING + csXyz sp8(0, 0, 0); + + if (mMode == 0) { + cXyz sp10(current.pos.x, current.pos.y - 1100.0f, current.pos.z); + sp8.y = field_0x11dc; + Set_Speed(0, 60, 50.0f, 50.0f); + mMode = 2; + field_0x11e0 = 1000; + + if (mpBgW != NULL && mpBgW->ChkUsed() && dComIfG_Bgsp().Release(mpBgW)) { + OS_REPORT("Release Error\n"); + } + } } -/* ############################################################################################## */ -/* 80578AD8-80578ADC 000050 0004+00 0/1 0/0 0/0 .rodata @3922 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3922 = 80.0f; -COMPILER_STRIP_GATE(0x80578AD8, &lit_3922); -#pragma pop - -/* 80578ADC-80578AE0 000054 0004+00 0/1 0/0 0/0 .rodata @3923 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3923 = 350.0f; -COMPILER_STRIP_GATE(0x80578ADC, &lit_3923); -#pragma pop - -/* 80578AE0-80578AE4 000058 0004+00 0/1 0/0 0/0 .rodata @3924 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3924 = 2.5f; -COMPILER_STRIP_GATE(0x80578AE0, &lit_3924); -#pragma pop - -/* 80578AE4-80578AE8 00005C 0004+00 0/1 0/0 0/0 .rodata @3925 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3925 = 5.5f; -COMPILER_STRIP_GATE(0x80578AE4, &lit_3925); -#pragma pop - -/* 80578AE8-80578AEC 000060 0004+00 0/1 0/0 0/0 .rodata @3926 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3926 = 31.0f / 10.0f; -COMPILER_STRIP_GATE(0x80578AE8, &lit_3926); -#pragma pop - -/* 80578AEC-80578AF0 000064 0004+00 0/1 0/0 0/0 .rodata @3927 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3927 = 4.5f; -COMPILER_STRIP_GATE(0x80578AEC, &lit_3927); -#pragma pop - -/* 80578AF0-80578AF4 000068 0004+00 0/2 0/0 0/0 .rodata @3928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3928 = 2.0f; -COMPILER_STRIP_GATE(0x80578AF0, &lit_3928); -#pragma pop - -/* 80578AF4-80578AF8 00006C 0004+00 0/1 0/0 0/0 .rodata @3929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3929 = 30.0f; -COMPILER_STRIP_GATE(0x80578AF4, &lit_3929); -#pragma pop - -/* 80578AF8-80578AFC 000070 0004+00 0/1 0/0 0/0 .rodata @3930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3930 = 8192.0f; -COMPILER_STRIP_GATE(0x80578AF8, &lit_3930); -#pragma pop - -/* 80578AFC-80578B00 000074 0004+00 1/9 0/0 0/0 .rodata @3931 */ -SECTION_RODATA static u8 const lit_3931[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80578AFC, &lit_3931); - -/* 80578B00-80578B04 000078 0004+00 0/1 0/0 0/0 .rodata @3932 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3932 = 15000.0f; -COMPILER_STRIP_GATE(0x80578B00, &lit_3932); -#pragma pop - -/* 80578B04-80578B08 00007C 0004+00 0/1 0/0 0/0 .rodata @3933 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3933 = 65536.0f; -COMPILER_STRIP_GATE(0x80578B04, &lit_3933); -#pragma pop - -/* 80578B08-80578B0C 000080 0004+00 0/1 0/0 0/0 .rodata @3934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3934 = 1050.0f; -COMPILER_STRIP_GATE(0x80578B08, &lit_3934); -#pragma pop - -/* 80578B0C-80578B10 000084 0004+00 0/1 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 60.0f; -COMPILER_STRIP_GATE(0x80578B0C, &lit_3935); -#pragma pop - -/* 80578B10-80578B14 000088 0004+00 0/1 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3936 = 10.0f; -COMPILER_STRIP_GATE(0x80578B10, &lit_3936); -#pragma pop - -/* 80578B14-80578B18 00008C 0004+00 0/1 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3937 = 20.0f; -COMPILER_STRIP_GATE(0x80578B14, &lit_3937); -#pragma pop - -/* 80578B18-80578B1C 000090 0004+00 0/1 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938 = 1750.0f; -COMPILER_STRIP_GATE(0x80578B18, &lit_3938); -#pragma pop - -/* 80578B1C-80578B20 000094 0004+00 0/1 0/0 0/0 .rodata @3939 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3939 = 32000.0f; -COMPILER_STRIP_GATE(0x80578B1C, &lit_3939); -#pragma pop - -/* 80578B20-80578B28 000098 0008+00 0/3 0/0 0/0 .rodata @3942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3942[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B20, &lit_3942); -#pragma pop - /* 80576C50-805771EC 000270 059C+00 1/1 0/0 0/0 .text Set_Speed__13daObjBHASHI_cFssff */ -void daObjBHASHI_c::Set_Speed(s16 param_0, s16 param_1, f32 param_2, f32 param_3) { - // NONMATCHING +void daObjBHASHI_c::Set_Speed(s16 param_0, s16 i_hahenNum, f32 param_2, f32 param_3) { + csXyz sp24; + f32 var_f31; + f32 var_f30; + s16 rot_y; + + for (int i = param_0; i < i_hahenNum - 40; i++) { + mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f), + 350.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f), + current.pos.z + cM_rndFX(80.0f)); + + mHahen[i].scale.set((1.0f + XREG_F(0)) * (2.0f + cM_rndF(5.5f)), + (1.0f + XREG_F(0)) * (3.1f + cM_rndF(4.5f)), + (1.0f + XREG_F(0)) * (2.5f + cM_rndF(5.5f))); + + var_f30 = nREG_F(1) + (60.0f + (param_2 + cM_rndFX(param_3))); + var_f31 = 30.0f + cM_rndFX(30.0f + nREG_F(2)); + rot_y = nREG_S(0) + (field_0x11dc + (s16)cM_rndFX(8192.0f)); + + mHahen[i].speed.set(0.0f, 0.0f, var_f31); + mDoMtx_stack_c::YrotS(rot_y); + mDoMtx_stack_c::multVec(&mHahen[i].speed, &mHahen[i].speed); + mHahen[i].speed.y = var_f31; + + mHahen[i].rot_speed.x = cM_rndFX(15000.0f); + mHahen[i].rot_speed.y = cM_rndFX(15000.0f); + mHahen[i].rotation.x = cM_rndFX(65536.0f); + mHahen[i].rotation.y = cM_rndFX(65536.0f); + } + + for (int i = i_hahenNum - 40; i < i_hahenNum - 20; i++) { + mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f), + 1050.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f), + current.pos.z + cM_rndFX(80.0f)); + + mHahen[i].scale.set((1.0f + XREG_F(0)) * (2.0f + cM_rndF(5.5f)), + (1.0f + XREG_F(0)) * (3.1f + cM_rndF(4.5f)), + (1.0f + XREG_F(0)) * (2.5f + cM_rndF(5.5f))); + + var_f30 = nREG_F(3) + (50.0f + cM_rndFX(60.0f)); + var_f31 = nREG_F(4) + (10.0f + cM_rndFX(20.0f)); + rot_y = nREG_S(0) + (field_0x11dc + (s16)cM_rndFX(8192.0f)); + + mHahen[i].speed.set(0.0f, 0.0f, var_f31); + mDoMtx_stack_c::YrotS(rot_y); + mDoMtx_stack_c::multVec(&mHahen[i].speed, &mHahen[i].speed); + mHahen[i].speed.y = var_f31; + + mHahen[i].rot_speed.x = cM_rndFX(15000.0f); + mHahen[i].rot_speed.y = cM_rndFX(15000.0f); + mHahen[i].rotation.x = cM_rndFX(65536.0f); + mHahen[i].rotation.y = cM_rndFX(65536.0f); + } + + for (int i = i_hahenNum - 20; i < i_hahenNum; i++) { + mHahen[i].pos.set(current.pos.x + cM_rndFX(80.0f), + 1750.0f + (current.pos.y - 1100.0f) + cM_rndFX(350.0f), + current.pos.z + cM_rndFX(80.0f)); + + mHahen[i].scale.set(2.0f + cM_rndF(5.5f), + 3.1f + cM_rndF(4.5f), + 2.5f + cM_rndF(5.5f)); + + var_f30 = nREG_F(3) + (20.0f + cM_rndFX(20.0f)); + var_f31 = nREG_F(4) + (10.0f + cM_rndFX(20.0f)); + rot_y = (s16)cM_rndFX(32000.0f); + + f32 var_f29 = var_f30 * cM_ssin(rot_y); + f32 var_f28 = var_f31 + gravity; + f32 var_f27 = var_f30 * cM_scos(rot_y); + + mHahen[i].speed.set(var_f29, var_f28, var_f27); + + mHahen[i].rot_speed.x = cM_rndFX(15000.0f); + mHahen[i].rot_speed.y = cM_rndFX(15000.0f); + mHahen[i].rotation.x = cM_rndFX(65536.0f); + mHahen[i].rotation.y = cM_rndFX(65536.0f); + } } -/* ############################################################################################## */ -/* 80578B28-80578B2C 0000A0 0004+00 0/3 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = 1.0f; -COMPILER_STRIP_GATE(0x80578B28, &lit_4028); -#pragma pop - -/* 80578B2C-80578B30 0000A4 0004+00 0/3 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = -1.0f; -COMPILER_STRIP_GATE(0x80578B2C, &lit_4029); -#pragma pop - /* 805771EC-80577500 00080C 0314+00 1/1 0/0 0/0 .text Obj_Damage__13daObjBHASHI_cFv */ void daObjBHASHI_c::Obj_Damage() { - // NONMATCHING + if (mDamageTimer == 0) { + mCcStts.Move(); + + if (mCcCyl.ChkTgHit()) { + cXyz& player_pos = fopAcM_GetPosition(daPy_getPlayerActorClass()); + mDamageTimer = 10; + + fopAc_ac_c* tg_hit_obj = dCc_GetAc(mCcCyl.GetTgHitObj()->GetAc()); + cXyz* tg_hit_pos = mCcCyl.GetTgHitPosP(); + s16 rot_y = cLib_targetAngleY(¤t.pos, tg_hit_pos); + if (fopAcM_GetName(tg_hit_obj) == PROC_B_MGN) { + field_0x5a8++; + + fpc_ProcID tg_hit_id = fopAcM_GetID(tg_hit_obj); + fopAc_ac_c* mgn_p; + if (fopAcM_SearchByName(PROC_B_MGN, &mgn_p) && mgn_p != NULL) { + field_0x11dc = cLib_targetAngleY(&fopAcM_GetPosition(mgn_p), ¤t.pos); + } + + Z2GetAudioMgr()->seStart(Z2SE_OBJ_MGN_BREAK_PILLAR, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + Set_Hahen(); + dComIfGp_getVibration().StartShock(7, 1, cXyz(0.0f, 1.0f, 0.0f)); + + if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this)); + } + + csXyz eff_rot(0, rot_y, 0); + cXyz eff_pos(current.pos.x, current.pos.y - 1100.0f, current.pos.z); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_A), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_B), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_C), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_D), &eff_pos, &tevStr, &eff_rot, NULL); + } + + mCcCyl.ResetTgHit(); + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100); + } + } } /* 80577500-80577794 000B20 0294+00 0/0 0/0 1/1 .text Obj_Damage__13daObjBHASHI_cF4cXyz */ void daObjBHASHI_c::Obj_Damage(cXyz param_0) { - // NONMATCHING + field_0x11dc = cLib_targetAngleY(¶m_0, ¤t.pos); + + Z2GetAudioMgr()->seStart(Z2SE_OBJ_MGN_BREAK_PILLAR, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + Set_Hahen(); + dComIfGp_getVibration().StartShock(7, 1, cXyz(0.0f, 1.0f, 0.0f)); + + if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this)); + } + + csXyz eff_rot(0, field_0x11dc, 0); + cXyz eff_pos(current.pos.x, current.pos.y - 1100.0f, current.pos.z); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_A), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_B), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_C), &eff_pos, &tevStr, &eff_rot, NULL); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_LV9PILLAR_BREAK_D), &eff_pos, &tevStr, &eff_rot, NULL); + + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x100); } /* 80577794-805777A4 000DB4 0010+00 1/1 0/0 0/0 .text __ct__7Hahen_cFv */ Hahen_c::Hahen_c() { - // NONMATCHING + field_0x31 = 0; + status = 0; } -/* ############################################################################################## */ -/* 80578B30-80578B34 0000A8 0004+00 1/1 0/0 0/0 .rodata @4114 */ -SECTION_RODATA static f32 const lit_4114 = -1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80578B30, &lit_4114); - /* 805777A4-80577868 000DC4 00C4+00 1/1 0/0 0/0 .text Wall_Check__7Hahen_cFv */ void Hahen_c::Wall_Check() { - // NONMATCHING + dBgS_LinChk line_chk; + cXyz end_pos(pos.x + speed.x, pos.y, pos.z + speed.z); + cXyz start_pos(pos.x, pos.y, pos.z); + + line_chk.Set(&start_pos, &end_pos, NULL); + if (dComIfG_Bgsp().LineCross(&line_chk) == true) { + speed.x = -(0.05f + nREG_F(18)) * speed.x; + speed.z = -(0.05f + nREG_F(18)) * speed.z; + } } -/* ############################################################################################## */ -/* 80578B34-80578B38 0000AC 0004+00 0/1 0/0 0/0 .rodata @4185 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4185 = 15.0f; -COMPILER_STRIP_GATE(0x80578B34, &lit_4185); -#pragma pop - -/* 80578B38-80578B40 0000B0 0004+04 0/2 0/0 0/0 .rodata @4186 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4186[1 + 1 /* padding */] = { - -9.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80578B38, &lit_4186); -#pragma pop - -/* 80578B40-80578B48 0000B8 0008+00 0/4 0/0 0/0 .rodata @4187 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4187[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B40, &lit_4187); -#pragma pop - -/* 80578B48-80578B50 0000C0 0008+00 0/4 0/0 0/0 .rodata @4188 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4188[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B48, &lit_4188); -#pragma pop - -/* 80578B50-80578B58 0000C8 0008+00 0/4 0/0 0/0 .rodata @4189 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4189[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80578B50, &lit_4189); -#pragma pop - -/* 80578B58-80578B5C 0000D0 0004+00 0/1 0/0 0/0 .rodata @4190 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4190 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80578B58, &lit_4190); -#pragma pop - -/* 80578B5C-80578B60 0000D4 0004+00 0/1 0/0 0/0 .rodata @4191 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4191 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80578B5C, &lit_4191); -#pragma pop - -/* 80578B60-80578B64 0000D8 0004+00 0/1 0/0 0/0 .rodata @4192 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4192 = 4.0f; -COMPILER_STRIP_GATE(0x80578B60, &lit_4192); -#pragma pop - -/* 80578B64-80578B68 0000DC 0004+00 0/2 0/0 0/0 .rodata @4193 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4193 = 5000.0f; -COMPILER_STRIP_GATE(0x80578B64, &lit_4193); -#pragma pop - -/* 80578B68-80578B6C 0000E0 0004+00 0/1 0/0 0/0 .rodata @4194 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4194 = 8.0f; -COMPILER_STRIP_GATE(0x80578B68, &lit_4194); -#pragma pop - -/* 80578B6C-80578B70 0000E4 0004+00 0/1 0/0 0/0 .rodata @4195 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4195 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x80578B6C, &lit_4195); -#pragma pop - /* 80577868-80577C1C 000E88 03B4+00 1/1 0/0 0/0 .text HahenMotion__7Hahen_cFv */ void Hahen_c::HahenMotion() { - // NONMATCHING -} + if (status == 0) { + f32 temp_f31 = 5.0f + nREG_F(16); + Wall_Check(); -/* ############################################################################################## */ -/* 80578B70-80578B74 0000E8 0004+00 0/2 0/0 0/0 .rodata @4258 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4258 = 1000.0f; -COMPILER_STRIP_GATE(0x80578B70, &lit_4258); -#pragma pop + if (pos.y >= 10.0f + temp_f31) { + speed.y += -9.0f; + + pos.x += speed.x; + pos.y += speed.y; + pos.z += speed.z; + + rotation.x += rot_speed.x; + rotation.y += rot_speed.y; + } + + if (pos.y < 10.0f + temp_f31) { + f32 temp_f30 = speed.y; + pos.y = 10.0f + temp_f31; + + speed.y = temp_f30 * -(1.0f - (scale.abs() / (15.0f + XREG_F(10)))); + speed.x *= 0.7f + cM_rndF(0.3f); + speed.z *= 0.7f + cM_rndF(0.3f); + + if (speed.y < 4.0f) { + status = 1; + } + + rot_speed.x = cM_rndFX(5000.0f); + rot_speed.y = cM_rndFX(5000.0f); + } + } else if (status == 1) { + if (field_0x31 != 0) { + status = 2; + } + + if (CheckCull()) { + status = 2; + + if (scale.abs() > 8.0f + XREG_F(11)) { + scale *= 0.6f + XREG_F(9); + } + + field_0x31 = 1; + } + } +} /* 80577C1C-80577DA4 00123C 0188+00 1/1 0/0 0/0 .text CheckCull__7Hahen_cFv */ -void Hahen_c::CheckCull() { - // NONMATCHING +bool Hahen_c::CheckCull() { + if (pos.absXZ(fopAcM_GetPosition(daPy_getPlayerActorClass())) > 1000.0f && !checkViewArea()) { + return false; + } + + return true; } -/* ############################################################################################## */ -/* 80578B74-80578B78 0000EC 0004+00 0/1 0/0 0/0 .rodata @4271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4271 = -50.0f; -COMPILER_STRIP_GATE(0x80578B74, &lit_4271); -#pragma pop - -/* 80578B78-80578B7C 0000F0 0004+00 0/1 0/0 0/0 .rodata @4272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4272 = 658.0f; -COMPILER_STRIP_GATE(0x80578B78, &lit_4272); -#pragma pop - -/* 80578B7C-80578B80 0000F4 0004+00 0/1 0/0 0/0 .rodata @4273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4273 = 498.0f; -COMPILER_STRIP_GATE(0x80578B7C, &lit_4273); -#pragma pop - /* 80577DA4-80577E24 0013C4 0080+00 1/1 0/0 0/0 .text checkViewArea__7Hahen_cFv */ -void Hahen_c::checkViewArea() { - // NONMATCHING +bool Hahen_c::checkViewArea() { + Vec proj; + mDoLib_project(&pos, &proj); + return (proj.x >= -50.0f && proj.x <= 658.0f) && (proj.y >= -50.0f && proj.y <= 498.0f); } /* 80577E24-80577FE0 001444 01BC+00 1/1 0/0 0/0 .text Rolling__13daObjBHASHI_cFP4cXyzff */ -void daObjBHASHI_c::Rolling(cXyz* param_0, f32 param_1, f32 param_2) { - // NONMATCHING +void daObjBHASHI_c::Rolling(cXyz* i_pos, f32 i_range, f32 param_2) { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + if (mMode == 2) { + for (s16 i = 0; i < 60; i++) { + if (i_pos->abs(mHahen[i].pos) < i_range) { + mHahen[i].Roll_Set(i_pos, param_2, i); + mHahen[i].status = 0; + } + } + } } -/* ############################################################################################## */ -/* 80578B80-80578B84 0000F8 0004+00 0/1 0/0 0/0 .rodata @4345 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4345 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80578B80, &lit_4345); -#pragma pop - -/* 80578B84-80578B88 0000FC 0004+00 0/1 0/0 0/0 .rodata @4346 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4346 = 3.0f; -COMPILER_STRIP_GATE(0x80578B84, &lit_4346); -#pragma pop - -/* 80578B88-80578B8C 000100 0004+00 0/1 0/0 0/0 .rodata @4347 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4347 = 9.0f; -COMPILER_STRIP_GATE(0x80578B88, &lit_4347); -#pragma pop - /* 80577FE0-805781FC 001600 021C+00 1/1 0/0 0/0 .text Roll_Set__7Hahen_cFP4cXyzfs */ -void Hahen_c::Roll_Set(cXyz* param_0, f32 param_1, s16 param_2) { - // NONMATCHING +void Hahen_c::Roll_Set(cXyz* i_pos, f32 param_1, s16 i_no) { + f32 temp_f30 = param_1 * (2.0f + nREG_F(10) + cM_rndFX(0.2f)); + s16 angle = cLib_targetAngleY(&pos, i_pos); + + f32 speed_x = (-1.0f + nREG_F(12)) * param_1 * cM_ssin(angle); + f32 temp_f31 = scale.abs(); + temp_f31 = 3.0f / temp_f31; + + f32 speed_y = temp_f30 - 9.0f; + f32 speed_z = (-1.0f + nREG_F(13)) * param_1 * cM_scos(angle); + + speed.set(temp_f31 * speed_x, temp_f31 * speed_y, temp_f31 * speed_z); + + rot_speed.x = cM_rndFX(5000.0f + nREG_F(6)); + rot_speed.y = cM_rndFX(5000.0f + nREG_F(6)); + rotation.x += (s16)0x1000; + rotation.y += (s16)0x1000; } /* 805781FC-805782E4 00181C 00E8+00 1/1 0/0 0/0 .text setBaseMtx__13daObjBHASHI_cFv */ void daObjBHASHI_c::setBaseMtx() { - // NONMATCHING + if (mMode == 2) { + for (s16 i = 0; i < 60; i++) { + mDoMtx_stack_c::transS(mHahen[i].pos); + mDoMtx_stack_c::ZXYrotM(mHahen[i].rotation); + mDoMtx_stack_c::scaleM(mHahen[i].scale); + mpHahenMdls[i]->setBaseTRMtx(mDoMtx_stack_c::get()); + } + } else { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mpPillarMdl->setBaseTRMtx(mDoMtx_stack_c::get()); + } + + mDoMtx_stack_c::transM(0.0f, -1100.0f + yREG_F(10), 0.0f); + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); } /* 805782E4-80578310 001904 002C+00 1/0 0/0 0/0 .text daObjBHASHI_Draw__FP13daObjBHASHI_c */ -static void daObjBHASHI_Draw(daObjBHASHI_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Draw(daObjBHASHI_c* i_this) { + return i_this->MoveBGDraw(); } /* 80578310-80578330 001930 0020+00 2/1 0/0 0/0 .text daObjBHASHI_Execute__FP13daObjBHASHI_c */ -static void daObjBHASHI_Execute(daObjBHASHI_c* param_0) { - // NONMATCHING +static int daObjBHASHI_Execute(daObjBHASHI_c* i_this) { + return i_this->MoveBGExecute(); } -/* ############################################################################################## */ -/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80578BA8 = "B_Hashi"; -SECTION_DEAD static char const* const stringBase_80578BB0 = "Lv9_R07_pillar.bmd"; -SECTION_DEAD static char const* const stringBase_80578BC3 = "Lv9_R07_pillar_hahen.bmd"; -#pragma pop - /* 80578BF0-80578BF4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_bhashi__stringBase0; +static char* l_arcName = "B_Hashi"; /* 80578330-8057842C 001950 00FC+00 1/0 0/0 0/0 .text CreateHeap__13daObjBHASHI_cFv */ -void daObjBHASHI_c::CreateHeap() { - // NONMATCHING +int daObjBHASHI_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar.bmd"); + JUT_ASSERT(98, modelData != 0); + + J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd"); + JUT_ASSERT(102, modelData2 != 0); + + for (int i = 0; i < 60; i++) { + mpHahenMdls[i] = mDoExt_J3DModel__create(modelData2, J3DMdlFlag_UseSharedDL, BMD_DEFAULT_DIFF_FLAGS); + if (mpHahenMdls[i] == NULL) { + return 0; + } + } + + mpPillarMdl = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS); + if (mpPillarMdl == NULL) { + return 0; + } + + return 1; } -/* ############################################################################################## */ -/* 80578B8C-80578B90 000104 0004+00 0/1 0/0 0/0 .rodata @4515 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4515 = 100.0f; -COMPILER_STRIP_GATE(0x80578B8C, &lit_4515); -#pragma pop +/* 8057842C-805786B4 001A4C 0288+00 1/1 0/0 0/0 .text create__13daObjBHASHI_cFv */ +int daObjBHASHI_c::create() { + fopAcM_SetupActor(this, daObjBHASHI_c); -/* 80578B90-80578B94 000108 0004+00 0/2 0/0 0/0 .rodata @4516 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4516 = -500.0f; -COMPILER_STRIP_GATE(0x80578B90, &lit_4516); -#pragma pop + int phase_state = dComIfG_resLoad(&mPhase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + gravity = -9.0f + nREG_F(0); -/* 80578B94-80578B98 00010C 0004+00 0/2 0/0 0/0 .rodata @4517 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4517 = 500.0f; -COMPILER_STRIP_GATE(0x80578B94, &lit_4517); -#pragma pop + int dzb_id = dComIfG_getObjctResName2Index(l_arcName, "Lv9_R07_pillar.dzb"); + if (dzb_id == -1) { + // "dzb data not found!<%s>" + OS_REPORT("dzbデータが見つかりませんでした!<%s>\n\n", l_arcName); + } -/* 80578B98-80578B9C 000110 0004+00 0/1 0/0 0/0 .rodata @4518 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4518 = 3000.0f; -COMPILER_STRIP_GATE(0x80578B98, &lit_4518); -#pragma pop + JUT_ASSERT(1192, dzb_id != -1); + phase_state = MoveBGCreate(l_arcName, dzb_id, dBgS_MoveBGProc_TypicalRotY, 0x8DA0, NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } -/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80578BDC = "Lv9_R07_pillar.dzb"; -#pragma pop + initCcCylinder(); + mMode = 0; + fopAcM_SetMtx(this, mpPillarMdl->getBaseTRMtx()); + + cXyz sp8(current.pos.x, 100.0f + current.pos.y, current.pos.z); + if (fopAcM_gc_c::gndCheck(&sp8)) { + current.pos.y = fopAcM_gc_c::getGroundY(); + current.pos.y += 1100.0f; + } + + fopAcM_setCullSizeBox(this, -500.0f, 0.0f, -500.0f, 500.0f, 3000.0f, 500.0f); + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd"); + JUT_ASSERT(1219, modelData != 0); + + if (dComIfGp_addSimpleModel(modelData, fopAcM_GetRoomNo(this), 0) == -1) { + // "Fire Demon Room Pillar Fragment: simple model entry failed." + OS_REPORT("\x1B[43;30m火魔神部屋の柱の破片:シンプルモデル登録失敗しました。\n\x1B[m"); + } + + mIsHahenSimpleEntry = TRUE; + daObjBHASHI_Execute(this); + } + + return phase_state; +} + +/* 80578780-80578788 001DA0 0008+00 1/0 0/0 0/0 .text daObjBHASHI_IsDelete__FP13daObjBHASHI_c */ +static int daObjBHASHI_IsDelete(daObjBHASHI_c* i_this) { + return 1; +} + +/* 80578788-805787CC 001DA8 0044+00 1/0 0/0 0/0 .text Create__13daObjBHASHI_cFv */ +int daObjBHASHI_c::Create() { + fopAcM_setCullSizeBox(this, -1000.0f, -500.0f, -1000.0f, 1000.0f, 500.0f, 1000.0f); + return cPhs_COMPLEATE_e; +} + +/* 805787CC-805788EC 001DEC 0120+00 1/0 0/0 0/0 .text Execute__13daObjBHASHI_cFPPA3_A4_f + */ +int daObjBHASHI_c::Execute(Mtx** param_0) { + if (mMode != 2) { + Obj_Damage(); + } + + if (mMode == 2) { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + + field_0x11e0--; + if (field_0x11e0 <= 0) { + field_0x11e0 = 0; + } + + for (s16 i = 0; i < 60; i++) { + mHahen[i].HahenMotion(); + } + + fopAc_ac_c* mgn_p; + if (fopAcM_SearchByName(PROC_B_MGN, &mgn_p) && mgn_p != NULL && ((daB_MGN_c*)mgn_p)->isAppear()) { + Rolling(&fopAcM_GetPosition(mgn_p), 400.0f, 90.0f + yREG_F(0)); + } + } + + *param_0 = &mBgMtx; + setBaseMtx(); + + if (mMode != 2) { + setCcCylinder(); + } + + if (mDamageTimer != 0) { + mDamageTimer--; + } + + return 1; +} + +/* 805788EC-805789E8 001F0C 00FC+00 1/0 0/0 0/0 .text Draw__13daObjBHASHI_cFv */ +int daObjBHASHI_c::Draw() { + g_env_light.settingTevStruct(8, ¤t.pos, &tevStr); + + if (mMode == 0) { + g_env_light.setLightTevColorType_MAJI(mpPillarMdl, &tevStr); + } + + dComIfGd_setListBG(); + + if (mMode == 0) { + mDoExt_modelUpdateDL(mpPillarMdl); + } else { + int roomNo = fopAcM_GetRoomNo(this); + for (int i = 0; i < 60; i++) { + dComIfGp_entrySimpleModel(mpHahenMdls[i], roomNo); + } + } + + dComIfGd_setList(); + return 1; +} + +/* 805789E8-80578A80 002008 0098+00 1/0 0/0 0/0 .text Delete__13daObjBHASHI_cFv */ +int daObjBHASHI_c::Delete() { + if (mIsHahenSimpleEntry) { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "Lv9_R07_pillar_hahen.bmd"); + dComIfGp_removeSimpleModel(modelData, fopAcM_GetRoomNo(this)); + } + + dComIfG_resDelete(&mPhase, l_arcName); + return 1; +} /* 80578BF4-80578C14 -00001 0020+00 1/0 0/0 0/0 .data l_daObjBHASHI_Method */ static actor_method_class l_daObjBHASHI_Method = { - (process_method_func)daObjBHASHI_Create__FP10fopAc_ac_c, - (process_method_func)daObjBHASHI_Delete__FP13daObjBHASHI_c, - (process_method_func)daObjBHASHI_Execute__FP13daObjBHASHI_c, - (process_method_func)daObjBHASHI_IsDelete__FP13daObjBHASHI_c, - (process_method_func)daObjBHASHI_Draw__FP13daObjBHASHI_c, + (process_method_func)daObjBHASHI_Create, + (process_method_func)daObjBHASHI_Delete, + (process_method_func)daObjBHASHI_Execute, + (process_method_func)daObjBHASHI_IsDelete, + (process_method_func)daObjBHASHI_Draw, }; /* 80578C14-80578C44 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_BHASHI */ @@ -632,98 +550,3 @@ extern actor_process_profile_definition g_profile_Obj_BHASHI = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80578C44-80578C50 000054 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80578C50-80578C5C 000060 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, -}; - -/* 80578C5C-80578C84 00006C 0028+00 1/1 0/0 0/0 .data __vt__13daObjBHASHI_c */ -SECTION_DATA extern void* __vt__13daObjBHASHI_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__13daObjBHASHI_cFv, - (void*)Create__13daObjBHASHI_cFv, - (void*)Execute__13daObjBHASHI_cFPPA3_A4_f, - (void*)Draw__13daObjBHASHI_cFv, - (void*)Delete__13daObjBHASHI_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 8057842C-805786B4 001A4C 0288+00 1/1 0/0 0/0 .text create__13daObjBHASHI_cFv */ -void daObjBHASHI_c::create() { - // NONMATCHING -} - -/* 805786B4-805786FC 001CD4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 805786FC-80578744 001D1C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80578744-80578780 001D64 003C+00 1/1 0/0 0/0 .text __dt__7Hahen_cFv */ -Hahen_c::~Hahen_c() { - // NONMATCHING -} - -/* 80578780-80578788 001DA0 0008+00 1/0 0/0 0/0 .text daObjBHASHI_IsDelete__FP13daObjBHASHI_c */ -static bool daObjBHASHI_IsDelete(daObjBHASHI_c* param_0) { - return true; -} - -/* ############################################################################################## */ -/* 80578B9C-80578BA0 000114 0004+00 0/1 0/0 0/0 .rodata @4606 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4606 = -1000.0f; -COMPILER_STRIP_GATE(0x80578B9C, &lit_4606); -#pragma pop - -/* 80578788-805787CC 001DA8 0044+00 1/0 0/0 0/0 .text Create__13daObjBHASHI_cFv */ -void daObjBHASHI_c::Create() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80578BA0-80578BA4 000118 0004+00 1/1 0/0 0/0 .rodata @4626 */ -SECTION_RODATA static f32 const lit_4626 = 400.0f; -COMPILER_STRIP_GATE(0x80578BA0, &lit_4626); - -/* 80578BA4-80578BA8 00011C 0004+00 1/1 0/0 0/0 .rodata @4627 */ -SECTION_RODATA static f32 const lit_4627 = 90.0f; -COMPILER_STRIP_GATE(0x80578BA4, &lit_4627); - -/* 805787CC-805788EC 001DEC 0120+00 1/0 0/0 0/0 .text Execute__13daObjBHASHI_cFPPA3_A4_f - */ -void daObjBHASHI_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 805788EC-805789E8 001F0C 00FC+00 1/0 0/0 0/0 .text Draw__13daObjBHASHI_cFv */ -void daObjBHASHI_c::Draw() { - // NONMATCHING -} - -/* 805789E8-80578A80 002008 0098+00 1/0 0/0 0/0 .text Delete__13daObjBHASHI_cFv */ -void daObjBHASHI_c::Delete() { - // NONMATCHING -} - -/* 80578BA8-80578BA8 000120 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_gpTaru.cpp b/src/d/actor/d_a_obj_gpTaru.cpp index 9e715f1b35f..43ebbce7e1b 100644 --- a/src/d/actor/d_a_obj_gpTaru.cpp +++ b/src/d/actor/d_a_obj_gpTaru.cpp @@ -6,297 +6,626 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_gpTaru.h" -#include "dol2asm.h" +#include "d/actor/d_a_obj_eff.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "d/d_cc_uty.h" +#include "f_op/f_op_kankyo_mng.h" +/* 8057F8E4-8057F920 000014 003C+00 8/8 0/0 0/0 .bss l_HIO */ +static daGpTaru_HIO_c l_HIO; +/* 8057D0CC-8057D154 0000EC 0088+00 1/1 0/0 0/0 .text __ct__14daGpTaru_HIO_cFv */ +daGpTaru_HIO_c::daGpTaru_HIO_c() { + weight = 200.0f; + explosion_wait_time = 15; + shake = 200.0f; + explosion_range = 200.0f; + effect_scale.x = 3.0f; + effect_scale.y = 3.0f; + effect_scale.z = 3.0f; + pre_smoke_scale.x = 6.0f; + pre_smoke_scale.y = 6.0f; + pre_smoke_scale.z = 6.0f; + barrel_scale.x = 1.6f; + barrel_scale.y = 1.6f; + barrel_scale.z = 1.6f; + vibration = 5; + smoke_scale = 1.0f; +} +/* 8057D1F8-8057D2D0 000218 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daGpTaru_cFv */ +void daGpTaru_c::setBaseMtx() { + scale.x = l_HIO.barrel_scale.x; + scale.y = l_HIO.barrel_scale.y; + scale.z = l_HIO.barrel_scale.z; -// -// Forward References: -// + 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); + mDoMtx_stack_c::ZXYrotM(field_0x93c.x, field_0x93c.y, field_0x93c.z); + mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z); -extern "C" void __ct__14daGpTaru_HIO_cFv(); -extern "C" void __dt__18fOpAcm_HIO_entry_cFv(); -extern "C" void __dt__14mDoHIO_entry_cFv(); -extern "C" void setBaseMtx__10daGpTaru_cFv(); -extern "C" void CreateHeap__10daGpTaru_cFv(); -extern "C" void create__10daGpTaru_cFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c(); -extern "C" static void bound__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void chkSinkAll__10daGpTaru_cFv(); -extern "C" void chkWaterLineIn__10daGpTaru_cFv(); -extern "C" void bgCheck__10daGpTaru_cFv(); -extern "C" void Execute__10daGpTaru_cFv(); -extern "C" void mode_proc_call__10daGpTaru_cFv(); -extern "C" void mode_init_wait__10daGpTaru_cFv(); -extern "C" void mode_proc_wait__10daGpTaru_cFv(); -extern "C" void mode_init_carry__10daGpTaru_cFv(); -extern "C" void mode_proc_carry__10daGpTaru_cFv(); -extern "C" void mode_init_drop__10daGpTaru_cFv(); -extern "C" void mode_proc_drop__10daGpTaru_cFv(); -extern "C" void mode_init_roll__10daGpTaru_cFv(); -extern "C" void mode_proc_roll__10daGpTaru_cFv(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void mode_init_exploInit__10daGpTaru_cFv(); -extern "C" void mode_proc_exploInit__10daGpTaru_cFv(); -extern "C" void mode_init_explosion__10daGpTaru_cFv(); -extern "C" void mode_proc_explosion__10daGpTaru_cFv(); -extern "C" void mode_init_sink__10daGpTaru_cFv(); -extern "C" void mode_proc_sink__10daGpTaru_cFv(); -extern "C" void breakEffSet__10daGpTaru_cFv(); -extern "C" void Draw__10daGpTaru_cFv(); -extern "C" void Delete__10daGpTaru_cFv(); -extern "C" static void daGpTaru_Draw__FP10daGpTaru_c(); -extern "C" static void daGpTaru_Execute__FP10daGpTaru_c(); -extern "C" static void daGpTaru_Delete__FP10daGpTaru_c(); -extern "C" static void daGpTaru_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__14daGpTaru_HIO_cFv(); -extern "C" void __sinit_d_a_obj_gpTaru_cpp(); -extern "C" static void func_8057F534(); -extern "C" static void func_8057F53C(); -extern "C" static void func_8057F544(); -extern "C" static void func_8057F54C(); -extern "C" static void func_8057F554(); -extern "C" u8 const mCcDObjInfo__10daGpTaru_c[48]; -extern "C" extern char const* const d_a_obj_gpTaru__stringBase0; -extern "C" u8 mCcDCyl__10daGpTaru_c[68]; + cXyz bmd_scale(1.0f, 1.0f, 1.0f); + mpModel->setBaseScale(bmd_scale); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} -// -// External References: -// +/* 8057D2D0-8057D33C 0002F0 006C+00 1/0 0/0 0/0 .text CreateHeap__10daGpTaru_cFv */ +int daGpTaru_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("K_ktar00", 3); + JUT_ASSERT(295, modelData != 0); -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -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 getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void -setModel__18dPa_modelEcallBackFP14JPABaseEmitterP12J3DModelDataRC12dKy_tevstr_cUcPvUcUc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dKyw_pntwind_set__FP14WIND_INFLUENCE(); -extern "C" void dKyw_pntwind_cut__FP14WIND_INFLUENCE(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__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 GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void GetCoHitObj__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 GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStop__7Z2SeMgrF10JAISoundIDUl(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mEcallback__18dPa_modelEcallBack[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); + mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS); + if (mpModel == NULL) { + return 0; + } -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8057F570-8057F574 000000 0004+00 10/10 0/0 0/0 .rodata @3656 */ -SECTION_RODATA static f32 const lit_3656 = 200.0f; -COMPILER_STRIP_GATE(0x8057F570, &lit_3656); - -/* 8057F574-8057F578 000004 0004+00 0/1 0/0 0/0 .rodata @3657 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3657 = 3.0f; -COMPILER_STRIP_GATE(0x8057F574, &lit_3657); -#pragma pop - -/* 8057F578-8057F57C 000008 0004+00 0/1 0/0 0/0 .rodata @3658 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3658 = 6.0f; -COMPILER_STRIP_GATE(0x8057F578, &lit_3658); -#pragma pop - -/* 8057F57C-8057F580 00000C 0004+00 0/1 0/0 0/0 .rodata @3659 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3659 = 8.0f / 5.0f; -COMPILER_STRIP_GATE(0x8057F57C, &lit_3659); -#pragma pop - -/* 8057F580-8057F584 000010 0004+00 2/10 0/0 0/0 .rodata @3660 */ -SECTION_RODATA static f32 const lit_3660 = 1.0f; -COMPILER_STRIP_GATE(0x8057F580, &lit_3660); + return 1; +} /* 8057F6A8-8057F6EC 000020 0044+00 2/2 0/0 0/0 .data mCcDCyl__10daGpTaru_c */ -SECTION_DATA u8 daGpTaru_c::mCcDCyl[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +dCcD_SrcCyl daGpTaru_c::mCcDCyl = { + daGpTaru_c::mCcDObjInfo, + { + {0.0f, 0.0f, 0.0f}, // mCenter + 0.0f, // mRadius + 0.0f // mHeight + } // mCyl }; -/* 8057F6EC-8057F6F8 -00001 000C+00 0/1 0/0 0/0 .data @4338 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4338[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_wait__10daGpTaru_cFv, +/* 8057F584-8057F5B4 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daGpTaru_c */ +const dCcD_SrcGObjInf daGpTaru_c::mCcDObjInfo = { + {0, {{0, 0, 0x1F}, {0xD8FAFDBF, 0x11}, {0x79}}}, + {dCcD_SE_NONE, 0, 1, 0, 0}, + {dCcD_SE_NONE, 0, 0, 0, 2}, + {0}, }; -#pragma pop -/* 8057F6F8-8057F704 -00001 000C+00 0/1 0/0 0/0 .data @4339 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4339[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_carry__10daGpTaru_cFv, -}; -#pragma pop +/* 8057D33C-8057D600 00035C 02C4+00 1/1 0/0 0/0 .text create__10daGpTaru_cFv */ +int daGpTaru_c::create() { + fopAcM_SetupActor(this, daGpTaru_c); -/* 8057F704-8057F710 -00001 000C+00 0/1 0/0 0/0 .data @4340 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4340[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_drop__10daGpTaru_cFv, -}; -#pragma pop + if (fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF)) { + return cPhs_ERROR_e; + } -/* 8057F710-8057F71C -00001 000C+00 0/1 0/0 0/0 .data @4341 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4341[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_roll__10daGpTaru_cFv, -}; -#pragma pop + int phase_state = dComIfG_resLoad(&mPhase, "K_ktar00"); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x820)) { + return cPhs_ERROR_e; + } -/* 8057F71C-8057F728 -00001 000C+00 0/1 0/0 0/0 .data @4342 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4342[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_exploInit__10daGpTaru_cFv, -}; -#pragma pop + setBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); -/* 8057F728-8057F734 -00001 000C+00 0/1 0/0 0/0 .data @4343 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4343[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_explosion__10daGpTaru_cFv, -}; -#pragma pop + mAcchCir.SetWall(160.0f, 80.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); -/* 8057F734-8057F740 -00001 000C+00 0/1 0/0 0/0 .data @4344 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4344[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_sink__10daGpTaru_cFv, -}; -#pragma pop + fopAcM_SetGravity(this, -7.0f); + fopAcM_SetMaxFallSpeed(this, -100.0f); + fopAcM_SetModel(this, mpModel); -/* 8057F740-8057F794 0000B8 0054+00 0/1 0/0 0/0 .data l_mode_func$4337 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_mode_func[84] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + mCcStts.Init(0xFE, 0xFF, this); + mCcCyl.Set(mCcDCyl); + mCcCyl.SetStts(&mCcStts); -/* 8057F794-8057F7A4 00010C 0010+00 1/1 0/0 0/0 .data effName$4666 */ -SECTION_DATA static u8 effName[16] = { - 0x87, 0x45, 0x87, 0x47, 0x87, 0x48, 0x87, 0x49, 0x87, 0x4A, 0x87, 0x4B, 0x87, 0x4C, 0x87, 0x4D, -}; + field_0x954 = fopAcM_GetParam(this); + fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1); + + if (field_0x954 == 0) { + cLib_onBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + attention_info.distances[fopAc_attn_CARRY_e] = 42; + } else { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } + + mIsPrevCarry = fopAcM_checkCarryNow(this) != 0; + mode_init_wait(); + + field_0x93c.x = 0; + field_0x93c.y = 0; + field_0x93c.z = 0; + + field_0x944 = 0; + field_0x938 = 0.0f; + mExplosionRange = 80.0f; + field_0x955 = 1; + + #ifdef DEBUG + l_HIO.entryHIO("火薬樽"); + #endif + } + + return phase_state; +} + +/* 8057D7CC-8057D7F8 0007EC 002C+00 1/1 0/0 0/0 .text + * createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c */ +int daGpTaru_c::createHeapCallBack(fopAc_ac_c* i_this) { + return ((daGpTaru_c*)i_this)->CreateHeap(); +} + +/* 8057D7F8-8057DAF4 000818 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ +static f32 bound(cXyz* param_0, const cBgS_PolyInfo& param_1, f32 param_2) { + cM3dGPla plane; + + bool var_r29 = dComIfG_Bgsp().GetTriPla(param_1, &plane); + if (var_r29) { + cXyz pos; + f32 abs = param_0->absXZ(); + + VECReflect(param_0, &plane.mNormal, &pos); + *param_0 = (pos * abs) * param_2; + return param_0->absXZ(); + } else { + return 0.0f; + } +} + +/* 8057DB3C-8057DB60 000B5C 0024+00 1/1 0/0 0/0 .text chkSinkAll__10daGpTaru_cFv */ +BOOL daGpTaru_c::chkSinkAll() { + return mAcch.m_wtr.GetHeight() > 100.0f + current.pos.y; +} + +/* 8057DB60-8057DB84 000B80 0024+00 3/3 0/0 0/0 .text chkWaterLineIn__10daGpTaru_cFv */ +BOOL daGpTaru_c::chkWaterLineIn() { + return mAcch.m_wtr.GetHeight() > 40.0f + current.pos.y; +} + +/* 8057DB84-8057E224 000BA4 06A0+00 1/1 0/0 0/0 .text bgCheck__10daGpTaru_cFv */ +void daGpTaru_c::bgCheck() { + bool is_roof_hit = mAcch.ChkRoofHit(); + bool is_wall_hit = mAcch.ChkWallHit() != 0; + bool is_gnd_land = mAcch.ChkGroundLanding(); + bool is_gnd_hit = mAcch.ChkGroundHit(); + bool is_water_hit = mAcch.ChkWaterHit(); + bool is_water_in = mAcch.ChkWaterIn(); + + if (is_wall_hit && speed.abs() > 8.0f) { + cXyz sp2C(speed); + cXyz sp20(speed); + bound(&sp2C, mAcchCir, 0.6f); + + speed.set(sp2C); + speed.y = sp20.y; + speedF = sp2C.absXZ(); + current.angle.y = cM_atan2s(sp2C.x, sp2C.z); + } + + if (is_gnd_land && speed.abs() > 8.0f) { + f32 temp_f30 = field_0x594.y; + bound(&speed, mAcch.m_gnd, 0.6f); + + speed.y = 0.6f * -temp_f30; + if (std::fabs(speed.y) < 5.0f) { + speed.y = 0.0f; + } + } + + if (is_roof_hit) { + f32 temp_f31 = field_0x594.y; + bound(&speed, mAcch.m_gnd, 0.6f); + + speed.y -= 0.6f * -temp_f31; + OS_REPORT("HIT ROOF!!!!spdy<%f>spdy<%f>\n", temp_f31, speed.y); + } + + if (is_gnd_land && mMode == 2) { + mode_init_roll(); + } + + if (mMode == 0 || mMode == 2 || mMode == 1) { + f32 wtr_height = mAcch.m_wtr.GetHeight(); + if (is_water_hit) { + f32 spd_y = speed.y; + + if (chkWaterLineIn() && mMode != 1) { + mode_init_sink(); + } + + if (is_water_in && !mIsPrevInWater) { + cXyz pos(current.pos); + pos.y = wtr_height; + + if (spd_y < -15.0f) { + fopKyM_createWpillar(&pos, 2.0f, 0); + fopAcM_seStart(this, Z2SE_OBJ_FALL_WATER_M, 0); + } + } + } + } + + if (is_gnd_hit && (mMode == 2 || mMode == 3) && !is_water_hit) { + daObjEff::Act_c::make_land_smoke(¤t.pos, l_HIO.smoke_scale); + fopAcM_seStart(this, JA_SE_OBJ_PUT_WBOX_S, 0); + } + + cXyz hamon_pos(current.pos); + hamon_pos.y = mAcch.m_wtr.GetHeight(); + if (hamon_pos.y > current.pos.y && ((mMode == 6 && !chkSinkAll()) || (mMode == 0 && is_gnd_hit) || (mMode == 1 && is_water_in && !chkSinkAll()))) { + fopAcM_effHamonSet(&field_0x950, &hamon_pos, 1.0f, 0.1f); + } +} + +/* 8057E224-8057E494 001244 0270+00 1/0 0/0 0/0 .text Execute__10daGpTaru_cFv */ +int daGpTaru_c::Execute() { + field_0x594 = speed; + + mode_proc_call(); + + field_0x588 = current.pos; + mAcch.CrrPos(dComIfG_Bgsp()); + + field_0x57c = current.pos - field_0x588; + + if (mMode == 1) { + current.pos = field_0x588; + } + + bgCheck(); + + attention_info.position.x = current.pos.x; + attention_info.position.y = 50.0f + current.pos.y; + attention_info.position.z = current.pos.z; + eyePos = attention_info.position; + + mIsPrevInWater = mAcch.ChkWaterIn() != 0; + + setBaseMtx(); + + if (mCcCyl.ChkTgHit()) { + if (mCcCyl.GetTgHitGObj()->GetAtType() & 0xD8FAFDBF) { + if (field_0x955 != 0) { + mDoAud_seStart(Z2SE_OBJ_BOMBBARREL_HIT, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mode_init_exploInit(); + field_0x955 = 0; + } + } else { + fopAc_ac_c* tg_hit_actor = dCc_GetAc(mCcCyl.GetTgHitObj()->GetAc()); + if (tg_hit_actor != NULL && fopAcM_GetName(tg_hit_actor) == PROC_E_WB) { + mode_init_explosion(); + } + } + } + + if (mCcCyl.ChkCoHit()) { + fopAc_ac_c* co_hit_actor = dCc_GetAc(mCcCyl.GetCoHitObj()->GetAc()); + if (co_hit_actor != NULL && fopAcM_GetName(co_hit_actor) == PROC_E_WB) { + if (co_hit_actor->speedF >= 7.0f) { + mode_init_explosion(); + } + } + } + + mCcCyl.SetR(mExplosionRange + oREG_F(2)); + mCcCyl.SetH(170.0f + oREG_F(3)); + mCcCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCcCyl); + mCcStts.Move(); + return 1; +} + +/* 8057E494-8057E5DC 0014B4 0148+00 1/1 0/0 0/0 .text mode_proc_call__10daGpTaru_cFv */ +void daGpTaru_c::mode_proc_call() { + static void (daGpTaru_c::*l_mode_func[])() = { + &daGpTaru_c::mode_proc_wait, + &daGpTaru_c::mode_proc_carry, + &daGpTaru_c::mode_proc_drop, + &daGpTaru_c::mode_proc_roll, + &daGpTaru_c::mode_proc_exploInit, + &daGpTaru_c::mode_proc_explosion, + &daGpTaru_c::mode_proc_sink, + }; + + if (fopAcM_checkCarryNow(this) && !mIsPrevCarry) { + mode_init_carry(); + } + + (this->*l_mode_func[mMode])(); + + mIsPrevCarry = fopAcM_checkCarryNow(this) != 0; +} + +/* 8057E5DC-8057E618 0015FC 003C+00 2/2 0/0 0/0 .text mode_init_wait__10daGpTaru_cFv */ +void daGpTaru_c::mode_init_wait() { + if (field_0x954 == 0) { + cLib_onBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } + + speedF = 0.0f; + gravity = -7.0f; + mMode = 0; +} + +/* 8057E618-8057E63C 001638 0024+00 1/0 0/0 0/0 .text mode_proc_wait__10daGpTaru_cFv */ +void daGpTaru_c::mode_proc_wait() { + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); +} + +/* 8057E63C-8057E660 00165C 0024+00 1/1 0/0 0/0 .text mode_init_carry__10daGpTaru_cFv */ +void daGpTaru_c::mode_init_carry() { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + speedF = 0.0f; + mMode = 1; +} + +/* 8057E660-8057E700 001680 00A0+00 1/0 0/0 0/0 .text mode_proc_carry__10daGpTaru_cFv */ +void daGpTaru_c::mode_proc_carry() { + daPy_py_c* player = daPy_getPlayerActorClass(); + player->setGrabCollisionOffset(field_0x57c.x, field_0x57c.z, NULL); + + if (!fopAcM_checkCarryNow(this)) { + if (chkWaterLineIn()) { + mode_init_sink(); + } else if (fopAcM_GetSpeedF(this) != 0.0f) { + mode_init_drop(); + } else { + mode_init_roll(); + } + } +} + +/* 8057E700-8057E72C 001720 002C+00 1/1 0/0 0/0 .text mode_init_drop__10daGpTaru_cFv */ +void daGpTaru_c::mode_init_drop() { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + gravity = -l_HIO.weight; + mMode = 2; +} + +/* 8057E72C-8057E750 00174C 0024+00 1/0 0/0 0/0 .text mode_proc_drop__10daGpTaru_cFv */ +void daGpTaru_c::mode_proc_drop() { + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); +} + +/* 8057E750-8057E768 001770 0018+00 2/2 0/0 0/0 .text mode_init_roll__10daGpTaru_cFv */ +void daGpTaru_c::mode_init_roll() { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + mMode = 3; +} + +/* 8057E768-8057EB2C 001788 03C4+00 1/0 0/0 0/0 .text mode_proc_roll__10daGpTaru_cFv */ +void daGpTaru_c::mode_proc_roll() { + f32 temp_f30 = 70.0f; + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + + dBgS_ObjGndChk gnd_chk; + cXyz sp38(current.pos); + sp38.y += 4.0f; + + gnd_chk.SetPos(&sp38); + f32 gnd_height = dComIfG_Bgsp().GroundCross(&gnd_chk); + + cXyz sp2C; + f32 temp_f27 = 0.1f; + + cM3dGPla tripla; + bool var_r26 = fopAcM_gc_c::gndCheck(&sp38); + bool found_tripla = fopAcM_gc_c::getTriPla(&tripla); + + if (-1000000000.0f != gnd_height && found_tripla) { + f32 temp_f28 = cM_scos(cM_deg2s(temp_f30 - 0.5f)); + sp2C = tripla.mNormal; + if (sp2C.y < temp_f28) { + cXyz sp20(sp2C); + s16 temp_r28 = cM_atan2s(sp20.x, sp20.z); + + f32 var_f31 = 10.0f; + var_f31 *= 1.0f - sp2C.y; + if (var_f31 < 0.1f) { + var_f31 = 0.1f; + } else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + + cXyz sp14(speedF * cM_ssin(current.angle.y), 0.0f, speedF * cM_scos(current.angle.y)); + cXyz sp8(var_f31 * cM_ssin(temp_r28), 0.0f, var_f31 * cM_scos(temp_r28)); + sp14 += sp8; + speedF = std::sqrt(SQUARE(sp14.x) + SQUARE(sp14.z)); + current.angle.y = cM_atan2s(sp14.x, sp14.z); + } + } + + speedF *= temp_f27; + if (mCcStts.GetCCMoveP()->abs2XZ() > SQUARE(0.1f)) { + speedF *= 0.9f; + } + + if (mAcch.ChkGroundHit()) { + if (speedF < 0.3f) { + mode_init_wait(); + } + } else { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } +} + +/* 8057EBA4-8057EC60 001BC4 00BC+00 1/1 0/0 0/0 .text mode_init_exploInit__10daGpTaru_cFv + */ +void daGpTaru_c::mode_init_exploInit() { + mExploTimer = l_HIO.explosion_wait_time; + field_0x938 = l_HIO.shake; + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + + mWind.position = current.pos; + mWind.mDirection.x = 0.0f; + mWind.mDirection.y = 1.0f; + mWind.mDirection.z = 0.0f; + mWind.mRadius = 500.0f; + mWind.field_0x20 = 0.0f; + mWind.mStrength = 0.5f; + dKyw_pntwind_set(&mWind); + + field_0x9a8 = 0; + mExploWindStrength = 0.0f; + mMode = 4; +} + +/* 8057EC60-8057EE2C 001C80 01CC+00 1/0 0/0 0/0 .text mode_proc_exploInit__10daGpTaru_cFv + */ +void daGpTaru_c::mode_proc_exploInit() { + if (mExploTimer != 0) { + mDoAud_seStartLevel(Z2SE_OBJ_BOMBBARREL_IGNITION, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mExploTimer--; + } else { + mDoAud_seStop(Z2SE_OBJ_BOMBBARREL_IGNITION, 0); + mode_init_explosion(); + } + + cXyz sp18(current.pos); + sp18.x -= 20.0f; + sp18.y += 100.0f * l_HIO.barrel_scale.y; + + mSmokeEmtID = dComIfGp_particle_set(mSmokeEmtID, ID_ZI_J_ARWB_SMOKE_A, &sp18, &tevStr, NULL, &l_HIO.pre_smoke_scale, 0xFF, NULL, -1, NULL, NULL, NULL); + + field_0x93c.x = field_0x938 * cM_scos(field_0x944 * 0x3000); + field_0x93c.z = field_0x938 * cM_ssin(field_0x944 * 0x3000); + field_0x944++; +} + +/* 8057EE2C-8057EFB0 001E4C 0184+00 2/2 0/0 0/0 .text mode_init_explosion__10daGpTaru_cFv + */ +void daGpTaru_c::mode_init_explosion() { + mWind.mStrength = mExploWindStrength; + + switch (field_0x9a8) { + case 0: + cLib_addCalc(&mExploWindStrength, 1.0f, 0.5f, 0.4f, 0.01f); + if (mExploWindStrength >= 0.99f) { + field_0x9a8++; + } + break; + case 1: + cLib_addCalc(&mExploWindStrength, 0.0f, 0.05f, 0.04f, 0.001f); + if (mExploWindStrength <= 0.01f) { + field_0x9a8++; + } + break; + } + + mDoAud_seStart(Z2SE_OBJ_BOMBBARREL_BREAK, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + dComIfGp_getVibration().StartShock(l_HIO.vibration, 0xF, cXyz(0.0f, 1.0f, 0.0f)); + breakEffSet(); + + mCcCyl.SetAtType(AT_TYPE_BOMB); + mCcCyl.SetAtAtp(4); + mExplosionRange = l_HIO.explosion_range; + mMode = 5; +} + +/* 8057EFB0-8057EFFC 001FD0 004C+00 1/0 0/0 0/0 .text mode_proc_explosion__10daGpTaru_cFv + */ +void daGpTaru_c::mode_proc_explosion() { + fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF); + fopAcM_delete(this); +} + +/* 8057EFFC-8057F014 00201C 0018+00 2/2 0/0 0/0 .text mode_init_sink__10daGpTaru_cFv */ +void daGpTaru_c::mode_init_sink() { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + mMode = 6; +} + +/* 8057F014-8057F104 002034 00F0+00 1/0 0/0 0/0 .text mode_proc_sink__10daGpTaru_cFv */ +void daGpTaru_c::mode_proc_sink() { + cLib_addCalc(&speedF, 0.0f, 0.05f, 0.1f, 0.01f); + speed.y = cLib_minMaxLimit(speed.y, -15.0f, 13.0f); + + if (mAcch.ChkGroundHit()) { + speedF *= 0.9f; + } + + if (chkWaterLineIn()) { + gravity = -10.0f; + } else { + gravity = -20.0f; + } + + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + + if (mAcch.ChkGroundHit()) { + cLib_onBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } else { + cLib_offBit(attention_info.flags, fopAc_AttnFlag_CARRY_e); + } +} + +/* 8057F104-8057F284 002124 0180+00 1/1 0/0 0/0 .text breakEffSet__10daGpTaru_cFv */ +void daGpTaru_c::breakEffSet() { + cXyz pos(current.pos); + cXyz size(0.75f, 0.75f, 0.75f); + + J3DModelData* kibako_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", "BreakWoodBox.bmd"); + JUT_ASSERT(1259, kibako_bmd != 0); + + JPABaseEmitter* emt_p = dComIfGp_particle_set(dPa_RM(ID_ZF_S_M_EXBARREL00BOARD), &pos, NULL, NULL, 0xFF, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), NULL, NULL, &size); + dPa_modelEcallBack::setModel(emt_p, kibako_bmd, tevStr, 3, NULL, 0, 0); + + for (int i = 0; i < 8; i++) { + static u16 effName[] = { + dPa_RM(ID_ZF_S_EXBARREL01BOARD), + dPa_RM(ID_ZF_S_EXBARREL_B), + dPa_RM(ID_ZF_S_EXBARREL_C), + dPa_RM(ID_ZF_S_EXBARREL_E), + dPa_RM(ID_ZF_S_EXBARREL_F), + dPa_RM(ID_ZF_S_EXBARREL_G), + dPa_RM(ID_ZF_S_EXBARREL_H), + dPa_RM(ID_ZF_S_EXBARREL_I), + }; + + dComIfGp_particle_set(effName[i], &pos, &tevStr, NULL, &l_HIO.barrel_scale); + } +} + +/* 8057F284-8057F328 0022A4 00A4+00 1/0 0/0 0/0 .text Draw__10daGpTaru_cFv */ +int daGpTaru_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 8057F328-8057F36C 002348 0044+00 1/0 0/0 0/0 .text Delete__10daGpTaru_cFv */ +int daGpTaru_c::Delete() { + dKyw_pntwind_cut(&mWind); + dComIfG_resDelete(&mPhase, "K_ktar00"); + + #ifdef DEBUG + l_HIO.removeHIO(this); + #endif + return 1; +} + +/* 8057F36C-8057F398 00238C 002C+00 1/0 0/0 0/0 .text daGpTaru_Draw__FP10daGpTaru_c */ +static int daGpTaru_Draw(daGpTaru_c* i_this) { + return i_this->Draw(); +} + +/* 8057F398-8057F3C4 0023B8 002C+00 1/0 0/0 0/0 .text daGpTaru_Execute__FP10daGpTaru_c */ +static int daGpTaru_Execute(daGpTaru_c* i_this) { + return i_this->Execute(); +} + +/* 8057F3C4-8057F3F0 0023E4 002C+00 1/0 0/0 0/0 .text daGpTaru_Delete__FP10daGpTaru_c */ +static int daGpTaru_Delete(daGpTaru_c* i_this) { + return i_this->Delete(); +} + +/* 8057F3F0-8057F410 002410 0020+00 1/0 0/0 0/0 .text daGpTaru_Create__FP10fopAc_ac_c */ +static int daGpTaru_Create(fopAc_ac_c* i_this) { + return ((daGpTaru_c*)i_this)->create(); +} /* 8057F7A4-8057F7C4 -00001 0020+00 1/0 0/0 0/0 .data l_daGpTaru_Method */ static actor_method_class l_daGpTaru_Method = { - (process_method_func)daGpTaru_Create__FP10fopAc_ac_c, - (process_method_func)daGpTaru_Delete__FP10daGpTaru_c, - (process_method_func)daGpTaru_Execute__FP10daGpTaru_c, + (process_method_func)daGpTaru_Create, + (process_method_func)daGpTaru_Delete, + (process_method_func)daGpTaru_Execute, 0, - (process_method_func)daGpTaru_Draw__FP10daGpTaru_c, + (process_method_func)daGpTaru_Draw, }; /* 8057F7C4-8057F7F4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_GpTaru */ @@ -316,700 +645,3 @@ extern actor_process_profile_definition g_profile_Obj_GpTaru = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 8057F7F4-8057F824 00016C 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_8057F544, - (void*)NULL, - (void*)NULL, - (void*)func_8057F554, - (void*)NULL, - (void*)NULL, - (void*)func_8057F54C, -}; - -/* 8057F824-8057F830 00019C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 8057F830-8057F83C 0001A8 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, -}; - -/* 8057F83C-8057F848 0001B4 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, -}; - -/* 8057F848-8057F854 0001C0 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, -}; - -/* 8057F854-8057F860 0001CC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 8057F860-8057F86C 0001D8 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, -}; - -/* 8057F86C-8057F890 0001E4 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_8057F53C, - (void*)NULL, - (void*)NULL, - (void*)func_8057F534, -}; - -/* 8057F890-8057F8A8 000208 0018+00 1/1 0/0 0/0 .data __vt__10daGpTaru_c */ -SECTION_DATA extern void* __vt__10daGpTaru_c[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daGpTaru_cFv, - (void*)Execute__10daGpTaru_cFv, - (void*)Draw__10daGpTaru_cFv, - (void*)Delete__10daGpTaru_cFv, -}; - -/* 8057F8A8-8057F8B4 000220 000C+00 2/2 0/0 0/0 .data __vt__14daGpTaru_HIO_c */ -SECTION_DATA extern void* __vt__14daGpTaru_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14daGpTaru_HIO_cFv, -}; - -/* 8057F8B4-8057F8C0 00022C 000C+00 3/3 0/0 0/0 .data __vt__18fOpAcm_HIO_entry_c */ -SECTION_DATA extern void* __vt__18fOpAcm_HIO_entry_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18fOpAcm_HIO_entry_cFv, -}; - -/* 8057F8C0-8057F8CC 000238 000C+00 4/4 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, -}; - -/* 8057D0CC-8057D154 0000EC 0088+00 1/1 0/0 0/0 .text __ct__14daGpTaru_HIO_cFv */ -daGpTaru_HIO_c::daGpTaru_HIO_c() { - // NONMATCHING -} - -/* 8057D154-8057D1B0 000174 005C+00 1/0 0/0 0/0 .text __dt__18fOpAcm_HIO_entry_cFv */ -// fOpAcm_HIO_entry_c::~fOpAcm_HIO_entry_c() { -extern "C" void __dt__18fOpAcm_HIO_entry_cFv() { - // NONMATCHING -} - -/* 8057D1B0-8057D1F8 0001D0 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 -} - -/* ############################################################################################## */ -/* 8057F8D8-8057F8E4 000008 000C+00 1/1 0/0 0/0 .bss @3645 */ -static u8 lit_3645[12]; - -/* 8057F8E4-8057F920 000014 003C+00 8/8 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[60]; - -/* 8057D1F8-8057D2D0 000218 00D8+00 2/2 0/0 0/0 .text setBaseMtx__10daGpTaru_cFv */ -void daGpTaru_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8057F664 = "K_ktar00"; -#pragma pop - -/* 8057D2D0-8057D33C 0002F0 006C+00 1/0 0/0 0/0 .text CreateHeap__10daGpTaru_cFv */ -void daGpTaru_c::CreateHeap() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F584-8057F5B4 000014 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__10daGpTaru_c */ -SECTION_RODATA u8 const daGpTaru_c::mCcDObjInfo[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xD8, 0xFA, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F584, &daGpTaru_c::mCcDObjInfo); - -/* 8057F5B4-8057F5B8 000044 0004+00 0/1 0/0 0/0 .rodata @3803 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3803 = 160.0f; -COMPILER_STRIP_GATE(0x8057F5B4, &lit_3803); -#pragma pop - -/* 8057F5B8-8057F5BC 000048 0004+00 0/1 0/0 0/0 .rodata @3804 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3804 = 80.0f; -COMPILER_STRIP_GATE(0x8057F5B8, &lit_3804); -#pragma pop - -/* 8057F5BC-8057F5C0 00004C 0004+00 1/2 0/0 0/0 .rodata @3805 */ -SECTION_RODATA static f32 const lit_3805 = -7.0f; -COMPILER_STRIP_GATE(0x8057F5BC, &lit_3805); - -/* 8057F5C0-8057F5C4 000050 0004+00 0/1 0/0 0/0 .rodata @3806 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3806 = -100.0f; -COMPILER_STRIP_GATE(0x8057F5C0, &lit_3806); -#pragma pop - -/* 8057F5C4-8057F5C8 000054 0004+00 3/10 0/0 0/0 .rodata @3807 */ -SECTION_RODATA static u8 const lit_3807[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5C4, &lit_3807); - -/* 8057D33C-8057D600 00035C 02C4+00 1/1 0/0 0/0 .text create__10daGpTaru_cFv */ -void daGpTaru_c::create() { - // NONMATCHING -} - -/* 8057D600-8057D648 000620 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 8057D648-8057D690 000668 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 8057D690-8057D6EC 0006B0 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 8057D6EC-8057D75C 00070C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8057D75C-8057D7CC 00077C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8057D7CC-8057D7F8 0007EC 002C+00 1/1 0/0 0/0 .text - * createHeapCallBack__10daGpTaru_cFP10fopAc_ac_c */ -void daGpTaru_c::createHeapCallBack(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F5C8-8057F5D0 000058 0008+00 0/3 0/0 0/0 .rodata @3992 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3992[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5C8, &lit_3992); -#pragma pop - -/* 8057F5D0-8057F5D8 000060 0008+00 0/3 0/0 0/0 .rodata @3993 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3993[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5D0, &lit_3993); -#pragma pop - -/* 8057F5D8-8057F5E0 000068 0008+00 0/3 0/0 0/0 .rodata @3994 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3994[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8057F5D8, &lit_3994); -#pragma pop - -/* 8057D7F8-8057DAF4 000818 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ -static void bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING -} - -/* 8057DAF4-8057DB3C 000B14 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F5E0-8057F5E4 000070 0004+00 1/2 0/0 0/0 .rodata @4078 */ -SECTION_RODATA static f32 const lit_4078 = 100.0f; -COMPILER_STRIP_GATE(0x8057F5E0, &lit_4078); - -/* 8057DB3C-8057DB60 000B5C 0024+00 1/1 0/0 0/0 .text chkSinkAll__10daGpTaru_cFv */ -void daGpTaru_c::chkSinkAll() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F5E4-8057F5E8 000074 0004+00 1/1 0/0 0/0 .rodata @4084 */ -SECTION_RODATA static f32 const lit_4084 = 40.0f; -COMPILER_STRIP_GATE(0x8057F5E4, &lit_4084); - -/* 8057DB60-8057DB84 000B80 0024+00 3/3 0/0 0/0 .text chkWaterLineIn__10daGpTaru_cFv */ -void daGpTaru_c::chkWaterLineIn() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F5E8-8057F5EC 000078 0004+00 0/1 0/0 0/0 .rodata @4268 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4268 = 8.0f; -COMPILER_STRIP_GATE(0x8057F5E8, &lit_4268); -#pragma pop - -/* 8057F5EC-8057F5F0 00007C 0004+00 0/1 0/0 0/0 .rodata @4269 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4269 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x8057F5EC, &lit_4269); -#pragma pop - -/* 8057F5F0-8057F5F4 000080 0004+00 0/1 0/0 0/0 .rodata @4270 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4270 = 5.0f; -COMPILER_STRIP_GATE(0x8057F5F0, &lit_4270); -#pragma pop - -/* 8057F5F4-8057F5F8 000084 0004+00 0/2 0/0 0/0 .rodata @4271 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4271 = -15.0f; -COMPILER_STRIP_GATE(0x8057F5F4, &lit_4271); -#pragma pop - -/* 8057F5F8-8057F5FC 000088 0004+00 0/1 0/0 0/0 .rodata @4272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4272 = 2.0f; -COMPILER_STRIP_GATE(0x8057F5F8, &lit_4272); -#pragma pop - -/* 8057F5FC-8057F600 00008C 0004+00 0/4 0/0 0/0 .rodata @4273 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4273 = -1.0f; -COMPILER_STRIP_GATE(0x8057F5FC, &lit_4273); -#pragma pop - -/* 8057F600-8057F604 000090 0004+00 0/1 0/0 0/0 .rodata @4274 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4274 = 5.0f / 3.0f; -COMPILER_STRIP_GATE(0x8057F600, &lit_4274); -#pragma pop - -/* 8057F604-8057F608 000094 0004+00 0/3 0/0 0/0 .rodata @4275 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4275 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8057F604, &lit_4275); -#pragma pop - -/* 8057DB84-8057E224 000BA4 06A0+00 1/1 0/0 0/0 .text bgCheck__10daGpTaru_cFv */ -void daGpTaru_c::bgCheck() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F608-8057F60C 000098 0004+00 0/1 0/0 0/0 .rodata @4331 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4331 = 50.0f; -COMPILER_STRIP_GATE(0x8057F608, &lit_4331); -#pragma pop - -/* 8057F60C-8057F610 00009C 0004+00 0/1 0/0 0/0 .rodata @4332 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4332 = 7.0f; -COMPILER_STRIP_GATE(0x8057F60C, &lit_4332); -#pragma pop - -/* 8057F610-8057F614 0000A0 0004+00 0/1 0/0 0/0 .rodata @4333 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4333 = 170.0f; -COMPILER_STRIP_GATE(0x8057F610, &lit_4333); -#pragma pop - -/* 8057E224-8057E494 001244 0270+00 1/0 0/0 0/0 .text Execute__10daGpTaru_cFv */ -void daGpTaru_c::Execute() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F920-8057F924 000050 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_8057F920[4]; - -/* 8057E494-8057E5DC 0014B4 0148+00 1/1 0/0 0/0 .text mode_proc_call__10daGpTaru_cFv */ -void daGpTaru_c::mode_proc_call() { - // NONMATCHING -} - -/* 8057E5DC-8057E618 0015FC 003C+00 2/2 0/0 0/0 .text mode_init_wait__10daGpTaru_cFv */ -void daGpTaru_c::mode_init_wait() { - // NONMATCHING -} - -/* 8057E618-8057E63C 001638 0024+00 1/0 0/0 0/0 .text mode_proc_wait__10daGpTaru_cFv */ -void daGpTaru_c::mode_proc_wait() { - // NONMATCHING -} - -/* 8057E63C-8057E660 00165C 0024+00 1/1 0/0 0/0 .text mode_init_carry__10daGpTaru_cFv */ -void daGpTaru_c::mode_init_carry() { - // NONMATCHING -} - -/* 8057E660-8057E700 001680 00A0+00 1/0 0/0 0/0 .text mode_proc_carry__10daGpTaru_cFv */ -void daGpTaru_c::mode_proc_carry() { - // NONMATCHING -} - -/* 8057E700-8057E72C 001720 002C+00 1/1 0/0 0/0 .text mode_init_drop__10daGpTaru_cFv */ -void daGpTaru_c::mode_init_drop() { - // NONMATCHING -} - -/* 8057E72C-8057E750 00174C 0024+00 1/0 0/0 0/0 .text mode_proc_drop__10daGpTaru_cFv */ -void daGpTaru_c::mode_proc_drop() { - // NONMATCHING -} - -/* 8057E750-8057E768 001770 0018+00 2/2 0/0 0/0 .text mode_init_roll__10daGpTaru_cFv */ -void daGpTaru_c::mode_init_roll() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F614-8057F618 0000A4 0004+00 0/1 0/0 0/0 .rodata @4521 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4521 = 4.0f; -COMPILER_STRIP_GATE(0x8057F614, &lit_4521); -#pragma pop - -/* 8057F618-8057F61C 0000A8 0004+00 0/1 0/0 0/0 .rodata @4522 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4522 = -1000000000.0f; -COMPILER_STRIP_GATE(0x8057F618, &lit_4522); -#pragma pop - -/* 8057F61C-8057F620 0000AC 0004+00 0/1 0/0 0/0 .rodata @4523 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4523 = 0x4645B05B; -COMPILER_STRIP_GATE(0x8057F61C, &lit_4523); -#pragma pop - -/* 8057F620-8057F624 0000B0 0004+00 0/1 0/0 0/0 .rodata @4524 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4524 = 10.0f; -COMPILER_STRIP_GATE(0x8057F620, &lit_4524); -#pragma pop - -/* 8057F624-8057F628 0000B4 0004+00 0/1 0/0 0/0 .rodata @4525 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4525 = 0x3C23D70B; -COMPILER_STRIP_GATE(0x8057F624, &lit_4525); -#pragma pop - -/* 8057F628-8057F62C 0000B8 0004+00 0/2 0/0 0/0 .rodata @4526 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4526 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8057F628, &lit_4526); -#pragma pop - -/* 8057F62C-8057F630 0000BC 0004+00 0/1 0/0 0/0 .rodata @4527 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4527 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x8057F62C, &lit_4527); -#pragma pop - -/* 8057E768-8057EB2C 001788 03C4+00 1/0 0/0 0/0 .text mode_proc_roll__10daGpTaru_cFv */ -void daGpTaru_c::mode_proc_roll() { - // NONMATCHING -} - -/* 8057EB2C-8057EBA4 001B4C 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F630-8057F634 0000C0 0004+00 0/1 0/0 0/0 .rodata @4538 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4538 = 500.0f; -COMPILER_STRIP_GATE(0x8057F630, &lit_4538); -#pragma pop - -/* 8057F634-8057F638 0000C4 0004+00 0/2 0/0 0/0 .rodata @4539 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4539 = 0.5f; -COMPILER_STRIP_GATE(0x8057F634, &lit_4539); -#pragma pop - -/* 8057EBA4-8057EC60 001BC4 00BC+00 1/1 0/0 0/0 .text mode_init_exploInit__10daGpTaru_cFv - */ -void daGpTaru_c::mode_init_exploInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F638-8057F63C 0000C8 0004+00 0/1 0/0 0/0 .rodata @4574 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4574 = 20.0f; -COMPILER_STRIP_GATE(0x8057F638, &lit_4574); -#pragma pop - -/* 8057EC60-8057EE2C 001C80 01CC+00 1/0 0/0 0/0 .text mode_proc_exploInit__10daGpTaru_cFv - */ -void daGpTaru_c::mode_proc_exploInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F63C-8057F640 0000CC 0004+00 0/1 0/0 0/0 .rodata @4604 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4604 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x8057F63C, &lit_4604); -#pragma pop - -/* 8057F640-8057F644 0000D0 0004+00 0/2 0/0 0/0 .rodata @4605 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4605 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x8057F640, &lit_4605); -#pragma pop - -/* 8057F644-8057F648 0000D4 0004+00 0/1 0/0 0/0 .rodata @4606 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4606 = 99.0f / 100.0f; -COMPILER_STRIP_GATE(0x8057F644, &lit_4606); -#pragma pop - -/* 8057F648-8057F64C 0000D8 0004+00 0/2 0/0 0/0 .rodata @4607 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4607 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x8057F648, &lit_4607); -#pragma pop - -/* 8057F64C-8057F650 0000DC 0004+00 0/1 0/0 0/0 .rodata @4608 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4608 = 1.0f / 25.0f; -COMPILER_STRIP_GATE(0x8057F64C, &lit_4608); -#pragma pop - -/* 8057F650-8057F654 0000E0 0004+00 0/1 0/0 0/0 .rodata @4609 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4609 = 0x3A83126F; -COMPILER_STRIP_GATE(0x8057F650, &lit_4609); -#pragma pop - -/* 8057EE2C-8057EFB0 001E4C 0184+00 2/2 0/0 0/0 .text mode_init_explosion__10daGpTaru_cFv - */ -void daGpTaru_c::mode_init_explosion() { - // NONMATCHING -} - -/* 8057EFB0-8057EFFC 001FD0 004C+00 1/0 0/0 0/0 .text mode_proc_explosion__10daGpTaru_cFv - */ -void daGpTaru_c::mode_proc_explosion() { - // NONMATCHING -} - -/* 8057EFFC-8057F014 00201C 0018+00 2/2 0/0 0/0 .text mode_init_sink__10daGpTaru_cFv */ -void daGpTaru_c::mode_init_sink() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F654-8057F658 0000E4 0004+00 0/1 0/0 0/0 .rodata @4660 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4660 = 13.0f; -COMPILER_STRIP_GATE(0x8057F654, &lit_4660); -#pragma pop - -/* 8057F658-8057F65C 0000E8 0004+00 0/1 0/0 0/0 .rodata @4661 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4661 = -10.0f; -COMPILER_STRIP_GATE(0x8057F658, &lit_4661); -#pragma pop - -/* 8057F65C-8057F660 0000EC 0004+00 0/1 0/0 0/0 .rodata @4662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4662 = -20.0f; -COMPILER_STRIP_GATE(0x8057F65C, &lit_4662); -#pragma pop - -/* 8057F014-8057F104 002034 00F0+00 1/0 0/0 0/0 .text mode_proc_sink__10daGpTaru_cFv */ -void daGpTaru_c::mode_proc_sink() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8057F660-8057F664 0000F0 0004+00 1/1 0/0 0/0 .rodata @4697 */ -SECTION_RODATA static f32 const lit_4697 = 0.75f; -COMPILER_STRIP_GATE(0x8057F660, &lit_4697); - -/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8057F66D = "Always"; -SECTION_DEAD static char const* const stringBase_8057F674 = "BreakWoodBox.bmd"; -#pragma pop - -/* 8057F104-8057F284 002124 0180+00 1/1 0/0 0/0 .text breakEffSet__10daGpTaru_cFv */ -void daGpTaru_c::breakEffSet() { - // NONMATCHING -} - -/* 8057F284-8057F328 0022A4 00A4+00 1/0 0/0 0/0 .text Draw__10daGpTaru_cFv */ -void daGpTaru_c::Draw() { - // NONMATCHING -} - -/* 8057F328-8057F36C 002348 0044+00 1/0 0/0 0/0 .text Delete__10daGpTaru_cFv */ -void daGpTaru_c::Delete() { - // NONMATCHING -} - -/* 8057F36C-8057F398 00238C 002C+00 1/0 0/0 0/0 .text daGpTaru_Draw__FP10daGpTaru_c */ -static void daGpTaru_Draw(daGpTaru_c* param_0) { - // NONMATCHING -} - -/* 8057F398-8057F3C4 0023B8 002C+00 1/0 0/0 0/0 .text daGpTaru_Execute__FP10daGpTaru_c */ -static void daGpTaru_Execute(daGpTaru_c* param_0) { - // NONMATCHING -} - -/* 8057F3C4-8057F3F0 0023E4 002C+00 1/0 0/0 0/0 .text daGpTaru_Delete__FP10daGpTaru_c */ -static void daGpTaru_Delete(daGpTaru_c* param_0) { - // NONMATCHING -} - -/* 8057F3F0-8057F410 002410 0020+00 1/0 0/0 0/0 .text daGpTaru_Create__FP10fopAc_ac_c */ -static void daGpTaru_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8057F410-8057F458 002430 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 8057F458-8057F4C4 002478 006C+00 2/1 0/0 0/0 .text __dt__14daGpTaru_HIO_cFv */ -daGpTaru_HIO_c::~daGpTaru_HIO_c() { - // NONMATCHING -} - -/* 8057F4C4-8057F534 0024E4 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_gpTaru_cpp */ -void __sinit_d_a_obj_gpTaru_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8057F4C4, __sinit_d_a_obj_gpTaru_cpp); -#pragma pop - -/* 8057F534-8057F53C 002554 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8057F534() { - // NONMATCHING -} - -/* 8057F53C-8057F544 00255C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8057F53C() { - // NONMATCHING -} - -/* 8057F544-8057F54C 002564 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_8057F544() { - // NONMATCHING -} - -/* 8057F54C-8057F554 00256C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_8057F54C() { - // NONMATCHING -} - -/* 8057F554-8057F55C 002574 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_8057F554() { - // NONMATCHING -} - -/* 8057F664-8057F664 0000F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_swpush5.cpp b/src/d/actor/d_a_obj_swpush5.cpp index c94dcb11cbd..393a257893b 100644 --- a/src/d/actor/d_a_obj_swpush5.cpp +++ b/src/d/actor/d_a_obj_swpush5.cpp @@ -6,345 +6,459 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_obj_swpush5.h" -#include "dol2asm.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "Z2AudioLib/Z2Instances.h" - -// -// Forward References: -// - -extern "C" static void rideCallBack__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" void initBaseMtx__10daObjSw5_cFv(); -extern "C" void setBaseMtx__10daObjSw5_cFv(); -extern "C" void Create__10daObjSw5_cFv(); -extern "C" void CreateHeap__10daObjSw5_cFv(); -extern "C" void create__10daObjSw5_cFv(); -extern "C" void Execute__10daObjSw5_cFPPA3_A4_f(); -extern "C" void setting_ride_flag__10daObjSw5_cFv(); -extern "C" bool checkPushable__10daObjSw5_cFv(); -extern "C" void event_proc_call__10daObjSw5_cFv(); -extern "C" void actionPauseNoneInit__10daObjSw5_cFv(); -extern "C" void actionPauseNone__10daObjSw5_cFv(); -extern "C" void actionPauseOrderInit__10daObjSw5_cFv(); -extern "C" void actionPauseOrder__10daObjSw5_cFv(); -extern "C" void actionPauseInit__10daObjSw5_cFv(); -extern "C" void actionPause__10daObjSw5_cFv(); -extern "C" void actionWait__10daObjSw5_cFv(); -extern "C" void actionOrder__10daObjSw5_cFv(); -extern "C" void actionEvent__10daObjSw5_cFv(); -extern "C" void calc_top_pos__10daObjSw5_cFv(); -extern "C" void mode_proc_call__10daObjSw5_cFv(); -extern "C" void modeWaitLowerInit__10daObjSw5_cFv(); -extern "C" void modeWaitLower__10daObjSw5_cFv(); -extern "C" void modeLowerInit__10daObjSw5_cFv(); -extern "C" void modeLower__10daObjSw5_cFv(); -extern "C" void modeWaitUpperInit__10daObjSw5_cFv(); -extern "C" void modeWaitUpper__10daObjSw5_cFv(); -extern "C" void modeUpperInit__10daObjSw5_cFv(); -extern "C" void modeUpper__10daObjSw5_cFv(); -extern "C" void Draw__10daObjSw5_cFv(); -extern "C" void Delete__10daObjSw5_cFv(); -extern "C" static void daObjSw5_Draw__FP10daObjSw5_c(); -extern "C" static void daObjSw5_Execute__FP10daObjSw5_c(); -extern "C" static void daObjSw5_Delete__FP10daObjSw5_c(); -extern "C" static void daObjSw5_Create__FP10fopAc_ac_c(); -extern "C" void __dt__4cXyzFv(); -extern "C" extern char const* const d_a_obj_swpush5__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -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 offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void ChkUsed__9cBgW_BgIdCFv(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 8059C6A4-8059C6AC 000000 0008+00 7/7 0/0 0/0 .rodata l_dzbIdx */ -SECTION_RODATA static u8 const l_dzbIdx[8] = { - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, -}; -COMPILER_STRIP_GATE(0x8059C6A4, &l_dzbIdx); - -/* 8059C6AC-8059C6B0 000008 0004+00 0/1 0/0 0/0 .rodata @3718 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3718 = -50.0f; -COMPILER_STRIP_GATE(0x8059C6AC, &lit_3718); -#pragma pop - -/* 8059C6B0-8059C6B4 00000C 0004+00 3/7 0/0 0/0 .rodata @3719 */ -SECTION_RODATA static u8 const lit_3719[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8059C6B0, &lit_3719); - -/* 8059C6B4-8059C6B8 000010 0004+00 0/1 0/0 0/0 .rodata @3720 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3720 = 50.0f; -COMPILER_STRIP_GATE(0x8059C6B4, &lit_3720); -#pragma pop - -/* 8059C8B0-8059C8C0 000048 000C+04 0/1 0/0 0/0 .bss @3654 */ -#pragma push -#pragma force_active on -static u8 lit_3654[12 + 4 /* padding */]; -#pragma pop - -/* 8059C8C0-8059C8CC 000058 000C+00 0/1 0/0 0/0 .bss @3657 */ -#pragma push -#pragma force_active on -static u8 lit_3657[12]; -#pragma pop - -/* 8059C8CC-8059C8D8 000064 000C+00 0/1 0/0 0/0 .bss @3658 */ -#pragma push -#pragma force_active on -static u8 lit_3658[12]; -#pragma pop - -/* 8059C8D8-8059C8E4 000070 000C+00 0/1 0/0 0/0 .bss @3659 */ -#pragma push -#pragma force_active on -static u8 lit_3659[12]; -#pragma pop - -/* 8059C8E4-8059C914 00007C 0030+00 0/1 0/0 0/0 .bss l_push_check_pos$3653 */ -#pragma push -#pragma force_active on -static u8 l_push_check_pos[48]; -#pragma pop +static const int l_dzbIdx[] = {7, 8}; /* 8059B4EC-8059B754 0000EC 0268+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 +static void rideCallBack(dBgW* i_bgw, fopAc_ac_c* i_bgActor, fopAc_ac_c* i_rideActor) { + daObjSw5_c* i_this = (daObjSw5_c*)i_bgActor; + daPy_py_c* player_p = daPy_getPlayerActorClass(); + + if (i_this->checkPushable() && fopAcM_CheckStatus(i_rideActor, fopAcM_STATUS_UNK_0x400) && fopAcM_GetName(i_rideActor) == PROC_ALINK) { + static cXyz l_push_check_pos[4] = { + cXyz(-50.0f, 0.0f, -50.0f), + cXyz(50.0f, 0.0f, -50.0f), + cXyz(50.0f, 0.0f, 50.0f), + cXyz(-50.0f, 0.0f, 50.0f), + }; + + cXyz local_rideActor_pos = i_rideActor->current.pos - i_bgActor->current.pos; + mDoMtx_stack_c::YrotS(-i_bgActor->current.angle.y); + mDoMtx_stack_c::multVec(&local_rideActor_pos, &local_rideActor_pos); + + if (l_push_check_pos[0].x <= local_rideActor_pos.x && l_push_check_pos[2].x >= local_rideActor_pos.x && + l_push_check_pos[0].z <= local_rideActor_pos.z && l_push_check_pos[2].z >= local_rideActor_pos.z) + { + i_this->mUnkRideTimer = 6; + if (player_p->checkBootsOrArmorHeavy()) { + i_this->mIsPlayerRideHvy = TRUE; + } else { + i_this->mIsPlayerRideHvy = FALSE; + } + + if (fopAcM_CheckCarryType(i_rideActor, fopAcM_CARRY_TYPE_1)) { + i_this->field_0x5ae = 2; + } else { + i_this->field_0x5ae = 1; + } + } + } } /* 8059B754-8059B804 000354 00B0+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -static void nodeCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +static int nodeCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + int jnt_no = i_joint->getJntNo(); + J3DModel* model_p = j3dSys.getModel(); + daObjSw5_c* i_this = (daObjSw5_c*)model_p->getUserArea(); + + cMtx_copy(model_p->getAnmMtx(jnt_no), mDoMtx_stack_c::get()); + + if (jnt_no == 1) { + mDoMtx_stack_c::transM(i_this->mTopPos, 0.0f, 0.0f); + } + + model_p->setAnmMtx(jnt_no, mDoMtx_stack_c::get()); + mDoMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + } + + return 1; } /* 8059B804-8059B88C 000404 0088+00 1/1 0/0 0/0 .text initBaseMtx__10daObjSw5_cFv */ void daObjSw5_c::initBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mMtx); + mpModel->setBaseScale(scale); + setBaseMtx(); } /* 8059B88C-8059B920 00048C 0094+00 2/2 0/0 0/0 .text setBaseMtx__10daObjSw5_cFv */ void daObjSw5_c::setBaseMtx() { - // NONMATCHING -} + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); -/* ############################################################################################## */ -/* 8059C6B8-8059C6BC 000014 0004+00 1/3 0/0 0/0 .rodata @3815 */ -SECTION_RODATA static f32 const lit_3815 = -25.0f; -COMPILER_STRIP_GATE(0x8059C6B8, &lit_3815); + mDoMtx_stack_c::transS(current.pos.x, current.pos.y + mTopPos, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); +} /* 8059B920-8059BA1C 000520 00FC+00 1/0 0/0 0/0 .text Create__10daObjSw5_cFv */ -void daObjSw5_c::Create() { - // NONMATCHING -} +int daObjSw5_c::Create() { + if (dComIfG_Bgsp().Regist(mpBgW2, this)) { + return 0; + } -/* ############################################################################################## */ -/* 8059C6D0-8059C6D0 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8059C6D0 = "D_Hfsw00"; -#pragma pop + initBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpModel->getModelData()); + + mpBgW->SetRideCallback(rideCallBack); + + J3DJoint* sw_jnt = mpModel->getModelData()->getJointNodePointer(1); + JUT_ASSERT(276, sw_jnt != 0); + + sw_jnt->setCallBack(nodeCallBack); + mpModel->setUserArea((uintptr_t)this); + + if (fopAcM_isSwitch(this, getSwNo())) { + mTopPos = -25.0f; + modeWaitUpperInit(); + } + + mpBgW2->Move(); + mpBgW2->SetLock(); + return 1; +} /* 8059C6FC-8059C700 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_swpush5__stringBase0; +static char* l_arcName = "D_Hfsw00"; /* 8059BA1C-8059BB1C 00061C 0100+00 1/0 0/0 0/0 .text CreateHeap__10daObjSw5_cFv */ -void daObjSw5_c::CreateHeap() { - // NONMATCHING +int daObjSw5_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); + JUT_ASSERT(308, modelData != 0); + + mpModel = mDoExt_J3DModel__create(modelData, J3DMdlFlag_DifferedDLBuffer, BMD_DEFAULT_DIFF_FLAGS); + if (mpModel == NULL) { + return 0; + } + + mpBgW2 = new dBgW(); + if (mpBgW2 == NULL || mpBgW2->Set((cBgD_t*)dComIfG_getObjectRes(l_arcName, l_dzbIdx[0]), 1, &mMtx)) { + mpBgW2 = NULL; + return 0; + } + + return 1; } -/* ############################################################################################## */ -/* 8059C700-8059C70C -00001 000C+00 0/1 0/0 0/0 .data @3907 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3907[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionPauseNone__10daObjSw5_cFv, -}; -#pragma pop +/* 8059BB1C-8059BBD4 00071C 00B8+00 1/1 0/0 0/0 .text create__10daObjSw5_cFv */ +int daObjSw5_c::create() { + fopAcM_SetupActor(this, daObjSw5_c); -/* 8059C70C-8059C718 -00001 000C+00 0/1 0/0 0/0 .data @3908 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3908[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionPauseOrder__10daObjSw5_cFv, -}; -#pragma pop + int phase_state = dComIfG_resLoad(&mPhase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + phase_state = MoveBGCreate(l_arcName, l_dzbIdx[1], NULL, 0x1060, NULL); + if (phase_state == cPhs_ERROR_e) { + return phase_state; + } + } -/* 8059C718-8059C724 -00001 000C+00 0/1 0/0 0/0 .data @3909 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3909[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionPause__10daObjSw5_cFv, -}; -#pragma pop + return phase_state; +} -/* 8059C724-8059C730 -00001 000C+00 0/1 0/0 0/0 .data @3910 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3910[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__10daObjSw5_cFv, -}; -#pragma pop +/* 8059BBD4-8059BC70 0007D4 009C+00 1/0 0/0 0/0 .text Execute__10daObjSw5_cFPPA3_A4_f */ +int daObjSw5_c::Execute(Mtx** param_0) { + setting_ride_flag(); + mCounter++; -/* 8059C730-8059C73C -00001 000C+00 0/1 0/0 0/0 .data @3911 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3911[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrder__10daObjSw5_cFv, -}; -#pragma pop + event_proc_call(); + mode_proc_call(); + calc_top_pos(); -/* 8059C73C-8059C748 -00001 000C+00 0/1 0/0 0/0 .data @3912 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3912[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEvent__10daObjSw5_cFv, -}; -#pragma pop + mpBgW2->Move(); -/* 8059C748-8059C790 00006C 0048+00 0/1 0/0 0/0 .data l_func$3906 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + *param_0 = &mBgMtx; + setBaseMtx(); -/* 8059C790-8059C79C -00001 000C+00 0/1 0/0 0/0 .data @3993 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3993[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitLower__10daObjSw5_cFv, -}; -#pragma pop + field_0x5af = field_0x5ae; + field_0x5ad = mUnkRideTimer; + field_0x5ae = 0; + mIsPlayerRideHvyPrev = mIsPlayerRideHvy; + mIsPlayerRideHvy = FALSE; + return 1; +} -/* 8059C79C-8059C7A8 -00001 000C+00 0/1 0/0 0/0 .data @3994 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3994[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeLower__10daObjSw5_cFv, -}; -#pragma pop +/* 8059BC70-8059BD24 000870 00B4+00 1/1 0/0 0/0 .text setting_ride_flag__10daObjSw5_cFv + */ +void daObjSw5_c::setting_ride_flag() { + if (mUnkRideTimer != 0) { + mUnkRideTimer--; + } -/* 8059C7A8-8059C7B4 -00001 000C+00 0/1 0/0 0/0 .data @3995 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3995[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeWaitUpper__10daObjSw5_cFv, -}; -#pragma pop + if (field_0x5ae != 0) { + if (field_0x5b1 != 0) { + field_0x5b0 = 8; + } else { + field_0x5b0++; + if (field_0x5b0 > 8) { + field_0x5b1 = 1; + } + } -/* 8059C7B4-8059C7C0 -00001 000C+00 0/1 0/0 0/0 .data @3996 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3996[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)modeUpper__10daObjSw5_cFv, -}; -#pragma pop + if (mIsPlayerRideHvyPrev != mIsPlayerRideHvy) { + field_0x5b1 = 0; + field_0x5b0 = 0; + } + } else if (field_0x5b1 != 0) { + field_0x5b0--; + if (field_0x5b0 == 0) { + field_0x5b1 = 0; + } + } else { + field_0x5b0 = 0; + } +} -/* 8059C7C0-8059C7F0 0000E4 0030+00 0/1 0/0 0/0 .data l_mode_func$3992 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_mode_func[48] = { - 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 +/* 8059BD24-8059BD2C 000924 0008+00 1/1 0/0 0/0 .text checkPushable__10daObjSw5_cFv */ +// getSwNo2 always returns 0xFF, so this function always returns true +BOOL daObjSw5_c::checkPushable() { + u8 swbit2 = getSwNo2(); + if (swbit2 == 0xFF) { + return true; + } + + if (swbit2 != 0xFF && fopAcM_isSwitch(this, swbit2)) { + return true; + } + + return false; +} + +/* 8059BD2C-8059BE18 00092C 00EC+00 1/1 0/0 0/0 .text event_proc_call__10daObjSw5_cFv */ +void daObjSw5_c::event_proc_call() { + static void (daObjSw5_c::*l_func[])() = { + &daObjSw5_c::actionPauseNone, + &daObjSw5_c::actionPauseOrder, + &daObjSw5_c::actionPause, + &daObjSw5_c::actionWait, + &daObjSw5_c::actionOrder, + &daObjSw5_c::actionEvent, + }; + + (this->*l_func[mAction])(); +} + +/* 8059BE18-8059BE24 000A18 000C+00 2/2 0/0 0/0 .text actionPauseNoneInit__10daObjSw5_cFv + */ +void daObjSw5_c::actionPauseNoneInit() { + mAction = 0; +} + +/* 8059BE24-8059BE28 000A24 0004+00 1/0 0/0 0/0 .text actionPauseNone__10daObjSw5_cFv */ +void daObjSw5_c::actionPauseNone() {} + +/* 8059BE28-8059BE80 000A28 0058+00 1/1 0/0 0/0 .text actionPauseOrderInit__10daObjSw5_cFv */ +void daObjSw5_c::actionPauseOrderInit() { + if (mAction != 1) { + mAction = 1; + fopAcM_orderPotentialEvent(this, 2, 0, 0); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + } +} + +/* 8059BE80-8059BEB4 000A80 0034+00 1/0 0/0 0/0 .text actionPauseOrder__10daObjSw5_cFv */ +void daObjSw5_c::actionPauseOrder() { + if (eventInfo.checkCommandDemoAccrpt()) { + actionPauseInit(); + } else { + actionPauseNoneInit(); + } +} + +/* 8059BEB4-8059BEE0 000AB4 002C+00 1/1 0/0 0/0 .text actionPauseInit__10daObjSw5_cFv */ +void daObjSw5_c::actionPauseInit() { + daPy_getPlayerActorClass()->onWolfEyeKeep(); + mPauseTimer = 10; + mAction = 2; +} + +/* 8059BEE0-8059BF48 000AE0 0068+00 1/0 0/0 0/0 .text actionPause__10daObjSw5_cFv */ +void daObjSw5_c::actionPause() { + daPy_getPlayerActorClass()->onWolfEyeKeep(); + + mPauseTimer--; + if (mPauseTimer == 0) { + dComIfGp_event_reset(); + actionPauseNoneInit(); + } +} + +/* 8059BF48-8059BF4C 000B48 0004+00 1/0 0/0 0/0 .text actionWait__10daObjSw5_cFv */ +void daObjSw5_c::actionWait() {} + +/* 8059BF4C-8059BF50 000B4C 0004+00 1/0 0/0 0/0 .text actionOrder__10daObjSw5_cFv */ +void daObjSw5_c::actionOrder() {} + +/* 8059BF50-8059BF54 000B50 0004+00 1/0 0/0 0/0 .text actionEvent__10daObjSw5_cFv */ +void daObjSw5_c::actionEvent() {} + +/* 8059BF54-8059BFE4 000B54 0090+00 1/1 0/0 0/0 .text calc_top_pos__10daObjSw5_cFv */ +void daObjSw5_c::calc_top_pos() { + speed.y -= (field_0x5f8 - field_0x5fc) * (0.9f + KREG_F(1)); + speed.y -= speed.y * (0.5f + KREG_F(0)); + field_0x5f8 += speed.y; + + mTopPos = -25.0f * (1.0f - field_0x5f8); + mTopPos = cLib_minMaxLimit(mTopPos, -25.0f, 0.0f); +} + +/* 8059BFE4-8059C0A0 000BE4 00BC+00 1/1 0/0 0/0 .text mode_proc_call__10daObjSw5_cFv */ +void daObjSw5_c::mode_proc_call() { + static void (daObjSw5_c::*l_mode_func[])() = { + &daObjSw5_c::modeWaitLower, + &daObjSw5_c::modeLower, + &daObjSw5_c::modeWaitUpper, + &daObjSw5_c::modeUpper, + }; + + (this->*l_mode_func[mMode])(); +} + +/* 8059C0A0-8059C0C8 000CA0 0028+00 1/1 0/0 0/0 .text modeWaitLowerInit__10daObjSw5_cFv + */ +void daObjSw5_c::modeWaitLowerInit() { + speed.y = 0.0f; + field_0x5f8 = 1.0f; + field_0x5fc = 1.0f; + mMode = 0; +} + +/* 8059C0C8-8059C23C 000CC8 0174+00 1/0 0/0 0/0 .text modeWaitLower__10daObjSw5_cFv */ +void daObjSw5_c::modeWaitLower() { + bool var_r30 = false; + bool do_pause = false; + daPy_py_c* player = daPy_getPlayerActorClass(); + + if (field_0x5b1 != 0) { + var_r30 = true; + } + + if (field_0x5ae != 0 && field_0x5af == 0) { + do_pause = true; + } + + if (var_r30) { + if (mIsPlayerRideHvy) { + mPauseTimer += 30; + modeLowerInit(); + } else { + if (field_0x5fc == 1.0f) { + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_RIDE, 0); + } + field_0x5fc = 0.8f; + } + } else { + if (field_0x5fc != 1.0f) { + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_DROP, 0); + } + field_0x5fc = 1.0f; + } + + if (do_pause) { + actionPauseOrderInit(); + } +} + +/* 8059C23C-8059C2D0 000E3C 0094+00 1/1 0/0 0/0 .text modeLowerInit__10daObjSw5_cFv */ +void daObjSw5_c::modeLowerInit() { + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_ON, 0); + field_0x5fc = 0.0f; + mMode = 1; +} + +/* 8059C2D0-8059C364 000ED0 0094+00 1/0 0/0 0/0 .text modeLower__10daObjSw5_cFv */ +void daObjSw5_c::modeLower() { + daPy_getPlayerActorClass(); + if (-25.0f == mTopPos) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + modeWaitUpperInit(); + + fopAcM_onSwitch(this, getSwNo()); + OS_REPORT("ヘビー踏みスイッチ:スイッチONしました<%d>\n", getSwNo()); + } +} + +/* 8059C364-8059C370 000F64 000C+00 2/2 0/0 0/0 .text modeWaitUpperInit__10daObjSw5_cFv + */ +void daObjSw5_c::modeWaitUpperInit() { + mMode = 2; +} + +/* 8059C370-8059C3C4 000F70 0054+00 1/0 0/0 0/0 .text modeWaitUpper__10daObjSw5_cFv */ +void daObjSw5_c::modeWaitUpper() { + if (!fopAcM_isSwitch(this, getSwNo())) { + modeUpperInit(); + } +} + +/* 8059C3C4-8059C454 000FC4 0090+00 1/1 0/0 0/0 .text modeUpperInit__10daObjSw5_cFv */ +void daObjSw5_c::modeUpperInit() { + fopAcM_seStart(this, Z2SE_OBJ_HEAVY_FUMISW_OFF, 0); + field_0x5fc = 1.0f; + mMode = 3; +} + +/* 8059C454-8059C4BC 001054 0068+00 1/0 0/0 0/0 .text modeUpper__10daObjSw5_cFv */ +void daObjSw5_c::modeUpper() { + if (mTopPos == 0.0f) { + modeWaitLowerInit(); + + fopAcM_offSwitch(this, getSwNo()); + OS_REPORT("ヘビー踏みスイッチ:スイッチOFFしました<%d>\n", getSwNo()); + + field_0x5b1 = 0; + field_0x5b0 = 0; + } +} + +/* 8059C4BC-8059C560 0010BC 00A4+00 1/0 0/0 0/0 .text Draw__10daObjSw5_cFv */ +int daObjSw5_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +/* 8059C560-8059C5CC 001160 006C+00 1/0 0/0 0/0 .text Delete__10daObjSw5_cFv */ +int daObjSw5_c::Delete() { + if (mpBgW2 != NULL && mpBgW2->ChkUsed()) { + dComIfG_Bgsp().Release(mpBgW2); + } + + dComIfG_resDelete(&mPhase, l_arcName); + return 1; +} + +/* 8059C5CC-8059C5F8 0011CC 002C+00 1/0 0/0 0/0 .text daObjSw5_Draw__FP10daObjSw5_c */ +static int daObjSw5_Draw(daObjSw5_c* i_this) { + return i_this->MoveBGDraw(); +} + +/* 8059C5F8-8059C618 0011F8 0020+00 1/0 0/0 0/0 .text daObjSw5_Execute__FP10daObjSw5_c */ +static int daObjSw5_Execute(daObjSw5_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 8059C618-8059C638 001218 0020+00 1/0 0/0 0/0 .text daObjSw5_Delete__FP10daObjSw5_c */ +static int daObjSw5_Delete(daObjSw5_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 8059C638-8059C658 001238 0020+00 1/0 0/0 0/0 .text daObjSw5_Create__FP10fopAc_ac_c */ +static int daObjSw5_Create(fopAc_ac_c* i_this) { + return ((daObjSw5_c*)i_this)->create(); +} /* 8059C7F0-8059C810 -00001 0020+00 1/0 0/0 0/0 .data l_daObjSw5_Method */ static actor_method_class l_daObjSw5_Method = { - (process_method_func)daObjSw5_Create__FP10fopAc_ac_c, - (process_method_func)daObjSw5_Delete__FP10daObjSw5_c, - (process_method_func)daObjSw5_Execute__FP10daObjSw5_c, + (process_method_func)daObjSw5_Create, + (process_method_func)daObjSw5_Delete, + (process_method_func)daObjSw5_Execute, 0, - (process_method_func)daObjSw5_Draw__FP10daObjSw5_c, + (process_method_func)daObjSw5_Draw, }; /* 8059C810-8059C840 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush5 */ @@ -365,387 +479,4 @@ extern actor_process_profile_definition g_profile_Obj_Swpush5 = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 8059C840-8059C868 000164 0028+00 1/1 0/0 0/0 .data __vt__10daObjSw5_c */ -SECTION_DATA extern void* __vt__10daObjSw5_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__10daObjSw5_cFv, - (void*)Create__10daObjSw5_cFv, - (void*)Execute__10daObjSw5_cFPPA3_A4_f, - (void*)Draw__10daObjSw5_cFv, - (void*)Delete__10daObjSw5_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 8059BB1C-8059BBD4 00071C 00B8+00 1/1 0/0 0/0 .text create__10daObjSw5_cFv */ -void daObjSw5_c::create() { - // NONMATCHING -} - -/* 8059BBD4-8059BC70 0007D4 009C+00 1/0 0/0 0/0 .text Execute__10daObjSw5_cFPPA3_A4_f */ -void daObjSw5_c::Execute(Mtx** param_0) { - // NONMATCHING -} - -/* 8059BC70-8059BD24 000870 00B4+00 1/1 0/0 0/0 .text setting_ride_flag__10daObjSw5_cFv - */ -void daObjSw5_c::setting_ride_flag() { - // NONMATCHING -} - -/* 8059BD24-8059BD2C 000924 0008+00 1/1 0/0 0/0 .text checkPushable__10daObjSw5_cFv */ -bool daObjSw5_c::checkPushable() { - return true; -} - -/* ############################################################################################## */ -/* 8059C914-8059C918 -00001 0004+00 2/2 0/0 0/0 .bss None */ -/* 8059C914 0001+00 data_8059C914 None */ -/* 8059C915 0003+00 data_8059C915 None */ -static u8 struct_8059C914[4]; - -/* 8059BD2C-8059BE18 00092C 00EC+00 1/1 0/0 0/0 .text event_proc_call__10daObjSw5_cFv */ -void daObjSw5_c::event_proc_call() { - // NONMATCHING -} - -/* 8059BE18-8059BE24 000A18 000C+00 2/2 0/0 0/0 .text actionPauseNoneInit__10daObjSw5_cFv - */ -void daObjSw5_c::actionPauseNoneInit() { - // NONMATCHING -} - -/* 8059BE24-8059BE28 000A24 0004+00 1/0 0/0 0/0 .text actionPauseNone__10daObjSw5_cFv */ -void daObjSw5_c::actionPauseNone() { - /* empty function */ -} - -/* 8059BE28-8059BE80 000A28 0058+00 1/1 0/0 0/0 .text actionPauseOrderInit__10daObjSw5_cFv */ -void daObjSw5_c::actionPauseOrderInit() { - // NONMATCHING -} - -/* 8059BE80-8059BEB4 000A80 0034+00 1/0 0/0 0/0 .text actionPauseOrder__10daObjSw5_cFv */ -void daObjSw5_c::actionPauseOrder() { - // NONMATCHING -} - -/* 8059BEB4-8059BEE0 000AB4 002C+00 1/1 0/0 0/0 .text actionPauseInit__10daObjSw5_cFv */ -void daObjSw5_c::actionPauseInit() { - // NONMATCHING -} - -/* 8059BEE0-8059BF48 000AE0 0068+00 1/0 0/0 0/0 .text actionPause__10daObjSw5_cFv */ -void daObjSw5_c::actionPause() { - // NONMATCHING -} - -/* 8059BF48-8059BF4C 000B48 0004+00 1/0 0/0 0/0 .text actionWait__10daObjSw5_cFv */ -void daObjSw5_c::actionWait() { - /* empty function */ -} - -/* 8059BF4C-8059BF50 000B4C 0004+00 1/0 0/0 0/0 .text actionOrder__10daObjSw5_cFv */ -void daObjSw5_c::actionOrder() { - /* empty function */ -} - -/* 8059BF50-8059BF54 000B50 0004+00 1/0 0/0 0/0 .text actionEvent__10daObjSw5_cFv */ -void daObjSw5_c::actionEvent() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 8059C6BC-8059C6C0 000018 0004+00 0/1 0/0 0/0 .rodata @3986 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3986 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8059C6BC, &lit_3986); -#pragma pop - -/* 8059C6C0-8059C6C4 00001C 0004+00 0/1 0/0 0/0 .rodata @3987 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3987 = 0.5f; -COMPILER_STRIP_GATE(0x8059C6C0, &lit_3987); -#pragma pop - -/* 8059C6C4-8059C6C8 000020 0004+00 2/6 0/0 0/0 .rodata @3988 */ -SECTION_RODATA static f32 const lit_3988 = 1.0f; -COMPILER_STRIP_GATE(0x8059C6C4, &lit_3988); - -/* 8059BF54-8059BFE4 000B54 0090+00 1/1 0/0 0/0 .text calc_top_pos__10daObjSw5_cFv */ -void daObjSw5_c::calc_top_pos() { - // NONMATCHING -} - -/* 8059BFE4-8059C0A0 000BE4 00BC+00 1/1 0/0 0/0 .text mode_proc_call__10daObjSw5_cFv */ -void daObjSw5_c::mode_proc_call() { - // NONMATCHING -} - -/* 8059C0A0-8059C0C8 000CA0 0028+00 1/1 0/0 0/0 .text modeWaitLowerInit__10daObjSw5_cFv - */ -void daObjSw5_c::modeWaitLowerInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8059C6C8-8059C6CC 000024 0004+00 1/3 0/0 0/0 .rodata @4041 */ -SECTION_RODATA static f32 const lit_4041 = -1.0f; -COMPILER_STRIP_GATE(0x8059C6C8, &lit_4041); - -/* 8059C6CC-8059C6D0 000028 0004+00 0/1 0/0 0/0 .rodata @4042 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4042 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x8059C6CC, &lit_4042); -#pragma pop - -/* 8059C0C8-8059C23C 000CC8 0174+00 1/0 0/0 0/0 .text modeWaitLower__10daObjSw5_cFv */ -void daObjSw5_c::modeWaitLower() { - // NONMATCHING -} - -/* 8059C23C-8059C2D0 000E3C 0094+00 1/1 0/0 0/0 .text modeLowerInit__10daObjSw5_cFv */ -void daObjSw5_c::modeLowerInit() { - // NONMATCHING -} - -/* 8059C2D0-8059C364 000ED0 0094+00 1/0 0/0 0/0 .text modeLower__10daObjSw5_cFv */ -void daObjSw5_c::modeLower() { - // NONMATCHING -} - -/* 8059C364-8059C370 000F64 000C+00 2/2 0/0 0/0 .text modeWaitUpperInit__10daObjSw5_cFv - */ -void daObjSw5_c::modeWaitUpperInit() { - // NONMATCHING -} - -/* 8059C370-8059C3C4 000F70 0054+00 1/0 0/0 0/0 .text modeWaitUpper__10daObjSw5_cFv */ -void daObjSw5_c::modeWaitUpper() { - // NONMATCHING -} - -/* 8059C3C4-8059C454 000FC4 0090+00 1/1 0/0 0/0 .text modeUpperInit__10daObjSw5_cFv */ -void daObjSw5_c::modeUpperInit() { - // NONMATCHING -} - -/* 8059C454-8059C4BC 001054 0068+00 1/0 0/0 0/0 .text modeUpper__10daObjSw5_cFv */ -void daObjSw5_c::modeUpper() { - // NONMATCHING -} - -/* 8059C4BC-8059C560 0010BC 00A4+00 1/0 0/0 0/0 .text Draw__10daObjSw5_cFv */ -void daObjSw5_c::Draw() { - // NONMATCHING -} - -/* 8059C560-8059C5CC 001160 006C+00 1/0 0/0 0/0 .text Delete__10daObjSw5_cFv */ -void daObjSw5_c::Delete() { - // NONMATCHING -} - -/* 8059C5CC-8059C5F8 0011CC 002C+00 1/0 0/0 0/0 .text daObjSw5_Draw__FP10daObjSw5_c */ -static void daObjSw5_Draw(daObjSw5_c* param_0) { - // NONMATCHING -} - -/* 8059C5F8-8059C618 0011F8 0020+00 1/0 0/0 0/0 .text daObjSw5_Execute__FP10daObjSw5_c */ -static void daObjSw5_Execute(daObjSw5_c* param_0) { - // NONMATCHING -} - -/* 8059C618-8059C638 001218 0020+00 1/0 0/0 0/0 .text daObjSw5_Delete__FP10daObjSw5_c */ -static void daObjSw5_Delete(daObjSw5_c* param_0) { - // NONMATCHING -} - -/* 8059C638-8059C658 001238 0020+00 1/0 0/0 0/0 .text daObjSw5_Create__FP10fopAc_ac_c */ -static void daObjSw5_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8059C658-8059C694 001258 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8059C918-8059C91C 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_8059C918[4]; -#pragma pop - -/* 8059C91C-8059C920 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_8059C91C[4]; -#pragma pop - -/* 8059C920-8059C924 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C920[4]; -#pragma pop - -/* 8059C924-8059C928 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C924[4]; -#pragma pop - -/* 8059C928-8059C92C 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C928[4]; -#pragma pop - -/* 8059C92C-8059C930 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C92C[4]; -#pragma pop - -/* 8059C930-8059C934 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_8059C930[4]; -#pragma pop - -/* 8059C934-8059C938 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8059C934[4]; -#pragma pop - -/* 8059C938-8059C93C 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8059C938[4]; -#pragma pop - -/* 8059C93C-8059C940 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_8059C93C[4]; -#pragma pop - -/* 8059C940-8059C944 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C940[4]; -#pragma pop - -/* 8059C944-8059C948 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C944[4]; -#pragma pop - -/* 8059C948-8059C94C 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C948[4]; -#pragma pop - -/* 8059C94C-8059C950 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C94C[4]; -#pragma pop - -/* 8059C950-8059C954 0000E8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8059C950[4]; -#pragma pop - -/* 8059C954-8059C958 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_8059C954[4]; -#pragma pop - -/* 8059C958-8059C95C 0000F0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_8059C958[4]; -#pragma pop - -/* 8059C95C-8059C960 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8059C95C[4]; -#pragma pop - -/* 8059C960-8059C964 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_8059C960[4]; -#pragma pop - -/* 8059C964-8059C968 0000FC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C964[4]; -#pragma pop - -/* 8059C968-8059C96C 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_8059C968[4]; -#pragma pop - -/* 8059C96C-8059C970 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C96C[4]; -#pragma pop - -/* 8059C970-8059C974 000108 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C970[4]; -#pragma pop - -/* 8059C974-8059C978 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8059C974[4]; -#pragma pop - -/* 8059C978-8059C97C 000110 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_8059C978[4]; -#pragma pop - -/* 8059C6D0-8059C6D0 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES