From 5e283fd567b03c3ce8d1c2fc127fca505da1388f Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:51:24 -0700 Subject: [PATCH] obj_movebox mostly done (#2181) --- include/d/a/d_a_obj.h | 6 + include/d/bg/d_bg_s.h | 2 +- include/d/bg/d_bg_s_movebg_actor.h | 1 + .../d/a/obj/d_a_obj_burnbox/d_a_obj_burnbox.h | 4 + include/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.h | 8 +- .../d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h | 247 ++- rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.cpp | 9 - .../a/obj/d_a_obj_movebox/d_a_obj_movebox.cpp | 385 ++-- .../d_a_obj_movebox_NONMATCHING.cpp | 1853 +++++++++++++++++ src/d/com/d_com_static.cpp | 8 +- 10 files changed, 2268 insertions(+), 255 deletions(-) create mode 100644 rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox_NONMATCHING.cpp diff --git a/include/d/a/d_a_obj.h b/include/d/a/d_a_obj.h index 18177f271f4..bc771a04449 100644 --- a/include/d/a/d_a_obj.h +++ b/include/d/a/d_a_obj.h @@ -15,6 +15,12 @@ void posMoveF_grade(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32, cXyz const* cXyz const*); void quat_rotBaseY(Quaternion*, cXyz const&); void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32); + +template +int PrmAbstract(const fopAc_ac_c* i_actor, T i_prmA, T i_prmB) { + u32 param = fopAcM_GetParam(i_actor); + return ((1 << i_prmA) - 1) & (param >> i_prmB); +} }; // namespace daObj #endif /* D_A_D_A_OBJ_H */ diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h index 510a4524061..ccf98162513 100644 --- a/include/d/bg/d_bg_s.h +++ b/include/d/bg/d_bg_s.h @@ -108,7 +108,7 @@ public: fopAc_ac_c* PushPullCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel); bool WaterChk(dBgS_SplGrpChk* chk) { return SplGrpChk(chk); } - u32 GetMtrlSndId(cBgS_PolyInfo* param_0) { return dKy_pol_sound_get(param_0); } + u32 GetMtrlSndId(const cBgS_PolyInfo& param_0) { return dKy_pol_sound_get(¶m_0); } }; // Size: 0x1404 bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&); diff --git a/include/d/bg/d_bg_s_movebg_actor.h b/include/d/bg/d_bg_s_movebg_actor.h index 8ae508d0d3a..d8c605808bd 100644 --- a/include/d/bg/d_bg_s_movebg_actor.h +++ b/include/d/bg/d_bg_s_movebg_actor.h @@ -20,6 +20,7 @@ public: /* 80078950 */ int MoveBGExecute(); int MoveBGDraw() { return Draw(); } + int MoveBGIsDelete() { return IsDelete(); } /* 80078688 */ virtual int CreateHeap(); /* 80078690 */ virtual int Create(); diff --git a/include/rel/d/a/obj/d_a_obj_burnbox/d_a_obj_burnbox.h b/include/rel/d/a/obj/d_a_obj_burnbox/d_a_obj_burnbox.h index 1d3659f0011..381a834497f 100644 --- a/include/rel/d/a/obj/d_a_obj_burnbox/d_a_obj_burnbox.h +++ b/include/rel/d/a/obj/d_a_obj_burnbox/d_a_obj_burnbox.h @@ -22,6 +22,10 @@ public: /* 8046EABC */ void Draw(); /* 8046EC10 */ void Delete(); + static void make_prm_burnbox(u32* param_0, u8 param_1) { + *param_0 = param_1; + } + private: /* 0x568 */ u8 field_0x568[0x740 - 0x568]; }; diff --git a/include/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.h b/include/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.h index 966117ecdf9..39f6d980bd4 100644 --- a/include/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.h +++ b/include/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.h @@ -2,6 +2,7 @@ #define D_A_OBJ_EFF_H #include "f_op/f_op_actor_mng.h" +#include "d/a/d_a_obj.h" /** * @ingroup actors-objects @@ -36,11 +37,4 @@ public: }; }; // namespace daObjEff -struct daObj { -public: - template - static int PrmAbstract(const fopAc_ac_c* param_0, T param_1, T param_2); -}; - - #endif /* D_A_OBJ_EFF_H */ diff --git a/include/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h b/include/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h index 9a778e3a7ed..cd2610477aa 100644 --- a/include/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h +++ b/include/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h @@ -2,7 +2,10 @@ #define D_A_OBJ_MOVEBOX_H #include "d/com/d_com_inf_game.h" +#include "d/a/d_a_obj.h" #include "f_op/f_op_actor_mng.h" +#include "d/bg/d_bg_s_movebg_actor.h" +#include "d/bg/d_bg_w.h" /** * @ingroup actors-objects @@ -15,26 +18,144 @@ * Arbiter's Grounds Block (2 of them), Kakariko Graveyard Gravestone * */ -class daObjMovebox : public fopAc_ac_c { - struct Act_c { - struct Prm_e {}; +namespace daObjMovebox { + class Hio_c { + public: + class Attr_c { + public: + /* 0x00 */ s16 mFirstPushStopTime; + /* 0x02 */ s16 mRepeatPushStopTime; + /* 0x04 */ s16 mPushMoveTime; + /* 0x06 */ s16 mFirstPullStopTime; + /* 0x08 */ s16 mRepeatPullStopTime; + /* 0x0A */ s16 mPullMoveTime; + /* 0x0C */ f32 mUnitDistance; + /* 0x10 */ f32 mShadowSize; + /* 0x14 */ f32 mGravity; + /* 0x18 */ f32 mViscosityResistance; + /* 0x1C */ f32 mInertiaResistance; + /* 0x20 */ f32 mFallYInitSpeed; + /* 0x24 */ f32 mLandSmokeScale; + /* 0x28 */ f32 mBuoyancy; + /* 0x2C */ f32 mPlayerGravity; + /* 0x30 */ f32 mMiscGravity; + /* 0x34 */ f32 mWaterOscillationAccel; + /* 0x38 */ s16 mWaterOscillationAngleSpeed; + /* 0x3C */ f32 mWaterViscoscityResistance; + /* 0x40 */ f32 mWaterInertiaResistance; + /* 0x44 */ f32 mPlayerTiltPower; + /* 0x48 */ f32 mMiscTiltPower; + /* 0x4C */ f32 mMaxTiltPower; + /* 0x50 */ f32 mTiltSpringFactor; + /* 0x54 */ f32 mTiltViscoscityResistance; + /* 0x58 */ int field_0x58; + /* 0x5C */ int field_0x5c; + /* 0x60 */ u32 field_0x60; + /* 0x64 */ f32 field_0x64; + /* 0x68 */ f32 field_0x68; + /* 0x6C */ f32 field_0x6c; + /* 0x70 */ f32 field_0x70; + /* 0x74 */ f32 field_0x74; + /* 0x78 */ f32 field_0x78; + /* 0x7C */ u32 field_0x7c; + /* 0x80 */ u32 field_0x80; + /* 0x84 */ u32 field_0x84; + /* 0x88 */ u32 field_0x88; + /* 0x8C */ int field_0x8c; + /* 0x90 */ s16 field_0x90; + /* 0x92 */ s16 field_0x92; + /* 0x94 */ s16 field_0x94; + /* 0x96 */ s16 field_0x96; + /* 0x98 */ s16 field_0x98; + /* 0x9A */ s16 field_0x9a; + /* 0x9C */ u8 field_0x9c; + /* 0x9D */ u8 field_0x9d; + /* 0x9E */ u8 field_0x9e; + }; + }; - /* 8047E628 */ void prm_get_swSave1() const; + class BgcSrc_c { + public: + /* 0x0 */ f32 field_0x0; + /* 0x4 */ f32 field_0x4; + /* 0x8 */ f32 field_0x8; + /* 0xC */ f32 field_0xc; + }; + + class Act_c; + + class Bgc_c { + public: + enum State_e { + STATE_0_e = 0x0, + STATE_1_e = 0x1, + STATE_2_e = 0x2, + STATE_4_e = 0x4, + STATE_8_e = 0x8, + STATE_10_e = 0x10, + STATE_20_e = 0x20, + STATE_40_e = 0x40, + }; + + /* 8047DAEC */ Bgc_c(); + /* 8047DBF0 */ void gnd_pos(daObjMovebox::Act_c const*, daObjMovebox::BgcSrc_c const*, int, + f32); + /* 8047DD88 */ void wrt_pos(cXyz const&); + /* 8047DE58 */ void wall_pos(daObjMovebox::Act_c const*, daObjMovebox::BgcSrc_c const*, int, + s16, f32); + /* 8047E134 */ void proc_vertical(daObjMovebox::Act_c*); + /* 8047E2D4 */ bool chk_wall_pre(daObjMovebox::Act_c const*, daObjMovebox::BgcSrc_c const*, + int, s16); + /* 8047E350 */ bool chk_wall_touch(daObjMovebox::Act_c const*, + daObjMovebox::BgcSrc_c const*, s16); + /* 8047E5A0 */ bool chk_wall_touch2(daObjMovebox::Act_c const*, + daObjMovebox::BgcSrc_c const*, int, s16); + + static const daObjMovebox::BgcSrc_c M_lin5[]; + static const daObjMovebox::BgcSrc_c M_lin20[]; + + #ifdef NONMATCHING + static dBgS_ObjGndChk M_gnd_work[23]; + static dBgS_WtrChk M_wrt_work; + static dBgS_ObjLinChk M_wall_work[23]; + #else + static u8 M_gnd_work[1932]; + static u8 M_wrt_work[84]; + static u8 M_wall_work[2576]; + #endif + + /* 0x000 */ f32 field_0x0[23]; + /* 0x05C */ int field_0x5c; + /* 0x060 */ f32 field_0x60; + /* 0x064 */ cXyz field_0x64[23]; + /* 0x178 */ int field_0x178; + /* 0x17C */ f32 field_0x17c; + /* 0x180 */ State_e mState; + }; + + class Act_c : public dBgS_MoveBgActor { + public: + enum Prm_e { + PRM_4_e = 0x4, + PRM_8_e = 0x8, + PRM_18_e = 0x18, + PRM_1C_e = 0x1C, + }; + + /* 8047E628 */ int prm_get_swSave1() const; /* 8047E650 */ void prmZ_init(); /* 8047E680 */ void prmX_init(); - /* 8047E6B0 */ void attr() const; + /* 8047E6B0 */ const daObjMovebox::Hio_c::Attr_c& attr() const; /* 8047E6C8 */ void set_mtx(); /* 8047E7B0 */ void init_mtx(); /* 8047E7F4 */ void path_init(); /* 8047E92C */ void path_save(); - /* 8047EB48 */ void CreateHeap(); - /* 8047EBEC */ void RideCallBack(dBgW*, fopAc_ac_c*, fopAc_ac_c*); - /* 8047ED10 */ void PPCallBack(fopAc_ac_c*, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel); - /* 8047EE0C */ void Create(); + /* 8047EBEC */ static void RideCallBack(dBgW*, fopAc_ac_c*, fopAc_ac_c*); + /* 8047ED10 */ static fopAc_ac_c* PPCallBack(fopAc_ac_c*, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel); /* 8047F11C */ void afl_sway(); - /* 8047F38C */ void check_to_walk(); + /* 8047F38C */ int check_to_walk(); /* 8047F50C */ void clr_moment_cnt(); - /* 8047F530 */ void chk_appear() const; + /* 8047F530 */ bool chk_appear() const; /* 8047F5CC */ void eff_smoke_slip_start(); /* 8047F634 */ void mode_wait_init(); /* 8047F6A8 */ void mode_wait(); @@ -47,44 +168,78 @@ class daObjMovebox : public fopAc_ac_c { /* 804800E4 */ void sound_land(); /* 804801A8 */ void vib_land(); /* 804801FC */ void eff_land_smoke(); - /* 8048027C */ void Execute(f32 (**)[3][4]); - /* 80480728 */ void Draw(); - /* 804808FC */ void Delete(); - static void* M_dir_base[2]; - static void* const M_arcname[8]; - static u8 const M_cyl_src[68]; - static u8 const M_attr[1280]; + /* 8047EB48 */ virtual int CreateHeap(); + /* 8047EE0C */ virtual int Create(); + /* 8048027C */ virtual int Execute(Mtx**); + /* 80480728 */ virtual int Draw(); + /* 804808FC */ virtual int Delete(); + + inline void mode_proc_call(); + inline int Mthd_Create(); + inline int Mthd_Delete(); + + // some functions need an inlined version of `attr`, find better fix later + const daObjMovebox::Hio_c::Attr_c& i_attr() const { return M_attr[mType]; } + + int prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_8_e, PRM_8_e); } + int prmZ_get_swSave2() const { return (u8)(mPrmZ >> 8); } + int prm_get_dmy() const { return 0; } + int prmZ_get_pathId() const { return mPrmZ & 0xFF; } + u8 prm_get_answer() const { return daObj::PrmAbstract(this, PRM_4_e, PRM_1C_e); } + int prm_get_type() const { return daObj::PrmAbstract(this, PRM_4_e, PRM_18_e); } + + int is_switch1() const { return fopAcM_isSwitch(this, prm_get_swSave1()) != 0; } + int is_switch2() const { return fopAcM_isSwitch(this, prmZ_get_swSave2()) != 0; } + + void on_switch1() const { fopAcM_onSwitch(this, prm_get_swSave1()); } + void on_switch2() const { fopAcM_onSwitch(this, prmZ_get_swSave2()); } + void off_switch1() const { fopAcM_offSwitch(this, prm_get_swSave1()); } + void off_switch2() const { fopAcM_offSwitch(this, prmZ_get_swSave2()); } + + static s16 M_dir_base[4]; + static const char* M_arcname[8]; + static const dCcD_SrcCyl M_cyl_src; + static const daObjMovebox::Hio_c::Attr_c M_attr[8]; + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ int field_0x5ac; + /* 0x5B0 */ dCcD_Stts mCcStts; + /* 0x5EC */ dCcD_Cyl mCcCyl; + /* 0x728 */ Bgc_c mBgc; + /* 0x8AC */ int mType; + /* 0x8B0 */ u16 mPrmZ; + /* 0x8B2 */ u16 mPrmX; + /* 0x8B4 */ dPath* mpPath; + /* 0x8B8 */ s16 field_0x8b8; + /* 0x8BC */ f32 field_0x8bc; + /* 0x8C0 */ f32 field_0x8c0; + /* 0x8C4 */ f32 field_0x8c4; + /* 0x8C8 */ f32 field_0x8c8; + /* 0x8CC */ f32 field_0x8cc; + /* 0x8D0 */ f32 field_0x8d0; + /* 0x8D4 */ f32 field_0x8d4; + /* 0x8D8 */ f32 field_0x8d8; + /* 0x8DC */ int field_0x8dc; + /* 0x8E0 */ int field_0x8e0; + /* 0x8E4 */ f32 field_0x8e4; + /* 0x8E8 */ int field_0x8e8; + /* 0x8EC */ dBgW::PushPullLabel mPPLabel; + /* 0x8F0 */ s16 field_0x8f0[4]; + /* 0x8F8 */ s16 field_0x8f8; + /* 0x8FA */ s16 field_0x8fa; + /* 0x8FC */ s16 field_0x8fc; + /* 0x8FE */ u8 field_0x8fe; + /* 0x8FF */ s8 mReverb; + /* 0x900 */ u8 field_0x900; + /* 0x901 */ u8 field_0x901; + /* 0x902 */ u8 field_0x902; + /* 0x904 */ int field_0x904; + /* 0x908 */ s8 field_0x908; }; - - struct BgcSrc_c {}; - - struct Bgc_c { - /* 8047DAEC */ Bgc_c(); - /* 8047DBF0 */ void gnd_pos(daObjMovebox::Act_c const*, daObjMovebox::BgcSrc_c const*, int, - f32); - /* 8047DD88 */ void wrt_pos(cXyz const&); - /* 8047DE58 */ void wall_pos(daObjMovebox::Act_c const*, daObjMovebox::BgcSrc_c const*, int, - s16, f32); - /* 8047E134 */ void proc_vertical(daObjMovebox::Act_c*); - /* 8047E2D4 */ void chk_wall_pre(daObjMovebox::Act_c const*, daObjMovebox::BgcSrc_c const*, - int, s16); - /* 8047E350 */ void chk_wall_touch(daObjMovebox::Act_c const*, - daObjMovebox::BgcSrc_c const*, s16); - /* 8047E5A0 */ void chk_wall_touch2(daObjMovebox::Act_c const*, - daObjMovebox::BgcSrc_c const*, int, s16); - - static u8 const M_lin5[80]; - static u8 const M_lin20[368]; - static u8 M_gnd_work[1932]; - static u8 M_wrt_work[84]; - static u8 M_wall_work[2576]; - }; - -private: - /* 0x568 */ u8 field_0x568[0x90c - 0x568]; }; -STATIC_ASSERT(sizeof(daObjMovebox) == 0x90C); +STATIC_ASSERT(sizeof(daObjMovebox::Act_c) == 0x90C); #endif /* D_A_OBJ_MOVEBOX_H */ diff --git a/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.cpp b/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.cpp index d74f84af77c..d7146e95b3c 100644 --- a/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.cpp +++ b/rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.cpp @@ -55,15 +55,6 @@ int Mthd_IsDelete(void* i_this) { }; // namespace }; // namespace daObjEff -/* 8057CAD4-8057CAF0 000174 001C+00 1/1 0/0 0/0 .text - * PrmAbstract__5daObjFPC10fopAc_ac_cQ38daObjEff5Act_c5Prm_eQ38daObjEff5Act_c5Prm_e - */ -template -int daObj::PrmAbstract(const fopAc_ac_c* param_0, T param_1, T param_2) { - u32 param = fopAcM_GetParam(param_0); - return ((1 << param_1) - 1) & (param >> param_2); -} - /* ############################################################################################## */ /* 8057CAFC-8057CB1C -00001 0020+00 1/0 0/0 0/0 .data * Mthd_Table__Q28daObjEff25@unnamed@d_a_obj_eff_cpp@ */ diff --git a/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.cpp b/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.cpp index 9378213657b..08d62456ec9 100644 --- a/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.cpp +++ b/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.cpp @@ -1,7 +1,7 @@ /** * @file d_a_obj_movebox.cpp - * -*/ + * + */ #include "rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h" #include "d/d_path.h" @@ -215,42 +215,24 @@ extern "C" void __register_global_object(); /* ############################################################################################## */ /* 80480F28-80480F78 000000 0050+00 14/14 0/0 0/0 .rodata M_lin5__Q212daObjMovebox5Bgc_c */ -SECTION_RODATA u8 const daObjMovebox::Bgc_c::M_lin5[80] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0xBF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, +SECTION_RODATA const daObjMovebox::BgcSrc_c daObjMovebox::Bgc_c::M_lin5[] = { + {0.0f, 0.0f, 0.0f, 0.0f}, {-0.5f, -0.5f, 1.0f, 1.0f}, {0.5f, -0.5f, -1.0f, 1.0f}, + {0.5f, 0.5f, -1.0f, -1.0f}, {-0.5f, 0.5f, 1.0f, -1.0f}, }; COMPILER_STRIP_GATE(0x80480F28, &daObjMovebox::Bgc_c::M_lin5); /* 80480F78-804810E8 000050 0170+00 0/4 0/0 0/0 .rodata M_lin20__Q212daObjMovebox5Bgc_c */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daObjMovebox::Bgc_c::M_lin20[368] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xBE, 0x80, 0x00, 0x00, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0x3E, 0x80, 0x00, 0x00, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0x3E, 0x80, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0xBE, 0x80, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0xBF, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0xBF, 0x40, 0x00, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xBF, 0x40, 0x00, 0x00, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA const daObjMovebox::BgcSrc_c daObjMovebox::Bgc_c::M_lin20[] = { + {0.0f, 0.0f, 0.0f, 0.0f}, {-0.25f, -0.25f, 0.0f, 0.0f}, {-0.5f, -0.5f, 1.0f, 1.0f}, + {0.0f, -0.5f, -1.0f, 1.0f}, {0.0f, 0.0f, -1.0f, -1.0f}, {-0.5f, 0.0f, 1.0f, -1.0f}, + {0.25f, -0.25f, 0.0f, 0.0f}, {0.0f, -0.5f, 1.0f, 1.0f}, {0.5f, -0.5f, -1.0f, 1.0f}, + {0.5f, 0.0f, -1.0f, -1.0f}, {0.0f, 0.0f, 1.0f, -1.0f}, {0.25f, 0.25f, 0.0f, 0.0f}, + {0.0f, 0.0f, 1.0f, 1.0f}, {0.5f, 0.0f, -1.0f, 1.0f}, {0.5f, 0.5f, -1.0f, -1.0f}, + {0.0f, 0.5f, 1.0f, -1.0f}, {-0.25f, 0.25f, 0.0f, 0.0f}, {-0.5f, 0.0f, 1.0f, 1.0f}, + {0.0f, 0.0f, -1.0f, 1.0f}, {0.0f, 0.5f, -1.0f, -1.0f}, {-0.5f, 0.5f, 1.0f, -1.0f}, + {-0.75f, 0.25f, 0.0f, 0.0f}, {-0.75f, -0.25f, 0.0f, 0.0f}, }; COMPILER_STRIP_GATE(0x80480F78, &daObjMovebox::Bgc_c::M_lin20); #pragma pop @@ -265,6 +247,7 @@ SECTION_RODATA static u8 const lit_3687[4] = { COMPILER_STRIP_GATE(0x804810E8, &lit_3687); /* 8047DAEC-8047DBB0 0000EC 00C4+00 1/1 0/0 0/0 .text __ct__Q212daObjMovebox5Bgc_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -401,13 +384,13 @@ u8 daObjMovebox::Bgc_c::M_gnd_work[1932]; /* 8047DBF0-8047DD88 0001F0 0198+00 1/1 0/0 0/0 .text * gnd_pos__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cif */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void daObjMovebox::Bgc_c::gnd_pos(daObjMovebox::Act_c const* param_0, daObjMovebox::BgcSrc_c const* param_1, int param_2, - f32 param_3) { - nofralloc + f32 param_3){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/func_8047DBF0.s" } #pragma pop @@ -432,11 +415,11 @@ static u8 lit_3670[12]; u8 daObjMovebox::Bgc_c::M_wrt_work[84]; /* 8047DD88-8047DE58 000388 00D0+00 1/1 0/0 0/0 .text wrt_pos__Q212daObjMovebox5Bgc_cFRC4cXyz */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Bgc_c::wrt_pos(cXyz const& param_0) { - nofralloc +asm void daObjMovebox::Bgc_c::wrt_pos(cXyz const& param_0){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/wrt_pos__Q212daObjMovebox5Bgc_cFRC4cXyz.s" } #pragma pop @@ -458,6 +441,7 @@ u8 daObjMovebox::Bgc_c::M_wall_work[2576]; /* 8047DE58-8047E134 000458 02DC+00 1/1 0/0 0/0 .text * wall_pos__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cisf */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -471,11 +455,11 @@ asm void daObjMovebox::Bgc_c::wall_pos(daObjMovebox::Act_c const* param_0, /* 8047E134-8047E2D4 000734 01A0+00 2/2 0/0 0/0 .text * proc_vertical__Q212daObjMovebox5Bgc_cFPQ212daObjMovebox5Act_c */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Bgc_c::proc_vertical(daObjMovebox::Act_c* param_0) { - nofralloc +asm void daObjMovebox::Bgc_c::proc_vertical(daObjMovebox::Act_c* param_0){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/proc_vertical__Q212daObjMovebox5Bgc_cFPQ212daObjMovebox5Act_c.s" } #pragma pop @@ -487,13 +471,13 @@ COMPILER_STRIP_GATE(0x804810FC, &lit_3902); /* 8047E2D4-8047E350 0008D4 007C+00 2/2 0/0 0/0 .text * chk_wall_pre__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cis */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Bgc_c::chk_wall_pre(daObjMovebox::Act_c const* param_0, +asm bool daObjMovebox::Bgc_c::chk_wall_pre(daObjMovebox::Act_c const* param_0, daObjMovebox::BgcSrc_c const* param_1, int param_2, - s16 param_3) { - nofralloc + s16 param_3){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/func_8047E2D4.s" } #pragma pop @@ -520,10 +504,11 @@ static u8 touch_work[112]; /* 8047E350-8047E5A0 000950 0250+00 1/1 0/0 0/0 .text * chk_wall_touch__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cs */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Bgc_c::chk_wall_touch(daObjMovebox::Act_c const* param_0, +asm bool daObjMovebox::Bgc_c::chk_wall_touch(daObjMovebox::Act_c const* param_0, daObjMovebox::BgcSrc_c const* param_1, s16 param_2) { nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/func_8047E350.s" @@ -532,10 +517,11 @@ asm void daObjMovebox::Bgc_c::chk_wall_touch(daObjMovebox::Act_c const* param_0, /* 8047E5A0-8047E628 000BA0 0088+00 1/1 0/0 0/0 .text * chk_wall_touch2__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cis */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Bgc_c::chk_wall_touch2(daObjMovebox::Act_c const* param_0, +asm bool daObjMovebox::Bgc_c::chk_wall_touch2(daObjMovebox::Act_c const* param_0, daObjMovebox::BgcSrc_c const* param_1, int param_2, s16 param_3) { nofralloc @@ -545,10 +531,11 @@ asm void daObjMovebox::Bgc_c::chk_wall_touch2(daObjMovebox::Act_c const* param_0 /* 8047E628-8047E650 000C28 0028+00 4/4 0/0 0/0 .text prm_get_swSave1__Q212daObjMovebox5Act_cCFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::prm_get_swSave1() const { +asm int daObjMovebox::Act_c::prm_get_swSave1() const { nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/prm_get_swSave1__Q212daObjMovebox5Act_cCFv.s" } @@ -556,6 +543,7 @@ asm void daObjMovebox::Act_c::prm_get_swSave1() const { /* 8047E650-8047E680 000C50 0030+00 1/1 0/0 0/0 .text prmZ_init__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -567,6 +555,7 @@ asm void daObjMovebox::Act_c::prmZ_init() { /* 8047E680-8047E6B0 000C80 0030+00 1/1 0/0 0/0 .text prmX_init__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -603,15 +592,8 @@ extern "C" char const* const stringBase_804816E3; /* 80481104-80481124 -00001 0020+00 3/3 0/0 0/0 .rodata M_arcname__Q212daObjMovebox5Act_c */ -SECTION_RODATA void* const daObjMovebox::Act_c::M_arcname[8] = { - (void*)&d_a_obj_movebox__stringBase0, - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x9), - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x10), - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x18), - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x22), - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x2B), - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x35), - (void*)(((char*)&d_a_obj_movebox__stringBase0) + 0x3F), +SECTION_RODATA const char* daObjMovebox::Act_c::M_arcname[8] = { + "Kkiba_00", "Osiblk", "H_Box20", "A_SMBlock", "P_Lv4blk", "P_Lv4blk2", "H_OsiHaka", "dummy4", }; COMPILER_STRIP_GATE(0x80481104, &daObjMovebox::Act_c::M_arcname); @@ -619,98 +601,87 @@ COMPILER_STRIP_GATE(0x80481104, &daObjMovebox::Act_c::M_arcname); */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daObjMovebox::Act_c::M_cyl_src[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xD8, 0xFA, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, +SECTION_RODATA const dCcD_SrcCyl daObjMovebox::Act_c::M_cyl_src = { + { + 0, + {{0, 0, 0}, {0xD8FAFDBF, 0x11}, {0x78}}, // mObj + {dCcD_SE_NONE, 0, 0, 0, 0}, // mGObjAt + {dCcD_SE_NONE, 0, 0, 0, 0}, // mGObjTg + {0}, // mGObjCo + }, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 75.0f, // mRadius + 150.0f, // mHeight + } // mCyl }; COMPILER_STRIP_GATE(0x80481124, &daObjMovebox::Act_c::M_cyl_src); #pragma pop /* 80481168-80481668 000240 0500+00 6/18 0/0 0/0 .rodata M_attr__Q212daObjMovebox5Act_c */ -SECTION_RODATA u8 const daObjMovebox::Act_c::M_attr[1280] = { - 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0A, 0x42, 0x96, 0x00, 0x00, - 0x42, 0xB4, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x79, 0x99, 0x9A, 0xBE, 0xC7, 0xAE, 0x14, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x0C, 0x00, 0x43, 0x16, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, - 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, 0x43, 0x16, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3C, - 0x00, 0x08, 0x01, 0x3D, 0x00, 0x08, 0x01, 0x51, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x2D, - 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x5A, 0x00, 0x97, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x42, 0x96, 0x00, 0x00, - 0x42, 0xB4, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x90, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x0C, 0x00, 0x43, 0x16, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, - 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, 0x43, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, - 0x00, 0x02, 0x00, 0x39, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x08, 0x00, 0x2E, - 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x5A, 0x00, 0x97, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x42, 0x48, 0x00, 0x00, - 0x42, 0xDC, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x90, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x10, 0x00, 0x43, 0x48, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, - 0x43, 0x48, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x43, 0x48, 0x00, 0x00, 0x00, 0x08, 0x01, 0x54, - 0x00, 0x08, 0x01, 0x55, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x08, 0x00, 0x2E, - 0xFF, 0x92, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x6E, 0x00, 0xD2, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x42, 0x96, 0x00, 0x00, - 0x43, 0x34, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x90, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x0C, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x3B, 0x5A, 0x74, 0x0E, - 0x43, 0x96, 0x00, 0x00, 0x3B, 0x5A, 0x74, 0x0E, 0x43, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, - 0x00, 0x02, 0x00, 0x39, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x08, 0x00, 0x2E, - 0xFF, 0x4C, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0xB4, 0x01, 0x36, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x42, 0x96, 0x00, 0x00, - 0x43, 0x34, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x90, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x26, 0x70, 0x43, 0x96, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x3B, 0x5A, 0x74, 0x0E, - 0x43, 0x96, 0x00, 0x00, 0x3B, 0x5A, 0x74, 0x0E, 0x43, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, - 0x00, 0x02, 0x00, 0x39, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x08, 0x00, 0x2E, - 0xFF, 0x4C, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0xB4, 0x01, 0x36, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x42, 0x96, 0x00, 0x00, - 0x42, 0xB4, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x90, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x0C, 0x00, 0x43, 0x16, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, - 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, 0x43, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, - 0x00, 0x02, 0x00, 0x39, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x08, 0x00, 0x2E, - 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x5A, 0x01, 0x68, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x13, 0x00, 0x0D, 0x42, 0x48, 0x00, 0x00, - 0x42, 0xB4, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x79, 0x99, 0x9A, 0xBE, 0xC7, 0xAE, 0x14, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x16, 0x20, 0x43, 0x48, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, - 0x43, 0x66, 0x00, 0x00, 0x3B, 0x8E, 0x78, 0x35, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3C, - 0x00, 0x08, 0x01, 0x3D, 0x00, 0x08, 0x01, 0x51, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x2D, - 0xFF, 0x7E, 0xFF, 0xF6, 0xFF, 0xC4, 0x00, 0x82, 0x00, 0xD2, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x04, 0x00, 0x14, 0x00, 0x04, 0x00, 0x04, 0x00, 0x14, 0x42, 0x96, 0x00, 0x00, - 0x42, 0xB4, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3B, 0xA3, 0xD7, 0x0A, 0x3A, 0x83, 0x12, 0x6F, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x40, 0x79, 0x99, 0x9A, 0xBE, 0xC7, 0xAE, 0x14, - 0xBE, 0x4C, 0xCC, 0xCD, 0x3C, 0xA3, 0xD7, 0x0A, 0x03, 0xE8, 0x00, 0x00, 0x3D, 0x23, 0xD7, 0x0A, - 0x3C, 0x54, 0xFD, 0xF4, 0x3E, 0x19, 0x99, 0x9A, 0x3D, 0xCC, 0xCC, 0xCD, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3D, 0x75, 0xC2, 0x8F, 0x3D, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x16, 0x20, 0x43, 0x16, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, - 0x43, 0x16, 0x00, 0x00, 0x3B, 0xDA, 0x74, 0x0E, 0x43, 0x16, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3C, - 0x00, 0x08, 0x01, 0x3D, 0x00, 0x08, 0x01, 0x51, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x2D, - 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x5A, 0x00, 0x97, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA const daObjMovebox::Hio_c::Attr_c daObjMovebox::Act_c::M_attr[8] = { + { + 0x6, 0xE, 0xA, 0x6, 0xE, 0xA, 75.0f, 90.0f, -3.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 3.9f, -0.39f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x8013C, 0x8013D, + 0x80151, 0x8002A, 0x8002D, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x97, 0x5A, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 90.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x97, 0x5A, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 50.0f, 110.0f, -5.0f, 0.005f, + 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, 0.04f, 0.013f, + 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, 0x1000, 200.0f, 200.0f, + 0.005f, 200.0f, 0.005f, 200.0f, 0x80154, 0x80155, 0x8002F, 0x8002B, 0x8002E, 0xFF92, + 0xFFFF, 0xFF92, 0x6E, 0xD2, 0x6E, 0, 1, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 180.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 300.0f, 300.0f, 0.0033333334f, 300.0f, 0.0033333334f, 300.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFF4C, 0xFFFF, 0xFF4C, 0xB4, 0x136, 0xB4, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 180.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0x2670, 300.0f, 300.0f, 0.0033333334f, 300.0f, 0.0033333334f, 300.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFF4C, 0xFFFF, 0xFF4C, 0xB4, 0x136, 0xB4, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 90.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x168, 0x5A, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 50.0f, 90.0f, -3.0f, 0.005f, + 0.001f, 0.0f, 1.8f, 3.9f, -0.39f, -0.2f, 0.02f, 0x3E8, 0.04f, 0.013f, + 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, 0x1620, 200.0f, 200.0f, + 0.005f, 230.0f, 0.0043478259f, 100.0f, 0x8013C, 0x8013D, 0x80151, 0x8002A, 0x8002D, 0xFF7E, + 0xFFF6, 0xFFC4, 0x82, 0xD2, 0x3C, 0, 1, 0, + }, + { + 0x4, 0x4, 0x14, 0x4, 0x4, 0x14, 75.0f, 90.0f, -3.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 3.9f, -0.39f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0x1620, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x8013C, 0x8013D, + 0x80151, 0x8002A, 0x8002D, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x97, 0x5A, + 0, 0, 0, + }, }; COMPILER_STRIP_GATE(0x80481168, &daObjMovebox::Act_c::M_attr); @@ -728,10 +699,11 @@ SECTION_DEAD static char const* const stringBase_804816E3 = "dummy4"; #pragma pop /* 8047E6B0-8047E6C8 000CB0 0018+00 5/5 0/0 0/0 .text attr__Q212daObjMovebox5Act_cCFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::attr() const { +asm const daObjMovebox::Hio_c::Attr_c& daObjMovebox::Act_c::attr() const { nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/attr__Q212daObjMovebox5Act_cCFv.s" } @@ -739,6 +711,7 @@ asm void daObjMovebox::Act_c::attr() const { /* 8047E6C8-8047E7B0 000CC8 00E8+00 2/2 0/0 0/0 .text set_mtx__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -750,6 +723,7 @@ asm void daObjMovebox::Act_c::set_mtx() { /* 8047E7B0-8047E7F4 000DB0 0044+00 1/1 0/0 0/0 .text init_mtx__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -761,11 +735,11 @@ asm void daObjMovebox::Act_c::init_mtx() { /* 8047E7F4-8047E92C 000DF4 0138+00 1/1 0/0 0/0 .text path_init__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::path_init() { - nofralloc +asm void daObjMovebox::Act_c::path_init(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/path_init__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -777,6 +751,7 @@ COMPILER_STRIP_GATE(0x80481668, &lit_4161); /* 8047E92C-8047EB48 000F2C 021C+00 1/1 0/0 0/0 .text path_save__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -787,11 +762,12 @@ asm void daObjMovebox::Act_c::path_save() { #pragma pop /* 8047EB48-8047EBEC 001148 00A4+00 1/0 0/0 0/0 .text CreateHeap__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::CreateHeap() { - nofralloc +// asm int daObjMovebox::Act_c::CreateHeap() { +extern "C" asm void CreateHeap__Q212daObjMovebox5Act_cFv(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/CreateHeap__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -817,6 +793,7 @@ COMPILER_STRIP_GATE(0x80481670, &lit_4215); /* 8047EBEC-8047ED10 0011EC 0124+00 1/1 0/0 0/0 .text * RideCallBack__Q212daObjMovebox5Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -829,12 +806,13 @@ asm void daObjMovebox::Act_c::RideCallBack(dBgW* param_0, fopAc_ac_c* param_1, /* 8047ED10-8047EE0C 001310 00FC+00 1/1 0/0 0/0 .text * PPCallBack__Q212daObjMovebox5Act_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::PPCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, s16 param_2, - dBgW_Base::PushPullLabel param_3) { - nofralloc +asm fopAc_ac_c* daObjMovebox::Act_c::PPCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, + s16 param_2, + dBgW_Base::PushPullLabel param_3){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/func_8047ED10.s" } #pragma pop @@ -844,16 +822,24 @@ asm void daObjMovebox::Act_c::PPCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_ #pragma push #pragma force_active on SECTION_RODATA static u8 const lit_4354[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x43, + 0x30, + 0x00, + 0x00, + 0x80, + 0x00, + 0x00, + 0x00, }; COMPILER_STRIP_GATE(0x80481678, &lit_4354); #pragma pop /* 8047EE0C-8047F11C 00140C 0310+00 1/0 0/0 0/0 .text Create__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::Create() { +asm int daObjMovebox::Act_c::Create() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/Create__Q212daObjMovebox5Act_cFv.s" } @@ -871,16 +857,18 @@ asm void daObjMovebox::Act_c::afl_sway() { #pragma pop /* 8047F38C-8047F50C 00198C 0180+00 1/1 0/0 0/0 .text check_to_walk__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::check_to_walk() { +asm int daObjMovebox::Act_c::check_to_walk() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/check_to_walk__Q212daObjMovebox5Act_cFv.s" } #pragma pop /* 8047F50C-8047F530 001B0C 0024+00 3/3 0/0 0/0 .text clr_moment_cnt__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -891,11 +879,11 @@ asm void daObjMovebox::Act_c::clr_moment_cnt() { #pragma pop /* 8047F530-8047F5CC 001B30 009C+00 1/1 0/0 0/0 .text chk_appear__Q212daObjMovebox5Act_cCFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::chk_appear() const { - nofralloc +asm bool daObjMovebox::Act_c::chk_appear() const {nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/chk_appear__Q212daObjMovebox5Act_cCFv.s" } #pragma pop @@ -919,6 +907,7 @@ static u8 scl[12]; /* 8047F5CC-8047F634 001BCC 0068+00 1/1 0/0 0/0 .text * eff_smoke_slip_start__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -929,11 +918,11 @@ asm void daObjMovebox::Act_c::eff_smoke_slip_start() { #pragma pop /* 8047F634-8047F6A8 001C34 0074+00 3/3 0/0 0/0 .text mode_wait_init__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::mode_wait_init() { - nofralloc +asm void daObjMovebox::Act_c::mode_wait_init(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/mode_wait_init__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -948,6 +937,7 @@ COMPILER_STRIP_GATE(0x80481684, &lit_4562); /* 8047F6A8-8047F8D4 001CA8 022C+00 1/0 0/0 0/0 .text mode_wait__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -958,11 +948,11 @@ asm void daObjMovebox::Act_c::mode_wait() { #pragma pop /* 8047F8D4-8047F8F4 001ED4 0020+00 1/1 0/0 0/0 .text mode_walk_init__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::mode_walk_init() { - nofralloc +asm void daObjMovebox::Act_c::mode_walk_init(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/mode_walk_init__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -1007,6 +997,7 @@ static u8 dir_vec[48]; /* 8047F8F4-8047FCBC 001EF4 03C8+00 1/0 0/0 0/0 .text mode_walk__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1017,6 +1008,7 @@ asm void daObjMovebox::Act_c::mode_walk() { #pragma pop /* 8047FCBC-8047FCE4 0022BC 0028+00 1/1 0/0 0/0 .text mode_afl_init__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1031,8 +1023,7 @@ asm void daObjMovebox::Act_c::mode_afl_init() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::mode_afl() { - nofralloc +asm void daObjMovebox::Act_c::mode_afl(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/mode_afl__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -1040,7 +1031,18 @@ asm void daObjMovebox::Act_c::mode_afl() { /* ############################################################################################## */ /* 80481704-80481710 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, }; /* 80481710-80481724 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ @@ -1097,29 +1099,27 @@ SECTION_DATA static u8 data_80481748[36] = { /* 8048176C-8048178C -00001 0020+00 1/0 0/0 0/0 .data * Mthd_Table__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@ */ static actor_method_class data_8048176C = { - (process_method_func)func_80480920, - (process_method_func)func_80480BC0, - (process_method_func)func_80480C18, - (process_method_func)func_80480C64, + (process_method_func)func_80480920, (process_method_func)func_80480BC0, + (process_method_func)func_80480C18, (process_method_func)func_80480C64, (process_method_func)func_80480C38, }; /* 8048178C-804817BC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Movebox */ extern actor_process_profile_definition g_profile_Obj_Movebox = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Movebox, // mProcName - &g_fpcLf_Method.mBase, // sub_method - sizeof(daObjMovebox), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 17, // mPriority - &data_8048176C, // sub_method - 0x00040504, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Movebox, // mProcName + &g_fpcLf_Method.mBase, // sub_method + sizeof(daObjMovebox::Act_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 17, // mPriority + &data_8048176C, // sub_method + 0x00040504, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType }; /* 804817BC-804817C8 0000B8 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ @@ -1185,6 +1185,7 @@ extern "C" asm void __dt__14dBgS_ObjGndChkFv() { #pragma pop /* 8047FF5C-80480020 00255C 00C4+00 1/1 0/0 0/0 .text sound_slip__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1195,6 +1196,7 @@ asm void daObjMovebox::Act_c::sound_slip() { #pragma pop /* 80480020-804800E4 002620 00C4+00 1/1 0/0 0/0 .text sound_limit__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1205,6 +1207,7 @@ asm void daObjMovebox::Act_c::sound_limit() { #pragma pop /* 804800E4-804801A8 0026E4 00C4+00 1/1 0/0 0/0 .text sound_land__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1216,11 +1219,11 @@ asm void daObjMovebox::Act_c::sound_land() { /* 804801A8-804801FC 0027A8 0054+00 1/1 0/0 0/0 .text vib_land__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::vib_land() { - nofralloc +asm void daObjMovebox::Act_c::vib_land(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/vib_land__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -1245,11 +1248,11 @@ SECTION_RODATA static f32 const lit_4890 = 5.0f / 3.0f; COMPILER_STRIP_GATE(0x80481694, &lit_4890); /* 804801FC-8048027C 0027FC 0080+00 1/1 0/0 0/0 .text eff_land_smoke__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::eff_land_smoke() { - nofralloc +asm void daObjMovebox::Act_c::eff_land_smoke(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/eff_land_smoke__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -1469,8 +1472,7 @@ static u8 data_80482C5C[4]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::Execute(f32 (**param_0)[3][4]) { - nofralloc +asm int daObjMovebox::Act_c::Execute(f32 (**param_0)[3][4]){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/Execute__Q212daObjMovebox5Act_cFPPA3_A4_f.s" } #pragma pop @@ -1484,10 +1486,11 @@ COMPILER_STRIP_GATE(0x804816A0, &lit_5051); #pragma pop /* 80480728-804808B4 002D28 018C+00 1/0 0/0 0/0 .text Draw__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::Draw() { +asm int daObjMovebox::Act_c::Draw() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/Draw__Q212daObjMovebox5Act_cFv.s" } @@ -1505,11 +1508,11 @@ extern "C" asm void __dt__8cM3dGPlaFv() { #pragma pop /* 804808FC-80480920 002EFC 0024+00 1/0 0/0 0/0 .text Delete__Q212daObjMovebox5Act_cFv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daObjMovebox::Act_c::Delete() { - nofralloc +asm int daObjMovebox::Act_c::Delete(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/Delete__Q212daObjMovebox5Act_cFv.s" } #pragma pop @@ -1531,6 +1534,7 @@ SECTION_DATA extern void* __vt__Q212daObjMovebox5Act_c[10] = { /* 80480920-80480AD4 002F20 01B4+00 1/0 0/0 0/0 .text * Mthd_Create__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1575,6 +1579,7 @@ extern "C" asm void __dt__10dCcD_GSttsFv() { /* 80480BC0-80480C18 0031C0 0058+00 1/0 0/0 0/0 .text * Mthd_Delete__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1586,6 +1591,7 @@ static asm void func_80480BC0() { /* 80480C18-80480C38 003218 0020+00 1/0 0/0 0/0 .text * Mthd_Execute__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1597,6 +1603,7 @@ static asm void func_80480C18() { /* 80480C38-80480C64 003238 002C+00 1/0 0/0 0/0 .text * Mthd_Draw__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1608,6 +1615,7 @@ static asm void func_80480C38() { /* 80480C64-80480C90 003264 002C+00 1/0 0/0 0/0 .text * Mthd_IsDelete__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +// matches with literals #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1660,8 +1668,7 @@ REGISTER_CTORS(0x80480CF4, __sinit_d_a_obj_movebox_cpp); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void func_80480DA0() { - nofralloc +asm void func_80480DA0(){nofralloc #include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/func_80480DA0.s" } #pragma pop diff --git a/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox_NONMATCHING.cpp b/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox_NONMATCHING.cpp new file mode 100644 index 00000000000..902c4b3fbd2 --- /dev/null +++ b/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox_NONMATCHING.cpp @@ -0,0 +1,1853 @@ +/** + * @file d_a_obj_movebox.cpp + * + */ + +#include "rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox.h" +#include "SSystem/SComponent/c_math.h" +#include "d/a/d_a_player.h" +#include "d/d_path.h" +#include "dol2asm.h" +#include "rel/d/a/obj/d_a_obj_burnbox/d_a_obj_burnbox.h" +#include "rel/d/a/obj/d_a_obj_eff/d_a_obj_eff.h" + +// +// Forward References: +// + +extern "C" void __ct__Q212daObjMovebox5Bgc_cFv(); +extern "C" void __dt__4cXyzFv(); +extern "C" void __ct__4cXyzFv(); +extern "C" void +gnd_pos__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cif(); +extern "C" void wrt_pos__Q212daObjMovebox5Bgc_cFRC4cXyz(); +extern "C" void +wall_pos__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cisf(); +extern "C" void proc_vertical__Q212daObjMovebox5Bgc_cFPQ212daObjMovebox5Act_c(); +extern "C" void +chk_wall_pre__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cis(); +extern "C" void +chk_wall_touch__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cs(); +extern "C" void +chk_wall_touch2__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cis(); +extern "C" void prm_get_swSave1__Q212daObjMovebox5Act_cCFv(); +extern "C" void prmZ_init__Q212daObjMovebox5Act_cFv(); +extern "C" void prmX_init__Q212daObjMovebox5Act_cFv(); +extern "C" void attr__Q212daObjMovebox5Act_cCFv(); +extern "C" void set_mtx__Q212daObjMovebox5Act_cFv(); +extern "C" void init_mtx__Q212daObjMovebox5Act_cFv(); +extern "C" void path_init__Q212daObjMovebox5Act_cFv(); +extern "C" void path_save__Q212daObjMovebox5Act_cFv(); +extern "C" void CreateHeap__Q212daObjMovebox5Act_cFv(); +extern "C" void RideCallBack__Q212daObjMovebox5Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); +extern "C" void +PPCallBack__Q212daObjMovebox5Act_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel(); +extern "C" void Create__Q212daObjMovebox5Act_cFv(); +extern "C" void afl_sway__Q212daObjMovebox5Act_cFv(); +extern "C" void check_to_walk__Q212daObjMovebox5Act_cFv(); +extern "C" void clr_moment_cnt__Q212daObjMovebox5Act_cFv(); +extern "C" void chk_appear__Q212daObjMovebox5Act_cCFv(); +extern "C" void eff_smoke_slip_start__Q212daObjMovebox5Act_cFv(); +extern "C" void mode_wait_init__Q212daObjMovebox5Act_cFv(); +extern "C" void mode_wait__Q212daObjMovebox5Act_cFv(); +extern "C" void mode_walk_init__Q212daObjMovebox5Act_cFv(); +extern "C" void mode_walk__Q212daObjMovebox5Act_cFv(); +extern "C" void mode_afl_init__Q212daObjMovebox5Act_cFv(); +extern "C" void mode_afl__Q212daObjMovebox5Act_cFv(); +extern "C" void __dt__14dBgS_ObjGndChkFv(); +extern "C" void sound_slip__Q212daObjMovebox5Act_cFv(); +extern "C" void sound_limit__Q212daObjMovebox5Act_cFv(); +extern "C" void sound_land__Q212daObjMovebox5Act_cFv(); +extern "C" void vib_land__Q212daObjMovebox5Act_cFv(); +extern "C" void eff_land_smoke__Q212daObjMovebox5Act_cFv(); +extern "C" void Execute__Q212daObjMovebox5Act_cFPPA3_A4_f(); +extern "C" void Draw__Q212daObjMovebox5Act_cFv(); +extern "C" void __dt__8cM3dGPlaFv(); +extern "C" void Delete__Q212daObjMovebox5Act_cFv(); +extern "C" static void func_80480920(); +extern "C" void __dt__8cM3dGCylFv(); +extern "C" void __dt__8cM3dGAabFv(); +extern "C" void __dt__10dCcD_GSttsFv(); +extern "C" static void func_80480BC0(); +extern "C" static void func_80480C18(); +extern "C" static void func_80480C38(); +extern "C" static void func_80480C64(); +extern "C" void __dt__10cCcD_GSttsFv(); +extern "C" void func_80480CD8(void* _this, fopAc_ac_c const*, daObjMovebox::Act_c::Prm_e, + daObjMovebox::Act_c::Prm_e); +extern "C" void __sinit_d_a_obj_movebox_cpp(); +extern "C" void func_80480DA0(); +extern "C" void __dt__11dBgS_WtrChkFv(); +extern "C" void func_80480E50(); +extern "C" void __ct__14dBgS_ObjGndChkFv(); +extern "C" static void func_80480EE4(); +extern "C" static void func_80480EEC(); +extern "C" static void func_80480EF4(); +extern "C" static void func_80480EFC(); +extern "C" static void func_80480F04(); +extern "C" static void func_80480F0C(); +extern "C" u8 const M_lin5__Q212daObjMovebox5Bgc_c[80]; +extern "C" u8 const M_lin20__Q212daObjMovebox5Bgc_c[368]; +extern "C" void* const M_arcname__Q212daObjMovebox5Act_c[8]; +extern "C" u8 const M_cyl_src__Q212daObjMovebox5Act_c[68]; +extern "C" u8 const M_attr__Q212daObjMovebox5Act_c[1280]; +extern "C" extern char const* const d_a_obj_movebox__stringBase0; +extern "C" u8 M_gnd_work__Q212daObjMovebox5Bgc_c[1932]; +extern "C" u8 M_wrt_work__Q212daObjMovebox5Bgc_c[84]; +extern "C" u8 M_wall_work__Q212daObjMovebox5Bgc_c[2576]; + +// +// External References: +// + +extern "C" void mDoMtx_XrotS__FPA4_fs(); +extern "C" void mDoMtx_XrotM__FPA4_fs(); +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 transM__14mDoMtx_stack_cFRC4cXyz(); +extern "C" void scaleM__14mDoMtx_stack_cFfff(); +extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); +extern "C" void quatM__14mDoMtx_stack_cFPC10Quaternion(); +extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); +extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); +extern "C" void fopAcM_delete__FP10fopAc_ac_c(); +extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); +extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); +extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); +extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); +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 posMoveF_stream__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzff(); +extern "C" void quat_rotBaseY__5daObjFP10QuaternionRC4cXyz(); +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 dPath_GetPnt__FPC5dPathi(); +extern "C" void dPath_GetRoomPath__Fii(); +extern "C" void setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj(); +extern "C" void StartShock__12dVibration_cFii4cXyz(); +extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); +extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); +extern "C" void GetActorPointer__4cBgSCFi(); +extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); +extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); +extern "C" void SplGrpChk__4dBgSFP14dBgS_SplGrpChk(); +extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); +extern "C" void dBgS_MoveBGProc_Trans__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); +extern "C" void RideCallBack__4dBgSFRC13cBgS_PolyInfoP10fopAc_ac_c(); +extern "C" void __ct__11dBgS_GndChkFv(); +extern "C" void __dt__11dBgS_GndChkFv(); +extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); +extern "C" void __ct__14dBgS_ObjLinChkFv(); +extern "C" void __dt__14dBgS_ObjLinChkFv(); +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__14dBgS_SplGrpChkFR4cXyzf(); +extern "C" void __dt__14dBgS_SplGrpChkFv(); +extern "C" void SetObj__16dBgS_PolyPassChkFv(); +extern "C" void __ct__11dBgS_WtrChkFv(); +extern "C" void Move__4dBgWFv(); +extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); +extern "C" void __ct__10dCcD_GSttsFv(); +extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); +extern "C" void __ct__12dCcD_GObjInfFv(); +extern "C" void ChkTgHit__12dCcD_GObjInfFv(); +extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); +extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); +extern "C" void MoveCTg__8dCcD_CylFR4cXyz(); +extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); +extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); +extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo(); +extern "C" void Set__4cCcSFP8cCcD_Obj(); +extern "C" void __pl__4cXyzCFRC3Vec(); +extern "C" void cM_rnd__Fv(); +extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); +extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); +extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); +extern "C" void __dl__FPv(); +extern "C" void __destroy_arr(); +extern "C" void __construct_array(); +extern "C" void __ptmf_scall(); +extern "C" void _savegpr_15(); +extern "C" void _savegpr_20(); +extern "C" void _savegpr_24(); +extern "C" void _savegpr_25(); +extern "C" void _savegpr_26(); +extern "C" void _savegpr_27(); +extern "C" void _savegpr_28(); +extern "C" void _savegpr_29(); +extern "C" void _restgpr_15(); +extern "C" void _restgpr_20(); +extern "C" void _restgpr_24(); +extern "C" void _restgpr_25(); +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" f32 Zero__4cXyz[3]; +extern "C" u8 BaseY__4cXyz[12]; +extern "C" u8 sincosTable___5JMath[65536]; +extern "C" u8 mEcallback__18dPa_modelEcallBack[4]; +extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; +extern "C" void* M_dir_base__Q212daObjMovebox5Act_c[2]; +extern "C" void __register_global_object(); + +// +// Declarations: +// + +/* 80481704-80481710 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ +SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 80481710-80481724 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ +#pragma push +#pragma force_active on +SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { + 0x02000201, + /* padding */ + 0x40080000, + 0x00000000, + 0x3FE00000, + 0x00000000, +}; +#pragma pop + +/* ############################################################################################## */ +/* 80480F28-80480F78 000000 0050+00 14/14 0/0 0/0 .rodata M_lin5__Q212daObjMovebox5Bgc_c */ +const daObjMovebox::BgcSrc_c daObjMovebox::Bgc_c::M_lin5[] = { + {0.0f, 0.0f, 0.0f, 0.0f}, {-0.5f, -0.5f, 1.0f, 1.0f}, {0.5f, -0.5f, -1.0f, 1.0f}, + {0.5f, 0.5f, -1.0f, -1.0f}, {-0.5f, 0.5f, 1.0f, -1.0f}, +}; + +/* 80480F78-804810E8 000050 0170+00 0/4 0/0 0/0 .rodata M_lin20__Q212daObjMovebox5Bgc_c */ +SECTION_RODATA const daObjMovebox::BgcSrc_c daObjMovebox::Bgc_c::M_lin20[] = { + {0.0f, 0.0f, 0.0f, 0.0f}, {-0.25f, -0.25f, 0.0f, 0.0f}, {-0.5f, -0.5f, 1.0f, 1.0f}, + {0.0f, -0.5f, -1.0f, 1.0f}, {0.0f, 0.0f, -1.0f, -1.0f}, {-0.5f, 0.0f, 1.0f, -1.0f}, + {0.25f, -0.25f, 0.0f, 0.0f}, {0.0f, -0.5f, 1.0f, 1.0f}, {0.5f, -0.5f, -1.0f, 1.0f}, + {0.5f, 0.0f, -1.0f, -1.0f}, {0.0f, 0.0f, 1.0f, -1.0f}, {0.25f, 0.25f, 0.0f, 0.0f}, + {0.0f, 0.0f, 1.0f, 1.0f}, {0.5f, 0.0f, -1.0f, 1.0f}, {0.5f, 0.5f, -1.0f, -1.0f}, + {0.0f, 0.5f, 1.0f, -1.0f}, {-0.25f, 0.25f, 0.0f, 0.0f}, {-0.5f, 0.0f, 1.0f, 1.0f}, + {0.0f, 0.0f, -1.0f, 1.0f}, {0.0f, 0.5f, -1.0f, -1.0f}, {-0.5f, 0.5f, 1.0f, -1.0f}, + {-0.75f, 0.25f, 0.0f, 0.0f}, {-0.75f, -0.25f, 0.0f, 0.0f}, +}; + +/* 8047DAEC-8047DBB0 0000EC 00C4+00 1/1 0/0 0/0 .text __ct__Q212daObjMovebox5Bgc_cFv */ +daObjMovebox::Bgc_c::Bgc_c() { + for (int i = 0; i < 23; i++) { + field_0x0[i] = 0.0f; + field_0x64[i] = cXyz::Zero; + } + + field_0x5c = 0xFFFFFFFF; + field_0x178 = 0xFFFFFFFF; + field_0x17c = FLT_MAX; + field_0x60 = 0.0f; + mState = STATE_0_e; +} + +/* 80481888-8048188C 000008 0001+03 4/4 0/0 0/0 .bss @1109 */ +static u8 lit_1109[1 + 3 /* padding */]; + +/* 8048188C-80481890 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ +#pragma push +#pragma force_active on +static u8 lit_1107[1 + 3 /* padding */]; +#pragma pop + +/* 80481890-80481894 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ +#pragma push +#pragma force_active on +static u8 lit_1105[1 + 3 /* padding */]; +#pragma pop + +/* 80481894-80481898 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ +#pragma push +#pragma force_active on +static u8 lit_1104[1 + 3 /* padding */]; +#pragma pop + +/* 80481898-8048189C 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ +#pragma push +#pragma force_active on +static u8 lit_1099[1 + 3 /* padding */]; +#pragma pop + +/* 8048189C-804818A0 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ +#pragma push +#pragma force_active on +static u8 lit_1097[1 + 3 /* padding */]; +#pragma pop + +/* 804818A0-804818A4 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ +#pragma push +#pragma force_active on +static u8 lit_1095[1 + 3 /* padding */]; +#pragma pop + +/* 804818A4-804818A8 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ +#pragma push +#pragma force_active on +static u8 lit_1094[1 + 3 /* padding */]; +#pragma pop + +/* 804818A8-804818AC 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ +#pragma push +#pragma force_active on +static u8 lit_1057[1 + 3 /* padding */]; +#pragma pop + +/* 804818AC-804818B0 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ +#pragma push +#pragma force_active on +static u8 lit_1055[1 + 3 /* padding */]; +#pragma pop + +/* 804818B0-804818B4 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ +#pragma push +#pragma force_active on +static u8 lit_1053[1 + 3 /* padding */]; +#pragma pop + +/* 804818B4-804818B8 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ +#pragma push +#pragma force_active on +static u8 lit_1052[1 + 3 /* padding */]; +#pragma pop + +/* 804818B8-804818BC 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ +#pragma push +#pragma force_active on +static u8 lit_1014[1 + 3 /* padding */]; +#pragma pop + +/* 804818BC-804818C0 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ +#pragma push +#pragma force_active on +static u8 lit_1012[1 + 3 /* padding */]; +#pragma pop + +/* 804818C0-804818C4 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ +#pragma push +#pragma force_active on +static u8 lit_1010[1 + 3 /* padding */]; +#pragma pop + +/* 804818C4-804818C8 000044 0001+03 0/0 0/0 0/0 .bss @1009 */ +#pragma push +#pragma force_active on +static u8 lit_1009[1 + 3 /* padding */]; +#pragma pop + +/* 804818D4-80482060 000054 078C+00 7/8 0/0 0/0 .bss M_gnd_work__Q212daObjMovebox5Bgc_c + */ +dBgS_ObjGndChk daObjMovebox::Bgc_c::M_gnd_work[23]; + +/* 8047DBF0-8047DD88 0001F0 0198+00 1/1 0/0 0/0 .text + * gnd_pos__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cif */ +void daObjMovebox::Bgc_c::gnd_pos(const daObjMovebox::Act_c* i_actor, + const daObjMovebox::BgcSrc_c* i_bgcSrc, int i_checkNum, + f32 param_3) { + cXyz sp50; + cXyz sp5C; + f32 var_f31 = -1000000000.0f; + + mDoMtx_stack_c::transS(i_actor->current.pos); + mDoMtx_stack_c::YrotM(i_actor->home.angle.y); + field_0x5c = -1; + + for (int i = 0; i < i_checkNum; i++, i_bgcSrc++) { + sp50.set(i_bgcSrc->field_0xc + i_bgcSrc->field_0x4 * i_actor->attr().field_0x70, param_3, + i_bgcSrc->field_0x8 + i_bgcSrc->field_0x0 * i_actor->attr().field_0x78); + + mDoMtx_stack_c::multVec(&sp50, &sp5C); + M_gnd_work[i].SetPos(&sp5C); + M_gnd_work[i].SetActorPid(i_actor->mBase.mBsPcId); + field_0x0[i] = dComIfG_Bgsp().GroundCross(&M_gnd_work[i]); + + if (field_0x0[i] > var_f31) { + fopAc_ac_c* bg_actor = dComIfG_Bgsp().GetActorPointer(M_gnd_work[i]); + if (bg_actor == NULL || fopAcM_GetName(bg_actor) != PROC_Obj_Movebox || + ((daObjMovebox::Act_c*)bg_actor)->field_0x5ac != 2) + { + var_f31 = field_0x0[i]; + field_0x5c = i; + } + } + } +} + +/* 8048206C-804820C0 0007EC 0054+00 1/2 0/0 0/0 .bss M_wrt_work__Q212daObjMovebox5Bgc_c + */ +dBgS_WtrChk daObjMovebox::Bgc_c::M_wrt_work; + +/* 8047DD88-8047DE58 000388 00D0+00 1/1 0/0 0/0 .text wrt_pos__Q212daObjMovebox5Bgc_cFRC4cXyz */ +void daObjMovebox::Bgc_c::wrt_pos(cXyz const& param_0) { + cXyz sp28(param_0); + + f32 var_f31 = param_0.y + 400.0f; + sp28.y -= 100.0f; + + M_wrt_work.Set(sp28, var_f31); + + if (dComIfG_Bgsp().WaterChk(&M_wrt_work)) { + field_0x60 = M_wrt_work.GetHeight(); + + cLib_onBit(mState, STATE_8_e); + if (field_0x60 > param_0.y) { + cLib_onBit(mState, STATE_10_e); + } + } +} + +/* 804820CC-80482ADC 00084C 0A10+00 3/4 0/0 0/0 .bss M_wall_work__Q212daObjMovebox5Bgc_c + */ +dBgS_ObjLinChk daObjMovebox::Bgc_c::M_wall_work[23]; + +/* 8047DE58-8047E134 000458 02DC+00 1/1 0/0 0/0 .text + * wall_pos__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cisf */ +void daObjMovebox::Bgc_c::wall_pos(daObjMovebox::Act_c const* i_actor, + daObjMovebox::BgcSrc_c const* i_bgcSrc, int i_num, s16 param_3, + f32 param_4) { + const s16 sp8C = i_actor->home.angle.y + param_3; + + cXyz sp48; + cXyz sp54; + cXyz sp60; + cXyz sp6C; + cXyz sp78; + + field_0x178 = -1; + field_0x17c = FLT_MAX; + + mDoMtx_stack_c::YrotS(sp8C); + mDoMtx_stack_c::XrotM(0x4000); + mDoMtx_stack_c::multVec(&cXyz::BaseY, &sp6C); + sp6C *= param_4 + i_actor->attr().field_0x78 * 0.5f; + + for (int i = 0; i < i_num; i++, i_bgcSrc++) { + mDoMtx_stack_c::XrotS(0x4000); + sp78.set(i_bgcSrc->field_0xc, 0.0f, i_bgcSrc->field_0x8); + mDoMtx_stack_c::multVec(&sp78, &sp60); + + mDoMtx_stack_c::YrotS(sp8C); + mDoMtx_stack_c::transM(sp60); + mDoMtx_stack_c::scaleM(i_actor->attr().field_0x70, i_actor->attr().field_0x64, + i_actor->attr().field_0x70); + mDoMtx_stack_c::transM(0.0f, 0.5f, 0.0f); + mDoMtx_stack_c::XrotM(0x4000); + + sp78.set(i_bgcSrc->field_0x4, 0.0f, i_bgcSrc->field_0x0); + mDoMtx_stack_c::multVec(&sp78, &sp48); + sp48 += i_actor->current.pos; + sp54 = sp48 + sp6C; + + M_wall_work[i].Set(&sp48, &sp54, i_actor); + M_wall_work[i].SetActorPid(i_actor->mBase.mBsPcId); + + if (dComIfG_Bgsp().LineCross(&M_wall_work[i])) { + field_0x64[i] = M_wall_work[i].i_GetCross(); + + f32 var_f31 = sp48.abs2(field_0x64[i]); + if (var_f31 < field_0x17c) { + field_0x17c = var_f31; + field_0x178 = i; + } + } else { + field_0x64[i] = cXyz::Zero; + } + } +} + +/* 8047E134-8047E2D4 000734 01A0+00 2/2 0/0 0/0 .text + * proc_vertical__Q212daObjMovebox5Bgc_cFPQ212daObjMovebox5Act_c */ +void daObjMovebox::Bgc_c::proc_vertical(daObjMovebox::Act_c* i_actor) { + State_e var_r29 = mState; + mState = STATE_0_e; + + int check_num = i_actor->attr().field_0x9e ? 21 : 5; + const BgcSrc_c* pbgc = i_actor->attr().field_0x9e ? M_lin20 : M_lin5; + + gnd_pos(i_actor, pbgc, check_num, 100.0f); + + if (field_0x5c >= 0 && field_0x0[field_0x5c] > i_actor->current.pos.y) { + i_actor->current.pos.y = field_0x0[field_0x5c]; + cLib_onBit(mState, STATE_1_e); + i_actor->speed.y = 0.0f; + } + + wrt_pos(i_actor->current.pos); + + if (cLib_checkBit(mState, STATE_8_e) && field_0x60 > i_actor->current.pos.y) { + cLib_onBit(mState, STATE_10_e); + } + + if (!cLib_checkBit(mState, STATE_1_e) && cLib_checkBit(var_r29, STATE_1_e)) { + cLib_onBit(mState, STATE_2_e); + i_actor->speed.y = i_actor->attr().mFallYInitSpeed; + } + + if (cLib_checkBit(mState, STATE_1_e) && !cLib_checkBit(var_r29, STATE_1_e)) { + cLib_onBit(mState, STATE_4_e); + } + + if (cLib_checkBit(mState, STATE_10_e) && !cLib_checkBit(var_r29, STATE_10_e)) + { + cLib_onBit(mState, STATE_20_e); + } + + if (cLib_checkBit(mState, STATE_1_e) && field_0x5c >= 0) { + dComIfG_Bgsp().RideCallBack(M_gnd_work[field_0x5c], i_actor); + } +} + +/* 8047E2D4-8047E350 0008D4 007C+00 2/2 0/0 0/0 .text + * chk_wall_pre__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cis */ +bool daObjMovebox::Bgc_c::chk_wall_pre(daObjMovebox::Act_c const* i_actor, + daObjMovebox::BgcSrc_c const* i_bgcSrc, int i_num, + s16 param_3) { + wall_pos(i_actor, i_bgcSrc, i_num, param_3, i_actor->attr().mUnitDistance - 1.0f); + return field_0x178 >= 0; +} + +/* 8047E350-8047E5A0 000950 0250+00 1/1 0/0 0/0 .text + * chk_wall_touch__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cs */ +bool daObjMovebox::Bgc_c::chk_wall_touch(daObjMovebox::Act_c const* i_actor, + daObjMovebox::BgcSrc_c const* i_bgcSrc, s16 param_2) { + static dBgS_ObjLinChk touch_work; + + const s16 sp8C = i_actor->home.angle.y + param_2; + + cXyz sp38; + cXyz sp44; + cXyz sp50; + cXyz sp5C; + cXyz sp68; + + mDoMtx_stack_c::YrotS(sp8C); + mDoMtx_stack_c::XrotM(0x4000); + sp50.set(i_bgcSrc->field_0xc, 0.0f, i_bgcSrc->field_0x8); + mDoMtx_stack_c::multVec(&cXyz::BaseY, &sp68); + sp68 *= i_actor->attr().field_0x70 * 0.5f + 10.0f; + + mDoMtx_stack_c::XrotM(0x4000); + sp50.set(i_bgcSrc->field_0xc, 0.0f, i_bgcSrc->field_0x8); + mDoMtx_stack_c::multVec(&sp50, &sp5C); + mDoMtx_stack_c::YrotS(sp8C); + + mDoMtx_stack_c::transM(sp5C); + mDoMtx_stack_c::scaleM(i_actor->attr().field_0x70, i_actor->attr().field_0x64, + i_actor->attr().field_0x70); + mDoMtx_stack_c::transM(0.0f, 0.5f, 0.0f); + mDoMtx_stack_c::XrotM(0x4000); + + sp50.set(i_bgcSrc->field_0x4, 0.0f, i_bgcSrc->field_0x0); + mDoMtx_stack_c::multVec(&sp50, &sp38); + sp38 += i_actor->current.pos; + sp44 = sp38 + sp68; + + touch_work.SetActorPid(i_actor->mBase.mBsPcId); + touch_work.Set(&sp38, &sp44, i_actor); + return dComIfG_Bgsp().LineCross(&touch_work); +} + +/* 8047E5A0-8047E628 000BA0 0088+00 1/1 0/0 0/0 .text + * chk_wall_touch2__Q212daObjMovebox5Bgc_cFPCQ212daObjMovebox5Act_cPCQ212daObjMovebox8BgcSrc_cis */ +bool daObjMovebox::Bgc_c::chk_wall_touch2(daObjMovebox::Act_c const* i_actor, + daObjMovebox::BgcSrc_c const* i_bgcSrc, int i_num, + s16 param_3) { + bool chk = false; + for (int i = 0; i < i_num; i++) { + if (chk_wall_touch(i_actor, &i_bgcSrc[i], param_3)) { + chk = true; + break; + } + } + + return chk; +} + +/* 8047E628-8047E650 000C28 0028+00 4/4 0/0 0/0 .text prm_get_swSave1__Q212daObjMovebox5Act_cCFv + */ +int daObjMovebox::Act_c::prm_get_swSave1() const { + return prm_get_swSave(); +} + +/* 8047E650-8047E680 000C50 0030+00 1/1 0/0 0/0 .text prmZ_init__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::prmZ_init() { + if (!field_0x900) { + field_0x900 = 1; + + if (prm_get_dmy()) { + mPrmZ = 0xFFFF; + } else { + mPrmZ = home.angle.z; + } + + home.angle.z = 0; + current.angle.z = 0; + shape_angle.z = 0; + } +} + +/* 8047E680-8047E6B0 000C80 0030+00 1/1 0/0 0/0 .text prmX_init__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::prmX_init() { + if (!field_0x901) { + mPrmX = home.angle.x; + field_0x901 = 1; + } + + home.angle.x = 0; + current.angle.x = 0; + shape_angle.x = 0; +} + +/* 80481104-80481124 -00001 0020+00 3/3 0/0 0/0 .rodata M_arcname__Q212daObjMovebox5Act_c + */ +SECTION_RODATA const char* daObjMovebox::Act_c::M_arcname[8] = { + "Kkiba_00", "Osiblk", "H_Box20", "A_SMBlock", "P_Lv4blk", "P_Lv4blk2", "H_OsiHaka", "dummy4", +}; + +/* 80481124-80481168 0001FC 0044+00 0/1 0/0 0/0 .rodata M_cyl_src__Q212daObjMovebox5Act_c + */ +const dCcD_SrcCyl daObjMovebox::Act_c::M_cyl_src = { + { + 0, + {{0, 0, 0}, {0xD8FAFDBF, 0x11}, {0x78}}, // mObj + {dCcD_SE_NONE, 0, 0, 0, 0}, // mGObjAt + {dCcD_SE_NONE, 0, 0, 0, 0}, // mGObjTg + {0}, // mGObjCo + }, // mObjInf + { + {0.0f, 0.0f, 0.0f}, // mCenter + 75.0f, // mRadius + 150.0f, // mHeight + } // mCyl +}; + +/* 80481168-80481668 000240 0500+00 6/18 0/0 0/0 .rodata M_attr__Q212daObjMovebox5Act_c */ +const daObjMovebox::Hio_c::Attr_c daObjMovebox::Act_c::M_attr[8] = { + { + 0x6, 0xE, 0xA, 0x6, 0xE, 0xA, 75.0f, 90.0f, -3.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 3.9f, -0.39f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x8013C, 0x8013D, + 0x80151, 0x8002A, 0x8002D, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x97, 0x5A, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 90.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x97, 0x5A, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 50.0f, 110.0f, -5.0f, 0.005f, + 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, 0.04f, 0.013f, + 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, 0x1000, 200.0f, 200.0f, + 0.005f, 200.0f, 0.005f, 200.0f, 0x80154, 0x80155, 0x8002F, 0x8002B, 0x8002E, 0xFF92, + 0xFFFF, 0xFF92, 0x6E, 0xD2, 0x6E, 0, 1, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 180.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 300.0f, 300.0f, 0.0033333334f, 300.0f, 0.0033333334f, 300.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFF4C, 0xFFFF, 0xFF4C, 0xB4, 0x136, 0xB4, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 180.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0x2670, 300.0f, 300.0f, 0.0033333334f, 300.0f, 0.0033333334f, 300.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFF4C, 0xFFFF, 0xFF4C, 0xB4, 0x136, 0xB4, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 75.0f, 90.0f, -5.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 4.5f, -0.5f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0xC00, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x20038, 0x20039, + 0x8002F, 0x8002B, 0x8002E, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x168, 0x5A, + 0, 0, 0, + }, + { + 0x8, 0x13, 0xD, 0x8, 0x13, 0xD, 50.0f, 90.0f, -3.0f, 0.005f, + 0.001f, 0.0f, 1.8f, 3.9f, -0.39f, -0.2f, 0.02f, 0x3E8, 0.04f, 0.013f, + 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, 0x1620, 200.0f, 200.0f, + 0.005f, 230.0f, 0.0043478259f, 100.0f, 0x8013C, 0x8013D, 0x80151, 0x8002A, 0x8002D, 0xFF7E, + 0xFFF6, 0xFFC4, 0x82, 0xD2, 0x3C, 0, 1, 0, + }, + { + 0x4, 0x4, 0x14, 0x4, 0x4, 0x14, 75.0f, 90.0f, -3.0f, + 0.005f, 0.001f, 0.0f, 1.8f, 3.9f, -0.39f, -0.2f, 0.02f, 0x3E8, + 0.04f, 0.013f, 0.15f, 0.1f, 0.1f, 0.06f, 0.075f, 4, 7, + 0x1620, 150.0f, 150.0f, 0.0066666668f, 150.0f, 0.0066666668f, 150.0f, 0x8013C, 0x8013D, + 0x80151, 0x8002A, 0x8002D, 0xFFA6, 0xFFFF, 0xFFA6, 0x5A, 0x97, 0x5A, + 0, 0, 0, + }, +}; + +/* 8047E6B0-8047E6C8 000CB0 0018+00 5/5 0/0 0/0 .text attr__Q212daObjMovebox5Act_cCFv */ +const daObjMovebox::Hio_c::Attr_c& daObjMovebox::Act_c::attr() const { + return M_attr[mType]; +} + +/* 8047E6C8-8047E7B0 000CC8 00E8+00 2/2 0/0 0/0 .text set_mtx__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::set_mtx() { + bool var_r29 = field_0x5ac == 2; + + mDoMtx_stack_c::transS(current.pos); + + if (var_r29) { + cXyz sp28(field_0x8c8, 1.0f, field_0x8cc); + mDoMtx_stack_c::transM(0.0f, field_0x8d8, 0.0f); + + Quaternion quat; + daObj::quat_rotBaseY(&quat, sp28); + mDoMtx_stack_c::quatM(&quat); + } + + mDoMtx_stack_c::ZXYrotM(shape_angle); + + if (var_r29) { + mDoMtx_stack_c::transM(0.0f, -field_0x8d8, 0.0f); + } + + if (mpModel != NULL) { + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } + + cMtx_copy(mDoMtx_stack_c::get(), mBgMtx); +} + +/* 8047E7B0-8047E7F4 000DB0 0044+00 1/1 0/0 0/0 .text init_mtx__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::init_mtx() { + if (mpModel != NULL) { + mpModel->setBaseScale(scale); + } + + set_mtx(); +} + +/* 8047E7F4-8047E92C 000DF4 0138+00 1/1 0/0 0/0 .text path_init__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::path_init() { + int path_id = prmZ_get_pathId(); + int sw1 = prm_get_swSave1(); + + if (path_id != 0xFF && sw1 != 0xFF) { + int sw2 = prmZ_get_swSave2(); + bool is_sw1 = is_switch1(); + bool var_r22 = sw2 == 0xFF ? false : is_switch2(); + + int pnt_no = 0; + if (is_sw1) { + pnt_no++; + } + + if (var_r22) { + pnt_no += 2; + } + + mpPath = dPath_GetRoomPath(path_id, fopAcM_GetHomeRoomNo(this)); + dStage_dPnt_c* point = dPath_GetPnt(mpPath, pnt_no); + home.pos.set(point->m_position); + current.pos.set(point->m_position); + } +} + +/* 8047E92C-8047EB48 000F2C 021C+00 1/1 0/0 0/0 .text path_save__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::path_save() { + int path_id = prmZ_get_pathId(); + int sw1 = prm_get_swSave1(); + u8 answer = prm_get_answer(); + + if (path_id != 0xFF && sw1 != 0xFF) { + int sw2 = prmZ_get_swSave2(); + + int var_r27 = sw2 == 0xFF ? 2 : 4; + if (var_r27 > mpPath->m_num) { + var_r27 = mpPath->m_num; + } + + int var_r29 = 0; + for (; var_r29 < var_r27; var_r29++) { + dStage_dPnt_c* pnt = dPath_GetPnt(mpPath, var_r29); + cXyz sp38; + sp38.set(pnt->m_position); + + if (current.pos.abs2(sp38) < 9.0f) { + break; + } + } + + if (var_r29 < var_r27) { + if (var_r29 & 1) { + on_switch1(); + } else { + off_switch1(); + } + + if (sw2 != 0xFF) { + if (var_r29 & 2) { + on_switch2(); + } else { + off_switch2(); + } + } + } + + if (answer != 0xF) { + int var_r28 = 0; + if (is_switch1()) { + var_r28++; + } + + if (is_switch2()) { + var_r28 += 2; + } + + if (answer == var_r28) { + mpBgW->OffPushPullOk(); + } + } + } +} + +/* 8047EB48-8047EBEC 001148 00A4+00 1/0 0/0 0/0 .text CreateHeap__Q212daObjMovebox5Act_cFv */ +int daObjMovebox::Act_c::CreateHeap() { + BOOL var_r29 = true; + + if (i_attr().field_0x58 >= 0) { + J3DModelData* modelData = + (J3DModelData*)dComIfG_getObjectRes(M_arcname[mType], i_attr().field_0x58); + JUT_ASSERT(modelData != 0); + + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + var_r29 = mpModel != NULL; + } else { + mpModel = NULL; + } + + return var_r29; +} + +/* 8047EBEC-8047ED10 0011EC 0124+00 1/1 0/0 0/0 .text + * RideCallBack__Q212daObjMovebox5Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +void daObjMovebox::Act_c::RideCallBack(dBgW* i_bgw, fopAc_ac_c* i_actor, fopAc_ac_c* i_rideActor) { + i_bgw; // affects stack + Act_c* a_this = (Act_c*)i_actor; + + if (a_this->field_0x5ac == 2) { + f32 var_f31; + f32 var_f30; + f32 var_f26; + f32 var_f29; + f32 var_f28; + f32 var_f27; + + var_f26 = a_this->i_attr().mPlayerGravity + a_this->i_attr().mMiscGravity; + var_f29 = i_rideActor->current.pos.x - a_this->current.pos.x; + var_f28 = i_rideActor->current.pos.z - a_this->current.pos.z; + + if (fopAcM_GetProfName(i_rideActor) == PROC_ALINK) { + var_f30 = a_this->i_attr().mPlayerGravity; + var_f27 = a_this->i_attr().field_0x74 * a_this->i_attr().mPlayerTiltPower; + } else { + var_f30 = a_this->i_attr().mMiscGravity; + var_f27 = a_this->i_attr().field_0x74 * a_this->i_attr().mMiscTiltPower; + } + + var_f31 = 1.0f - (JMAFastSqrt(var_f29 * var_f29 + var_f28 * var_f28) * + a_this->i_attr().field_0x74); + var_f31 = (var_f31 * 0.9f) + 0.1f; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + + var_f30 *= var_f31; + + a_this->field_0x8bc += var_f30; + if (a_this->field_0x8bc < var_f26) { + a_this->field_0x8bc = var_f26; + } + + a_this->field_0x8c0 += var_f27 * var_f29; + a_this->field_0x8c4 += var_f27 * var_f28; + } else if (fopAcM_GetProfName(i_rideActor) == PROC_Obj_Movebox) { + cLib_onBit(a_this->mBgc.mState, + daObjMovebox::Bgc_c::STATE_40_e); + } +} + +enum MOVE_DIR { + DIR_SOUTH, + DIR_EAST, + DIR_NORTH, + DIR_WEST, +}; + +/* 8047ED10-8047EE0C 001310 00FC+00 1/1 0/0 0/0 .text + * PPCallBack__Q212daObjMovebox5Act_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel */ +fopAc_ac_c* daObjMovebox::Act_c::PPCallBack(fopAc_ac_c* i_bgActor, fopAc_ac_c* i_pushActor, + s16 i_angle, dBgW_Base::PushPullLabel i_pplabel) { + Act_c* a_this = (Act_c*)i_bgActor; + dBgW::PushPullLabel var_r26 = cLib_checkBit( + i_pplabel, (dBgW::PushPullLabel)(dBgW::PPLABEL_PUSH | dBgW::PPLABEL_PULL)); + + bool sp34; + if (a_this->i_attr().field_0x9e) { + sp34 = cLib_checkBit(i_pplabel, dBgW::PPLABEL_HEAVY) != 0; + } else { + sp34 = true; + } + + if (var_r26 != 0 && sp34) { + s16 var_r29 = (s16)(cLib_checkBit(var_r26, dBgW::PPLABEL_PULL) ? + i_angle - 0x8000 : + i_angle) - + a_this->home.angle.y; + + a_this->mPPLabel = i_pplabel; + + int move_dir; + if (var_r29 >= -0x2000 && var_r29 < 0x2000) { + move_dir = DIR_SOUTH; + } else if (var_r29 >= 0x2000 && var_r29 < 0x6000) { + move_dir = DIR_EAST; + } else if (var_r29 >= 0x6000 || var_r29 < -0x6000) { + move_dir = DIR_NORTH; + } else { + move_dir = DIR_WEST; + } + + for (int i = 0; i < 4; i++) { + if (i == move_dir) { + a_this->field_0x8f0[i]++; + } else { + a_this->field_0x8f0[i] = 0; + } + } + + a_this->field_0x8fe = 1; + } +} + +/* 8047EE0C-8047F11C 00140C 0310+00 1/0 0/0 0/0 .text Create__Q212daObjMovebox5Act_cFv */ +int daObjMovebox::Act_c::Create() { + field_0x8b8 = 0; + field_0x8bc = 0.0f; + field_0x8c0 = 0.0f; + field_0x8c4 = 0.0f; + field_0x8c8 = 0.0f; + field_0x8cc = 0.0f; + field_0x8d0 = 0.0f; + field_0x8d4 = 0.0f; + field_0x8d8 = i_attr().field_0x68 * 0.5f; + field_0x8dc = 0; + field_0x8e0 = 0; + field_0x8e4 = 0.0f; + field_0x8e8 = -1; + mPPLabel = dBgW::PPLABEL_NONE; + + clr_moment_cnt(); + + field_0x8f8 = 0; + field_0x8fa = 0; + field_0x8fc = 20; + field_0x8fe = 0; + + mpBgW->SetRideCallback(RideCallBack); + mpBgW->SetPushPullCallback(PPCallBack); + + mCcStts.Init(0xFF, 0xFF, this); + mCcCyl.Set(M_cyl_src); + mCcCyl.SetStts(&mCcStts); + mCcCyl.SetTgVec(const_cast(cXyz::Zero)); + mCcCyl.OnTgNoHitMark(); + mCcCyl.OffCoSPrmBit(1); + + fopAcM_SetMtx(this, mBgMtx); + + fopAcM_setCullSizeBox(this, i_attr().field_0x90, i_attr().field_0x92, i_attr().field_0x94, + i_attr().field_0x96, i_attr().field_0x98, i_attr().field_0x9a); + fopAcM_SetSpeedF(this, 0.0f); + fopAcM_SetGravity(this, i_attr().mGravity); + fopAcM_posMoveF(this, NULL); + + mBgc.proc_vertical(this); + cLib_offBit( + mBgc.mState, (daObjMovebox::Bgc_c::State_e)(daObjMovebox::Bgc_c::STATE_20_e | + daObjMovebox::Bgc_c::STATE_4_e | + daObjMovebox::Bgc_c::STATE_2_e)); + field_0x902 = 1; + mReverb = dComIfGp_getReverb(home.roomNo); + + u8 answer = prm_get_answer(); + int var_r30 = 0; + if (is_switch1()) { + var_r30++; + } + + if (is_switch2()) { + var_r30 += 2; + } + + if (answer != 0xF && answer == var_r30) { + mpBgW->OffPushPullOk(); + } + + init_mtx(); + mpBgW->Move(); + field_0x904 = 0; + eyePos = current.pos; + + mode_wait_init(); + return 1; +} + +/* 8047F11C-8047F38C 00171C 0270+00 1/1 0/0 0/0 .text afl_sway__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::afl_sway() { + f32 var_f31 = field_0x8c0 * field_0x8c0 + field_0x8c4 * field_0x8c4; + f32 var_f29 = i_attr().mMaxTiltPower * i_attr().mMaxTiltPower; + + const BgcSrc_c* pbgc = i_attr().field_0x9e ? mBgc.M_lin20 : mBgc.M_lin5; + int check_num = i_attr().field_0x9e ? 21 : 5; + + bool var_r22 = true; + if (!mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[0]) && + !mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[2])) + { + var_r22 = false; + } + + bool var_r21 = true; + if (!mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[1]) && + !mBgc.chk_wall_touch2(this, pbgc, check_num, M_dir_base[3])) + { + var_r21 = false; + } + + if (var_f31 > var_f29) { + f32 var_f30 = i_attr().mMaxTiltPower / JMAFastSqrt(var_f31); + field_0x8c0 *= var_f30; + field_0x8c4 *= var_f30; + } + + f32 var_f24 = field_0x8c8 - field_0x8c0; + f32 var_f23 = field_0x8cc - field_0x8c4; + + f32 var_f28 = i_attr().mTiltSpringFactor * -var_f24; + f32 var_f27 = i_attr().mTiltSpringFactor * -var_f23; + f32 var_f26 = field_0x8d0 * -i_attr().mTiltViscoscityResistance; + f32 var_f25 = field_0x8d4 * -i_attr().mTiltViscoscityResistance; + + field_0x8d0 += var_f28 * var_f26; + field_0x8d4 += var_f27 * var_f25; + field_0x8c8 += field_0x8d0; + field_0x8cc += field_0x8d4; + + if (var_r21) { + field_0x8c8 = 0.0f; + } + + if (var_r22) { + field_0x8cc = 0.0f; + } + + field_0x8c0 = 0.0f; + field_0x8c4 = 0.0f; +} + +/* #pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void daObjMovebox::Act_c::afl_sway() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/afl_sway__Q212daObjMovebox5Act_cFv.s" +} +#pragma pop */ + +/* 8047F38C-8047F50C 00198C 0180+00 1/1 0/0 0/0 .text check_to_walk__Q212daObjMovebox5Act_cFv */ +int daObjMovebox::Act_c::check_to_walk() { + int var_r27 = -1; + bool var_r26 = true; + + if (field_0x8fe != 0 && + cLib_checkBit(mBgc.mState, daObjMovebox::Bgc_c::STATE_1_e) && + !cLib_checkBit(mBgc.mState, daObjMovebox::Bgc_c::STATE_40_e)) + { + dBgW::PushPullLabel sp28 = cLib_checkBit(mPPLabel, dBgW::PPLABEL_PULL); + dBgW::PushPullLabel var_r25 = cLib_checkBit(mPPLabel, dBgW::PPLABEL_4); + + s16 var_r28; + if (sp28) { + if (var_r25) { + var_r28 = i_attr().mFirstPullStopTime; + } else { + var_r28 = i_attr().mRepeatPullStopTime; + } + } else { + if (var_r25) { + var_r28 = i_attr().mFirstPushStopTime; + } else { + var_r28 = i_attr().mRepeatPushStopTime; + } + } + + for (int i = 0; i < 4; i++) { + if (field_0x8f0[i] >= var_r28) { + const BgcSrc_c* pbgc = i_attr().field_0x9e ? mBgc.M_lin20 : mBgc.M_lin5; + int check_num = i_attr().field_0x9e ? 21 : 5; + + if (!mBgc.chk_wall_pre(this, pbgc, check_num, M_dir_base[i])) { + var_r27 = i; + } + } else { + var_r26 = false; + } + } + } + + if (var_r26) { + clr_moment_cnt(); + } + + field_0x8fe = 0; + return var_r27; +} + +/* #pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm int daObjMovebox::Act_c::check_to_walk() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/check_to_walk__Q212daObjMovebox5Act_cFv.s" +} +#pragma pop */ + +/* 8047F50C-8047F530 001B0C 0024+00 3/3 0/0 0/0 .text clr_moment_cnt__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::clr_moment_cnt() { + for (int i = 0; i < 4; i++) { + field_0x8f0[i] = 0; + } +} + +/* 8047F530-8047F5CC 001B30 009C+00 1/1 0/0 0/0 .text chk_appear__Q212daObjMovebox5Act_cCFv */ +bool daObjMovebox::Act_c::chk_appear() const { + int path_id = prmZ_get_pathId(); + int sw1 = prm_get_swSave1(); + + if (path_id != 0xFF || sw1 == 0xFF) { + return true; + } + + BOOL is_sw1 = is_switch1(); + BOOL temp_r29 = prm_get_dmy(); + + return (!is_sw1 && !temp_r29) || (is_sw1 && temp_r29); +} + +/* #pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm BOOL daObjMovebox::Act_c::chk_appear() const { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/chk_appear__Q212daObjMovebox5Act_cCFv.s" +} +#pragma pop */ + +/* 8047F5CC-8047F634 001BCC 0068+00 1/1 0/0 0/0 .text + * eff_smoke_slip_start__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::eff_smoke_slip_start() { + static cXyz scl(0.6f, 0.6f, 0.6f); + + s16 var_r30 = cLib_checkBit(mPPLabel, dBgW::PPLABEL_PULL) != 0 ? + i_attr().mPushMoveTime : + i_attr().mPullMoveTime; +} + +/* 8047F634-8047F6A8 001C34 0074+00 3/3 0/0 0/0 .text mode_wait_init__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::mode_wait_init() { + fopAcM_SetSpeedF(this, 0.0f); + fopAcM_SetGravity(this, i_attr().mGravity); + mpBgW->SetCrrFunc(dBgS_MoveBGProc_Trans); + clr_moment_cnt(); + field_0x8e8 = -1; + field_0x5ac = 0; +} + +/* 8047F6A8-8047F8D4 001CA8 022C+00 1/0 0/0 0/0 .text mode_wait__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::mode_wait() { + if (field_0x8fa > 0) { + field_0x8fa--; + } + + int var_r30 = check_to_walk(); + if (field_0x902 == 0 && + cLib_checkBit(mBgc.mState, daObjMovebox::Bgc_c::STATE_1_e)) + { + field_0x902 = 1; + path_save(); + } + + daObj::posMoveF_stream(this, NULL, &cXyz::Zero, i_attr().mViscosityResistance, + i_attr().mInertiaResistance); + + cXyz sp48; + mDoMtx_stack_c::transS(home.pos); + mDoMtx_stack_c::YrotM(home.angle.y); + mDoMtx_stack_c::transM(field_0x8dc * i_attr().mUnitDistance, 0.0f, + field_0x8e0 * i_attr().mUnitDistance); + mDoMtx_stack_c::multVecZero(&sp48); + + current.pos.x = sp48.x; + current.pos.z = sp48.z; + + if (var_r30 != -1) { + field_0x8e8 = var_r30; + eff_smoke_slip_start(); + ((daPy_py_c*)dComIfGp_getPlayer(0))->onPushPullKeep(); + + mode_walk_init(); + + if (cLib_checkBit(mPPLabel, dBgW::PPLABEL_PULL)) { + field_0x8f8 = i_attr().mPullMoveTime; + field_0x8e4 = 32768.0f / i_attr().mPullMoveTime; + } else { + field_0x8f8 = i_attr().mPushMoveTime; + field_0x8e4 = 32768.0f / i_attr().mPushMoveTime; + } + } +} + +/* 8047F8D4-8047F8F4 001ED4 0020+00 1/1 0/0 0/0 .text mode_walk_init__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::mode_walk_init() { + fopAcM_SetSpeedF(this, 0.0f); + field_0x902 = 0; + field_0x5ac = 1; +} + +/* 8047F8F4-8047FCBC 001EF4 03C8+00 1/0 0/0 0/0 .text mode_walk__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::mode_walk() { + static cXyz dir_vec[] = { + cXyz(0.0f, 0.0f, 1.0f), + cXyz(1.0f, 0.0f, 0.0f), + cXyz(0.0f, 0.0f, -1.0f), + cXyz(-1.0f, 0.0f, 0.0f), + }; + + bool var_r28 = --field_0x8f8 <= 0; + f32 var_f31 = (cM_scos(field_0x8f8 * field_0x8e4) + 1.0f) * 0.5f; + + cXyz sp78; + mDoMtx_stack_c::transS(home.pos); + mDoMtx_stack_c::YrotM(home.angle.y); + mDoMtx_stack_c::transM( + (field_0x8dc + var_f31 * dir_vec[field_0x8e8].x) * i_attr().mUnitDistance, 0.0f, + (field_0x8e0 + var_f31 * dir_vec[field_0x8e8].z) * i_attr().mUnitDistance); + mDoMtx_stack_c::multVecZero(&sp78); + + current.pos.x = sp78.x; + current.pos.z = sp78.z; + eyePos = current.pos; + + sound_slip(); + + if (var_r28) { + const BgcSrc_c* pbgc = i_attr().field_0x9e ? mBgc.M_lin20 : mBgc.M_lin5; + int check_num = i_attr().field_0x9e ? 21 : 5; + + if (mBgc.chk_wall_pre(this, pbgc, check_num, M_dir_base[field_0x8e8])) { + sound_limit(); + } + } + + daObj::posMoveF_stream(this, NULL, &cXyz::Zero, i_attr().mViscosityResistance, + i_attr().mInertiaResistance); + + current.pos.x = sp78.x; + current.pos.z = sp78.z; + + if (var_r28) { + if (field_0x8e8 == 0) { + field_0x8e0++; + } else if (field_0x8e8 == 1) { + field_0x8dc++; + } else if (field_0x8e8 == 2) { + field_0x8e0--; + } else if (field_0x8e8 == 3) { + field_0x8dc--; + } + + ((daPy_py_c*)dComIfGp_getPlayer(0))->offPushPullKeep(); + mode_wait_init(); + } +} + +/* 8047FCBC-8047FCE4 0022BC 0028+00 1/1 0/0 0/0 .text mode_afl_init__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::mode_afl_init() { + fopAcM_SetSpeedF(this, 0.0f); + mpBgW->SetCrrFunc(dBgS_MoveBGProc_Trans); + field_0x5ac = 2; +} + +/* 8047FCE4-8047FEE4 0022E4 0200+00 1/0 0/0 0/0 .text mode_afl__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::mode_afl() { + f32 var_f31; + f32 var_f30 = current.pos.y - mBgc.field_0x60; + if (var_f30 > 0.0f) { + var_f31 = 0.0f; + } else if (var_f30 > -i_attr().field_0x68) { + var_f31 = 1.0f; + } else { + var_f31 = -var_f30 * i_attr().field_0x6c; + } + + field_0x8b8 += i_attr().mWaterOscillationAngleSpeed * (cM_rnd() + 1.0f); + fopAcM_SetGravity(this, field_0x8bc + var_f31 * i_attr().mBuoyancy + + i_attr().mGravity * cM_ssin(field_0x8b8)); + field_0x8bc = 0.0f; + + if (cLib_checkBit(mBgc.mState, daObjMovebox::Bgc_c::STATE_1_e)) { + afl_sway(); + } +} + +/* #pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void daObjMovebox::Act_c::mode_afl() { + nofralloc +#include "asm/rel/d/a/obj/d_a_obj_movebox/d_a_obj_movebox/mode_afl__Q212daObjMovebox5Act_cFv.s" +} +#pragma pop */ + +void daObjMovebox::Act_c::mode_proc_call() { + typedef void (daObjMovebox::Act_c::*modeFunc)(); + static modeFunc mode_proc[] = { + &daObjMovebox::Act_c::mode_wait, + &daObjMovebox::Act_c::mode_walk, + &daObjMovebox::Act_c::mode_afl, + }; + + (this->*mode_proc[field_0x5ac])(); +} + +/* 8047FF5C-80480020 00255C 00C4+00 1/1 0/0 0/0 .text sound_slip__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::sound_slip() { + u32 var_r29 = 0; + if (mBgc.field_0x5c >= 0) { + const dBgS_ObjGndChk& chk = mBgc.M_gnd_work[mBgc.field_0x5c]; + int bg_index = chk.GetBgIndex(); + if (bg_index >= 0 && bg_index < 0x100) { + var_r29 = dComIfG_Bgsp().GetMtrlSndId(chk); + } + } + + mDoAud_seStartLevel(i_attr().field_0x7c, &eyePos, var_r29, mReverb); +} + +/* 80480020-804800E4 002620 00C4+00 1/1 0/0 0/0 .text sound_limit__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::sound_limit() { + u32 var_r29 = 0; + if (mBgc.field_0x178 >= 0) { + const dBgS_ObjLinChk& chk = mBgc.M_wall_work[mBgc.field_0x178]; + int bg_index = chk.GetBgIndex(); + if (bg_index >= 0 && bg_index < 0x100) { + var_r29 = dComIfG_Bgsp().GetMtrlSndId(chk); + } + } + + mDoAud_seStartLevel(i_attr().field_0x80, &eyePos, var_r29, mReverb); +} + +/* 804800E4-804801A8 0026E4 00C4+00 1/1 0/0 0/0 .text sound_land__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::sound_land() { + u32 var_r29 = 0; + if (mBgc.field_0x5c >= 0) { + const dBgS_ObjGndChk& chk = mBgc.M_gnd_work[mBgc.field_0x5c]; + int bg_index = chk.GetBgIndex(); + if (bg_index >= 0 && bg_index < 0x100) { + var_r29 = dComIfG_Bgsp().GetMtrlSndId(chk); + } + } + + mDoAud_seStartLevel(i_attr().field_0x84, &eyePos, var_r29, mReverb); +} + +/* 804801A8-804801FC 0027A8 0054+00 1/1 0/0 0/0 .text vib_land__Q212daObjMovebox5Act_cFv + */ +void daObjMovebox::Act_c::vib_land() { + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); +} + +/* 8048168C-80481690 000764 0004+00 0/0 0/0 0/0 .rodata @4774 */ +#pragma push +#pragma force_active on +SECTION_RODATA static f32 const lit_4774 = 2.0f; +COMPILER_STRIP_GATE(0x8048168C, &lit_4774); +#pragma pop + +/* 80481690-80481694 000768 0004+00 0/0 0/0 0/0 .rodata @4775 */ +#pragma push +#pragma force_active on +SECTION_RODATA static f32 const lit_4775 = 75.0f; +COMPILER_STRIP_GATE(0x80481690, &lit_4775); +#pragma pop + +/* 804801FC-8048027C 0027FC 0080+00 1/1 0/0 0/0 .text eff_land_smoke__Q212daObjMovebox5Act_cFv */ +void daObjMovebox::Act_c::eff_land_smoke() { + daObjEff::Act_c::make_land_smoke(¤t.pos, i_attr().mLandSmokeScale); +} + +/* 80482BDC-80482BEC 00135C 000C+04 0/0 0/0 0/0 .bss @4762 */ +#pragma push +#pragma force_active on +static u8 lit_4762[12 + 4 /* padding */]; +#pragma pop + +/* 80482BEC-80482BF8 00136C 000C+00 0/0 0/0 0/0 .bss particle_scale$4761 */ +#pragma push +#pragma force_active on +static u8 particle_scale[12]; +#pragma pop + +/* 80482BF8-80482BFC 001378 0004+00 0/0 0/0 0/0 .bss + * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ +#pragma push +#pragma force_active on +static u8 data_80482BF8[4]; +#pragma pop + +/* 80482BFC-80482C00 00137C 0004+00 0/0 0/0 0/0 .bss + * sInstance__35JASGlobalInstance<14JASAudioThread> */ +#pragma push +#pragma force_active on +static u8 data_80482BFC[4]; +#pragma pop + +/* 80482C00-80482C04 001380 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C00[4]; +#pragma pop + +/* 80482C04-80482C08 001384 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C04[4]; +#pragma pop + +/* 80482C08-80482C0C 001388 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80482C08[4]; +#pragma pop + +/* 80482C0C-80482C10 00138C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80482C0C[4]; +#pragma pop + +/* 80482C10-80482C14 001390 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> + */ +#pragma push +#pragma force_active on +static u8 data_80482C10[4]; +#pragma pop + +/* 80482C14-80482C18 001394 0004+00 0/0 0/0 0/0 .bss + * sInstance__36JASGlobalInstance<15JAISoundStarter> */ +#pragma push +#pragma force_active on +static u8 data_80482C14[4]; +#pragma pop + +/* 80482C18-80482C1C 001398 0004+00 0/0 0/0 0/0 .bss + * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ +#pragma push +#pragma force_active on +static u8 data_80482C18[4]; +#pragma pop + +/* 80482C1C-80482C20 00139C 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ +#pragma push +#pragma force_active on +static u8 data_80482C1C[4]; +#pragma pop + +/* 80482C20-80482C24 0013A0 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C20[4]; +#pragma pop + +/* 80482C24-80482C28 0013A4 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C24[4]; +#pragma pop + +/* 80482C28-80482C2C 0013A8 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C28[4]; +#pragma pop + +/* 80482C2C-80482C30 0013AC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80482C2C[4]; +#pragma pop + +/* 80482C30-80482C34 0013B0 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12JAISoundInfo> */ +#pragma push +#pragma force_active on +static u8 data_80482C30[4]; +#pragma pop + +/* 80482C34-80482C38 0013B4 0004+00 0/0 0/0 0/0 .bss + * sInstance__34JASGlobalInstance<13JAUSoundTable> */ +#pragma push +#pragma force_active on +static u8 data_80482C34[4]; +#pragma pop + +/* 80482C38-80482C3C 0013B8 0004+00 0/0 0/0 0/0 .bss + * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ +#pragma push +#pragma force_active on +static u8 data_80482C38[4]; +#pragma pop + +/* 80482C3C-80482C40 0013BC 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ +#pragma push +#pragma force_active on +static u8 data_80482C3C[4]; +#pragma pop + +/* 80482C40-80482C44 0013C0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> + */ +#pragma push +#pragma force_active on +static u8 data_80482C40[4]; +#pragma pop + +/* 80482C44-80482C48 0013C4 0004+00 0/0 0/0 0/0 .bss + * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C44[4]; +#pragma pop + +/* 80482C48-80482C4C 0013C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> + */ +#pragma push +#pragma force_active on +static u8 data_80482C48[4]; +#pragma pop + +/* 80482C4C-80482C50 0013CC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80482C4C[4]; +#pragma pop + +/* 80482C50-80482C54 0013D0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80482C50[4]; +#pragma pop + +/* 80482C54-80482C58 0013D4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80482C54[4]; +#pragma pop + +/* 80482C58-80482C5C 0013D8 0004+00 0/0 0/0 0/0 .bss + * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ +#pragma push +#pragma force_active on +static u8 data_80482C58[4]; +#pragma pop + +/* 8048027C-80480728 00287C 04AC+00 1/0 0/0 0/0 .text Execute__Q212daObjMovebox5Act_cFPPA3_A4_f */ +int daObjMovebox::Act_c::Execute(Mtx** param_0) { + if (field_0x908 != 0) { + if (--field_0x908 == 0) { + fopAcM_delete(this); + } + + return 1; + } + + if (mCcCyl.ChkTgHit()) { + dCcD_GObjInf* hit_obj = mCcCyl.GetTgHitGObj(); + + if (mCcCyl.ChkTgHit() && hit_obj != NULL) { + if (!hit_obj->ChkAtType(AT_TYPE_LANTERN_SWING) && hit_obj->GetAtMtrl() == 1) { + u32 params; + daObjBurnBox_c::make_prm_burnbox(¶ms, 1); + + fopAcM_createChild(PROC_Obj_BurnBox, fopAcM_GetID(this), params, ¤t.pos, + fopAcM_GetRoomNo(this), &shape_angle, &scale, -1, NULL); + field_0x908 = 5; + } else if (hit_obj->ChkAtType(AT_TYPE_BOMB) || hit_obj->ChkAtType(AT_TYPE_IRON_BALL)) { + fopAc_ac_c* hit_ac = mCcCyl.GetTgHitAc(); + if (hit_ac != NULL && fopAcM_GetProfName(hit_ac) != PROC_Obj_Carry) { + cXyz sp48(current.pos); + J3DModelData* kibako_bmd = + (J3DModelData*)dComIfG_getObjectRes("Always", "BreakWoodBox.bmd"); + JUT_ASSERT(kibako_bmd != 0); + + s32 room_no = fopAcM_GetRoomNo(this); + JPABaseEmitter* emitter = dComIfGp_particle_set( + 0x82AF, &sp48, NULL, NULL, 0xFF, dPa_modelEcallBack::getEcallback(), + room_no, NULL, NULL, &scale); + dPa_modelEcallBack::setModel(emitter, kibako_bmd, tevStr, 3, NULL, 0, 0); + + for (int i = 0; i < 3; i++) { + static const u16 particle_id[] = {0x82AB, 0x82AC, 0x82AD}; + dComIfGp_particle_set(particle_id[i], &sp48, NULL, &scale, 0xFF, NULL, -1, + NULL, NULL, NULL); + } + + fopAcM_delete(this); + } + } + } + } + + if (field_0x908 == 0) { + if (cLib_checkBit(mBgc.mState, + daObjMovebox::Bgc_c::STATE_20_e)) + { + mDoAud_seStartLevel(i_attr().field_0x88, &eyePos, 0, mReverb); + } + + if (field_0x5ac == 0) { + if (cLib_checkBit(mBgc.mState, + daObjMovebox::Bgc_c::STATE_10_e) && + field_0x8fa == 0) + { + if (cLib_checkBit(mBgc.mState, + daObjMovebox::Bgc_c::STATE_1_e)) + { + if (i_attr().mBuoyancy + i_attr().mGravity > 0.0f) { + mode_afl_init(); + } + } else { + mode_afl_init(); + } + } + } else if (field_0x5ac == 2 && cLib_checkBit( + mBgc.mState, daObjMovebox::Bgc_c::STATE_1_e)) + { + mode_wait_init(); + field_0x8fa = 20; + } + + mode_proc_call(); + + mBgc.proc_vertical(this); + if (mBgc.field_0x5c >= 0) { + tevStr.mRoomNo = current.roomNo; + tevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mBgc.M_gnd_work[mBgc.field_0x5c]); + } + + if (field_0x8fc > 0) { + field_0x8fc--; + } else if (cLib_checkBit(mBgc.mState, + daObjMovebox::Bgc_c::STATE_4_e)) + { + sound_land(); + vib_land(); + + if (!cLib_checkBit(mBgc.mState, + daObjMovebox::Bgc_c::STATE_10_e)) + { + eff_land_smoke(); + } + } + + set_mtx(); + + if (mType == 0) { + mCcCyl.MoveCTg(current.pos); + dComIfG_Ccsp()->Set(&mCcCyl); + } + } + + *param_0 = &mBgMtx; + return 1; +} + +/* 80480728-804808B4 002D28 018C+00 1/0 0/0 0/0 .text Draw__Q212daObjMovebox5Act_cFv */ +int daObjMovebox::Act_c::Draw() { + if (mpModel != NULL) { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + } + + if (i_attr().field_0x9d == 0 && mBgc.field_0x5c >= 0) { + f32 var_f31 = mBgc.field_0x0[mBgc.field_0x5c]; + cM3dGPla sp40; + + if (dComIfG_Bgsp().GetTriPla(mBgc.M_gnd_work[mBgc.field_0x5c], &sp40) && + var_f31 != -1000000000.0f) + { + dComIfGd_setSimpleShadow(¤t.pos, var_f31, i_attr().mShadowSize, &sp40.mNormal, + shape_angle.y, -0.4f, NULL); + } + } + + return 1; +} + +/* 804808FC-80480920 002EFC 0024+00 1/0 0/0 0/0 .text Delete__Q212daObjMovebox5Act_cFv */ +int daObjMovebox::Act_c::Delete() { + if (mpBgW != NULL) { + mpBgW->SetRideCallback(NULL); + mpBgW->SetPushPullCallback(NULL); + } + + return 1; +} + +int daObjMovebox::Act_c::Mthd_Create() { + fopAcM_SetupActor(this, daObjMovebox::Act_c); + mType = prm_get_type(); + + prmX_init(); + prmZ_init(); + + if (!chk_appear()) { + return cPhs_ERROR_e; + } + + int phase_state = dComIfG_resLoad(&mPhase, M_arcname[mType]); + if (phase_state == cPhs_COMPLEATE_e) { + u32 heap_size = i_attr().field_0x60; + path_init(); + + phase_state = MoveBGCreate(M_arcname[mType], i_attr().field_0x5c, dBgS_MoveBGProc_Trans, + heap_size, NULL); + JUT_ASSERT((phase_state == cPhs_COMPLEATE_e) || (phase_state == cPhs_ERROR_e)); + } +} + +int daObjMovebox::Act_c::Mthd_Delete() { + int rt = MoveBGDelete(); + dComIfG_resDelete(&mPhase, M_arcname[mType]); + return rt; +} + +namespace { +/* 80480920-80480AD4 002F20 01B4+00 1/0 0/0 0/0 .text + * Mthd_Create__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +int Mthd_Create(void* i_this) { + return ((daObjMovebox::Act_c*)i_this)->Mthd_Create(); +} + +/* 80480BC0-80480C18 0031C0 0058+00 1/0 0/0 0/0 .text + * Mthd_Delete__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +int Mthd_Delete(void* i_this) { + return ((daObjMovebox::Act_c*)i_this)->Mthd_Delete(); +} + +/* 80480C18-80480C38 003218 0020+00 1/0 0/0 0/0 .text + * Mthd_Execute__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +int Mthd_Execute(void* i_this) { + return ((daObjMovebox::Act_c*)i_this)->MoveBGExecute(); +} + +/* 80480C38-80480C64 003238 002C+00 1/0 0/0 0/0 .text + * Mthd_Draw__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +int Mthd_Draw(void* i_this) { + return ((daObjMovebox::Act_c*)i_this)->MoveBGDraw(); +} + +/* 80480C64-80480C90 003264 002C+00 1/0 0/0 0/0 .text + * Mthd_IsDelete__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@FPv */ +int Mthd_IsDelete(void* i_this) { + return ((daObjMovebox::Act_c*)i_this)->MoveBGIsDelete(); +} + +/* 8048176C-8048178C -00001 0020+00 1/0 0/0 0/0 .data + * Mthd_Table__Q212daObjMovebox29@unnamed@d_a_obj_movebox_cpp@ */ +static actor_method_class Mthd_Table = { + (process_method_func)Mthd_Create, (process_method_func)Mthd_Delete, + (process_method_func)Mthd_Execute, (process_method_func)Mthd_IsDelete, + (process_method_func)Mthd_Draw, +}; +} // namespace + +/* 8048178C-804817BC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Movebox */ +extern actor_process_profile_definition g_profile_Obj_Movebox = { + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Movebox, // mProcName + &g_fpcLf_Method.mBase, // sub_method + sizeof(daObjMovebox::Act_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 17, // mPriority + &Mthd_Table, // sub_method + 0x00040504, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/com/d_com_static.cpp b/src/d/com/d_com_static.cpp index 65fcef927c4..116a5e2e317 100644 --- a/src/d/com/d_com_static.cpp +++ b/src/d/com/d_com_static.cpp @@ -436,9 +436,11 @@ const char* daSetBgObj_c::getArcName(fopAc_ac_c* i_this) { /* ############################################################################################## */ /* 80451D28-80451D30 -00001 0008+00 0/0 0/0 3/3 .sdata2 M_dir_base__Q212daObjMovebox5Act_c */ -SECTION_SDATA2 void* daObjMovebox::Act_c::M_dir_base[2] = { - (void*)0x00004000, - (void*)(((char*)mDoMch_Create__Fv) + 0x2BC), +SECTION_SDATA2 s16 daObjMovebox::Act_c::M_dir_base[4] = { + 0x0000, + 0x4000, + 0x8000, + 0xC000, }; /* 80451D30-80451D34 000330 0004+00 0/0 0/0 3/3 .sdata2 OPEN_SIZE__7daDsh_c */