diff --git a/configure.py b/configure.py index 32e161ae535..f582b310c42 100755 --- a/configure.py +++ b/configure.py @@ -1498,7 +1498,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_carry"), ActorRel(NonMatching, "d_a_obj_ito"), ActorRel(NonMatching, "d_a_obj_movebox"), - ActorRel(NonMatching, "d_a_obj_swpush"), + ActorRel(Equivalent, "d_a_obj_swpush"), # weak func order ActorRel(MatchingFor("GZ2E01"), "d_a_obj_timer"), ActorRel(MatchingFor("GZ2E01"), "d_a_path_line"), ActorRel(NonMatching, "d_a_scene_exit"), diff --git a/include/d/actor/d_a_obj_swpush.h b/include/d/actor/d_a_obj_swpush.h index 77e9207f3ad..470ff78e2e8 100644 --- a/include/d/actor/d_a_obj_swpush.h +++ b/include/d/actor/d_a_obj_swpush.h @@ -1,7 +1,9 @@ #ifndef D_A_OBJ_SWPUSH_H #define D_A_OBJ_SWPUSH_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_a_obj.h" +#include "d/d_bg_w_sv.h" +#include "d/d_com_inf_game.h" /** * @ingroup actors-objects @@ -11,25 +13,93 @@ * @details This is a multi-purpose depression switch actor. * Used by: Gold Pressure Switch, Lakebed Pressure Switch * - */ -class daObjSwpush : public fopAc_ac_c { -public: - class Act_c { +*/ +namespace daObjSwpush { + enum AttrFlag_e { + FLAG_OBEY_SAVE = 0x1, + FLAG_STAY_PRESSED = 0x2, + FLAG_IS_TOGGLE = 0x4, + FLAG_REQ_HEAVY = 0x8, + FLAG_ON_IS_UP = 0x10, + FLAG_UNK20 = 0x20, + }; + + class Hio_c { public: - struct Prm_e {}; + class Attr_c { + public: + /* § 踏みスイッチ §\n - Foot Switch */ + /* 0x00 */ AttrFlag_e flags; + /* 0x04 */ f32 scale; + /* 0x08 */ f32 draw_spring; // draw_spring + /* 0x0C */ f32 draw_resist; // draw_resist + /* 0x10 */ f32 draw_down_spd0; // draw_down_spd0 + /* 0x14 */ f32 draw_pypcon_acc; // draw_pypcon_acc + /* 0x18 */ s16 bg_time_lag; // bg_time_lag + /* 0x1A */ s16 able_push_time_any; // able_push_time_any + /* 0x1C */ s16 able_push_time_heavy; // able_push_time_heavy + /* 0x1E */ s16 able_ride_time_middle; // able_ride_time_middle + /* 0x20 */ f32 step_up_space; // step_up_space + /* 0x24 */ f32 step_down_space; // step_down_space + /* 0x28 */ s16 demo_run_time; // demo_run_time + /* 0x2A */ u8 field_0x2a; + /* 0x2B */ u8 field_0x2b; + }; + }; + + class Act_c : public fopAc_ac_c { + public: + enum Prm_e { + /* 0x00 */ PRM_0_e, + /* 0x01 */ PRM_1_e, + /* 0x03 */ PRM_3_e = 0x3, + /* 0x04 */ PRM_4_e, + /* 0x08 */ PRM_8_e = 0x8, + /* 0x10 */ PRM_10_e = 0X10, + /* 0x18 */ PRM_18_e = 0x18, + /* 0x1D */ PRM_1D_e = 0x1D, + }; + + enum Mode_e { + MODE_UPPER = 0, + MODE_U_L = 1, + MODE_LOWER = 2, + MODE_L_U = 3 + }; + + enum DemoMode_e { + DEMO_MODE_NON = 0, + DEMO_MODE_REQ_PAUSE = 1, + DEMO_MODE_RUN_PAUSE = 2, + DEMO_MODE_REQ_SW = 3, + DEMO_MODE_RUN_SW = 4 + }; + + const Hio_c::Attr_c& attr() const { return M_attr[mType]; } + u8 prmZ_get_swSave2() const { return mPrmZ & 0xFF; } + int prm_get_couple() const { return daObj::PrmAbstract(this, PRM_1_e, PRM_1D_e); } + u8 prm_get_evId() const { return daObj::PrmAbstract(this, PRM_8_e, PRM_0_e); } + int prm_get_mdl() const { return daObj::PrmAbstract(this, PRM_4_e, PRM_10_e); } + int prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_8_e, PRM_8_e); } + int prm_get_type() const { return daObj::PrmAbstract(this, PRM_3_e, PRM_18_e); } + bool is_switch() { return fopAcM_isSwitch(this, prm_get_swSave()); } + void fopAcM_revSwitch(fopAc_ac_c* i_actor, int param) { dComIfGs_revSwitch(param, fopAcM_GetHomeRoomNo(i_actor)); } + void rev_switch() { fopAcM_revSwitch(this, prm_get_swSave()); } + void off_switch() { fopAcM_offSwitch(this, prm_get_swSave()); } + void on_switch() { fopAcM_onSwitch(this, prm_get_swSave()); } /* 80482D4C */ void prmZ_init(); - /* 80482D7C */ void is_switch2() const; - /* 80482DC4 */ void solidHeapCB(fopAc_ac_c*); - /* 80482DE8 */ void create_heap(); - /* 80482FE8 */ void create_res_load(); - /* 80483038 */ void Mthd_Create(); - /* 8048348C */ void Mthd_Delete(); + /* 80482D7C */ bool is_switch2() const; + /* 80482DC4 */ static BOOL solidHeapCB(fopAc_ac_c*); + /* 80482DE8 */ bool create_heap(); + /* 80482FE8 */ cPhs__Step create_res_load(); + /* 80483038 */ cPhs__Step Mthd_Create(); + /* 8048348C */ int Mthd_Delete(); /* 804834E8 */ void set_mtx(); /* 80483534 */ void init_mtx(); /* 80483570 */ void set_btp_frame(); - /* 80483574 */ void rideCB(dBgW*, fopAc_ac_c*, fopAc_ac_c*); - /* 804839B4 */ void jnodeCB(J3DJoint*, int); + /* 80483574 */ static void rideCB(dBgW*, fopAc_ac_c*, fopAc_ac_c*); + /* 804839B4 */ static int jnodeCB(J3DJoint*, int); /* 80483A5C */ void calc_top_pos(); /* 80483B70 */ void top_bg_aim_req(f32, s16); /* 80483B7C */ void set_push_flag(); @@ -52,32 +122,84 @@ public: /* 804847B4 */ void demo_reqSw(); /* 80484828 */ void demo_runSw_init(); /* 80484834 */ void demo_runSw(); - /* 80484890 */ void check_ride_couple(s16); - /* 804848D8 */ void nr_ride_people(char); - /* 80484908 */ void Mthd_Execute(); - /* 80484BB8 */ void Mthd_Draw(); + /* 80484890 */ bool check_ride_couple(s16); + /* 804848D8 */ int nr_ride_people(char); + /* 80484908 */ int Mthd_Execute(); + /* 80484BB8 */ int Mthd_Draw(); - static u8 const M_bmd[6 + 2 /* padding */]; - static u8 const M_dzb[6 + 2 /* padding */]; - static u8 const M_heap_size[12]; - static u8 const M_attr[220]; - static u32 const M_op_vtx; - static void* M_arcname[3]; + static s16 const M_bmd[3]; + static s16 const M_dzb[3]; + static u32 const M_heap_size[3]; + static Hio_c::Attr_c const M_attr[5]; + static u8 const M_op_vtx[4]; + static char* M_arcname[3]; + + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x570 */ dBgWSv* mpBgW; + /* 0x574 */ Mtx mMtx; + /* 0x5A4 */ f32 field_0x5a4; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ int mType; + /* 0x5B0 */ int mMode; + /* 0x5B4 */ int mDemoMode; + /* 0x5B8 */ s16 mPauseTimer; + /* 0x5BA */ s16 mEventID; + /* 0x5BC */ u16 mPrmZ; + /* 0x5BE */ bool mPrmZInit; + /* 0x5BF */ u8 mVibTimer; + /* 0x5C0 */ u8 mRidingMode; + /* 0x5C1 */ bool mPrevRiding; + /* 0x5C2 */ s16 mMiniPushTimer; + /* 0x5C4 */ bool mMiniPushFlg; + /* 0x5C5 */ u8 field_0x5c5; + /* 0x5C6 */ bool mHeavyRiding; + /* 0x5C7 */ bool mPrevHeavyRiding; + /* 0x5C8 */ s16 mPushTimer; + /* 0x5CA */ bool mPushFlg; + /* 0x5CB */ bool mChangingState; + /* 0x5CC */ f32 mTargetHFrac; + /* 0x5D0 */ f32 mCurHFrac; + /* 0x5D4 */ f32 mSpeed; + /* 0x5D8 */ f32 field_0x5d8; + /* 0x5DC */ f32 field_0x5dc; + /* 0x5E0 */ s16 field_0x5e0; + /* 0x5E4 */ f32 field_0x5e4; + /* 0x5E8 */ f32 field_0x5e8; + /* 0x5EC */ f32 mTopPos; + /* 0x5F0 */ s16 mDebounceTimer; + /* 0x5F2 */ s8 field_0x5f2; + /* 0x5F3 */ u8 field_0x5f3; + /* 0x5F4 */ u8 mMdl; + /* 0x5F8 */ cXyz field_0x5f8; }; -private: - /* 0x568 */ u8 field_0x568[0x604 - 0x568]; + #ifdef DEBUG + class Hio_c : public JORReflexible { + public: + void ct() { + if (mCount++ == 0) { + daObj::HioVarious_c::init(this, "踏みスイッチ"); // Foot Switch + } + } + + void default_set() { + for (int i = 0; i < 5; i++) { + field_0x8[i] = Act_c::M_attr[i]; + } + } + + void dt() { + if (--mCount == 0) { + daObj::HioVarious_c::clean(this); + } + } + + /* 0x4 */ int mCount; + /* 0x8 */ Attr_c field_0x8[5]; + }; + #endif }; -STATIC_ASSERT(sizeof(daObjSwpush) == 0x604); - -struct daObj { -public: - template - void PrmAbstract(/* ... */); - /* 80484CE4 */ /* daObj::PrmAbstract */ - void func_80484CE4(void* _this, fopAc_ac_c const*, daObjSwpush::Act_c::Prm_e, - daObjSwpush::Act_c::Prm_e); -}; +STATIC_ASSERT(sizeof(daObjSwpush::Act_c) == 0x604); #endif /* D_A_OBJ_SWPUSH_H */ diff --git a/include/d/d_bg_w.h b/include/d/d_bg_w.h index 63794aa5063..0df43782ac0 100644 --- a/include/d/d_bg_w.h +++ b/include/d/d_bg_w.h @@ -225,6 +225,9 @@ public: bool ChkRoofRegist() { return field_0x91 & 4;} cBgD_Vtx_t* GetVtxTbl() const { return pm_vtx_tbl; } int GetVtxNum() const { return pm_bgd->m_v_num; } + void ClrNoCalcVtx() { mFlags &= ~NO_CALC_VTX_e; } + void SetBaseMtxP(MtxP mtx) { pm_base = mtx; } + void SetNoCalcVtx() { mFlags |= NO_CALC_VTX_e; } public: /* 0x18 */ MtxP pm_base; // Model Matrix diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 5e204866ad5..847020ec5fb 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -2105,6 +2105,10 @@ inline void dComIfGs_offTransformLV(int i_no) { g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().offTransformLV(i_no); } +inline void dComIfGs_revSwitch(int i_no, int i_roomNo) { + g_dComIfG_gameInfo.info.revSwitch(i_no, i_roomNo); +} + void dComIfGp_setSelectItem(int index); s32 dComIfGp_offHeapLockFlag(int flag); void dComIfGp_createSubExpHeap2D(); diff --git a/src/d/actor/d_a_obj_swpush.cpp b/src/d/actor/d_a_obj_swpush.cpp index b49154dffff..d4312f7169c 100644 --- a/src/d/actor/d_a_obj_swpush.cpp +++ b/src/d/actor/d_a_obj_swpush.cpp @@ -4,360 +4,342 @@ */ #include "d/actor/d_a_obj_swpush.h" -#include "dol2asm.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "Z2AudioLib/Z2Instances.h" +enum Kbota_00_RES_File_ID { + /* BMDR */ + /* 0x4 */ BMDR_KBOTA_00 = 0x4, -// -// Forward References: -// + /* DZB */ + /* 0x7 */ DZB_KBOTA_00 = 0x7, +}; -extern "C" void prmZ_init__Q211daObjSwpush5Act_cFv(); -extern "C" void is_switch2__Q211daObjSwpush5Act_cCFv(); -extern "C" void solidHeapCB__Q211daObjSwpush5Act_cFP10fopAc_ac_c(); -extern "C" void create_heap__Q211daObjSwpush5Act_cFv(); -extern "C" void create_res_load__Q211daObjSwpush5Act_cFv(); -extern "C" void Mthd_Create__Q211daObjSwpush5Act_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void Mthd_Delete__Q211daObjSwpush5Act_cFv(); -extern "C" void set_mtx__Q211daObjSwpush5Act_cFv(); -extern "C" void init_mtx__Q211daObjSwpush5Act_cFv(); -extern "C" void set_btp_frame__Q211daObjSwpush5Act_cFv(); -extern "C" void rideCB__Q211daObjSwpush5Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGTriFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void jnodeCB__Q211daObjSwpush5Act_cFP8J3DJointi(); -extern "C" void calc_top_pos__Q211daObjSwpush5Act_cFv(); -extern "C" void top_bg_aim_req__Q211daObjSwpush5Act_cFfs(); -extern "C" void set_push_flag__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_upper_init__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_upper__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_u_l_init__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_u_l__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_lower_init__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_lower__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_l_u_init__Q211daObjSwpush5Act_cFv(); -extern "C" void mode_l_u__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_non_init__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_non__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_reqPause_init__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_reqPause__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_runPause_init__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_runPause__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_stop_puase__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_reqSw_init__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_reqSw__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_runSw_init__Q211daObjSwpush5Act_cFv(); -extern "C" void demo_runSw__Q211daObjSwpush5Act_cFv(); -extern "C" void check_ride_couple__Q211daObjSwpush5Act_cFs(); -extern "C" void nr_ride_people__Q211daObjSwpush5Act_cFc(); -extern "C" void Mthd_Execute__Q211daObjSwpush5Act_cFv(); -extern "C" void Mthd_Draw__Q211daObjSwpush5Act_cFv(); -extern "C" static void func_80484C5C(); -extern "C" static void func_80484C7C(); -extern "C" static void func_80484C9C(); -extern "C" static void func_80484CBC(); -extern "C" static bool func_80484CDC(); -extern "C" void func_80484CE4(void* _this, fopAc_ac_c const*, daObjSwpush::Act_c::Prm_e, - daObjSwpush::Act_c::Prm_e); -extern "C" u8 const M_bmd__Q211daObjSwpush5Act_c[6 + 2 /* padding */]; -extern "C" u8 const M_dzb__Q211daObjSwpush5Act_c[6 + 2 /* padding */]; -extern "C" u8 const M_heap_size__Q211daObjSwpush5Act_c[12]; -extern "C" u8 const M_attr__Q211daObjSwpush5Act_c[220]; -extern "C" u32 const M_op_vtx__Q211daObjSwpush5Act_c; -extern "C" extern char const* const d_a_obj_swpush__stringBase0; -extern "C" void* M_arcname__Q211daObjSwpush5Act_c[3]; +enum S_lv3bota_RES_File_ID { + /* BMDR */ + /* 0x4 */ BMDR_S_LV3BOTA = 0x4, -// -// External References: -// + /* DZB */ + /* 0x7 */ DZB_KBOTA2_00 = 0x7, +}; -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void push__14mDoMtx_stack_cFv(); -extern "C" void pop__14mDoMtx_stack_cFv(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void revSwitch__10dSv_info_cFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getEventData__16dEvent_manager_cFs(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void Release__4cBgSFP9dBgW_Base(); -extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c(); -extern "C" void GlobalVtx__4cBgWFv(); -extern "C" void __ct__4dBgWFv(); -extern "C" void Move__4dBgWFv(); -extern "C" void Set__6dBgWSvFP6cBgD_tUl(); -extern "C" void CopyBackVtx__6dBgWSvFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void cM3d_CrossY_Tri__FPC8cM3dGTriPC3Vec(); -extern "C" void setPos__8cM3dGTriFPC3VecPC3VecPC3Vec(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__6dBgWSv[65 + 1 /* padding */]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); +enum S_lv6bota_RES_File_ID { + /* BMDR */ + /* 0x4 */ BMDR_S_LV6BOTA = 0x4, -// -// Declarations: -// + /* DZB */ + /* 0x7 */ DZB_KBOTA3_00 = 0x7, +}; -/* 80482D4C-80482D7C 0000EC 0030+00 1/1 0/0 0/0 .text prmZ_init__Q211daObjSwpush5Act_cFv - */ +/* 80482D4C-80482D7C 0000EC 0030+00 1/1 0/0 0/0 .text prmZ_init__Q211daObjSwpush5Act_cFv */ void daObjSwpush::Act_c::prmZ_init() { - // NONMATCHING + if (mPrmZInit) { + return; + } + mPrmZ = home.angle.z; + mPrmZInit = true; + home.angle.z = 0; + current.angle.z = 0; + shape_angle.z = 0; } /* 80482D7C-80482DC4 00011C 0048+00 2/2 0/0 0/0 .text is_switch2__Q211daObjSwpush5Act_cCFv */ -void daObjSwpush::Act_c::is_switch2() const { - // NONMATCHING +bool daObjSwpush::Act_c::is_switch2() const { + return fopAcM_isSwitch(this, prmZ_get_swSave2() & 0xFF); } -/* 80482DC4-80482DE8 000164 0024+00 1/1 0/0 0/0 .text - * solidHeapCB__Q211daObjSwpush5Act_cFP10fopAc_ac_c */ -void daObjSwpush::Act_c::solidHeapCB(fopAc_ac_c* param_0) { - // NONMATCHING +/* 80482DC4-80482DE8 000164 0024+00 1/1 0/0 0/0 .text solidHeapCB__Q211daObjSwpush5Act_cFP10fopAc_ac_c */ +BOOL daObjSwpush::Act_c::solidHeapCB(fopAc_ac_c* a_this) { + return static_cast(a_this)->create_heap(); } -/* ############################################################################################## */ /* 80484D10-80484D18 000000 0006+02 8/8 0/0 0/0 .rodata M_bmd__Q211daObjSwpush5Act_c */ -SECTION_RODATA u8 const daObjSwpush::Act_c::M_bmd[6 + 2 /* padding */] = { - 0x00, - 0x04, - 0x00, - 0x04, - 0x00, - 0x04, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80484D10, &daObjSwpush::Act_c::M_bmd); +s16 const daObjSwpush::Act_c::M_bmd[3] = {BMDR_KBOTA_00, BMDR_S_LV3BOTA, BMDR_S_LV6BOTA}; /* 80484D18-80484D20 000008 0006+02 1/1 0/0 0/0 .rodata M_dzb__Q211daObjSwpush5Act_c */ -SECTION_RODATA u8 const daObjSwpush::Act_c::M_dzb[6 + 2 /* padding */] = { - 0x00, - 0x07, - 0x00, - 0x07, - 0x00, - 0x07, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80484D18, &daObjSwpush::Act_c::M_dzb); +s16 const daObjSwpush::Act_c::M_dzb[3] = {DZB_KBOTA_00, DZB_KBOTA2_00, DZB_KBOTA3_00}; -/* 80484E4C-80484E4C 00013C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80484E4C = "Kbota_00"; -SECTION_DEAD static char const* const stringBase_80484E55 = "S_lv3bota"; -SECTION_DEAD static char const* const stringBase_80484E5F = "S_lv6bota"; -SECTION_DEAD static char const* const stringBase_80484E69 = "bottan"; -SECTION_DEAD static char const* const stringBase_80484E70 = "botan"; -#pragma pop - -/* 80484E84-80484E90 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, -}; - -/* 80484E90-80484EA4 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA; /* 80484EA4-80484EB0 -00001 000C+00 3/3 0/0 0/0 .data M_arcname__Q211daObjSwpush5Act_c */ -SECTION_DATA void* daObjSwpush::Act_c::M_arcname[3] = { - (void*)&d_a_obj_swpush__stringBase0, - (void*)(((char*)&d_a_obj_swpush__stringBase0) + 0x9), - (void*)(((char*)&d_a_obj_swpush__stringBase0) + 0x13), +char* daObjSwpush::Act_c::M_arcname[3] = { + "Kbota_00", + "S_lv3bota", + "S_lv6bota", }; /* 80482DE8-80482FE8 000188 0200+00 1/1 0/0 0/0 .text create_heap__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::create_heap() { - // NONMATCHING +bool daObjSwpush::Act_c::create_heap() { + bool rv = false; + J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(M_arcname[mMdl], M_bmd[mMdl]); + + JUT_ASSERT(518, model_data != 0); + + mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084); + if (mpModel != NULL) { + JUTNameTab* jointName = mpModel->getModelData()->getJointTree().getJointName(); + for (u16 i = 0; i < mpModel->getModelData()->getJointNum(); i++) { + bool bVar1 = false; + if (strcmp(jointName->getName(i), "bottan") == 0 || strcmp(jointName->getName(i), "botan") == 0) { + bVar1 = true; + } + + if (bVar1) { + model_data->getJointNodePointer(i)->setCallBack(jnodeCB); + mpModel->setUserArea((u32)this); + break; + } + } + } + + cBgD_t* bg_data = (cBgD_t*)dComIfG_getObjectRes(M_arcname[mMdl], M_dzb[mMdl]); + + JUT_ASSERT(569, bg_data != 0); + + bool bVar2 = false; + mpBgW = new dBgWSv(); + if (mpBgW != NULL && mpBgW->Set(bg_data, 0) == 0) { + bVar2 = true; + } + + if (mpModel != NULL && mpBgW != NULL && bVar2) { + rv = true; + } + + if (rv == false) { + mpBgW = NULL; + } + + return rv; } /* 80482FE8-80483038 000388 0050+00 1/1 0/0 0/0 .text create_res_load__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::create_res_load() { - // NONMATCHING +cPhs__Step daObjSwpush::Act_c::create_res_load() { + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhase, M_arcname[mMdl]); + if (phase != cPhs_COMPLEATE_e) { + return phase; + } + + return cPhs_COMPLEATE_e; } -/* ############################################################################################## */ -/* 80484D20-80484D2C 000010 000C+00 0/1 0/0 0/0 .rodata M_heap_size__Q211daObjSwpush5Act_c - */ -#pragma push -#pragma force_active on -SECTION_RODATA u8 const daObjSwpush::Act_c::M_heap_size[12] = { - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, -}; -COMPILER_STRIP_GATE(0x80484D20, &daObjSwpush::Act_c::M_heap_size); -#pragma pop +/* 80484D20-80484D2C 000010 000C+00 0/1 0/0 0/0 .rodata M_heap_size__Q211daObjSwpush5Act_c */ +u32 const daObjSwpush::Act_c::M_heap_size[3] = {0x1000, 0x1000, 0x1000}; /* 80484D2C-80484E08 00001C 00DC+00 4/10 0/0 0/0 .rodata M_attr__Q211daObjSwpush5Act_c */ -SECTION_RODATA u8 const daObjSwpush::Act_c::M_attr[220] = { - 0x00, 0x00, 0x00, 0x03, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x19, 0x99, 0x9A, - 0x00, 0x00, 0x00, 0x00, 0xBE, 0x99, 0x99, 0x9A, 0x00, 0x01, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0D, - 0x3F, 0x80, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x3F, 0xA0, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x19, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, - 0xBE, 0x99, 0x99, 0x9A, 0x00, 0x01, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0D, 0x3F, 0x80, 0x00, 0x00, - 0x40, 0x20, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x19, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x99, 0x99, 0x9A, - 0x00, 0x01, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0D, 0x3F, 0x80, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, - 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, - 0x3F, 0x19, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x99, 0x99, 0x9A, 0x00, 0x01, 0x00, 0x06, - 0x00, 0x06, 0x00, 0x0D, 0x3F, 0x80, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x19, 0x99, 0x9A, - 0x00, 0x00, 0x00, 0x00, 0xBE, 0x99, 0x99, 0x9A, 0x00, 0x01, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0D, - 0x3F, 0x80, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, +daObjSwpush::Hio_c::Attr_c const daObjSwpush::Act_c::M_attr[5] = { + { + (AttrFlag_e)(FLAG_STAY_PRESSED | FLAG_OBEY_SAVE), + 1.0f, + 0.9f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 10, + }, + { + FLAG_UNK20, + 1.25f, + 0.9f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 10, + }, + { + (AttrFlag_e)(FLAG_ON_IS_UP | FLAG_STAY_PRESSED | FLAG_OBEY_SAVE), + 1.0f, + 0.9f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 10, + }, + { + FLAG_IS_TOGGLE, + 1.0f, + 0.9f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 10, + }, + { + FLAG_UNK20, + 1.0f, + 0.9f, + 0.6f, + 0.0f, + -0.3f, + 1, + 6, + 6, + 13, + 1.0f, + 2.5f, + 10, + }, + }; -COMPILER_STRIP_GATE(0x80484D2C, &daObjSwpush::Act_c::M_attr); /* 80484E08-80484E0C 0000F8 0004+00 0/3 0/0 0/0 .rodata M_op_vtx__Q211daObjSwpush5Act_c */ -#pragma push -#pragma force_active on -SECTION_RODATA u32 const daObjSwpush::Act_c::M_op_vtx = 0x0D0B0A0C; -COMPILER_STRIP_GATE(0x80484E08, &daObjSwpush::Act_c::M_op_vtx); -#pragma pop - -/* 80484E0C-80484E10 0000FC 0004+00 0/1 0/0 0/0 .rodata @3872 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3872 = 0.5f; -COMPILER_STRIP_GATE(0x80484E0C, &lit_3872); -#pragma pop - -/* 80484E10-80484E14 000100 0004+00 0/2 0/0 0/0 .rodata @3873 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3873 = 1.25f; -COMPILER_STRIP_GATE(0x80484E10, &lit_3873); -#pragma pop - -/* 80484E14-80484E18 000104 0004+00 0/2 0/0 0/0 .rodata @3874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3874 = 2.0f; -COMPILER_STRIP_GATE(0x80484E14, &lit_3874); -#pragma pop - -/* 80484E18-80484E1C 000108 0004+00 0/1 0/0 0/0 .rodata @3875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3875 = 80.0f; -COMPILER_STRIP_GATE(0x80484E18, &lit_3875); -#pragma pop - -/* 80484E1C-80484E20 00010C 0004+00 0/1 0/0 0/0 .rodata @3876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3876 = -80.0f; -COMPILER_STRIP_GATE(0x80484E1C, &lit_3876); -#pragma pop - -/* 80484E20-80484E24 000110 0004+00 0/1 0/0 0/0 .rodata @3877 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3877 = -2.0f; -COMPILER_STRIP_GATE(0x80484E20, &lit_3877); -#pragma pop - -/* 80484E24-80484E28 000114 0004+00 0/1 0/0 0/0 .rodata @3878 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3878 = 39.0f; -COMPILER_STRIP_GATE(0x80484E24, &lit_3878); -#pragma pop - -/* 80484E28-80484E2C 000118 0004+00 3/6 0/0 0/0 .rodata @3879 */ -SECTION_RODATA static u8 const lit_3879[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80484E28, &lit_3879); - -/* 80484E2C-80484E30 00011C 0004+00 2/8 0/0 0/0 .rodata @3880 */ -SECTION_RODATA static f32 const lit_3880 = 1.0f; -COMPILER_STRIP_GATE(0x80484E2C, &lit_3880); - -/* 80484E30-80484E34 000120 0004+00 0/3 0/0 0/0 .rodata @3881 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3881 = -35.5f; -COMPILER_STRIP_GATE(0x80484E30, &lit_3881); -#pragma pop +u8 const daObjSwpush::Act_c::M_op_vtx[4] = {0x0D, 0x0B, 0x0A, 0x0C}; /* 80483038-80483450 0003D8 0418+00 1/1 0/0 0/0 .text Mthd_Create__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::Mthd_Create() { - // NONMATCHING -} +cPhs__Step daObjSwpush::Act_c::Mthd_Create() { + fopAcM_SetupActor(this, daObjSwpush::Act_c); -/* 80483450-8048348C 0007F0 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING + prmZ_init(); + mType = prm_get_type(); + mMdl = prm_get_mdl(); + + if (mType == 4) { + mMdl = 1; + } else if (mMdl == 15) { + mMdl = 0; + } + + cPhs__Step phase = create_res_load(); + if (phase == cPhs_COMPLEATE_e) { + scale.x *= attr().scale; + scale.z *= attr().scale; + + if (mType != 4) { + scale.y = 0.5f; + } + + field_0x5f8.x = 1.25f; + field_0x5f8.y = 0.5f; + field_0x5f8.z = 1.25f; + + if (prm_get_couple() != 0) { + scale.x *= 2.0f; + scale.z *= 2.0f; + } + + if (fopAcM_entrySolidHeap(this, solidHeapCB, M_heap_size[mMdl])) { + if (dComIfG_Bgsp().Regist(mpBgW, this)) { + phase = cPhs_ERROR_e; + } else { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(field_0x5f8); + MTXCopy(mDoMtx_stack_c::get(), mMtx); + mpBgW->ClrNoCalcVtx(); + mpBgW->SetBaseMtxP(mMtx); + mpBgW->GlobalVtx(); + mpBgW->SetBaseMtxP(NULL); + mpBgW->SetNoCalcVtx(); + field_0x5a4 = mpBgW->GetVtxTbl()[M_op_vtx[0]].y; + mpBgW->SetRideCallback(rideCB); + + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + init_mtx(); + fopAcM_setCullSizeBox(this, attr().scale * -80.0f, -2.0f, attr().scale * -80.0f, attr().scale * 80.0f, 39.0f, attr().scale * 80.0f); + mVibTimer = 0; + mRidingMode = 0; + mPrevRiding = false; + mMiniPushTimer = 0; + mMiniPushFlg = false; + mHeavyRiding = false; + mPrevHeavyRiding = false; + mPushTimer = 0; + mPushFlg = false; + mSpeed = 0.0f; + field_0x5e0 = 0; + field_0x5e4 = 0; + field_0x5f2 = 0; + field_0x5f3 = 0; + + set_btp_frame(); + + bool is_toggle = cLib_checkBit(attr().flags, FLAG_IS_TOGGLE); + bool on_is_up = cLib_checkBit(attr().flags, FLAG_ON_IS_UP); + bool flg20 = cLib_checkBit(attr().flags, FLAG_UNK20); + bool is_sw = is_switch(); + bool is_sw2 = is_switch2(); + + if ((is_toggle || (!is_sw && !on_is_up) || (is_sw && on_is_up)) && (!flg20 || !is_sw2)) { + mTargetHFrac = 1.0f; + mCurHFrac = 1.0f; + field_0x5d8 = 0.0f; + field_0x5dc = 1.0f; + field_0x5e8 = 1.0f; + mTopPos = 0.0f; + mode_upper_init(); + } else { + mTargetHFrac = 0.0f; + mCurHFrac = 0.0f; + field_0x5d8 = -35.5f; + field_0x5dc = 0.0f; + field_0x5e8 = 0.0f; + mTopPos = -35.5f; + mMiniPushTimer = 5; + mMiniPushFlg = true; + mode_lower_init(); + } + + mEventID = dComIfGp_getEventManager().getEventIdx(this, prm_get_evId()); + + OS_REPORT("踏みスイッチ<%x><%d %d>\n", fopAcM_GetParam(this), prm_get_evId() & 0xFF, mEventID); + + demo_non_init(); + Mthd_Execute(); + } + } else { + phase = cPhs_ERROR_e; + } + } + + return phase; } /* 8048348C-804834E8 00082C 005C+00 1/1 0/0 0/0 .text Mthd_Delete__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::Mthd_Delete() { - // NONMATCHING +int daObjSwpush::Act_c::Mthd_Delete() { + if (dComIfG_Bgsp().Release(mpBgW)) { + OS_REPORT_ERROR("Release Error(%s %d)\n", "d_a_obj_swpush.cpp", 777); + } + + dComIfG_resDelete(&mPhase, M_arcname[mMdl]); + return 1; } /* 804834E8-80483534 000888 004C+00 2/2 0/0 0/0 .text set_mtx__Q211daObjSwpush5Act_cFv */ void daObjSwpush::Act_c::set_mtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); } -/* 80483534-80483570 0008D4 003C+00 1/1 0/0 0/0 .text init_mtx__Q211daObjSwpush5Act_cFv - */ +/* 80483534-80483570 0008D4 003C+00 1/1 0/0 0/0 .text init_mtx__Q211daObjSwpush5Act_cFv */ void daObjSwpush::Act_c::init_mtx() { - // NONMATCHING + mpModel->setBaseScale(scale); + set_mtx(); } /* 80483570-80483574 000910 0004+00 2/2 0/0 0/0 .text set_btp_frame__Q211daObjSwpush5Act_cFv */ @@ -365,151 +347,573 @@ void daObjSwpush::Act_c::set_btp_frame() { /* empty function */ } -/* ############################################################################################## */ -/* 80484E34-80484E3C 000124 0006+02 0/1 0/0 0/0 .rodata tri_id$3921 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const tri_id[6 + 2 /* padding */] = { - 0x00, - 0x01, - 0x02, - 0x03, - 0x00, - 0x02, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80484E34, &tri_id); -#pragma pop +UNK_REL_BSS; -/* 80484E3C-80484E40 00012C 0004+00 0/3 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = -1.0f; -COMPILER_STRIP_GATE(0x80484E3C, &lit_4028); -#pragma pop +/* 80483574-80483910 000914 039C+00 1/1 0/0 0/0 .text rideCB__Q211daObjSwpush5Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ +void daObjSwpush::Act_c::rideCB(dBgW* i_bgw, fopAc_ac_c* i_ac, fopAc_ac_c* i_pt) { + Act_c* i_this = (Act_c*)i_ac; + if (fopAcM_checkStatus(i_pt, fopAcStts_FREEZE_e)) { + static cXyz no_push_vec[4] = { + cXyz(-1.0f, 0.0f, -1.0f), + cXyz(-1.0f, 0.0f, 1.0f), + cXyz(1.0f, 0.0f, 1.0f), + cXyz(1.0f, 0.0f, -1.0f), + }; -/* 80484EB0-80484EBC -00001 000C+00 0/1 0/0 0/0 .data @4518 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4518[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_non__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + cBgD_Vtx_t* vtxTbl = i_this->mpBgW->GetVtxTbl(); + cM3dGTri tri; + cXyz vecs[4]; + cXyz spa8; + int vtxnum = i_this->mpBgW->GetVtxNum(); -/* 80484EBC-80484EC8 -00001 000C+00 0/1 0/0 0/0 .data @4519 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4519[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_reqPause__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + #ifdef DEBUG + for (int i = 0; i < 4; i++) { + JUT_ASSERT(859, M_op_vtx[i] < vtxnum); + } + #endif -/* 80484EC8-80484ED4 -00001 000C+00 0/1 0/0 0/0 .data @4520 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4520[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_runPause__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + f32 fVar1 = i_this->mPrevRiding ? i_this->attr().step_down_space : i_this->attr().step_up_space; + mDoMtx_stack_c::push(); + mDoMtx_stack_c::YrotS(i_this->shape_angle.y); + mDoMtx_stack_c::scaleM(fVar1, fVar1, fVar1); + mDoMtx_stack_c::scaleM(1.25f, 1.0f, 1.25f); -/* 80484ED4-80484EE0 -00001 000C+00 0/1 0/0 0/0 .data @4521 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4521[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_reqSw__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + for (int i = 0; i < 4; i++) { + vecs[i].set(vtxTbl[M_op_vtx[i]]); + mDoMtx_stack_c::multVec(&no_push_vec[i], &spa8); + vecs[i] += spa8; + } -/* 80484EE0-80484EEC -00001 000C+00 0/1 0/0 0/0 .data @4522 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4522[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)demo_runSw__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + mDoMtx_stack_c::pop(); -/* 80484EEC-80484F28 000068 003C+00 0/1 0/0 0/0 .data demo_proc$4517 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 demo_proc[60] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + static s8 const tri_id[2][3] = { + {0, 1, 2}, + {3, 0, 2}, + }; -/* 80484F28-80484F34 -00001 000C+00 0/1 0/0 0/0 .data @4526 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4526[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_upper__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + for (int i = 0; i < 2; i++) { + tri.setPos(&vecs[tri_id[i][0]], &vecs[tri_id[i][1]], &vecs[tri_id[i][2]]); -/* 80484F34-80484F40 -00001 000C+00 0/1 0/0 0/0 .data @4527 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4527[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_u_l__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + if (cM3d_CrossY_Tri(&tri, &i_pt->current.pos)) { + if (i_this->prm_get_couple() == 0 || i_this->check_ride_couple(fopAcM_GetProfName(i_pt))) { + if (fopAcM_CheckCarryType(i_pt, fopAcM_CARRY_TYPE_1)) { + i_this->mRidingMode = 2; + } else { + i_this->mRidingMode = 1; + } -/* 80484F40-80484F4C -00001 000C+00 0/1 0/0 0/0 .data @4528 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4528[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_lower__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + bool is_player = fopAcM_GetProfName(i_pt) == PROC_ALINK; + if (is_player) { + i_this->mVibTimer = 4; + } + + if (is_player) { + if (((daPy_py_c*)i_pt)->checkEquipHeavyBoots()) { + i_this->mHeavyRiding = true; + } + } -/* 80484F4C-80484F58 -00001 000C+00 0/1 0/0 0/0 .data @4529 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4529[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_l_u__Q211daObjSwpush5Act_cFv, -}; -#pragma pop + if (fopAcM_GetProfName(i_pt) == PROC_E_MM_MT) { + i_this->field_0x5c5 = 1; + break; + } -/* 80484F58-80484F88 0000D4 0030+00 0/1 0/0 0/0 .data mode_proc$4525 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 mode_proc[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + i_this->field_0x5c5 = 0; + } -/* 80484F88-80484FA8 -00001 0020+00 1/0 0/0 0/0 .data - * Mthd_Table__Q211daObjSwpush28@unnamed@d_a_obj_swpush_cpp@ */ -static actor_method_class data_80484F88 = { - (process_method_func)func_80484C5C, - (process_method_func)func_80484C7C, - (process_method_func)func_80484C9C, - (process_method_func)func_80484CDC, - (process_method_func)func_80484CBC, -}; + break; + } + } + } +} + +/* 804839B4-80483A5C 000D54 00A8+00 1/1 0/0 0/0 .text jnodeCB__Q211daObjSwpush5Act_cFP8J3DJointi */ +int daObjSwpush::Act_c::jnodeCB(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = (J3DModel*)j3dSys.getModel(); + Act_c* i_this = (Act_c*)model->getUserArea(); + int jntNo = i_joint->getJntNo(); + mDoMtx_stack_c::copy(model->getAnmMtx(jntNo)); + mDoMtx_stack_c::transM(i_this->field_0x5d8, 0.0f, 0.0f); + model->setAnmMtx(jntNo, mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + } + + return 1; +} + +/* 80483A5C-80483B70 000DFC 0114+00 1/1 0/0 0/0 .text calc_top_pos__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::calc_top_pos() { + f32 fVar1 = attr().draw_resist; + mSpeed -= (mCurHFrac - mTargetHFrac) * attr().draw_spring; + mSpeed -= mSpeed * fVar1; + mCurHFrac += mSpeed; + field_0x5d8 = (1.0f - mCurHFrac) * -35.5f; + field_0x5d8 = cLib_minMaxLimit(field_0x5d8, -36.5f, 1.0f); + + if (field_0x5e0 > 0) { + if (--field_0x5e0 == 0) { + field_0x5dc = field_0x5e4; + } + } + + if (mMode == MODE_UPPER) { + field_0x5e8 = mCurHFrac; + } else { + field_0x5e8 = field_0x5dc; + } + + mTopPos = (1.0f - field_0x5e8) * -35.5f; + + if (mTopPos < field_0x5d8) { + mTopPos = field_0x5d8; + } +} + +/* 80483B70-80483B7C 000F10 000C+00 3/3 0/0 0/0 .text top_bg_aim_req__Q211daObjSwpush5Act_cFfs */ +void daObjSwpush::Act_c::top_bg_aim_req(f32 param_1, s16 param_2) { + field_0x5e4 = param_1; + field_0x5e0 = param_2; +} + +/* 80483B7C-80483D0C 000F1C 0190+00 1/1 0/0 0/0 .text set_push_flag__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::set_push_flag() { + if (mVibTimer != 0) { + mVibTimer--; + } + + if (mMiniPushFlg) { + if (mRidingMode != 0) { + if (mRidingMode == 2) { + mMiniPushTimer = attr().able_ride_time_middle; + } else { + mMiniPushTimer = attr().able_push_time_any; + } + } else if (--mMiniPushTimer <= 0) { + mMiniPushFlg = false; + } + } else if (mRidingMode != 0) { + if (++mMiniPushTimer >= attr().able_push_time_any) { + mMiniPushFlg = true; + } + } else { + mMiniPushTimer = 0; + } + + if (mPushFlg) { + if (mHeavyRiding) { + mPushTimer = attr().able_push_time_heavy; + } else if (--mPushTimer <= 0) { + mPushFlg = false; + } + } else if (mHeavyRiding) { + if (++mPushTimer >= attr().able_push_time_heavy) { + mPushFlg = true; + } + } else { + mPushTimer = 0; + } +} + +/* 80483D0C-80483D2C 0010AC 0020+00 2/2 0/0 0/0 .text mode_upper_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_upper_init() { + mMode = MODE_UPPER; + mTargetHFrac = 1.0f; + mChangingState = false; + mDebounceTimer = 0; +} + +/* 80483D2C-80483FA8 0010CC 027C+00 1/0 0/0 0/0 .text mode_upper__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_upper() { + bool bVar1 = false; + bool bVar2 = false; + bool pressing = false; + f32 height = 1.0f; + + if (mMiniPushFlg) { + if (cLib_checkBit(attr().flags, FLAG_REQ_HEAVY)) { + if (mPushFlg) { + pressing = true; + } else { + height = 0.9f; + } + } else { + pressing = true; + } + } + + if (prm_get_couple() != 0 && nr_ride_people(field_0x5f2) == 1 && nr_ride_people(field_0x5f3) != 1 && mDebounceTimer <= 0) { + mSpeed = attr().draw_pypcon_acc * 2.0f; + mDebounceTimer = 30; + bVar1 = true; + } else if (mDebounceTimer > 0) { + mDebounceTimer--; + } + + if (!cLib_checkBit(attr().flags, FLAG_REQ_HEAVY) && mDebounceTimer <= 0 && mRidingMode && !mPrevRiding) { + mSpeed = attr().draw_pypcon_acc; + mDebounceTimer = 30; + bVar1 = true; + } else if (mDebounceTimer > 0) { + mDebounceTimer--; + } + + bool is_sw = is_switch(); + bool bVar3 = cLib_checkBit(attr().flags, FLAG_ON_IS_UP); + if (pressing || + (cLib_checkBit(attr().flags, FLAG_OBEY_SAVE) && + ( + (is_sw && !bVar3) || + (!is_sw && bVar3) + ) + ) + ) { + if (pressing) { + mChangingState = true; + } + + bVar2 = true; + mode_u_l_init(); + } else { + mTargetHFrac = height; + top_bg_aim_req(height, 1); + } + + if (bVar2) { + demo_reqSw_init(); + } else if (bVar1 && !field_0x5c5) { + demo_reqPause_init(); + } +} + +/* 80483FA8-80484008 001348 0060+00 1/1 0/0 0/0 .text mode_u_l_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_u_l_init() { + mMode = MODE_U_L; + mTargetHFrac = 0.0f; + mSpeed = attr().draw_down_spd0; + top_bg_aim_req(0.0f, attr().bg_time_lag); +} + +/* 80484008-804841D4 0013A8 01CC+00 1/0 0/0 0/0 .text mode_u_l__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_u_l() { + if (mCurHFrac <= 0.0f) { + if (mChangingState) { + if (cLib_checkBit(attr().flags, FLAG_IS_TOGGLE)) { + rev_switch(); + } else if (cLib_checkBit(attr().flags, FLAG_ON_IS_UP)) { + off_switch(); + } else { + on_switch(); + } + + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); + } + + if (mType != 4) { + fopAcM_seStart(this, JA_SE_OBJ_FOOT_SW_ON, 0); + } else { + fopAcM_seStart(this, Z2SE_OBJ_LV3_FLR_SW_ON, 0); + } + + mode_lower_init(); + } +} + +/* 804841D4-804841F4 001574 0020+00 2/2 0/0 0/0 .text mode_lower_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_lower_init() { + mMode = MODE_LOWER; + mTargetHFrac = 0.0f; + mChangingState = false; +} + +/* 804841F4-80484388 001594 0194+00 1/0 0/0 0/0 .text mode_lower__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_lower() { + bool pressing = false; + + if (mMiniPushFlg) { + if (cLib_checkBit(attr().flags, FLAG_REQ_HEAVY)) { + if (mPushFlg) { + pressing = true; + } + } else { + pressing = true; + } + } + + bool is_sw = is_switch(); + bool is_sw2 = is_switch2(); + bool obey_save = cLib_checkBit(attr().flags, FLAG_OBEY_SAVE); + bool stay_pressed = cLib_checkBit(attr().flags, FLAG_STAY_PRESSED); + bool is_toggle = cLib_checkBit(attr().flags, FLAG_IS_TOGGLE); + bool on_is_up = cLib_checkBit(attr().flags, FLAG_ON_IS_UP); + bool flg20 = cLib_checkBit(attr().flags, FLAG_UNK20); + + bool pop_back_up = !stay_pressed && !pressing; + bool match_state_up = obey_save && + ((!is_sw && !on_is_up) || (is_sw && on_is_up)) && + !pressing; + + bool bVar5 = !(flg20 && is_sw2); + if (pop_back_up || match_state_up) { + if (bVar5) { + if (pop_back_up && !is_toggle && !pressing) { + mChangingState = true; + } + + demo_reqSw_init(); + mode_l_u_init(); + } + } +} + +/* 80484388-804843C0 001728 0038+00 1/1 0/0 0/0 .text mode_l_u_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_l_u_init() { + mMode = MODE_L_U; + mTargetHFrac = 1.0f; + top_bg_aim_req(1.0f, 1); +} + +/* 804843C0-80484570 001760 01B0+00 1/0 0/0 0/0 .text mode_l_u__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::mode_l_u() { + if (mCurHFrac >= 1.0f) { + if (mChangingState) { + if (cLib_checkBit(attr().flags, FLAG_ON_IS_UP)) { + on_switch(); + } else { + off_switch(); + } + } + + if (mType == 4) { + fopAcM_seStart(this, Z2SE_OBJ_LV3_FLR_SW_OFF, 0); + } else if (strcmp(dComIfGp_getStartStageName(), "D_MN11") == 0 || strcmp(dComIfGp_getStartStageName(), "D_MN06") == 0) { + fopAcM_seStart(this, Z2SE_OBJ_LV3_FLR_SW_OFF, 0); + } + + mode_upper_init(); + } +} + +/* 80484570-8048457C 001910 000C+00 4/4 0/0 0/0 .text demo_non_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_non_init() { + mDemoMode = DEMO_MODE_NON; +} + +/* 8048457C-80484580 00191C 0004+00 1/0 0/0 0/0 .text demo_non__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_non() { + /* empty function */ +} + +/* 80484580-804845D8 001920 0058+00 1/1 0/0 0/0 .text demo_reqPause_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_reqPause_init() { + if (mDemoMode == DEMO_MODE_NON) { + mDemoMode = DEMO_MODE_REQ_PAUSE; + fopAcM_orderPotentialEvent(this, 2, 0, 0); + eventInfo.onCondition(fopAcCnd_NOEXEC_e); + } +} + +/* 804845D8-8048460C 001978 0034+00 2/1 0/0 0/0 .text demo_reqPause__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_reqPause() { + if (eventInfo.checkCommandDemoAccrpt()) { + demo_runPause_init(); + } else { + demo_non_init(); + } +} + +/* 8048460C-8048464C 0019AC 0040+00 1/1 0/0 0/0 .text demo_runPause_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_runPause_init() { + daPy_getPlayerActorClass()->onWolfEyeKeep(); + mDemoMode = DEMO_MODE_RUN_PAUSE; + mPauseTimer = attr().demo_run_time; +} + +/* 8048464C-804846B4 0019EC 0068+00 1/0 0/0 0/0 .text demo_runPause__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_runPause() { + daPy_getPlayerActorClass()->onWolfEyeKeep(); + mPauseTimer--; + + if (mPauseTimer <= 0) { + dComIfGp_event_reset(); + demo_non_init(); + } +} + +/* 804846B4-80484708 001A54 0054+00 1/1 0/0 0/0 .text demo_stop_puase__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_stop_puase() { + if (mDemoMode == DEMO_MODE_REQ_PAUSE) { + demo_reqPause(); + } + + if (mDemoMode == DEMO_MODE_RUN_PAUSE) { + dComIfGp_event_reset(); + } +} + +static inline bool dComIfGp_evmng_existence(s16 eventIdx) { + return g_dComIfG_gameInfo.play.getEvtManager().getEventData(eventIdx) != NULL; +} + +/* 80484708-804847B4 001AA8 00AC+00 2/2 0/0 0/0 .text demo_reqSw_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_reqSw_init() { + if (dComIfGp_evmng_existence(mEventID) && (mDemoMode == DEMO_MODE_NON || mDemoMode == DEMO_MODE_REQ_PAUSE || mDemoMode == DEMO_MODE_RUN_PAUSE)) { + demo_stop_puase(); + mDemoMode = DEMO_MODE_REQ_SW; + fopAcM_orderOtherEventId(this, mEventID, prm_get_evId(), 0xFFFF, 0, 1); + eventInfo.onCondition(fopAcCnd_NOEXEC_e); + } +} + +/* 804847B4-80484828 001B54 0074+00 1/0 0/0 0/0 .text demo_reqSw__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_reqSw() { + if (eventInfo.checkCommandDemoAccrpt()) { + demo_runSw_init(); + } else { + fopAcM_orderOtherEventId(this, mEventID, prm_get_evId(), 0xFFFF, 0, 1); + eventInfo.onCondition(fopAcCnd_NOEXEC_e); + } +} + +/* 80484828-80484834 001BC8 000C+00 1/1 0/0 0/0 .text demo_runSw_init__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_runSw_init() { + mDemoMode = DEMO_MODE_RUN_SW; +} + +/* 80484834-80484890 001BD4 005C+00 1/0 0/0 0/0 .text demo_runSw__Q211daObjSwpush5Act_cFv */ +void daObjSwpush::Act_c::demo_runSw() { + if (dComIfGp_evmng_endCheck(mEventID)) { + dComIfGp_event_reset(); + demo_non_init(); + } +} + +/* 80484890-804848D8 001C30 0048+00 1/1 0/0 0/0 .text check_ride_couple__Q211daObjSwpush5Act_cFs */ +bool daObjSwpush::Act_c::check_ride_couple(s16 param_1) { + if (param_1 == PROC_ALINK) { + field_0x5f2 |= 1; + } else if (param_1 == PROC_NPC_P2) { + field_0x5f2 |= 2; + } + + return field_0x5f2 == 3; +} + +/* 804848D8-80484908 001C78 0030+00 1/1 0/0 0/0 .text nr_ride_people__Q211daObjSwpush5Act_cFc */ +int daObjSwpush::Act_c::nr_ride_people(char param_1) { + int rv = 0; + for (int i = 0; i < 8; i++) { + if (((param_1 >> i) & 1) != 0) { + rv++; + } + } + + return rv; +} + +/* 80484908-80484BB8 001CA8 02B0+00 2/2 0/0 0/0 .text Mthd_Execute__Q211daObjSwpush5Act_cFv */ +int daObjSwpush::Act_c::Mthd_Execute() { + typedef void (daObjSwpush::Act_c::*procFunc)(); + + static procFunc demo_proc[] = { + &daObjSwpush::Act_c::demo_non, + &daObjSwpush::Act_c::demo_reqPause, + &daObjSwpush::Act_c::demo_runPause, + &daObjSwpush::Act_c::demo_reqSw, + &daObjSwpush::Act_c::demo_runSw, + }; + (this->*demo_proc[mDemoMode])(); + + set_push_flag(); + + static procFunc mode_proc[] = { + &daObjSwpush::Act_c::mode_upper, + &daObjSwpush::Act_c::mode_u_l, + &daObjSwpush::Act_c::mode_lower, + &daObjSwpush::Act_c::mode_l_u, + }; + (this->*mode_proc[mMode])(); + + calc_top_pos(); + + mPrevRiding = mRidingMode != 0; + mPrevHeavyRiding = mHeavyRiding; + mRidingMode = 0; + mHeavyRiding = false; + field_0x5f3 = field_0x5f2; + field_0x5f2 = 0; + + set_mtx(); + mpBgW->CopyBackVtx(); + cBgD_Vtx_t* vtx_tbl = mpBgW->GetVtxTbl(); + int i_max = mpBgW->GetVtxNum(); + + for (int i = 0; i < 4; i++) { + JUT_ASSERT(1552, M_op_vtx[i] < i_max); + + vtx_tbl[M_op_vtx[i]].y = field_0x5a4 + mTopPos; + } + + mpBgW->Move(); + eyePos.x = current.pos.x; + eyePos.y = current.pos.y + field_0x5d8 - -35.5f; + eyePos.z = current.pos.z; + set_btp_frame(); + + daPy_py_c* player = daPy_getPlayerActorClass(); + s16 sVar1 = cLib_targetAngleY(&player->current.pos, ¤t.pos) - player->shape_angle.y; + + if (fopAcM_searchPlayerDistanceXZ(this) < KREG_F(0) + 150.0f && sVar1 < 0x4000) { + player->setForcePutPos(current.pos); + } + + return 1; +} + +/* 80484BB8-80484C5C 001F58 00A4+00 1/1 0/0 0/0 .text Mthd_Draw__Q211daObjSwpush5Act_cFv */ +int daObjSwpush::Act_c::Mthd_Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mpModel); + dComIfGd_setList(); + return 1; +} + +namespace daObjSwpush { +namespace { + cPhs__Step Mthd_Create(void* i_this) { + return static_cast(i_this)->Mthd_Create(); + } + + int Mthd_Delete(void* i_this) { + return static_cast(i_this)->Mthd_Delete(); + } + + int Mthd_Execute(void* i_this) { + return static_cast(i_this)->Mthd_Execute(); + } + + int Mthd_Draw(void* i_this) { + return static_cast(i_this)->Mthd_Draw(); + } + + int Mthd_IsDelete(void* i_this) { + return 1; + } + + /* 80484F88-80484FA8 -00001 0020+00 1/0 0/0 0/0 .data Mthd_Table__Q211daObjSwpush28@unnamed@d_a_obj_swpush_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 +}; // namespace daObjSwpush + +AUDIO_INSTANCES; /* 80484FA8-80484FD8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Swpush */ extern actor_process_profile_definition g_profile_Obj_Swpush = { @@ -518,565 +922,13 @@ extern actor_process_profile_definition g_profile_Obj_Swpush = { fpcPi_CURRENT_e, // mListPrio PROC_Obj_Swpush, // mProcName &g_fpcLf_Method.base, // sub_method - sizeof(daObjSwpush), // mSize + sizeof(daObjSwpush::Act_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method 11, // mPriority - &data_80484F88, // sub_method + &daObjSwpush::Mthd_Table, // sub_method 0x00040100, // mStatus fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80484FD8-80484FE4 000154 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGTri */ -SECTION_DATA extern void* __vt__8cM3dGTri[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGTriFv, -}; - -/* 80484FE4-80484FF0 000160 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 80484FF8-80484FFC 000008 0001+03 1/1 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 80484FFC-80485000 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 - -/* 80485000-80485004 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 - -/* 80485004-80485008 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 - -/* 80485008-8048500C 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 - -/* 8048500C-80485010 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 - -/* 80485010-80485014 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 - -/* 80485014-80485018 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 - -/* 80485018-8048501C 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 - -/* 8048501C-80485020 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 - -/* 80485020-80485024 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 - -/* 80485024-80485028 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 - -/* 80485028-8048502C 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 - -/* 8048502C-80485030 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 - -/* 80485030-80485034 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 - -/* 80485034-80485038 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 - -/* 80485038-80485048 000048 000C+04 0/1 0/0 0/0 .bss @3915 */ -#pragma push -#pragma force_active on -static u8 lit_3915[12 + 4 /* padding */]; -#pragma pop - -/* 80485048-80485054 000058 000C+00 0/1 0/0 0/0 .bss @3918 */ -#pragma push -#pragma force_active on -static u8 lit_3918[12]; -#pragma pop - -/* 80485054-80485060 000064 000C+00 0/1 0/0 0/0 .bss @3919 */ -#pragma push -#pragma force_active on -static u8 lit_3919[12]; -#pragma pop - -/* 80485060-8048506C 000070 000C+00 0/1 0/0 0/0 .bss @3920 */ -#pragma push -#pragma force_active on -static u8 lit_3920[12]; -#pragma pop - -/* 8048506C-8048509C 00007C 0030+00 0/1 0/0 0/0 .bss no_push_vec$3914 */ -#pragma push -#pragma force_active on -static u8 no_push_vec[48]; -#pragma pop - -/* 80483574-80483910 000914 039C+00 1/1 0/0 0/0 .text - * rideCB__Q211daObjSwpush5Act_cFP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ -void daObjSwpush::Act_c::rideCB(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) { - // NONMATCHING -} - -/* 80483910-8048396C 000CB0 005C+00 1/0 0/0 0/0 .text __dt__8cM3dGTriFv */ -// cM3dGTri::~cM3dGTri() { -extern "C" void __dt__8cM3dGTriFv() { - // NONMATCHING -} - -/* 8048396C-804839B4 000D0C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* 804839B4-80483A5C 000D54 00A8+00 1/1 0/0 0/0 .text jnodeCB__Q211daObjSwpush5Act_cFP8J3DJointi - */ -void daObjSwpush::Act_c::jnodeCB(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80484E40-80484E44 000130 0004+00 0/1 0/0 0/0 .rodata @4097 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4097 = -36.5f; -COMPILER_STRIP_GATE(0x80484E40, &lit_4097); -#pragma pop - -/* 80483A5C-80483B70 000DFC 0114+00 1/1 0/0 0/0 .text calc_top_pos__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::calc_top_pos() { - // NONMATCHING -} - -/* 80483B70-80483B7C 000F10 000C+00 3/3 0/0 0/0 .text top_bg_aim_req__Q211daObjSwpush5Act_cFfs */ -void daObjSwpush::Act_c::top_bg_aim_req(f32 param_0, s16 param_1) { - // NONMATCHING -} - -/* 80483B7C-80483D0C 000F1C 0190+00 1/1 0/0 0/0 .text set_push_flag__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::set_push_flag() { - // NONMATCHING -} - -/* 80483D0C-80483D2C 0010AC 0020+00 2/2 0/0 0/0 .text mode_upper_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::mode_upper_init() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80484E44-80484E48 000134 0004+00 0/1 0/0 0/0 .rodata @4214 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4214 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80484E44, &lit_4214); -#pragma pop - -/* 80483D2C-80483FA8 0010CC 027C+00 1/0 0/0 0/0 .text mode_upper__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::mode_upper() { - // NONMATCHING -} - -/* 80483FA8-80484008 001348 0060+00 1/1 0/0 0/0 .text mode_u_l_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::mode_u_l_init() { - // NONMATCHING -} - -/* 80484008-804841D4 0013A8 01CC+00 1/0 0/0 0/0 .text mode_u_l__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::mode_u_l() { - // NONMATCHING -} - -/* 804841D4-804841F4 001574 0020+00 2/2 0/0 0/0 .text mode_lower_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::mode_lower_init() { - // NONMATCHING -} - -/* 804841F4-80484388 001594 0194+00 1/0 0/0 0/0 .text mode_lower__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::mode_lower() { - // NONMATCHING -} - -/* 80484388-804843C0 001728 0038+00 1/1 0/0 0/0 .text mode_l_u_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::mode_l_u_init() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80484E4C-80484E4C 00013C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80484E76 = "D_MN11"; -SECTION_DEAD static char const* const stringBase_80484E7D = "D_MN06"; -#pragma pop - -/* 804843C0-80484570 001760 01B0+00 1/0 0/0 0/0 .text mode_l_u__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::mode_l_u() { - // NONMATCHING -} - -/* 80484570-8048457C 001910 000C+00 4/4 0/0 0/0 .text demo_non_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::demo_non_init() { - // NONMATCHING -} - -/* 8048457C-80484580 00191C 0004+00 1/0 0/0 0/0 .text demo_non__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::demo_non() { - /* empty function */ -} - -/* 80484580-804845D8 001920 0058+00 1/1 0/0 0/0 .text demo_reqPause_init__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::demo_reqPause_init() { - // NONMATCHING -} - -/* 804845D8-8048460C 001978 0034+00 2/1 0/0 0/0 .text demo_reqPause__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::demo_reqPause() { - // NONMATCHING -} - -/* 8048460C-8048464C 0019AC 0040+00 1/1 0/0 0/0 .text demo_runPause_init__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::demo_runPause_init() { - // NONMATCHING -} - -/* 8048464C-804846B4 0019EC 0068+00 1/0 0/0 0/0 .text demo_runPause__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::demo_runPause() { - // NONMATCHING -} - -/* 804846B4-80484708 001A54 0054+00 1/1 0/0 0/0 .text demo_stop_puase__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::demo_stop_puase() { - // NONMATCHING -} - -/* 80484708-804847B4 001AA8 00AC+00 2/2 0/0 0/0 .text demo_reqSw_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::demo_reqSw_init() { - // NONMATCHING -} - -/* 804847B4-80484828 001B54 0074+00 1/0 0/0 0/0 .text demo_reqSw__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::demo_reqSw() { - // NONMATCHING -} - -/* 80484828-80484834 001BC8 000C+00 1/1 0/0 0/0 .text demo_runSw_init__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::demo_runSw_init() { - // NONMATCHING -} - -/* 80484834-80484890 001BD4 005C+00 1/0 0/0 0/0 .text demo_runSw__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::demo_runSw() { - // NONMATCHING -} - -/* 80484890-804848D8 001C30 0048+00 1/1 0/0 0/0 .text check_ride_couple__Q211daObjSwpush5Act_cFs - */ -void daObjSwpush::Act_c::check_ride_couple(s16 param_0) { - // NONMATCHING -} - -/* 804848D8-80484908 001C78 0030+00 1/1 0/0 0/0 .text nr_ride_people__Q211daObjSwpush5Act_cFc */ -void daObjSwpush::Act_c::nr_ride_people(char param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80484E48-80484E4C 000138 0004+00 0/1 0/0 0/0 .rodata @4554 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4554 = 150.0f; -COMPILER_STRIP_GATE(0x80484E48, &lit_4554); -#pragma pop - -/* 8048509C-804850A0 -00001 0004+00 1/1 0/0 0/0 .bss None */ -/* 8048509C 0001+00 data_8048509C None */ -/* 8048509D 0003+00 data_8048509D None */ -static u8 struct_8048509C[4]; - -/* 80484908-80484BB8 001CA8 02B0+00 2/2 0/0 0/0 .text Mthd_Execute__Q211daObjSwpush5Act_cFv */ -void daObjSwpush::Act_c::Mthd_Execute() { - // NONMATCHING -} - -/* 80484BB8-80484C5C 001F58 00A4+00 1/1 0/0 0/0 .text Mthd_Draw__Q211daObjSwpush5Act_cFv - */ -void daObjSwpush::Act_c::Mthd_Draw() { - // NONMATCHING -} - -/* 80484C5C-80484C7C 001FFC 0020+00 1/0 0/0 0/0 .text - * Mthd_Create__Q211daObjSwpush28@unnamed@d_a_obj_swpush_cpp@FPv */ -static void func_80484C5C() { - // NONMATCHING -} - -/* 80484C7C-80484C9C 00201C 0020+00 1/0 0/0 0/0 .text - * Mthd_Delete__Q211daObjSwpush28@unnamed@d_a_obj_swpush_cpp@FPv */ -static void func_80484C7C() { - // NONMATCHING -} - -/* 80484C9C-80484CBC 00203C 0020+00 1/0 0/0 0/0 .text - * Mthd_Execute__Q211daObjSwpush28@unnamed@d_a_obj_swpush_cpp@FPv */ -static void func_80484C9C() { - // NONMATCHING -} - -/* 80484CBC-80484CDC 00205C 0020+00 1/0 0/0 0/0 .text - * Mthd_Draw__Q211daObjSwpush28@unnamed@d_a_obj_swpush_cpp@FPv */ -static void func_80484CBC() { - // NONMATCHING -} - -/* 80484CDC-80484CE4 00207C 0008+00 1/0 0/0 0/0 .text - * Mthd_IsDelete__Q211daObjSwpush28@unnamed@d_a_obj_swpush_cpp@FPv */ -static bool func_80484CDC() { - return true; -} - -/* 80484CE4-80484D00 002084 001C+00 8/8 0/0 0/0 .text - * PrmAbstract__5daObjFPC10fopAc_ac_cQ311daObjSwpush5Act_c5Prm_eQ311daObjSwpush5Act_c5Prm_e - */ -extern "C" void func_80484CE4(void* _this, fopAc_ac_c const* param_0, - daObjSwpush::Act_c::Prm_e param_1, - daObjSwpush::Act_c::Prm_e param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804850A0-804850A4 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_804850A0[4]; -#pragma pop - -/* 804850A4-804850A8 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_804850A4[4]; -#pragma pop - -/* 804850A8-804850AC 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804850A8[4]; -#pragma pop - -/* 804850AC-804850B0 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804850AC[4]; -#pragma pop - -/* 804850B0-804850B4 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804850B0[4]; -#pragma pop - -/* 804850B4-804850B8 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804850B4[4]; -#pragma pop - -/* 804850B8-804850BC 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_804850B8[4]; -#pragma pop - -/* 804850BC-804850C0 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804850BC[4]; -#pragma pop - -/* 804850C0-804850C4 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804850C0[4]; -#pragma pop - -/* 804850C4-804850C8 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_804850C4[4]; -#pragma pop - -/* 804850C8-804850CC 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804850C8[4]; -#pragma pop - -/* 804850CC-804850D0 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804850CC[4]; -#pragma pop - -/* 804850D0-804850D4 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_804850D0[4]; -#pragma pop - -/* 804850D4-804850D8 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804850D4[4]; -#pragma pop - -/* 804850D8-804850DC 0000E8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804850D8[4]; -#pragma pop - -/* 804850DC-804850E0 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_804850DC[4]; -#pragma pop - -/* 804850E0-804850E4 0000F0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_804850E0[4]; -#pragma pop - -/* 804850E4-804850E8 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804850E4[4]; -#pragma pop - -/* 804850E8-804850EC 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_804850E8[4]; -#pragma pop - -/* 804850EC-804850F0 0000FC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_804850EC[4]; -#pragma pop - -/* 804850F0-804850F4 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_804850F0[4]; -#pragma pop - -/* 804850F4-804850F8 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804850F4[4]; -#pragma pop - -/* 804850F8-804850FC 000108 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804850F8[4]; -#pragma pop - -/* 804850FC-80485100 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804850FC[4]; -#pragma pop - -/* 80485100-80485104 000110 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80485100[4]; -#pragma pop - -/* 80484E4C-80484E4C 00013C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */