diff --git a/.vscode/settings.json b/.vscode/settings.json index 2eb1cd5b08b..c8a7d84e4c3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,6 +24,8 @@ "search.exclude": { "build/*/config.json": true, "build/*/report.json": true, + "build/*/report_changes.json": true, + "build/*/baseline.json": true, "build/**/*.MAP": true, "build/**/*.o": true, "build/**/*.plf": true, diff --git a/configure.py b/configure.py index bacab9794d0..d49b5c6d3a7 100755 --- a/configure.py +++ b/configure.py @@ -1692,7 +1692,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_e_mm"), ActorRel(NonMatching, "d_a_e_mm_mt"), ActorRel(Equivalent, "d_a_e_ms"), # weak func order - ActorRel(NonMatching, "d_a_e_nz"), + ActorRel(Equivalent, "d_a_e_nz"), # weak func order ActorRel(Equivalent, "d_a_e_oc"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_oct_bg"), ActorRel(Equivalent, "d_a_e_ot"), # weak func order diff --git a/include/d/actor/d_a_e_nz.h b/include/d/actor/d_a_e_nz.h index 444e7e39003..d13ce5148fd 100644 --- a/include/d/actor/d_a_e_nz.h +++ b/include/d/actor/d_a_e_nz.h @@ -1,5 +1,9 @@ #ifndef D_A_E_NZ_H #define D_A_E_NZ_H + +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" #include "f_op/f_op_actor_mng.h" /** @@ -10,16 +14,61 @@ * @details * */ -class e_nz_class : public fopEn_enemy_c { -private: - /* 0x5ac */ u8 field_0x5ac[0xa88 - 0x5ac]; +class e_nz_class { +public: + /* 0x000 */ fopEn_enemy_c enemy; + /* 0x5AC */ request_of_phase_process_class mPhase; + /* 0x5B4 */ s16 mSubAction; + /* 0x5B6 */ u8 field_0x5b6; + /* 0x5B6 */ u8 field_0x5b7; + /* 0x5B8 */ int field_0x5b8; + /* 0x5BC */ cXyz field_0x5bc; + /* 0x5D4 */ cXyz field_0x5c8; + /* 0x5D4 */ s16 field_0x5d4; + /* 0x5D8 */ f32 field_0x5d8; + /* 0x5DC */ f32 field_0x5dc; + /* 0x5E0 */ mDoExt_McaMorfSO* mpMorf; + /* 0x5E4 */ int field_0x5e4; + /* 0x5E8 */ mDoExt_invisibleModel mInvModel; + /* 0x5F0 */ f32 mMaterialAlpha; + /* 0x5F4 */ Z2CreatureEnemy mSound; + /* 0x698 */ s16 field_0x698; + /* 0x69A */ s16 mAction; + /* 0x6A0 */ f32 mPlayerDistance; + /* 0x6A0 */ s16 mPlayerAngleY; + /* 0x6A2 */ s16 field_0x6a2[4]; + /* 0x6AA */ s16 field_0x6aa; + /* 0x6AC */ s8 field_0x6ac; + /* 0x6B0 */ dBgS_AcchCir mAcchCir; + /* 0x6F0 */ dBgS_ObjAcch mAcch; + /* 0x8C8 */ s8 field_0x8c8; + /* 0x8CC */ dCcD_Stts mStts; + /* 0x908 */ dCcD_Sph mSph; + /* 0xA40 */ dCcU_AtInfo mAtInfo; + /* 0xA64 */ u32 mParticle; + /* 0xA68 */ u32 mParticleIds[4]; + /* 0xA78 */ s8 field_0xa78; + /* 0xA7C */ int field_0xa7c; + /* 0xA80 */ int field_0xa80; + /* 0xA84 */ bool mIsHIOOwner; }; STATIC_ASSERT(sizeof(e_nz_class) == 0xa88); -class daE_NZ_HIO_c { +class daE_NZ_HIO_c : public JORReflexible { +public: /* 807299EC */ daE_NZ_HIO_c(); - /* 8072BC88 */ ~daE_NZ_HIO_c(); + /* 8072BC88 */ virtual ~daE_NZ_HIO_c() {} + + void genMessage(JORMContext*); + + /* 0x04 */ s8 mId; + /* 0x08 */ f32 mBasicSize; + /* 0x0C */ f32 mSpeed; + /* 0x10 */ f32 mAttackSpeed; + /* 0x14 */ s16 mWaitTime; + /* 0x18 */ f32 mCurrentAlphaSpeed; + /* 0x1C */ f32 mVanishingAlphaSpeed; }; diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h index 6db22ec5c25..7934b71e889 100644 --- a/include/d/actor/d_a_midna.h +++ b/include/d/actor/d_a_midna.h @@ -214,6 +214,7 @@ public: }; void onForcePanic() { onEndResetStateFlg0(ERFLG0_FORCE_PANIC); } + void onRatBody(int) { onForcePanic(); } u32 checkForceNormalColor() const { return checkStateFlg1(FLG1_FORCE_NORMAL_COL); } u32 checkForceTiredColor() const { return checkStateFlg1(FLG1_FORCE_TIRED_COL); } void onNoServiceWait() { onEndResetStateFlg0(ERFLG0_NO_SERVICE_WAIT); } diff --git a/include/d/actor/d_a_npc_ykm.h b/include/d/actor/d_a_npc_ykm.h index 49bbfeb2ce3..ae3ae0b183a 100644 --- a/include/d/actor/d_a_npc_ykm.h +++ b/include/d/actor/d_a_npc_ykm.h @@ -40,6 +40,8 @@ class daNpc_ykM_Param_c : public JORReflexible { public: /* 80B5D6C8 */ virtual ~daNpc_ykM_Param_c() {} + void genMessage(JORMContext*); + static daNpc_ykM_HIOParam const m; }; diff --git a/src/d/actor/d_a_e_nz.cpp b/src/d/actor/d_a_e_nz.cpp index 04d07b3edb7..269bf050a74 100644 --- a/src/d/actor/d_a_e_nz.cpp +++ b/src/d/actor/d_a_e_nz.cpp @@ -4,231 +4,753 @@ */ #include "d/actor/d_a_e_nz.h" +UNK_REL_DATA; +#include "c/c_damagereaction.h" #include "d/d_cc_d.h" #include "dol2asm.h" -UNK_REL_DATA; +#include "Z2AudioLib/Z2Instances.h" #include "f_op/f_op_actor_enemy.h" - -// -// Forward References: -// - -extern "C" void __ct__12daE_NZ_HIO_cFv(); -extern "C" static void anm_init__FP10e_nz_classifUcf(); -extern "C" static void pl_check__FP10e_nz_classf(); -extern "C" static void daE_NZ_Draw__FP10e_nz_class(); -extern "C" static void e_nz_normal__FP10e_nz_class(); -extern "C" static void e_nz_attack__FP10e_nz_class(); -extern "C" static void e_nz_stick__FP10e_nz_class(); -extern "C" static void damage_check__FP10e_nz_class(); -extern "C" static void e_nz_damage__FP10e_nz_class(); -extern "C" static void getPolyColor__FR13cBgS_PolyInfoiP8_GXColorP8_GXColorPUcPf(); -extern "C" static void action__FP10e_nz_class(); -extern "C" static void daE_NZ_Execute__FP10e_nz_class(); -extern "C" static bool daE_NZ_IsDelete__FP10e_nz_class(); -extern "C" static void daE_NZ_Delete__FP10e_nz_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daE_NZ_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" void __dt__12daE_NZ_HIO_cFv(); -extern "C" void __sinit_d_a_e_nz_cpp(); -extern "C" static void func_8072BD0C(); -extern "C" static void func_8072BD14(); -extern "C" void __dt__4cXyzFv(); -extern "C" extern char const* const d_a_e_nz__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 scaleM__14mDoMtx_stack_cFfff(); -extern "C" void create__21mDoExt_invisibleModelFP8J3DModelUc(); -extern "C" void entryDL__21mDoExt_invisibleModelFP4cXyz(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void cDmrNowMidnaTalk__Fv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void fopAcM_wayBgCheck__FPC10fopAc_ac_cff(); -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 isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -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 request__10dAttLook_cFP10fopAc_ac_cfffsi(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void ChkPolySafe__4cBgSFRC13cBgS_PolyInfo(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void 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 ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -extern "C" void checkNowWolfEyeUp__9daPy_py_cFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_pol_eff_prim_get__FPC13cBgS_PolyInfoP8_GXColor(); -extern "C" void dKy_pol_eff_env_get__FPC13cBgS_PolyInfoP8_GXColor(); -extern "C" void dKy_pol_eff2_prim_get__FPC13cBgS_PolyInfoP8_GXColor(); -extern "C" void dKy_pol_eff2_env_get__FPC13cBgS_PolyInfoP8_GXColor(); -extern "C" void dKy_pol_eff_alpha_get__FPC13cBgS_PolyInfo(); -extern "C" void dKy_pol_eff_ratio_get__FPC13cBgS_PolyInfo(); -extern "C" void dKy_pol_eff2_alpha_get__FPC13cBgS_PolyInfo(); -extern "C" void dKy_pol_eff2_ratio_get__FPC13cBgS_PolyInfo(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __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 MtxTrans__FfffUc(); -extern "C" void MtxScale__FfffUc(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void setLinkSearch__15Z2CreatureEnemyFb(); -extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_20(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_20(); -extern "C" void _restgpr_26(); -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 m_midnaActor__9daPy_py_c[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8072C1AC-8072C1B0 00002C 0004+00 0/1 0/0 0/0 .rodata @3810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3810 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x8072C1AC, &lit_3810); -#pragma pop - -/* 8072C1B0-8072C1B4 000030 0004+00 0/3 0/0 0/0 .rodata @3811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3811 = 25.0f; -COMPILER_STRIP_GATE(0x8072C1B0, &lit_3811); -#pragma pop - -/* 8072C1B4-8072C1B8 000034 0004+00 0/1 0/0 0/0 .rodata @3812 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3812 = 45.0f; -COMPILER_STRIP_GATE(0x8072C1B4, &lit_3812); -#pragma pop - -/* 8072C1B8-8072C1BC 000038 0004+00 0/2 0/0 0/0 .rodata @3813 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3813 = 60.0f; -COMPILER_STRIP_GATE(0x8072C1B8, &lit_3813); -#pragma pop - -/* 8072C1BC-8072C1C0 00003C 0004+00 1/4 0/0 0/0 .rodata @3814 */ -SECTION_RODATA static f32 const lit_3814 = 30.0f; -COMPILER_STRIP_GATE(0x8072C1BC, &lit_3814); +enum Action { + ACTION_NORMAL, + ACTION_ATTACK, + ACTION_UNKNOWN, + ACTION_STICK, + ACTION_DAMANGE, +}; /* 8072C284-8072C28C 000038 0008+00 5/5 0/0 0/0 .data stick_bit */ -SECTION_DATA static u8 stick_bit[8] = { +static u8 stick_bit[8] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, }; +struct StickDef { + s8 field_0x0; + s16 field_0x2; + s16 field_0x4; + s16 field_0x6; + s16 field_0x8; +}; + /* 8072C28C-8072C2DC 000040 0050+00 1/1 0/0 0/0 .data stick_d */ -SECTION_DATA static u8 stick_d[80] = { - 0x03, 0x00, 0x05, 0xDC, 0x3A, 0x98, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x58, 0x8A, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x03, 0xE8, 0x17, 0x70, 0x05, 0xDC, 0x00, 0x19, 0x03, 0x00, 0x9E, 0x58, 0xD8, 0xF0, 0x55, 0xF0, - 0x00, 0x14, 0x02, 0x00, 0x1F, 0x40, 0xAA, 0x10, 0xF4, 0x48, 0x00, 0x0F, 0x01, 0x00, 0x75, 0x30, - 0xEF, 0xFC, 0x05, 0xDC, 0x00, 0x19, 0x02, 0x00, 0x15, 0x7C, 0xB1, 0xE0, 0x5D, 0xC0, 0x00, 0x0F, +static StickDef stick_d[8] = { + 0x03, 1500, 15000, 0, 0x14, + 0x00, 0, 32767,0, 0, + 0x01, 7000, -30000, 0x00, 0, + 0x02, 1000, 6000, 1500, 0x19, + 0x03, -25000, -10000, 22000, 0x14, + 0x02, 8000, -22000, -3000, 0x0F, + 0x01, 30000, -4100, 1500, 0x19, + 0x02, 5500, -20000, 24000, 0x0F, }; -/* 8072C2DC-8072C2E4 000090 0008+00 1/1 0/0 0/0 .data eff_id$4227 */ -SECTION_DATA static u8 eff_id_4227[8] = { - 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xBB, -}; +/* 807299EC-80729A3C 0000EC 0050+00 1/1 0/0 0/0 .text __ct__12daE_NZ_HIO_cFv */ +daE_NZ_HIO_c::daE_NZ_HIO_c() { + mId = -1; + mBasicSize = 1.2f; + mSpeed = 25.0f; + mAttackSpeed = 45.0f; + mWaitTime = 5; + mCurrentAlphaSpeed = 60.0f; + mVanishingAlphaSpeed = 30.0f; +} -/* 8072C2E4-8072C324 000098 0040+00 1/1 0/0 0/0 .data cc_sph_src$4510 */ -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr -}; +#ifdef DEBUG +void daE_NZ_HIO_c::genMessage(JORMContext* ctx) { + // Ghost Rat + ctx->genLabel(" 幽霊ネズミ", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Basic Size + ctx->genSlider("基本サイズ", &mBasicSize, 0.0f, 5.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Basic Speed + ctx->genSlider("移動速度", &mSpeed, 0.0f, 30.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Attack Speed + ctx->genSlider("攻撃速度", &mAttackSpeed, 0.0f, 60.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Attack Wait Time + ctx->genSlider("出現タイムラグ", &mWaitTime, 0, 0x23, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + // Current alpha speed + ctx->genSlider("現α速度", &mCurrentAlphaSpeed, 0.0f, 255.0f, 0, NULL, 0xffff, 0xffff, 0x200, + 0x18); + // Vanishing alpha speed + ctx->genSlider("消α速度", &mVanishingAlphaSpeed, 0.0f, 255.0f, 0, NULL, 0xffff, 0xffff, 0x200, + 0x18); +} +#endif + +/* 80729A3C-80729AE8 00013C 00AC+00 4/4 0/0 0/0 .text anm_init__FP10e_nz_classifUcf */ +static void anm_init(e_nz_class* i_this, int param_2, f32 param_3, u8 param_4, f32 param_5) { + i_this->mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_NZ", param_2), param_4, + param_3, param_5, 0.0f, -1.0f); + i_this->field_0x5e4 = param_2; +} + +/* 80729AE8-80729B24 0001E8 003C+00 1/1 0/0 0/0 .text pl_check__FP10e_nz_classf */ +static BOOL pl_check(e_nz_class* i_this, f32 param_1) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + dComIfGp_getPlayer(0); + if (i_this->mPlayerDistance < param_1) { + s16 angleDiff = a_this->shape_angle.y - i_this->mPlayerAngleY; + if (angleDiff < 0x5000 && angleDiff > -0x5000) { + return TRUE; + } + } + return FALSE; +} + +/* 80729B24-80729C24 000224 0100+00 1/0 0/0 0/0 .text daE_NZ_Draw__FP10e_nz_class */ +static int daE_NZ_Draw(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + J3DModel* model = i_this->mpMorf->getModel(); + if (i_this->field_0x5b8 != 0) { + return 1; + } + + g_env_light.settingTevStruct(0, &a_this->current.pos, &a_this->tevStr); + if (i_this->mMaterialAlpha < 1.0f) { + return 1; + } + + g_env_light.setLightTevColorType_MAJI(model, &a_this->tevStr); + J3DModelData* modelData = model->getModelData(); + u8 alpha = i_this->mMaterialAlpha; + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + J3DGXColorS10* tevColor = modelData->getMaterialNodePointer(i)->getTevColor(2); + tevColor->a = alpha; + } + i_this->mInvModel.entryDL(NULL); + + return 1; +} + +UNK_REL_BSS + +bool l_HIOInit; + +/* 8072C434-8072C454 000054 0020+00 5/6 0/0 0/0 .bss l_HIO */ +static daE_NZ_HIO_c l_HIO; + +/* 8072C454-8072C458 000074 0004+00 5/5 0/0 0/0 .bss None */ +static u8 data_8072C454[4]; + +/* 80729C24-8072A044 000324 0420+00 1/1 0/0 0/0 .text e_nz_normal__FP10e_nz_class */ +static void e_nz_normal(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + f32 dVar9 = 0.0f; + cXyz local_44; + if ((i_this->field_0x698 & 0x1f) == 0 && cM_rndF(1.0f) < 0.5f) { + i_this->mSound.startCreatureVoice(Z2SE_EN_NZ_V_NAKU, -1); + } + + switch(i_this->mSubAction) { + case 0: + anm_init(i_this, 9, 3.0f, 2, 1.0f); + i_this->field_0x6a2[0] = cM_rndF(60.0f) + 30.0f; + i_this->mSubAction = 1; + i_this->field_0x698 = cM_rndF(65535.0f); + break; + case 1: + if (i_this->mpMorf->getFrame() >= 1.0f && i_this->mpMorf->getFrame() <= 7.0f) { + dVar9 = l_HIO.mSpeed; + a_this->speedF = dVar9; + } + + if (i_this->mpMorf->checkFrame(1.0f)) { + i_this->field_0x5d4 += (int)cM_rndFX(3000.0f); + a_this->speed.y = 20.0f; + } + + if (i_this->mpMorf->checkFrame(9.0f)) { + i_this->field_0xa78 = 1; + } + + if (i_this->field_0x6a2[0] == 0 && i_this->mpMorf->checkFrame(10.0f)) { + i_this->field_0x6a2[0] = cM_rndF(60.0f) + 30.0f; + i_this->mSubAction = 2; + if (cM_rndF(1.0f) < 0.5f) { + anm_init(i_this, 10, 3.0f, 2, 1.0f); + } else { + anm_init(i_this, 8, 3.0f, 2, 1.0f); + } + } + + if (i_this->field_0x6a2[2] == 0 && fopAcM_wayBgCheck(a_this, 200.0f, 50.0f)) { + i_this->field_0x6a2[2] = 20; + i_this->field_0x6a2[1] = cM_rndF(10.0f) + 20.0f; + i_this->field_0x5d4 = a_this->current.angle.y + 0x8000; + } + break; + case 2: + if (i_this->field_0x6a2[0] == 0) { + i_this->mSubAction = 3; + i_this->field_0x6a2[0] = 5; + local_44.x = a_this->home.pos.x + cM_rndFX(500.0f) - a_this->current.pos.x; + local_44.z = a_this->home.pos.z + cM_rndFX(500.0f) - a_this->current.pos.z; + i_this->field_0x5d4 = cM_atan2s(local_44.x, local_44.z); + } + break; + case 3: + if (i_this->field_0x6a2[0] == 0) { + i_this->mSubAction = 0; + } + break; + } + + if (data_8072C454[0] != 0xff && pl_check(i_this, 700.0f)) { + i_this->field_0x5d4 = i_this->mPlayerAngleY; + if (i_this->mPlayerDistance < 400.0f && + (i_this->field_0x5e4 == 8 || + ((i_this->field_0x5e4 == 9 && i_this->mpMorf->checkFrame(10.0f))))) + { + for (int i = 0; i < 8; i++) { + if ((data_8072C454[0] & stick_bit[i]) == 0) { + data_8072C454[0] |= stick_bit[i]; + i_this->field_0x6ac = i + 1; + break; + } + } + i_this->mAction = ACTION_ATTACK; + i_this->mSubAction = 0; + } + } + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 2, 0x2000); + cLib_addCalc2(&a_this->speedF, dVar9, 1.0f, l_HIO.mSpeed * 0.25f); +} + +/* 8072A044-8072A680 000744 063C+00 1/1 0/0 0/0 .text e_nz_attack__FP10e_nz_class */ +static s8 e_nz_attack(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + cXyz local_38; + s8 rv = 0; + switch(i_this->mSubAction) { + case 0: + anm_init(i_this, 7, 3.0f, 0, 1.0f); + i_this->mSubAction = 1; + a_this->speedF = 0.0f; + break; + case 1: + i_this->field_0x5c8 = i_this->field_0x5bc; + local_38 = i_this->field_0x5bc - a_this->current.pos; + a_this->current.angle.y = cM_atan2s(local_38.x, local_38.z); + a_this->current.angle.x = -cM_atan2s(local_38.y, JMAFastSqrt(local_38.x * local_38.x + local_38.z * local_38.z)); + if (!i_this->mpMorf->isStop()) { + break; + } + anm_init(i_this, 6, 5.0f, 0, 1.0f); + i_this->mSubAction = 2; + a_this->speedF = l_HIO.mAttackSpeed; + i_this->field_0x5dc = 25.0f; + i_this->field_0x6a2[0] = 20; + // fallthrough + case 2: + rv = 1; + local_38 = i_this->field_0x5bc - a_this->current.pos; + if (local_38.abs() < a_this->speedF * 2.0f) { + i_this->mSubAction = 3; + } else { + local_38 = i_this->field_0x5c8 - i_this->field_0x5bc; + if (local_38.abs() > 50.0f || i_this->field_0x6a2[0] == 0) { + i_this->mSubAction = 5; + } + } + break; + case 3: + i_this->field_0x5c8 = i_this->field_0x5bc; + rv = 2; + a_this->speedF = 0.0f; + cLib_addCalc2(&a_this->current.pos.x, i_this->field_0x5bc.x, 1.0f, 100.0f); + cLib_addCalc2(&a_this->current.pos.y, i_this->field_0x5bc.y, 1.0f, 100.0f); + cLib_addCalc2(&a_this->current.pos.z, i_this->field_0x5bc.z, 1.0f, 100.0f); + local_38 = i_this->field_0x5bc - a_this->current.pos; + if (local_38.abs() < 5.0f) { + i_this->mAction = ACTION_STICK; + i_this->mSubAction = 0; + } + break; + case 5: + cLib_addCalcAngleS2(&a_this->current.angle.x, 0, 1, 0x1000); + if (i_this->mAcch.ChkGroundHit() || i_this->field_0x8c8) { + i_this->mAction = ACTION_NORMAL; + i_this->field_0x6a2[0] = cM_rndF(30.0f) + 30.0f; + i_this->mSubAction = 2; + anm_init(i_this, 8, 3.0f, 2, 1.0f); + a_this->current.angle.x = 0; + data_8072C454[0] &= ~stick_bit[i_this->field_0x6ac - 1]; + i_this->field_0x6ac = 0; + } + break; + } + + return rv; +} + +/* 8072A680-8072A7C4 000D80 0144+00 1/1 0/0 0/0 .text e_nz_stick__FP10e_nz_class */ +static void e_nz_stick(e_nz_class* i_this) { + s8 cVar4 = 0; + + switch(i_this->mSubAction) { + case 0: + anm_init(i_this, 5, 3.0f, 2, 1.0f); + i_this->mSubAction = 1; + dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f)); + break; + case 1: + if (i_this->mpMorf->checkFrame(2.0f)) { + i_this->mSound.startCreatureSound(Z2SE_EN_NZ_BITE, 0, -1); + } + for (int i = 0; i < 8; i++) { + if ((data_8072C454[0] & stick_bit[i]) != 0) { + cVar4++; + } + } + if (cVar4 >= 3) { + daPy_getLinkPlayerActorClass()->onHeavyState(); + } + break; + } +} + +/* 8072A7C4-8072A8CC 000EC4 0108+00 1/1 0/0 0/0 .text damage_check__FP10e_nz_class */ +static void damage_check(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + dComIfGp_getPlayer(0); + if (i_this->field_0x6aa == 0) { + i_this->mStts.Move(); + if (i_this->mSph.ChkTgHit()) { + i_this->mAtInfo.mpCollider = i_this->mSph.GetTgHitObj(); + cc_at_check(a_this, &i_this->mAtInfo); + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_MIDNA_LOCK | AT_TYPE_10000000 | AT_TYPE_WOLF_CUT_TURN | AT_TYPE_WOLF_ATTACK)) { + i_this->field_0x6aa = 20; + } else { + i_this->field_0x6aa = 10; + } + + if (i_this->mAction == ACTION_STICK) { + a_this->current.angle.y = (i_this->field_0x6ac - 1) * 0x2000; + } else { + a_this->current.angle.y = i_this->mAtInfo.mHitDirection.y; + } + i_this->mAction = ACTION_DAMANGE; + i_this->mSubAction = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_NZ_V_DEATH, -1); + } + + if (a_this->health <= 1) { + a_this->health = 0; + i_this->mSph.SetTgHitMark(CcG_Tg_UNK_MARK_3); + } + } +} + +/* 8072A8CC-8072AA90 000FCC 01C4+00 1/1 0/0 0/0 .text e_nz_damage__FP10e_nz_class */ +static void e_nz_damage(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + i_this->field_0x6aa = 6; + switch (i_this->mSubAction) { + case 0: + anm_init(i_this, 4, 5.0f, 0, 1.0f); + i_this->mSubAction = 1; + a_this->speed.y = cM_rndF(10.0f) + 40.0f; + a_this->speedF = -30.0f; + i_this->field_0x6a2[0] = cM_rndF(5.0f) + 15.0f; + // fallthrough + case 1: + if (i_this->field_0x6a2[0] == 0) { + fopAcM_createDisappear(a_this, &a_this->eyePos, 6, 3, 0x27); + if (i_this->field_0x5b6 == 1) { + a_this->current = a_this->home; + a_this->old = a_this->current; + a_this->health = 10; + i_this->mAction = ACTION_NORMAL; + i_this->mSubAction = 0; + i_this->mMaterialAlpha = 0.0f; + if (i_this->field_0x6ac != 0) { + data_8072C454[0] &= ~stick_bit[i_this->field_0x6ac - 1]; + i_this->field_0x6ac = 0; + } + } else { + fopAcM_delete(a_this); + } + } + break; + } +} + +/* 8072AA90-8072AB68 001190 00D8+00 1/1 0/0 0/0 .text + * getPolyColor__FR13cBgS_PolyInfoiP8_GXColorP8_GXColorPUcPf */ +static BOOL getPolyColor(cBgS_PolyInfo& param_1, int param_2, _GXColor* param_3, + _GXColor* param_4, u8* param_5, f32* param_6) { + if (!dComIfG_Bgsp().ChkPolySafe(param_1)) { + return FALSE; + } + + if (param_2 == 0) { + dKy_pol_eff_prim_get(¶m_1, param_3); + dKy_pol_eff_env_get(¶m_1, param_4); + *param_5 = dKy_pol_eff_alpha_get(¶m_1); + *param_6 = dKy_pol_eff_ratio_get(¶m_1); + } else { + dKy_pol_eff2_prim_get(¶m_1, param_3); + dKy_pol_eff2_env_get(¶m_1, param_4); + *param_5 = dKy_pol_eff2_alpha_get(¶m_1); + *param_6 = dKy_pol_eff2_ratio_get(¶m_1); + } + + return TRUE; +} + +/* 8072AB68-8072B09C 001268 0534+00 1/1 0/0 0/0 .text action__FP10e_nz_class */ +static s8 action(e_nz_class* i_this) { + static u16 eff_id[4] = { + 0x01B8, + 0x01B9, + 0x01BA, + 0x01BB, + }; + + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + cXyz local_74; + cXyz local_80; + i_this->mPlayerDistance = fopAcM_searchPlayerDistance(a_this); + i_this->mPlayerAngleY = fopAcM_searchPlayerAngleY(a_this); + damage_check(i_this); + s8 action_result = 0; + s8 is_active = 0; + + switch (i_this->mAction) { + case ACTION_NORMAL: + e_nz_normal(i_this); + break; + case ACTION_DAMANGE: + e_nz_damage(i_this); + break; + case ACTION_ATTACK: + action_result = e_nz_attack(i_this); + is_active = 1; + break; + + case ACTION_STICK: + if (daPy_py_c::getMidnaActor()) { + daPy_py_c::getMidnaActor()->onRatBody(0); + } + e_nz_stick(i_this); + action_result = 3; + is_active = 1; + break; + } + + if (is_active) { + i_this->mSound.setLinkSearch(true); + } else { + i_this->mSound.setLinkSearch(false); + } + + cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 2, 0x2000); + cLib_addCalcAngleS2(&a_this->shape_angle.x, a_this->current.angle.x, 2, 0x2000); + cLib_addCalcAngleS2(&a_this->shape_angle.z, a_this->current.angle.z, 2, 0x2000); + + if (action_result == 0) { + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + local_74.x = 0.0f; + local_74.y = 0.0f; + local_74.z = a_this->speedF; + MtxPosition(&local_74, &local_80); + a_this->speed.x = local_80.x; + a_this->speed.z = local_80.z; + a_this->current.pos += a_this->speed * l_HIO.mBasicSize; + a_this->speed.y += a_this->gravity; + a_this->gravity = -8.0f; + if (a_this->speed.y < -120.0f) { + a_this->speed.y = -120.0f; + } + } else if (action_result == 1) { + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + cMtx_XrotM(*calc_mtx, a_this->current.angle.x); + local_74.x = 0.0f; + local_74.y = 0.0f; + local_74.z = a_this->speedF; + MtxPosition(&local_74, &a_this->speed); + a_this->current.pos += a_this->speed * l_HIO.mBasicSize; + } + + i_this->mAcch.CrrPos(dComIfG_Bgsp()); + + dBgS_ObjGndChk_Spl gnd_chk; + i_this->field_0x8c8 = 0; + local_74 = a_this->current.pos; + local_74.y += 200.0f; + gnd_chk.SetPos(&local_74); + if (a_this->current.pos.y <= dComIfG_Bgsp().GroundCross(&gnd_chk)) { + a_this->current.pos.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + a_this->speed.y = 0.0f; + i_this->field_0x8c8 = 1; + } + + if (i_this->field_0xa78) { + if (i_this->mPlayerDistance < 5000.0f) { + static cXyz sc(0.35f, 0.35f, 0.35f); + u8 alpha; + f32 ratio; + GXColor prim_color; + GXColor env_color; + if (getPolyColor(i_this->mAcch.m_gnd, 0, &prim_color, &env_color, &alpha, &ratio)) { + if (i_this->field_0x8c8 != 0) { + for (int i = 0; i < 4; i++) { + i_this->mParticleIds[i] = dComIfGp_particle_setColor( + i_this->mParticleIds[i], eff_id[i], &a_this->current.pos, + &a_this->tevStr, &prim_color, &env_color, ratio, alpha, + &a_this->shape_angle, &sc, NULL, -1, NULL); + } + i_this->mSound.startCreatureSound(Z2SE_EN_NZ_FN_WATER, 0, -1); + } else { + i_this->mParticle = dComIfGp_particle_setColor( + i_this->mParticle, 0xe6, &a_this->current.pos, &a_this->tevStr, + &prim_color, &env_color, ratio, alpha, &a_this->shape_angle, &sc, NULL, -1, + NULL); + JPABaseEmitter* pEmitter = + dComIfGp_particle_getEmitter(i_this->mParticle); + if (pEmitter != NULL) { + pEmitter->setRate(1.0f); + i_this->mSound.startCreatureSound(Z2SE_EN_NZ_FOOTNOTE, 0, -1); + } + } + } + } + i_this->field_0xa78 = 0; + } + + cXyz bind_scale(0.5f, 0.5f, 0.5f); + setMidnaBindEffect(a_this, &i_this->mSound, &a_this->eyePos, &bind_scale); + + return action_result; +} + +/* 8072B09C-8072B5D4 00179C 0538+00 2/1 0/0 0/0 .text daE_NZ_Execute__FP10e_nz_class */ +static int daE_NZ_Execute(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + + f32 alphaTarget = 0.0f; + f32 alphaStep = l_HIO.mVanishingAlphaSpeed; + if (daPy_py_c::checkNowWolfPowerUp()) { + if (i_this->field_0x6a2[3] == 0) { + alphaTarget = 255.0f; + alphaStep = l_HIO.mCurrentAlphaSpeed; + } + } else { + i_this->field_0x6a2[3] = l_HIO.mWaitTime; + } + + cLib_addCalc2(&i_this->mMaterialAlpha, alphaTarget, 1.0f, alphaStep); + + if (cDmrNowMidnaTalk() || dComIfGp_event_runCheck()) { + return 1; + } + + cXyz local_58; + cXyz local_64; + cXyz local_70; + + if (i_this->field_0x5b8 != 0) { + if (dComIfGs_isSwitch(i_this->field_0x5b8, fopAcM_GetRoomNo(a_this))) { + i_this->field_0x5b8 = 0; + } else { + return 1; + } + } + + i_this->field_0x698++; + + for (int i = 0; i < 4; i++) { + if (i_this->field_0x6a2[i] != 0) { + i_this->field_0x6a2[i]--; + } + } + + if (i_this->field_0x6aa != 0) { + i_this->field_0x6aa--; + } + + J3DModel* model = i_this->mpMorf->getModel(); + + if (i_this->mAction == ACTION_STICK || i_this->mAction == ACTION_ATTACK) { + daPy_py_c* player = daPy_getLinkPlayerActorClass(); + MtxP joint_mtx = player->getModelJointMtx(stick_d[i_this->field_0x6ac - 1].field_0x0); + MTXCopy(joint_mtx, *calc_mtx); + cMtx_YrotM(*calc_mtx, stick_d[i_this->field_0x6ac - 1].field_0x2); + cMtx_XrotM(*calc_mtx, stick_d[i_this->field_0x6ac - 1].field_0x4); + cMtx_ZrotM(*calc_mtx, stick_d[i_this->field_0x6ac - 1].field_0x6); + MtxTrans(0.0f, stick_d[i_this->field_0x6ac - 1].field_0x8, 0.0f, 1); + local_58.set(0.0f, 0.0f, 0.0f); + MtxPosition(&local_58, &i_this->field_0x5bc); + + if (i_this->mAction == ACTION_STICK) { + model->setBaseTRMtx(*calc_mtx); + a_this->current.pos = i_this->field_0x5bc; + } + } + + if (action(i_this) != 3) { + i_this->field_0x5d8 += i_this->field_0x5dc; + i_this->field_0x5dc -= 8.0f; + if (i_this->field_0x5d8 < 0.0f) { + i_this->field_0x5dc = 0.0f; + i_this->field_0x5d8 = 0.0f; + } + + mDoMtx_stack_c::transS(a_this->current.pos.x, + a_this->current.pos.y + i_this->field_0x5d8, + a_this->current.pos.z); + mDoMtx_stack_c::YrotM(a_this->shape_angle.y); + mDoMtx_stack_c::XrotM(a_this->shape_angle.x); + mDoMtx_stack_c::ZrotM(a_this->shape_angle.z); + mDoMtx_stack_c::scaleM(l_HIO.mBasicSize, l_HIO.mBasicSize, l_HIO.mBasicSize); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + } + + i_this->mpMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this))); + i_this->mpMorf->modelCalc(); + + MtxP joint_mtx = model->getAnmMtx(6); + cMtx_copy(joint_mtx, *calc_mtx); + local_58.set(0.0f, 0.0f, 0.0f); + MtxPosition(&local_58, &a_this->eyePos); + a_this->attention_info.position = a_this->eyePos; + a_this->attention_info.position.y += 40.0f; + local_58.set(0.0f, 0.0f, 0.0f); + MtxPosition(&local_58, &local_64); + + if (i_this->mMaterialAlpha < 1.0f) { + local_64.z += 10000.0f; + fopAcM_OffStatus(a_this, 0); + a_this->attention_info.flags = 0; + } else { + if (i_this->mAction == ACTION_STICK) { + i_this->mSph.SetTgType(0x40000002); + if ((i_this->field_0x698 & 0x20) != 0) { + dComIfGp_att_LookRequest(a_this, 400.0f,300.0f, -300.0f, 0x6000, 1); + } + fopAcM_OffStatus(a_this, 0); + a_this->attention_info.flags = 0; + } else { + i_this->mSph.SetTgType(0xd8fbfdff); + fopAcM_OnStatus(a_this, 0); + a_this->attention_info.flags = 4; + } + } + + i_this->mSph.SetC(local_64); + i_this->mSph.SetR(25.0f * l_HIO.mBasicSize); + dComIfG_Ccsp()->Set(&i_this->mSph); + return 1; +} + +/* 8072B5D4-8072B5DC 001CD4 0008+00 1/0 0/0 0/0 .text daE_NZ_IsDelete__FP10e_nz_class */ +static int daE_NZ_IsDelete(e_nz_class* i_this) { + return 1; +} + +/* 8072B5DC-8072B680 001CDC 00A4+00 1/0 0/0 0/0 .text daE_NZ_Delete__FP10e_nz_class */ +static int daE_NZ_Delete(e_nz_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->enemy; + fopAcM_GetID(i_this); + dComIfG_resDelete(&i_this->mPhase, "E_NZ"); + if (i_this->mIsHIOOwner) { + l_HIOInit = 0; + mDoHIO_DELETE_CHILD(l_HIO.mId); + } + + if (a_this->heap != NULL) { + i_this->mpMorf->stopZelAnime(); + } + + if (i_this->field_0x6ac != 0) { + data_8072C454[0] &= ~stick_bit[i_this->field_0x6ac - 1]; + i_this->field_0x6ac = 0; + } + return 1; +} + +/* 8072B680-8072B7C4 001D80 0144+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* a_this) { + e_nz_class* i_this = (e_nz_class*)a_this; + i_this->mpMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_NZ", 13), NULL, + NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_NZ", 10), + 2, 1.0f, 0, -1, &i_this->mSound, 0x80000, 0x11000084); + if (i_this->mpMorf == NULL || i_this->mpMorf->getModel() == NULL) { + return 0; + } + + MtxScale(0.0f, 0.0f, 0.0f, 0); + i_this->mpMorf->getModel()->setBaseTRMtx(*calc_mtx); + if (i_this->mInvModel.create(i_this->mpMorf->getModel(), 1) == 0) { + return 0; + } + return 1; +} + +/* 8072B7C4-8072BA74 001EC4 02B0+00 1/0 0/0 0/0 .text daE_NZ_Create__FP10fopAc_ac_c */ +static int daE_NZ_Create(fopAc_ac_c* a_this) { + e_nz_class* i_this = (e_nz_class*)a_this; + fopAcM_SetupActor(a_this, e_nz_class); + int phase = dComIfG_resLoad(&i_this->mPhase, "E_NZ"); + if (phase == cPhs_COMPLEATE_e) { + OS_REPORT("E_NZ PARAM %x\n", fopAcM_GetParam(a_this)); + i_this->field_0x5b6 = fopAcM_GetParam(a_this) & 0xff; + i_this->field_0x5b7 = (fopAcM_GetParam(a_this) & 0xff00) >> 8; + i_this->field_0x5b8 = (fopAcM_GetParam(a_this) & 0xff000000) >> 24; + OS_REPORT("E_NZ//////////////E_NZ SET 1 !!\n"); + + if (fopAcM_entrySolidHeap(a_this, useHeapInit, 0x17e0) == 0) { + OS_REPORT("//////////////E_NZ SET NON !!\n"); + return cPhs_ERROR_e; + } + + if (!l_HIOInit) { + i_this->mIsHIOOwner = 1; + l_HIOInit = true; + // Ghost Rat + l_HIO.mId = mDoHIO_CREATE_CHILD("幽霊ネズミ", &l_HIO); + } + fopAcM_SetMtx(a_this, i_this->mpMorf->getModel()->getBaseTRMtx()); + a_this->health = 10; + a_this->field_0x560 = 10; + i_this->mStts.Init(100, 0, a_this); + + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr + }; + + i_this->mSph.Set(cc_sph_src); + i_this->mSph.SetStts(&i_this->mStts); + i_this->mAcch.Set(fopAcM_GetPosition_p(a_this), fopAcM_GetOldPosition_p(a_this), a_this, 1, + &i_this->mAcchCir, fopAcM_GetSpeed_p(a_this), NULL, NULL); + i_this->mAcchCir.SetWall(30.0f, 30.0f); + i_this->mSound.init(&a_this->current.pos, &a_this->eyePos, 3, 1); + i_this->mSound.setEnemyName("E_nz"); + i_this->mAtInfo.mpSound = &i_this->mSound; + i_this->mAtInfo.mPowerType = 1; + i_this->field_0x698 = cM_rndF(65535.0f); + daE_NZ_Execute(i_this); + g_env_light.settingTevStruct(0, &(a_this->current).pos, &a_this->tevStr); + } + return phase; +} + +AUDIO_INSTANCES /* 8072C324-8072C344 -00001 0020+00 1/0 0/0 0/0 .data l_daE_NZ_Method */ static actor_method_class l_daE_NZ_Method = { - (process_method_func)daE_NZ_Create__FP10fopAc_ac_c, - (process_method_func)daE_NZ_Delete__FP10e_nz_class, - (process_method_func)daE_NZ_Execute__FP10e_nz_class, - (process_method_func)daE_NZ_IsDelete__FP10e_nz_class, - (process_method_func)daE_NZ_Draw__FP10e_nz_class, + (process_method_func)daE_NZ_Create, + (process_method_func)daE_NZ_Delete, + (process_method_func)daE_NZ_Execute, + (process_method_func)daE_NZ_IsDelete, + (process_method_func)daE_NZ_Draw, }; /* 8072C344-8072C374 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_NZ */ @@ -249,722 +771,4 @@ extern actor_process_profile_definition g_profile_E_NZ = { fopAc_CULLBOX_0_e, // cullType }; -/* 8072C374-8072C380 000128 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, -}; - -/* 8072C380-8072C38C 000134 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, -}; - -/* 8072C38C-8072C398 000140 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, -}; - -/* 8072C398-8072C3A4 00014C 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, -}; - -/* 8072C3A4-8072C3B0 000158 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, -}; - -/* 8072C3B0-8072C3D4 000164 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_8072BD14, - (void*)NULL, - (void*)NULL, - (void*)func_8072BD0C, -}; - -/* 8072C3D4-8072C3E0 000188 000C+00 2/2 0/0 0/0 .data __vt__12daE_NZ_HIO_c */ -SECTION_DATA extern void* __vt__12daE_NZ_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_NZ_HIO_cFv, -}; - -/* 807299EC-80729A3C 0000EC 0050+00 1/1 0/0 0/0 .text __ct__12daE_NZ_HIO_cFv */ -daE_NZ_HIO_c::daE_NZ_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C1C0-8072C1C4 000040 0004+00 1/1 0/0 0/0 .rodata @3828 */ -SECTION_RODATA static f32 const lit_3828 = -1.0f; -COMPILER_STRIP_GATE(0x8072C1C0, &lit_3828); - -/* 8072C240-8072C240 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8072C240 = "E_NZ"; -#pragma pop - -/* 80729A3C-80729AE8 00013C 00AC+00 4/4 0/0 0/0 .text anm_init__FP10e_nz_classifUcf */ -static void anm_init(e_nz_class* param_0, int param_1, f32 param_2, u8 param_3, f32 param_4) { - // NONMATCHING -} - -/* 80729AE8-80729B24 0001E8 003C+00 1/1 0/0 0/0 .text pl_check__FP10e_nz_classf */ -static void pl_check(e_nz_class* param_0, f32 param_1) { - // NONMATCHING -} - -/* 80729B24-80729C24 000224 0100+00 1/0 0/0 0/0 .text daE_NZ_Draw__FP10e_nz_class */ -static void daE_NZ_Draw(e_nz_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C1C4-8072C1C8 000044 0004+00 0/2 0/0 0/0 .rodata @3935 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3935 = 0.5f; -COMPILER_STRIP_GATE(0x8072C1C4, &lit_3935); -#pragma pop - -/* 8072C1C8-8072C1CC 000048 0004+00 0/3 0/0 0/0 .rodata @3936 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3936 = 3.0f; -COMPILER_STRIP_GATE(0x8072C1C8, &lit_3936); -#pragma pop - -/* 8072C1CC-8072C1D0 00004C 0004+00 1/2 0/0 0/0 .rodata @3937 */ -SECTION_RODATA static f32 const lit_3937 = 65535.0f; -COMPILER_STRIP_GATE(0x8072C1CC, &lit_3937); - -/* 8072C1D0-8072C1D4 000050 0004+00 0/1 0/0 0/0 .rodata @3938 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3938 = 7.0f; -COMPILER_STRIP_GATE(0x8072C1D0, &lit_3938); -#pragma pop - -/* 8072C1D4-8072C1D8 000054 0004+00 0/1 0/0 0/0 .rodata @3939 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3939 = 3000.0f; -COMPILER_STRIP_GATE(0x8072C1D4, &lit_3939); -#pragma pop - -/* 8072C1D8-8072C1DC 000058 0004+00 0/1 0/0 0/0 .rodata @3940 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3940 = 20.0f; -COMPILER_STRIP_GATE(0x8072C1D8, &lit_3940); -#pragma pop - -/* 8072C1DC-8072C1E0 00005C 0004+00 0/1 0/0 0/0 .rodata @3941 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3941 = 9.0f; -COMPILER_STRIP_GATE(0x8072C1DC, &lit_3941); -#pragma pop - -/* 8072C1E0-8072C1E4 000060 0004+00 0/2 0/0 0/0 .rodata @3942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3942 = 10.0f; -COMPILER_STRIP_GATE(0x8072C1E0, &lit_3942); -#pragma pop - -/* 8072C1E4-8072C1E8 000064 0004+00 0/2 0/0 0/0 .rodata @3943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3943 = 200.0f; -COMPILER_STRIP_GATE(0x8072C1E4, &lit_3943); -#pragma pop - -/* 8072C1E8-8072C1EC 000068 0004+00 0/2 0/0 0/0 .rodata @3944 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3944 = 50.0f; -COMPILER_STRIP_GATE(0x8072C1E8, &lit_3944); -#pragma pop - -/* 8072C1EC-8072C1F0 00006C 0004+00 0/1 0/0 0/0 .rodata @3945 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3945 = 500.0f; -COMPILER_STRIP_GATE(0x8072C1EC, &lit_3945); -#pragma pop - -/* 8072C1F0-8072C1F4 000070 0004+00 0/1 0/0 0/0 .rodata @3946 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3946 = 700.0f; -COMPILER_STRIP_GATE(0x8072C1F0, &lit_3946); -#pragma pop - -/* 8072C1F4-8072C1F8 000074 0004+00 0/2 0/0 0/0 .rodata @3947 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3947 = 400.0f; -COMPILER_STRIP_GATE(0x8072C1F4, &lit_3947); -#pragma pop - -/* 8072C1F8-8072C1FC 000078 0004+00 0/1 0/0 0/0 .rodata @3948 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3948 = 0.25f; -COMPILER_STRIP_GATE(0x8072C1F8, &lit_3948); -#pragma pop - -/* 8072C3E8-8072C3EC 000008 0001+03 1/1 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 8072C3EC-8072C3F0 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 8072C3F0-8072C3F4 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 8072C3F4-8072C3F8 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 8072C3F8-8072C3FC 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 8072C3FC-8072C400 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 8072C400-8072C404 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 8072C404-8072C408 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 8072C408-8072C40C 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 8072C40C-8072C410 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 8072C410-8072C414 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 8072C414-8072C418 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 8072C418-8072C41C 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 8072C41C-8072C420 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 8072C420-8072C424 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 8072C424-8072C428 -00001 0004+00 2/2 0/0 0/0 .bss None */ -/* 8072C424 0001+00 data_8072C424 @1009 */ -/* 8072C425 0003+00 data_8072C425 None */ -static u8 struct_8072C424[4]; - -/* 8072C428-8072C434 000048 000C+00 1/1 0/0 0/0 .bss @3805 */ -static u8 lit_3805[12]; - -/* 8072C434-8072C454 000054 0020+00 5/6 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[32]; - -/* 8072C454-8072C458 000074 0004+00 5/5 0/0 0/0 .bss None */ -static u8 data_8072C454[4]; - -/* 80729C24-8072A044 000324 0420+00 1/1 0/0 0/0 .text e_nz_normal__FP10e_nz_class */ -static void e_nz_normal(e_nz_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C1FC-8072C200 00007C 0004+00 0/2 0/0 0/0 .rodata @4088 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4088 = 5.0f; -COMPILER_STRIP_GATE(0x8072C1FC, &lit_4088); -#pragma pop - -/* 8072C200-8072C204 000080 0004+00 0/2 0/0 0/0 .rodata @4089 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4089 = 2.0f; -COMPILER_STRIP_GATE(0x8072C200, &lit_4089); -#pragma pop - -/* 8072A044-8072A680 000744 063C+00 1/1 0/0 0/0 .text e_nz_attack__FP10e_nz_class */ -static void e_nz_attack(e_nz_class* param_0) { - // NONMATCHING -} - -/* 8072A680-8072A7C4 000D80 0144+00 1/1 0/0 0/0 .text e_nz_stick__FP10e_nz_class */ -static void e_nz_stick(e_nz_class* param_0) { - // NONMATCHING -} - -/* 8072A7C4-8072A8CC 000EC4 0108+00 1/1 0/0 0/0 .text damage_check__FP10e_nz_class */ -static void damage_check(e_nz_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C204-8072C208 000084 0004+00 0/2 0/0 0/0 .rodata @4180 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4180 = 40.0f; -COMPILER_STRIP_GATE(0x8072C204, &lit_4180); -#pragma pop - -/* 8072C208-8072C20C 000088 0004+00 0/1 0/0 0/0 .rodata @4181 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4181 = -30.0f; -COMPILER_STRIP_GATE(0x8072C208, &lit_4181); -#pragma pop - -/* 8072C20C-8072C210 00008C 0004+00 0/1 0/0 0/0 .rodata @4182 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4182 = 15.0f; -COMPILER_STRIP_GATE(0x8072C20C, &lit_4182); -#pragma pop - -/* 8072A8CC-8072AA90 000FCC 01C4+00 1/1 0/0 0/0 .text e_nz_damage__FP10e_nz_class */ -static void e_nz_damage(e_nz_class* param_0) { - // NONMATCHING -} - -/* 8072AA90-8072AB68 001190 00D8+00 1/1 0/0 0/0 .text - * getPolyColor__FR13cBgS_PolyInfoiP8_GXColorP8_GXColorPUcPf */ -static void getPolyColor(cBgS_PolyInfo& param_0, int param_1, _GXColor* param_2, - _GXColor* param_3, u8* param_4, f32* param_5) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C210-8072C214 000090 0004+00 0/1 0/0 0/0 .rodata @4318 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4318 = -8.0f; -COMPILER_STRIP_GATE(0x8072C210, &lit_4318); -#pragma pop - -/* 8072C214-8072C218 000094 0004+00 0/1 0/0 0/0 .rodata @4319 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4319 = -120.0f; -COMPILER_STRIP_GATE(0x8072C214, &lit_4319); -#pragma pop - -/* 8072C218-8072C21C 000098 0004+00 0/1 0/0 0/0 .rodata @4320 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4320 = 5000.0f; -COMPILER_STRIP_GATE(0x8072C218, &lit_4320); -#pragma pop - -/* 8072C21C-8072C220 00009C 0004+00 0/1 0/0 0/0 .rodata @4321 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4321 = 7.0f / 20.0f; -COMPILER_STRIP_GATE(0x8072C21C, &lit_4321); -#pragma pop - -/* 8072C458-8072C468 000078 000C+04 0/1 0/0 0/0 .bss @4220 */ -#pragma push -#pragma force_active on -static u8 lit_4220[12 + 4 /* padding */]; -#pragma pop - -/* 8072C468-8072C474 000088 000C+00 0/1 0/0 0/0 .bss sc$4219 */ -#pragma push -#pragma force_active on -static u8 sc[12]; -#pragma pop - -/* 8072AB68-8072B09C 001268 0534+00 1/1 0/0 0/0 .text action__FP10e_nz_class */ -static void action(e_nz_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C220-8072C224 0000A0 0004+00 0/1 0/0 0/0 .rodata @4444 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4444 = 255.0f; -COMPILER_STRIP_GATE(0x8072C220, &lit_4444); -#pragma pop - -/* 8072C224-8072C228 0000A4 0004+00 0/1 0/0 0/0 .rodata @4445 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4445 = 8.0f; -COMPILER_STRIP_GATE(0x8072C224, &lit_4445); -#pragma pop - -/* 8072C228-8072C22C 0000A8 0004+00 0/1 0/0 0/0 .rodata @4446 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4446 = 10000.0f; -COMPILER_STRIP_GATE(0x8072C228, &lit_4446); -#pragma pop - -/* 8072C22C-8072C230 0000AC 0004+00 0/1 0/0 0/0 .rodata @4447 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4447 = 300.0f; -COMPILER_STRIP_GATE(0x8072C22C, &lit_4447); -#pragma pop - -/* 8072C230-8072C238 0000B0 0004+04 0/1 0/0 0/0 .rodata @4448 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4448[1 + 1 /* padding */] = { - -300.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x8072C230, &lit_4448); -#pragma pop - -/* 8072C238-8072C240 0000B8 0008+00 0/1 0/0 0/0 .rodata @4450 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4450[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8072C238, &lit_4450); -#pragma pop - -/* 8072B09C-8072B5D4 00179C 0538+00 2/1 0/0 0/0 .text daE_NZ_Execute__FP10e_nz_class */ -static void daE_NZ_Execute(e_nz_class* param_0) { - // NONMATCHING -} - -/* 8072B5D4-8072B5DC 001CD4 0008+00 1/0 0/0 0/0 .text daE_NZ_IsDelete__FP10e_nz_class */ -static bool daE_NZ_IsDelete(e_nz_class* param_0) { - return true; -} - -/* 8072B5DC-8072B680 001CDC 00A4+00 1/0 0/0 0/0 .text daE_NZ_Delete__FP10e_nz_class */ -static void daE_NZ_Delete(e_nz_class* param_0) { - // NONMATCHING -} - -/* 8072B680-8072B7C4 001D80 0144+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C240-8072C240 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8072C245 = "E_nz"; -#pragma pop - -/* 8072B7C4-8072BA74 001EC4 02B0+00 1/0 0/0 0/0 .text daE_NZ_Create__FP10fopAc_ac_c */ -static void daE_NZ_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8072BA74-8072BABC 002174 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 8072BABC-8072BB04 0021BC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 8072BB04-8072BB60 002204 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 8072BB60-8072BBD0 002260 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8072BBD0-8072BC40 0022D0 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8072BC40-8072BC88 002340 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 8072BC88-8072BCD0 002388 0048+00 2/1 0/0 0/0 .text __dt__12daE_NZ_HIO_cFv */ -daE_NZ_HIO_c::~daE_NZ_HIO_c() { - // NONMATCHING -} - -/* 8072BCD0-8072BD0C 0023D0 003C+00 0/0 1/0 0/0 .text __sinit_d_a_e_nz_cpp */ -void __sinit_d_a_e_nz_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8072BCD0, __sinit_d_a_e_nz_cpp); -#pragma pop - -/* 8072BD0C-8072BD14 00240C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8072BD0C() { - // NONMATCHING -} - -/* 8072BD14-8072BD1C 002414 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8072BD14() { - // NONMATCHING -} - -/* 8072C130-8072C16C 002830 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8072C474-8072C478 000094 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_8072C474[4]; -#pragma pop - -/* 8072C478-8072C47C 000098 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_8072C478[4]; -#pragma pop - -/* 8072C47C-8072C480 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C47C[4]; -#pragma pop - -/* 8072C480-8072C484 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C480[4]; -#pragma pop - -/* 8072C484-8072C488 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8072C484[4]; -#pragma pop - -/* 8072C488-8072C48C 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8072C488[4]; -#pragma pop - -/* 8072C48C-8072C490 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_8072C48C[4]; -#pragma pop - -/* 8072C490-8072C494 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8072C490[4]; -#pragma pop - -/* 8072C494-8072C498 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8072C494[4]; -#pragma pop - -/* 8072C498-8072C49C 0000B8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_8072C498[4]; -#pragma pop - -/* 8072C49C-8072C4A0 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C49C[4]; -#pragma pop - -/* 8072C4A0-8072C4A4 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C4A0[4]; -#pragma pop - -/* 8072C4A4-8072C4A8 0000C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C4A4[4]; -#pragma pop - -/* 8072C4A8-8072C4AC 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8072C4A8[4]; -#pragma pop - -/* 8072C4AC-8072C4B0 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8072C4AC[4]; -#pragma pop - -/* 8072C4B0-8072C4B4 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_8072C4B0[4]; -#pragma pop - -/* 8072C4B4-8072C4B8 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_8072C4B4[4]; -#pragma pop - -/* 8072C4B8-8072C4BC 0000D8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8072C4B8[4]; -#pragma pop - -/* 8072C4BC-8072C4C0 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_8072C4BC[4]; -#pragma pop - -/* 8072C4C0-8072C4C4 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C4C0[4]; -#pragma pop - -/* 8072C4C4-8072C4C8 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_8072C4C4[4]; -#pragma pop - -/* 8072C4C8-8072C4CC 0000E8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8072C4C8[4]; -#pragma pop - -/* 8072C4CC-8072C4D0 0000EC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8072C4CC[4]; -#pragma pop - -/* 8072C4D0-8072C4D4 0000F0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8072C4D0[4]; -#pragma pop - -/* 8072C4D4-8072C4D8 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_8072C4D4[4]; -#pragma pop - /* 8072C240-8072C240 0000C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */