From 72c37de758cd3e2fa754fc3a961dda64a8500e44 Mon Sep 17 00:00:00 2001 From: Julian Maynes <80068880+julianmaynes16@users.noreply.github.com> Date: Sat, 29 Nov 2025 00:55:42 -0800 Subject: [PATCH] D_a_e_mm_mt 99% matching (#2881) * do draw, smbindeffect, isdelete, delete, most of heapinit * Fix lowercase hex * fix style * Add spaces after if * Do most of drop and carry * Almost done * Finish normal * Get functions to mostly regalloc + a few compiler quirks. * fix up comments * Fix all issues and get everything to 100 --- configure.py | 2 +- include/d/actor/d_a_e_mm_mt.h | 44 +- include/d/d_cc_d.h | 3 + src/d/actor/d_a_e_mm_mt.cpp | 1404 +++++++++++++++++++-------------- 4 files changed, 856 insertions(+), 597 deletions(-) diff --git a/configure.py b/configure.py index cab2d261433..a7970856031 100755 --- a/configure.py +++ b/configure.py @@ -1786,7 +1786,7 @@ config.libs = [ ActorRel(MatchingFor(ALL_GCN), "d_a_e_mk"), ActorRel(MatchingFor(ALL_GCN), "d_a_e_mk_bo"), ActorRel(MatchingFor(ALL_GCN), "d_a_e_mm"), - ActorRel(NonMatching, "d_a_e_mm_mt"), + ActorRel(MatchingFor(ALL_GCN), "d_a_e_mm_mt"), ActorRel(MatchingFor(ALL_GCN), "d_a_e_ms"), ActorRel(MatchingFor(ALL_GCN), "d_a_e_nz"), ActorRel(MatchingFor(ALL_GCN), "d_a_e_oc"), diff --git a/include/d/actor/d_a_e_mm_mt.h b/include/d/actor/d_a_e_mm_mt.h index 27b607bc590..922eda47b37 100644 --- a/include/d/actor/d_a_e_mm_mt.h +++ b/include/d/actor/d_a_e_mm_mt.h @@ -1,6 +1,9 @@ #ifndef D_A_E_MM_MT_H #define D_A_E_MM_MT_H #include "f_op/f_op_actor_mng.h" +#include "d/d_cc_uty.h" +#include "d/actor/d_a_e_mm.h" + /** * @ingroup actors-enemies @@ -10,9 +13,44 @@ * @details * */ -class e_mm_mt_class : public fopEn_enemy_c { -private: - /* 0x5ac */ u8 field_0x5ac[0xba4 - 0x5ac]; +class e_mm_mt_class { +public: + /* 0x000 */ fopEn_enemy_c enemy; + /* 0x5AC */ request_of_phase_process_class m_phase; + /* 0x5B4 */ Z2CreatureEnemy m_sound; + /* 0x658 */ u8 parameters; + /* 0x65A */ u8 field_0x65A[3]; + /* 0x65C */ J3DModel* mp_model; + /* 0x660 */ u32 m_shadowKey; + /* 0x664 */ s16 m_lifetime; + /* 0x666 */ s16 m_action; + /* 0x668 */ s16 m_mode; + /* 0x66A */ u8 field_0x66A[0x672 - 0x66A]; + /* 0x672 */ s8 field_0x672; + /* 0x673 */ u8 field_0x673; + /* 0x674 */ cXyz field_0x674; + /* 0x680 */ u8 field_0x680[0x684 - 0x680]; + /* 0x684 */ s16 m_timer[2]; + /* 0x688 */ s16 m_invulnerabilityTimer; + /* 0x68A */ bool field_0x68A[2]; + /* 0x68C */ csXyz m_rotation; + /* 0x692 */ s16 m_carryAngleSpeed; + /* 0x694 */ s16 m_carryAngle; + /* 0x696 */ u8 field_0x696[0x698 - 0x696]; + /* 0x698 */ int field_0x698; + /* 0x69C */ f32 field_0x69C; + /* 0x6A0 */ s16 field_0x6A0; + /* 0x6A2 */ s16 field_0x6A2; + /* 0x6A4 */ s16 m_spin; + /* 0x6A6 */ u8 field_0x6A6[0x6A8 - 0x6A6]; + /* 0x6A8 */ f32 field_0x6A8; + /* 0x6AC */ dBgS_AcchCir m_acchCir; + /* 0x6EC */ dBgS_ObjAcch m_acch; + /* 0x8C4 */ dCcD_Stts m_stts; + /* 0x900 */ dCcD_Sph m_sphere; + /* 0xA38 */ dCcD_Sph m_sph; + /* 0xB70 */ dCcU_AtInfo m_atInfo; + /* 0xB94 */ u8 field_0xB94[0xBA4 - 0xB94]; }; STATIC_ASSERT(sizeof(e_mm_mt_class) == 0xba4); diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 590f2997282..748ec3124d7 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -210,6 +210,7 @@ public: cXyz* GetRVecP() { return &mRVec; } void SetHitPos(cXyz& pos) { mHitPos = pos; } cXyz* GetHitPosP() { return &mHitPos; } + u8 GetSe() { return mSe; } private: /* 0x1C */ u8 mSe; @@ -408,11 +409,13 @@ public: void SetAtRVec(cXyz& vec) { mGObjAt.SetRVec(vec); } void SetTgHitPos(cXyz& pos) { mGObjTg.SetHitPos(pos); } void SetAtHitPos(cXyz& pos) { mGObjAt.SetHitPos(pos); } + u8 GetTgSe() { return mGObjTg.GetSe(); } u32 GetTgHitObjHitSeID(int i_soundID) { return getHitSeID(GetTgHitObjSe(),i_soundID); } cXyz* GetAtHitPosP() { return mGObjAt.GetHitPosP(); } cXyz* GetTgHitPosP() { return mGObjTg.GetHitPosP(); } cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); } bool ChkTgHookshotThrough() { return mGObjTg.ChkSPrm(0x80); } + void OffTgHookShotNoHitMark() {mGObjTg.OffSPrm(0x400);} bool ChkTgShieldHit() { return mGObjTg.ChkRPrm(2); } void OffTgNoAtHitInfSet() { mObjTg.OffSPrmBit(0x20); } bool ChkTgSpinnerReflect() { return mGObjTg.ChkSPrm(0x200); } diff --git a/src/d/actor/d_a_e_mm_mt.cpp b/src/d/actor/d_a_e_mm_mt.cpp index 69e82d703a6..a66b3e87a28 100644 --- a/src/d/actor/d_a_e_mm_mt.cpp +++ b/src/d/actor/d_a_e_mm_mt.cpp @@ -4,549 +4,868 @@ */ #include "d/dolzel_rel.h" // IWYU pragma: keep - #include "d/actor/d_a_e_mm_mt.h" #include "d/d_cc_d.h" -#include "dol2asm.h" #include "f_op/f_op_actor_enemy.h" - -// -// Forward References: -// - -extern "C" static void daE_MM_MT_Draw__FP13e_mm_mt_class(); -extern "C" static void e_mm_hookCheck__FP13e_mm_mt_class(); -extern "C" static void e_mm_mt_normal__FP13e_mm_mt_class(); -extern "C" static void e_mm_mt_hagare__FP13e_mm_mt_class(); -extern "C" static void e_mm_mt_carry__FP13e_mm_mt_class(); -extern "C" static void wall_angle_get__FP13e_mm_mt_class(); -extern "C" static void e_mm_mt_drop__FP13e_mm_mt_class(); -extern "C" static void action__FP13e_mm_mt_class(); -extern "C" static void daE_MM_MT_Execute__FP13e_mm_mt_class(); -extern "C" static bool daE_MM_MT_IsDelete__FP13e_mm_mt_class(); -extern "C" static void daE_MM_MT_Delete__FP13e_mm_mt_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daE_MM_MT_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_8072542C(); -extern "C" static void func_80725434(); -extern "C" extern char const* const d_a_e_mm_mt__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotS__FPA4_fs(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_SearchByID__FUiPP10fopAc_ac_c(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -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 fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -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 -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -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 LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__11dBgS_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 Move__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 GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void def_se_set__FP10Z2CreatureP8cCcD_ObjUlP10fopAc_ac_c(); -extern "C" void at_power_check__FP11dCcU_AtInfo(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__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_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_distanceAngleS__Fss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void __dl__FPv(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_25(); -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" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80725884-80725888 00002C 0004+00 0/1 0/0 0/0 .rodata @3829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3829 = 700.0f; -COMPILER_STRIP_GATE(0x80725884, &lit_3829); -#pragma pop - /* 80722F78-8072305C 000078 00E4+00 1/0 0/0 0/0 .text daE_MM_MT_Draw__FP13e_mm_mt_class */ -static void daE_MM_MT_Draw(e_mm_mt_class* param_0) { - // NONMATCHING +static int daE_MM_MT_Draw(e_mm_mt_class* i_this) { + i_this->enemy.model = i_this->mp_model; + fopAc_ac_c* actor = (fopAc_ac_c*) i_this; + + g_env_light.settingTevStruct(0, &i_this->enemy.current.pos, &i_this->enemy.tevStr); + g_env_light.setLightTevColorType_MAJI(i_this->mp_model, &i_this->enemy.tevStr); + + mDoExt_modelUpdateDL(i_this->mp_model); + + cXyz local_18(i_this->enemy.current.pos.x, i_this->enemy.current.pos.y + 100, i_this->enemy.current.pos.z); + + if (!fopAcM_CheckStatus(actor, fopAcM_STATUS_CARRY_NOW)) { + i_this->m_shadowKey = dComIfGd_setShadow( + i_this->m_shadowKey, 1, i_this->mp_model, &local_18, 700.0f, 0.0f, + i_this->enemy.current.pos.y, i_this->m_acch.GetGroundH(), i_this->m_acch.m_gnd, + &i_this->enemy.tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex() + ); + } + + return 1; } -/* ############################################################################################## */ -/* 80725888-8072588C 000030 0004+00 0/3 0/0 0/0 .rodata @3883 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3883 = 20.0f; -COMPILER_STRIP_GATE(0x80725888, &lit_3883); -#pragma pop - -/* 8072588C-80725890 000034 0004+00 0/4 0/0 0/0 .rodata @3884 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3884 = -1.0f; -COMPILER_STRIP_GATE(0x8072588C, &lit_3884); -#pragma pop - /* 8072305C-80723270 00015C 0214+00 2/2 0/0 0/0 .text e_mm_hookCheck__FP13e_mm_mt_class */ -static void e_mm_hookCheck(e_mm_mt_class* param_0) { - // NONMATCHING +static bool e_mm_hookCheck(e_mm_mt_class* i_this) { + + cCcD_Obj* hitObject; + cXyz VStack_18; + u32 uVar3; + + fopAc_ac_c* actor = (fopAc_ac_c*) i_this; + + if (i_this->enemy.argument == 1) { + return false; + } + + if (i_this->m_sphere.ChkTgHit() + && i_this->m_sphere.GetTgHitObj()->ChkAtType(AT_TYPE_HOOKSHOT) + || fopAcM_CheckStatus(actor, 0x100000)) { + i_this->field_0x69C = 0.0f; + i_this->field_0x68A[0] = true; + cXyz local_24 = i_this->enemy.current.pos; + if (i_this->m_action == 1) { + local_24. y -=20.0f; + } else { + local_24.y += 20.0f; + } + + mDoMtx_stack_c::transS(i_this->enemy.current.pos); + mDoMtx_stack_c::ZXYrotM(i_this->enemy.shape_angle); + mDoMtx_stack_c::inverse(); + mDoMtx_stack_c::multVec(&local_24, &VStack_18); + daPy_py_c* pdVar3 = daPy_getPlayerActorClass(); + pdVar3->setHookshotCarryOffset(fopAcM_GetID(i_this), &VStack_18); + return 1; + } + + + if (i_this->field_0x68A[0]) { + if (daPy_getPlayerActorClass()->setForceGrab(actor, 0, 1)) { + i_this->m_action = 2; + i_this->m_mode = 0; + i_this->field_0x69C = 0.0f; + i_this->field_0x6A2 = 0; + i_this->field_0x6A0 = 0; + i_this->m_spin = 0; + i_this->m_carryAngleSpeed = 0; + if (i_this->m_acch.ChkWaterHit()) { + mDoAud_seStart(Z2SE_EN_MM_MET_LIFT_WTR, &i_this->enemy.current.pos, 0, 0); + } + i_this->m_sphere.OffAtSetBit(); + i_this->field_0x68A[0] = false; + return 1; + } + i_this->field_0x68A[0] = false; + } + return 0; } /* 80723270-807234E8 000370 0278+00 1/1 0/0 0/0 .text e_mm_mt_normal__FP13e_mm_mt_class */ -static void e_mm_mt_normal(e_mm_mt_class* param_0) { - // NONMATCHING +static void e_mm_mt_normal(e_mm_mt_class* i_this) { + fopAc_ac_c* helmasaurActor; + fopAc_ac_c* actor = (fopAc_ac_c*)i_this; + fopAc_ac_c* player = (fopAc_ac_c*) dComIfGp_getPlayer(0); + + + if (fopAcM_SearchByID(actor->parentActorID, &helmasaurActor)) { + actor->scale.x = helmasaurActor->scale.x; + e_mm_class* helmasaur = (e_mm_class*)helmasaurActor; + actor->shape_angle.y = helmasaurActor->shape_angle.y - 0x4000; + + PSMTXCopy(helmasaur->modelMorf->getModel()->getAnmMtx(11), *calc_mtx); + cXyz acStack_28(0.0f, 0.0f, 0.0f); + MtxPosition(&acStack_28, &actor->current.pos); + actor->eyePos = helmasaur->enemy.eyePos; + actor->attention_info.position = i_this->enemy.eyePos; + fopAcM_OffStatus(actor, 0); + actor->attention_info.flags = 0; + if (!i_this->m_invulnerabilityTimer && helmasaur->field_0xb98) { + i_this->m_sphere.OnAtSetBit(); + if (i_this->m_sphere.ChkAtShieldHit()) { + i_this->m_invulnerabilityTimer = 15; + helmasaur->field_0xb99 |= 1; + i_this->m_atInfo.mpCollider = i_this->m_sphere.GetAtHitObj(); + i_this->m_sphere.SetAtSe(9); + } + } else { + i_this->m_sphere.OffAtSetBit(); + } + if (actor->argument != 1 + && ((i_this->m_sphere.ChkTgHit() + && i_this->m_sphere.GetTgHitObj()->ChkAtType(AT_TYPE_HOOKSHOT)) + || fopAcM_CheckStatus(actor, 0x100000))) { + helmasaur->field_0xb99 |= 4; + } + if (!helmasaur->field_0x672) { + i_this->m_action = 1; + i_this->m_mode = 0; + i_this->field_0x68A[0] = 0; + i_this->m_acch.OnLineCheck(); + i_this->m_sphere.OnTgShield(); + i_this->m_sphere.SetTgHitMark(CcG_Tg_UNK_MARK_2); + i_this->m_sphere.SetTgSe(9); + i_this->m_sphere.OffTgHookShotNoHitMark(); + i_this->m_sphere.OffTgNoHitMark(); + i_this->m_sphere.OffCoSetBit(); + fopAcM_SetGroup(actor, 3); + fopAcM_OffStatus(actor, 0); + actor->attention_info.flags &= ~fopAc_AttnFlag_BATTLE_e; + actor->attention_info.distances[2] = 0; + fopAcM_OnStatus(actor, 0x400); + s16 actor_angle = player->shape_angle.y + 0x4000; + s16 angle = actor->shape_angle.y - actor_angle; + if (angle > 0x4000 || angle < -0x4000) { + i_this->m_carryAngle = -0x8000; + return; + } + i_this->m_carryAngle = 0; + } + } } -/* ############################################################################################## */ -/* 80725890-80725894 000038 0004+00 0/1 0/0 0/0 .rodata @4008 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4008 = 150.0f; -COMPILER_STRIP_GATE(0x80725890, &lit_4008); -#pragma pop - -/* 80725894-80725898 00003C 0004+00 0/1 0/0 0/0 .rodata @4009 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4009 = 3.0f; -COMPILER_STRIP_GATE(0x80725894, &lit_4009); -#pragma pop - -/* 80725898-8072589C 000040 0004+00 0/1 0/0 0/0 .rodata @4010 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4010 = 3.0f / 20.0f; -COMPILER_STRIP_GATE(0x80725898, &lit_4010); -#pragma pop - -/* 8072589C-807258A0 000044 0004+00 0/2 0/0 0/0 .rodata @4011 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4011 = 2000.0f; -COMPILER_STRIP_GATE(0x8072589C, &lit_4011); -#pragma pop - -/* 807258A0-807258A4 000048 0004+00 0/2 0/0 0/0 .rodata @4012 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4012 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x807258A0, &lit_4012); -#pragma pop - -/* 807258A4-807258A8 00004C 0004+00 0/4 0/0 0/0 .rodata @4013 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4013 = 200.0f; -COMPILER_STRIP_GATE(0x807258A4, &lit_4013); -#pragma pop - -/* 807258A8-807258AC 000050 0004+00 0/1 0/0 0/0 .rodata @4014 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4014 = 59.0f / 20.0f; -COMPILER_STRIP_GATE(0x807258A8, &lit_4014); -#pragma pop - -/* 807258AC-807258B0 000054 0004+00 0/2 0/0 0/0 .rodata @4015 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4015 = 5.0f; -COMPILER_STRIP_GATE(0x807258AC, &lit_4015); -#pragma pop - -/* 807258B0-807258B4 000058 0004+00 0/3 0/0 0/0 .rodata @4016 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4016 = 30.0f; -COMPILER_STRIP_GATE(0x807258B0, &lit_4016); -#pragma pop - -/* 807258B4-807258B8 00005C 0004+00 0/3 0/0 0/0 .rodata @4017 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4017 = 0.5f; -COMPILER_STRIP_GATE(0x807258B4, &lit_4017); -#pragma pop - /* 807234E8-80723744 0005E8 025C+00 1/1 0/0 0/0 .text e_mm_mt_hagare__FP13e_mm_mt_class */ -static void e_mm_mt_hagare(e_mm_mt_class* param_0) { - // NONMATCHING +static void e_mm_mt_hagare(e_mm_mt_class* i_this) { + fopAc_ac_c* player = (fopAc_ac_c*) dComIfGp_getPlayer(0); + fopAc_ac_c* actor = (fopAc_ac_c*) i_this; + + cXyz local_30 = player->current.pos - i_this->enemy.current.pos; + local_30.y += 150.0f; + i_this->enemy.current.angle.y = local_30.atan2sX_Z(); + cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); + cMtx_XrotM(*calc_mtx, (int)local_30.atan2sY_XZ()); + local_30.x = 0.0f; + local_30.y = 0.0f; + local_30.z = i_this->enemy.speedF; + MtxPosition(&local_30, &i_this->enemy.speed); + if (!e_mm_hookCheck(i_this)) { + int arg = i_this->m_mode; + switch (arg) { + case -10: + cLib_addCalc2(&i_this->enemy.speedF, 3.0f, 1.0f, 0.15f); + cLib_addCalc2(&i_this->field_0x69C, 2000.0f, 0.1f, 200.0f); + if (i_this->enemy.speedF >= 2.95f) { + i_this->m_mode = 0; + } else { + break; + } + // fallthrough + case 0: + cLib_addCalc2(&i_this->enemy.speedF, 100.0f, 1.0f, 5.0f); + break; + } + i_this->enemy.current.pos += i_this->enemy.speed; + i_this->enemy.eyePos = i_this->enemy.current.pos; + i_this->enemy.attention_info.position = i_this->enemy.current.pos; + s16 spA = i_this->enemy.speedF * 30.0f; + s16 sVar6; + if (i_this->m_carryAngle == 0) { + sVar6 = -0x4000; + } else { + sVar6 = 0x4000; + } + + cLib_addCalcAngleS2(&i_this->enemy.shape_angle.y, + player->shape_angle.y + 0x4000 + i_this->m_carryAngle, + 4, + spA + 0x100); + cLib_addCalcAngleS2(&i_this->enemy.shape_angle.z, sVar6, 4, spA); + local_30 = player->current.pos - i_this->enemy.current.pos; + local_30.y = 0.0f; + i_this->m_action = 3; + i_this->m_mode = 0; + i_this->m_sphere.OnCoSetBit(); + i_this->field_0x68A[0] = 0; + i_this->enemy.speedF *= 0.5f; + } } -/* ############################################################################################## */ -/* 807258B8-807258BC 000060 0004+00 0/2 0/0 0/0 .rodata @4089 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4089 = 10.0f; -COMPILER_STRIP_GATE(0x807258B8, &lit_4089); -#pragma pop - -/* 807258BC-807258C0 000064 0004+00 0/1 0/0 0/0 .rodata @4090 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4090 = 0.25f; -COMPILER_STRIP_GATE(0x807258BC, &lit_4090); -#pragma pop - -/* 807258C0-807258C4 000068 0004+00 0/2 0/0 0/0 .rodata @4091 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4091 = 1000.0f; -COMPILER_STRIP_GATE(0x807258C0, &lit_4091); -#pragma pop - -/* 807258C4-807258C8 00006C 0004+00 0/1 0/0 0/0 .rodata @4092 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4092 = -G_CM3D_F_INF; -COMPILER_STRIP_GATE(0x807258C4, &lit_4092); -#pragma pop - /* 80723744-807239CC 000844 0288+00 1/1 0/0 0/0 .text e_mm_mt_carry__FP13e_mm_mt_class */ -static void e_mm_mt_carry(e_mm_mt_class* param_0) { - // NONMATCHING +static void e_mm_mt_carry(e_mm_mt_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*) &i_this->enemy; + fopAc_ac_c* player = (fopAc_ac_c*) dComIfGp_getPlayer(0); + + switch (i_this->m_mode) { + case 0: + cLib_offBit(actor->attention_info.flags, fopAc_AttnFlag_CARRY_e); + i_this->m_mode = 1; + s16 angle_delta_y1 = 0x4000 + player->shape_angle.y; + s16 angle_delta_y = i_this->m_rotation.y - angle_delta_y1; + if (angle_delta_y > 0x4000 || angle_delta_y < -0x4000) { + i_this->m_carryAngle = -0x8000; + } else { + i_this->m_carryAngle = 0; + } + void(0); + break; + + case 1: + if (!fopAcM_checkCarryNow(actor)) { + i_this->m_action = 3; + i_this->m_sphere.OnCoSetBit(); + i_this->field_0x68A[0] = false; + if (fopAcM_GetSpeedF(actor) > 1.0f || fopAcM_GetSpeedF(player) > 10.0f) { + actor->speedF = TREG_F(9) + 30.0f + fopAcM_GetSpeedF(player) * 0.25f; + actor->speed.y = TREG_F(10) + 30.0f; + actor->current.angle.y = player->shape_angle.y; + i_this->m_mode = 0; + } else { + actor->speedF = 0.0f; + actor->speed.y = 0.0f; + i_this->m_mode = 5; + i_this->field_0x69C = NREG_F(2) + 1000.0f; + if (i_this->m_acch.ChkWaterHit()) { + mDoAud_seStart(Z2SE_EN_MM_MET_PUT_WTR, &actor->current.pos, 0, 0); + } else { + mDoAud_seStart(Z2SE_EN_MM_MET_PUT_LND, &actor->current.pos, 0, 0); + } + } + } + // fallthrough + } + if (i_this->m_acch.GetGroundH() == -G_CM3D_F_INF) { + i_this->field_0x698 += 1; + if (i_this->field_0x698 > 500) { + fopAcM_delete(actor); + return; + } + } else { + i_this->field_0x698 = 0; + } + actor->eyePos = actor->current.pos; + actor->attention_info.position = actor->current.pos; + cLib_addCalcAngleS2(&i_this->m_rotation.y, player->shape_angle.y + 0x4000 + i_this->m_carryAngle, + 1, i_this->m_carryAngleSpeed); + cLib_addCalcAngleS2(&i_this->m_rotation.z, (s16)((TREG_S(5) + 0x10000) - 0x8000), 1, i_this->m_carryAngleSpeed); + cLib_addCalcAngleS2(&i_this->m_carryAngleSpeed, 0x2000, 1, 0x100); } -/* ############################################################################################## */ -/* 807258C8-807258CC 000070 0004+00 0/1 0/0 0/0 .rodata @4146 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4146 = -50.0f; -COMPILER_STRIP_GATE(0x807258C8, &lit_4146); -#pragma pop +// /* 807239CC-80723B70 000ACC 01A4+00 1/1 0/0 0/0 .text wall_angle_get__FP13e_mm_mt_class +// */ +static s16 wall_angle_get(e_mm_mt_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + cXyz vec1, vec2, vec3[2]; + dBgS_LinChk linchk; + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + vec1.x = 0.0f; + vec1.y = 0.0f; + vec1.z = -50.0f; + MtxPosition(&vec1, &vec2); + vec2 += a_this->current.pos; + vec1.x = 5.0f; + vec1.y = 0.0f; + vec1.z = 200.0f; -/* 807239CC-80723B70 000ACC 01A4+00 1/1 0/0 0/0 .text wall_angle_get__FP13e_mm_mt_class - */ -static void wall_angle_get(e_mm_mt_class* param_0) { - // NONMATCHING + for (int i = 0; i < 2; i++) { + MtxPosition(&vec1, &vec3[i]); + vec1.x *= -1.0f; + vec3[i] += vec2; + linchk.Set(&vec2, &vec3[i], a_this); + if (dComIfG_Bgsp().LineCross(&linchk)) { + vec3[i] = linchk.GetCross(); + } else { + return 0x23; + } + } + + vec1 = vec3[1] - vec3[0]; + return vec1.atan2sX_Z() + 0x4000; } -/* ############################################################################################## */ -/* 807258CC-807258D0 000074 0004+00 0/1 0/0 0/0 .rodata @4338 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4338 = -3.0f / 10.0f; -COMPILER_STRIP_GATE(0x807258CC, &lit_4338); -#pragma pop - -/* 807258D0-807258D4 000078 0004+00 0/1 0/0 0/0 .rodata @4339 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4339 = -30.0f; -COMPILER_STRIP_GATE(0x807258D0, &lit_4339); -#pragma pop - -/* 807258D4-807258D8 00007C 0004+00 0/1 0/0 0/0 .rodata @4340 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4340 = -2.0f / 5.0f; -COMPILER_STRIP_GATE(0x807258D4, &lit_4340); -#pragma pop - -/* 807258D8-807258DC 000080 0004+00 0/1 0/0 0/0 .rodata @4341 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4341 = 0.75f; -COMPILER_STRIP_GATE(0x807258D8, &lit_4341); -#pragma pop - -/* 807258DC-807258E0 000084 0004+00 0/1 0/0 0/0 .rodata @4342 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4342 = 3500.0f; -COMPILER_STRIP_GATE(0x807258DC, &lit_4342); -#pragma pop - -/* 807258E0-807258E4 000088 0004+00 0/1 0/0 0/0 .rodata @4343 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4343 = 1.5f; -COMPILER_STRIP_GATE(0x807258E0, &lit_4343); -#pragma pop - -/* 807258E4-807258E8 00008C 0004+00 0/1 0/0 0/0 .rodata @4344 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4344 = 1300.0f; -COMPILER_STRIP_GATE(0x807258E4, &lit_4344); -#pragma pop - -/* 807258E8-807258EC 000090 0004+00 0/2 0/0 0/0 .rodata @4345 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4345 = 2.0f; -COMPILER_STRIP_GATE(0x807258E8, &lit_4345); -#pragma pop - -/* 807258EC-807258F0 000094 0004+00 0/1 0/0 0/0 .rodata @4346 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4346 = -5.0f; -COMPILER_STRIP_GATE(0x807258EC, &lit_4346); -#pragma pop - -/* 807258F0-807258F8 000098 0008+00 0/2 0/0 0/0 .rodata @4348 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4348[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x807258F0, &lit_4348); -#pragma pop - /* 80723B70-80724190 000C70 0620+00 1/1 0/0 0/0 .text e_mm_mt_drop__FP13e_mm_mt_class */ -static void e_mm_mt_drop(e_mm_mt_class* param_0) { - // NONMATCHING +static void e_mm_mt_drop(e_mm_mt_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*) i_this; + + cXyz local_28; + cXyz local_34; + + if (!e_mm_hookCheck(i_this)) { + switch (i_this->m_mode) { + case 0: + // fallthrough + case 1: + // fallthrough + case 2: + // fallthrough + case 3: + // fallthrough + case 4: + if (!i_this->m_timer[0] && i_this->m_acch.ChkWallHit()) { + s16 wall_angle = wall_angle_get(i_this); + if (wall_angle != 0x23) { + wall_angle = i_this->enemy.current.angle.y - wall_angle; + i_this->m_spin = wall_angle * (TREG_F(6) + -0.3f); + i_this->enemy.current.angle.y += (s16)(0x8000 - (wall_angle << 1)); + if (i_this->m_acch.ChkWaterHit()) { + mDoAud_seStart(Z2SE_EN_MM_MET_BOUND_WTR, &i_this->enemy.current.pos, (u32)(i_this->enemy.speed.y), 0); + } else { + mDoAud_seStart(Z2SE_EN_MM_MET_BOUND_LND, &i_this->enemy.current.pos, (u32)(i_this->enemy.speed.y), 0); + } + i_this->enemy.speedF *= (AREG_F(4) + 0.5f); + i_this->m_timer[0] = 10; + } + } + if (i_this->m_acch.ChkGroundHit()) { + if (i_this->m_mode < 4) { + i_this->m_mode += 1; + } + if (i_this->field_0x6A8 < -30.0f) { + i_this->enemy.speed.y = i_this->field_0x6A8 * -0.4f; + i_this->enemy.speedF *= (TREG_F(0xE) + 0.75f); + if (i_this->m_acch.ChkWaterHit()) { + mDoAud_seStart(Z2SE_EN_MM_MET_BOUND_WTR, &i_this->enemy.current.pos, (u32)(i_this->enemy.speed.y), 0); + } else { + mDoAud_seStart(Z2SE_EN_MM_MET_BOUND_LND, &i_this->enemy.current.pos, (u32)(i_this->enemy.speed.y), 0); + } + i_this->field_0x69C = NREG_F(0) + 3500.0f; + cXyz local_40 = i_this->enemy.current.pos; + cXyz local_4c(1.5f, 1.5f, 1.5f); + if (!i_this->m_spin ) { + i_this->m_spin = cM_rndFX(1300.0f); + } + } else { + i_this->m_mode = 5; + if (i_this->m_acch.ChkWaterHit()) { + mDoAud_seStart(Z2SE_EN_MM_MET_BOUND_WTR, &i_this->enemy.current.pos, 0, 0); + } else { + mDoAud_seStart(Z2SE_EN_MM_MET_BOUND_LND, &i_this->enemy.current.pos, 0, 0); + } + } + } + break; + case 5: + cLib_addCalc0(&i_this->enemy.speedF, 1.0f, TREG_F(0xB) + 2.0f); + break; + } + cMtx_YrotS(*calc_mtx, i_this->enemy.current.angle.y); + + local_28.x = 0.0f; + local_28.y = 0.0f; + local_28.z = i_this->enemy.speedF; + + MtxPosition(&local_28, &local_34); + i_this->enemy.speed.x = local_34.x; + i_this->enemy.speed.z = local_34.z; + i_this->enemy.current.pos.x += i_this->enemy.speed.x; + i_this->enemy.current.pos.z += i_this->enemy.speed.z; + i_this->enemy.current.pos.y += i_this->enemy.speed.y; + i_this->enemy.speed.y += -5.0f; + i_this->enemy.eyePos = i_this->enemy.current.pos; + i_this->enemy.attention_info.position = i_this->enemy.current.pos; + cLib_addCalcAngleS2(&i_this->m_rotation.z, (TREG_S(6)+0x10000)-0x8000, 1, 0x1000); + cLib_onBit(i_this->enemy.attention_info.flags, fopAc_AttnFlag_CARRY_e); + i_this->enemy.attention_info.distances[4] = 7; + i_this->m_rotation.y += i_this->m_spin; + if (i_this->enemy.speedF >= 20.0f) { + i_this->m_sphere.OnAtSetBit(); + i_this->m_sphere.OffAtVsBitSet(12); + i_this->m_sphere.OnAtVsBitSet(2); + i_this->m_sphere.SetAtHitMark(1); + if (!i_this->m_invulnerabilityTimer && i_this->m_sphere.ChkAtHit()) { + i_this->m_invulnerabilityTimer = 4; + i_this->enemy.speedF *= 0.5f; + } + } else { + i_this->m_sphere.OffAtSetBit(); + } + if (fopAcM_checkCarryNow(actor)) { + i_this->m_action = 2; + i_this->m_mode = 0; + i_this->m_carryAngleSpeed = \ + i_this->m_spin = \ + i_this->field_0x6A0 = \ + i_this->field_0x6A2 = 0; + if (i_this->m_acch.ChkWaterHit()) { + mDoAud_seStart(Z2SE_EN_MM_MET_LIFT_WTR, &i_this->enemy.current.pos, 0, 0); + } + i_this->m_sphere.OffAtSetBit(); + return; + } + if (fopAcM_CheckStatus(actor, 0x200) && !i_this->m_invulnerabilityTimer) { + i_this->m_action = 1; + i_this->m_mode = -10; + i_this->field_0x68A[0] = false; + i_this->m_sphere.OffCoSetBit(); + i_this->enemy.shape_angle = i_this->m_rotation; + + fopAc_ac_c* player = (fopAc_ac_c*) dComIfGp_getPlayer(0); + s16 sVar1 = i_this->enemy.shape_angle.y - (s16)(player->shape_angle.y + 0x4000); + + if (sVar1 > 0x4000 || sVar1 < -0x4000) { + i_this-> m_carryAngle = -0x8000; + return; + } + i_this->m_carryAngle = 0; + } + } } -/* ############################################################################################## */ -/* 807258F8-807258FC 0000A0 0004+00 0/2 0/0 0/0 .rodata @4730 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4730 = 50.0f; -COMPILER_STRIP_GATE(0x807258F8, &lit_4730); -#pragma pop - -/* 807258FC-80725900 0000A4 0004+00 0/1 0/0 0/0 .rodata @4731 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4731 = 40.0f; -COMPILER_STRIP_GATE(0x807258FC, &lit_4731); -#pragma pop - -/* 80725900-80725904 0000A8 0004+00 0/1 0/0 0/0 .rodata @4732 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4732 = 5500.0f; -COMPILER_STRIP_GATE(0x80725900, &lit_4732); -#pragma pop - -/* 80725904-80725908 0000AC 0004+00 0/1 0/0 0/0 .rodata @4733 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4733 = 5000.0f; -COMPILER_STRIP_GATE(0x80725904, &lit_4733); -#pragma pop - -/* 80725908-8072590C 0000B0 0004+00 0/1 0/0 0/0 .rodata @4734 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4734 = 3000.0f; -COMPILER_STRIP_GATE(0x80725908, &lit_4734); -#pragma pop - -/* 8072590C-80725910 0000B4 0004+00 0/1 0/0 0/0 .rodata @4735 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4735 = 4000.0f; -COMPILER_STRIP_GATE(0x8072590C, &lit_4735); -#pragma pop - -/* 80725910-80725914 0000B8 0004+00 0/1 0/0 0/0 .rodata @4736 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4736 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80725910, &lit_4736); -#pragma pop - -/* 80725914-80725918 0000BC 0004+00 0/1 0/0 0/0 .rodata @4737 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4737 = -60.0f; -COMPILER_STRIP_GATE(0x80725914, &lit_4737); -#pragma pop - -/* 80725918-8072591C 0000C0 0004+00 0/1 0/0 0/0 .rodata @4738 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4738 = -90.0f; -COMPILER_STRIP_GATE(0x80725918, &lit_4738); -#pragma pop - -/* 8072591C-80725920 0000C4 0004+00 0/1 0/0 0/0 .rodata @4739 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4739 = 60.0f; -COMPILER_STRIP_GATE(0x8072591C, &lit_4739); -#pragma pop - -/* 80725920-80725924 0000C8 0004+00 0/1 0/0 0/0 .rodata @4740 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4740 = 20000.0f; -COMPILER_STRIP_GATE(0x80725920, &lit_4740); -#pragma pop - /* 80724190-80724D40 001290 0BB0+00 1/1 0/0 0/0 .text action__FP13e_mm_mt_class */ -static void action(e_mm_mt_class* param_0) { - // NONMATCHING +static void action(e_mm_mt_class* i_this) { + fopAc_ac_c* unusedPlayer = dComIfGp_getPlayer(0); + fopAc_ac_c* actor = static_cast(&i_this->enemy); + cXyz tgHitPosDist; + cXyz tgHitPosAbove; + + fopAc_ac_c* helamsaurActor; + + s16 distAngle = 0; + e_mm_class* helmasaur = NULL; + if (fopAcM_SearchByID(actor->parentActorID, &helamsaurActor) && helamsaurActor != NULL) { + helmasaur = (e_mm_class*)helamsaurActor; + } + + cXyz* ccMove_p = i_this->m_stts.GetCCMoveP(); + if (helmasaur != NULL) { + helmasaur->field_0x674.x = ccMove_p->x; + helmasaur->field_0x674.z = ccMove_p->z; + } + + switch (i_this->m_action) { + case 0: + e_mm_mt_normal(i_this); + i_this->m_acch.CrrPos(dComIfG_Bgsp()); + if (helmasaur != NULL) { + distAngle = cLib_distanceAngleS(helmasaur->enemy.shape_angle.y - (s16)0x8000, + fopAcM_searchPlayerAngleY(actor)); + if (distAngle > 0x3000 || distAngle < -0x3000 || i_this->m_action) { + i_this->m_sphere.OnTgShield(); + i_this->m_sphere.SetTgHitMark(CcG_Tg_UNK_MARK_2); + i_this->m_sphere.SetTgSe(9); + i_this->m_sphere.OnTgNoHitMark(); + } else { + i_this->m_sphere.OffTgShield(); + i_this->m_sphere.SetTgHitMark(CcG_Tg_UNK_MARK_0); + i_this->m_sphere.SetTgSe(0); + i_this->m_sphere.OffTgNoHitMark(); + } + } + + break; + case 1: + e_mm_mt_hagare(i_this); + i_this->m_acch.CrrPos(dComIfG_Bgsp()); + i_this->m_rotation = actor->shape_angle; + + break; + case 2: + e_mm_mt_carry(i_this); + i_this->m_invulnerabilityTimer = 3; + i_this->m_acchCir.SetWall(20.0f, 20.0f); + i_this->m_acch.CrrPos(dComIfG_Bgsp()); + + break; + case 3: + e_mm_mt_drop(i_this); + i_this->field_0x6A8 = actor->speed.y; + + if (i_this->m_sphere.ChkCoHit()) { + cXyz* ccMove_p = i_this->m_stts.GetCCMoveP(); + + if (ccMove_p != NULL) { + actor->current.pos.x += ccMove_p->x * 0.5f; + actor->current.pos.z += ccMove_p->z * 0.5f; + + if (fabsf(ccMove_p->x) >= 2.0f || fabsf(ccMove_p->z) >= 2.0f) { + cLib_addCalc2(&i_this->field_0x69C, NREG_F(5) + 1000.0f, 0.1f, + NREG_F(6) + 200.0f); + s16 playerAngleY = fopAcM_searchPlayerAngleY(actor); + s16 playerAngleDelta = i_this->m_rotation.y - playerAngleY; + if (playerAngleDelta > 0x4000 || playerAngleDelta < -0x4000) { + playerAngleY += (s16)0x8000; + } + cLib_addCalcAngleS2(&i_this->m_rotation.y, playerAngleY, 4, 0x100); + } + } + } + i_this->m_acchCir.SetWall(50.0f, 50.0f); + i_this->m_acch.CrrPos(dComIfG_Bgsp()); + break; + } + + fopEn_enemy_c* enemy = (fopEn_enemy_c*)actor; + setMidnaBindEffect(enemy, &i_this->m_sound, &actor->current.pos, + &actor->scale); + + if (!i_this->m_invulnerabilityTimer) { + i_this->m_stts.Move(); + if (i_this->m_sphere.ChkTgHit()) { + i_this->m_invulnerabilityTimer = 10; + i_this->m_atInfo.mpCollider = i_this->m_sphere.GetTgHitObj(); + if (i_this->m_sphere.GetTgHitObj()->ChkAtType(0x80)) { + i_this->m_sound.startCollisionSE(0x40018, 45); + } + if (helmasaur != NULL && helmasaur->field_0x672) { + if (i_this->m_sphere.GetTgSe() == 9 || + (i_this->m_sphere.GetTgHitObj()->ChkAtType(0x8000000) && + helmasaur->action == 2)) { + tgHitPosDist = actor->current.pos - *i_this->m_sphere.GetTgHitPosP(); + csXyz hitMarkAngle; + tgHitPosAbove.set(*i_this->m_sphere.GetTgHitPosP()); + if (i_this->m_sphere.GetTgHitObj()->ChkAtType(16)) { + tgHitPosAbove.y += 100.0f; + } + hitMarkAngle.x = 0; + hitMarkAngle.y = (s16)tgHitPosDist.atan2sX_Z(); + hitMarkAngle.z = 0; + def_se_set(&i_this->m_sound, i_this->m_atInfo.mpCollider, 40, actor); + + cCcD_Obj* collider = i_this->m_atInfo.mpCollider; + dComIfGp_setHitMark(2, actor, &tgHitPosAbove, &hitMarkAngle, NULL, 0); + helmasaur->field_0xb99 |= (s8)0x2; + i_this->m_sphere.ClrTgHit(); + } else { + if (!(helmasaur->field_0xb99 & 0x8) && + !(helmasaur->field_0xb99 & 0x10)) + { + s16 health = actor->health; + cc_at_check(actor, &i_this->m_atInfo); + helmasaur->atInfo.mpCollider = i_this->m_atInfo.mpCollider; + helmasaur->field_0x6ac = i_this->m_atInfo.mHitDirection.y; + i_this->m_invulnerabilityTimer = 8; + + if ((int)actor->health <= 2000 - helmasaur->enemy.field_0x560) { + helmasaur->field_0xb99 |= (s8)0x10; + if (i_this->m_atInfo.mHitType == 1 || + i_this->m_atInfo.mpCollider->ChkAtType(8)) + { + if (!daPy_getPlayerActorClass()->checkCutJumpCancelTurn()) { + dScnPly_c::setPauseTimer(5); + } + } + + i_this->m_sphere.OnTgShield(); + i_this->m_sphere.SetTgHitMark(CcG_Tg_UNK_MARK_2); + i_this->m_sphere.SetTgSe(9); + i_this->m_sphere.OffTgNoHitMark(); + } else { + if (health != actor->health) { + i_this->m_sound.startCreatureVoice(Z2SE_EN_MM_V_DAMAGE, -1); + } else { + i_this->m_sound.startCreatureVoice(Z2SE_EN_MM_V_NO_DAMAGE, -1); + } + + if (i_this->m_atInfo.mHitType == 1 || + i_this->m_atInfo.mpCollider->ChkAtType(8)) + { + if (!daPy_getPlayerActorClass()->checkCutJumpCancelTurn()) { + dScnPly_c::setPauseTimer(2); + } + } + + helmasaur->field_0xb99 |= (s8)0x8; + } + + i_this->m_sphere.ClrTgHit(); + } + } + } else { + tgHitPosDist = actor->current.pos - *i_this->m_sphere.GetTgHitPosP(); + csXyz local_84; + tgHitPosAbove.set(*i_this->m_sphere.GetTgHitPosP()); + + if (i_this->m_sphere.GetTgHitObj()->ChkAtType(16)) { + tgHitPosAbove.y += 100.0f; + } + + local_84.x = 0; + local_84.y = (s16)tgHitPosDist.atan2sX_Z(); + local_84.z = 0; + cCcD_Obj* collider = i_this->m_atInfo.mpCollider; + def_se_set(&i_this->m_sound, i_this->m_atInfo.mpCollider, 40, actor); + dComIfGp_setHitMark(2, actor, &tgHitPosAbove, &local_84, NULL, 0); + + fopAc_ac_c* local_a4 = at_power_check(&i_this->m_atInfo); + + if (i_this->m_atInfo.mHitType == 1) { + if (daPy_getPlayerActorClass()->getCutType() == 8 || + daPy_getPlayerActorClass()->getCutType() == 9 || + daPy_getPlayerActorClass()->getCutType() == 23 || + daPy_getPlayerActorClass()->getCutType() == 24) { + actor->speedF = cM_rndF(10.0f) + 40.0f + TREG_F(16); + i_this->m_spin = (s16)(cM_rndF(2000.0f) + 5500.0f); + i_this->field_0x69C = (f32)(s16)(cM_rndF(1000.0f) + 5000.0f); + } else { + actor->speedF = TREG_F(17) + 30.0f; + i_this->m_spin = (s16)cM_rndFX(3000.0f); + i_this->field_0x69C = NREG_F(10) + 4000.0f; + } + } else { + if (local_a4) { + actor->speedF = local_a4->speedF * 0.7f; + actor->current.angle.y = local_a4->current.angle.y + (s16)cM_rndFX(5000.0f); + } + i_this->m_spin = (s16)cM_rndFX(3000.0f); + i_this->field_0x69C = NREG_F(10) + 4000.0f; + } + + i_this->m_sphere.ClrTgHit(); + } + } + } + + if (helmasaur != NULL && helmasaur->field_0x672 && helmasaur->field_0xb99 != 4) { + i_this->mp_model->setBaseTRMtx(helmasaur->modelMorf->getModel()->getAnmMtx(11)); + } else { + i_this->field_0x6A0 = i_this->field_0x69C * cM_ssin(i_this->m_lifetime * (NREG_S(3) + 3000)); + i_this->field_0x6A2 = i_this->field_0x69C * cM_ssin(i_this->m_lifetime * (NREG_S(4) + 4000)); + + cLib_addCalc0(&i_this->field_0x69C, 0.1f, NREG_F(1) + 50.0f); + cLib_addCalcAngleS2(&i_this->m_spin, 0, 1, TREG_S(5) + 50); + mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y, + actor->current.pos.z); + cMtx_YrotS(*calc_mtx, i_this->m_rotation.y); + + if (fopAcM_checkCarryNow(actor)) { + tgHitPosDist.x = 30.0f; + } else { + tgHitPosDist.x = 0.0f; + } + + tgHitPosDist.y = 0.0f; + tgHitPosDist.z = 0.0f; + MtxPosition(&tgHitPosDist, &tgHitPosAbove); + mDoMtx_stack_c::transM(tgHitPosAbove.x, tgHitPosAbove.y, tgHitPosAbove.z); + + mDoMtx_stack_c::YrotM((s16)i_this->m_rotation.y); + mDoMtx_stack_c::XrotM((s16)i_this->field_0x6A0); + mDoMtx_stack_c::ZrotM(i_this->m_rotation.z + i_this->field_0x6A2); + mDoMtx_stack_c::scaleM(actor->scale.x, actor->scale.x, actor->scale.x); + i_this->mp_model->setBaseTRMtx(mDoMtx_stack_c::get()); + } + + cXyz curPos = actor->current.pos; + if (helmasaur != NULL && helmasaur->field_0x672) { + fopAc_ac_c* parentActor; + if (fopAcM_SearchByID(actor->parentActorID, &parentActor) && parentActor) { + cMtx_YrotS(*calc_mtx, parentActor->shape_angle.y); + if (actor->argument != 1) { + tgHitPosDist.x = JREG_F(8); + tgHitPosDist.y = JREG_F(9) + -60.0f; + tgHitPosDist.z = JREG_F(10) + 20.0f; + } else { + tgHitPosDist.x = JREG_F(11); + tgHitPosDist.y = JREG_F(12) + -90.0f; + tgHitPosDist.z = JREG_F(13) + 50.0f; + } + MtxPosition(&tgHitPosDist, &curPos); + curPos += actor->current.pos; + } else { + helmasaur->field_0x672 = 0; + } + } else { + cMtx_XrotS(*calc_mtx, i_this->m_rotation.z); + tgHitPosDist.x = 0.0f; + tgHitPosDist.y = -(actor->scale.x * 30.0f); + tgHitPosDist.z = 0.0f; + MtxPosition(&tgHitPosDist, &curPos); + curPos += actor->current.pos; + } + i_this->m_sph.SetC(curPos); + + if (i_this->m_action == 1) { + i_this->m_sph.SetR((JREG_F(15) + 60.0f) * actor->scale.x); + } else if (i_this->m_action == 2) { + i_this->m_sph.SetR((JREG_F(16) + 100.0f) * actor->scale.x); + } else { + i_this->m_sph.SetR((JREG_F(17) + 50.0f) * actor->scale.x); + } + + dComIfG_Ccsp()->Set(&i_this->m_sph); + + if (i_this->m_invulnerabilityTimer) { + curPos.y += 20000.0f; + } + i_this->m_sphere.SetC(curPos); + + i_this->m_sphere.SetR((JREG_F(14) + 40.0f) * actor->scale.x); + + dComIfG_Ccsp()->Set(&i_this->m_sphere); } /* 80724D40-80724DF4 001E40 00B4+00 2/1 0/0 0/0 .text daE_MM_MT_Execute__FP13e_mm_mt_class */ -static void daE_MM_MT_Execute(e_mm_mt_class* param_0) { - // NONMATCHING -} +static int daE_MM_MT_Execute(e_mm_mt_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*) i_this; + i_this->m_lifetime++; -/* 80724DF4-80724DFC 001EF4 0008+00 1/0 0/0 0/0 .text daE_MM_MT_IsDelete__FP13e_mm_mt_class */ -static bool daE_MM_MT_IsDelete(e_mm_mt_class* param_0) { + for (int i = 0; i < 2; i++) { + if (i_this->m_timer[i] != 0) { + i_this->m_timer[i]--; + } + } + if (i_this->m_invulnerabilityTimer != 0) { + i_this->m_invulnerabilityTimer--; + } + action(i_this); + fopAcM_OffStatus(actor, fopAcM_STATUS_UNK_0x200); + i_this->m_sound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor))); return true; } -/* ############################################################################################## */ -/* 8072592C-8072592C 0000D4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8072592C = "E_MM_MT"; -#pragma pop +/* 80724DF4-80724DFC 001EF4 0008+00 1/0 0/0 0/0 .text daE_MM_MT_IsDelete__FP13e_mm_mt_class */ +static int daE_MM_MT_IsDelete(e_mm_mt_class* i_this) { + return 1; +} /* 80724DFC-80724E58 001EFC 005C+00 1/0 0/0 0/0 .text daE_MM_MT_Delete__FP13e_mm_mt_class */ -static void daE_MM_MT_Delete(e_mm_mt_class* param_0) { - // NONMATCHING +static int daE_MM_MT_Delete(e_mm_mt_class* i_this) { + dComIfG_resDelete(&i_this->m_phase, "E_MM_MT"); + if (i_this->enemy.heap != NULL) { + i_this->m_sound.deleteObject(); + } + return 1; } /* 80724E58-80724EE0 001F58 0088+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* i_this) { + J3DModelData* i_modelData; + int resource_index = 4; + + if (i_this->argument == 1) { + resource_index = 3; + } + i_modelData = (J3DModelData*) dComIfG_getObjectRes("E_MM_MT", resource_index); + JUT_ASSERT(1197, i_modelData != NULL); + + ((e_mm_mt_class*)i_this)->mp_model = mDoExt_J3DModel__create(i_modelData, 0x80000, 0x11000084); + + if (((e_mm_mt_class*)i_this)->mp_model == NULL) { + return 0; + } + + return 1; } -/* ############################################################################################## */ -/* 80725924-80725928 0000CC 0004+00 0/1 0/0 0/0 .rodata @4896 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4896 = -200.0f; -COMPILER_STRIP_GATE(0x80725924, &lit_4896); -#pragma pop +/* 80724EE0-80725218 001FE0 0338+00 1/0 0/0 0/0 .text daE_MM_MT_Create__FP10fopAc_ac_c */ +static int daE_MM_MT_Create(fopAc_ac_c* i_this) { + cPhs__Step cVar1; + bool bVar2; + f32 fVar3; + + e_mm_mt_class* helmasaurShell = (e_mm_mt_class*) i_this; + fopAc_ac_c* actor = (fopAc_ac_c*) i_this; -/* 80725928-8072592C 0000D0 0004+00 0/1 0/0 0/0 .rodata @4897 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4897 = 65535.0f; -COMPILER_STRIP_GATE(0x80725928, &lit_4897); -#pragma pop + fopAcM_ct(i_this, e_mm_mt_class); -/* 8072596C-807259AC 000038 0040+00 1/1 0/0 0/0 .data cc_sph_src$4792 */ -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj - {dCcD_SE_METAL, 0x0, 0x1, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x2, 0x0, 0x0, 0x407}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr -}; + int phase = dComIfG_resLoad(&helmasaurShell->m_phase, "E_MM_MT"); + if (phase == cPhs_COMPLEATE_e) { + OS_REPORT("E_MM_MT PARAM %x\n", fopAcM_GetParam(i_this)); + helmasaurShell->parameters = fopAcM_GetParam(i_this); + OS_REPORT("E_MM_MT//////////////E_MM_MT SET 1 !!\n"); + -/* 807259AC-807259EC 000078 0040+00 1/1 0/0 0/0 .data hk_sph_src$4793 */ -static dCcD_SrcSph hk_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x4080, 0x3}, 0x0}}, // mObj - {dCcD_SE_13, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x406}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr -}; + if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x850)) { + OS_REPORT("//////////////E_MM_MT SET NON !!\n"); + return cPhs_ERROR_e; + } + OS_REPORT("//////////////E_MM_MT SET 2 !!\n"); + fopAcM_SetMtx(i_this, helmasaurShell->mp_model->getBaseTRMtx()); + fopAcM_SetMin(i_this, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(i_this, 200.0f, 200.0f, 200.0f); + helmasaurShell->m_stts.Init(100, 0, i_this); + if (i_this->argument == 1) { + helmasaurShell->m_stts.SetWeight(0xFE); + + } else { + helmasaurShell->m_stts.SetWeight(200); + } + + i_this->health = 2000; + i_this->field_0x560 = 2000; + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj + {dCcD_SE_METAL, 0x0, 0x1, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x2, 0x0, 0x0, 0x407}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // m_sphere + } // m_sphAttr + }; + + + helmasaurShell->m_sphere.Set(cc_sph_src); + helmasaurShell->m_sphere.SetStts(&helmasaurShell->m_stts); + if (i_this->argument == 1) { + fopAcM_OffStatus(i_this, 0x80000); + helmasaurShell->m_sphere.SetAtType( + #if VERSION == VERSION_GCN_JPN + AT_TYPE_CSTATUE_SWING + #else + 0xD8FBBDFF + #endif + ); + helmasaurShell->m_stts.SetWeight(0xFE); + helmasaurShell->m_sphere.SetAtAtp(2); + } else { + static dCcD_SrcSph hk_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x4080, 0x3}, 0x0}}, // mObj + {dCcD_SE_13, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x406}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // m_sphere + } + }; + helmasaurShell->m_stts.SetWeight(200); + helmasaurShell->m_sph.Set(hk_sph_src); + helmasaurShell->m_sph.SetStts(&helmasaurShell->m_stts); + } + helmasaurShell->m_acch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1, + &helmasaurShell->m_acchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL); + + helmasaurShell->m_acchCir.SetWall(50.0f, 50.0f); + helmasaurShell->m_sound.init(&i_this->current.pos, &i_this->eyePos, 3, 1); + helmasaurShell->m_atInfo.mpSound = &helmasaurShell->m_sound; + helmasaurShell->m_atInfo.mPowerType = 9; + i_this->attention_info.distances[fopAc_attn_CARRY_e] = 7; + helmasaurShell->m_lifetime = cM_rndF(65535.0f); + daE_MM_MT_Execute(helmasaurShell); + } + return phase; +} /* 807259EC-80725A0C -00001 0020+00 1/0 0/0 0/0 .data l_daE_MM_MT_Method */ static actor_method_class l_daE_MM_MT_Method = { - (process_method_func)daE_MM_MT_Create__FP10fopAc_ac_c, - (process_method_func)daE_MM_MT_Delete__FP13e_mm_mt_class, - (process_method_func)daE_MM_MT_Execute__FP13e_mm_mt_class, - (process_method_func)daE_MM_MT_IsDelete__FP13e_mm_mt_class, - (process_method_func)daE_MM_MT_Draw__FP13e_mm_mt_class, + (process_method_func)daE_MM_MT_Create, + (process_method_func)daE_MM_MT_Delete, + (process_method_func)daE_MM_MT_Execute, + (process_method_func)daE_MM_MT_IsDelete, + (process_method_func)daE_MM_MT_Draw, }; /* 80725A0C-80725A3C -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_MM_MT */ @@ -566,104 +885,3 @@ extern actor_process_profile_definition g_profile_E_MM_MT = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80725A3C-80725A48 000108 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, -}; - -/* 80725A48-80725A54 000114 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, -}; - -/* 80725A54-80725A60 000120 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, -}; - -/* 80725A60-80725A6C 00012C 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, -}; - -/* 80725A6C-80725A78 000138 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, -}; - -/* 80725A78-80725A9C 000144 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_80725434, - (void*)NULL, - (void*)NULL, - (void*)func_8072542C, -}; - -/* 80724EE0-80725218 001FE0 0338+00 1/0 0/0 0/0 .text daE_MM_MT_Create__FP10fopAc_ac_c */ -static void daE_MM_MT_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80725218-80725260 002318 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80725260-807252A8 002360 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 807252A8-80725304 0023A8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80725304-80725374 002404 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 80725374-807253E4 002474 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 807253E4-8072542C 0024E4 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 8072542C-80725434 00252C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8072542C() { - // NONMATCHING -} - -/* 80725434-8072543C 002534 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80725434() { - // NONMATCHING -} - -/* 8072592C-8072592C 0000D4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */