From d640fb8b9dd7cf99b8f118c760da63b0e3e57b89 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Sat, 5 Apr 2025 18:36:27 -0400 Subject: [PATCH] d_a_fr and d_a_obj_lp work (#2372) * Initial d_a_fr work * general d_a_fr work * Pull request cleanup * d_a_obj_lp almost matching * Fixed compile error --- include/d/actor/d_a_fr.h | 62 +- include/d/actor/d_a_mg_rod.h | 5 +- include/d/actor/d_a_obj_lp.h | 55 +- src/d/actor/d_a_fr.cpp | 1395 +++++++++++++++++----------------- src/d/actor/d_a_obj_lp.cpp | 1176 +++++++++++----------------- 5 files changed, 1262 insertions(+), 1431 deletions(-) diff --git a/include/d/actor/d_a_fr.h b/include/d/actor/d_a_fr.h index 1a6505643c6..09684b11226 100644 --- a/include/d/actor/d_a_fr.h +++ b/include/d/actor/d_a_fr.h @@ -1,7 +1,11 @@ #ifndef D_A_FR_H #define D_A_FR_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_msg_flow.h" #include "dolphin/types.h" +#include "SSystem/SComponent/c_phase.h" #include "f_op/f_op_actor_mng.h" /** @@ -13,16 +17,66 @@ * */ class fr_class : public fopAc_ac_c { -private: - /* 0x568 */ u8 field_0x568[0x9e8 - 0x568]; +public: + /* 0x568 */ u8 field_0x568[0x5ac - 0x568]; + /* 0x5AC */ request_of_phase_process_class mPhase; + /* 0x5B4 */ u8 field_0x5b4; + /* 0x5B5 */ u8 field_0x5b5[0x5c4 - 0x5b5]; + /* 0x5C4 */ mDoExt_McaMorf* mMorf; + /* 0x5C8 */ mDoExt_btkAnm* mBtkAnm; + /* 0x5CC */ u8 field_0x5cc; + /* 0x5CD */ s8 field_0x5cd; + /* 0x5CE */ s8 field_0x5ce; + /* 0x5CF */ u8 field_0x5cf; + /* 0x5D0 */ s16 field_0x5d0; + /* 0x5D2 */ s16 field_0x5d2; + /* 0x5D4 */ s16 field_0x5d4; + /* 0x5D6 */ u8 field_0x5d6[0x5d8 - 0x5d6]; + /* 0x5D8 */ f32 field_0x5d8; + /* 0x5DC */ s16 field_0x5dc[4]; + /* 0x5E4 */ s16 field_0x5e4; + /* 0x5E6 */ u8 field_0x5e6[0x5e8 - 0x5e6]; + /* 0x5E8 */ f32 field_0x5e8; + /* 0x5EC */ s8 field_0x5ec; + /* 0x5ED */ u8 field_0x5ed[0x5f0 - 0x5ed]; + /* 0x5F0 */ f32 field_0x5f0; + /* 0x5F4 */ f32 field_0x5f4; + /* 0x5F8 */ fpc_ProcID field_0x5f8; + /* 0x5FC */ s16 field_0x5fc; + /* 0x5FE */ u8 field_0x5fe[0x600 - 0x5fe]; + /* 0x600 */ f32 field_0x600; + /* 0x604 */ dBgS_AcchCir mAcchCir; + /* 0x644 */ dBgS_ObjAcch mAcch; + /* 0x81C */ dCcD_Stts mStts; + /* 0x858 */ dCcD_Sph mSph; + /* 0x990 */ u8 field_0x990; + /* 0x991 */ s8 field_0x991; + /* 0x992 */ s16 field_0x992; + /* 0x994 */ s16 field_0x994; + /* 0x998 */ dMsgFlow_c mMsgFlow; + /* 0x9E4 */ u8 field_0x9e4; + /* 0x9E5 */ u8 field_0x9e5[0x9e8 - 0x9e5]; }; STATIC_ASSERT(sizeof(fr_class) == 0x9e8); -class daFr_HIO_c { +class daFr_HIO_c : public JORReflexible { public: /* 805198EC */ daFr_HIO_c(); - /* 8051B920 */ ~daFr_HIO_c(); + /* 8051B920 */ virtual ~daFr_HIO_c() {}; + + void genMessage(JORMContext*); + + /* 0x04 */ s8 field_0x4; + /* 0x08 */ f32 field_0x8; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; }; diff --git a/include/d/actor/d_a_mg_rod.h b/include/d/actor/d_a_mg_rod.h index 721dd52fbca..20963aebf0c 100644 --- a/include/d/actor/d_a_mg_rod.h +++ b/include/d/actor/d_a_mg_rod.h @@ -24,7 +24,7 @@ struct mg_hook_s { /* 0x18 */ u8 field_0x18[0x20 - 0x18]; }; -struct wd_ss {}; +struct wd_ss; /** * @ingroup actors-items @@ -78,7 +78,8 @@ public: /* 0x11D0 */ dBgS_ObjAcch field_0x11d0; /* 0x13A8 */ u8 field_0x13a8[0x13B4 - 0x13A8]; /* 0x13B4 */ s16 field_0x13b4; - /* 0x13B6 */ u8 field_0x13b6[0x1474 - 0x13B6]; + /* 0x13B6 */ s16 field_0x13b6; + /* 0x13B8 */ u8 field_0x13b8[0x1474 - 0x13B8]; /* 0x1474 */ dMsgFlow_c mMsgFlow; /* 0x14C0 */ u8 field_0x14c0[0x14C8 - 0x14C0]; /* 0x14C8 */ f32 mRodStickX; diff --git a/include/d/actor/d_a_obj_lp.h b/include/d/actor/d_a_obj_lp.h index 86a85028993..dcba5ac809a 100644 --- a/include/d/actor/d_a_obj_lp.h +++ b/include/d/actor/d_a_obj_lp.h @@ -3,12 +3,6 @@ #include "f_op/f_op_actor_mng.h" -struct wd_ss { -public: - /* 80C559C8 */ ~wd_ss(); - /* 80C55A04 */ wd_ss(); -}; - /** * @ingroup actors-objects * @class obj_lp_class @@ -17,9 +11,54 @@ public: * @details * */ + +struct wd_ss { +public: + /* 80C559C8 */ ~wd_ss() {}; + /* 80C55A04 */ wd_ss() {}; + + /* 0x00 */ J3DModel* mpModel; + /* 0x04 */ cXyz field_0x4; + /* 0x10 */ cXyz field_0x10; + /* 0x1C */ cXyz field_0x1c; + /* 0x28 */ cXyz field_0x28; + /* 0x34 */ s16 field_0x34; + /* 0x36 */ s16 field_0x36; + /* 0x38 */ s16 field_0x38; + /* 0x3A */ u8 field_0x3a[0x3c - 0x3a]; + /* 0x3C */ f32 field_0x3c; + /* 0x40 */ s16 field_0x40; + /* 0x42 */ s16 field_0x42; + /* 0x44 */ s16 field_0x44; + /* 0x46 */ u8 field_0x46[0x4e - 0x46]; + /* 0x4E */ u8 field_0x4e; + /* 0x4F */ u8 field_0x4f; + /* 0x50 */ int field_0x50; +}; + +STATIC_ASSERT(sizeof(wd_ss) == 0x54); + class obj_lp_class : public fopAc_ac_c { -private: - /* 0x568 */ u8 field_0x568[0xadb8 - 0x568]; +public: + /* 0x0568 */ request_of_phase_process_class mPhase; + /* 0x0570 */ u8 field_0x570; + /* 0x0571 */ u8 field_0x571; + /* 0x0572 */ u8 field_0x572; + /* 0x0573 */ u8 field_0x573; + /* 0x0574 */ s16 field_0x574; + /* 0x0576 */ u8 field_0x576[0x57c - 0x576]; + /* 0x057C */ wd_ss mWdSs[512]; + /* 0xAD7C */ mDoExt_3DlineMat0_c field_0xad7c; + /* 0xAD98 */ int field_0xad98; + /* 0xAD9C */ cXyz field_0xad9c; + /* 0xADA8 */ f32 field_0xada8; + /* 0xADAC */ f32 field_0xadac; + /* 0xADB0 */ u8 field_0xadb0; + /* 0xADB1 */ u8 field_0xadb1; + /* 0xADB2 */ u8 field_0xadb2; + /* 0xADB3 */ u8 field_0xadb3; + /* 0xADB4 */ u8 field_0xadb4; + /* 0xADB5 */ u8 field_0xadb5[0xadb8 - 0xadb5]; }; STATIC_ASSERT(sizeof(obj_lp_class) == 0xadb8); diff --git a/src/d/actor/d_a_fr.cpp b/src/d/actor/d_a_fr.cpp index 7fbf03c1e8e..be99fd6dad5 100644 --- a/src/d/actor/d_a_fr.cpp +++ b/src/d/actor/d_a_fr.cpp @@ -4,220 +4,722 @@ */ #include "d/actor/d_a_fr.h" +#include "d/d_com_inf_game.h" +#include "f_op/f_op_kankyo_mng.h" +#include "d/actor/d_a_player.h" +#include "SSystem/SComponent/c_lib.h" +#include "c/c_damagereaction.h" +#include "d/actor/d_a_obj_lp.h" #include "dol2asm.h" +/* 805198EC-8051994C 0000EC 0060+00 1/1 0/0 0/0 .text __ct__10daFr_HIO_cFv */ +daFr_HIO_c::daFr_HIO_c() { + field_0x4 = -1; + field_0x8 = 10.0f; + field_0xc = 20.0f; + field_0x10 = -5.0f; + field_0x14 = 300.0f; + field_0x18 = 300.0f; + field_0x1c = 15.0f; + field_0x20 = 20.0f; + field_0x24 = 5.0f; + field_0x28 = 6.0f; +} +/* 8051994C-805199F4 00014C 00A8+00 7/7 0/0 0/0 .text anm_init__FP8fr_classifUcf */ +static void anm_init(fr_class* i_this, int i_index, f32 i_morf, u8 i_mode, f32 i_speed) { + i_this->mMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("Fr", i_index), + i_mode, i_morf, i_speed, 0.0f, -1.0f, NULL); +} -// -// Forward References: -// +/* 805199F4-80519AB8 0001F4 00C4+00 1/0 0/0 0/0 .text daFr_Draw__FP8fr_class */ +static int daFr_Draw(fr_class* i_this) { + J3DModel* model = i_this->mMorf->getModel(); -extern "C" void __ct__10daFr_HIO_cFv(); -extern "C" static void anm_init__FP8fr_classifUcf(); -extern "C" static void daFr_Draw__FP8fr_class(); -extern "C" static void sibuki_set__FP8fr_class(); -extern "C" static void s_wd_sub__FPvPv(); -extern "C" static void wd_check__FP8fr_class(); -extern "C" static void way_bg_check__FP8fr_class(); -extern "C" static void fr_normal__FP8fr_class(); -extern "C" static void fr_away__FP8fr_class(); -extern "C" static void fr_s_normal__FP8fr_class(); -extern "C" static void fr_s_wait__FP8fr_class(); -extern "C" static void fr_s_away__FP8fr_class(); -extern "C" static void fr_eat__FP8fr_class(); -extern "C" static void swim_on__FP8fr_class(); -extern "C" static void swim_off__FP8fr_class(); -extern "C" static void fr_message__FP8fr_class(); -extern "C" static void action__FP8fr_class(); -extern "C" static void message__FP8fr_class(); -extern "C" static void daFr_Execute__FP8fr_class(); -extern "C" static bool daFr_IsDelete__FP8fr_class(); -extern "C" static void daFr_Delete__FP8fr_class(); -extern "C" static void useHeapIfrt__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daFr_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__10daFr_HIO_cFv(); -extern "C" void __sinit_d_a_fr_cpp(); -extern "C" static void func_8051B9A4(); -extern "C" static void func_8051B9AC(); -extern "C" extern char const* const d_a_fr__stringBase0; + g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &i_this->tevStr); -// -// External References: -// + J3DModelData* modelData = model->getModelData(); + i_this->mBtkAnm->entry(modelData); + i_this->mMorf->entryDL(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void -__ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl(); -extern "C" void setAnm__14mDoExt_McaMorfFP15J3DAnmTransformiffffPv(); -extern "C" void play__14mDoExt_McaMorfFP3VecUlSc(); -extern "C" void entryDL__14mDoExt_McaMorfFv(); -extern "C" void modelCalc__14mDoExt_McaMorfFv(); -extern "C" void cDmrNowMidnaTalk__Fv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" bool fopAcM_riverStream__FP4cXyzPsPff(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); + if (!i_this->field_0x5ec) { + dComIfGd_setSimpleShadow(&i_this->current.pos, i_this->mAcch.m_ground_h, i_this->scale.x * 10.0f, + i_this->mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } -// -// Declarations: -// + return 1; +} -/* ############################################################################################## */ -/* 8051B9C8-8051B9CC 000000 0004+00 15/15 0/0 0/0 .rodata @3649 */ -SECTION_RODATA static f32 const lit_3649 = 10.0f; -COMPILER_STRIP_GATE(0x8051B9C8, &lit_3649); +/* 80519AB8-80519B14 0002B8 005C+00 1/1 0/0 0/0 .text sibuki_set__FP8fr_class */ +static void sibuki_set(fr_class* i_this) { + cXyz sp18 = i_this->current.pos; + sp18.y = i_this->field_0x5f0; + fopKyM_createWpillar(&sp18, i_this->scale.x * 0.3f, 0); +} -/* 8051B9CC-8051B9D0 000004 0004+00 1/6 0/0 0/0 .rodata @3650 */ -SECTION_RODATA static f32 const lit_3650 = 20.0f; -COMPILER_STRIP_GATE(0x8051B9CC, &lit_3650); +/* 80519B14-80519B60 000314 004C+00 1/1 0/0 0/0 .text s_wd_sub__FPvPv */ +static void* s_wd_sub(void* param_1, void* param_2) { + if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_OBJ_LP) { + return param_1; + } + + return NULL; +} + +/* 80519B60-80519D28 000360 01C8+00 1/1 0/0 0/0 .text wd_check__FP8fr_class */ +static wd_ss* wd_check(fr_class* i_this) { + obj_lp_class* mLilyPad = (obj_lp_class*)fpcM_Search(s_wd_sub, i_this); + if (mLilyPad) { + wd_ss* mWdSs = mLilyPad->mWdSs; + for (int i = 0; i < mLilyPad->field_0xad98; i++, mWdSs++) { + cXyz sp48 = mWdSs->field_0x10 - i_this->current.pos; + if (sp48.abs() < mWdSs->field_0x3c * 22.0f) { + return mWdSs; + } + } + } + + return NULL; +} + +/* 80519D28-80519E24 000528 00FC+00 4/4 0/0 0/0 .text way_bg_check__FP8fr_class */ +static bool way_bg_check(fr_class* i_this) { + // NONMATCHING + + cXyz sp90 = i_this->current.pos; + sp90.y += 20.0f; + + cMtx_YrotS(*calc_mtx, i_this->shape_angle.y); + + cXyz sp9c; + cXyz spa8(0.0f, 0.0f, 50.0f); + MtxPosition(&spa8, &sp9c); + sp9c += sp90; + + dBgS_LinChk dStack_84; + dStack_84.Set(&sp90, &sp90, i_this); + + if (dComIfG_Bgsp().LineCross(&dStack_84)) { + return true; + } else { + return false; + } +} + +/* 8051BC10-8051BC14 000008 0004+00 2/2 0/0 0/0 .bss None */ +static u8 data_8051BC10[4]; + +/* 8051BC14-8051BC20 00000C 000C+00 1/1 0/0 0/0 .bss @3644 */ +static u8 lit_3644[12]; + +/* 8051BC20-8051BC4C 000018 002C+00 9/9 0/0 0/0 .bss l_HIO */ +static daFr_HIO_c l_HIO; + +/* 80519E24-8051A0D8 000624 02B4+00 1/2 0/0 0/0 .text fr_normal__FP8fr_class */ +static void fr_normal(fr_class* i_this) { + // NONMATCHING + switch (i_this->field_0x5d2) { + case 0: + i_this->field_0x5d4 = 1; + anm_init(i_this, 11, 5.0f, 2, cM_rndF(0.3f) + 0.8f); + i_this->field_0x5dc[0] = cM_rndF(50.0f) + 20.0f; + i_this->speedF = 0.0f; + break; + case 1: + if (!i_this->field_0x5dc[0]) { + if (i_this->mMorf->getFrame() == 14) { + i_this->field_0x5d4++; + anm_init(i_this, 7, 5.0f, 0, 2.0f); + } + } + break; + case 2: + if (i_this->mMorf->isStop()) { + anm_init(i_this, 8, 1.0f, 0, 1.0f); + i_this->speedF = l_HIO.field_0x8 + cM_rndFX(l_HIO.field_0x8 * 0.5f); + i_this->speed.y = l_HIO.field_0xc + cM_rndFX(l_HIO.field_0xc * 0.5f); + + if (way_bg_check(i_this)) { + i_this->field_0x5e8 = l_HIO.field_0x14; + } else { + i_this->current.angle.y += -0x8000; + cLib_addCalcAngleS2(&i_this->current.angle.y, + cM_atan2s((i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8)) - i_this->current.pos.x, + (i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z)), + 1, 0x2000); + } + + i_this->field_0x5d4++; + } + break; + case 3: + if (i_this->mAcch.ChkGroundHit() || i_this->field_0x5ce) { + i_this->field_0x5d4++; + anm_init(i_this, 9, 1.0f, 0, 2.0f); + i_this->speedF = 0.0f; + } + break; + case 4: + if (i_this->mMorf->isStop()) { + i_this->field_0x5d4 = 0; + } + } +} + +/* 8051A0D8-8051A318 0008D8 0240+00 1/2 0/0 0/0 .text fr_away__FP8fr_class */ +static void fr_away(fr_class* i_this) { + // NONMATCHING + switch (i_this->field_0x5d4) { + case 0: + i_this->field_0x5d4 = 1; + i_this->speedF = 0.0f; + anm_init(i_this, 7, 3.0f, 0, 4.0f); + break; + case 1: + if (i_this->mMorf->isStop()) { + anm_init(i_this, 8, 1.0f, 0, 1.0f); + i_this->speedF = l_HIO.field_0x1c + cM_rndFX(l_HIO.field_0x1c * 0.5f); + i_this->speed.y = l_HIO.field_0x20 + cM_rndFX(l_HIO.field_0x20 * 0.5f); + + if (way_bg_check(i_this)) { + i_this->current.angle.y += -0x8000; + } else { + cLib_addCalcAngleS2(&i_this->current.angle.y, + fopAcM_searchPlayerAngleY(i_this) + cM_rndFX(8000.0f) + -0x8000, 1, + 0x2000); + } + + i_this->field_0x5d4++; + } + break; + case 2: + if (i_this->mAcch.ChkGroundHit() || i_this->field_0x5ce != 0) { + i_this->field_0x5d4++; + anm_init(i_this, 9, 1.0f, 0, 4.0f); + i_this->speedF = 0.0f; + } + break; + case 3: + if (i_this->mMorf->isStop()) { + i_this->field_0x5d4 = 0; + if ((l_HIO.field_0x18 + 200.0f) < i_this->field_0x5d8) { + i_this->field_0x5d2 = 0; + } + } + } +} + +/* 8051A318-8051A558 000B18 0240+00 1/1 0/0 0/0 .text fr_s_normal__FP8fr_class */ +static void fr_s_normal(fr_class* i_this) { + // NONMATCHING + switch (i_this->field_0x5d4) { + case 0: + i_this->field_0x5d4++; + anm_init(i_this, 10, 5.0f, 2, cM_rndF(0.3f) + 1.5f); + i_this->field_0x5cc = 0; + i_this->field_0x5dc[0] = cM_rndF(100.0f) + 50.0f; + if (l_HIO.field_0x24 < i_this->speedF) { + i_this->speedF = l_HIO.field_0x24; + } + break; + case 1: + if (i_this->mMorf->getFrame() > 9) { + if (i_this->mMorf->getFrame() < 0x1a) { + cLib_addCalc2(&i_this->speedF, l_HIO.field_0x24, 1.0f, l_HIO.field_0x24 * 0.2f); + if (i_this->mMorf->getFrame() > 9) { + if (i_this->mMorf->getFrame() < 16 && i_this->field_0x5cc == 0) { + if (way_bg_check(i_this)) { + i_this->current.angle.y += -0x8000; + } else { + i_this->field_0x5e8 = l_HIO.field_0x14; + + cXyz sp28; + sp28.x = i_this->home.pos.x + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.x; + sp28.z = i_this->home.pos.z + cM_rndFX(i_this->field_0x5e8) - i_this->current.pos.z; + s16 sVar2 = cM_atan2s(sp28.x, sp28.z); + cLib_addCalcAngleS2(&i_this->current.angle.y, sVar2, 1, 0x2000); + } + + i_this->field_0x5cc = 1; + } + } + + if (i_this->mMorf->getFrame() < 20) { + return; + } + i_this->field_0x5cc = 0; + return; + } + } + + cLib_addCalc0(&i_this->speedF, 1.0f, l_HIO.field_0x24 * 0.05f); + if (i_this->field_0x5dc[0] == 0) { + i_this->field_0x5d2 = 0x1e; + i_this->field_0x5d4 = 0; + } + } +} + +/* 8051A558-8051A620 000D58 00C8+00 1/1 0/0 0/0 .text fr_s_wait__FP8fr_class */ +static void fr_s_wait(fr_class* i_this) { + // NONMATCHING + switch (i_this->field_0x5d4) { + case 0: + i_this->field_0x5d4++; + anm_init(i_this, 10, 30.0f, 2, 0.0f); + i_this->field_0x5dc[0] = cM_rndF(300.0f) + 100.0f; + case 1: + i_this->mMorf->setFrame(13.0f); + cLib_addCalc0(&i_this->speedF, 1.0f, 0.15f); + if (i_this->field_0x5dc[0] == 0) { + i_this->field_0x5d2 = 20; + i_this->field_0x5d4 = 0; + }; + } + +} + +/* 8051A620-8051A820 000E20 0200+00 1/1 0/0 0/0 .text fr_s_away__FP8fr_class */ +static void fr_s_away(fr_class* i_this) { + // NONMATCHING + switch (i_this->field_0x5d4) { + case 0: + i_this->field_0x5d4++; + anm_init(i_this, 10, 5.0f, 2, cM_rndF(0.3f) + 2.0f); + i_this->field_0x5cc = 0; + break; + case 1: + if (i_this->mMorf->getFrame() > 9) { + if (i_this->mMorf->getFrame() > 0x1a) { + cLib_addCalc2(&i_this->speedF, l_HIO.field_0x28, 1.0f, l_HIO.field_0x28 * 0.2f); + if (i_this->mMorf->getFrame() > 9) { + if (i_this->mMorf->getFrame() < 16 && i_this->field_0x5cc == 0) { + if (way_bg_check(i_this)) { + i_this->current.angle.y += -0x8000; + } else { + cLib_addCalcAngleS2(&i_this->current.angle.y, + (fopAcM_searchPlayerAngleY(i_this) + cM_rndFX(8000.0f)) + -0x8000, + 1, 0x2000); + } + + if (l_HIO.field_0x18 + 200.0f < i_this->field_0x5d8) { + i_this->field_0x5d2 = 20; + i_this->field_0x5d4 = 0; + } + + i_this->field_0x5cc = 1; + } + } + + if (i_this->mMorf->getFrame() < 20) { + return; + } + + i_this->field_0x5cc = 0; + return; + } + } + + cLib_addCalc0(&i_this->speedF, 1.0f, l_HIO.field_0x28 * 0.05f); + } +} + +/* 8051A820-8051A904 001020 00E4+00 1/1 0/0 0/0 .text fr_eat__FP8fr_class */ +static void fr_eat(fr_class* i_this) { + // NONMATCHING + fopAc_ac_c* actor = fopAcM_SearchByID(i_this->field_0x5f8); + if (!actor) { + fopAcM_delete(i_this); + } else { + switch (i_this->field_0x5d4) { + case 0: + i_this->field_0x5d4++; + anm_init(i_this, 10, 20.0f, 2, 0.0f); + i_this->field_0x5dc[0] = 20; + case 1: + i_this->mMorf->setFrame(0.0f); + + if (i_this->field_0x5dc[0] == 0) { + fopAcM_delete(i_this); + } + } + } +} + +/* 8051A904-8051AA9C 001104 0198+00 2/2 0/0 0/0 .text swim_on__FP8fr_class */ +static void swim_on(fr_class* i_this) { + // NONMATCHING + if (i_this->field_0x5ec == 0) { + i_this->field_0x5d2 = 0; + i_this->field_0x5d4 = 0; + } else { + i_this->current.pos.y = i_this->field_0x5f0; + i_this->gravity = 0.0f; + i_this->speed.y = 0.0f; + + f32 fVar3 = 0.5f * cM_ssin(i_this->field_0x5d0 * 0x5dc) - i_this->scale.x * 10.0f * 1.33f; + + s16 sVar2; + if (i_this->field_0x5d2 == 0x1e) { + sVar2 = -(5000 + 700 * cM_ssin(i_this->field_0x5d0 * 700)); + fVar3 -= 3.0f * i_this->scale.x * 1.33f; + } else { + sVar2 = 0; + } + + cLib_addCalc2(&i_this->field_0x5f4, fVar3, 0.1f, 1.0f); + cLib_addCalcAngleS2(&i_this->shape_angle.x, sVar2, 16, 0x100); + fVar3 = cM_ssin(i_this->field_0x5d0 * 600); + + i_this->shape_angle.z = 500 * fVar3; + + if (((i_this->field_0x994 == -1 || !daPy_py_c::checkNowWolf()) && + i_this->field_0x5d2 != 0x28) && i_this->field_0x5d8 < l_HIO.field_0x18) { + i_this->field_0x5d2 = 0x28; + i_this->field_0x5d4 = 0; + } + } +} + +/* 8051AA9C-8051AC2C 00129C 0190+00 1/1 0/0 0/0 .text swim_off__FP8fr_class */ +static void swim_off(fr_class* i_this) { + // NONMATCHING + cLib_addCalc0(&i_this->field_0x5f4, 0.1f, 1.0f); + i_this->shape_angle.z = 0; + + if (i_this->mAcch.ChkGroundHit() || i_this->field_0x5ce != 0) { + i_this->shape_angle.x = 0; + } else { + i_this->shape_angle.x = i_this->speed.y * -500.0f; + if (i_this->shape_angle.x > 0x1000) { + i_this->shape_angle.x = 0x1000; + } else if (i_this->shape_angle.x < -0x2000) { + i_this->shape_angle.x = -0x2000; + } + } + + if (i_this->field_0x5ec) { + i_this->field_0x5d2 = 20; + i_this->field_0x5d4 = 0; + swim_on(i_this); + sibuki_set(i_this); + i_this->speedF *= 0.4f; + mDoAud_seStart(Z2SE_AL_UKI_OUT_WATER, &i_this->current.pos, 0, 0); + } else if (((i_this->field_0x994 == -1 || !daPy_py_c::checkNowWolf()) && i_this->field_0x5d2 != 5) && i_this->field_0x5d8 < l_HIO.field_0x18) { + i_this->field_0x5d2 = 5; + i_this->field_0x5d4 = 0; + } +} + +/* 8051AC2C-8051AD04 00142C 00D8+00 1/1 0/0 0/0 .text fr_message__FP8fr_class */ +static void fr_message(fr_class* i_this) { + // NONMATCHING + s16 sVar1 = i_this->field_0x5d4; + switch (i_this->field_0x5d4) { + case 0: + anm_init(i_this, 11, 400.0f, 2, cM_rndF(0.3f) + 0.8f); + i_this->field_0x5d4++; + case 1: + default: + cLib_addCalc0(&i_this->speedF, 1.0f, 2.0f); + cLib_addCalcAngleS2(&i_this->current.angle.y, fopAcM_searchPlayerAngleY(i_this), 2, 0x1000); + + if (i_this->field_0x5d8 > 400.0f) { + i_this->field_0x5d2 = 0; + i_this->field_0x5d4 = 0; + } + } +} + +/* 8051AD04-8051B04C 001504 0348+00 2/1 0/0 0/0 .text action__FP8fr_class */ +static void action(fr_class* i_this) { + // NONMATCHING + char cVar4 = 0; + i_this->gravity = l_HIO.field_0x10; + i_this->field_0x991 = 0; + switch (i_this->field_0x5d2) { + case 0: + fr_normal(i_this); + i_this->field_0x991 = 1; + break; + case 5: + fr_away(i_this); + i_this->field_0x991 = 1; + break; + case 10: + fr_message(i_this); + i_this->field_0x991 = 2; + break; + case 15: + cVar4 = -1; + break; + case 20: + fr_s_normal(i_this); + cVar4 = 1; + break; + case 30: + fr_s_wait(i_this); + cVar4 = 1; + break; + case 40: + fr_s_away(i_this); + cVar4 = 1; + break; + case 50: + fr_eat(i_this); + cVar4 = -2; + } + + if (((i_this->field_0x991 == 1 && i_this->field_0x994 != -1) && daPy_py_c::checkNowWolf()) && i_this->field_0x5d8 < 300.0f) { + i_this->field_0x5d2 = 10; + i_this->field_0x5d4 = 0; + } + + if (cVar4 != -2) { + cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 2, 0x4000); + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); + cXyz sp90; + cXyz sp84(0.0f, 0.0f, i_this->speedF); + MtxPosition(&sp84, &sp90); + i_this->speed.x = sp90.x; + i_this->speed.z = sp90.z; + i_this->speed.y += i_this->gravity; + + i_this->current.pos += (i_this->speed * i_this->scale.x) * 1.33f; + + if (i_this->speed.y < -80.0f) { + i_this->speed.y = -80.0f; + } + + sp84 = i_this->current.pos; + sp84.y += 200.0f; + f32 fVar6 = i_this->mAcch.GetGroundH(); + dBgS_ObjGndChk_Spl(cStack_78); + i_this->field_0x5ec = 0; + bool bVar2 = false; + + if (wd_check(i_this)) { + bVar2 = true; + } else { + cStack_78.SetPos(&sp84); + f32 fVar5 = dComIfG_Bgsp().GroundCross(&cStack_78); + i_this->field_0x5f0 = fVar5; + + if (fVar6 < fVar5 && i_this->current.pos.y <= fVar5) { + i_this->current.pos.y = i_this->field_0x5f0; + i_this->field_0x5ec = 1; + } + } + + if (cVar4 == 0) { + swim_off(i_this); + } else if (cVar4 == 1) { + swim_on(i_this); + fopAcM_riverStream(&i_this->current.pos, &i_this->field_0x5fc, &i_this->field_0x600, 0.35f); + } + + i_this->mAcch.CrrPos(dComIfG_Bgsp()); + i_this->field_0x5ce = 0; + if ((bVar2 && i_this->speed.y <= 0.0f) && i_this->current.pos.y <= i_this->field_0x5f0 + i_this->scale.x * 5.0f) { + i_this->current.pos.y = i_this->field_0x5f0 + i_this->scale.x * 5.0f; + i_this->speed.y = 0.0f; + i_this->field_0x5ce = 1; + } + } +} + +/* 8051B04C-8051B170 00184C 0124+00 1/1 0/0 0/0 .text message__FP8fr_class */ +static int message(fr_class* i_this) { + // NONMATCHING + if (i_this->field_0x992) { + i_this->field_0x5e4 = 10; + if (i_this->mMsgFlow.doFlow(i_this, NULL, 0)) { + dComIfGp_event_reset(); + i_this->field_0x992 = 0; + } + return 1; + } + + if (dComIfGp_event_runCheck() && i_this->eventInfo.checkCommandTalk()) { + i_this->mMsgFlow.init(i_this, i_this->field_0x994, 0, NULL); + i_this->field_0x992 = 1; + OS_REPORT("////////FR MSG FNO %d\n", i_this->field_0x994); + } + + if ((i_this->field_0x991 == 2 && i_this->field_0x994 != -1) && daPy_py_c::checkNowWolf()) { + fopAcM_OnStatus(i_this, 0); + cLib_onBit(i_this->attention_info.flags, 10); + i_this->eventInfo.onCondition(1); + } else { + fopAcM_OffStatus(i_this, 0); + cLib_offBit(i_this->attention_info.flags, 1); + } + + return 0; + +} + +/* 8051B170-8051B354 001970 01E4+00 2/1 0/0 0/0 .text daFr_Execute__FP8fr_class */ +static int daFr_Execute(fr_class* i_this) { + // NONMATCHING + if (cDmrNowMidnaTalk()) { + return 1; + } + + i_this->field_0x5d8 = fopAcM_searchPlayerDistance(i_this); + i_this->field_0x5d0++; + for (int i = 0; i < 4; i++) { + if (i_this->field_0x5dc[i]) { + i_this->field_0x5dc[i]--; + } + } + + if (i_this->field_0x5e4) { + i_this->field_0x5e4--; + } + + action(i_this); + + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y + i_this->field_0x5f4, i_this->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->shape_angle.y); + mDoMtx_stack_c::XrotM(i_this->shape_angle.x); + mDoMtx_stack_c::ZrotM(i_this->shape_angle.z); + mDoMtx_stack_c::scaleM(i_this->scale.x, i_this->scale.x, i_this->scale.x); + + J3DModel* model = i_this->mMorf->getModel(); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + i_this->mMorf->play(&i_this->eyePos, 0, 0); + i_this->mBtkAnm->setFrame(i_this->field_0x5cd); + i_this->mMorf->modelCalc(); + + i_this->eyePos = i_this->current.pos; + i_this->eyePos.y += 10.0f; + i_this->attention_info.position = i_this->eyePos; + i_this->attention_info.position.y += 20.0f; + message(i_this); + + return 1; +} + +/* 8051B354-8051B35C 001B54 0008+00 1/0 0/0 0/0 .text daFr_IsDelete__FP8fr_class */ +static int daFr_IsDelete(fr_class* i_this) { + return true; +} + +/* 8051B35C-8051B3B0 001B5C 0054+00 1/0 0/0 0/0 .text daFr_Delete__FP8fr_class */ +static int daFr_Delete(fr_class* i_this) { + dComIfG_resDelete(&i_this->mPhase, "Fr"); + if (i_this->field_0x9e4) { + data_8051BC10[0] = 0; + } + + return 1; +} + +/* 8051B3B0-8051B550 001BB0 01A0+00 1/1 0/0 0/0 .text useHeapIfrt__FP10fopAc_ac_c */ +static int useHeapIfrt(fopAc_ac_c* a_this) { + // NONMATCHING + fr_class* i_this = (fr_class*)a_this; + + i_this->mMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("Fr", 14), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("Fr", 11), 2, + 1.0f, 0, -1, 1, NULL, 0x80000, 0x11000084); + + if (!i_this->mMorf || !i_this->mMorf->getModel()) { + return 0; + } + + i_this->mBtkAnm = new mDoExt_btkAnm(); + if (!i_this->mBtkAnm) { + return 0; + } else if (i_this->mBtkAnm->init(i_this->mMorf->getModel()->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Fr", 17), + 1, 0, 1.0f, 0, -1)) { + return 0; + } + + return 1; +} + +/* 8051B598-8051B820 001D98 0288+00 1/0 0/0 0/0 .text daFr_Create__FP10fopAc_ac_c */ +static int daFr_Create(fopAc_ac_c* a_this) { + // NONMATCHING + fr_class* i_this = (fr_class*)a_this; + fopAcM_SetupActor(i_this, fr_class); + + int phase_state = dComIfG_resLoad(&i_this->mPhase, "Fr"); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("FR PARAM %x\n", fopAcM_GetParam(i_this)); + + i_this->field_0x5b4 = fopAcM_GetParam(i_this); + i_this->current.angle.x = 0; + i_this->field_0x994 = i_this->current.angle.z; + i_this->shape_angle.z = 0; + i_this->current.angle.z = 0; + OS_REPORT("FR MSGFLOWNO %d\n", i_this->field_0x994); + OS_REPORT("FR//////////////FR SET 1 !!\n"); + + if (!fopAcM_entrySolidHeap(i_this, useHeapIfrt, 0x14e0)) { + OS_REPORT("//////////////FR SET NON !!\n"); + return cPhs_ERROR_e; + } + + OS_REPORT("//////////////FR SET 2 !!\n"); + + if (data_8051BC10[0] == 0) { + i_this->field_0x9e4 = 1; + data_8051BC10[0] = 1; + l_HIO.field_0x4 = -1; + } + + i_this->field_0x5d2 = 0; + i_this->scale.x = 0.75f; + + if (!strcmp(dComIfGp_getStartStageName(), "F_SP127")) { + i_this->scale.x = 0.4f; + } + + fopAcM_SetMtx(i_this, i_this->mMorf->getModel()->getBaseTRMtx()); + + i_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), + i_this, 1, &i_this->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL); + i_this->mAcchCir.SetWall(20.0f, 20.0f); + + i_this->field_0x5cd = i_this->field_0x5b4; + if (i_this->field_0x5cd > 3) { + i_this->field_0x5cd = 0; + } + i_this->field_0x5e8 = 500.0f; + i_this->field_0x5d0 = cM_rndF(65536.0f); + + daFr_Execute(i_this); + } + + return phase_state; +} + +// /* 8051B920-8051B968 002120 0048+00 2/1 0/0 0/0 .text __dt__10daFr_HIO_cFv */ +// daFr_HIO_c::~daFr_HIO_c() { +// // NONMATCHING +// } + +/* 8051B968-8051B9A4 002168 003C+00 0/0 1/0 0/0 .text __sinit_d_a_fr_cpp */ +void __sinit_d_a_fr_cpp() { + // NONMATCHING +} -/* 8051B9D0-8051B9D4 000008 0004+00 0/1 0/0 0/0 .rodata @3651 */ #pragma push #pragma force_active on -SECTION_RODATA static f32 const lit_3651 = -5.0f; -COMPILER_STRIP_GATE(0x8051B9D0, &lit_3651); +REGISTER_CTORS(0x8051B968, __sinit_d_a_fr_cpp); #pragma pop -/* 8051B9D4-8051B9D8 00000C 0004+00 0/2 0/0 0/0 .rodata @3652 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3652 = 300.0f; -COMPILER_STRIP_GATE(0x8051B9D4, &lit_3652); -#pragma pop - -/* 8051B9D8-8051B9DC 000010 0004+00 0/1 0/0 0/0 .rodata @3653 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3653 = 15.0f; -COMPILER_STRIP_GATE(0x8051B9D8, &lit_3653); -#pragma pop - -/* 8051B9DC-8051B9E0 000014 0004+00 0/5 0/0 0/0 .rodata @3654 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3654 = 5.0f; -COMPILER_STRIP_GATE(0x8051B9DC, &lit_3654); -#pragma pop - -/* 8051B9E0-8051B9E4 000018 0004+00 0/1 0/0 0/0 .rodata @3655 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3655 = 6.0f; -COMPILER_STRIP_GATE(0x8051B9E0, &lit_3655); -#pragma pop - -/* 8051BA94-8051BB60 -00001 00CC+00 1/1 0/0 0/0 .data @4226 */ -SECTION_DATA static void* lit_4226[51] = { - (void*)(((char*)action__FP8fr_class) + 0x68), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0x78), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0x88), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xC8), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0x98), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xA4), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xB0), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xCC), (void*)(((char*)action__FP8fr_class) + 0xCC), - (void*)(((char*)action__FP8fr_class) + 0xBC), -}; - /* 8051BB60-8051BB80 -00001 0020+00 1/0 0/0 0/0 .data l_daFr_Method */ static actor_method_class l_daFr_Method = { - (process_method_func)daFr_Create__FP10fopAc_ac_c, - (process_method_func)daFr_Delete__FP8fr_class, - (process_method_func)daFr_Execute__FP8fr_class, - (process_method_func)daFr_IsDelete__FP8fr_class, - (process_method_func)daFr_Draw__FP8fr_class, + (process_method_func)daFr_Create, + (process_method_func)daFr_Delete, + (process_method_func)daFr_Execute, + (process_method_func)daFr_IsDelete, + (process_method_func)daFr_Draw, }; /* 8051BB80-8051BBB0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_FR */ @@ -237,502 +739,3 @@ extern actor_process_profile_definition g_profile_FR = { fopAc_NPC_e, // mActorType fopAc_CULLBOX_0_e, // cullType }; - -/* 8051BBB0-8051BBBC 00011C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 8051BBBC-8051BBC8 000128 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 8051BBC8-8051BBEC 000134 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_8051B9AC, - (void*)NULL, - (void*)NULL, - (void*)func_8051B9A4, -}; - -/* 8051BBEC-8051BBF8 000158 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 8051BBF8-8051BC04 000164 000C+00 2/2 0/0 0/0 .data __vt__10daFr_HIO_c */ -SECTION_DATA extern void* __vt__10daFr_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10daFr_HIO_cFv, -}; - -/* 805198EC-8051994C 0000EC 0060+00 1/1 0/0 0/0 .text __ct__10daFr_HIO_cFv */ -daFr_HIO_c::daFr_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051B9E4-8051B9E8 00001C 0004+00 2/9 0/0 0/0 .rodata @3669 */ -SECTION_RODATA static u8 const lit_3669[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8051B9E4, &lit_3669); - -/* 8051B9E8-8051B9EC 000020 0004+00 1/2 0/0 0/0 .rodata @3670 */ -SECTION_RODATA static f32 const lit_3670 = -1.0f; -COMPILER_STRIP_GATE(0x8051B9E8, &lit_3670); - -/* 8051BA88-8051BA88 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8051BA88 = "Fr"; -#pragma pop - -/* 8051994C-805199F4 00014C 00A8+00 7/7 0/0 0/0 .text anm_init__FP8fr_classifUcf */ -static void anm_init(fr_class* param_0, int param_1, f32 param_2, u8 param_3, f32 param_4) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051B9EC-8051B9F0 000024 0004+00 2/10 0/0 0/0 .rodata @3691 */ -SECTION_RODATA static f32 const lit_3691 = 1.0f; -COMPILER_STRIP_GATE(0x8051B9EC, &lit_3691); - -/* 805199F4-80519AB8 0001F4 00C4+00 1/0 0/0 0/0 .text daFr_Draw__FP8fr_class */ -static void daFr_Draw(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051B9F0-8051B9F8 000028 0004+04 1/5 0/0 0/0 .rodata @3700 */ -SECTION_RODATA static f32 const lit_3700[1 + 1 /* padding */] = { - 3.0f / 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x8051B9F0, &lit_3700); - -/* 80519AB8-80519B14 0002B8 005C+00 1/1 0/0 0/0 .text sibuki_set__FP8fr_class */ -static void sibuki_set(fr_class* param_0) { - // NONMATCHING -} - -/* 80519B14-80519B60 000314 004C+00 1/1 0/0 0/0 .text s_wd_sub__FPvPv */ -static void s_wd_sub(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051B9F8-8051BA00 000030 0008+00 0/1 0/0 0/0 .rodata @3762 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3762[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8051B9F8, &lit_3762); -#pragma pop - -/* 8051BA00-8051BA08 000038 0008+00 0/1 0/0 0/0 .rodata @3763 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3763[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8051BA00, &lit_3763); -#pragma pop - -/* 8051BA08-8051BA10 000040 0008+00 0/1 0/0 0/0 .rodata @3764 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3764[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8051BA08, &lit_3764); -#pragma pop - -/* 8051BA10-8051BA14 000048 0004+00 0/1 0/0 0/0 .rodata @3765 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3765 = 22.0f; -COMPILER_STRIP_GATE(0x8051BA10, &lit_3765); -#pragma pop - -/* 80519B60-80519D28 000360 01C8+00 1/1 0/0 0/0 .text wd_check__FP8fr_class */ -static void wd_check(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA14-8051BA18 00004C 0004+00 0/3 0/0 0/0 .rodata @3796 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3796 = 50.0f; -COMPILER_STRIP_GATE(0x8051BA14, &lit_3796); -#pragma pop - -/* 80519D28-80519E24 000528 00FC+00 4/4 0/0 0/0 .text way_bg_check__FP8fr_class */ -static void way_bg_check(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA18-8051BA1C 000050 0004+00 0/2 0/0 0/0 .rodata @3849 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3849 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x8051BA18, &lit_3849); -#pragma pop - -/* 8051BA1C-8051BA20 000054 0004+00 0/3 0/0 0/0 .rodata @3850 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3850 = 2.0f; -COMPILER_STRIP_GATE(0x8051BA1C, &lit_3850); -#pragma pop - -/* 8051BA20-8051BA24 000058 0004+00 0/3 0/0 0/0 .rodata @3851 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3851 = 0.5f; -COMPILER_STRIP_GATE(0x8051BA20, &lit_3851); -#pragma pop - -/* 8051BC10-8051BC14 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_8051BC10[4]; - -/* 8051BC14-8051BC20 00000C 000C+00 1/1 0/0 0/0 .bss @3644 */ -static u8 lit_3644[12]; - -/* 8051BC20-8051BC4C 000018 002C+00 9/9 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[44]; - -/* 80519E24-8051A0D8 000624 02B4+00 1/2 0/0 0/0 .text fr_normal__FP8fr_class */ -static void fr_normal(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA24-8051BA28 00005C 0004+00 0/2 0/0 0/0 .rodata @3901 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3901 = 3.0f; -COMPILER_STRIP_GATE(0x8051BA24, &lit_3901); -#pragma pop - -/* 8051BA28-8051BA2C 000060 0004+00 0/1 0/0 0/0 .rodata @3902 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3902 = 4.0f; -COMPILER_STRIP_GATE(0x8051BA28, &lit_3902); -#pragma pop - -/* 8051BA2C-8051BA30 000064 0004+00 0/2 0/0 0/0 .rodata @3903 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3903 = 8000.0f; -COMPILER_STRIP_GATE(0x8051BA2C, &lit_3903); -#pragma pop - -/* 8051BA30-8051BA34 000068 0004+00 0/2 0/0 0/0 .rodata @3904 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3904 = 200.0f; -COMPILER_STRIP_GATE(0x8051BA30, &lit_3904); -#pragma pop - -/* 8051A0D8-8051A318 0008D8 0240+00 1/2 0/0 0/0 .text fr_away__FP8fr_class */ -static void fr_away(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA34-8051BA38 00006C 0004+00 0/1 0/0 0/0 .rodata @3957 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3957 = 1.5f; -COMPILER_STRIP_GATE(0x8051BA34, &lit_3957); -#pragma pop - -/* 8051BA38-8051BA3C 000070 0004+00 0/2 0/0 0/0 .rodata @3958 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3958 = 100.0f; -COMPILER_STRIP_GATE(0x8051BA38, &lit_3958); -#pragma pop - -/* 8051BA3C-8051BA40 000074 0004+00 0/2 0/0 0/0 .rodata @3959 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3959 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x8051BA3C, &lit_3959); -#pragma pop - -/* 8051BA40-8051BA44 000078 0004+00 0/2 0/0 0/0 .rodata @3960 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3960 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x8051BA40, &lit_3960); -#pragma pop - -/* 8051A318-8051A558 000B18 0240+00 1/1 0/0 0/0 .text fr_s_normal__FP8fr_class */ -static void fr_s_normal(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA44-8051BA48 00007C 0004+00 0/1 0/0 0/0 .rodata @3981 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3981 = 30.0f; -COMPILER_STRIP_GATE(0x8051BA44, &lit_3981); -#pragma pop - -/* 8051BA48-8051BA4C 000080 0004+00 0/1 0/0 0/0 .rodata @3982 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3982 = 13.0f; -COMPILER_STRIP_GATE(0x8051BA48, &lit_3982); -#pragma pop - -/* 8051BA4C-8051BA50 000084 0004+00 0/1 0/0 0/0 .rodata @3983 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3983 = 3.0f / 20.0f; -COMPILER_STRIP_GATE(0x8051BA4C, &lit_3983); -#pragma pop - -/* 8051A558-8051A620 000D58 00C8+00 1/1 0/0 0/0 .text fr_s_wait__FP8fr_class */ -static void fr_s_wait(fr_class* param_0) { - // NONMATCHING -} - -/* 8051A620-8051A820 000E20 0200+00 1/1 0/0 0/0 .text fr_s_away__FP8fr_class */ -static void fr_s_away(fr_class* param_0) { - // NONMATCHING -} - -/* 8051A820-8051A904 001020 00E4+00 1/1 0/0 0/0 .text fr_eat__FP8fr_class */ -static void fr_eat(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA50-8051BA54 000088 0004+00 0/1 0/0 0/0 .rodata @4108 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4108 = 0x3FAA3D71; -COMPILER_STRIP_GATE(0x8051BA50, &lit_4108); -#pragma pop - -/* 8051BA54-8051BA58 00008C 0004+00 0/1 0/0 0/0 .rodata @4109 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4109 = -5000.0f; -COMPILER_STRIP_GATE(0x8051BA54, &lit_4109); -#pragma pop - -/* 8051BA58-8051BA5C 000090 0004+00 0/1 0/0 0/0 .rodata @4110 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4110 = 700.0f; -COMPILER_STRIP_GATE(0x8051BA58, &lit_4110); -#pragma pop - -/* 8051BA5C-8051BA60 000094 0004+00 0/2 0/0 0/0 .rodata @4111 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4111 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8051BA5C, &lit_4111); -#pragma pop - -/* 8051BA60-8051BA64 000098 0004+00 0/2 0/0 0/0 .rodata @4112 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4112 = 500.0f; -COMPILER_STRIP_GATE(0x8051BA60, &lit_4112); -#pragma pop - -/* 8051A904-8051AA9C 001104 0198+00 2/2 0/0 0/0 .text swim_on__FP8fr_class */ -static void swim_on(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA64-8051BA68 00009C 0004+00 0/1 0/0 0/0 .rodata @4144 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4144 = -500.0f; -COMPILER_STRIP_GATE(0x8051BA64, &lit_4144); -#pragma pop - -/* 8051BA68-8051BA6C 0000A0 0004+00 0/2 0/0 0/0 .rodata @4145 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4145 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x8051BA68, &lit_4145); -#pragma pop - -/* 8051AA9C-8051AC2C 00129C 0190+00 1/1 0/0 0/0 .text swim_off__FP8fr_class */ -static void swim_off(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA6C-8051BA70 0000A4 0004+00 0/1 0/0 0/0 .rodata @4158 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4158 = 400.0f; -COMPILER_STRIP_GATE(0x8051BA6C, &lit_4158); -#pragma pop - -/* 8051AC2C-8051AD04 00142C 00D8+00 1/1 0/0 0/0 .text fr_message__FP8fr_class */ -static void fr_message(fr_class* param_0) { - // NONMATCHING -} - -/* 8051AD04-8051B04C 001504 0348+00 2/1 0/0 0/0 .text action__FP8fr_class */ -static void action(fr_class* param_0) { - // NONMATCHING -} - -/* 8051B04C-8051B170 00184C 0124+00 1/1 0/0 0/0 .text message__FP8fr_class */ -static void message(fr_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA70-8051BA74 0000A8 0004+00 0/0 0/0 0/0 .rodata @4224 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4224 = -80.0f; -COMPILER_STRIP_GATE(0x8051BA70, &lit_4224); -#pragma pop - -/* 8051BA74-8051BA78 0000AC 0004+00 0/0 0/0 0/0 .rodata @4225 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4225 = 7.0f / 20.0f; -COMPILER_STRIP_GATE(0x8051BA74, &lit_4225); -#pragma pop - -/* 8051BA78-8051BA80 0000B0 0008+00 0/1 0/0 0/0 .rodata @4322 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4322[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8051BA78, &lit_4322); -#pragma pop - -/* 8051B170-8051B354 001970 01E4+00 2/1 0/0 0/0 .text daFr_Execute__FP8fr_class */ -static void daFr_Execute(fr_class* param_0) { - // NONMATCHING -} - -/* 8051B354-8051B35C 001B54 0008+00 1/0 0/0 0/0 .text daFr_IsDelete__FP8fr_class */ -static bool daFr_IsDelete(fr_class* param_0) { - return true; -} - -/* 8051B35C-8051B3B0 001B5C 0054+00 1/0 0/0 0/0 .text daFr_Delete__FP8fr_class */ -static void daFr_Delete(fr_class* param_0) { - // NONMATCHING -} - -/* 8051B3B0-8051B550 001BB0 01A0+00 1/1 0/0 0/0 .text useHeapIfrt__FP10fopAc_ac_c */ -static void useHeapIfrt(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8051B550-8051B598 001D50 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8051BA80-8051BA84 0000B8 0004+00 0/1 0/0 0/0 .rodata @4466 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4466 = 0.75f; -COMPILER_STRIP_GATE(0x8051BA80, &lit_4466); -#pragma pop - -/* 8051BA84-8051BA88 0000BC 0004+00 0/1 0/0 0/0 .rodata @4467 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4467 = 65536.0f; -COMPILER_STRIP_GATE(0x8051BA84, &lit_4467); -#pragma pop - -/* 8051BA88-8051BA88 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8051BA8B = "F_SP127"; -#pragma pop - -/* 8051B598-8051B820 001D98 0288+00 1/0 0/0 0/0 .text daFr_Create__FP10fopAc_ac_c */ -static void daFr_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8051B820-8051B868 002020 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 8051B868-8051B8B0 002068 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 8051B8B0-8051B920 0020B0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8051B920-8051B968 002120 0048+00 2/1 0/0 0/0 .text __dt__10daFr_HIO_cFv */ -daFr_HIO_c::~daFr_HIO_c() { - // NONMATCHING -} - -/* 8051B968-8051B9A4 002168 003C+00 0/0 1/0 0/0 .text __sinit_d_a_fr_cpp */ -void __sinit_d_a_fr_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8051B968, __sinit_d_a_fr_cpp); -#pragma pop - -/* 8051B9A4-8051B9AC 0021A4 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8051B9A4() { - // NONMATCHING -} - -/* 8051B9AC-8051B9B4 0021AC 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8051B9AC() { - // NONMATCHING -} - -/* 8051BA88-8051BA88 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_lp.cpp b/src/d/actor/d_a_obj_lp.cpp index 888b0718a11..e62dda3d402 100644 --- a/src/d/actor/d_a_obj_lp.cpp +++ b/src/d/actor/d_a_obj_lp.cpp @@ -4,583 +4,509 @@ */ #include "d/actor/d_a_obj_lp.h" -#include "dol2asm.h" +#include "d/actor/d_a_canoe.h" +#include "d/actor/d_a_mg_rod.h" +#include "d/d_com_inf_game.h" +#include "d/actor/d_a_player.h" +#include "Z2AudioLib/Z2Instances.h" -// -// Forward References: -// - -extern "C" static void daObj_Lp_Draw__FP12obj_lp_class(); -extern "C" static void s_ks_sub__FPvPv(); -extern "C" static void hit_check__FP12obj_lp_classP5wd_ss(); -extern "C" static void hasu_action__FP12obj_lp_classP5wd_ss(); -extern "C" static void set_out_check__FP12obj_lp_classP4cXyz(); -extern "C" static void daObj_Lp_Execute__FP12obj_lp_class(); -extern "C" static bool daObj_Lp_IsDelete__FP12obj_lp_class(); -extern "C" static void daObj_Lp_Delete__FP12obj_lp_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void set_pos_check__FP12obj_lp_classi(); -extern "C" static void daObj_Lp_Create__FP10fopAc_ac_c(); -extern "C" void __dt__5wd_ssFv(); -extern "C" void __ct__5wd_ssFv(); -extern "C" extern char const* const d_a_obj_lp__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void init__19mDoExt_3DlineMat0_cFUsUsi(); -extern "C" void update__19mDoExt_3DlineMat0_cFiR8_GXColorP12dKy_tevstr_c(); -extern "C" void setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcSch_JudgeForPName__FPvPv(); -extern "C" void addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc(); -extern "C" void removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai(); -extern "C" void entrySimpleModel__14dComIfG_play_cFP8J3DModeli(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void dKy_Sound_get__Fv(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC3Vec(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxTrans__FfffUc(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void MtxPush__Fv(); -extern "C" void MtxPull__Fv(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__19mDoExt_3DlineMat0_c[5]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C55AD8-80C55ADC 000000 0004+00 1/1 0/0 0/0 .data l_color$3793 */ -SECTION_DATA static u8 l_color[4] = { - 0x14, - 0x0A, - 0x0A, - 0xFF, -}; +UNK_REL_BSS /* 80C54198-80C542FC 000078 0164+00 1/0 0/0 0/0 .text daObj_Lp_Draw__FP12obj_lp_class */ -static void daObj_Lp_Draw(obj_lp_class* param_0) { +static int daObj_Lp_Draw(obj_lp_class* i_this) { // NONMATCHING + static _GXColor l_color = { + 0x14, + 0x0A, + 0x0A, + 0xFF, + }; + + wd_ss* mWdSs = i_this->mWdSs; + J3DGXColorS10 color; + + for (int i = 0; i < i_this->field_0xad98; i++) { + if (mWdSs[i].field_0x4e && !mWdSs[i].field_0x4f) { + if (g_env_light.fishing_hole_season == 1) { + color.r = 6; + color.g = 6; + color.b = 4; + color.a = 0xff; + mWdSs[i].mpModel->getModelData()->getMaterialNodePointer(0)->setTevColor(0, &color); + } + + dComIfGp_entrySimpleModel(mWdSs[i].mpModel, fopAcM_GetRoomNo(i_this)); + } + } + + if (i_this->field_0xadb1 && !i_this->field_0xadb2) { + i_this->field_0xad7c.update(3, l_color, &i_this->tevStr); + dComIfGd_set3DlineMat(&i_this->field_0xad7c); + } + + return 1; } -/* ############################################################################################## */ -/* 80C55B40-80C55B44 000000 0001+03 2/2 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 80C55B44-80C55B48 000004 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 - -/* 80C55B48-80C55B4C 000008 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 - -/* 80C55B4C-80C55B50 00000C 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 - -/* 80C55B50-80C55B54 000010 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 - -/* 80C55B54-80C55B58 000014 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 - -/* 80C55B58-80C55B5C 000018 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 - -/* 80C55B5C-80C55B60 00001C 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 - -/* 80C55B60-80C55B64 000020 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 - -/* 80C55B64-80C55B68 000024 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 - -/* 80C55B68-80C55B6C 000028 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 - -/* 80C55B6C-80C55B70 00002C 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 - -/* 80C55B70-80C55B74 000030 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 - -/* 80C55B74-80C55B78 000034 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 - -/* 80C55B78-80C55B7C 000038 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 - -/* 80C55B7C-80C55B80 00003C 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 - /* 80C55B80-80C55B84 000040 0004+00 0/2 0/0 0/0 .bss tandem */ -#pragma push -#pragma force_active on -static u8 tandem[4]; -#pragma pop +static int tandem; /* 80C55B84-80C55B88 000044 0004+00 0/2 0/0 0/0 .bss demo_f */ -#pragma push -#pragma force_active on -static u8 demo_f[4]; -#pragma pop +static int demo_f; /* 80C55B88-80C55BB0 000048 0028+00 1/3 0/0 0/0 .bss target_info */ -static u8 target_info[40]; +static int target_info[10]; /* 80C55BB0-80C55BB4 000070 0004+00 1/3 0/0 0/0 .bss target_info_count */ -static u8 target_info_count[4]; +static int target_info_count; /* 80C542FC-80C54374 0001DC 0078+00 1/1 0/0 0/0 .text s_ks_sub__FPvPv */ -static void s_ks_sub(void* param_0, void* param_1) { - // NONMATCHING +static void* s_ks_sub(void* param_1, void* param_2) { + if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == 0x60) { + if (target_info_count < 10) { + target_info[target_info_count] = (int)param_1; + target_info_count++; + } + return param_1; + } + + return NULL; } -/* ############################################################################################## */ -/* 80C55A10-80C55A14 000000 0004+00 6/6 0/0 0/0 .rodata @3916 */ -SECTION_RODATA static f32 const lit_3916 = 50.0f; -COMPILER_STRIP_GATE(0x80C55A10, &lit_3916); - -/* 80C55A14-80C55A18 000004 0004+00 0/1 0/0 0/0 .rodata @3917 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3917 = -3.0f; -COMPILER_STRIP_GATE(0x80C55A14, &lit_3917); -#pragma pop - -/* 80C55A18-80C55A1C 000008 0004+00 0/6 0/0 0/0 .rodata @3918 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3918[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C55A18, &lit_3918); -#pragma pop - -/* 80C55A1C-80C55A20 00000C 0004+00 0/3 0/0 0/0 .rodata @3919 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3919 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C55A1C, &lit_3919); -#pragma pop - -/* 80C55A20-80C55A24 000010 0004+00 0/2 0/0 0/0 .rodata @3920 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3920 = 0.5f; -COMPILER_STRIP_GATE(0x80C55A20, &lit_3920); -#pragma pop - -/* 80C55A24-80C55A28 000014 0004+00 0/2 0/0 0/0 .rodata @3921 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3921 = 70.0f; -COMPILER_STRIP_GATE(0x80C55A24, &lit_3921); -#pragma pop - -/* 80C55A28-80C55A2C 000018 0004+00 0/1 0/0 0/0 .rodata @3922 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3922 = 2500.0f; -COMPILER_STRIP_GATE(0x80C55A28, &lit_3922); -#pragma pop - -/* 80C55A2C-80C55A30 00001C 0004+00 0/2 0/0 0/0 .rodata @3923 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3923 = 30.0f; -COMPILER_STRIP_GATE(0x80C55A2C, &lit_3923); -#pragma pop - -/* 80C55A30-80C55A34 000020 0004+00 0/1 0/0 0/0 .rodata @3924 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3924 = -275.0f; -COMPILER_STRIP_GATE(0x80C55A30, &lit_3924); -#pragma pop - -/* 80C55A34-80C55A38 000024 0004+00 0/1 0/0 0/0 .rodata @3925 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3925 = 150.0f; -COMPILER_STRIP_GATE(0x80C55A34, &lit_3925); -#pragma pop - -/* 80C55A38-80C55A3C 000028 0004+00 0/1 0/0 0/0 .rodata @3926 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3926 = -125.0f; -COMPILER_STRIP_GATE(0x80C55A38, &lit_3926); -#pragma pop - -/* 80C55A3C-80C55A40 00002C 0004+00 0/1 0/0 0/0 .rodata @3927 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3927 = 300.0f; -COMPILER_STRIP_GATE(0x80C55A3C, &lit_3927); -#pragma pop - -/* 80C55A40-80C55A44 000030 0004+00 0/1 0/0 0/0 .rodata @3928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3928 = 75.0f; -COMPILER_STRIP_GATE(0x80C55A40, &lit_3928); -#pragma pop - -/* 80C55A44-80C55A48 000034 0004+00 0/1 0/0 0/0 .rodata @3929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3929 = 0x3C5A6613; -COMPILER_STRIP_GATE(0x80C55A44, &lit_3929); -#pragma pop - -/* 80C55A48-80C55A4C 000038 0004+00 0/1 0/0 0/0 .rodata @3930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3930 = -0.5f; -COMPILER_STRIP_GATE(0x80C55A48, &lit_3930); -#pragma pop - -/* 80C55A4C-80C55A50 00003C 0004+00 0/1 0/0 0/0 .rodata @3931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3931 = 3.0f; -COMPILER_STRIP_GATE(0x80C55A4C, &lit_3931); -#pragma pop - -/* 80C54374-80C546D8 000254 0364+00 1/1 0/0 0/0 .text hit_check__FP12obj_lp_classP5wd_ss - */ -static void hit_check(obj_lp_class* param_0, wd_ss* param_1) { +/* 80C54374-80C546D8 000254 0364+00 1/1 0/0 0/0 .text hit_check__FP12obj_lp_classP5wd_ss */ +static int hit_check(obj_lp_class* i_this, wd_ss* WdSs) { // NONMATCHING + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + cXyz sp6c, sp60; + f32 fVar1, fVar2; + int rv = 0; + + fVar1 = 50.0f; + for (int i = 0; i < target_info_count; i++) { + sp6c = WdSs->field_0x10 - *(cXyz *)(target_info[i] + 0x4d0); + if (sp6c.y >= -3.0f) { + if (JMAFastSqrt(sp6c.x * sp6c.x + sp6c.z * sp6c.z) <= fVar1 * WdSs->field_0x3c) { + fVar2 = fVar1 * WdSs->field_0x3c - fVar1; + cLib_addCalc2(&WdSs->field_0x28.x, fVar2, 0.1f, fVar2 * 0.5f); + cLib_addCalcAngleS2(&WdSs->field_0x34, cM_atan2s(sp6c.x, sp6c.z), 0x20, 0x400); + cLib_addCalcAngleS2(&WdSs->field_0x36, -4000, 0x20, 0x400); + rv = 1; + } + } + fVar1 = 70.0f; + } + + if (daPy_getLinkPlayerActorClass()->checkCanoeRide()) { + f32 fVar8 = 0.0f; + if (demo_f != 0) { + PSMTXCopy(player->getRightItemMatrix(), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&sp60); + sp60.x -= WdSs->field_0x10.x; + sp60.z -= WdSs->field_0x10.z; + if ((sp60.x * sp60.x + sp60.z * sp60.z) < 2500.0f) { + fVar8 = 30.0f; + } + } + + sp6c = WdSs->field_0x10 - player->current.pos; + cMtx_YrotS(*calc_mtx, -player->shape_angle.y); + MtxTrans(0.0f, 0.0f, 0.0f, 1); + MtxPosition(&sp6c, &sp60); + + if (tandem) { + fVar1 = -275.0f; + fVar2 = 150.0f; + } else { + fVar1 = -125.0f; + fVar2 = 300.0f; + } + + if (fabsf(sp60.x) < fVar8 + 70.0f && fVar1 > sp60.z && sp60.z < fVar2) { + fVar8 = fVar8 + 70.0f - fabsf(sp60.x); + if (fVar1 > sp60.z && sp60.z < fVar1 + 75.0f) { + sp60.z -= fVar1; + fVar8 *= fabsf(sp60.z) * 0.01333f; + } + + cLib_addCalc2(&WdSs->field_0x10.y, WdSs->field_0x4.y + fVar8 * -0.5f, 0.5f, 3.0f); + cLib_addCalc2(&WdSs->field_0x28.x, fVar8, 0.1f, fVar8 * 0.5f); + cLib_addCalcAngleS2(&WdSs->field_0x34, cM_atan2s(sp6c.x, sp6c.z), 0x20, 0x400); + cLib_addCalcAngleS2(&WdSs->field_0x36, 0xfffff060, 0x20, 0x400); + rv = 1; + } + } + + return rv; } -/* ############################################################################################## */ -/* 80C55A50-80C55A54 000040 0004+00 0/2 0/0 0/0 .rodata @4054 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4054 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C55A50, &lit_4054); -#pragma pop - -/* 80C55A54-80C55A58 000044 0004+00 0/3 0/0 0/0 .rodata @4055 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4055 = 1.0f; -COMPILER_STRIP_GATE(0x80C55A54, &lit_4055); -#pragma pop - -/* 80C55A58-80C55A60 000048 0004+04 0/1 0/0 0/0 .rodata @4056 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4056[1 + 1 /* padding */] = { - 1.0f / 20.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C55A58, &lit_4056); -#pragma pop - -/* 80C55A60-80C55A68 000050 0008+00 0/3 0/0 0/0 .rodata @4057 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4057[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C55A60, &lit_4057); -#pragma pop - -/* 80C55A68-80C55A70 000058 0008+00 0/3 0/0 0/0 .rodata @4058 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4058[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C55A68, &lit_4058); -#pragma pop - -/* 80C55A70-80C55A78 000060 0008+00 0/3 0/0 0/0 .rodata @4059 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4059[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C55A70, &lit_4059); -#pragma pop - -/* 80C55A78-80C55A7C 000068 0004+00 0/1 0/0 0/0 .rodata @4060 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4060 = 2.0f; -COMPILER_STRIP_GATE(0x80C55A78, &lit_4060); -#pragma pop - -/* 80C55A7C-80C55A80 00006C 0004+00 0/1 0/0 0/0 .rodata @4061 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4061 = 1.0f / 25.0f; -COMPILER_STRIP_GATE(0x80C55A7C, &lit_4061); -#pragma pop - -/* 80C55A80-80C55A84 000070 0004+00 0/1 0/0 0/0 .rodata @4062 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4062 = -200.0f; -COMPILER_STRIP_GATE(0x80C55A80, &lit_4062); -#pragma pop - -/* 80C55A84-80C55A88 000074 0004+00 0/1 0/0 0/0 .rodata @4063 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4063 = 0x3F7C28F6; -COMPILER_STRIP_GATE(0x80C55A84, &lit_4063); -#pragma pop - -/* 80C55A88-80C55A8C 000078 0004+00 0/1 0/0 0/0 .rodata @4064 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4064 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C55A88, &lit_4064); -#pragma pop - /* 80C546D8-80C54B20 0005B8 0448+00 1/1 0/0 0/0 .text hasu_action__FP12obj_lp_classP5wd_ss */ -static void hasu_action(obj_lp_class* param_0, wd_ss* param_1) { - // NONMATCHING +static void hasu_action(obj_lp_class* i_this, wd_ss* WdSs) { + if (!hit_check(i_this, WdSs)) { + cLib_addCalc0(&WdSs->field_0x28.x, 0.1f, 0.2f); + cLib_addCalcAngleS2(&WdSs->field_0x34, 0, 0x30, 100); + cLib_addCalcAngleS2(&WdSs->field_0x36, 0, 0x20, 200); + cLib_addCalc2(&WdSs->field_0x10.x, WdSs->field_0x4.x, 1.0f, 0.2f); + cLib_addCalc2(&WdSs->field_0x10.z, WdSs->field_0x4.z, 1.0f, 0.2f); + cLib_addCalc2(&WdSs->field_0x10.y, WdSs->field_0x4.y, 0.05f, 1.0f); + } + + cXyz sp2c = i_this->field_0xad9c - WdSs->field_0x10; + if (fabsf(sp2c.abs() - i_this->field_0xadac) < 30.0f && WdSs->field_0x28.y < 2.0f) { + WdSs->field_0x28.z = i_this->field_0xada8 * 0.04f; + WdSs->field_0x40 = 0; + WdSs->field_0x42 = cM_atan2s(sp2c.x, sp2c.z); + } + + WdSs->field_0x28.y = WdSs->field_0x28.z - WdSs->field_0x28.z * cM_scos(WdSs->field_0x40); + WdSs->field_0x44 = WdSs->field_0x28.z * cM_ssin(WdSs->field_0x40) * -200.0f; + WdSs->field_0x40 += 0x9c4; + WdSs->field_0x28.z *= 0.985f; + + mDoMtx_stack_c::transS(WdSs->field_0x10.x, WdSs->field_0x10.y + WdSs->field_0x28.y, WdSs->field_0x10.z); + mDoMtx_stack_c::YrotM(WdSs->field_0x42); + mDoMtx_stack_c::XrotM(WdSs->field_0x44); + mDoMtx_stack_c::YrotM(WdSs->field_0x34 - WdSs->field_0x42); + mDoMtx_stack_c::transM(0.0f, 0.0f, WdSs->field_0x28.x); + mDoMtx_stack_c::XrotM(WdSs->field_0x36); + mDoMtx_stack_c::YrotM(WdSs->field_0x38); + mDoMtx_stack_c::scaleM(WdSs->field_0x3c, WdSs->field_0x3c, WdSs->field_0x3c); + WdSs->mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + + if (i_this->field_0xadb1 && !i_this->field_0xadb2) { + cXyz sp50; + mDoMtx_stack_c::multVecZero(&sp50); + + cXyz* mPos = i_this->field_0xad7c.getPos(WdSs->field_0x50); + + for (int i = 0; i < 3; i++, mPos++) { + if (i == 0) { + mPos->x = sp50.x; + mPos->y = sp50.y; + mPos->z = sp50.z; + } else if (i == 2) { + mPos->x = WdSs->field_0x1c.x; + mPos->y = WdSs->field_0x1c.y; + mPos->z = WdSs->field_0x1c.z; + } else { + mPos->x = WdSs->field_0x1c.x + (sp50.x - WdSs->field_0x1c.x) * 0.3f; + mPos->z = WdSs->field_0x1c.z + (sp50.z - WdSs->field_0x1c.z) * 0.3f; + mPos->y = WdSs->field_0x1c.y + (sp50.y - WdSs->field_0x1c.y) * 0.5f; + } + } + } } -/* ############################################################################################## */ -/* 80C55A8C-80C55A90 00007C 0004+00 0/3 0/0 0/0 .rodata @4128 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4128 = 100.0f; -COMPILER_STRIP_GATE(0x80C55A8C, &lit_4128); -#pragma pop - -/* 80C55A90-80C55A98 000080 0008+00 0/2 0/0 0/0 .rodata @4130 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4130[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C55A90, &lit_4130); -#pragma pop - /* 80C54B20-80C54D40 000A00 0220+00 1/1 0/0 0/0 .text set_out_check__FP12obj_lp_classP4cXyz */ -static void set_out_check(obj_lp_class* param_0, cXyz* param_1) { +static int set_out_check(obj_lp_class* i_this, cXyz* param_2) { // NONMATCHING + cXyz sp3c = *param_2 - i_this->current.pos; + if (fabsf(sp3c.y) > 100.0f || 100.0f > i_this->field_0x571 * sp3c.abs()) { + return 1; + } + + camera_class* camera = dComIfGp_getCamera(0); + sp3c = camera->lookat.center - camera->lookat.eye; + s16 sVar1 = cM_atan2s(sp3c.x, sp3c.z); + sp3c = *param_2 - camera->lookat.eye; + s16 sVar2 = cM_atan2s(sp3c.x, sp3c.z); + + if (sVar1 - sVar2 > 0x3000 || sVar1 - sVar2 < -0x3000) { + return 1; + } + + return 0; } -/* ############################################################################################## */ -/* 80C55A98-80C55A9C 000088 0004+00 0/1 0/0 0/0 .rodata @4218 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4218 = 5000.0f; -COMPILER_STRIP_GATE(0x80C55A98, &lit_4218); -#pragma pop - -/* 80C55A9C-80C55AA0 00008C 0004+00 0/2 0/0 0/0 .rodata @4219 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4219 = 10.0f; -COMPILER_STRIP_GATE(0x80C55A9C, &lit_4219); -#pragma pop - -/* 80C55AA0-80C55AA8 000090 0008+00 0/1 0/0 0/0 .rodata @4221 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4221[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C55AA0, &lit_4221); -#pragma pop - -/* 80C55AC0-80C55AC0 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C55AC0 = "D_MN05"; -#pragma pop - -/* 80C54D40-80C550F0 000C20 03B0+00 2/1 0/0 0/0 .text daObj_Lp_Execute__FP12obj_lp_class - */ -static void daObj_Lp_Execute(obj_lp_class* param_0) { +/* 80C54D40-80C550F0 000C20 03B0+00 2/1 0/0 0/0 .text daObj_Lp_Execute__FP12obj_lp_class */ +static int daObj_Lp_Execute(obj_lp_class* i_this) { // NONMATCHING + i_this->field_0x574++; + if (i_this->field_0xadb0) { + i_this->field_0xadb0 += -1; + } + + for (int i = 1; i < 10; i++) { + target_info[i] = 0; + } + + target_info[0] = (int)dComIfGp_getPlayer(0); + target_info_count = 1; + + if (strcmp(dComIfGp_getStartStageName(), "D_MN05") == 0) { + fpcM_Search(s_ks_sub, i_this); + } + + if (i_this->field_0xadb1) { + daCanoe_c* mCanoe = (daCanoe_c*)fopAcM_SearchByName(0xed); + if (mCanoe) { + tandem = mCanoe->checkTandem(); + dmg_rod_class* mDmgRod = (dmg_rod_class*)fopAcM_SearchByName(0x2e4); + if (((mDmgRod && mDmgRod->field_0x13b4 == 11) && + mDmgRod->field_0x13b6 > 20) && mDmgRod->field_0x13b6 < 0x3c) { + demo_f = 1; + } else { + demo_f = 0; + } + } + } + + camera_class* camera = dComIfGp_getCamera(0); + wd_ss* WdSs = i_this->mWdSs; + for (int i = 0; i < i_this->field_0xad98; i++, WdSs++) { + if ((i_this->field_0x574 + i & 0x1f) == 0) { + f32 fVar1 = WdSs->field_0x10.x - camera->lookat.eye.x; + f32 fVar2 = WdSs->field_0x10.z - camera->lookat.eye.z; + fVar1 = JMAFastSqrt(fVar1 * fVar1 + fVar2 * fVar2); + if (fVar1 < 5000.0f) { + WdSs->field_0x4f = 0; + } else { + WdSs->field_0x4f = 1; + } + + if (i == 0 && i_this->field_0xadb1) { + i_this->field_0xadb2 = WdSs->field_0x4f; + } + } + + if (!WdSs->field_0x4f || i_this->field_0xadb0) { + hasu_action(i_this, WdSs); + } + } + + f32 fVar7 = 0.0f; + if ((i_this->field_0x574 & 15) == 0) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + if (!set_out_check(i_this, &player->current.pos)) { + if (fabsf(player->speedF) > 1.0f) { + i_this->field_0xad9c = player->current.pos; + } + } + } + + SND_INFLUENCE* sound = dKy_Sound_get(); + if ((sound->actor_id != -1 && (i_this->field_0x574 +3 & 1) == 0) && !set_out_check(i_this, &sound->position)) { + fVar7 = sound->field_0xc; + i_this->field_0xad9c = sound->position; + sound->timer = 1; + sound->actor_id = -1; + } + + if (fVar7 > 1.0f) { + f32 fVar2 = fVar7 * 10.0f; + if (fVar7 * 10.0f > 100.0f) { + fVar2 = 100.0f; + } + + if (i_this->field_0xada8 <= fVar2) { + i_this->field_0xada8 = fVar2; + i_this->field_0xadac = 0.0f; + } + } + + if (i_this->field_0xada8 > 0.1f) { + cLib_addCalc0(&i_this->field_0xada8, 0.1f, 1.0f); + i_this->field_0xadac += 10.0f; + } + + return 1; } -/* 80C550F0-80C550F8 000FD0 0008+00 1/0 0/0 0/0 .text daObj_Lp_IsDelete__FP12obj_lp_class - */ -static bool daObj_Lp_IsDelete(obj_lp_class* param_0) { - return true; +/* 80C550F0-80C550F8 000FD0 0008+00 1/0 0/0 0/0 .text daObj_Lp_IsDelete__FP12obj_lp_class */ +static int daObj_Lp_IsDelete(obj_lp_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 80C55AC0-80C55AC0 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C55AC7 = "Obj_lp"; -#pragma pop - -/* 80C550F8-80C5518C 000FD8 0094+00 1/0 0/0 0/0 .text daObj_Lp_Delete__FP12obj_lp_class - */ -static void daObj_Lp_Delete(obj_lp_class* param_0) { +/* 80C550F8-80C5518C 000FD8 0094+00 1/0 0/0 0/0 .text daObj_Lp_Delete__FP12obj_lp_class */ +static int daObj_Lp_Delete(obj_lp_class* i_this) { // NONMATCHING + if (i_this->field_0xadb4) { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_lp", 3); + dComIfGp_removeSimpleModel(modelData, fopAcM_GetRoomNo(i_this)); + } + dComIfG_resDelete(&i_this->mPhase, "Obj_lp"); + return 1; } -/* ############################################################################################## */ -/* 80C55AA8-80C55AAC 000098 0004+00 1/1 0/0 0/0 .rodata @4267 */ -SECTION_RODATA static f32 const lit_4267 = 13.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C55AA8, &lit_4267); - /* 80C5518C-80C552C0 00106C 0134+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING +static int useHeapInit(fopAc_ac_c* a_this) { + obj_lp_class* i_this = (obj_lp_class*)a_this; + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_lp", 3); + + for (int i = 0; i < i_this->field_0xad98; i++) { + i_this->mWdSs[i].mpModel = mDoExt_J3DModel__create(modelData, 0x20000, 0x11000084); + if (i_this->mWdSs[i].mpModel == NULL) { + return 0; + } + } + + if (i_this->field_0xadb1) { + if (!i_this->field_0xad7c.init(i_this->field_0xad98, 3, 1)) { + return 0; + } + + for (int i = 0; i < i_this->field_0xad98; i++) { + f32* mSize = i_this->field_0xad7c.getSize(i); + for (int j = 0; j < 3; j++) { + *mSize = 0.1f + 1.3f; + mSize++; + } + } + } + + return 1; } -/* ############################################################################################## */ -/* 80C55AAC-80C55AB0 00009C 0004+00 0/1 0/0 0/0 .rodata @4320 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4320 = 35.0f; -COMPILER_STRIP_GATE(0x80C55AAC, &lit_4320); -#pragma pop - -/* 80C55AB0-80C55AB4 0000A0 0004+00 0/2 0/0 0/0 .rodata @4321 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4321 = 1.5f; -COMPILER_STRIP_GATE(0x80C55AB0, &lit_4321); -#pragma pop - /* 80C552C0-80C55488 0011A0 01C8+00 1/1 0/0 0/0 .text set_pos_check__FP12obj_lp_classi */ -static void set_pos_check(obj_lp_class* param_0, int param_1) { - // NONMATCHING +static int set_pos_check(obj_lp_class* i_this, int param_2) { + f32 fVar1 = 35.0f; + if (i_this->field_0x572 == 1) { + fVar1 *= 1.5f; + } + + for (int i = 0; i < param_2; i++) { + cXyz sp48 = i_this->mWdSs[i].field_0x10 - i_this->mWdSs[param_2].field_0x10; + if (sp48.abs() < fVar1) { + return 0; + } + } + + return 1; } -/* ############################################################################################## */ -/* 80C55AB4-80C55AB8 0000A4 0004+00 0/1 0/0 0/0 .rodata @4457 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4457 = -100.0f; -COMPILER_STRIP_GATE(0x80C55AB4, &lit_4457); -#pragma pop +/* 80C55488-80C559C8 001368 0540+00 1/0 0/0 0/0 .text daObj_Lp_Create__FP10fopAc_ac_c */ +static int daObj_Lp_Create(fopAc_ac_c* a_this) { + // NONMATCHING + obj_lp_class* i_this = (obj_lp_class*)a_this; + fopAcM_SetupActor(i_this, obj_lp_class); -/* 80C55AB8-80C55ABC 0000A8 0004+00 0/1 0/0 0/0 .rodata @4458 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4458 = 65536.0f; -COMPILER_STRIP_GATE(0x80C55AB8, &lit_4458); -#pragma pop + int phase_state = dComIfG_resLoad(&i_this->mPhase, "Obj_lp"); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("OBJ_LP PARAM %x\n", fopAcM_GetParam(i_this)); -/* 80C55ABC-80C55AC0 0000AC 0004+00 0/1 0/0 0/0 .rodata @4459 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4459 = 200.0f; -COMPILER_STRIP_GATE(0x80C55ABC, &lit_4459); -#pragma pop + i_this->field_0x570 = fopAcM_GetParam(i_this); + i_this->field_0x571 = fopAcM_GetParam(i_this) >> 8; + i_this->field_0x572 = fopAcM_GetParam(i_this) >> 16; -/* 80C55AC0-80C55AC0 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C55ACE = "F_SP127"; -#pragma pop + if (i_this->field_0x572 == 0xff) { + i_this->field_0x572 = 0; + } + + i_this->field_0xad98 = i_this->field_0x570 + 1; + + if (dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo()) == ST_FIELD) { + i_this->field_0xad98 <<= 1; + if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0) { + i_this->field_0xadb1 = 1; + } + } + + if (i_this->field_0xad98 > 0x200) { + i_this->field_0xad98 = 0x200; + } + OS_REPORT("OBJ_LP//////////////OBJ_LP SET 1 !!\n"); + + int iVar3; + if (i_this->field_0xadb1 != 0) { + iVar3 = 800; + } else { + iVar3 = 0x1e8; + } + + if (!fopAcM_entrySolidHeap(i_this, useHeapInit, i_this->field_0xad98 * iVar3)) { + OS_REPORT("//////////////OBJ_LP SET NON !!\n"); + return cPhs_ERROR_e; + } + + OS_REPORT("//////////////OBJ_LP NUM : %d !!\n", i_this->field_0xad98); + + fopAcM_SetMtx(i_this, i_this->mWdSs[0].mpModel->getBaseTRMtx()); + + f32 fVar1 = i_this->field_0x571 * 70.0f + 50.0f; + fopAcM_SetMin(i_this, -fVar1, -100.0f, -fVar1); + fopAcM_SetMax(i_this, fVar1, 100.0f, fVar1); + MtxTrans(i_this->current.pos.x, i_this->current.pos.y, i_this->current.pos.z, 0); + + cXyz sp13c(0.0f, 0.0f, 0.0f); + dBgS_GndChk dStack_dc; + dBgS_ObjGndChk_Spl cStack_130; + int iVar4 = 0; + f32 fVar13 = 1.0f; + if (i_this->field_0x572 == 1) { + fVar13 = 1.5f; + } + + for (int i = 0; i < i_this->field_0xad98; i++) { + MtxPush(); + cMtx_YrotM(*calc_mtx, cM_rndF(65536.0f)); + MtxPosition(&sp13c, &i_this->mWdSs[i].field_0x10); + f32 rndF = cM_rndF(1.0f); + f32 fVar1 = 1.0f - rndF * rndF; + sp13c.z = fVar1 * (i_this->field_0x571 * 100.0f); + MtxPull(); + + cXyz sp148; + sp148.x = i_this->mWdSs[i].field_0x10.x; + sp148.y = i_this->mWdSs[i].field_0x10.y + 100.0f; + sp148.z = i_this->mWdSs[i].field_0x10.z; + + dStack_dc.SetPos(&(Vec)sp148); + cStack_130.SetPos(&(Vec)sp148); + i_this->mWdSs[i].field_0x10.y = dComIfG_Bgsp().GroundCross(&cStack_130); + + i_this->mWdSs[i].field_0x38 = cM_rndF(65536.0f); + + if (i == 0) { + i_this->current.pos.y = i_this->mWdSs[i].field_0x10.y; + } + + i_this->mWdSs[i].field_0x1c.y = dComIfG_Bgsp().GroundCross(&dStack_dc); + + if ((set_pos_check(i_this, i) && i_this->mWdSs[i].field_0x10.y - i_this->mWdSs[i].field_0x1c.y > 10.0f) && + (i_this->field_0xadb1 != 0 && i_this->mWdSs[i].field_0x10.y - i_this->mWdSs[i].field_0x1c.y < 200.0f)) { + i_this->mWdSs[i].field_0x4e = 1; + i_this->mWdSs[i].field_0x3c = fVar13 * (cM_rndFX(0.2f) + 1.0f); + i_this->mWdSs[i].field_0x4 = i_this->mWdSs[i].field_0x10; + i_this->mWdSs[i].field_0x1c.x = i_this->mWdSs[i].field_0x10.x + cM_rndFX(10.0f); + i_this->mWdSs[i].field_0x1c.z = i_this->mWdSs[i].field_0x10.z + cM_rndFX(10.0f); + i_this->mWdSs[i].field_0x50 = i; + } else { + i--; + iVar4++; + if (iVar4 > 10000) { + OS_REPORT(" 植物の指定範囲が狭すぎて置けません!!!!\n"); + return cPhs_ERROR_e; + } + } + } + + i_this->field_0x574 = fopAcM_GetID(i_this); + i_this->field_0xadb0 = 10; + + daObj_Lp_Execute(i_this); + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_lp", 3); + JUT_ASSERT(0x3b0, modelData != 0); + + dComIfGp_addSimpleModel(modelData, fopAcM_GetRoomNo(i_this), 0); + if (modelData == NULL) { + OS_REPORT("\x1b[43;30mリリーパッド:シンプルモデル登録失敗しました。\n"); + } + + i_this->field_0xadb4 = 1; + } + + return phase_state; +} /* 80C55ADC-80C55AFC -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Lp_Method */ static actor_method_class l_daObj_Lp_Method = { - (process_method_func)daObj_Lp_Create__FP10fopAc_ac_c, - (process_method_func)daObj_Lp_Delete__FP12obj_lp_class, - (process_method_func)daObj_Lp_Execute__FP12obj_lp_class, - (process_method_func)daObj_Lp_IsDelete__FP12obj_lp_class, - (process_method_func)daObj_Lp_Draw__FP12obj_lp_class, + (process_method_func)daObj_Lp_Create, + (process_method_func)daObj_Lp_Delete, + (process_method_func)daObj_Lp_Execute, + (process_method_func)daObj_Lp_IsDelete, + (process_method_func)daObj_Lp_Draw, }; /* 80C55AFC-80C55B2C -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_LP */ @@ -601,196 +527,4 @@ extern actor_process_profile_definition g_profile_OBJ_LP = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80C55B2C-80C55B40 000054 0014+00 1/1 0/0 0/0 .data __vt__18mDoExt_3DlineMat_c */ -SECTION_DATA extern void* __vt__18mDoExt_3DlineMat_c[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - -/* 80C55488-80C559C8 001368 0540+00 1/0 0/0 0/0 .text daObj_Lp_Create__FP10fopAc_ac_c */ -static void daObj_Lp_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80C559C8-80C55A04 0018A8 003C+00 1/1 0/0 0/0 .text __dt__5wd_ssFv */ -wd_ss::~wd_ss() { - // NONMATCHING -} - -/* 80C55A04-80C55A08 0018E4 0004+00 1/1 0/0 0/0 .text __ct__5wd_ssFv */ -wd_ss::wd_ss() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80C55BB4-80C55BB8 000074 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_80C55BB4[4]; -#pragma pop - -/* 80C55BB8-80C55BBC 000078 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_80C55BB8[4]; -#pragma pop - -/* 80C55BBC-80C55BC0 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55BBC[4]; -#pragma pop - -/* 80C55BC0-80C55BC4 000080 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55BC0[4]; -#pragma pop - -/* 80C55BC4-80C55BC8 000084 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C55BC4[4]; -#pragma pop - -/* 80C55BC8-80C55BCC 000088 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C55BC8[4]; -#pragma pop - -/* 80C55BCC-80C55BD0 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80C55BCC[4]; -#pragma pop - -/* 80C55BD0-80C55BD4 000090 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80C55BD0[4]; -#pragma pop - -/* 80C55BD4-80C55BD8 000094 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80C55BD4[4]; -#pragma pop - -/* 80C55BD8-80C55BDC 000098 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80C55BD8[4]; -#pragma pop - -/* 80C55BDC-80C55BE0 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55BDC[4]; -#pragma pop - -/* 80C55BE0-80C55BE4 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55BE0[4]; -#pragma pop - -/* 80C55BE4-80C55BE8 0000A4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55BE4[4]; -#pragma pop - -/* 80C55BE8-80C55BEC 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C55BE8[4]; -#pragma pop - -/* 80C55BEC-80C55BF0 0000AC 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80C55BEC[4]; -#pragma pop - -/* 80C55BF0-80C55BF4 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80C55BF0[4]; -#pragma pop - -/* 80C55BF4-80C55BF8 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_80C55BF4[4]; -#pragma pop - -/* 80C55BF8-80C55BFC 0000B8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80C55BF8[4]; -#pragma pop - -/* 80C55BFC-80C55C00 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80C55BFC[4]; -#pragma pop - -/* 80C55C00-80C55C04 0000C0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55C00[4]; -#pragma pop - -/* 80C55C04-80C55C08 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_80C55C04[4]; -#pragma pop - -/* 80C55C08-80C55C0C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C55C08[4]; -#pragma pop - -/* 80C55C0C-80C55C10 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C55C0C[4]; -#pragma pop - -/* 80C55C10-80C55C14 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80C55C10[4]; -#pragma pop - -/* 80C55C14-80C55C18 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80C55C14[4]; -#pragma pop - -/* 80C55AC0-80C55AC0 0000B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES;