From 009f08f2f3537bb0032052b68adec79971beeff0 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Thu, 2 Oct 2025 10:37:03 -0700 Subject: [PATCH] e_mk_bo almost (#2721) * d_a_e_mk_bo almost * cleanup --- include/d/actor/d_a_e_mk_bo.h | 38 +- src/d/actor/d_a_e_mk.cpp | 2 +- src/d/actor/d_a_e_mk_bo.cpp | 1536 +++++++++++++++++---------------- 3 files changed, 804 insertions(+), 772 deletions(-) diff --git a/include/d/actor/d_a_e_mk_bo.h b/include/d/actor/d_a_e_mk_bo.h index 5283bf09a9a..b532df2e23f 100644 --- a/include/d/actor/d_a_e_mk_bo.h +++ b/include/d/actor/d_a_e_mk_bo.h @@ -1,6 +1,9 @@ #ifndef D_A_E_MK_BO_H #define D_A_E_MK_BO_H + #include "f_op/f_op_actor_mng.h" +#include "d/d_cc_d.h" +#include "d/d_bg_s_acch.h" /** * @ingroup actors-enemies @@ -10,11 +13,38 @@ * @details * */ -class e_mk_bo_class : public fopEn_enemy_c { +class e_mk_bo_class { public: - /* 0x5ac */ u8 field_0x5ac[0x9b4 - 0x5ac]; - /* 0x9B4 */ u8 field_0x9b4; - /* 0x9B5 */ u8 field_0x9B5[0x9c0 - 0x9B5]; + /* 0x000 */ fopEn_enemy_c enemy; + /* 0x5AC */ request_of_phase_process_class phase; + /* 0x5B4 */ J3DModel* model; + /* 0x5B8 */ Z2SoundObjSimple sound; + /* 0x5D8 */ s16 counter; + /* 0x5DA */ s16 action; + /* 0x5DC */ s16 field_0x5dc; + /* 0x5E0 */ cXyz field_0x5e0; + /* 0x5EC */ s16 field_0x5ec; + /* 0x5EE */ s16 field_0x5ee; + /* 0x5F0 */ f32 field_0x5f0; + /* 0x5F4 */ s16 timers[2]; + /* 0x5F8 */ s16 field_0x5f8; + /* 0x5FA */ s16 field_0x5fa; + /* 0x5FC */ f32 field_0x5fc; + /* 0x600 */ s8 field_0x600; + /* 0x602 */ s16 field_0x602; + /* 0x604 */ dBgS_AcchCir acchcir; + /* 0x644 */ dBgS_ObjAcch acch; + /* 0x81C */ dCcD_Stts ccStts; + /* 0x858 */ dCcD_Sph ccAtSph; + /* 0x990 */ u32 field_0x990; + /* 0x994 */ u32 field_0x994; + /* 0x998 */ s8 field_0x998; + /* 0x99C */ u32 field_0x99c[2]; + /* 0x9A4 */ u32 field_0x9a4[4]; + /* 0x9B4 */ s8 field_0x9b4; + /* 0x9B5 */ s8 field_0x9b5; + /* 0x9B8 */ mDoExt_McaMorf* efModelMorf; + /* 0x9BC */ mDoExt_btkAnm* pbtk; }; STATIC_ASSERT(sizeof(e_mk_bo_class) == 0x9c0); diff --git a/src/d/actor/d_a_e_mk.cpp b/src/d/actor/d_a_e_mk.cpp index c20c6ae3925..528d8457534 100644 --- a/src/d/actor/d_a_e_mk.cpp +++ b/src/d/actor/d_a_e_mk.cpp @@ -2680,7 +2680,7 @@ static int daE_MK_Execute(e_mk_class* i_this) { PSMTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(23), *calc_mtx); sp6c.set(0.0f, 0.0f, 0.0f); MtxPosition(&sp6c, &sp78); - i_actor->current.pos = sp78; + i_actor->enemy.current.pos = sp78; i_actor->field_0x9b4 = 0; i_this->field_0x707 = 0; } diff --git a/src/d/actor/d_a_e_mk_bo.cpp b/src/d/actor/d_a_e_mk_bo.cpp index e74617d70c8..a1b3c4b196d 100644 --- a/src/d/actor/d_a_e_mk_bo.cpp +++ b/src/d/actor/d_a_e_mk_bo.cpp @@ -6,505 +6,817 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_e_mk_bo.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" - - -// -// Forward References: -// - -extern "C" static void daE_MK_BO_Draw__FP13e_mk_bo_class(); -extern "C" static void hit_check__FP13e_mk_bo_class(); -extern "C" static void e_mk_bo_shot__FP13e_mk_bo_class(); -extern "C" static void e_mk_bo_start__FP13e_mk_bo_class(); -extern "C" static void e_mk_bo_r04__FP13e_mk_bo_class(); -extern "C" static void e_mk_bo_hasira__FP13e_mk_bo_class(); -extern "C" static void e_mk_bo_demo_ground__FP13e_mk_bo_class(); -extern "C" static void e_mk_bo_demo_spin__FP13e_mk_bo_class(); -extern "C" static void action__FP13e_mk_bo_class(); -extern "C" static void daE_MK_BO_Execute__FP13e_mk_bo_class(); -extern "C" static bool daE_MK_BO_IsDelete__FP13e_mk_bo_class(); -extern "C" static void daE_MK_BO_Delete__FP13e_mk_bo_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daE_MK_BO_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_8071F5E4(); -extern "C" static void func_8071F5EC(); -extern "C" void __dt__4cXyzFv(); -extern "C" extern char const* const d_a_e_mk_bo__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 mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void -__ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl(); -extern "C" void play__14mDoExt_McaMorfFP3VecUlSc(); -extern "C" void entryDL__14mDoExt_McaMorfFv(); -extern "C" void modelCalc__14mDoExt_McaMorfFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void cDmrNowMidnaTalk__Fv(); -extern "C" void __ct__10fopAc_ac_cFv(); -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_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); -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 dComIfGp_getReverb__Fi(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -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 SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void GetAtHitObj__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void func_80280808(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -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" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// +#include "d/actor/d_a_e_mk.h" +#include "d/actor/d_a_player.h" +#include "d/d_s_play.h" +#include "c/c_damagereaction.h" +#include "Z2AudioLib/Z2Instances.h" /* 8071CCEC-8071CE30 0000EC 0144+00 1/0 0/0 0/0 .text daE_MK_BO_Draw__FP13e_mk_bo_class */ -static void daE_MK_BO_Draw(e_mk_bo_class* param_0) { - // NONMATCHING +static int daE_MK_BO_Draw(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + + if (i_this->field_0x9b4 != 0) { + return 1; + } + + g_env_light.settingTevStruct(0, &actor->current.pos, &actor->tevStr); + g_env_light.setLightTevColorType_MAJI(i_this->model, &actor->tevStr); + + if (i_this->action >= 2) { + i_this->model->getModelData()->getMaterialNodePointer(1)->getTevColor(1)->r = 25; + i_this->model->getModelData()->getMaterialNodePointer(1)->getTevColor(1)->g = 35; + i_this->model->getModelData()->getMaterialNodePointer(1)->getTevColor(1)->b = 10; + } + + mDoExt_modelUpdateDL(i_this->model); + + if (i_this->field_0x9b5 != 0) { + i_this->pbtk->entry(i_this->efModelMorf->getModel()->getModelData()); + i_this->efModelMorf->entryDL(); + } + + return 1; } -/* ############################################################################################## */ -/* 8071F640-8071F644 000000 0004+00 8/8 0/0 0/0 .rodata @3776 */ -SECTION_RODATA static u8 const lit_3776[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8071F640, &lit_3776); - -/* 8071F644-8071F648 000004 0004+00 1/8 0/0 0/0 .rodata @3777 */ -SECTION_RODATA static f32 const lit_3777 = 1.0f; -COMPILER_STRIP_GATE(0x8071F644, &lit_3777); - -/* 8071F648-8071F64C 000008 0004+00 0/3 0/0 0/0 .rodata @3778 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3778 = 100.0f; -COMPILER_STRIP_GATE(0x8071F648, &lit_3778); -#pragma pop - -/* 8071F64C-8071F650 00000C 0004+00 0/1 0/0 0/0 .rodata @3779 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3779 = 3.0f; -COMPILER_STRIP_GATE(0x8071F64C, &lit_3779); -#pragma pop - /* 8071CE30-8071D084 000230 0254+00 1/1 0/0 0/0 .text hit_check__FP13e_mk_bo_class */ -static void hit_check(e_mk_bo_class* param_0) { - // NONMATCHING +static void hit_check(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + + fopAc_ac_c* a_parent = (fopAc_ac_c*)fopAcM_SearchByID(actor->parentActorID); + e_mk_class* e_mk = (e_mk_class*)a_parent; + cXyz sp24; + + if (i_this->ccAtSph.ChkTgHit() || i_this->acch.ChkGroundHit() || i_this->acch.ChkWallHit() || (e_mk != NULL && e_mk->field_0xc30 == 1 && i_this->ccAtSph.ChkAtHit()) || i_this->ccAtSph.ChkAtShieldHit()) { + i_this->field_0x5f8 = 20; + OS_REPORT("E_MK_BO HIT \n"); + + if (i_this->ccAtSph.ChkTgHit()) { + i_this->sound.startSound(Z2SE_COL_FLIP_BOOM, 0, -1); + } + + if (i_this->ccAtSph.ChkAtHit()) { + fopAc_ac_c* at_hit_actor = dCc_GetAc(i_this->ccAtSph.GetAtHitObj()->GetAc()); + if (at_hit_actor != NULL && fopAcM_GetName(at_hit_actor) == PROC_ALINK && daPy_getPlayerActorClass()->checkPlayerGuard()) { + dComIfGp_getVibration().StartShock(4, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + } + } + + if (i_this->field_0x998 == 1) { + i_this->field_0x998 = 2; + } + + if (i_this->field_0x5dc <= 2) { + i_this->field_0x5dc = 3; + i_this->field_0x5e0 = a_parent->current.pos; + i_this->field_0x5e0.y += 100.0f; + + sp24 = i_this->field_0x5e0 - actor->current.pos; + actor->current.angle.y = cM_atan2s(sp24.x, sp24.z); + actor->current.angle.x = -cM_atan2s(sp24.y, JMAFastSqrt(SQUARE(sp24.x) + SQUARE(sp24.z))); + + if (i_this->acch.ChkGroundHit()) { + fopAcM_effSmokeSet2(&i_this->field_0x990, &i_this->field_0x994, &actor->current.pos, &actor->current.angle, 3.0f + NREG_F(18), &actor->tevStr); + } + } + } } -/* ############################################################################################## */ -/* 8071F650-8071F658 000010 0008+00 0/3 0/0 0/0 .rodata @3934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3934[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8071F650, &lit_3934); -#pragma pop - -/* 8071F658-8071F660 000018 0008+00 0/3 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3935[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8071F658, &lit_3935); -#pragma pop - -/* 8071F660-8071F668 000020 0008+00 0/3 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3936[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8071F660, &lit_3936); -#pragma pop - -/* 8071F668-8071F66C 000028 0004+00 0/1 0/0 0/0 .rodata @3937 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3937 = 300.0f; -COMPILER_STRIP_GATE(0x8071F668, &lit_3937); -#pragma pop - -/* 8071F66C-8071F670 00002C 0004+00 0/3 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938 = 160.0f; -COMPILER_STRIP_GATE(0x8071F66C, &lit_3938); -#pragma pop - -/* 8071F670-8071F674 000030 0004+00 0/3 0/0 0/0 .rodata @3939 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3939 = 350.0f; -COMPILER_STRIP_GATE(0x8071F670, &lit_3939); -#pragma pop - -/* 8071F674-8071F678 000034 0004+00 0/3 0/0 0/0 .rodata @3940 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3940 = 600.0f; -COMPILER_STRIP_GATE(0x8071F674, &lit_3940); -#pragma pop - -/* 8071F678-8071F67C 000038 0004+00 0/1 0/0 0/0 .rodata @3941 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3941 = 120.0f; -COMPILER_STRIP_GATE(0x8071F678, &lit_3941); -#pragma pop - -/* 8071F67C-8071F680 00003C 0004+00 0/1 0/0 0/0 .rodata @3942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3942 = 30.0f; -COMPILER_STRIP_GATE(0x8071F67C, &lit_3942); -#pragma pop - -/* 8071F680-8071F684 000040 0004+00 0/4 0/0 0/0 .rodata @3943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3943 = 40.0f; -COMPILER_STRIP_GATE(0x8071F680, &lit_3943); -#pragma pop - -/* 8071F684-8071F688 000044 0004+00 0/5 0/0 0/0 .rodata @3944 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3944 = 50.0f; -COMPILER_STRIP_GATE(0x8071F684, &lit_3944); -#pragma pop - -/* 8071F688-8071F68C 000048 0004+00 0/5 0/0 0/0 .rodata @3945 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3945 = 5.0f; -COMPILER_STRIP_GATE(0x8071F688, &lit_3945); -#pragma pop - /* 8071D084-8071D694 000484 0610+00 1/1 0/0 0/0 .text e_mk_bo_shot__FP13e_mk_bo_class */ -static void e_mk_bo_shot(e_mk_bo_class* param_0) { - // NONMATCHING +static s8 e_mk_bo_shot(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + fopAc_ac_c* a_parent = (fopAc_ac_c*)fopAcM_SearchByID(actor->parentActorID); + + s8 rt = 1; + if (a_parent == NULL) { + return rt; + } + + e_mk_class* e_mk = (e_mk_class*)a_parent; + fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); + cXyz sp3C; + + switch (i_this->field_0x5dc) { + case 0: + if (e_mk->field_0x70c != 0) { + i_this->field_0x5e0 = e_mk->field_0x70c->enemy.current.pos; + i_this->field_0x5e0.y += 100.0f; + } else { + i_this->field_0x5e0 = player->current.pos; + i_this->field_0x5e0.y += 100.0f; + } + + i_this->field_0x5dc = 1; + + sp3C = i_this->field_0x5e0 - actor->current.pos; + actor->current.angle.y = cM_atan2s(sp3C.x, sp3C.z); + i_this->field_0x5fa = actor->current.angle.y; + actor->current.angle.x = -cM_atan2s(sp3C.y, JMAFastSqrt(SQUARE(sp3C.x) + SQUARE(sp3C.z))); + i_this->field_0x5ee = 0x400; + break; + case 1: + sp3C = i_this->field_0x5e0 - actor->current.pos; + if (sp3C.abs() < 300.0f + TREG_F(18)) { + i_this->field_0x5dc = 2; + i_this->timers[0] = 30; + } + break; + case 2: + case 3: + if (i_this->timers[0] == 0) { + rt = 0; + } + + i_this->field_0x5e0 = a_parent->current.pos; + i_this->field_0x5e0.y += 160.0f; + + sp3C = i_this->field_0x5e0 - actor->current.pos; + cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(sp3C.x, sp3C.z), 1, i_this->field_0x5ec); + cLib_addCalcAngleS2(&actor->current.angle.x, -cM_atan2s(sp3C.y, JMAFastSqrt(SQUARE(sp3C.x) + SQUARE(sp3C.z))), 1, i_this->field_0x5ec); + cLib_addCalcAngleS2(&i_this->field_0x5ec, i_this->field_0x5ee, 1, 0x40); + cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, 4); + + f32 temp_f31 = sp3C.abs(); + if (e_mk->mDemoMode != 0 || (e_mk->mAction == 2 && e_mk->mMode >= 20)) { + if (temp_f31 < 350.0f + YREG_F(18)) { + i_this->field_0x600 = 1; + e_mk->field_0x707 = 3; + } else if (temp_f31 < 600.0f + YREG_F(17)) { + e_mk->field_0x707 = 2; + } + } else if (e_mk->mAction == 3 && temp_f31 < 120.0f + YREG_F(19)) { + e_mk->field_0x707 = 4; + i_this->action = 1; + i_this->field_0x5dc = 0; + dComIfGp_setHitMark(3, actor, &actor->current.pos, &actor->shape_angle, NULL, 0); + actor->speed.y = 30.0f; + i_this->timers[0] = 40; + return rt; + } + } + + actor->speedF = 40.0f + NREG_F(0); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + cMtx_XrotM(*calc_mtx, actor->current.angle.x); + sp3C.x = 0.0f; + sp3C.y = 0.0f; + sp3C.z = actor->speedF; + MtxPosition(&sp3C, &actor->speed); + actor->current.pos += actor->speed; + actor->shape_angle.z = -(TREG_S(2) + 0x1800); + + if (i_this->ccAtSph.ChkAtHit() && !i_this->ccAtSph.ChkAtShieldHit()) { + OS_REPORT("E_MK_BO ANY HIT !!!!\n"); + + cCcD_Obj* at_hit_obj = i_this->ccAtSph.GetAtHitObj(); + if (fopAcM_GetName(dCc_GetAc(at_hit_obj->GetAc())) == PROC_ALINK) { + OS_REPORT("E_MK_BO PL HIT !!!!\n"); + e_mk->field_0x707 = 5; + i_this->field_0x5f8 = 10; + } + } + + cLib_addCalc2(&i_this->field_0x5f0, 50.0f + BREG_F(2), 1.0f, 5.0f); + return rt; } -/* ############################################################################################## */ -/* 8071F68C-8071F690 00004C 0004+00 0/1 0/0 0/0 .rodata @4065 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4065 = 5000.0f; -COMPILER_STRIP_GATE(0x8071F68C, &lit_4065); -#pragma pop - -/* 8071F690-8071F694 000050 0004+00 0/1 0/0 0/0 .rodata @4066 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4066 = -3900.0f; -COMPILER_STRIP_GATE(0x8071F690, &lit_4066); -#pragma pop - -/* 8071F694-8071F698 000054 0004+00 0/3 0/0 0/0 .rodata @4067 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4067 = 200.0f; -COMPILER_STRIP_GATE(0x8071F694, &lit_4067); -#pragma pop - /* 8071D694-8071DBA0 000A94 050C+00 1/1 0/0 0/0 .text e_mk_bo_start__FP13e_mk_bo_class */ -static void e_mk_bo_start(e_mk_bo_class* param_0) { - // NONMATCHING +static s8 e_mk_bo_start(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + e_mk_class* e_mk = (e_mk_class*)fopAcM_SearchByID(actor->parentActorID); + + s8 rt = 2; + if (e_mk == NULL) { + return rt; + } + + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp38; + + switch (i_this->field_0x5dc) { + case 0: + i_this->field_0x998 = 1; + i_this->field_0x5e0.set(0.0f, 5000.0f + JREG_F(18), -3900.0f); + i_this->field_0x5dc = 1; + + sp38 = i_this->field_0x5e0 - actor->current.pos; + actor->current.angle.y = cM_atan2s(sp38.x, sp38.z); + i_this->field_0x5fa = actor->current.angle.y; + actor->current.angle.x = -cM_atan2s(sp38.y, JMAFastSqrt(SQUARE(sp38.x) + SQUARE(sp38.z))); + i_this->field_0x5ee = 0x400; + break; + case 1: + sp38 = i_this->field_0x5e0 - actor->current.pos; + if (sp38.abs() < 200.0f + TREG_F(18)) { + i_this->field_0x5dc = 2; + i_this->timers[0] = 30; + } + break; + case 2: + case 3: + if (i_this->timers[0] == 0) { + rt = 0; + } + + i_this->field_0x5e0 = e_mk->enemy.current.pos; + i_this->field_0x5e0.y += 160.0f; + + sp38 = i_this->field_0x5e0 - actor->current.pos; + cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(sp38.x, sp38.z), 1, i_this->field_0x5ec); + cLib_addCalcAngleS2(&actor->current.angle.x, -cM_atan2s(sp38.y, JMAFastSqrt(SQUARE(sp38.x) + SQUARE(sp38.z))), 1, i_this->field_0x5ec); + cLib_addCalcAngleS2(&i_this->field_0x5ec, i_this->field_0x5ee, 1, 0x40); + cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, 4); + + f32 temp_f31 = sp38.abs(); + if (e_mk->mDemoMode != 0 || (e_mk->mAction == 2 && e_mk->mMode >= 20)) { + if (temp_f31 < 350.0f + YREG_F(18)) { + i_this->field_0x600 = 1; + e_mk->field_0x707 = 3; + } else if (temp_f31 < 600.0f + YREG_F(17)) { + e_mk->field_0x707 = 2; + } + } + break; + } + + actor->speedF = 40.0f + NREG_F(0); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + cMtx_XrotM(*calc_mtx, actor->current.angle.x); + sp38.x = 0.0f; + sp38.y = 0.0f; + sp38.z = actor->speedF; + MtxPosition(&sp38, &actor->speed); + actor->current.pos += actor->speed; + actor->shape_angle.z = -(TREG_S(2) + 0x1800); + + cLib_addCalc2(&i_this->field_0x5f0, 50.0f + BREG_F(2), 1.0f, 5.0f); + return rt; } /* 8071DBA0-8071DF04 000FA0 0364+00 1/1 0/0 0/0 .text e_mk_bo_r04__FP13e_mk_bo_class */ -static void e_mk_bo_r04(e_mk_bo_class* param_0) { - // NONMATCHING +static s8 e_mk_bo_r04(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + e_mk_class* e_mk = (e_mk_class*)fopAcM_SearchByID(actor->parentActorID); + + s8 rt = 2; + if (e_mk == NULL) { + return rt; + } + + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp1C; + + switch (i_this->field_0x5dc) { + case 0: + i_this->field_0x998 = 1; + i_this->field_0x5dc = 1; + + actor->current.angle.y = (VREG_S(7) + e_mk->enemy.shape_angle.y) - 0x3000; + i_this->field_0x5fa = actor->current.angle.y; + i_this->timers[0] = JREG_S(7) + 65; + i_this->timers[1] = 30; + break; + case 1: + if (i_this->timers[0] != 0) { + actor->current.angle.y += i_this->field_0x5ee; + i_this->field_0x5ee = JREG_S(9) + 350; + actor->current.angle.x = JREG_S(2) + 1700; + } else { + i_this->field_0x5e0 = e_mk->enemy.current.pos; + i_this->field_0x5e0.y += 160.0f; + + sp1C = i_this->field_0x5e0 - actor->current.pos; + cLib_addCalcAngleS2(&actor->current.angle.y, cM_atan2s(sp1C.x, sp1C.z), 1, i_this->field_0x5ec); + cLib_addCalcAngleS2(&actor->current.angle.x, -cM_atan2s(sp1C.y, JMAFastSqrt(SQUARE(sp1C.x) + SQUARE(sp1C.z))), 1, i_this->field_0x5ec); + cLib_addCalcAngleS2(&i_this->field_0x5ec, i_this->field_0x5ee, 1, 0x40); + cLib_addCalcAngleS2(&i_this->field_0x5ee, 0x2000, 1, JREG_S(8) + 4); + + f32 temp_f31 = sp1C.abs(); + if (i_this->timers[1] == 0 && temp_f31 < 350.0f + YREG_F(18)) { + i_this->field_0x600 = 1; + e_mk->field_0x707 = 3; + } else if (temp_f31 < 600.0f + YREG_F(17)) { + e_mk->field_0x707 = 2; + } + } + break; + } + + actor->speedF = 40.0f + NREG_F(0); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + cMtx_XrotM(*calc_mtx, actor->current.angle.x); + sp1C.x = 0.0f; + sp1C.y = 0.0f; + sp1C.z = actor->speedF; + MtxPosition(&sp1C, &actor->speed); + actor->current.pos += actor->speed; + actor->shape_angle.z = -(TREG_S(2) + 0x1800); + + cLib_addCalc2(&i_this->field_0x5f0, 50.0f + BREG_F(2), 1.0f, 5.0f); + return rt; } -/* ############################################################################################## */ -/* 8071F698-8071F69C 000058 0004+00 0/1 0/0 0/0 .rodata @4210 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4210 = 500.0f; -COMPILER_STRIP_GATE(0x8071F698, &lit_4210); -#pragma pop - -/* 8071F69C-8071F6A0 00005C 0004+00 0/1 0/0 0/0 .rodata @4211 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4211 = 7.0f; -COMPILER_STRIP_GATE(0x8071F69C, &lit_4211); -#pragma pop - -/* 8071F6A0-8071F6A4 000060 0004+00 0/1 0/0 0/0 .rodata @4212 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4212 = -2.0f / 5.0f; -COMPILER_STRIP_GATE(0x8071F6A0, &lit_4212); -#pragma pop - -/* 8071F6A4-8071F6A8 000064 0004+00 0/2 0/0 0/0 .rodata @4213 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4213 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8071F6A4, &lit_4213); -#pragma pop - -/* 8071F6A8-8071F6B0 000068 0004+04 0/1 0/0 0/0 .rodata @4214 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4214[1 + 1 /* padding */] = { - 10.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x8071F6A8, &lit_4214); -#pragma pop - -/* 8071F6B0-8071F6B8 000070 0008+00 0/1 0/0 0/0 .rodata @4216 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4216[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8071F6B0, &lit_4216); -#pragma pop - /* 8071DF04-8071E1A4 001304 02A0+00 1/1 0/0 0/0 .text e_mk_bo_hasira__FP13e_mk_bo_class */ -static void e_mk_bo_hasira(e_mk_bo_class* param_0) { - // NONMATCHING +static void e_mk_bo_hasira(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + fopAc_ac_c* a_parent = fopAcM_SearchByID(actor->parentActorID); + + if (a_parent != NULL) { + e_mk_class* e_mk = (e_mk_class*)a_parent; + if (e_mk->field_0xc30 == 2) { + i_this->action = 2; + i_this->field_0x998 = 1; + return; + } + + cXyz sp24; + cXyz sp18; + if (e_mk->mHasira != NULL) { + daPillar_c* pillar = e_mk->mHasira; + cXyz spC; + + mDoMtx_stack_c::transS(e_mk->mHasira->current.pos.x, e_mk->mHasira->current.pos.y, pillar->current.pos.z); + mDoMtx_stack_c::YrotM(pillar->mRotY); + mDoMtx_stack_c::XrotM(e_mk->mHasira->shape_angle.x); + mDoMtx_stack_c::YrotM(-pillar->mRotY); + mDoMtx_stack_c::transM(0.0f, 500.0f, 0.0f); + mDoMtx_multVecZero(mDoMtx_stack_c::get(), &spC); + + mDoMtx_stack_c::YrotS(actor->current.angle.y + i_this->field_0x5fa); + + sp24.x = 0.0f; + sp24.y = 0.0f; + sp24.z = i_this->field_0x5fc; + mDoMtx_stack_c::multVec(&sp24, &sp18); + + cLib_addCalc2(&actor->current.pos.x, spC.x + sp18.x, 1.0f, 50.0f); + cLib_addCalc2(&actor->current.pos.z, spC.z + sp18.z, 1.0f, 50.0f); + actor->current.pos.y += actor->speed.y; + actor->speed.y -= 5.0f; + + if (actor->current.pos.y <= 7.0f + spC.y) { + actor->current.pos.y = 7.0f + spC.y; + if (i_this->field_0x5dc <= 3) { + actor->speed.y *= -0.4f; + } else { + actor->speed.y = 0.0f; + } + + if (i_this->field_0x5dc <= 1) { + i_this->timers[0] = 20; + } + + i_this->field_0x5dc++; + } + + if (pillar->checkRollAttack()) { + i_this->timers[0] = 20; + } + } + + if (i_this->timers[0] != 0) { + i_this->field_0x5fc += 0.1f + AREG_F(19); + } + + actor->shape_angle.x = (200.0f + KREG_F(2)) * (i_this->timers[0] * cM_ssin(i_this->timers[0] * 12000)); + actor->shape_angle.z = 0; + cLib_addCalc2(&i_this->field_0x5f0, 10.0f + BREG_F(3), 1.0f, 5.0f); + } } /* 8071E1A4-8071E200 0015A4 005C+00 1/1 0/0 0/0 .text e_mk_bo_demo_ground__FP13e_mk_bo_class */ -static void e_mk_bo_demo_ground(e_mk_bo_class* param_0) { - // NONMATCHING +static void e_mk_bo_demo_ground(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + if (actor->health != 0) { + actor->health = 0; + i_this->action = 3; + i_this->field_0x5dc = 0; + actor->home.pos.y = actor->current.pos.y; + } + + fopAc_ac_c* a_parent = fopAcM_SearchByID(actor->parentActorID); } -/* ############################################################################################## */ -/* 8071F6B8-8071F6BC 000078 0004+00 0/1 0/0 0/0 .rodata @4306 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4306 = -1.0f; -COMPILER_STRIP_GATE(0x8071F6B8, &lit_4306); -#pragma pop - -/* 8071F6BC-8071F6C0 00007C 0004+00 0/1 0/0 0/0 .rodata @4307 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4307 = 20.0f; -COMPILER_STRIP_GATE(0x8071F6BC, &lit_4307); -#pragma pop - -/* 8071F6C0-8071F6C4 000080 0004+00 0/1 0/0 0/0 .rodata @4308 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4308 = 0.5f; -COMPILER_STRIP_GATE(0x8071F6C0, &lit_4308); -#pragma pop - -/* 8071F6C4-8071F6C8 000084 0004+00 0/1 0/0 0/0 .rodata @4309 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4309 = 170.0f; -COMPILER_STRIP_GATE(0x8071F6C4, &lit_4309); -#pragma pop - -/* 8071F860-8071F870 000048 000C+04 0/1 0/0 0/0 .bss @4243 */ -#pragma push -#pragma force_active on -static u8 lit_4243[12 + 4 /* padding */]; -#pragma pop - -/* 8071F870-8071F87C 000058 000C+00 0/1 0/0 0/0 .bss sc$4242 */ -#pragma push -#pragma force_active on -static u8 sc[12]; -#pragma pop - /* 8071E200-8071E6C4 001600 04C4+00 1/1 0/0 0/0 .text e_mk_bo_demo_spin__FP13e_mk_bo_class */ -static void e_mk_bo_demo_spin(e_mk_bo_class* param_0) { - // NONMATCHING -} +static void e_mk_bo_demo_spin(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp34; + cXyz sp28; + f32 var_f31 = 0.0f; -/* ############################################################################################## */ -/* 8071F6C8-8071F6CC 000088 0004+00 1/2 0/0 0/0 .rodata @4353 */ -SECTION_RODATA static f32 const lit_4353 = 10000.0f; -COMPILER_STRIP_GATE(0x8071F6C8, &lit_4353); + switch (i_this->field_0x5dc) { + case 4: + break; + case 0: + actor->speed.y = 0.0f; + i_this->field_0x5dc = 1; + actor->home.pos = actor->current.pos; + i_this->timers[0] = 20; + actor->speedF = 0.0f; + /* fallthrough */ + case 1: + i_this->sound.startLevelSound(Z2SE_BOOM_GET_DEMO_LOOP1, 0, -1); + if (i_this->timers[0] == 1) { + Z2GetAudioMgr()->seStart(Z2SE_OBJ_PEEL_OFF_LEAVES, &actor->current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)), 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + + if (i_this->timers[0] == 0) { + actor->field_0x560 = 1; + } + + if (i_this->timers[0] <= 10 && (i_this->counter & 15) == 0) { + static cXyz sc(1.0f, 1.0f, 1.0f); + dComIfGp_particle_set(dPa_RM(ID_ZI_S_OTIBA_A), &actor->home.pos, &actor->tevStr, &actor->shape_angle, &sc); + } + + actor->shape_angle.y += i_this->field_0x602; + cLib_addCalcAngleS2(&i_this->field_0x602, 0x2000, 2, (ZREG_S(0) + 0x200)); + cLib_addCalc2(&actor->current.pos.y, 200.0f + (actor->home.pos.y + ZREG_F(1)), 0.1f, actor->speed.y); + cLib_addCalc2(&actor->speed.y, 20.0f + ZREG_F(2), 1.0f, 0.5f + ZREG_F(3)); + + if (actor->health != 0) { + actor->health = 0; + actor->speedF = 0.0f; + actor->current.angle.y = fopAcM_searchPlayerAngleY(actor) + 0x8000; + i_this->field_0x5ec = 0; + i_this->timers[0] = 40; + i_this->field_0x5dc = 2; + } + break; + case 2: + i_this->sound.startLevelSound(Z2SE_BOOM_GET_DEMO_LOOP2, 0, -1); + + var_f31 = 40.0f; + actor->shape_angle.y += i_this->field_0x602; + + if (i_this->timers[0] == 0) { + actor->current.angle.y += i_this->field_0x5ec; + cLib_addCalcAngleS2(&i_this->field_0x5ec, 0x400, 1, 0x100); + + s16 sp8 = (actor->current.angle.y - fopAcM_searchPlayerAngleY(actor)); + if (sp8 <= 0x400 && sp8 > -0x400) { + i_this->field_0x5dc = 3; + } + + cLib_addCalcAngleS2(&actor->shape_angle.z, -0x1200, 2, 0x200); + } + break; + case 3: + i_this->sound.startLevelSound(Z2SE_BOOM_GET_DEMO_LOOP2, 0, -1); + + var_f31 = 40.0f; + actor->shape_angle.y += i_this->field_0x602; + + cLib_addCalcAngleS2(&actor->current.angle.y, fopAcM_searchPlayerAngleY(actor), 1, 0x400); + cLib_addCalc2(&actor->current.pos.y, 170.0f + (actor->home.pos.y + ZREG_F(1)), 0.1f,5.0f); + + if (fopAcM_searchPlayerDistanceXZ(actor) < 50.0f) { + e_mk_class* e_mk = (e_mk_class*)fopAcM_SearchByID(actor->parentActorID); + e_mk->mDemoMode++; + i_this->field_0x5dc = 4; + i_this->field_0x600 = 1; + } + break; + } + + cLib_addCalc2(&actor->speedF, var_f31, 1.0f, 1.0f); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + sp34.x = 0.0f; + sp34.y = 0.0f; + sp34.z = actor->speedF; + MtxPosition(&sp34, &sp28); + actor->current.pos += sp28; + + if (var_f31 > 0.0f && (i_this->counter & 7) == 0) { + i_this->sound.startSound(Z2SE_EN_MK_BOOM_FLY, 0, -1); + } +} /* 8071E6C4-8071E8A4 001AC4 01E0+00 1/1 0/0 0/0 .text action__FP13e_mk_bo_class */ -static void action(e_mk_bo_class* param_0) { - // NONMATCHING +static void action(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + cXyz sp24; + cXyz sp18; + + e_mk_class* e_mk = (e_mk_class*)fopAcM_SearchByID(actor->parentActorID); + s8 var_r28; + u32 sound = Z2SE_MK_DARK_BOOMERANG; + + switch (i_this->action) { + case 0: + if (e_mk->field_0xc30 == 1) { + var_r28 = e_mk_bo_start(i_this); + } else if (e_mk->field_0xc30 == 3 || fopAcM_GetRoomNo(actor) == 4) { + var_r28 = e_mk_bo_r04(i_this); + } else { + var_r28 = e_mk_bo_shot(i_this); + sound = Z2SE_EN_MK_BOOM_FLY; + } + + actor->shape_angle.y += 0x2000; + + if ((i_this->counter & 7) == 0) { + i_this->sound.startSound(sound, 0, -1); + } + + if (var_r28 == 1) { + i_this->acch.CrrPos(dComIfG_Bgsp()); + hit_check(i_this); + } else if (var_r28 == 0) { + i_this->field_0x5f8 = 10; + } + break; + case 1: + e_mk_bo_hasira(i_this); + i_this->field_0x5f8 = 10; + break; + case 2: + e_mk_bo_demo_ground(i_this); + i_this->field_0x5f8 = 10; + break; + case 3: + e_mk_bo_demo_spin(i_this); + i_this->field_0x5f8 = 10; + i_this->field_0x9b5 = 1; + break; + } + + cXyz spC(actor->current.pos); + if (i_this->field_0x5f8 != 0) { + spC.y += 10000.0f; + } + + i_this->ccAtSph.SetC(spC); + dComIfG_Ccsp()->Set(&i_this->ccAtSph); } -/* ############################################################################################## */ -/* 8071F6CC-8071F6D0 00008C 0004+00 0/1 0/0 0/0 .rodata @4580 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4580 = 100000.0f; -COMPILER_STRIP_GATE(0x8071F6CC, &lit_4580); -#pragma pop - -/* 8071F700-8071F708 000020 0008+00 0/1 0/0 0/0 .data bo_eno_1$4378 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 bo_eno_1[8] = { - 0x82, 0x14, 0x82, 0x15, 0x82, 0x0F, 0x82, 0x10, -}; -#pragma pop - -/* 8071F708-8071F710 000028 0008+00 0/1 0/0 0/0 .data bo_eno_2$4379 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 bo_eno_2[8] = { - 0x82, 0x60, 0x82, 0x61, 0x82, 0x5E, 0x82, 0x5F, -}; -#pragma pop - -/* 8071F710-8071F714 000030 0004+00 0/1 0/0 0/0 .data bo_eno_12$4402 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 bo_eno_12[4] = { - 0x82, - 0x0D, - 0x82, - 0x0E, -}; -#pragma pop - -/* 8071F714-8071F71C 000034 0008+00 0/1 0/0 0/0 .data bo_eno_end$4410 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 bo_eno_end[8] = { - 0x02, 0x4C, 0x02, 0x4D, 0x02, 0x56, 0x02, 0x57, -}; -#pragma pop - /* 8071E8A4-8071EECC 001CA4 0628+00 2/1 0/0 0/0 .text daE_MK_BO_Execute__FP13e_mk_bo_class */ -static void daE_MK_BO_Execute(e_mk_bo_class* param_0) { - // NONMATCHING +// NONMATCHING - regalloc on retail +static int daE_MK_BO_Execute(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + cXyz sp64; + cXyz sp58; + cXyz sp4C; + + if (cDmrNowMidnaTalk()) { + return 1; + } + + if (i_this->field_0x9b4 != 0) { + return 1; + } + + if (i_this->field_0x600 != 0) { + fopAcM_delete(actor); + } + + i_this->counter++; + + for (int i = 0; i < 2; i++) { + if (i_this->timers[i] != 0) { + i_this->timers[i]--; + } + } + + if (i_this->field_0x5f8 != 0) { + i_this->field_0x5f8--; + } + + action(i_this); + cLib_addCalcAngleS2(&i_this->field_0x5fa, actor->current.angle.y, 4, 0x1000); + + mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y, actor->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->field_0x5fa); + mDoMtx_stack_c::ZrotM(actor->shape_angle.z); + mDoMtx_stack_c::YrotM(actor->shape_angle.y); + mDoMtx_stack_c::XrotM(actor->shape_angle.x); + + fopAc_ac_c* a_parent = fopAcM_SearchByID(actor->parentActorID); + if (a_parent == NULL) { + return 1; + } + + f32 size = a_parent->scale.x; + mDoMtx_stack_c::scaleM(size, size, size); + mDoMtx_stack_c::transM(0.0f, 0.0f, i_this->field_0x5f0); + i_this->model->setBaseTRMtx(mDoMtx_stack_c::get()); + + e_mk_class* e_mk = (e_mk_class*)a_parent; + if (e_mk->field_0x707 == 6) { + e_mk->field_0x707 = 0; + fopAcM_delete(actor); + } + + actor->eyePos = actor->current.pos; + i_this->sound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor))); + + if (i_this->field_0x998 != 0) { + JPABaseEmitter* emt; + int eff_num = 4; + if (i_this->action == 2) { + eff_num = 2; + } + + static u16 bo_eno_1[] = { + dPa_RM(ID_ZI_S_MKDEMO_BOOM_WAIT_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_WAIT_B), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_KISEKI_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_KISEKI_B), + }; + + static u16 bo_eno_2[] = { + dPa_RM(ID_ZI_S_MKDEMO_BOOM2_WAIT_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM2_WAIT_B), + dPa_RM(ID_ZI_S_MKDEMO_BOOM2_KISEKI_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM2_KISEKI_B), + }; + + static u16 bo_eno_12[] = { + dPa_RM(ID_ZI_S_MKDEMO_BOOM_HIT_A), + dPa_RM(ID_ZI_S_MKDEMO_BOOM_HIT_B), + }; + + for (int i = 0; i < eff_num; i++) { + if (i_this->action >= 2) { + if (i < 2) { + e_mk->field_0xc18[i] = dComIfGp_particle_set(e_mk->field_0xc18[i], bo_eno_2[i], &actor->current.pos, NULL, NULL); + emt = dComIfGp_particle_getEmitter(e_mk->field_0xc18[i]); + } else { + i_this->field_0x99c[i - 2] = dComIfGp_particle_set(i_this->field_0x99c[i - 2], bo_eno_2[i], &actor->current.pos, NULL, NULL); + emt = dComIfGp_particle_getEmitter(i_this->field_0x99c[i - 2]); + } + } else if (i < 2) { + e_mk->field_0xc18[i] = dComIfGp_particle_set(e_mk->field_0xc18[i], bo_eno_1[i], &actor->current.pos, NULL, NULL); + emt = dComIfGp_particle_getEmitter(e_mk->field_0xc18[i]); + } else { + i_this->field_0x99c[i - 2] = dComIfGp_particle_set(i_this->field_0x99c[i - 2], bo_eno_1[i], &actor->current.pos, NULL, NULL); + emt = dComIfGp_particle_getEmitter(i_this->field_0x99c[i - 2]); + } + + if (emt != NULL) { + MTXCopy(i_this->model->getBaseTRMtx(), mDoMtx_stack_c::get()); + + if (i_this->field_0x998 == 2) { + mDoMtx_stack_c::transM(10000.0f, 10000.0f, 100000.0f); + } + + emt->setGlobalSRTMatrix(mDoMtx_stack_c::get()); + } + } + + if (i_this->field_0x998 == 2) { + i_this->field_0x998 = 0; + + for (int i = 0; i < 2; i++) { + dComIfGp_particle_set(bo_eno_12[i], &actor->current.pos, NULL, NULL); + } + } + } + + if (i_this->field_0x9b5 != 0) { + mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y, actor->current.pos.z); + mDoMtx_stack_c::scaleM(size, size, size); + + J3DModel* model = i_this->efModelMorf->getModel(); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + + i_this->efModelMorf->play(NULL, 0, 0); + i_this->pbtk->play(); + i_this->efModelMorf->modelCalc(); + + cXyz sp40(size, size, size); + for (int i = 0; i < 4; i++) { + cXyz sp34(actor->current.pos); + if (i >= 1) { + sp34.y = actor->home.pos.y; + } + + static u16 bo_eno_end[] = { + ID_ZI_J_SPBOOM_LEAF_A, + ID_ZI_J_SPBOOM_ROCK_A, + ID_ZI_J_SPBOOM_SYOUGEKI_A, + ID_ZI_J_SPBOOM_SYOUGEKI_B, + }; + + i_this->field_0x9a4[i] = dComIfGp_particle_set(i_this->field_0x9a4[i], bo_eno_end[i], &sp34, &actor->tevStr, NULL, &sp40, 0xFF, NULL, -1, NULL, NULL, NULL); + } + } + + return 1; } /* 8071EECC-8071EED4 0022CC 0008+00 1/0 0/0 0/0 .text daE_MK_BO_IsDelete__FP13e_mk_bo_class */ -static bool daE_MK_BO_IsDelete(e_mk_bo_class* param_0) { - return true; +static int daE_MK_BO_IsDelete(e_mk_bo_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 8071F6D8-8071F6D8 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8071F6D8 = "E_mk"; -#pragma pop - /* 8071EED4-8071EF24 0022D4 0050+00 1/0 0/0 0/0 .text daE_MK_BO_Delete__FP13e_mk_bo_class */ -static void daE_MK_BO_Delete(e_mk_bo_class* param_0) { - // NONMATCHING +static int daE_MK_BO_Delete(e_mk_bo_class* i_this) { + fopAc_ac_c* actor = &i_this->enemy; + fpc_ProcID id = fopAcM_GetID(actor); + dComIfG_resDelete(&i_this->phase, "E_mk"); + + if (actor->heap != NULL) { + i_this->sound.deleteObject(); + } + + return 1; } -/* ############################################################################################## */ -/* 8071F71C-8071F75C 00003C 0040+00 1/1 0/0 0/0 .data at_sph_src$4657 */ -static dCcD_SrcSph at_sph_src = { - { - {0x0, {{AT_TYPE_40, 0x2, 0x1f}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj - {dCcD_SE_WOOD, 0x1, 0x1, 0x0, 0x0}, // mGObjAt - {dCcD_SE_METAL, 0x5, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 30.0f} // mSph - } // mSphAttr -}; +/* 8071EF24-8071F120 002324 01FC+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* i_this) { + e_mk_bo_class* a_this = (e_mk_bo_class*)i_this; + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_mk", 0x2E); + JUT_ASSERT(1265, modelData != NULL); + + a_this->model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (a_this->model == NULL) { + return 0; + } + + a_this->efModelMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("E_mk", 0x2F), NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_mk", 6), 2, 1.0f, 0, -1, 1, NULL, 0x80000, 0x11000284); + if (a_this->efModelMorf == NULL || a_this->efModelMorf->getModel() == NULL) { + return 0; + } + + a_this->pbtk = new mDoExt_btkAnm(); + if (a_this->pbtk == NULL) { + return 0; + } + + if (!a_this->pbtk->init(a_this->efModelMorf->getModel()->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("E_mk", 0x34), 1, 2, 1.0f, 0, -1)) { + return 0; + } + + a_this->sound.init(&i_this->current.pos, 1); + return 1; +} + +/* 8071F168-8071F3D0 002568 0268+00 1/0 0/0 0/0 .text daE_MK_BO_Create__FP10fopAc_ac_c */ +static int daE_MK_BO_Create(fopAc_ac_c* i_this) { + e_mk_bo_class* a_this = (e_mk_bo_class*)i_this; + fopAcM_SetupActor(i_this, e_mk_bo_class); + + int phase_state = dComIfG_resLoad(&a_this->phase, "E_mk"); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x3120)) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(i_this, a_this->model->getBaseTRMtx()); + + static dCcD_SrcSph at_sph_src = { + { + {0x0, {{AT_TYPE_40, 0x2, 0x1f}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj + {dCcD_SE_WOOD, 0x1, 0x1, 0x0, 0x0}, // mGObjAt + {dCcD_SE_METAL, 0x5, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 30.0f} // mSph + } // mSphAttr + }; + + a_this->ccStts.Init(0xFF, 0, i_this); + a_this->ccAtSph.Set(at_sph_src); + a_this->ccAtSph.SetStts(&a_this->ccStts); + + if (fopAcM_GetRoomNo(i_this) == 4) { + a_this->ccAtSph.SetR(100.0f + BREG_F(15)); + } + + a_this->acch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1, &a_this->acchcir, fopAcM_GetSpeed_p(i_this), NULL, NULL); + a_this->acchcir.SetWall(80.0f, 100.0f); + a_this->counter = cM_rndF(65535.0f); + + if ((fopAcM_GetParam(i_this) & 0xFF) == 2) { + a_this->action = 1; + } else { + a_this->field_0x9b4 = 1; + } + + mDoMtx_stack_c::scaleS(0.0f, 0.0f, 0.0f); + a_this->model->setBaseTRMtx(mDoMtx_stack_c::get()); + daE_MK_BO_Execute(a_this); + } + + return phase_state; +} /* 8071F75C-8071F77C -00001 0020+00 1/0 0/0 0/0 .data l_daE_MK_BO_Method */ static actor_method_class l_daE_MK_BO_Method = { - (process_method_func)daE_MK_BO_Create__FP10fopAc_ac_c, - (process_method_func)daE_MK_BO_Delete__FP13e_mk_bo_class, - (process_method_func)daE_MK_BO_Execute__FP13e_mk_bo_class, - (process_method_func)daE_MK_BO_IsDelete__FP13e_mk_bo_class, - (process_method_func)daE_MK_BO_Draw__FP13e_mk_bo_class, + (process_method_func)daE_MK_BO_Create, + (process_method_func)daE_MK_BO_Delete, + (process_method_func)daE_MK_BO_Execute, + (process_method_func)daE_MK_BO_IsDelete, + (process_method_func)daE_MK_BO_Draw, }; /* 8071F77C-8071F7AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_MK_BO */ @@ -525,314 +837,4 @@ extern actor_process_profile_definition g_profile_E_MK_BO = { fopAc_CULLBOX_0_e, // cullType }; -/* 8071F7AC-8071F7B8 0000CC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 8071F7B8-8071F7C4 0000D8 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 8071F7C4-8071F7D0 0000E4 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 8071F7D0-8071F7DC 0000F0 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, -}; - -/* 8071F7DC-8071F7E8 0000FC 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, -}; - -/* 8071F7E8-8071F80C 000108 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_8071F5EC, - (void*)NULL, - (void*)NULL, - (void*)func_8071F5E4, -}; - -/* 8071F80C-8071F818 00012C 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, -}; - -/* 8071EF24-8071F120 002324 01FC+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8071F120-8071F168 002520 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8071F6D0-8071F6D4 000090 0004+00 0/1 0/0 0/0 .rodata @4729 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4729 = 80.0f; -COMPILER_STRIP_GATE(0x8071F6D0, &lit_4729); -#pragma pop - -/* 8071F6D4-8071F6D8 000094 0004+00 0/1 0/0 0/0 .rodata @4730 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4730 = 65535.0f; -COMPILER_STRIP_GATE(0x8071F6D4, &lit_4730); -#pragma pop - -/* 8071F168-8071F3D0 002568 0268+00 1/0 0/0 0/0 .text daE_MK_BO_Create__FP10fopAc_ac_c */ -static void daE_MK_BO_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8071F3D0-8071F418 0027D0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 8071F418-8071F460 002818 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 8071F460-8071F4BC 002860 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 8071F4BC-8071F52C 0028BC 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8071F52C-8071F59C 00292C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8071F59C-8071F5E4 00299C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 8071F5E4-8071F5EC 0029E4 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8071F5E4() { - // NONMATCHING -} - -/* 8071F5EC-8071F5F4 0029EC 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8071F5EC() { - // NONMATCHING -} - -/* 8071F5F4-8071F630 0029F4 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8071F87C-8071F880 000064 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_8071F87C[4]; -#pragma pop - -/* 8071F880-8071F884 000068 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_8071F880[4]; -#pragma pop - -/* 8071F884-8071F888 00006C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F884[4]; -#pragma pop - -/* 8071F888-8071F88C 000070 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F888[4]; -#pragma pop - -/* 8071F88C-8071F890 000074 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071F88C[4]; -#pragma pop - -/* 8071F890-8071F894 000078 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071F890[4]; -#pragma pop - -/* 8071F894-8071F898 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_8071F894[4]; -#pragma pop - -/* 8071F898-8071F89C 000080 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8071F898[4]; -#pragma pop - -/* 8071F89C-8071F8A0 000084 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8071F89C[4]; -#pragma pop - -/* 8071F8A0-8071F8A4 000088 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_8071F8A0[4]; -#pragma pop - -/* 8071F8A4-8071F8A8 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F8A4[4]; -#pragma pop - -/* 8071F8A8-8071F8AC 000090 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F8A8[4]; -#pragma pop - -/* 8071F8AC-8071F8B0 000094 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F8AC[4]; -#pragma pop - -/* 8071F8B0-8071F8B4 000098 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071F8B0[4]; -#pragma pop - -/* 8071F8B4-8071F8B8 00009C 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8071F8B4[4]; -#pragma pop - -/* 8071F8B8-8071F8BC 0000A0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_8071F8B8[4]; -#pragma pop - -/* 8071F8BC-8071F8C0 0000A4 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_8071F8BC[4]; -#pragma pop - -/* 8071F8C0-8071F8C4 0000A8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8071F8C0[4]; -#pragma pop - -/* 8071F8C4-8071F8C8 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_8071F8C4[4]; -#pragma pop - -/* 8071F8C8-8071F8CC 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F8C8[4]; -#pragma pop - -/* 8071F8CC-8071F8D0 0000B4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_8071F8CC[4]; -#pragma pop - -/* 8071F8D0-8071F8D4 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071F8D0[4]; -#pragma pop - -/* 8071F8D4-8071F8D8 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071F8D4[4]; -#pragma pop - -/* 8071F8D8-8071F8DC 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071F8D8[4]; -#pragma pop - -/* 8071F8DC-8071F8E0 0000C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_8071F8DC[4]; -#pragma pop - -/* 8071F6D8-8071F6D8 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES