diff --git a/configure.py b/configure.py index ea04f845bd9..83699d503c7 100755 --- a/configure.py +++ b/configure.py @@ -1673,7 +1673,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_e_kr"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_mb"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_md"), - ActorRel(NonMatching, "d_a_e_mf"), + ActorRel(Equivalent, "d_a_e_mf"), ActorRel(NonMatching, "d_a_e_mk"), ActorRel(NonMatching, "d_a_e_mk_bo"), ActorRel(NonMatching, "d_a_e_mm"), diff --git a/include/d/actor/d_a_e_dn.h b/include/d/actor/d_a_e_dn.h index 53c450ef66a..7e5472f77bb 100644 --- a/include/d/actor/d_a_e_dn.h +++ b/include/d/actor/d_a_e_dn.h @@ -1,5 +1,9 @@ #ifndef D_A_E_DN_H #define D_A_E_DN_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" +#include "d/d_jnt_col.h" #include "f_op/f_op_actor_mng.h" /** @@ -10,17 +14,154 @@ * @details * */ -class e_dn_class : public fopEn_enemy_c { +class e_dn_class { +public: /* 804EDE58 */ e_dn_class(); -private: - /* 0x5ac */ u8 field_0x5ac[0x110c - 0x5ac]; + + /* 0x0000 */ fopEn_enemy_c actor; + /* 0x05AC */ request_of_phase_process_class mPhase; + /* 0x05B4 */ s16 mMode; + /* 0x05B6 */ u8 field_0x5b6; + /* 0x05B7 */ u8 field_0x5b7; + /* 0x05B8 */ u8 field_0x5b8; + /* 0x05B9 */ u8 field_0x5b9; + /* 0x05BC */ cXyz field_0x5bc; + /* 0x05C8 */ cXyz field_0x5c8; + /* 0x05D4 */ s16 field_0x5d4; + /* 0x05D6 */ s16 field_0x5d6; + /* 0x05D8 */ s8 field_0x5d8; + /* 0x05DC */ mDoExt_McaMorfSO* mpModelMorf; + /* 0x05E0 */ int mAnmID; + /* 0x05E4 */ J3DModel* mpKnifeModel; + /* 0x05E8 */ Z2CreatureEnemy mSound; + /* 0x068C */ J3DModel* mpShieldModel; + /* 0x0690 */ J3DModel* mpSkullModel; + /* 0x0694 */ s8 field_0x694; + /* 0x0698 */ cXyz field_0x698; + /* 0x06A4 */ cXyz field_0x6a4; + /* 0x06B0 */ s16 field_0x6b0; + /* 0x06B2 */ s16 field_0x6b2; + /* 0x06B4 */ dJntCol_c mJntCol; + /* 0x06C4 */ s8 field_0x6c4; + /* 0x06C8 */ f32 field_0x6c8; + /* 0x06CC */ s16 field_0x6cc; + /* 0x06CE */ s16 mAction; + /* 0x06D0 */ f32 mPlayerDistance; + /* 0x06D4 */ s16 mYAngleToPlayer; + /* 0x06D6 */ s16 mXAngleToPlayer; + /* 0x06D8 */ f32 field_0x6d8; + /* 0x06DC */ u32 mShadowKey; + /* 0x06E0 */ s16 field_0x6e0[4]; + /* 0x06E8 */ s16 field_0x6e8; + /* 0x06EA */ s16 field_0x6ea; + /* 0x06EC */ s16 field_0x6ec; + /* 0x06EE */ s8 field_0x6ee; + /* 0x06EF */ s8 field_0x6ef; + /* 0x06F0 */ s8 field_0x6f0; + /* 0x06F1 */ s8 field_0x6f1; + /* 0x06F2 */ s8 field_0x6f2; + /* 0x06F3 */ s8 field_0x6f3; + /* 0x06F4 */ s8 field_0x6f4; + /* 0x06F5 */ u8 field_0x6f5; + /* 0x06F6 */ s16 field_0x6f6; + /* 0x06F8 */ s16 field_0x6f8; + /* 0x06FA */ s16 field_0x6fa; + /* 0x06FC */ s16 field_0x6fc; + /* 0x06FE */ s16 field_0x6fe; + /* 0x0700 */ s8 field_0x700; + /* 0x0701 */ s8 field_0x701; + /* 0x0704 */ f32 field_0x704; + /* 0x0708 */ f32 field_0x708; + /* 0x070C */ s16 field_0x70c; + /* 0x070E */ s16 field_0x70e; + /* 0x0710 */ s8 field_0x710; + /* 0x0711 */ u8 field_0x711[15]; + /* 0x0720 */ f32 field_0x720; + /* 0x0724 */ csXyz field_0x724; + /* 0x072A */ csXyz field_0x72a; + /* 0x0730 */ csXyz field_0x730; + /* 0x0736 */ s8 field_0x736; + /* 0x0737 */ s8 field_0x737; + /* 0x0738 */ cXyz field_0x738; + /* 0x0744 */ int field_0x744; + /* 0x0748 */ u8 field_0x748[4]; + /* 0x074C */ f32 field_0x74c; + /* 0x0750 */ s16 field_0x750; + /* 0x0754 */ f32 field_0x754; + /* 0x0758 */ s16 field_0x758; + /* 0x075C */ f32 field_0x75c; + /* 0x0760 */ s16 field_0x760; + /* 0x0762 */ csXyz field_0x762[11]; + /* 0x07A4 */ csXyz field_0x7a4[11]; + /* 0x07E8 */ f32 field_0x7e8; + /* 0x07EC */ s16 field_0x7ec[2]; + /* 0x07F0 */ s16 field_0x7f0; + /* 0x07F2 */ s16 field_0x7f2; + /* 0x07F4 */ s16 field_0x7f4; + /* 0x07F6 */ s16 field_0x7f6; + /* 0x07FA */ s16 field_0x7f8; + /* 0x07FA */ s16 field_0x7fa; + /* 0x07FC */ s16 field_0x7fc[3]; + /* 0x0802 */ s16 field_0x802[4]; + /* 0x080A */ s16 field_0x80a; + /* 0x080C */ s16 field_0x80c; + /* 0x080E */ csXyz field_0x80e[4]; + /* 0x0826 */ s16 field_0x826; + /* 0x0828 */ s16 field_0x828; + /* 0x082A */ s16 field_0x82a; + /* 0x082C */ s16 field_0x82c; + /* 0x082E */ s8 field_0x82e; + /* 0x082F */ u8 field_0x82f; + /* 0x0830 */ s16 field_0x830; + /* 0x0832 */ s16 field_0x832; + /* 0x0834 */ u8 field_0x834[2]; + /* 0x0836 */ csXyz field_0x836; + /* 0x083C */ f32 field_0x83c; + /* 0x0840 */ s16 field_0x840; + /* 0x0842 */ s16 field_0x842; + /* 0x0844 */ dBgS_AcchCir mAcchCir; + /* 0x0884 */ dBgS_ObjAcch mObjAcch; + /* 0x0A5C */ f32 field_0xa5c; + /* 0x0A60 */ dCcD_Stts mStts; + /* 0x0A9C */ dCcD_Sph field_0xa9c[3]; + /* 0x0E44 */ dCcD_Sph field_0xe44; + /* 0x0F7C */ dCcD_Sph field_0xf7c; + /* 0x10B4 */ dCcU_AtInfo mAtInfo; + /* 0x10D8 */ u8 field_0x10d8; + /* 0x10D9 */ u8 field_0x10d9; + /* 0x10DA */ s8 field_0x10da; + /* 0x10DB */ u8 field_0x10db; + /* 0x10DC */ u32 field_0x10dc; + /* 0x10E0 */ u32 field_0x10e0; + /* 0x10E4 */ s8 field_0x10e4; + /* 0x10E8 */ u32 field_0x10e8[2]; + /* 0x10F0 */ u32 field_0x10f0[2]; + /* 0x10F8 */ u32 field_0x10f8; + /* 0x10FC */ u32 field_0x10fc; + /* 0x1100 */ u8 field_0x1100[12]; }; STATIC_ASSERT(sizeof(e_dn_class) == 0x110c); -class daE_DN_HIO_c { +class daE_DN_HIO_c : public JORReflexible { +public: /* 804E51AC */ daE_DN_HIO_c(); - /* 804EE39C */ ~daE_DN_HIO_c(); + /* 804EE39C */ virtual ~daE_DN_HIO_c() {} + + void genMessage(JORMContext*); + + /* 0x04 */ s8 field_0x4; + /* 0x08 */ f32 model_size; // 基本サイズ + /* 0x0C */ f32 movement_speed; // 移動速度 + /* 0x10 */ f32 dash_speed; // 突進速度 + /* 0x14 */ f32 battle_init_range; // 戦闘開始範囲 + /* 0x18 */ f32 attack_init_range; // 攻撃開始範囲 + /* 0x1C */ s16 field_0x1c; // 防御静止間 + /* 0x1E */ s16 field_0x1e; // 魂抜間 弱 + /* 0x20 */ s16 field_0x20; // 魂抜間 強 + /* 0x22 */ u8 field_0x22; + /* 0x23 */ u8 invulnerable; // 不死身 + /* 0x24 */ u8 field_0x24; // 学習なし }; diff --git a/include/d/actor/d_a_e_mf.h b/include/d/actor/d_a_e_mf.h index f1355f2134f..d75a115010c 100644 --- a/include/d/actor/d_a_e_mf.h +++ b/include/d/actor/d_a_e_mf.h @@ -1,5 +1,9 @@ #ifndef D_A_E_MF_H #define D_A_E_MF_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" +#include "d/d_jnt_col.h" #include "f_op/f_op_actor_mng.h" /** @@ -10,17 +14,147 @@ * @details * */ -class e_mf_class : public fopEn_enemy_c { +class e_mf_class { +public: /* 80712F20 */ e_mf_class(); -private: - /* 0x5ac */ u8 field_0x5ac[0x10ec - 0x5ac]; + + /* 0x0000 */ fopEn_enemy_c actor; + /* 0x05AC */ request_of_phase_process_class mPhase; + /* 0x05B4 */ s16 field_0x5b4; + /* 0x05B6 */ u8 field_0x5b6; + /* 0x05B7 */ u8 field_0x5b7; + /* 0x05B8 */ u8 field_0x5b8; + /* 0x05B9 */ u8 field_0x5b9; + /* 0x05BC */ cXyz field_0x5bc; + /* 0x05C8 */ cXyz field_0x5c8; + /* 0x05D4 */ s16 field_0x5d4; + /* 0x05D6 */ s16 field_0x5d6; + /* 0x05D8 */ s8 field_0x5d8; + /* 0x05DC */ mDoExt_McaMorfSO* mpModelMorf; + /* 0x05E0 */ int mAnmID; + /* 0x05E4 */ J3DModel* mpAxeModel; + /* 0x05E8 */ Z2CreatureEnemy mSound; + /* 0x068C */ J3DModel* mpShieldModel; + /* 0x0690 */ u8 field_0x690[4]; + /* 0x0694 */ dJntCol_c mJntCol; + /* 0x06A4 */ s8 field_0x6a4; + /* 0x06A8 */ f32 field_0x6a8; + /* 0x06AC */ s16 field_0x6ac; + /* 0x06AE */ s16 mAction; + /* 0x06B0 */ f32 mPlayerDistance; + /* 0x06B4 */ s16 mYAngleToPlayer; + /* 0x06B6 */ s16 mXAngleToPlayer; + /* 0x06B8 */ f32 field_0x6b8; + /* 0x06BC */ u32 mShadowKey; + /* 0x06C0 */ s16 field_0x6c0[4]; + /* 0x06C8 */ s16 field_0x6c8; + /* 0x06CA */ s16 field_0x6ca; + /* 0x06CC */ s16 field_0x6cc; + /* 0x06CE */ s8 field_0x6ce; + /* 0x06CF */ s8 field_0x6cf; + /* 0x06D0 */ s8 field_0x6d0; + /* 0x06D1 */ s8 field_0x6d1; + /* 0x06D2 */ s8 field_0x6d2; + /* 0x06D3 */ s8 field_0x6d3; + /* 0x06D4 */ s8 field_0x6d4; + /* 0x06D5 */ u8 field_0x6d5; + /* 0x06D6 */ s16 field_0x6d6; + /* 0x06D8 */ s16 field_0x6d8; + /* 0x06DA */ s16 field_0x6da; + /* 0x06DC */ s16 field_0x6dc; + /* 0x06DE */ s16 field_0x6de; + /* 0x06E0 */ s8 field_0x6e0; + /* 0x06E1 */ s8 field_0x6e1; + /* 0x06E4 */ f32 field_0x6e4; + /* 0x06E8 */ f32 field_0x6e8; + /* 0x06EC */ s16 field_0x6ec; + /* 0x06EE */ s16 field_0x6ee; + /* 0x06F0 */ s8 field_0x6f0; + /* 0x06F1 */ u8 field_0x6f1[0x700 - 0x6f1]; + /* 0x0700 */ f32 field_0x700; + /* 0x0704 */ csXyz field_0x704; + /* 0x070A */ csXyz field_0x70a; + /* 0x0710 */ csXyz field_0x710; + /* 0x0716 */ s8 field_0x716; + /* 0x0717 */ s8 field_0x717; + /* 0x0718 */ cXyz field_0x718; + /* 0x0724 */ u32 field_0x724; + /* 0x0728 */ u8 field_0x728; + /* 0x072C */ f32 field_0x72c; + /* 0x0730 */ s16 field_0x730; + /* 0x0734 */ f32 field_0x734; + /* 0x0738 */ s16 field_0x738; + /* 0x073C */ f32 field_0x73c; + /* 0x0740 */ s16 field_0x740; + /* 0x0742 */ csXyz field_0x742[11]; + /* 0x0784 */ csXyz field_0x784[11]; + /* 0x07C8 */ f32 field_0x7c8; + /* 0x07CC */ s16 field_0x7cc[2]; + /* 0x07D0 */ s16 field_0x7d0; + /* 0x07D2 */ s16 field_0x7d2; + /* 0x07D4 */ s16 field_0x7d4; + /* 0x07D6 */ s16 field_0x7d6; + /* 0x07D8 */ s16 field_0x7d8; + /* 0x07DA */ s16 field_0x7da; + /* 0x07DC */ s16 field_0x7dc[3]; + /* 0x07E2 */ s16 field_0x7e2[4]; + /* 0x07EA */ s16 field_0x7ea; + /* 0x07EC */ s16 field_0x7ec; + /* 0x07EE */ csXyz field_0x7ee[4]; + /* 0x0806 */ s16 field_0x806; + /* 0x0808 */ s16 field_0x808; + /* 0x080A */ s16 field_0x80a; + /* 0x080C */ s16 field_0x80c; + /* 0x080E */ s8 field_0x80e; + /* 0x0810 */ s16 field_0x810; + /* 0x0812 */ s16 field_0x812; + /* 0x0814 */ u8 field_0x814[2]; + /* 0x0816 */ csXyz field_0x816; + /* 0x081C */ f32 field_0x81c; + /* 0x0820 */ s16 field_0x820; + /* 0x0822 */ s16 field_0x822; + /* 0x0824 */ dBgS_AcchCir mAcchCir; + /* 0x0864 */ dBgS_ObjAcch mObjAcch; + /* 0x0A3C */ f32 field_0xa3c; + /* 0x0A40 */ dCcD_Stts mStts; + /* 0x0A7C */ dCcD_Sph field_0xa7c[3]; + /* 0x0E24 */ dCcD_Sph field_0xe24; + /* 0x0F5C */ dCcD_Sph field_0xf5c; + /* 0x1094 */ dCcU_AtInfo mAtInfo; + /* 0x10B8 */ u8 field_0x10b8; + /* 0x10B9 */ u8 field_0x10b9; + /* 0x10BA */ s8 field_0x10ba; + /* 0x10BB */ u8 field_0x10bb; + /* 0x10BC */ u32 field_0x10bc; + /* 0x10C0 */ u32 field_0x10c0; + /* 0x10C4 */ s8 field_0x10c4; + /* 0x10C8 */ u32 field_0x10c8[2]; + /* 0x10D0 */ u32 field_0x10d0[2]; + /* 0x10D8 */ u8 field_0x10d8[0x10e4 - 0x10d8]; + /* 0x10E4 */ u32 field_0x10e4; + /* 0x10E8 */ u32 field_0x10e8; }; STATIC_ASSERT(sizeof(e_mf_class) == 0x10ec); -class daE_MF_HIO_c { +class daE_MF_HIO_c : public JORReflexible { +public: /* 8070A70C */ daE_MF_HIO_c(); - /* 80713464 */ ~daE_MF_HIO_c(); + /* 80713464 */ virtual ~daE_MF_HIO_c() {} + + void genMessage(JORMContext*); + + /* 0x04 */ s8 field_0x4; + /* 0x08 */ f32 model_size; // 基本サイズ + /* 0x0C */ f32 movement_speed; // 移動速度 + /* 0x10 */ f32 dash_speed; // 突進速度 + /* 0x14 */ f32 battle_init_range; // 戦闘開始範囲 + /* 0x18 */ f32 attack_init_range; // 攻撃開始範囲 + /* 0x1C */ s16 field_0x1c; // 防御静止間 + /* 0x1E */ s16 field_0x1e; // 魂抜間 弱 + /* 0x20 */ s16 field_0x20; // 魂抜間 強 + /* 0x22 */ u8 field_0x22; + /* 0x23 */ u8 invulnerable; // 不死身 }; diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index dda4c80f16e..3fecb3fcd84 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -265,6 +265,7 @@ public: bool checkWolfDownPullFlg() const { return mFlags & 0x10; } bool checkDownFlg() const { return mFlags & 0x1; } bool checkCutDownHitFlg() const { return mFlags & 0x2; } + bool checkWolfDownStartFlg() const { return mFlags & 0x4; } bool checkDeadFlg() const { return mFlags & 0x8; } bool checkThrowMode(u8 param_1) const { return mThrowMode & param_1; } diff --git a/include/f_op/f_op_kankyo_mng.h b/include/f_op/f_op_kankyo_mng.h index fbb09287969..975c1d2028f 100644 --- a/include/f_op/f_op_kankyo_mng.h +++ b/include/f_op/f_op_kankyo_mng.h @@ -20,6 +20,7 @@ fpc_ProcID fopKyM_Create(s16 i_procName, fopKyM_CreateFunc i_createFunc, void* i base_process_class* fopKyM_fastCreate(s16 i_procName, int i_param, cXyz* i_pos, cXyz* i_scale, fopKyM_CreateFunc i_createFunc); fpc_ProcID fopKyM_createWpillar(cXyz const* i_pos, f32 scale, int i_param); +fpc_ProcID fopKyM_createMpillar(cXyz const* i_pos, f32 i_size); inline fopKyM_prm_class* fopKyM_GetAppend(void* i_process) { return (fopKyM_prm_class*)fpcM_GetAppend(i_process); diff --git a/src/d/actor/d_a_e_dn.cpp b/src/d/actor/d_a_e_dn.cpp index ae56afc5e11..355ea168387 100644 --- a/src/d/actor/d_a_e_dn.cpp +++ b/src/d/actor/d_a_e_dn.cpp @@ -5,531 +5,3449 @@ #include "d/actor/d_a_e_dn.h" #include "d/d_cc_d.h" -#include "dol2asm.h" UNK_REL_DATA; +#include "d/d_bomb.h" +#include "f_op/f_op_kankyo_mng.h" +#include "d/actor/d_a_player.h" +#include "d/actor/d_a_horse.h" #include "f_op/f_op_actor_enemy.h" +#include "Z2AudioLib/Z2Instances.h" -// -// Forward References: -// - -extern "C" void __ct__12daE_DN_HIO_cFv(); -extern "C" static void dn_disappear__FP10e_dn_class(); -extern "C" static void anm_init__FP10e_dn_classifUcf(); -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" static void daE_DN_Draw__FP10e_dn_class(); -extern "C" static void other_bg_check__FP10e_dn_classP10fopAc_ac_c(); -extern "C" static void other_bg_check2__FP10e_dn_classP4cXyz(); -extern "C" static void s_b_sub__FPvPv(); -extern "C" static void search_bomb__FP10e_dn_classi(); -extern "C" static void bomb_view_check__FP10e_dn_class(); -extern "C" static void bomb_check__FP10e_dn_class(); -extern "C" static void player_way_check__FP10e_dn_class(); -extern "C" static void pl_check__FP10e_dn_classfs(); -extern "C" static void move_gake_check__FP10e_dn_classfSc(); -extern "C" static void jump_pos_check__FP10e_dn_classP4cXyz(); -extern "C" static void e_dn_stay__FP10e_dn_class(); -extern "C" static void e_dn_otoreac__FP10e_dn_class(); -extern "C" static void e_dn_bomb_action__FP10e_dn_class(); -extern "C" static void e_dn_normal__FP10e_dn_class(); -extern "C" static void e_dn_drawback__FP10e_dn_class(); -extern "C" static void e_dn_wolfbite__FP10e_dn_class(); -extern "C" static void way_check__FP10e_dn_class(); -extern "C" static void shot_s_sub__FPvPv(); -extern "C" static void e_dn_fight_run__FP10e_dn_class(); -extern "C" static void e_dn_jump__FP10e_dn_class(); -extern "C" static void e_dn_gakejump__FP10e_dn_class(); -extern "C" static void at_hit_check__FP10e_dn_class(); -extern "C" static void e_dn_attack_0__FP10e_dn_class(); -extern "C" static void e_dn_attack__FP10e_dn_class(); -extern "C" static void tail_eff_set__FP10e_dn_class(); -extern "C" static void e_dn_tail_attack__FP10e_dn_class(); -extern "C" static void e_dn_guard__FP10e_dn_class(); -extern "C" static void e_dn_s_damage__FP10e_dn_class(); -extern "C" static void kado_check__FP10e_dn_class(); -extern "C" static void body_gake__FP10e_dn_class(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" static void e_dn_damage__FP10e_dn_class(); -extern "C" static void e_dn_backdrop__FP10e_dn_class(); -extern "C" static void e_dn_water__FP10e_dn_class(); -extern "C" static void e_dn_reg__FP10e_dn_class(); -extern "C" static void wolfkick_damage__FP10e_dn_class(); -extern "C" static void big_damage__FP10e_dn_class(); -extern "C" static void small_damage__FP10e_dn_class(); -extern "C" static void damage_check__FP10e_dn_class(); -extern "C" static void action__FP10e_dn_class(); -extern "C" static void anm_se_set__FP10e_dn_class(); -extern "C" static void daE_DN_Execute__FP10e_dn_class(); -extern "C" static bool daE_DN_IsDelete__FP10e_dn_class(); -extern "C" static void daE_DN_Delete__FP10e_dn_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daE_DN_Create__FP10fopAc_ac_c(); -extern "C" void __ct__10e_dn_classFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daE_DN_HIO_cFv(); -extern "C" void __sinit_d_a_e_dn_cpp(); -extern "C" static void func_804EE420(); -extern "C" static void func_804EE428(); -extern "C" static void func_804EE430(); -extern "C" static void func_804EE438(); -extern "C" static void func_804EE440(); -extern "C" void __dt__5csXyzFv(); -extern "C" extern char const* const d_a_e_dn__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 mDoExt_modelUpdateDL__FP8J3DModel(); -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 entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -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 fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_getTalkEventPartner__FPC10fopAc_ac_c(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void fopAcM_otoCheck__FPC10fopAc_ac_cf(); -extern "C" void fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_wayBgCheck__FPC10fopAc_ac_cff(); -extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -extern "C" void fopKyM_createMpillar__FPC4cXyzf(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void checkStateCarry__7dBomb_cFv(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void __ct__9dJntCol_cFv(); -extern "C" void init__9dJntCol_cFP10fopAc_ac_cPC13dJntColData_cP8J3DModeli(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void addReal__21dDlst_shadowControl_cFUlP8J3DModel(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_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__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void __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 __dt__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 GetCoHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void StartCAt__8dCcD_SphFR4cXyz(); -extern "C" void MoveCAt__8dCcD_SphFR4cXyz(); -extern "C" void cc_pl_cut_bit_get__Fv(); -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_Sound_set__F4cXyziUii(); -extern "C" void dKy_Sound_get__Fv(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC3Vec(); -extern "C" void 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_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void func_802807E0(); -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 __construct_array(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -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 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 804EE8D8-804EE8DC 00002C 0004+00 0/2 0/0 0/0 .rodata @3810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3810 = 11.0f / 10.0f; -COMPILER_STRIP_GATE(0x804EE8D8, &lit_3810); -#pragma pop - -/* 804EE8DC-804EE8E0 000030 0004+00 0/1 0/0 0/0 .rodata @3811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3811 = 7.5f; -COMPILER_STRIP_GATE(0x804EE8DC, &lit_3811); -#pragma pop - -/* 804EE8E0-804EE8E4 000034 0004+00 1/4 0/0 0/0 .rodata @3812 */ -SECTION_RODATA static f32 const lit_3812 = 25.0f; -COMPILER_STRIP_GATE(0x804EE8E0, &lit_3812); - -/* 804EE8E4-804EE8E8 000038 0004+00 0/5 0/0 0/0 .rodata @3813 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3813 = 300.0f; -COMPILER_STRIP_GATE(0x804EE8E4, &lit_3813); -#pragma pop - -/* 804EE8E8-804EE8EC 00003C 0004+00 0/1 0/0 0/0 .rodata @3814 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3814 = 350.0f; -COMPILER_STRIP_GATE(0x804EE8E8, &lit_3814); -#pragma pop - -/* 804EEA78-804EEAA4 -00001 002C+00 1/1 0/0 0/0 .data @4546 */ -SECTION_DATA static void* lit_4546[11] = { - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x4C), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x78), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x158), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x1AC), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x230), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x280), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x2D4), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x330), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x3BC), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x40C), - (void*)(((char*)e_dn_stay__FP10e_dn_class) + 0x3F8), +enum Action { + /* 0x00 */ ACTION_NORMAL = 0, + /* 0x03 */ ACTION_FIGHT_RUN = 3, + /* 0x04 */ ACTION_ATTACK_0 = 4, + /* 0x05 */ ACTION_ATTACK = 5, + /* 0x06 */ ACTION_TAIL_ATTACK = 6, + /* 0x07 */ ACTION_GUARD = 7, + /* 0x08 */ ACTION_JUMP = 8, + /* 0x09 */ ACTION_STAY = 9, + /* 0x0A */ ACTION_OTOREAC = 10, + /* 0x0B */ ACTION_BOMB_ACTION = 11, + /* 0x0C */ ACTION_DRAWBACK = 12, + /* 0x0D */ ACTION_WOLFBITE = 13, + /* 0x14 */ ACTION_S_DAMAGE = 20, + /* 0x15 */ ACTION_DAMAGE = 21, + /* 0x17 */ ACTION_BACKDROP = 23, + /* 0x18 */ ACTION_WATER = 24, + /* 0x19 */ ACTION_GAKEJUMP = 25, + /* 0x3C */ ACTION_REG = 60, }; -/* 804EEAA4-804EEAD4 -00001 0030+00 1/1 0/0 0/0 .data @4719 */ -SECTION_DATA static void* lit_4719[12] = { - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x98), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0xE4), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x11C), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x15C), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x1A8), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x2A0), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x4A4), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x4A4), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x4A4), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x4A4), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x310), - (void*)(((char*)e_dn_bomb_action__FP10e_dn_class) + 0x3D0), +enum Animation { + /* 0x04 */ ANM_ATTACK_TAIL_01 = 4, + /* 0x05 */ ANM_ATTACK_TAIL_02, + /* 0x06 */ ANM_ATTACK_TAIL_03, + /* 0x07 */ ANM_ATTACK_00, + /* 0x08 */ ANM_ATTACK_01, + /* 0x09 */ ANM_BLOWNOFF, + /* 0x0A */ ANM_BRUSH_LEFT_UP, + /* 0x0B */ ANM_BRUSH_RIGHT_UP, + /* 0x0C */ ANM_DAMAGE_W, + /* 0x0D */ ANM_DIE_LEFT, + /* 0x0E */ ANM_DIE_LEFT_UP, + /* 0x0F */ ANM_DIE_RIGHT, + /* 0x10 */ ANM_DIE_RIGHT_UP, + /* 0x11 */ ANM_DIE_W, + /* 0x12 */ ANM_DRAWBACK, + /* 0x13 */ ANM_DROWNED_A, + /* 0x14 */ ANM_DROWNED_B, + /* 0x15 */ ANM_FIND, + /* 0x16 */ ANM_GUARD, + /* 0x17 */ ANM_HANGED, + /* 0x18 */ ANM_HANGED_DAMAGE, + /* 0x19 */ ANM_HANGED_BRUSH, + /* 0x1A */ ANM_HANGED_WAIT, + /* 0x1B */ ANM_JUMP_A, + /* 0x1C */ ANM_JUMP_B, + /* 0x1D */ ANM_JUMP_C, + /* 0x1E */ ANM_RUN, + /* 0x1F */ ANM_WAIT_01, + /* 0x20 */ ANM_WAIT_02, + /* 0x21 */ ANM_WAIT_03, + /* 0x22 */ ANM_WAIT_04, + /* 0x23 */ ANM_WALK, }; -/* 804EEAD4-804EEAF8 -00001 0024+00 1/1 0/0 0/0 .data @5544 */ -SECTION_DATA static void* lit_5544[9] = { - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x50), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x88), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x1E0), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x1E0), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x1E0), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0xB8), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0xFC), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x150), - (void*)(((char*)e_dn_guard__FP10e_dn_class) + 0x1A4), +/* 804E51AC-804E5220 0000EC 0074+00 1/1 0/0 0/0 .text __ct__12daE_DN_HIO_cFv */ +daE_DN_HIO_c::daE_DN_HIO_c() { + field_0x4 = -1; + model_size = 1.1f; + movement_speed = 7.5f; + dash_speed = 25.0f; + battle_init_range = 300.0f; + attack_init_range = 350.0f; + field_0x1c = 3; + field_0x1e = 40; + field_0x20 = 80; + field_0x22 = 1; + invulnerable = 0; + field_0x24 = 0; +} + +/* 804E5220-804E52D0 000160 00B0+00 2/2 0/0 0/0 .text dn_disappear__FP10e_dn_class */ +static void dn_disappear(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp1c, sp28; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp1c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp1c, &sp28); + + fopAcM_createDisappear(a_this, &sp28, 13, 0, 21); + fopAcM_delete(a_this); + + int swBit = fopAcM_GetParam(a_this) >> 24; + if (swBit != 0xFF) { + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(a_this)); + } +} + +/* 804E52D0-804E537C 000210 00AC+00 18/18 0/0 0/0 .text anm_init__FP10e_dn_classifUcf */ +static void anm_init(e_dn_class* i_this, int i_anmID, f32 i_morf, u8 i_attr, f32 i_rate) { + i_this->mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_dn", i_anmID), i_attr, i_morf, + i_rate, 0.0f, -1.0f); + i_this->mAnmID = i_anmID; +} + +/* 804E537C-804E5838 0002BC 04BC+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ +static int nodeCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + int jointNo = i_joint->getJntNo(); + J3DModel* model = j3dSys.getModel(); + e_dn_class* i_this = (e_dn_class*)model->getUserArea(); + if (i_this != NULL) { + MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); + + if (jointNo != 0) { + if (jointNo == 22) { + cMtx_YrotM(*calc_mtx, i_this->field_0x832); + cMtx_ZrotM(*calc_mtx, i_this->field_0x7f0 + (i_this->field_0x830 - i_this->field_0x762[2].x)); + } else if (jointNo == 23) { + cMtx_YrotM(*calc_mtx, i_this->field_0x7fa); + } else if (jointNo == 24) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x7fc[0]); + } else if (jointNo == 27) { + cMtx_YrotM(*calc_mtx, i_this->field_0x7fc[1]); + } else if (jointNo == 28) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x7fc[2]); + } else if (jointNo == 2) { + cMtx_YrotM(*calc_mtx, (i_this->field_0x6fa / 2) + (i_this->field_0x762[1].y + - i_this->field_0x6f6)); + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[1].x + i_this->field_0x7ec[1]); + } else if (jointNo == 3 || jointNo == 4) { + cMtx_YrotM(*calc_mtx, i_this->field_0x762[0].y + (i_this->field_0x6fa - i_this->field_0x6f6)); + cMtx_ZrotM(*calc_mtx, i_this->field_0x7ec[0] + (i_this->field_0x762[0].x - i_this->field_0x6f8)); + } else if (jointNo == 11) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[3].y + i_this->field_0x7f2); + } else if (jointNo == 12) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[4].y + i_this->field_0x7f4); + } else if (jointNo == 17) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[5].y + i_this->field_0x7f6); + } else if (jointNo == 18) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[6].y + i_this->field_0x7f8); + } else if (jointNo >= 31 && jointNo <= 34) { + cMtx_YrotM(*calc_mtx, i_this->field_0x762[jointNo - 2].x + i_this->field_0x826); + cMtx_ZrotM(*calc_mtx, i_this->field_0x762[jointNo - 3].z); + } + } + + if (i_this->field_0x80a != 0) { + if ((jointNo & 1) != 0) { + cMtx_YrotM(*calc_mtx, i_this->field_0x80a); + } else if ((jointNo & 2) != 0) { + cMtx_XrotM(*calc_mtx, i_this->field_0x80a); + } else if ((jointNo & 4) != 0) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x80a); + } + } + + model->setAnmMtx(jointNo, *calc_mtx); + MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); + if (jointNo == 0) { + MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); + cMtx_YrotM(*calc_mtx, 0); + cMtx_XrotM(*calc_mtx, 0); + cMtx_ZrotM(*calc_mtx, 0); + model->setAnmMtx(jointNo, *calc_mtx); + MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); + } + + if (jointNo == 0) { + MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); + cMtx_YrotM(*calc_mtx, 0); + cMtx_XrotM(*calc_mtx, 0); + cMtx_ZrotM(*calc_mtx, 0); + model->setAnmMtx(jointNo, *calc_mtx); + MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); + } + } + } + + return 1; +} + +/* 804E5838-804E5B20 000778 02E8+00 1/0 0/0 0/0 .text daE_DN_Draw__FP10e_dn_class */ +static int daE_DN_Draw(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + if (i_this->field_0x10d8 != 0) { + return 1; + } + + J3DModel* model = i_this->mpModelMorf->getModel(); + g_env_light.settingTevStruct(0, &a_this->current.pos, &a_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &a_this->tevStr); + + J3DModelData* modelData; + J3DMaterial* matNode_p; + if (i_this->field_0x6c4 != 0) { + modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + matNode_p = modelData->getMaterialNodePointer(i); + matNode_p->getTevColor(0)->r = i_this->field_0x6c8; + matNode_p->getTevColor(0)->g = i_this->field_0x6c8; + matNode_p->getTevColor(0)->b = i_this->field_0x6c8; + } + } + + i_this->mpModelMorf->entryDL(); + + if (i_this->field_0x6c4 != 0) { + modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + matNode_p = modelData->getMaterialNodePointer(i); + matNode_p->getTevColor(0)->r = 0; + matNode_p->getTevColor(0)->g = 0; + matNode_p->getTevColor(0)->b = 0; + } + } + + g_env_light.setLightTevColorType_MAJI(i_this->mpKnifeModel, &a_this->tevStr); + mDoExt_modelUpdateDL(i_this->mpKnifeModel); + + if (i_this->mpSkullModel != NULL) { + g_env_light.setLightTevColorType_MAJI(i_this->mpSkullModel, &a_this->tevStr); + mDoExt_modelUpdateDL(i_this->mpSkullModel); + } + + g_env_light.setLightTevColorType_MAJI(i_this->mpShieldModel, &a_this->tevStr); + mDoExt_modelUpdateDL(i_this->mpShieldModel); + + cXyz sp50; + sp50.set(a_this->current.pos.x, a_this->current.pos.y + 50.0f, a_this->current.pos.z); + i_this->mShadowKey = dComIfGd_setShadow(i_this->mShadowKey, 1, model, &sp50, 950.0f, 0.0f, + a_this->current.pos.y, i_this->mObjAcch.GetGroundH(), + i_this->mObjAcch.m_gnd, &a_this->tevStr, 0, 1.0f, + dDlst_shadowControl_c::getSimpleTex()); + dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpKnifeModel); + if (i_this->mpSkullModel != NULL) { + dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpSkullModel); + } + dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpShieldModel); + + return 1; +} + +/* 804E5B20-804E5BF8 000A60 00D8+00 2/2 0/0 0/0 .text other_bg_check__FP10e_dn_classP10fopAc_ac_c */ +static BOOL other_bg_check(e_dn_class* i_this, fopAc_ac_c* i_actor) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz start, end; + + end = i_actor->current.pos; + end.y += 100.0f; + start = a_this->current.pos; + start.y = a_this->eyePos.y; + lin_chk.Set(&start, &end, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + return TRUE; + } + + return FALSE; +} + +/* 804E5BF8-804E5CD0 000B38 00D8+00 1/1 0/0 0/0 .text other_bg_check2__FP10e_dn_classP4cXyz */ +static BOOL other_bg_check2(e_dn_class* i_this, cXyz* param_2) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz start, end; + + end = *param_2; + end.y += 100.0f; + start = a_this->current.pos; + start.y = a_this->eyePos.y; + + lin_chk.Set(&start, &end, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + return TRUE; + } + + return FALSE; +} + +UNK_REL_BSS; + +/* 804EEF2D 0003+00 data_804EEF2D None */ +u8 l_initHIO; + +/* 804EEF3C-804EEF64 000054 0028+00 10/11 0/0 0/0 .bss l_HIO */ +daE_DN_HIO_c l_HIO; + +/* 804EEF64-804EEF8C 00007C 0028+00 2/2 0/0 0/0 .bss target_info */ +fopAc_ac_c* target_info[10]; + +/* 804EEF8C-804EEF90 0000A4 0004+00 2/2 0/0 0/0 .bss target_info_count */ +int target_info_count; + +/* 804E5CD0-804E5D4C 000C10 007C+00 1/1 0/0 0/0 .text s_b_sub__FPvPv */ +static void* s_b_sub(void* i_actor, void* i_data) { + if (fopAcM_IsActor(i_actor) && dBomb_c::checkBombActor((fopAc_ac_c*)i_actor) && !((dBomb_c*)i_actor)->checkStateExplode() && target_info_count < 10) { + target_info[target_info_count] = (fopAc_ac_c*)i_actor; + target_info_count++; + } + + return NULL; +} + +/* 804E5D4C-804E61D8 000C8C 048C+00 2/2 0/0 0/0 .text search_bomb__FP10e_dn_classi */ +static dBomb_c* search_bomb(e_dn_class* i_this, int param_2) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBomb_c* bomb; + if ((i_this->field_0x744 & 0x10000000) == 0) { + return NULL; + } + + target_info_count = 0; + for (int i = 0; i < 10; i++) { + target_info[i] = NULL; + } + + fpcM_Search(s_b_sub, i_this); + + f32 threshold = 50.0f; + if (target_info_count != 0) { + cXyz sp44, sp50, sp5c; + for (int i = 0; i < target_info_count;) { + bomb = (dBomb_c*)target_info[i]; + sp44.x = bomb->current.pos.x - a_this->eyePos.x; + sp44.y = 50.0f + bomb->current.pos.y - a_this->eyePos.y; + sp44.z = bomb->current.pos.z - a_this->eyePos.z; + sp50.x = bomb->current.pos.x - a_this->current.pos.x; + sp50.y = bomb->current.pos.y - a_this->current.pos.y; + sp50.z = bomb->current.pos.z - a_this->current.pos.z; + + if (sp44.abs() < threshold && !(sp50.abs() > i_this->mPlayerDistance + 30.0f) && (!other_bg_check(i_this, bomb) || !param_2)) { + if (param_2) { + if (fabsf(50.0f + bomb->current.pos.y - a_this->eyePos.y) <= 300.0f) { + s16 sVar1 = a_this->shape_angle.y - cM_atan2s(sp44.x, sp44.z); + if (sVar1 < 0) { + sVar1 = -1 * sVar1; + } + + if ((u16)sVar1 < 20000) { + return bomb; + } + + cMtx_YrotS(*calc_mtx, -a_this->shape_angle.y); + MtxPosition(&sp44, &sp5c); + + if (fabsf(sp5c.x) < 500.0f && fabsf(sp5c.y) < 300.0f && sp5c.z > -125.0f && sp5c.z < 500.0f) { + return bomb; + } + } + } else { + return bomb; + } + } + + i++; + if (i == target_info_count) { + i = 0; + threshold += 50.0f; + if (threshold > 1500.0f) { + return NULL; + } + } + } + } else { + return NULL; + } + + return NULL; +} + +/* 804E61D8-804E61FC 001118 0024+00 4/4 0/0 0/0 .text bomb_view_check__FP10e_dn_class */ +static dBomb_c* bomb_view_check(e_dn_class* i_this) { + return search_bomb(i_this, TRUE); +} + +/* 804E61FC-804E6220 00113C 0024+00 1/1 0/0 0/0 .text bomb_check__FP10e_dn_class */ +static dBomb_c* bomb_check(e_dn_class* i_this) { + return search_bomb(i_this, FALSE); +} + +/* 804E6220-804E6264 001160 0044+00 1/1 0/0 0/0 .text player_way_check__FP10e_dn_class */ +static BOOL player_way_check(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + s16 sVar1 = a_this->shape_angle.y - dComIfGp_getPlayer(0)->shape_angle.y; + if ((int)sVar1 < 0) { + sVar1 = -sVar1; + } + + if (((u32)sVar1 & 0xFFFF) < 0x6000) { + return FALSE; + } + + return TRUE; +} + +/* 804E6264-804E6340 0011A4 00DC+00 4/4 0/0 0/0 .text pl_check__FP10e_dn_classfs */ +static int pl_check(e_dn_class* i_this, f32 param_2, s16 param_3) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + if (i_this->mPlayerDistance < param_2) { + s16 sVar1 = a_this->shape_angle.y - i_this->mYAngleToPlayer; + if (sVar1 < param_3 && sVar1 > (s16)-param_3 && !other_bg_check(i_this, player)) { + return 1; + } + } + + for (int i = 0; i <= 2; i++) { + if (i_this->field_0xa9c[i].ChkCoHit() != 0) { + if (player == dCc_GetAc(i_this->field_0xa9c[i].GetCoHitObj()->GetAc())) { + return 2; + } + } + } + + return 0; +} + +/* 804E6340-804E6448 001280 0108+00 3/3 0/0 0/0 .text move_gake_check__FP10e_dn_classfSc */ +static BOOL move_gake_check(e_dn_class* i_this, f32 param_2, s8 param_3) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_GndChk gnd_chk; + cXyz sp84, sp90; + + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + sp84.x = 0.0f; + sp84.y = 100.0f; + if (param_3 != 0) { + sp84.z = -param_2; + } else { + sp84.z = param_2; + } + MtxPosition(&sp84, &sp90); + sp90 += a_this->current.pos; + gnd_chk.SetPos(&sp90); + + if (a_this->current.pos.y - dComIfG_Bgsp().GroundCross(&gnd_chk) > 300.0f) { + return TRUE; + } + + return FALSE; +} + +/* 804E6448-804E6608 001388 01C0+00 1/1 0/0 0/0 .text jump_pos_check__FP10e_dn_classP4cXyz */ +static BOOL jump_pos_check(e_dn_class* i_this, cXyz* param_2) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_GndChk gnd_chk; + cXyz sp94, spa0; + f32 fVar1 = 300.0f; + + cMtx_YrotS(*calc_mtx, i_this->mYAngleToPlayer); + sp94.x = 0.0f; + sp94.y = 200.0f; + + int i = 0; + while (i < 10) { + sp94.z = fVar1; + MtxPosition(&sp94, &spa0); + spa0 += a_this->current.pos; + gnd_chk.SetPos(&spa0); + spa0.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if ((a_this->current.pos.y - spa0.y) < 200.0f) { + *param_2 = spa0; + sp94.z += 200.0f; + MtxPosition(&sp94, &spa0); + spa0 += a_this->current.pos; + gnd_chk.SetPos(&spa0); + spa0.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if ((a_this->current.pos.y - spa0.y) < 200.0f) { + *param_2 = spa0; + } + + return TRUE; + } + + fVar1 += 50.0f; + i++; + } + + return FALSE; +} + +/* 804E6608-804E6A8C 001548 0484+00 2/1 0/0 0/0 .text e_dn_stay__FP10e_dn_class */ +static void e_dn_stay(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp30; + + i_this->field_0x6f4 = 5; + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_WAIT_01, 10.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.1f) + 0.9f); + i_this->mMode = 1; + // fallthrough + case 1: + if (fopAcM_otoCheck(a_this, 2000.0f) || daPy_getPlayerActorClass()->checkWolfBark()) { + SND_INFLUENCE* sound = dKy_Sound_get(); + sp30 = sound->position - a_this->current.pos; + if (cM_atan2s(sp30.y, JMAFastSqrt(sp30.x * sp30.x + sp30.z * sp30.z)) > 0x1000) { + i_this->mMode = 5; + } else { + i_this->mMode = 2; + } + + i_this->field_0x6e0[0] = cM_rndF(10.0f) + 10.0f; + i_this->field_0x738 = sound->position; + } + break; + + case 2: + if (i_this->field_0x6e0[0] == 0) { + anm_init(i_this, ANM_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.5f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); + i_this->mMode = 3; + } + break; + + case 3: + if (i_this->mpModelMorf->isStop()) { + if (other_bg_check2(i_this, &i_this->field_0x738)) { + i_this->field_0x6e0[0] = cM_rndF(10.0f) + 20.0f; + i_this->mMode = 4; + } else { + i_this->mAction = ACTION_OTOREAC; + i_this->mMode = 0; + } + } + break; + + case 4: + if (i_this->field_0x6e0[0] == 0) { + i_this->mMode = 10; + i_this->field_0x6e0[0] = cM_rndF(10.0f) + 30.0f; + anm_init(i_this, ANM_WAIT_03, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.5f); + } + break; + + case 5: + if (i_this->field_0x6e0[0] == 0) { + anm_init(i_this, ANM_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.5f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); + i_this->mMode = 6; + } + break; + + case 6: + if (i_this->mpModelMorf->isStop()) { + i_this->field_0x6e0[0] = cM_rndF(10.0f) + 20.0f; + i_this->mMode = 7; + } + break; + + case 7: + if (i_this->field_0x6e0[0] == 0) { + i_this->mMode = 10; + i_this->field_0x6e0[0] = cM_rndF(40.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_04, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.3f); + i_this->mpModelMorf->setFrame(cM_rndF(75.0f)); + } + break; + + case 8: + if (i_this->mpModelMorf->isStop()) { + i_this->mMode = 0; + } + break; + + case 10: + if (i_this->field_0x6e0[0] == 0) { + i_this->mMode = 0; + } + } + + if ((i_this->field_0x6cc & 15) == 0) { + if (pl_check(i_this, i_this->field_0x6d8, 0x4000) != 0) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = -10; + i_this->field_0x6e0[0] = 60; + } else if (bomb_view_check(i_this) != NULL) { + i_this->mAction = ACTION_BOMB_ACTION; + i_this->mMode = 0; + } + } +} + +/* 804E6A8C-804E6DBC 0019CC 0330+00 1/1 0/0 0/0 .text e_dn_otoreac__FP10e_dn_class */ +static void e_dn_otoreac(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp40, sp4c; + f32 fVar1 = 0.0f; + i_this->field_0x6f4 = 2; + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_WAIT_01, 10.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.2f) + 1.5f); + i_this->field_0x6e0[0] = cM_rndF(10.0f) + 20.0f; + i_this->mMode = 1; + // fallthrough + case 1: + if (i_this->field_0x6e0[0] == 0) { + anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); + i_this->mMode = 2; + } + break; + + case 2: + fVar1 = l_HIO.dash_speed; + if ((i_this->field_0x6cc & 3) == 0) { + if ((i_this->field_0x6cc & 4) != 0) { + i_this->field_0x10e4 = 1; + } else { + i_this->field_0x10e4 = 2; + } + } + + sp40 = i_this->field_0x738 - a_this->current.pos; + cLib_addCalcAngleS2(&a_this->current.angle.y, cM_atan2s(sp40.x, sp40.z), 2, 0xC00); + if (sp40.abs() < 250.0f || i_this->mObjAcch.ChkWallHit() != 0) { + i_this->mAction = ACTION_NORMAL; + i_this->mMode = 0; + i_this->field_0x6e0[0] = cM_rndF(50.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + break; + + + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + if ((i_this->field_0x6cc & 15) == 0) { + if (pl_check(i_this, i_this->field_0x6d8, 0x4000) != 0) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = -10; + i_this->field_0x6e0[0] = 60; + } else if (bomb_view_check(i_this) != NULL) { + i_this->mAction = ACTION_BOMB_ACTION; + i_this->mMode = 0; + } + } +} + +/* 804E6DBC-804E72C8 001CFC 050C+00 2/1 0/0 0/0 .text e_dn_bomb_action__FP10e_dn_class */ +static void e_dn_bomb_action(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + s16 sVar2; + cXyz sp3c, sp48; + dBomb_c* bomb = bomb_check(i_this); + if (bomb == NULL) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + return; + } + + sp3c.x = bomb->current.pos.x - a_this->current.pos.x; + sp3c.z = bomb->current.pos.z - a_this->current.pos.z; + s16 sVar1 = cM_atan2s(sp3c.x, sp3c.z); + f32 fVar1 = 0.0f; + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.5f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND_BOMB, -1); + i_this->mMode = 1; + break; + + case 1: + if (i_this->mpModelMorf->isStop()) { + i_this->mMode = 2; + } + break; + + case 2: + i_this->mMode = 3; + anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->field_0x6e0[1] = cM_rndF(10.0f) + 10.0f; + // fallthrough + case 3: + if (i_this->field_0x6e0[1] == 0 && bomb->speedF < 0.1f) { + i_this->mMode = 4; + anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); + } + break; + + case 4: + if (i_this->field_0x5b7 == 1 && bomb->speedF < 0.1f && !bomb->checkStateCarry() && JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 250.0f) { + sVar2 = i_this->mYAngleToPlayer - a_this->shape_angle.y; + if (sVar2 < 0x4000 && sVar2 > -0x4000) { + i_this->mMode = 10; + break; + } + } + + sVar1 += 0x8000; + fVar1 = l_HIO.dash_speed; + if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) > 600.0f) { + i_this->mMode = 5; + anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + + break; + + case 5: + i_this->mSound.startCreatureSoundLevel(Z2SE_EN_DN_V_LOOK_BOMB, 0, -1); + sVar1 = i_this->mYAngleToPlayer; + if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 500.0f) { + i_this->mMode = 2; + } + break; + + case 10: + i_this->field_0x6f2 = 0; + fVar1 = l_HIO.dash_speed; + if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 100.0f) { + i_this->field_0x6e0[0] = 20; + i_this->mMode = 11; + anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_NONE, cM_rndFX(0.05f) + 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_KICK_BOMB, -1); + } + + if (bomb->speedF > 0.1f) { + i_this->mMode = 2; + } + break; + + case 11: + i_this->field_0x6f2 = 0; + sVar1 = i_this->mYAngleToPlayer; + + if (i_this->field_0x6e0[0] >= 10) { + cMtx_YrotS(*calc_mtx, sVar1); + sp3c.x = -30.0f; + sp3c.y = 0.0f; + sp3c.z = 60.0f; + MtxPosition(&sp3c, &sp48); + sp48 += a_this->current.pos; + + cLib_addCalc2(&bomb->current.pos.x, sp48.x, 1.0f, 15.0f); + cLib_addCalc2(&bomb->current.pos.z, sp48.z, 1.0f, 15.0f); + + if (i_this->field_0x6e0[0] == 10) { + bomb->speedF = 30.0f; + bomb->speed.y = 30.0f; + bomb->current.angle.y = a_this->shape_angle.y; + } + } + + if (i_this->field_0x6e0[0] == 0) { + anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mMode = 5; + } + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + cLib_addCalcAngleS2(&a_this->current.angle.y, sVar1, 4, 0x1000); + i_this->field_0x6f4 = 2; + i_this->field_0x738 = bomb->current.pos; +} + +/* 804E72C8-804E7620 002208 0358+00 1/1 0/0 0/0 .text e_dn_normal__FP10e_dn_class */ +static void e_dn_normal(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp44, sp50; + f32 fVar1 = 0.0f; + s16 sVar1 = 0x4000; + s16 sVar2, sVar3; + + switch (i_this->mMode) { + case 0: + case 1: + case 2: + if (i_this->field_0x6e0[0] == 0) { + if (fopAcM_wayBgCheck(a_this, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)) { + sVar2 = cM_rndFX(10000.0f) + 32768.0f; + i_this->field_0x6e0[1] = 40; + } else { + sp50.x = a_this->home.pos.x + cM_rndFX(600.0f); + sp50.y = a_this->home.pos.y; + sp50.z = a_this->home.pos.z + cM_rndFX(600.0f); + sp44 = sp50 - a_this->current.pos; + + sVar2 = cM_atan2s(sp44.x, sp44.z) - a_this->current.angle.y; + if (sVar2 > 0x3000) { + sVar2 = 0x3000; + } else if (sVar2 < -0x3000) { + sVar2 = -0x3000; + } + } + + i_this->field_0x5d4 = a_this->current.angle.y + sVar2; + anm_init(i_this, ANM_WALK, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mMode = 3; + i_this->field_0x6e0[0] = cM_rndF(100.0f) + 100.0f; + } else { + sVar1 = 0x7000; + } + break; + + case 3: + fVar1 = l_HIO.movement_speed; + sVar2 = a_this->current.angle.y; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 2, 0x400); + sVar3 = a_this->current.angle.y - i_this->field_0x5d4; + if (sVar3 > 0x1000 || sVar3 < -0x1000) { + fVar1 = 0.0f; + } + + sVar2 -= a_this->current.angle.y; + sVar2 *= 2; + if (sVar2 > 0x1000) { + sVar2 = 0x1000; + } else if (sVar2 < -0x1000) { + sVar2 = -0x1000; + } + + cLib_addCalcAngleS2(&i_this->field_0x826, sVar2, 2, 0x400); + + if (i_this->field_0x6e0[0] == 0 || + (i_this->field_0x6e0[1] == 0 && (fopAcM_wayBgCheck(a_this, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)))) { + i_this->mMode = 2; + i_this->field_0x6e0[0] = cM_rndF(100.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + break; + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 3.0f); + BOOL bVar1 = fopAcM_otoCheck(a_this, 2000.0f) | daPy_getPlayerActorClass()->checkWolfBark(); + if ((i_this->field_0x6cc & 15) == 0 || bVar1) { + if (bVar1 || pl_check(i_this, i_this->field_0x6d8, sVar1) != 0) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = -10; + i_this->field_0x6e0[0] = 60; + } + + if (bomb_view_check(i_this) != NULL) { + i_this->mAction = ACTION_BOMB_ACTION; + i_this->mMode = 0; + } + } +} + +/* 804E7620-804E77A8 002560 0188+00 1/1 0/0 0/0 .text e_dn_drawback__FP10e_dn_class */ +static void e_dn_drawback(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_DRAWBACK, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 1; + a_this->speedF = -5.0f; + i_this->field_0x6e8 = 10; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DRAWBACK, -1); + i_this->field_0x5d4 = player->shape_angle.y + 0x8000; + break; + + case 1: + a_this->onHeadLockFlg(); + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 4, 0x400); + cLib_addCalc0(&a_this->speedF, 1.0f, 0.1f); + + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_AWAKE, -1); + } + break; + } + + if (move_gake_check(i_this, 50.0f, 1)) { + i_this->mAction = ACTION_BACKDROP; + i_this->mMode = 0; + } +} + +/* 804E77A8-804E7B34 0026E8 038C+00 1/1 0/0 0/0 .text e_dn_wolfbite__FP10e_dn_class */ +static void e_dn_wolfbite(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + i_this->field_0x6e8 = 10; + cLib_addCalc0(&a_this->speedF, 1.0f, 2.0f); + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_HANGED, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 1; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DRAWBACK, -1); + a_this->health -= 10; + break; + + case 1: + if (i_this->mpModelMorf->isStop()) { + anm_init(i_this, ANM_HANGED_WAIT, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mMode = 2; + } + break; + + case 2: + if (i_this->mAnmID == ANM_HANGED_DAMAGE) { + if (i_this->mpModelMorf->isStop()) { + anm_init(i_this, ANM_HANGED_WAIT, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + } + + if (a_this->health <= 0 || a_this->checkWolfBiteDamage()) { + a_this->offWolfBiteDamage(); + anm_init(i_this, ANM_HANGED_DAMAGE, 2.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + a_this->health -= 10; + if (a_this->health <= 0) { + player->offWolfEnemyHangBite(); + i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - player->shape_angle.y; + i_this->field_0x74c = 150.0f; + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + i_this->field_0x724.y = player->shape_angle.y + 0x8000; + a_this->speed.y = 0.0f; + i_this->field_0x704 = -1.0f; + i_this->field_0x828 = 50; + i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 32); + i_this->field_0x710 = 1; + i_this->field_0x6e8 = 1000; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + return; + } + + i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 30); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); + } + + if (!player->checkWolfEnemyHangBiteOwn(a_this)) { + anm_init(i_this, ANM_HANGED_BRUSH, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 3; + } + break; + + case 3: + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_AWAKE, -1); + } + } +} + +/* 804E7B34-804E7B74 002A74 0040+00 1/1 0/0 0/0 .text way_check__FP10e_dn_class */ +static int way_check(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + s16 sVar1 = a_this->shape_angle.y - i_this->mYAngleToPlayer; + if (sVar1 <= 0x4000 && sVar1 >= -0x4000) { + return 0; + } + + if (sVar1 < 0) { + return 1; + } + + return 2; +} + +/* 804EEF90-804EEF94 0000A8 0004+00 2/2 0/0 0/0 .bss learn_check */ +int learn_check; + +/* 804E7B74-804E7D18 002AB4 01A4+00 1/1 0/0 0/0 .text shot_s_sub__FPvPv */ +static void* shot_s_sub(void* i_actor, void* i_data) { + e_dn_class* i_this = (e_dn_class*)i_data; + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + if ((fopAcM_IsActor(i_actor) && (learn_check & 0x80000000) != 0 && fopAcM_GetName(i_actor) == PROC_ARROW && (fopAcM_GetParam(i_actor) == 1 || + fopAcM_GetParam(i_actor) == 2))) { + cXyz sp28(a_this->current.pos - ((fopAc_ac_c*)i_actor)->current.pos); + if (sp28.abs() < 1000.0f) { + return i_actor; + } + } + + return NULL; +} + +/* 804E7D18-804E8620 002C58 0908+00 1/1 0/0 0/0 .text e_dn_fight_run__FP10e_dn_class */ +static void e_dn_fight_run(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp4c, sp58; + f32 fVar1 = 0.0f; + int frame = i_this->mpModelMorf->getFrame(); + s8 sVar4 = 1; + + if (pl_check(i_this, i_this->field_0x6d8 + 50.0f, 0x7FFF) == 0 && i_this->field_0x6e0[0] == 0) { + if (i_this->field_0x6ea == 0) { + sVar4 = 0; + } + } else { + i_this->field_0x6ea = 40; + } + + switch (i_this->mMode) { + case -10: + anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->field_0x6e0[1] = cM_rndF(10.0f) + 15.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_FIND, -1); + i_this->mMode = -9; + break; + + case -9: + cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); + if (i_this->field_0x6e0[1] == 0) { + i_this->mMode = 0; + } + break; + + case 0: + anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); + i_this->mMode = 1; + i_this->field_0x82c = 0; + // fallthrough + case 1: + fVar1 = l_HIO.dash_speed; + if ((i_this->field_0x6cc & 3) == 0) { + if ((i_this->field_0x6cc & 4) != 0) { + i_this->field_0x10e4 = 1; + } else { + i_this->field_0x10e4 = 2; + } + } + + if (i_this->mObjAcch.ChkWallHit() != 0 && !fopAcM_wayBgCheck(a_this, 200.0f, 120.0f)) { + i_this->field_0x82c++; + } else if (i_this->mPlayerDistance < l_HIO.battle_init_range) { + anm_init(i_this, ANM_WAIT_02, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mMode = 2; + i_this->field_0x6e0[2] = cM_rndF(30.0f) + 30.0f; + } + + if (i_this->field_0x82c > 20) { + i_this->mAction = ACTION_JUMP; + i_this->mMode = 0; + return; + } + + if (move_gake_check(i_this, 50.0f, 0)) { + i_this->mAction = ACTION_GAKEJUMP; + i_this->mMode = 0; + i_this->field_0x6e8 = 100; + a_this->speedF = 0.0f; + return; + } + break; + + case 2: + i_this->field_0x82e = 1; + if (frame == 7 || frame == 21) { + a_this->speed.y = 10.0f; + if (i_this->mPlayerDistance > (l_HIO.battle_init_range + 250.0f)) { + i_this->mMode = 0; + a_this->current.angle.y = a_this->shape_angle.y; + break; + } + + if (i_this->mPlayerDistance > (l_HIO.battle_init_range + 100.0f)) { + a_this->current.angle.y = i_this->mYAngleToPlayer; + } else if (i_this->mPlayerDistance < (l_HIO.battle_init_range - 100.0f)) { + a_this->current.angle.y = -i_this->mYAngleToPlayer; + } else { + a_this->current.angle.y = cM_rndFX(32763.0f); + } + + a_this->speedF = cM_rndF(5.0f) + 5.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_BREATH, -1); + } + + if (frame == 13 || frame == 27) { + a_this->speedF = 0.0f; + i_this->field_0x10e4 = 3; + if (frame == 13) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); + } else { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); + } + } + + a_this->gravity = -5.0f; + break; + } + + s16 sVar1; + if (i_this->mMode >= 0) { + if (i_this->field_0x82e == 0) { + sVar1 = a_this->current.angle.y; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 2, 0x800); + sVar1 -= a_this->current.angle.y; + s16 sVar2 = a_this->current.angle.y - i_this->mYAngleToPlayer; + if (sVar2 > 0x800 || sVar2 < -0x800) { + fVar1 = 0.0f; + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + } else { + sVar1 = a_this->shape_angle.y; + cLib_addCalcAngleS2(&a_this->shape_angle.y, i_this->mYAngleToPlayer, 4, 0x800); + sVar1 -= a_this->shape_angle.y; + } + + sVar1 *= 2; + if (sVar1 > 0x1000) { + sVar1 = 0x1000; + } else if (sVar1 < -0x1000) { + sVar1 = -0x1000; + } + cLib_addCalcAngleS2(&i_this->field_0x826, sVar1, 2, 0x400); + } + + u8 sVar3 = 0; + learn_check = i_this->field_0x744; + if (fpcM_Search(shot_s_sub, i_this) != NULL || ((i_this->field_0x744 & 0x1000) != 0 && daPy_getPlayerActorClass()->checkHookshotShootReturnMode())) { + sVar3 = 1; + OS_REPORT(" DEF ON !!\n"); + } + + if (sVar4 == 0) { + if (i_this->field_0x6ea == 0) { + i_this->mAction = ACTION_NORMAL; + i_this->mMode = 0; + i_this->field_0x6e0[0] = cM_rndF(50.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + + if (i_this->field_0x82e == 0) { + return; + } + + a_this->current.angle.y = a_this->shape_angle.y; + return; + } + } else { + if (dComIfGp_checkPlayerStatus1(0, 0x2000000) != 0 || + (((i_this->mXAngleToPlayer < 0x1000 && i_this->mXAngleToPlayer > -0x1000) || sVar3 != 0) && player_way_check(i_this))) { + if ((sVar3 != 0 || (i_this->mPlayerDistance < l_HIO.battle_init_range && (i_this->field_0x744 & cc_pl_cut_bit_get()) != 0 && + ((daPy_getPlayerActorClass()->getCutAtFlg() != 0 || daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_JUMP) || + (i_this->field_0x744 & 0x400) != 0))) && i_this->field_0x74c < 1.0f) { + i_this->mAction = ACTION_GUARD; + if (cc_pl_cut_bit_get() == 0x100) { + i_this->mMode = 0; + } else { + i_this->mMode = 5; + } + + i_this->field_0x708 = 30.0f; + i_this->field_0x70c = a_this->shape_angle.y; + i_this->field_0x6e0[0] = 0; + i_this->field_0x6e8 = 15; + } else { + if (i_this->mPlayerDistance < l_HIO.attack_init_range) { + if (i_this->field_0x6e0[2] == 0) { + i_this->field_0x6e0[2] = cM_rndF(30.0f) + 30.0f; + if (cM_rndF(1.0f) < 1.0f) { + if (way_check(i_this) == 0 && cM_rndF(1.0f) < 0.75f) { + if (i_this->mPlayerDistance < l_HIO.attack_init_range - 100.0f) { + i_this->mAction = ACTION_ATTACK_0; + } else { + i_this->mAction = ACTION_ATTACK; + } + + i_this->mMode = 0; + } else { + i_this->mAction = ACTION_TAIL_ATTACK; + i_this->mMode = 0; + } + } + } + } + + } + } + } + + i_this->field_0x6f4 = 1; + if ((i_this->field_0x6cc & 15) == 0 && bomb_view_check(i_this) != NULL) { + i_this->mAction = ACTION_BOMB_ACTION; + i_this->mMode = 0; + } + + if (i_this->field_0x5b7 == 1 && move_gake_check(i_this, 150.0f, 1) && (i_this->field_0x6cc & 15) == 0 && cM_rndF(1.0f) < 0.5f) { + i_this->field_0x700 = cM_rndF(10.0f) + 10.0f; + i_this->field_0x701 = cM_rndF(1.9f); + } + + if (move_gake_check(i_this, 50.0f, 1)) { + if (i_this->field_0x5b7 == 1) { + if (cM_rndF(1.0f) < 0.5f) { + i_this->mAction = ACTION_TAIL_ATTACK; + i_this->mMode = 0; + } else { + i_this->mAction = ACTION_GAKEJUMP; + i_this->mMode = 0; + i_this->field_0x5c8 = a_this->current.pos; + i_this->field_0x5bc = a_this->current.pos; + i_this->field_0x6e8 = 100; + } + + a_this->speedF = 0.0f; + } else { + i_this->mAction = ACTION_BACKDROP; + i_this->mMode = 0; + } + } + + if (i_this->mAction != 3 && i_this->field_0x82e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } +} + +/* 804E8620-804E8848 003560 0228+00 1/1 0/0 0/0 .text e_dn_jump__FP10e_dn_class */ +static void e_dn_jump(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->field_0x6f4 = 1; + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_JUMP_A, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 1; + return; + + case 1: + if (!i_this->mpModelMorf->isStop()) { + return; + } + + a_this->speed.y = 50.0f; + i_this->mMode = 2; + i_this->field_0x10e4 = 3; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_JUMP, -1); + // fallthrough + case 2: + a_this->speedF = 30.0f; + if (a_this->speed.y <= 0.0f) { + anm_init(i_this, ANM_JUMP_B, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 3; + } + return; + + case 3: + if (!i_this->mObjAcch.ChkGroundHit()) { + return; + } + + anm_init(i_this, ANM_JUMP_C, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 4; + i_this->field_0x10e4 = 3; + i_this->field_0x6e0[0] = 3; + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); + return; + + case 4: + if (i_this->field_0x6e0[0] == 1) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 10.0f); + if (!i_this->mpModelMorf->isStop()) { + return; + } + + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + return; + } +} + +/* 804E8848-804E8D78 003788 0530+00 1/1 0/0 0/0 .text e_dn_gakejump__FP10e_dn_class */ +static void e_dn_gakejump(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp24, sp30; + + i_this->field_0x6f4 = 1; + switch (i_this->mMode) { + case 0: + if (jump_pos_check(i_this, &i_this->field_0x5bc)) { + anm_init(i_this, ANM_JUMP_A, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 2; + a_this->current.angle.y = i_this->mYAngleToPlayer; + return; + } + + if (i_this->mAnmID != ANM_WAIT_01) { + anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.1f) + 0.9f); + i_this->field_0x6e0[0] = cM_rndF(15.0f) + 35.0f; + i_this->mMode = 1; + } + + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 4, 0x800); + return; + + case 1: + i_this->field_0x6f4 = 2; + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + sp24.x = 0.0f; + sp24.y = 0.0f; + sp24.z = 100.0f; + MtxPosition(&sp24, &i_this->field_0x738); + i_this->field_0x738 += a_this->current.pos; + + if (i_this->field_0x6e0[0] != 0) { + return; + } + + i_this->mMode = 0; + return; + + case 2: + if (!i_this->mpModelMorf->isStop()) { + return; + } + + if (jump_pos_check(i_this, &i_this->field_0x5bc)) { + i_this->mMode = 3; + i_this->field_0x10e4 = 3; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_JUMP, -1); + i_this->field_0x6e0[0] = 20; + i_this->field_0x6e0[1] = 60; + i_this->field_0x5c8 = a_this->current.pos; + } else { + anm_init(i_this, ANM_WAIT_01, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndF(0.1f) + 0.9f); + i_this->field_0x6e0[0] = cM_rndF(15.0f) + 35.0f; + i_this->mMode = 1; + return; + } + // fallthrough + case 3: + i_this->field_0x5d8 = 1; + sp24 = i_this->field_0x5bc - a_this->current.pos; + i_this->field_0x5d4 = cM_atan2s(sp24.x, sp24.z); + i_this->field_0x5d6 = -cM_atan2s(sp24.y, JMAFastSqrt(sp24.x * sp24.x + sp24.z * sp24.z)); + a_this->speedF = 50.0f; + + if (i_this->field_0x6e0[0] == 1) { + anm_init(i_this, ANM_JUMP_B, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + + if (sp24.abs() < (a_this->speedF * 1.1f)) { + a_this->current.pos = i_this->field_0x5bc; + anm_init(i_this, ANM_JUMP_C, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 4; + i_this->field_0x10e4 = 3; + i_this->field_0x6e0[0] = 3; + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); + a_this->speedF = 0.0f; + i_this->field_0x6e8 = 0; + } + + if (i_this->field_0x6e0[1] == 0 || i_this->mObjAcch.ChkWallHit() != 0) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + } + return; + + case 4: + if (i_this->field_0x6e0[0] == 1) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); + } + + if (!i_this->mpModelMorf->isStop()) { + return; + } + + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + return; + } +} + +/* 804E8D78-804E8DD8 003CB8 0060+00 2/2 0/0 0/0 .text at_hit_check__FP10e_dn_class */ +static fopAc_ac_c* at_hit_check(e_dn_class* i_this) { + if (i_this->mMode >= 10) { + return NULL; + } + + if (i_this->field_0xe44.ChkAtHit() != 0) { + return dCc_GetAc(i_this->field_0xe44.GetAtHitObj()->GetAc()); + } + + return NULL; +} + +/* 804E8DD8-804E8F78 003D18 01A0+00 1/1 0/0 0/0 .text e_dn_attack_0__FP10e_dn_class */ +static void e_dn_attack_0(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp2c, sp38; + int frame = i_this->mpModelMorf->getFrame(); + + i_this->field_0x6f4 = 1; + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_ATTACK_TAIL_01, 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_KNIFE, -1); + i_this->mMode = 1; + // fallthrough + case 1: + if (frame >= 22 && frame <= 28) { + i_this->field_0x6ef = 1; + i_this->field_0x6ee = 0; + } + + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + } + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); + + if (i_this->field_0x6ef != 0) { + fopAc_ac_c* actor_p = at_hit_check(i_this); + if (actor_p != NULL && fopAcM_GetName(actor_p) == PROC_ALINK && daPy_getPlayerActorClass()->checkPlayerGuard()) { + dComIfGp_getVibration().StartShock(3, 31, cXyz(0.0f, 1.0f, 0.0f)); + } + } +} + +/* 804E8F78-804E91D4 003EB8 025C+00 1/1 0/0 0/0 .text e_dn_attack__FP10e_dn_class */ +static void e_dn_attack(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp34, sp40; + int frame = i_this->mpModelMorf->getFrame(); + + i_this->field_0x6f4 = 1; + s16 sVar1, sVar2; + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_ATTACK_TAIL_02, 6.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_KNIFE2_A, -1); + i_this->mMode = 1; + // fallthrough + case 1: + if (frame < 10 || (frame >= 25 && frame <= 30)) { + sVar1 = a_this->current.angle.y; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 2, 0x800); + sVar1 -= a_this->current.angle.y; + sVar1 *= 2; + if (sVar1 > 0x1000) { + sVar1 = 0x1000; + } else if (sVar1 < -0x1000) { + sVar1 = -0x1000; + } + cLib_addCalcAngleS2(&i_this->field_0x826, sVar1, 2, 0x400); + } + + if (frame >= 13 && frame <= 18) { + i_this->field_0x6ef = 1; + i_this->field_0x6ee = 0; + } + + if (frame >= 25 && frame <= 30) { + i_this->field_0x6ef = 1; + i_this->field_0x6ee = 1; + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + sp34.x = 0.0f; + sp34.y = 0.0f; + sp34.z = 25.0f; + MtxPosition(&sp34, &sp40); + a_this->current.pos += sp40; + } + + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + } + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); + if (i_this->field_0x6ef != 0) { + fopAc_ac_c* actor_p = at_hit_check(i_this); + if (actor_p != NULL && fopAcM_GetName(actor_p) == PROC_ALINK && daPy_getPlayerActorClass()->checkPlayerGuard()) { + i_this->mpModelMorf->setPlaySpeed(0.0f); + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + } + } +} + +/* 804E91D4-804E9354 004114 0180+00 1/1 0/0 0/0 .text tail_eff_set__FP10e_dn_class */ +static void tail_eff_set(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + J3DModel* model = i_this->mpModelMorf->getModel(); + i_this->field_0x10f8 = dComIfGp_particle_set(i_this->field_0x10f8, 0x815F, &a_this->current.pos, NULL, NULL); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->field_0x10f8); + if (emitter != NULL) { + MTXCopy(model->getAnmMtx(0), *calc_mtx); + emitter->setGlobalRTMatrix(*calc_mtx); + } + + i_this->field_0x10fc = dComIfGp_particle_set(i_this->field_0x10fc, 0x8160, &a_this->current.pos, NULL, NULL); + emitter = dComIfGp_particle_getEmitter(i_this->field_0x10fc); + if (emitter != NULL) { + MTXCopy(model->getAnmMtx(0), *calc_mtx); + emitter->setGlobalRTMatrix(*calc_mtx); + } +} + +/* 804E9354-804E9544 004294 01F0+00 1/1 0/0 0/0 .text e_dn_tail_attack__FP10e_dn_class */ +static void e_dn_tail_attack(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp30, sp3c; + int frame = i_this->mpModelMorf->getFrame(); + + i_this->field_0x6f4 = 1; + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_ATTACK_01, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 1; + break; + + case 1: + if (frame >= 19) { + tail_eff_set(i_this); + } + + if (frame >= 33 && frame <= 41) { + i_this->field_0x6ef = 1; + i_this->field_0x6ee = 2; + cMtx_YrotS(*calc_mtx, i_this->mYAngleToPlayer); + sp30.x = 0.0f; + sp30.y = 0.0f; + sp30.z = 30.0f; + MtxPosition(&sp30, &sp3c); + a_this->current.pos += sp3c; + } + + if (frame == 40) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); + } else if (frame == 43) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); + } + + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + } + } + + a_this->current.angle.y += i_this->field_0x82a; + a_this->shape_angle.y += i_this->field_0x82a; + cLib_addCalcAngleS2(&i_this->field_0x82a, 0, 1, 300); + cLib_addCalc0(&a_this->speedF, 1.0f, 3.0f); +} + +/* 804E9544-804E973C 004484 01F8+00 2/1 0/0 0/0 .text e_dn_guard__FP10e_dn_class */ +static void e_dn_guard(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->field_0x6f1 = 1; + i_this->field_0x6f4 = 1; + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_WAIT_02, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 1; + a_this->speed.y = 20.0f; + a_this->speedF = -8.0f; + i_this->field_0x10e4 = 3; + break; + + case 1: + i_this->field_0x6e8 = 5; + if (i_this->mpModelMorf->getFrame() >= 5.0f) { + i_this->mMode = 5; + i_this->field_0x6e0[0] = 20; + } + break; + + case 5: + anm_init(i_this, ANM_GUARD, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_GUARD, -1); + i_this->mMode = 6; + // fallthrough + case 6: + i_this->field_0x6e8 = 5; + if (i_this->mObjAcch.ChkGroundHit()) { + cLib_addCalc0(&a_this->speedF, 1.0f, 10.0f); + } + + if (i_this->mpModelMorf->getFrame() >= 8.0f) { + i_this->mpModelMorf->setPlaySpeed(0.0f); + i_this->mMode = 7; + a_this->speedF = 0.0f; + } + break; + + case 7: + i_this->field_0x6e8 = 5; + if (cc_pl_cut_bit_get() == 0x80 || cc_pl_cut_bit_get() == 0x800) { + i_this->field_0x6e0[0] = 20; + } + + if (i_this->field_0x6e0[0] == 0) { + i_this->mMode = 8; + i_this->mpModelMorf->setPlaySpeed(1.0f); + } + break; + + case 8: + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + } + } +} + +/* 804E973C-804E97EC 00467C 00B0+00 1/1 0/0 0/0 .text e_dn_s_damage__FP10e_dn_class */ +static void e_dn_s_damage(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->mMode) { + case 0: + i_this->mMode = 1; + i_this->field_0x6e0[0] = 20; + anm_init(i_this, ANM_WAIT_01, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + break; + + case 1: + if (i_this->field_0x6e0[0] == 0) { + i_this->mAction = ACTION_FIGHT_RUN; + i_this->mMode = 0; + i_this->field_0x6e0[0] = 40; + } + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 3.0f); +} + +/* 804E97EC-804E99A0 00472C 01B4+00 1/1 0/0 0/0 .text kado_check__FP10e_dn_class */ +static BOOL kado_check(e_dn_class* i_this) { + static int kado_bit[2] = { + 1, 2, + }; + + static f32 kado_check_x[2] = { + 80.0f, -80.0f, + }; + + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz sp9c, spa8, spb4; + BOOL rv = FALSE; + + cMtx_YrotS(*calc_mtx, i_this->field_0x724.y); + for (int i = 0; i < 2; i++) { + spa8 = a_this->current.pos; + spa8.y += 100.0f; + sp9c.x = 0.0f; + sp9c.y = 0.0f; + sp9c.z = 70.0f; + MtxPosition(&sp9c, &spb4); + spa8 += spb4; + sp9c.y = 50.0f; + sp9c.z = -150.0f; + sp9c.x = 1.0f * kado_check_x[i]; + MtxPosition(&sp9c, &spb4); + spb4 += spa8; + lin_chk.Set(&spa8, &spb4, a_this); + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + rv |= kado_bit[i]; + } + } + + if (rv == 3) { + rv = FALSE; + } + + return rv; +} + +/* 804E99A0-804E9AF0 0048E0 0150+00 1/1 0/0 0/0 .text body_gake__FP10e_dn_class */ +static BOOL body_gake(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + J3DModel* model = i_this->mpModelMorf->getModel(); + cXyz sp7c, sp88; + + MTXCopy(model->getAnmMtx(2), *calc_mtx); + sp7c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp7c, &sp88); + + dBgS_ObjGndChk gnd_chk; + sp88.y += 100.0f; + gnd_chk.SetPos(&sp88); + sp88.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if ((a_this->current.pos.y - sp88.y) > 300.0f) { + return TRUE; + } + + return FALSE; +} + +/* 804E9B68-804EA700 004AA8 0B98+00 2/1 0/0 0/0 .text e_dn_damage__FP10e_dn_class */ +static void e_dn_damage(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp34, sp40; + + if (a_this->health <= 0) { + fopAcM_OffStatus(a_this, 0); + a_this->attention_info.flags = 0; + } + + if (daPy_py_c::checkNowWolf() != 0) { + if (i_this->field_0x6f3 == 0 && a_this->checkWolfDownStartFlg()) { + if (i_this->field_0x6e0[0] > 40) { + i_this->field_0x6e0[0] = 90; + OS_REPORT(" DN WOLFHIT LONG \n"); + } else if (i_this->field_0x6e0[0] > 20) { + i_this->field_0x6e0[0] = 70; + OS_REPORT(" DN WOLFHIT MID \n"); + } else { + i_this->field_0x6e0[0] = 50; + OS_REPORT(" DN WOLFHIT SHORT \n"); + } + + i_this->mMode = 30; + i_this->field_0x6f3 = 1; + + if (i_this->field_0x5b7 == 1) { + i_this->field_0x6e0[1] = l_HIO.field_0x20 + 1; + } else { + i_this->field_0x6e0[1] = l_HIO.field_0x1e + 1; + } + + } + } else if (i_this != NULL && a_this->checkCutDownHitFlg()) { + a_this->offCutDownHitFlg(); + i_this->mMode = 3; + a_this->health = 0; + i_this->field_0x6e0[0] = 100; + i_this->field_0x6e0[1] = 46; + a_this->offDownFlg(); + a_this->health = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + i_this->field_0x6c4 = 1; + daPy_getPlayerActorClass()->onEnemyDead(); + i_this->field_0x80c = 15; + } + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_BLOWNOFF, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mMode = 1; + a_this->speedF = 0.0f; + i_this->field_0x7e8 = 8000.0f; + + if (a_this->health <= 0) { + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + i_this->field_0x6c4 = 1; + daPy_getPlayerActorClass()->onEnemyDead(); + } else { + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE2, -1); + } + + i_this->field_0x6e0[0] = 0; + break; + + case 1: + if (i_this->mObjAcch.ChkWallHit() != 0 && i_this->field_0x6e0[0] == 0) { + int iVar1 = kado_check(i_this); + if (iVar1 != 0) { + OS_REPORT(" ..KADO KABE ..%x\n", iVar1); + if (iVar1 == 2) { + i_this->field_0x70e = 0xC00; + i_this->field_0x724.y += -7000; + } else { + i_this->field_0x70e = -0xC00; + i_this->field_0x724.y += 7000; + } + + i_this->field_0x7e8 = 8000.0f; + i_this->field_0x754 = 100.0f; + i_this->field_0x75c = 100.0f; + i_this->field_0x828 = 40; + i_this->field_0x6e0[0] = 60; + } else { + i_this->mMode = 10; + a_this->speed.y = 0.0f; + i_this->field_0x704 *= 0.2f; + i_this->field_0x724.y += 0x8000; + i_this->field_0x7e8 = 8000.0f; + i_this->field_0x840 = 5; + i_this->field_0x754 = 100.0f; + i_this->field_0x75c = 100.0f; + i_this->field_0x828 = 40; + i_this->field_0x70e = 0; + } + } else { + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, 0x300); + a_this->current.angle.y += i_this->field_0x70e; + a_this->shape_angle.y = a_this->current.angle.y; + + if (i_this->field_0x724.x <= -0x3000 && i_this->mObjAcch.ChkGroundHit()) { + i_this->mMode = 2; + i_this->field_0x736 = 10; + i_this->mSound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1); + + if (i_this->field_0x737 == 0) { + anm_init(i_this, ANM_DIE_LEFT, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + + if (i_this->field_0x710 != 0) { + i_this->field_0x704 = 0.0f; + i_this->field_0x7e8 = 2000.0f; + } else { + if (i_this->field_0x737 == 0) { + i_this->field_0x754 = -100.0f; + i_this->field_0x75c = -100.0f; + } else { + i_this->field_0x754 = 100.0f; + i_this->field_0x75c = 100.0f; + } + + i_this->field_0x758 = -0x5000; + i_this->field_0x760 = -0x4000; + i_this->field_0x828 = 40; + i_this->field_0x704 *= 0.5f; + a_this->speed.y = 20.0f; + i_this->field_0x70e /= 2; + a_this->current.angle.y = i_this->field_0x724.y; + i_this->field_0x7e8 = 8000.0f; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); + + fopAcM_effSmokeSet1(&i_this->field_0x10dc, &i_this->field_0x10e0, &sp40, NULL, 1.8f, &a_this->tevStr, 1); + } + } + } + break; + + case 2: + a_this->current.angle.y += i_this->field_0x70e; + a_this->shape_angle.y = a_this->current.angle.y; + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, 0x300); + + if (i_this->mObjAcch.ChkGroundHit()) { + if (a_this->health > 0 && !daPy_py_c::checkNowWolf()) { + a_this->onDownFlg(); + } + + dKy_Sound_set(a_this->current.pos, 100, fopAcM_GetID(a_this), 5); + i_this->field_0x736 = 10; + + if (i_this->field_0x737 == 0) { + anm_init(i_this, ANM_DIE_LEFT, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + + i_this->field_0x704 = 0.0f; + i_this->field_0x724.x = -0x4000; + + for (int i = 0; i < 4; i++) { + i_this->field_0x802[i] = cM_rndF(10.0f); + } + + a_this->current.angle.y = i_this->field_0x724.y; + if (daPy_py_c::checkNowWolf() != 0) { + i_this->field_0x6e0[0] = 80; + i_this->field_0x6e0[1] = 55; + } else { + i_this->field_0x6e0[0] = cM_rndF(10.0f) + 60.0f; + i_this->field_0x6e0[1] = 35; + } + + i_this->mMode = 3; + i_this->field_0x7e8 = 1500.0f; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); + + fopAcM_effSmokeSet1(&i_this->field_0x10dc, &i_this->field_0x10e0, &sp40, NULL, 1.0f, &a_this->tevStr, 1); + } + break; + + case 3: + if (body_gake(i_this)) { + i_this->field_0x704 = -20.0f; + i_this->field_0x724.x -= 0x300; + } + + if (a_this->health <= 0 && i_this->field_0x6e0[1] == 0) { + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); + + dn_disappear(i_this); + fopAcM_delete(a_this); + return; + } + + if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->field_0x6e0[0] == 0) { + i_this->mMode = 20; + if (i_this->field_0x737 == 0) { + anm_init(i_this, ANM_DIE_LEFT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_UP, -1); + + if (i_this != NULL) { + a_this->offDownFlg(); + } + } + break; + + case 10: + if (i_this->field_0x840 != 0) { + cLib_addCalcAngleS2(&i_this->field_0x724.x, 0, 1, 0x300); + } else { + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 1, 0x800); + if (i_this->mObjAcch.ChkGroundHit()) { + i_this->mMode = 2; + if (i_this->field_0x737 == 0) { + i_this->field_0x754 = -100.0f; + i_this->field_0x75c = -100.0f; + } else { + i_this->field_0x754 = 100.0f; + i_this->field_0x75c = 100.0f; + } + + i_this->field_0x758 = -0x5000; + i_this->field_0x760 = -0x4000; + i_this->field_0x704 *= 0.5f; + a_this->speed.y = 20.0f; + a_this->current.angle.y = i_this->field_0x724.y; + i_this->field_0x7e8 = 8000.0f; + } + } + break; + + case 20: + if (i_this->mpModelMorf->getFrame() >= 35.0f) { + i_this->field_0x730.z = 0; + i_this->field_0x730.x = 0; + } + + if (i_this->mpModelMorf->isStop()) { + i_this->field_0x724.y = 0; + i_this->field_0x724.x = 0; + anm_init(i_this, ANM_WAIT_01, 0.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->field_0x6e0[0] = 5; + i_this->mMode = 21; + + if (i_this != NULL) { + a_this->offDownFlg(); + } + } + break; + + case 21: + case 22: + i_this->field_0x6e8 = 0; + if (i_this->field_0x6e0[0] == 0) { + i_this->mAction = ACTION_NORMAL; + i_this->mMode = 0; + i_this->field_0x6e0[0] = cM_rndF(50.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + break; + + case 30: + if (!a_this->checkWolfDownPullFlg()) { + i_this->field_0x6e0[1] = 0; + } + + if (i_this->field_0x6e0[0] == 0) { + i_this->mMode = 31; + if (i_this->field_0x737 == 0) { + anm_init(i_this, ANM_BRUSH_LEFT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } else { + anm_init(i_this, ANM_BRUSH_RIGHT_UP, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_UP, -1); + i_this->field_0x6e0[0] = 10; + } else if (i_this->field_0x6e0[1] == 1) { + a_this->onWolfDownPullEndFlg(); + a_this->offCutDownHitFlg(); + a_this->health = 0; + i_this->field_0x6e0[0] = 1000; + i_this->field_0x6e0[1] = 35; + i_this->mMode = 3; + } + break; + + case 31: + if (i_this->field_0x6e0[0] == 0) { + a_this->offDownFlg(); + i_this->mMode = 20; + i_this->field_0x6f3 = 0; + } + } + + if (i_this != NULL && a_this->checkDownFlg()) { + i_this->field_0x6f2 = 0; + } + + if (i_this->field_0x80c != 0) { + i_this->field_0x80c--; + i_this->field_0x80a = i_this->field_0x80c * cM_ssin(i_this->field_0x80c * 0x3800) * 100.0f; + } +} + +/* 804EA700-804EA854 005640 0154+00 1/1 0/0 0/0 .text e_dn_backdrop__FP10e_dn_class */ +static void e_dn_backdrop(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_DRAWBACK, 3.0f, J3DFrameCtrl::EMode_NONE, 0.5f); + i_this->mMode = 1; + i_this->field_0x724.y = a_this->shape_angle.y; + i_this->field_0x724.x = 0; + a_this->speedF = -3.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + // fallthrough + case 1: + if (i_this->field_0x724.x < -0x4000) { + a_this->speedF = -6.0f; + } + + if (a_this->speed.y < -20.0f) { + i_this->mMode = 2; + a_this->speedF = 0.0f; + } + // fallthrough + case 2: + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x7000, 2, 0x800); + if (i_this->mMode == 2 && a_this->current.pos.y <= (i_this->mObjAcch.GetGroundH() + 100.0f)) { + a_this->current.pos.y = i_this->mObjAcch.GetGroundH() + 100.0f; + i_this->field_0x724.x = -0x4000; + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + i_this->field_0x704 = 0.0f; + a_this->health = 0; + } + } +} + +/* 804EA854-804EA9F4 005794 01A0+00 1/1 0/0 0/0 .text e_dn_water__FP10e_dn_class */ +static void e_dn_water(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp20, sp2c, sp38; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp20.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp20, &sp2c); + + i_this->field_0x6e8 = 10; + switch (i_this->mMode) { + case 0: + case 1: + a_this->speed.y = 0.0f; + if (i_this->field_0x737 == 0) { + anm_init(i_this, ANM_DROWNED_A, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } else { + anm_init(i_this, ANM_DROWNED_B, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + + i_this->field_0x6e0[0] = 60; + a_this->speedF = 0.0f; + i_this->field_0x704 = 0.0f; + i_this->field_0x708 = 0.0f; + + sp38 = a_this->current.pos; + sp38.y = i_this->field_0xa5c; + if (i_this->mMode == 0) { + fopKyM_createWpillar(&sp38, 1.5f, 0); + } else { + fopKyM_createMpillar(&sp38, 1.0f); + } + + i_this->mMode = 10; + break; + + case 10: + a_this->speed.y = 0.0f; + cLib_addCalc2(&a_this->current.pos.y, i_this->field_0xa5c, 0.5f, 5.0f); + cLib_addCalcAngleS2(&i_this->field_0x724.x, -0x4000, 4, 0x400); + + if (i_this->field_0x6e0[0] == 0) { + dn_disappear(i_this); + } + } +} + +/* 804EA9F4-804EAD1C 005934 0328+00 1/1 0/0 0/0 .text e_dn_reg__FP10e_dn_class */ +static void e_dn_reg(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp34, sp40; + f32 fVar1 = 0.0f; + + i_this->field_0x6f2 = 0; + i_this->field_0x6e8 = 10; + + switch (i_this->mMode) { + case 0: + anm_init(i_this, ANM_RUN, 5.0f, J3DFrameCtrl::EMode_LOOP, cM_rndFX(0.05f) + 1.0f); + i_this->mMode = 1; + + if ((i_this->field_0x5b6 & 1) != 0) { + a_this->current.pos.set(-8613.0f, 2000.0f, 8017.0f); + a_this->current.angle.set(0, 0x19A0, 0); + } else { + a_this->current.pos.set(-8044.0f, 2000.0f, 8616.0f); + a_this->current.angle.set(0, -0x629E, 0); + } + + a_this->old.pos = a_this->current.pos; + i_this->field_0x5d4 = a_this->current.angle.y; + i_this->field_0x6e0[0] = 14; + // fallthrough + case 1: + fVar1 = l_HIO.dash_speed; + if ((i_this->field_0x6cc & 3) == 0) { + if ((i_this->field_0x6cc & 4) != 0) { + i_this->field_0x10e4 = 1; + } else { + i_this->field_0x10e4 = 2; + } + } + + if (i_this->field_0x6e0[0] == 0) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cMtx_YrotS(*calc_mtx, player->shape_angle.y); + + if ((i_this->field_0x5b6 & 1) != 0) { + sp34.x = 100.0f; + } else { + sp34.x = -100.0f; + } + sp34.y = 0.0f; + sp34.z = 0.0f; + MtxPosition(&sp34, &sp40); + sp40 += player->current.pos; + sp34 = sp40 - a_this->current.pos; + i_this->field_0x5d4 = cM_atan2s(sp34.x, sp34.z); + } + break; + + case 2: + if ((i_this->field_0x5b6 & 1) != 0) { + i_this->field_0x750 = a_this->shape_angle.y - (0x4000 << 2) + 0x4000; + i_this->field_0x724.y = a_this->shape_angle.y + 0x4000; + i_this->field_0x70e = (cM_rndFX(800.0f) + 3000.0f); + } else { + i_this->field_0x750 = a_this->shape_angle.y - 0x4000; + i_this->field_0x724.y = a_this->shape_angle.y - 0x4000; + i_this->field_0x70e = -(cM_rndFX(800.0f) + 3000.0f); + } + + i_this->field_0x74c = 150.0f; + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + a_this->speed.y = cM_rndF(10.0f) + 40.0f; + i_this->field_0x704 = -30.0f; + i_this->field_0x828 = 50; + a_this->health = 0; + break; + } + + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 2, 0x800); + s16 sVar1 = a_this->current.angle.y - i_this->field_0x5d4; + if (sVar1 > 0x800 || sVar1 < -0x800) { + fVar1 = 0.0f; + } + + a_this->speedF = fVar1; + i_this->field_0x6f4 = 1; +} + +/* 804EAD1C-804EADD4 005C5C 00B8+00 1/1 0/0 0/0 .text wolfkick_damage__FP10e_dn_class */ +static void wolfkick_damage(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x74c = 150.0f; + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + i_this->field_0x724.y = player->shape_angle.y + 0x8000; + a_this->speed.y = 0.0f; + i_this->field_0x704 = -1.0f; + i_this->field_0x828 = 50; + i_this->mSound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31); + i_this->field_0x710 = 1; +} + +/* 804EADD4-804EAEE4 005D14 0110+00 1/1 0/0 0/0 .text big_damage__FP10e_dn_class */ +static void big_damage(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x74c = 150.0f; + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + i_this->field_0x724.y = i_this->mAtInfo.mHitDirection.y; + a_this->speed.y = cM_rndF(10.0f) + 25.0f; + i_this->field_0x704 = -20.0f; + i_this->field_0x828 = 50; + if ((i_this->mAtInfo.mHitBit & 0x80) != 0) { + OS_REPORT("SPIN CUT HIT !!\n"); + i_this->field_0x70e = cM_rndFX(800.0f) + 3000.0f; + } else if ((i_this->mAtInfo.mHitBit & 0x800) != 0) { + OS_REPORT("SPIN CUT L HIT !!\n"); + i_this->field_0x70e = -(cM_rndFX(800.0f) + 3000.0f); + } else { + i_this->field_0x70e = cM_rndFX(700.0f); + } + + i_this->field_0x710 = 0; +} + +/* 804EAEE4-804EAF94 005E24 00B0+00 1/1 0/0 0/0 .text small_damage__FP10e_dn_class */ +static void small_damage(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->mAction = ACTION_S_DAMAGE; + i_this->mMode = 0; + i_this->field_0x828 = 50; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); + + if (i_this->field_0x82e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } + + i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x74c = 150.0f; + i_this->field_0x708 = 25.0f; + i_this->field_0x70c = i_this->mAtInfo.mHitDirection.y; +} + +/* 804EAF94-804EB344 005ED4 03B0+00 1/1 0/0 0/0 .text damage_check__FP10e_dn_class */ +static void damage_check(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + if (l_HIO.field_0x24 != 0) { + i_this->field_0x744 = 0; + } + + i_this->mStts.Move(); + + if (i_this->field_0x6e8 == 0) { + fopEn_enemy_c* dn_p = (fopEn_enemy_c*)i_this; + if (l_HIO.invulnerable != 0) { + a_this->health = 100; + } + + for (int i = 0; i <= 2; i++) { + if (i_this->field_0xa9c[i].ChkTgHit() != 0) { + i_this->mAtInfo.mpCollider = i_this->field_0xa9c[i].GetTgHitObj(); + if (player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_LEFT && player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_RIGHT && + i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK)) { + if (!player->onWolfEnemyHangBite(dn_p)) { + return; + } + + OS_REPORT("DN PL BITE HANG \n"); + i_this->mAction = ACTION_WOLFBITE; + i_this->mMode = 0; + i_this->field_0x6e8 = 1000; + i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 31); + return; + } + + i_this->field_0x10da = 3; + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_10000000)) { + wolfkick_damage(i_this); + i_this->field_0x6e8 = 1000; + } else { + at_power_check(&i_this->mAtInfo); + s16 sVar1 = a_this->health; + cc_at_check(a_this, &i_this->mAtInfo); + + if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP) { + i_this->mAtInfo.mHitStatus = 0; + } + + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK)) { + i_this->field_0x6e8 = 20; + } else { + i_this->field_0x6e8 = 10; + } + + if (i_this->mAtInfo.mAttackPower <= 1) { + i_this->field_0x6e8 = 10; + } + + i_this->field_0x744 |= i_this->mAtInfo.mHitBit; + if (i_this->mAtInfo.mHitType == 16 || i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + a_this->health = sVar1; + i_this->mAction = ACTION_DRAWBACK; + i_this->mMode = 0; + + if (i_this->field_0x82e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } + + i_this->field_0x750 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x74c = 100.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DAMAGE, -1); + } else { + if (daPy_getPlayerActorClass()->checkHorseRide() != 0 && dComIfGp_getHorseActor()->speedF >= 20.0f && i_this->mAtInfo.mHitType == 1) { + i_this->mAtInfo.mAttackPower = 20; + if (cM_rndF(1.0f) < 0.5f) { + i_this->mAtInfo.mHitBit |= 0x80; + } else { + i_this->mAtInfo.mHitBit |= 0x800; + } + } + + if (a_this->health <= 0 || i_this->mAtInfo.mHitStatus != 0) { + if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) { + small_damage(i_this); + i_this->field_0x6e8 = 3; + } else { + big_damage(i_this); + i_this->field_0x6e8 = 1000; + } + } else { + small_damage(i_this); + } + + a_this->speedF = 0.0f; + } + } + break; + } + } + + for (int i = 0; i < 3; i++) { + if (a_this->health <= 1) { + i_this->field_0xa9c[i].SetTgHitMark((CcG_Tg_HitMark)3); + } + } + } +} + +/* 804EB344-804EC854 006284 1510+00 2/1 0/0 0/0 .text action__FP10e_dn_class */ +static void action(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + cXyz sp240, sp24c; + + i_this->field_0x6f4 = 0; + f32 fVar1 = fopAcM_searchPlayerDistanceXZ(a_this); + i_this->mPlayerDistance = fVar1; + s16 sVar1 = fopAcM_searchPlayerAngleY(a_this); + i_this->mYAngleToPlayer = sVar1; + sVar1 = fopAcM_searchPlayerAngleX(a_this); + i_this->mXAngleToPlayer = sVar1; + damage_check(i_this); + i_this->field_0x82e = 0; + + s8 bVar1 = 0; + s8 bVar2 = 1; + a_this->offHeadLockFlg(); + if (fopAcM_otherBgCheck(player, a_this)) { + fopAcM_OffStatus(a_this, 0); + a_this->attention_info.flags = 0; + } else { + fopAcM_OnStatus(a_this, 0); + a_this->attention_info.flags = 4; + } + + switch (i_this->mAction) { + case ACTION_NORMAL: + e_dn_normal(i_this); + break; + + case ACTION_FIGHT_RUN: + e_dn_fight_run(i_this); + bVar1 = 1; + break; + + case ACTION_ATTACK_0: + e_dn_attack_0(i_this); + bVar1 = 1; + break; + + case ACTION_ATTACK: + e_dn_attack(i_this); + bVar1 = 1; + break; + + case ACTION_TAIL_ATTACK: + e_dn_tail_attack(i_this); + bVar1 = 1; + break; + + case ACTION_GUARD: + e_dn_guard(i_this); + bVar1 = 1; + break; + + case ACTION_JUMP: + e_dn_jump(i_this); + bVar1 = 1; + break; + + case ACTION_STAY: + e_dn_stay(i_this); + break; + + case ACTION_OTOREAC: + e_dn_otoreac(i_this); + break; + + case ACTION_DRAWBACK: + e_dn_drawback(i_this); + bVar1 = 1; + break; + + case ACTION_WOLFBITE: + e_dn_wolfbite(i_this); + break; + + case ACTION_BOMB_ACTION: + e_dn_bomb_action(i_this); + break; + + case ACTION_S_DAMAGE: + e_dn_s_damage(i_this); + break; + + case ACTION_DAMAGE: + e_dn_damage(i_this); + break; + + case ACTION_BACKDROP: + e_dn_backdrop(i_this); + break; + + case ACTION_WATER: + e_dn_water(i_this); + bVar2 = 0; + break; + + case ACTION_GAKEJUMP: + e_dn_gakejump(i_this); + bVar1 = 1; + break; + + case ACTION_REG: + e_dn_reg(i_this); + break; + } + + f32 fVar6 = 0.0f; + if (bVar2) { + dBgS_ObjGndChk obj_gnd_chk; + dBgS_ObjGndChk_Spl spl_chk; + sp240 = a_this->current.pos; + sp240.y += 150.0f; + spl_chk.SetPos(&sp240); + obj_gnd_chk.SetPos(&sp240); + i_this->field_0xa5c = dComIfG_Bgsp().GroundCross(&spl_chk); + fVar1 = i_this->field_0xa5c - dComIfG_Bgsp().GroundCross(&obj_gnd_chk); + if (a_this->current.pos.y < i_this->field_0xa5c && fVar1 > 100.0f) { + OS_REPORT("DN YOGAN \n"); + i_this->mAction = ACTION_WATER; + if (dComIfG_Bgsp().GetPolyAtt0(spl_chk) == 6) { + i_this->mMode = 1; + } else { + i_this->mMode = 0; + } + + a_this->current.pos.y = i_this->field_0xa5c; + } + } + + if (bVar1) { + i_this->mSound.setLinkSearch(true); + } else { + i_this->mSound.setLinkSearch(false); + } + + if (i_this->field_0x82e == 0) { + 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 (i_this->field_0x5d8 != 0) { + cMtx_YrotS(*calc_mtx, i_this->field_0x5d4); + cMtx_XrotM(*calc_mtx, i_this->field_0x5d6); + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = a_this->speedF; + MtxPosition(&sp240, &sp24c); + a_this->current.pos += sp24c; + sp240 = i_this->field_0x5bc - i_this->field_0x5c8; + fVar1 = sp240.abs(); + sp240 = i_this->field_0x5bc - a_this->current.pos; + f32 fVar2 = sp240.abs(); + f32 fVar3 = fVar1 * 0.3f; + if (fVar3 > 250.0f) { + fVar3 = 250.0f; + } + + i_this->field_0x720 = fVar3 * cM_ssin((fVar2 / fVar1) * 32768.0f); + i_this->field_0x5d8 = 0; + } else { + cLib_addCalc0(&i_this->field_0x720, 1.0f, 30.0f); + + if (i_this->field_0x704 != fVar6) { + cMtx_YrotS(*calc_mtx, i_this->field_0x724.y); + if (i_this->field_0x840 == 0) { + sp240.z = i_this->field_0x704; + } else { + sp240.z = 0.0f; + a_this->speed.y = 0.0f; + } + + a_this->gravity = -4.0f; + } else { + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + sp240.z = a_this->speedF; + } + sp240.x = 0.0f; + sp240.y = 0.0f; + MtxPosition(&sp240, &sp24c); + + a_this->speed.x = sp24c.x; + a_this->speed.z = sp24c.z; + a_this->speed.y += a_this->gravity; + a_this->current.pos += a_this->speed; + a_this->gravity = -5.0f; + + if (a_this->speed.y < -100.0f) { + a_this->speed.y = -100.0f; + } + + if (i_this->mAction != 9 && i_this->field_0x6f2 != 0) { + cXyz* move_pos = i_this->mStts.GetCCMoveP(); + if (move_pos != NULL) { + a_this->current.pos.x += move_pos->x; + a_this->current.pos.z += move_pos->z; + } + } + + if (i_this->field_0x708 > 0.1f) { + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = -i_this->field_0x708; + cMtx_YrotS(*calc_mtx, i_this->field_0x70c); + MtxPosition(&sp240, &sp24c); + a_this->current.pos += sp24c; + cLib_addCalc0(&i_this->field_0x708, 1.0f, 7.0f); + } + } + + sVar1 = 0x800; + if (i_this->field_0x700 != 0) { + i_this->field_0x700--; + i_this->field_0x6f4 = 2; + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + + if (i_this->field_0x701 != 0) { + sp240.x = 100.0f; + } else { + sp240.x = -100.0f; + } + sp240.y = 100.0f; + sp240.z = -100.0f; + MtxPosition(&sp240, &i_this->field_0x738); + i_this->field_0x738 += a_this->current.pos; + sVar1 = 0x400; + } + + if (i_this->field_0x6f4 != 0) { + if (i_this->field_0x6f4 == 5) { + if ((i_this->field_0x6cc & 15) == 0 && cM_rndF(1.0f) < 0.3f) { + i_this->field_0x6fc = cM_rndFX(2500.0f); + } + } else { + if (i_this->field_0x6f4 == 1) { + sp240 = player->eyePos - a_this->current.pos; + } else if (i_this->field_0x6f4 == 2) { + sp240 = i_this->field_0x738 - a_this->current.pos; + } else { + sp240 = player->eyePos - a_this->current.pos; + } + sp240.y += l_HIO.model_size * -150.0f; + + s16 sVar2 = cM_atan2s(sp240.x, sp240.z) - a_this->shape_angle.y; + s16 sVar3 = a_this->shape_angle.x + cM_atan2s(sp240.y, JMAFastSqrt(sp240.x * sp240.x + sp240.z * sp240.z)); + if (sVar2 > 0x2710) { + sVar2 = 10000; + } else if (sVar2 < -10000) { + sVar2 = -10000; + } + + if (sVar3 > 0x2710) { + sVar3 = 10000; + } else if (sVar3 < -20000) { + sVar3 = -20000; + } + + cLib_addCalcAngleS2(&i_this->field_0x6f6, sVar2 / 2, 2, sVar1); + cLib_addCalcAngleS2(&i_this->field_0x6f8, sVar3 / 2, 2, sVar1); + } + + i_this->field_0x6fc = 0; + } else { + cLib_addCalcAngleS2(&i_this->field_0x6f6, 0, 2, sVar1); + cLib_addCalcAngleS2(&i_this->field_0x6f8, 0, 2, sVar1); + i_this->field_0x6fc = 0; + } + + cLib_addCalcAngleS2(&i_this->field_0x6fa, i_this->field_0x6fc, 4, 0x400); + + if (i_this->field_0x6fe != 0) { + i_this->field_0x6fe--; + i_this->field_0x6fa = i_this->field_0x6fe * cM_ssin(i_this->field_0x6fe * 12000) * 200.0f; + } + + if (i_this->field_0x74c > 1.0f) { + cMtx_YrotS(*calc_mtx, i_this->field_0x750); + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = i_this->field_0x74c * 120.0f; + if (sp240.z > 15000.0f) { + sp240.z = 15000.0f; + } + MtxPosition(&sp240, &sp24c); + + i_this->field_0x7a4[0].y = sp24c.x; + i_this->field_0x7a4[0].x = sp24c.z; + i_this->field_0x7a4[1].y = sp24c.x; + i_this->field_0x7a4[1].x = sp24c.z; + cLib_addCalc0(&i_this->field_0x74c, 0.5f, 10.0f); + } + + if (fabsf(i_this->field_0x75c) > 1.0f) { + i_this->field_0x7a4[1].x = i_this->field_0x75c * cM_scos(i_this->field_0x760) * 70.0f; + i_this->field_0x7a4[2].x += i_this->field_0x7a4[1].x; + cLib_addCalc0(&i_this->field_0x75c, 1.0f, 3.0f); + i_this->field_0x760 += 4000; + } + + if (fabsf(i_this->field_0x754) > 1.0f) { + i_this->field_0x7a4[0].x = i_this->field_0x754 * cM_scos(i_this->field_0x758) * 70.0f; + cLib_addCalc0(&i_this->field_0x754, 1.0f, 3.0f); + i_this->field_0x758 += 4000; + } + + if (a_this->speed.y < 0.0f && i_this->mObjAcch.ChkGroundHit()) { + cLib_addCalc0(&i_this->field_0x75c, 1.0f, 30.0f); + cLib_addCalc0(&i_this->field_0x754, 1.0f, 30.0f); + } + + if (i_this->field_0x704 != fVar6) { + s16 sVar4 = i_this->field_0x724.y - a_this->shape_angle.y; + i_this->field_0x7a4[3].y = 0x4000 - sVar4; + if (i_this->field_0x7a4[3].y > 0x1770) { + i_this->field_0x7a4[3].y = 6000; + } else if (i_this->field_0x7a4[3].y < -9000) { + i_this->field_0x7a4[3].y = -9000; + } + + i_this->field_0x7a4[4].y = 0x4000 - sVar4; + if (i_this->field_0x7a4[4].y > 0x4268) { + i_this->field_0x7a4[4].y = 17000; + } else if (i_this->field_0x7a4[4].y < 0) { + i_this->field_0x7a4[4].y = 0; + } + + i_this->field_0x7a4[5].y = sVar4 + 0x4000; + if (i_this->field_0x7a4[5].y > 0x1770) { + i_this->field_0x7a4[5].y = 6000; + } else if (i_this->field_0x7a4[5].y < -9000) { + i_this->field_0x7a4[5].y = -9000; + } + + i_this->field_0x7a4[6].y = sVar4 + 0x4000; + if (i_this->field_0x7a4[6].y > 0x4268) { + i_this->field_0x7a4[6].y = 17000; + } else if (i_this->field_0x7a4[6].y < 0) { + i_this->field_0x7a4[6].y = 0; + } + + cMtx_YrotS(*calc_mtx, sVar4); + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = 12000.0f; + MtxPosition(&sp240, &sp24c); + i_this->field_0x836.y = -sp24c.x; + i_this->field_0x836.x = -sp24c.z * 1.3f; + + if (i_this->field_0x836.x > 10000) { + i_this->field_0x836.x = 10000; + } + + i_this->field_0x836.x += 6000; + } + + static s16 j_spd[11] = { + 0x4000, 0x4000, 0x4000, + 0x1000, 0x1000, 0x1000, + 0x1000, 0x4000, 0x4000, + 0x4000, 0x4000 + }; + + for (int i = 0; i < 11; i++) { + cLib_addCalcAngleS2(&i_this->field_0x762[i].x, i_this->field_0x7a4[i].x, 2, j_spd[i]); + cLib_addCalcAngleS2(&i_this->field_0x762[i].y, i_this->field_0x7a4[i].y, 2, j_spd[i]); + cLib_addCalcAngleS2(&i_this->field_0x762[i].z, i_this->field_0x7a4[i].z, 2, j_spd[i]); + i_this->field_0x7a4[i].z = 0; + i_this->field_0x7a4[i].x = 0; + + if (i >= 3 && i <= 6) { + if (i_this->field_0x7fc[i] == 0) { + s16 sVar5; + if (i == 4 || i == 6) { + sVar5 = 0x600; + } else { + sVar5 = 0x800; + } + + cLib_addCalcAngleS2(&i_this->field_0x7a4[i].y, 0, 1, sVar5); + } else { + i_this->field_0x7fc[i]--; + } + } else { + i_this->field_0x7a4[i].y = 0; + } + + if (i >= 3) { + i_this->field_0x7ec[i] = i_this->field_0x7e8 * cM_scos(i_this->field_0x6cc * 4000 + i * 20000); + } + } + + cLib_addCalc0(&i_this->field_0x7e8, 1.0f, 100.0f); + cLib_addCalcAngleS2(&i_this->field_0x832, i_this->field_0x836.y, 2, 0x800); + cLib_addCalcAngleS2(&i_this->field_0x830, i_this->field_0x836.x, 2, 0x800); + i_this->field_0x836.x = 0; + i_this->field_0x836.y = 0; + if (i_this->field_0x828 != 0) { + i_this->field_0x828--; + } + + fVar1 = i_this->field_0x828 * 1.0f; + if (fVar1 > 30.0f) { + fVar1 = 30.0f; + } + fVar1 *= fVar1; + + for (int i = 0; i < 4; i++) { + i_this->field_0x80e[i].x = fVar1 * (cM_ssin(i_this->field_0x6cc * 5000 + i * -15000) * 5.0f); + i_this->field_0x80e[i].y = fVar1 * (cM_ssin(i_this->field_0x6cc * 0x12C0 + i * -13000) * 5.0f); + } + + J3DModel* model; + cLib_addCalcAngleS2(&i_this->field_0x826, 0, 4, 0x100); + if (i_this->field_0x736 != 0) { + i_this->field_0x736--; + if (i_this->field_0x724.x != 0) { + Vec sp258; + cXyz sp264, sp270; + dBgS_GndChk gnd_chk; + int sVar6 = 0; + s16 sVar7 = 0; + fVar1 = 100.0f; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp240.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp240, &sp264); + sp264.y += 100.0f; + sp264.y += 100.0f; + gnd_chk.SetPos(&sp264); + sp264.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if (sp264.y != -1000000000.0f) { + sp258.x = sp264.x; + sp258.y = sp264.y + 100.0f; + sp258.z = sp264.z + fVar1; + gnd_chk.SetPos(&sp258); + sp258.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if (sp258.y != -1000000000.0f) { + sVar7 = -cM_atan2s(sp258.y - sp264.y, sp258.z - sp264.z); + if (sVar7 > 0x3000 || sVar7 < -0x3000) { + sVar7 = 0; + } + } + + sp258.x = sp264.x + fVar1; + sp258.y = sp264.y + 100.0f; + sp258.z = sp264.z; + gnd_chk.SetPos(&sp258); + sp258.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + if (sp258.y != -1000000000.0f) { + sVar6 = cM_atan2s(sp258.y - sp264.y, sp258.x - sp264.x); + if (sVar6 > 0x3000 || sVar6 < -0x3000) { + sVar6 = 0; + } + } + } + + dBgS_LinChk lin_chk; + cXyz sp27c, sp288, sp294; + + sp288 = a_this->current.pos; + sp288.y += 30.0f; + model = i_this->mpModelMorf->getModel(); + sp27c.set(0.0f, 0.0f, 0.0f); + MTXCopy(model->getAnmMtx(4), *calc_mtx); + MtxPosition(&sp27c, &sp294); + sp294.y += 30.0f; + lin_chk.Set(&sp288, &sp294, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + sp27c = sp288 - sp294; + cMtx_YrotS(*calc_mtx, cM_atan2s(sp27c.x, sp27c.z)); + sp27c.x = 0.0f; + sp27c.y = 0.0f; + sp27c.z = 50.0f; + MtxPosition(&sp27c, &sp24c); + a_this->current.pos += sp24c; + } + + i_this->field_0x730.x = sVar7; + i_this->field_0x730.z = sVar6; + } + } + + cLib_addCalcAngleS2(&i_this->field_0x72a.x, i_this->field_0x730.x, 1, 0x400); + cLib_addCalcAngleS2(&i_this->field_0x72a.z, i_this->field_0x730.z, 1, 0x400); + + if (i_this->field_0x10e4 != 0) { + model = i_this->mpModelMorf->getModel(); + sp240.set(0.0f, 0.0f, 0.0f); + + static int foot_idx[2] = { + 26, 30, + }; + for (int i = 0; i < 2; i++) { + if ((i_this->field_0x10e4 == 3 || (i_this->field_0x10e4 == 2 && i == 1)) || (i_this->field_0x10e4 == 1 && i == 0)) { + MTXCopy(model->getAnmMtx(foot_idx[i]), *calc_mtx); + MtxPosition(&sp240, &sp24c); + fopAcM_effSmokeSet1(&i_this->field_0x10e8[i], &i_this->field_0x10f0[i], &sp24c, &a_this->shape_angle, 1.0f, &a_this->tevStr, 0); + } + } + + i_this->field_0x10e4 = 0; + } + + if (i_this->field_0x10da != 0) { + i_this->field_0x10da--; + if (i_this->field_0x10da == 0) { + dComIfGp_particle_set(0x15E, &a_this->eyePos, &a_this->shape_angle, NULL); + } + } + + cXyz sp2a4(1.3f, 1.3f, 1.3f); + setMidnaBindEffect(a_this, &i_this->mSound, &a_this->eyePos, &sp2a4); +} + +/* 804EC854-804ECB50 007794 02FC+00 1/1 0/0 0/0 .text anm_se_set__FP10e_dn_class */ +static void anm_se_set(e_dn_class* i_this) { + int frame = i_this->mpModelMorf->getFrame(); + + if (i_this->mAnmID == ANM_ATTACK_01) { + if (frame == 35) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_TAIL, 0, -1); + } else if (frame == 28) { + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_TAIL, -1); + } + } else if (i_this->mAnmID == ANM_ATTACK_TAIL_01) { + if (frame == 18) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_KNIFE, 0, -1); + } + } else if (i_this->mAnmID == ANM_ATTACK_TAIL_02) { + if (frame == 10) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_KNIFE2_A, 0, -1); + } + + if (frame == 24) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_KNIFE2_B, 0, -1); + } + } else if (i_this->mAnmID == ANM_WALK) { + if (frame == 3) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_L, 0, -1); + } else if (frame == 18) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_R, 0, -1); + } + } else if (i_this->mAnmID == ANM_RUN) { + if (frame == 10) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_L, 0, -1); + } else if (frame == 4) { + i_this->mSound.startCreatureSound(Z2SE_EN_DN_FN_RUN_R, 0, -1); + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_BREATH, -1); + } + } else if (i_this->mAnmID == ANM_WAIT_03) { + if (frame == 15) { + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_SEARCH, -1); + } + } else if (i_this->mAnmID == ANM_WAIT_04 && frame == 15) { + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_SEARCH2, -1); + } +} + +/* 804EEF94-804EEF98 0000AC 0004+00 1/2 0/0 0/0 .bss c_start */ +int c_start; + +/* 804ECB50-804ED83C 007A90 0CEC+00 2/1 0/0 0/0 .text daE_DN_Execute__FP10e_dn_class */ +static int daE_DN_Execute(e_dn_class* i_this) { + // NONMATCHING + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + f32 fVar1 = 0.0f; + + if (i_this->field_0x10d8 != 0) { + return 1; + } + + if (c_start == 0 && dComIfGp_event_runCheck() && + (fopAcM_getTalkEventPartner((fopAc_ac_c*)daPy_getLinkPlayerActorClass()) == daPy_py_c::getMidnaActor() || daPy_getPlayerActorClass()->eventInfo.checkCommandDoor())) { + return 1; + } + + cXyz sp2c; + cXyz sp38; + cXyz sp44; + i_this->field_0x6cc++; + for (int i = 0; i < 4; i++) { + if (i_this->field_0x6e0[i] != 0) { + i_this->field_0x6e0[i]--; + } + } + + if (i_this->field_0x6e8 != 0) { + i_this->field_0x6e8--; + } + + if (i_this->field_0x6ec != 0) { + i_this->field_0x6ec--; + } + + if (i_this->field_0x840 != 0) { + i_this->field_0x840--; + } + + if (i_this->field_0x6ea != 0) { + i_this->field_0x6ea--; + } + + i_this->field_0x6f2 = 1; + action(i_this); + + if (i_this->field_0x840 == 0 && i_this->field_0x5d8 == 0) { + if (i_this->field_0x704 != fVar1) { + cMtx_YrotS(*calc_mtx, i_this->field_0x724.y); + sp2c.x = 0.0f; + sp2c.y = 0.0f; + sp2c.z = i_this->field_0x83c; + MtxPosition(&sp2c, &sp38); + a_this->current.pos += sp38; + a_this->old.pos += sp38; + cLib_addCalc2(&i_this->field_0x83c, i_this->field_0x704 * 2.0f, 1.0f, 5.0f); + } else { + cLib_addCalc0(&i_this->field_0x83c, 1.0f, 5.0f); + } + + i_this->mObjAcch.CrrPos(dComIfG_Bgsp()); + if (i_this->field_0x704 != fVar1) { + a_this->current.pos -= sp38; + a_this->old.pos -= sp38; + } + + + if (!i_this->mObjAcch.ChkGroundHit()) { + if (a_this->speed.y < -10.0f) { + i_this->field_0x842++; + if (i_this->field_0x842 == 13) { + i_this->mSound.startCreatureVoice(Z2SE_EN_DN_V_DEATH, -1); + } + } + } else { + if (i_this->field_0x842 >= 13) { + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + a_this->speed.y = 0.0f; + i_this->field_0x704 = -1.0; + i_this->field_0x724.x = -0x3000; + i_this->field_0x828 = 50; + i_this->field_0x6e8 = 1000; + a_this->health = 0; + } + + i_this->field_0x842 = 0; + } + } + + mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y + i_this->field_0x720, a_this->current.pos.z); + mDoMtx_stack_c::XrotM(i_this->field_0x72a.x); + mDoMtx_stack_c::ZrotM(i_this->field_0x72a.z); + mDoMtx_stack_c::YrotM(i_this->field_0x724.y); + mDoMtx_stack_c::XrotM(i_this->field_0x724.x); + mDoMtx_stack_c::YrotM(-i_this->field_0x724.y); + 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.model_size * a_this->scale.x, l_HIO.model_size * a_this->scale.x, l_HIO.model_size * a_this->scale.x); + + J3DModel* model = i_this->mpModelMorf->getModel(); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + i_this->mpModelMorf->play(0, 0); + anm_se_set(i_this); + i_this->mpModelMorf->modelCalc(); + MTXCopy(model->getAnmMtx(2), *calc_mtx); + + sp2c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + sp2c.set(0.0f, 0.0f, -200.0f); + MtxPosition(&sp2c, &sp44); + if (sp38.y < sp44.y) { + i_this->field_0x737 = 0; + } + else { + i_this->field_0x737 = 1; + } + + cXyz sp50(0.0f, 0.0f, 0.0f); + if (i_this->field_0x6e8 != 0) { + sp50.set(-20000.0f, 200000.0f, 30000.0f); + } + + MTXCopy(model->getAnmMtx(6), *calc_mtx); + sp2c.set(30.0f, 30.0f, 0.0f); + MtxPosition(&sp2c, &a_this->eyePos); + + i_this->field_0xa9c[0].SetC(a_this->eyePos + sp50); + if (daPy_getPlayerActorClass()->checkHorseRide()) { + i_this->field_0xa9c[0].SetR(70.0f); + } else { + i_this->field_0xa9c[0].SetR(50.0f); + } + + a_this->attention_info.position = a_this->eyePos; + a_this->attention_info.position.y += 70.0f; + + MTXCopy(model->getAnmMtx(1), *calc_mtx); + sp2c.set(-30.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + i_this->field_0xa9c[1].SetC(sp38 + sp50); + i_this->field_0xa9c[1].SetR(45.0f); + MTXCopy(model->getAnmMtx(2), *calc_mtx); + sp2c.set(20.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + i_this->field_0xa9c[2].SetC(sp38 + sp50); + i_this->field_0xa9c[2].SetR(45.0f); + + for (int i = 0; i <= 2; i++) { + if (i_this->field_0x6f2 != 0) { + i_this->field_0xa9c[i].OnCoSetBit(); + } else { + i_this->field_0xa9c[i].OffCoSetBit(); + } + + dComIfG_Ccsp()->Set(&i_this->field_0xa9c[i]); + } + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(19), *calc_mtx); + i_this->mpKnifeModel->setBaseTRMtx(*calc_mtx); + + if (i_this->field_0x6ef != 0 && i_this->field_0x6ee <= 1) { + sp2c.set(0.0f, 60.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + if (i_this->field_0x6f0 == 0) { + i_this->field_0x6f0 = 1; + i_this->field_0xe44.StartCAt(sp38); + } else { + i_this->field_0xe44.MoveCAt(sp38); + } + + if (i_this->field_0x6ee == 1) { + i_this->field_0xe44.SetR(l_HIO.model_size * 80.0f); + } else { + i_this->field_0xe44.SetR(l_HIO.model_size * 50.0f); + } + + i_this->field_0xe44.SetAtAtp(1); + } + + if (i_this->mpSkullModel != NULL) { + if (i_this->field_0x694 == 0) { + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(6), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&i_this->field_0x698); + } else { + i_this->field_0x698 += i_this->field_0x6a4; + if (i_this->field_0x6a4.y <= i_this->mObjAcch.GetGroundH()) { + i_this->mpSkullModel = NULL; + } + + i_this->field_0x6a4.y -= 5.0f; + mDoMtx_stack_c::transS(i_this->field_0x698.x, i_this->field_0x698.y, i_this->field_0x698.z); + mDoMtx_stack_c::YrotM(i_this->field_0x6b0); + mDoMtx_stack_c::XrotM(i_this->field_0x6b2); + } + + i_this->mpSkullModel->setBaseTRMtx(mDoMtx_stack_c::get()); + } + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(12), *calc_mtx); + i_this->mpShieldModel->setBaseTRMtx(*calc_mtx); + + if (i_this->field_0x6ef != 0 && i_this->field_0x6ee == 2) { + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(34), *calc_mtx); + sp2c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + + if (i_this->field_0x6f0 == 0) { + i_this->field_0x6f0 = 1; + i_this->field_0xe44.StartCAt(sp38); + } else { + i_this->field_0xe44.MoveCAt(sp38); + } + + i_this->field_0xe44.SetAtAtp(2); + i_this->field_0xe44.SetR(70.0f * l_HIO.model_size); + } + + if (i_this->field_0x6ef == 0) { + cXyz sp68(-23500.0f, -20000.0f, -50000.0f); + i_this->field_0xe44.SetC(a_this->current.pos + sp68); + i_this->field_0x6f0 = 0; + } else { + i_this->field_0x6ef = 0; + } + + dComIfG_Ccsp()->Set(&i_this->field_0xe44); + + if (i_this->field_0x6f1 != 0 && i_this->field_0x6ec == 0) { + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(12), *calc_mtx); + sp2c.set(50.0f, 0.0f, 30.0f); + MtxPosition(&sp2c, &sp38); + i_this->field_0xf7c.SetC(sp38); + i_this->field_0xf7c.SetR(70.0f * l_HIO.model_size); + + if (i_this->field_0xf7c.ChkTgHit()) { + def_se_set(&i_this->mSound, i_this->field_0xf7c.GetTgHitObj(), 40, 0); + dScnPly_c::setPauseTimer(l_HIO.field_0x1c); + i_this->field_0x6ec = 10; + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + sp2c.x = 0.0f; + sp2c.y = 120.0f; + sp2c.z = 50.0f; + MtxPosition(&sp2c, &sp38); + sp38 += a_this->current.pos; + dComIfGp_setHitMark(2, NULL, &sp38, &a_this->shape_angle, NULL, 0); + } + } else { + cXyz sp74(-23500.0f, -20000.0f, -30000.0f); + i_this->field_0xf7c.SetC(a_this->current.pos + sp74); + } + + i_this->field_0x6f1 = 0; + dComIfG_Ccsp()->Set(&i_this->field_0xf7c); + if (i_this->field_0x6c4 != 0) { + cLib_addCalc2(&i_this->field_0x6c8, -20.0f, 1.0f, 0.4f); + } + + daPy_py_c* player = daPy_getPlayerActorClass(); + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&sp38); + sp2c = player->current.pos - sp38; + cMtx_YrotS(*calc_mtx, cM_atan2s(sp2c.x, sp2c.z)); + sp2c.x = 0.0; + sp2c.y = 45.0f; + sp2c.z = 30.0f; + MtxPosition(&sp2c, &sp44); + sp44 += sp38; + a_this->setDownPos(&sp44); + cXyz sp80(a_this->eyePos); + sp80.y += 180.0f; + a_this->setHeadLockPos(&sp80); + + a_this->attention_info.flags |= 0x200000; + + if ((a_this->current.pos.y - a_this->home.pos.y) < -5000.0f) { + fopAcM_delete(a_this); + OS_REPORT("DN NARAKU\n"); + int swBit = fopAcM_GetParam(a_this) >> 24; + if (swBit != 0xFF) { + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(a_this)); + } + } + + if (strcmp(dComIfGp_getStartStageName(), "D_MN07") == 0 && fopAcM_GetRoomNo(a_this) == 8 && a_this->health != 0 && a_this->current.pos.y <= -300.0f) { + i_this->mAction = ACTION_DAMAGE; + i_this->mMode = 0; + i_this->field_0x704 = 0.0; + a_this->health = 0; + } + + return 1; +} + +/* 804ED83C-804ED844 00877C 0008+00 1/0 0/0 0/0 .text daE_DN_IsDelete__FP10e_dn_class */ +static int daE_DN_IsDelete(e_dn_class* i_this) { + return 1; +} + +/* 804ED844-804ED8AC 008784 0068+00 1/0 0/0 0/0 .text daE_DN_Delete__FP10e_dn_class */ +static int daE_DN_Delete(e_dn_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dComIfG_resDelete(&i_this->mPhase, "E_dn"); + + if (i_this->field_0x10d9 != 0) { + l_initHIO = 0; + } + + if (a_this->heap != NULL) { + i_this->mpModelMorf->stopZelAnime(); + } + + return 1; +} + +/* 80713CD8-80713CE4 0001D0 000C+00 1/0 0/0 0/0 .data jv_offset */ +Vec jv_offset = { 0.0f, 0.0f, 0.0f }; + +/* 80713CE4-80713D74 -00001 0090+00 1/1 0/0 0/0 .data jc_data */ +dJntColData_c jc_data[12] = { + {0, 1, 2, 40.0f, &jv_offset}, {0, 1, 3, 30.0f, &jv_offset}, + {0, 1, 22, 40.0f, &jv_offset}, {0, 1, 11, 15.0f, &jv_offset}, + {0, 1, 12, 10.0f, &jv_offset}, {0, 1, 17, 15.0f, &jv_offset}, + {0, 1, 18, 10.0f, &jv_offset}, {0, 1, 23, 20.0f, &jv_offset}, + {0, 1, 24, 15.0f, &jv_offset}, {0, 1, 27, 20.0f, &jv_offset}, + {0, 1, 28, 15.0f, &jv_offset}, {0, 1, 32, 20.0f, &jv_offset}, }; -/* 804EEAF8-804EEB00 0000B8 0008+00 1/1 0/0 0/0 .data kado_bit$5557 */ -SECTION_DATA static u8 kado_bit[8] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, -}; +/* 804ED8AC-804EDAEC 0087EC 0240+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* a_this) { + e_dn_class* i_this = (e_dn_class*)a_this; -/* 804EEB00-804EEB08 0000C0 0008+00 1/1 0/0 0/0 .data kado_check_x$5558 */ -SECTION_DATA static u8 kado_check_x[8] = { - 0x42, 0xA0, 0x00, 0x00, 0xC2, 0xA0, 0x00, 0x00, -}; + i_this->mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_dn", 38), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_dn", 31), 0, 1.0f, + 0, -1, &i_this->mSound, 0x80000, 0x11000084); + if (i_this->mpModelMorf == NULL || i_this->mpModelMorf->getModel() == NULL) { + return 0; + } -/* 804EEB08-804EEB88 -00001 0080+00 1/1 0/0 0/0 .data @5981 */ -SECTION_DATA static void* lit_5981[32] = { - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x1B8), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x274), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x514), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x704), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x844), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x8F4), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x998), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x998), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xB00), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0x9F0), - (void*)(((char*)e_dn_damage__FP10e_dn_class) + 0xAD4), -}; + J3DModel* model = i_this->mpModelMorf->getModel(); + model->setUserArea((u32)i_this); -/* 804EEB88-804EEBA0 000148 0016+02 1/1 0/0 0/0 .data j_spd$6416 */ -SECTION_DATA static u8 j_spd[22 + 2 /* padding */] = { - 0x40, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - 0x10, - 0x00, - 0x10, - 0x00, - 0x10, - 0x00, - 0x10, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - /* padding */ - 0x00, - 0x00, -}; + for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) { + if (i != 0) { + model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack); + } + } -/* 804EEBA0-804EEBA8 000160 0008+00 1/1 0/0 0/0 .data foot_idx$6464 */ -SECTION_DATA static u8 foot_idx[8] = { - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1E, -}; + if (i_this->mJntCol.init(a_this, &jc_data[0], model, 12) == 0) { + return 0; + } -/* 804EEBA8-804EEC9C -00001 00F4+00 1/1 0/0 0/0 .data @6935 */ -SECTION_DATA static void* lit_6935[61] = { - (void*)(((char*)action__FP10e_dn_class) + 0xE4), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0xF0), - (void*)(((char*)action__FP10e_dn_class) + 0x100), - (void*)(((char*)action__FP10e_dn_class) + 0x110), - (void*)(((char*)action__FP10e_dn_class) + 0x120), - (void*)(((char*)action__FP10e_dn_class) + 0x130), - (void*)(((char*)action__FP10e_dn_class) + 0x140), - (void*)(((char*)action__FP10e_dn_class) + 0x150), - (void*)(((char*)action__FP10e_dn_class) + 0x15C), - (void*)(((char*)action__FP10e_dn_class) + 0x184), - (void*)(((char*)action__FP10e_dn_class) + 0x168), - (void*)(((char*)action__FP10e_dn_class) + 0x178), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x190), - (void*)(((char*)action__FP10e_dn_class) + 0x19C), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1A8), - (void*)(((char*)action__FP10e_dn_class) + 0x1B4), - (void*)(((char*)action__FP10e_dn_class) + 0x1C4), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1DC), - (void*)(((char*)action__FP10e_dn_class) + 0x1D4), -}; + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_dn", 39); + JUT_ASSERT(5420, modelData != 0); + i_this->mpKnifeModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->mpKnifeModel == NULL) { + return 0; + } -/* 804EEC9C-804EECA8 00025C 000C+00 1/0 0/0 0/0 .data jv_offset */ -SECTION_DATA static u8 jv_offset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + modelData = (J3DModelData*)dComIfG_getObjectRes("E_dn", 41); + JUT_ASSERT(5432, modelData != 0); + i_this->mpShieldModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->mpShieldModel == NULL) { + return 0; + } -/* 804EECA8-804EED38 -00001 0090+00 1/1 0/0 0/0 .data jc_data */ -SECTION_DATA static void* jc_data[36] = { - (void*)0x00010002, (void*)0x42200000, (void*)&jv_offset, (void*)0x00010003, (void*)0x41F00000, - (void*)&jv_offset, (void*)0x00010016, (void*)0x42200000, (void*)&jv_offset, (void*)0x0001000B, - (void*)0x41700000, (void*)&jv_offset, (void*)0x0001000C, (void*)0x41200000, (void*)&jv_offset, - (void*)0x00010011, (void*)0x41700000, (void*)&jv_offset, (void*)0x00010012, (void*)0x41200000, - (void*)&jv_offset, (void*)0x00010017, (void*)0x41A00000, (void*)&jv_offset, (void*)0x00010018, - (void*)0x41700000, (void*)&jv_offset, (void*)0x0001001B, (void*)0x41A00000, (void*)&jv_offset, - (void*)0x0001001C, (void*)0x41700000, (void*)&jv_offset, (void*)0x00010020, (void*)0x41A00000, - (void*)&jv_offset, -}; + if (i_this->field_0x5b7 == 1) { + modelData = (J3DModelData*)dComIfG_getObjectRes("E_dn", 40); + JUT_ASSERT(5443, modelData != 0); + i_this->mpSkullModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->mpSkullModel == NULL) { + return 0; + } + } -/* 804EED38-804EED78 0002F8 0040+00 0/1 0/0 0/0 .data cc_sph_src$7459 */ -#pragma push -#pragma force_active on -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x75}}, // 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 -}; -#pragma pop + return 1; +} -/* 804EED78-804EEDB8 000338 0040+00 0/1 0/0 0/0 .data at_sph_src$7460 */ -#pragma push -#pragma force_active on -static dCcD_SrcSph at_sph_src = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj - {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 35.0f} // mSph - } // mSphAttr -}; -#pragma pop +/* 804EDAEC-804EDE58 008A2C 036C+00 1/0 0/0 0/0 .text daE_DN_Create__FP10fopAc_ac_c */ +static cPhs__Step daE_DN_Create(fopAc_ac_c* a_this) { + e_dn_class* i_this = (e_dn_class*)a_this; -/* 804EEDB8-804EEDF8 000378 0040+00 0/1 0/0 0/0 .data tate_sph_src$7461 */ -#pragma push -#pragma force_active on -static dCcD_SrcSph tate_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_STONE, 0x5, 0x0, 0x0, 0x3}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph - } // mSphAttr -}; -#pragma pop + fopAcM_SetupActor(a_this, e_dn_class); + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&i_this->mPhase, "E_dn"); + if (phase == cPhs_COMPLEATE_e) { + int swBit = fopAcM_GetParam(a_this) >> 24; + if (swBit != 0xFF) { + if (dComIfGs_isSwitch(swBit, fopAcM_GetRoomNo(a_this))) { + return cPhs_ERROR_e; + } + } + + OS_REPORT("E_dn PARAM %x\n", fopAcM_GetParam(a_this)); + i_this->field_0x5b6 = fopAcM_GetParam(a_this); + i_this->field_0x5b9 = 1; + i_this->field_0x5b7 = (fopAcM_GetParam(a_this) >> 8) & 15; + i_this->field_0x5b8 = (fopAcM_GetParam(a_this) & 0xF000) >> 12; + + if ((a_this->home.angle.z & 0xFF) == 0 || (a_this->home.angle.z & 0xFF) == 0xFF) { + i_this->field_0x6d8 = 100000.0f; + } else { + i_this->field_0x6d8 = (a_this->home.angle.z & 0xFF) * 100.0f; + } + + OS_REPORT("E_dn AZ %x\n", a_this->home.angle.z); + OS_REPORT("E_dn PR %d\n", i_this->field_0x6d8); + a_this->shape_angle.z = 0; + a_this->current.angle.z = 0; + a_this->home.angle.z = 0; + OS_REPORT("E_dn//////////////E_DN SET 1 !!\n"); + + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x3BF0)) { + OS_REPORT("//////////////E_DN SET NON !!\n"); + return cPhs_ERROR_e; + } + + if (l_initHIO == 0) { + i_this->field_0x10d9 = 1; + l_initHIO = 1; + l_HIO.field_0x4 = -1; + } + + fopAcM_OnStatus(a_this, fopAcM_STATUS_UNK_000100); + a_this->attention_info.flags = 4; + fopAcM_SetMtx(a_this, i_this->mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(a_this, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(a_this, 200.0f, 200.0f, 200.0f); + + i_this->mObjAcch.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(80.0f, 100.0f); + + if (i_this->field_0x5b7 == 1) { + a_this->health = 100; + a_this->field_0x560 = 100; + } else { + a_this->health = 100; + a_this->field_0x560 = 100; + } + i_this->mStts.Init(200, 0, a_this); + + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xD8FBFDFf, 0x3}, 0x75}}, // 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 + }; + for (int i = 0; i <= 2; i++) { + i_this->field_0xa9c[i].Set(cc_sph_src); + i_this->field_0xa9c[i].SetStts(&i_this->mStts); + } + + static dCcD_SrcSph at_sph_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xD}, {0x0, 0x0}, 0x0}}, // mObj + {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 35.0f} // mSph + } // mSphAttr + }; + i_this->field_0xe44.Set(at_sph_src); + i_this->field_0xe44.SetStts(&i_this->mStts); + + static dCcD_SrcSph tate_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xD8FBFDFF, 0x3}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_STONE, 0x5, 0x0, 0x0, 0x3}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph + } // mSphAttr + }; + i_this->field_0xf7c.Set(tate_sph_src); + i_this->field_0xf7c.SetStts(&i_this->mStts); + + i_this->field_0x6cc = (int)cM_rndF(65535.0f) & 0xFF00; + + if (i_this->field_0x5b6 == 0) { + i_this->mAction = ACTION_STAY; + } + + if ((i_this->field_0x5b6 == 13 || i_this->field_0x5b6 == 14) || (i_this->field_0x5b6 == 15 || i_this->field_0x5b6 == 16)) { + i_this->field_0x10d8 = 1; + i_this->mAction = ACTION_REG; + fopAcM_OnStatus(a_this, fopAcM_STATUS_UNK_004000); + i_this->mAcchCir.SetWall(80.0f, 2.0f); + } + + i_this->mSound.init(&a_this->current.pos, &a_this->eyePos, 3, 1); + i_this->mSound.setEnemyName("E_dn"); + i_this->mAtInfo.mpSound = &i_this->mSound; + + c_start = 1; + daE_DN_Execute(i_this); + c_start = 0; + } + + return phase; +} + +/* 804EDE58-804EE034 008D98 01DC+00 1/1 0/0 0/0 .text __ct__10e_dn_classFv */ +e_dn_class::e_dn_class() {} + +AUDIO_INSTANCES; /* 804EEDF8-804EEE18 -00001 0020+00 1/0 0/0 0/0 .data l_daE_DN_Method */ static actor_method_class l_daE_DN_Method = { - (process_method_func)daE_DN_Create__FP10fopAc_ac_c, - (process_method_func)daE_DN_Delete__FP10e_dn_class, - (process_method_func)daE_DN_Execute__FP10e_dn_class, - (process_method_func)daE_DN_IsDelete__FP10e_dn_class, - (process_method_func)daE_DN_Draw__FP10e_dn_class, + (process_method_func)daE_DN_Create, + (process_method_func)daE_DN_Delete, + (process_method_func)daE_DN_Execute, + (process_method_func)daE_DN_IsDelete, + (process_method_func)daE_DN_Draw, }; /* 804EEE18-804EEE48 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_DN */ @@ -549,1315 +3467,3 @@ extern actor_process_profile_definition g_profile_E_DN = { fopAc_ENEMY_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 804EEE48-804EEE54 000408 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, -}; - -/* 804EEE54-804EEE60 000414 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, -}; - -/* 804EEE60-804EEE6C 000420 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, -}; - -/* 804EEE6C-804EEE78 00042C 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 804EEE78-804EEE84 000438 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 804EEE84-804EEEA8 000444 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_804EE440, - (void*)NULL, - (void*)NULL, - (void*)func_804EE438, -}; - -/* 804EEEA8-804EEED8 000468 0030+00 3/3 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_804EE420, - (void*)NULL, - (void*)NULL, - (void*)func_804EE430, - (void*)NULL, - (void*)NULL, - (void*)func_804EE428, -}; - -/* 804EEED8-804EEEE4 000498 000C+00 2/2 0/0 0/0 .data __vt__12daE_DN_HIO_c */ -SECTION_DATA extern void* __vt__12daE_DN_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_DN_HIO_cFv, -}; - -/* 804E51AC-804E5220 0000EC 0074+00 1/1 0/0 0/0 .text __ct__12daE_DN_HIO_cFv */ -daE_DN_HIO_c::daE_DN_HIO_c() { - // NONMATCHING -} - -/* 804E5220-804E52D0 000160 00B0+00 2/2 0/0 0/0 .text dn_disappear__FP10e_dn_class */ -static void dn_disappear(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE8EC-804EE8F0 000040 0004+00 1/4 0/0 0/0 .rodata @3854 */ -SECTION_RODATA static f32 const lit_3854 = -1.0f; -COMPILER_STRIP_GATE(0x804EE8EC, &lit_3854); - -/* 804EEA34-804EEA34 000188 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_804EEA34 = "E_dn"; -#pragma pop - -/* 804E52D0-804E537C 000210 00AC+00 18/18 0/0 0/0 .text anm_init__FP10e_dn_classifUcf */ -static void anm_init(e_dn_class* param_0, int param_1, f32 param_2, u8 param_3, f32 param_4) { - // NONMATCHING -} - -/* 804E537C-804E5838 0002BC 04BC+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -static void nodeCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE8F0-804EE8F4 000044 0004+00 0/11 0/0 0/0 .rodata @4094 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4094 = 50.0f; -COMPILER_STRIP_GATE(0x804EE8F0, &lit_4094); -#pragma pop - -/* 804EE8F4-804EE8F8 000048 0004+00 0/1 0/0 0/0 .rodata @4095 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4095 = 950.0f; -COMPILER_STRIP_GATE(0x804EE8F4, &lit_4095); -#pragma pop - -/* 804E5838-804E5B20 000778 02E8+00 1/0 0/0 0/0 .text daE_DN_Draw__FP10e_dn_class */ -static void daE_DN_Draw(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E5B20-804E5BF8 000A60 00D8+00 2/2 0/0 0/0 .text other_bg_check__FP10e_dn_classP10fopAc_ac_c - */ -static void other_bg_check(e_dn_class* param_0, fopAc_ac_c* param_1) { - // NONMATCHING -} - -/* 804E5BF8-804E5CD0 000B38 00D8+00 1/1 0/0 0/0 .text other_bg_check2__FP10e_dn_classP4cXyz */ -static void other_bg_check2(e_dn_class* param_0, cXyz* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EEEF0-804EEEF4 000008 0001+03 1/1 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 804EEEF4-804EEEF8 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 - -/* 804EEEF8-804EEEFC 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 - -/* 804EEEFC-804EEF00 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 - -/* 804EEF00-804EEF04 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 - -/* 804EEF04-804EEF08 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 - -/* 804EEF08-804EEF0C 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 - -/* 804EEF0C-804EEF10 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 - -/* 804EEF10-804EEF14 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 - -/* 804EEF14-804EEF18 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 - -/* 804EEF18-804EEF1C 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 - -/* 804EEF1C-804EEF20 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 - -/* 804EEF20-804EEF24 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 - -/* 804EEF24-804EEF28 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 - -/* 804EEF28-804EEF2C 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 - -/* 804EEF2C-804EEF30 -00001 0004+00 1/2 0/0 0/0 .bss None */ -/* 804EEF2C 0001+00 data_804EEF2C @1009 */ -/* 804EEF2D 0003+00 data_804EEF2D None */ -static u8 struct_804EEF2C[4]; - -/* 804EEF30-804EEF3C 000048 000C+00 1/1 0/0 0/0 .bss @3805 */ -static u8 lit_3805[12]; - -/* 804EEF3C-804EEF64 000054 0028+00 10/11 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[40]; - -/* 804EEF64-804EEF8C 00007C 0028+00 2/2 0/0 0/0 .bss target_info */ -static u8 target_info[40]; - -/* 804EEF8C-804EEF90 0000A4 0004+00 2/2 0/0 0/0 .bss target_info_count */ -static u8 target_info_count[4]; - -/* 804E5CD0-804E5D4C 000C10 007C+00 1/1 0/0 0/0 .text s_b_sub__FPvPv */ -static void s_b_sub(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE8F8-804EE8FC 00004C 0004+00 0/5 0/0 0/0 .rodata @4322 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4322 = 30.0f; -COMPILER_STRIP_GATE(0x804EE8F8, &lit_4322); -#pragma pop - -/* 804EE8FC-804EE900 000050 0004+00 0/1 0/0 0/0 .rodata @4323 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4323 = 500.0f; -COMPILER_STRIP_GATE(0x804EE8FC, &lit_4323); -#pragma pop - -/* 804EE900-804EE904 000054 0004+00 0/1 0/0 0/0 .rodata @4324 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4324 = -125.0f; -COMPILER_STRIP_GATE(0x804EE900, &lit_4324); -#pragma pop - -/* 804EE904-804EE908 000058 0004+00 0/1 0/0 0/0 .rodata @4325 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4325 = 1500.0f; -COMPILER_STRIP_GATE(0x804EE904, &lit_4325); -#pragma pop - -/* 804E5D4C-804E61D8 000C8C 048C+00 2/2 0/0 0/0 .text search_bomb__FP10e_dn_classi */ -static void search_bomb(e_dn_class* param_0, int param_1) { - // NONMATCHING -} - -/* 804E61D8-804E61FC 001118 0024+00 4/4 0/0 0/0 .text bomb_view_check__FP10e_dn_class */ -static void bomb_view_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E61FC-804E6220 00113C 0024+00 1/1 0/0 0/0 .text bomb_check__FP10e_dn_class */ -static void bomb_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E6220-804E6264 001160 0044+00 1/1 0/0 0/0 .text player_way_check__FP10e_dn_class */ -static void player_way_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E6264-804E6340 0011A4 00DC+00 4/4 0/0 0/0 .text pl_check__FP10e_dn_classfs */ -static void pl_check(e_dn_class* param_0, f32 param_1, s16 param_2) { - // NONMATCHING -} - -/* 804E6340-804E6448 001280 0108+00 3/3 0/0 0/0 .text move_gake_check__FP10e_dn_classfSc - */ -static void move_gake_check(e_dn_class* param_0, f32 param_1, s8 param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE908-804EE90C 00005C 0004+00 0/4 0/0 0/0 .rodata @4435 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4435 = 200.0f; -COMPILER_STRIP_GATE(0x804EE908, &lit_4435); -#pragma pop - -/* 804E6448-804E6608 001388 01C0+00 1/1 0/0 0/0 .text jump_pos_check__FP10e_dn_classP4cXyz */ -static void jump_pos_check(e_dn_class* param_0, cXyz* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE90C-804EE910 000060 0004+00 0/8 0/0 0/0 .rodata @4535 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4535 = 10.0f; -COMPILER_STRIP_GATE(0x804EE90C, &lit_4535); -#pragma pop - -/* 804EE910-804EE914 000064 0004+00 0/2 0/0 0/0 .rodata @4536 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4536 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x804EE910, &lit_4536); -#pragma pop - -/* 804EE914-804EE918 000068 0004+00 0/3 0/0 0/0 .rodata @4537 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4537 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x804EE914, &lit_4537); -#pragma pop - -/* 804EE918-804EE91C 00006C 0004+00 0/3 0/0 0/0 .rodata @4538 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4538 = 2000.0f; -COMPILER_STRIP_GATE(0x804EE918, &lit_4538); -#pragma pop - -/* 804E6608-804E6A8C 001548 0484+00 2/1 0/0 0/0 .text e_dn_stay__FP10e_dn_class */ -static void e_dn_stay(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE91C-804EE920 000070 0004+00 0/11 0/0 0/0 .rodata @4539 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4539 = 3.0f; -COMPILER_STRIP_GATE(0x804EE91C, &lit_4539); -#pragma pop - -/* 804EE920-804EE924 000074 0004+00 0/3 0/0 0/0 .rodata @4540 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4540 = 1.5f; -COMPILER_STRIP_GATE(0x804EE920, &lit_4540); -#pragma pop - -/* 804EE924-804EE928 000078 0004+00 0/4 0/0 0/0 .rodata @4541 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4541 = 20.0f; -COMPILER_STRIP_GATE(0x804EE924, &lit_4541); -#pragma pop - -/* 804EE928-804EE92C 00007C 0004+00 0/12 0/0 0/0 .rodata @4542 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4542 = 5.0f; -COMPILER_STRIP_GATE(0x804EE928, &lit_4542); -#pragma pop - -/* 804EE92C-804EE930 000080 0004+00 0/1 0/0 0/0 .rodata @4543 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4543 = 40.0f; -COMPILER_STRIP_GATE(0x804EE92C, &lit_4543); -#pragma pop - -/* 804EE930-804EE934 000084 0004+00 0/0 0/0 0/0 .rodata @4544 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4544 = 13.0f / 10.0f; -COMPILER_STRIP_GATE(0x804EE930, &lit_4544); -#pragma pop - -/* 804EE934-804EE93C 000088 0004+04 0/0 0/0 0/0 .rodata @4545 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4545[1 + 1 /* padding */] = { - 75.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x804EE934, &lit_4545); -#pragma pop - -/* 804EE93C-804EE944 000090 0008+00 0/1 0/0 0/0 .rodata @4550 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4550[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804EE93C, &lit_4550); -#pragma pop - -/* 804EE944-804EE948 000098 0004+00 0/1 0/0 0/0 .rodata @4611 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4611 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x804EE944, &lit_4611); -#pragma pop - -/* 804EE948-804EE94C 00009C 0004+00 0/3 0/0 0/0 .rodata @4612 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4612 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x804EE948, &lit_4612); -#pragma pop - -/* 804EE94C-804EE950 0000A0 0004+00 0/2 0/0 0/0 .rodata @4613 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4613 = 250.0f; -COMPILER_STRIP_GATE(0x804EE94C, &lit_4613); -#pragma pop - -/* 804E6A8C-804E6DBC 0019CC 0330+00 1/1 0/0 0/0 .text e_dn_otoreac__FP10e_dn_class */ -static void e_dn_otoreac(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E6DBC-804E72C8 001CFC 050C+00 2/1 0/0 0/0 .text e_dn_bomb_action__FP10e_dn_class */ -static void e_dn_bomb_action(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE950-804EE954 0000A4 0004+00 0/1 0/0 0/0 .rodata @4715 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4715 = 600.0f; -COMPILER_STRIP_GATE(0x804EE950, &lit_4715); -#pragma pop - -/* 804EE954-804EE958 0000A8 0004+00 0/2 0/0 0/0 .rodata @4716 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4716 = -30.0f; -COMPILER_STRIP_GATE(0x804EE954, &lit_4716); -#pragma pop - -/* 804EE958-804EE95C 0000AC 0004+00 0/1 0/0 0/0 .rodata @4717 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4717 = 60.0f; -COMPILER_STRIP_GATE(0x804EE958, &lit_4717); -#pragma pop - -/* 804EE95C-804EE960 0000B0 0004+00 0/2 0/0 0/0 .rodata @4718 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4718 = 15.0f; -COMPILER_STRIP_GATE(0x804EE95C, &lit_4718); -#pragma pop - -/* 804EE960-804EE964 0000B4 0004+00 0/1 0/0 0/0 .rodata @4783 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4783 = 32768.0f; -COMPILER_STRIP_GATE(0x804EE960, &lit_4783); -#pragma pop - -/* 804EE964-804EE968 0000B8 0004+00 0/1 0/0 0/0 .rodata @4784 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4784 = 10000.0f; -COMPILER_STRIP_GATE(0x804EE964, &lit_4784); -#pragma pop - -/* 804E72C8-804E7620 002208 0358+00 1/1 0/0 0/0 .text e_dn_normal__FP10e_dn_class */ -static void e_dn_normal(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE968-804EE96C 0000BC 0004+00 0/2 0/0 0/0 .rodata @4811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4811 = -5.0f; -COMPILER_STRIP_GATE(0x804EE968, &lit_4811); -#pragma pop - -/* 804E7620-804E77A8 002560 0188+00 1/1 0/0 0/0 .text e_dn_drawback__FP10e_dn_class */ -static void e_dn_drawback(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE96C-804EE970 0000C0 0004+00 0/3 0/0 0/0 .rodata @4872 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4872 = 2.0f; -COMPILER_STRIP_GATE(0x804EE96C, &lit_4872); -#pragma pop - -/* 804EE970-804EE974 0000C4 0004+00 1/6 0/0 0/0 .rodata @4873 */ -SECTION_RODATA static f32 const lit_4873 = 150.0f; -COMPILER_STRIP_GATE(0x804EE970, &lit_4873); - -/* 804E77A8-804E7B34 0026E8 038C+00 1/1 0/0 0/0 .text e_dn_wolfbite__FP10e_dn_class */ -static void e_dn_wolfbite(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E7B34-804E7B74 002A74 0040+00 1/1 0/0 0/0 .text way_check__FP10e_dn_class */ -static void way_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE974-804EE978 0000C8 0004+00 0/1 0/0 0/0 .rodata @4933 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4933 = 1000.0f; -COMPILER_STRIP_GATE(0x804EE974, &lit_4933); -#pragma pop - -/* 804EEF90-804EEF94 0000A8 0004+00 2/2 0/0 0/0 .bss learn_check */ -static u8 learn_check[4]; - -/* 804E7B74-804E7D18 002AB4 01A4+00 1/1 0/0 0/0 .text shot_s_sub__FPvPv */ -static void shot_s_sub(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE978-804EE97C 0000CC 0004+00 0/2 0/0 0/0 .rodata @5115 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5115 = 120.0f; -COMPILER_STRIP_GATE(0x804EE978, &lit_5115); -#pragma pop - -/* 804EE97C-804EE980 0000D0 0004+00 0/1 0/0 0/0 .rodata @5116 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5116 = 32763.0f; -COMPILER_STRIP_GATE(0x804EE97C, &lit_5116); -#pragma pop - -/* 804EE980-804EE984 0000D4 0004+00 0/1 0/0 0/0 .rodata @5117 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5117 = 0.75f; -COMPILER_STRIP_GATE(0x804EE980, &lit_5117); -#pragma pop - -/* 804EE984-804EE988 0000D8 0004+00 0/4 0/0 0/0 .rodata @5118 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5118 = 0.5f; -COMPILER_STRIP_GATE(0x804EE984, &lit_5118); -#pragma pop - -/* 804EE988-804EE98C 0000DC 0004+00 0/1 0/0 0/0 .rodata @5119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5119 = 19.0f / 10.0f; -COMPILER_STRIP_GATE(0x804EE988, &lit_5119); -#pragma pop - -/* 804E7D18-804E8620 002C58 0908+00 1/1 0/0 0/0 .text e_dn_fight_run__FP10e_dn_class */ -static void e_dn_fight_run(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E8620-804E8848 003560 0228+00 1/1 0/0 0/0 .text e_dn_jump__FP10e_dn_class */ -static void e_dn_jump(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE98C-804EE990 0000E0 0004+00 0/1 0/0 0/0 .rodata @5272 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5272 = 35.0f; -COMPILER_STRIP_GATE(0x804EE98C, &lit_5272); -#pragma pop - -/* 804E8848-804E8D78 003788 0530+00 1/1 0/0 0/0 .text e_dn_gakejump__FP10e_dn_class */ -static void e_dn_gakejump(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E8D78-804E8DD8 003CB8 0060+00 2/2 0/0 0/0 .text at_hit_check__FP10e_dn_class */ -static void at_hit_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE990-804EE994 0000E4 0004+00 0/2 0/0 0/0 .rodata @5333 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5333 = 6.0f; -COMPILER_STRIP_GATE(0x804EE990, &lit_5333); -#pragma pop - -/* 804E8DD8-804E8F78 003D18 01A0+00 1/1 0/0 0/0 .text e_dn_attack_0__FP10e_dn_class */ -static void e_dn_attack_0(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E8F78-804E91D4 003EB8 025C+00 1/1 0/0 0/0 .text e_dn_attack__FP10e_dn_class */ -static void e_dn_attack(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E91D4-804E9354 004114 0180+00 1/1 0/0 0/0 .text tail_eff_set__FP10e_dn_class */ -static void tail_eff_set(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E9354-804E9544 004294 01F0+00 1/1 0/0 0/0 .text e_dn_tail_attack__FP10e_dn_class */ -static void e_dn_tail_attack(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE994-804EE998 0000E8 0004+00 0/1 0/0 0/0 .rodata @5542 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5542 = -8.0f; -COMPILER_STRIP_GATE(0x804EE994, &lit_5542); -#pragma pop - -/* 804E9544-804E973C 004484 01F8+00 2/1 0/0 0/0 .text e_dn_guard__FP10e_dn_class */ -static void e_dn_guard(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E973C-804E97EC 00467C 00B0+00 1/1 0/0 0/0 .text e_dn_s_damage__FP10e_dn_class */ -static void e_dn_s_damage(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE998-804EE99C 0000EC 0004+00 0/0 0/0 0/0 .rodata @5543 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5543 = 8.0f; -COMPILER_STRIP_GATE(0x804EE998, &lit_5543); -#pragma pop - -/* 804EE99C-804EE9A0 0000F0 0004+00 0/2 0/0 0/0 .rodata @5592 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5592 = 70.0f; -COMPILER_STRIP_GATE(0x804EE99C, &lit_5592); -#pragma pop - -/* 804EE9A0-804EE9A4 0000F4 0004+00 0/1 0/0 0/0 .rodata @5593 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5593 = -150.0f; -COMPILER_STRIP_GATE(0x804EE9A0, &lit_5593); -#pragma pop - -/* 804E97EC-804E99A0 00472C 01B4+00 1/1 0/0 0/0 .text kado_check__FP10e_dn_class */ -static void kado_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E99A0-804E9AF0 0048E0 0150+00 1/1 0/0 0/0 .text body_gake__FP10e_dn_class */ -static void body_gake(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804E9AF0-804E9B68 004A30 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE9A4-804EE9A8 0000F8 0004+00 0/1 0/0 0/0 .rodata @5977 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5977 = 8000.0f; -COMPILER_STRIP_GATE(0x804EE9A4, &lit_5977); -#pragma pop - -/* 804E9B68-804EA700 004AA8 0B98+00 2/1 0/0 0/0 .text e_dn_damage__FP10e_dn_class */ -static void e_dn_damage(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE9A8-804EE9AC 0000FC 0004+00 0/1 0/0 0/0 .rodata @5978 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5978 = -100.0f; -COMPILER_STRIP_GATE(0x804EE9A8, &lit_5978); -#pragma pop - -/* 804EE9AC-804EE9B0 000100 0004+00 0/0 0/0 0/0 .rodata @5979 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5979 = 9.0f / 5.0f; -COMPILER_STRIP_GATE(0x804EE9AC, &lit_5979); -#pragma pop - -/* 804EE9B0-804EE9B4 000104 0004+00 0/3 0/0 0/0 .rodata @5980 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5980 = -20.0f; -COMPILER_STRIP_GATE(0x804EE9B0, &lit_5980); -#pragma pop - -/* 804EE9B4-804EE9B8 000108 0004+00 0/1 0/0 0/0 .rodata @6004 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6004 = -3.0f; -COMPILER_STRIP_GATE(0x804EE9B4, &lit_6004); -#pragma pop - -/* 804EE9B8-804EE9BC 00010C 0004+00 0/1 0/0 0/0 .rodata @6005 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6005 = -6.0f; -COMPILER_STRIP_GATE(0x804EE9B8, &lit_6005); -#pragma pop - -/* 804EA700-804EA854 005640 0154+00 1/1 0/0 0/0 .text e_dn_backdrop__FP10e_dn_class */ -static void e_dn_backdrop(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804EA854-804EA9F4 005794 01A0+00 1/1 0/0 0/0 .text e_dn_water__FP10e_dn_class */ -static void e_dn_water(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE9BC-804EE9C0 000110 0004+00 0/1 0/0 0/0 .rodata @6097 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6097 = -8613.0f; -COMPILER_STRIP_GATE(0x804EE9BC, &lit_6097); -#pragma pop - -/* 804EE9C0-804EE9C4 000114 0004+00 0/1 0/0 0/0 .rodata @6098 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6098 = 8017.0f; -COMPILER_STRIP_GATE(0x804EE9C0, &lit_6098); -#pragma pop - -/* 804EE9C4-804EE9C8 000118 0004+00 0/1 0/0 0/0 .rodata @6099 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6099 = -8044.0f; -COMPILER_STRIP_GATE(0x804EE9C4, &lit_6099); -#pragma pop - -/* 804EE9C8-804EE9CC 00011C 0004+00 0/1 0/0 0/0 .rodata @6100 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6100 = 8616.0f; -COMPILER_STRIP_GATE(0x804EE9C8, &lit_6100); -#pragma pop - -/* 804EE9CC-804EE9D0 000120 0004+00 0/2 0/0 0/0 .rodata @6101 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6101 = 3000.0f; -COMPILER_STRIP_GATE(0x804EE9CC, &lit_6101); -#pragma pop - -/* 804EE9D0-804EE9D4 000124 0004+00 0/2 0/0 0/0 .rodata @6102 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6102 = 800.0f; -COMPILER_STRIP_GATE(0x804EE9D0, &lit_6102); -#pragma pop - -/* 804EA9F4-804EAD1C 005934 0328+00 1/1 0/0 0/0 .text e_dn_reg__FP10e_dn_class */ -static void e_dn_reg(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804EAD1C-804EADD4 005C5C 00B8+00 1/1 0/0 0/0 .text wolfkick_damage__FP10e_dn_class */ -static void wolfkick_damage(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE9D4-804EE9D8 000128 0004+00 0/1 0/0 0/0 .rodata @6120 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6120 = 700.0f; -COMPILER_STRIP_GATE(0x804EE9D4, &lit_6120); -#pragma pop - -/* 804EADD4-804EAEE4 005D14 0110+00 1/1 0/0 0/0 .text big_damage__FP10e_dn_class */ -static void big_damage(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804EAEE4-804EAF94 005E24 00B0+00 1/1 0/0 0/0 .text small_damage__FP10e_dn_class */ -static void small_damage(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804EAF94-804EB344 005ED4 03B0+00 1/1 0/0 0/0 .text damage_check__FP10e_dn_class */ -static void damage_check(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804EB344-804EC854 006284 1510+00 2/1 0/0 0/0 .text action__FP10e_dn_class */ -static void action(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804EC854-804ECB50 007794 02FC+00 1/1 0/0 0/0 .text anm_se_set__FP10e_dn_class */ -static void anm_se_set(e_dn_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EE9D8-804EE9DC 00012C 0004+00 0/0 0/0 0/0 .rodata @6928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6928 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x804EE9D8, &lit_6928); -#pragma pop - -/* 804EE9DC-804EE9E0 000130 0004+00 0/0 0/0 0/0 .rodata @6929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6929 = -4.0f; -COMPILER_STRIP_GATE(0x804EE9DC, &lit_6929); -#pragma pop - -/* 804EE9E0-804EE9E4 000134 0004+00 0/0 0/0 0/0 .rodata @6930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6930 = 7.0f; -COMPILER_STRIP_GATE(0x804EE9E0, &lit_6930); -#pragma pop - -/* 804EE9E4-804EE9E8 000138 0004+00 0/0 0/0 0/0 .rodata @6931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6931 = 2500.0f; -COMPILER_STRIP_GATE(0x804EE9E4, &lit_6931); -#pragma pop - -/* 804EE9E8-804EE9EC 00013C 0004+00 0/0 0/0 0/0 .rodata @6932 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6932 = 15000.0f; -COMPILER_STRIP_GATE(0x804EE9E8, &lit_6932); -#pragma pop - -/* 804EE9EC-804EE9F0 000140 0004+00 0/0 0/0 0/0 .rodata @6933 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6933 = 12000.0f; -COMPILER_STRIP_GATE(0x804EE9EC, &lit_6933); -#pragma pop - -/* 804EE9F0-804EE9F4 000144 0004+00 0/0 0/0 0/0 .rodata @6934 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6934 = -1000000000.0f; -COMPILER_STRIP_GATE(0x804EE9F0, &lit_6934); -#pragma pop - -/* 804EE9F4-804EE9F8 000148 0004+00 0/1 0/0 0/0 .rodata @7355 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7355 = -10.0f; -COMPILER_STRIP_GATE(0x804EE9F4, &lit_7355); -#pragma pop - -/* 804EE9F8-804EE9FC 00014C 0004+00 0/2 0/0 0/0 .rodata @7356 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7356 = -200.0f; -COMPILER_STRIP_GATE(0x804EE9F8, &lit_7356); -#pragma pop - -/* 804EE9FC-804EEA00 000150 0004+00 0/1 0/0 0/0 .rodata @7357 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7357 = -20000.0f; -COMPILER_STRIP_GATE(0x804EE9FC, &lit_7357); -#pragma pop - -/* 804EEA00-804EEA04 000154 0004+00 0/1 0/0 0/0 .rodata @7358 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7358 = 200000.0f; -COMPILER_STRIP_GATE(0x804EEA00, &lit_7358); -#pragma pop - -/* 804EEA04-804EEA08 000158 0004+00 0/1 0/0 0/0 .rodata @7359 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7359 = 30000.0f; -COMPILER_STRIP_GATE(0x804EEA04, &lit_7359); -#pragma pop - -/* 804EEA08-804EEA0C 00015C 0004+00 0/1 0/0 0/0 .rodata @7360 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7360 = 45.0f; -COMPILER_STRIP_GATE(0x804EEA08, &lit_7360); -#pragma pop - -/* 804EEA0C-804EEA10 000160 0004+00 0/2 0/0 0/0 .rodata @7361 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7361 = 80.0f; -COMPILER_STRIP_GATE(0x804EEA0C, &lit_7361); -#pragma pop - -/* 804EEA10-804EEA14 000164 0004+00 0/1 0/0 0/0 .rodata @7362 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7362 = -23500.0f; -COMPILER_STRIP_GATE(0x804EEA10, &lit_7362); -#pragma pop - -/* 804EEA14-804EEA18 000168 0004+00 0/1 0/0 0/0 .rodata @7363 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7363 = -50000.0f; -COMPILER_STRIP_GATE(0x804EEA14, &lit_7363); -#pragma pop - -/* 804EEA18-804EEA1C 00016C 0004+00 0/1 0/0 0/0 .rodata @7364 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7364 = -30000.0f; -COMPILER_STRIP_GATE(0x804EEA18, &lit_7364); -#pragma pop - -/* 804EEA1C-804EEA20 000170 0004+00 0/1 0/0 0/0 .rodata @7365 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7365 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x804EEA1C, &lit_7365); -#pragma pop - -/* 804EEA20-804EEA24 000174 0004+00 0/1 0/0 0/0 .rodata @7366 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7366 = 180.0f; -COMPILER_STRIP_GATE(0x804EEA20, &lit_7366); -#pragma pop - -/* 804EEA24-804EEA28 000178 0004+00 0/1 0/0 0/0 .rodata @7367 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7367 = -5000.0f; -COMPILER_STRIP_GATE(0x804EEA24, &lit_7367); -#pragma pop - -/* 804EEA28-804EEA2C 00017C 0004+00 0/1 0/0 0/0 .rodata @7368 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7368 = -300.0f; -COMPILER_STRIP_GATE(0x804EEA28, &lit_7368); -#pragma pop - -/* 804EEA34-804EEA34 000188 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_804EEA39 = "D_MN07"; -#pragma pop - -/* 804EEF94-804EEF98 0000AC 0004+00 1/2 0/0 0/0 .bss c_start */ -static u8 c_start[4]; - -/* 804ECB50-804ED83C 007A90 0CEC+00 2/1 0/0 0/0 .text daE_DN_Execute__FP10e_dn_class */ -static void daE_DN_Execute(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804ED83C-804ED844 00877C 0008+00 1/0 0/0 0/0 .text daE_DN_IsDelete__FP10e_dn_class */ -static bool daE_DN_IsDelete(e_dn_class* param_0) { - return true; -} - -/* 804ED844-804ED8AC 008784 0068+00 1/0 0/0 0/0 .text daE_DN_Delete__FP10e_dn_class */ -static void daE_DN_Delete(e_dn_class* param_0) { - // NONMATCHING -} - -/* 804ED8AC-804EDAEC 0087EC 0240+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EEA2C-804EEA30 000180 0004+00 0/1 0/0 0/0 .rodata @7548 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7548 = 100000.0f; -COMPILER_STRIP_GATE(0x804EEA2C, &lit_7548); -#pragma pop - -/* 804EEA30-804EEA34 000184 0004+00 0/1 0/0 0/0 .rodata @7549 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7549 = 65535.0f; -COMPILER_STRIP_GATE(0x804EEA30, &lit_7549); -#pragma pop - -/* 804EDAEC-804EDE58 008A2C 036C+00 1/0 0/0 0/0 .text daE_DN_Create__FP10fopAc_ac_c */ -static void daE_DN_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 804EDE58-804EE034 008D98 01DC+00 1/1 0/0 0/0 .text __ct__10e_dn_classFv */ -e_dn_class::e_dn_class() { - // NONMATCHING -} - -/* 804EE034-804EE07C 008F74 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 804EE07C-804EE0C4 008FBC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 804EE0C4-804EE190 009004 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* 804EE190-804EE214 0090D0 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} - -/* 804EE214-804EE270 009154 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 804EE270-804EE2E0 0091B0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 804EE2E0-804EE350 009220 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 804EE350-804EE354 009290 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 804EE354-804EE39C 009294 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 804EE39C-804EE3E4 0092DC 0048+00 2/1 0/0 0/0 .text __dt__12daE_DN_HIO_cFv */ -daE_DN_HIO_c::~daE_DN_HIO_c() { - // NONMATCHING -} - -/* 804EE3E4-804EE420 009324 003C+00 0/0 1/0 0/0 .text __sinit_d_a_e_dn_cpp */ -void __sinit_d_a_e_dn_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x804EE3E4, __sinit_d_a_e_dn_cpp); -#pragma pop - -/* 804EE420-804EE428 009360 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_804EE420() { - // NONMATCHING -} - -/* 804EE428-804EE430 009368 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_804EE428() { - // NONMATCHING -} - -/* 804EE430-804EE438 009370 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_804EE430() { - // NONMATCHING -} - -/* 804EE438-804EE440 009378 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_804EE438() { - // NONMATCHING -} - -/* 804EE440-804EE448 009380 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_804EE440() { - // NONMATCHING -} - -/* 804EE85C-804EE898 00979C 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804EEF98-804EEF9C 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_804EEF98[4]; -#pragma pop - -/* 804EEF9C-804EEFA0 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_804EEF9C[4]; -#pragma pop - -/* 804EEFA0-804EEFA4 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFA0[4]; -#pragma pop - -/* 804EEFA4-804EEFA8 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFA4[4]; -#pragma pop - -/* 804EEFA8-804EEFAC 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFA8[4]; -#pragma pop - -/* 804EEFAC-804EEFB0 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFAC[4]; -#pragma pop - -/* 804EEFB0-804EEFB4 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFB0[4]; -#pragma pop - -/* 804EEFB4-804EEFB8 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804EEFB4[4]; -#pragma pop - -/* 804EEFB8-804EEFBC 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_804EEFB8[4]; -#pragma pop - -/* 804EEFBC-804EEFC0 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_804EEFBC[4]; -#pragma pop - -/* 804EEFC0-804EEFC4 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFC0[4]; -#pragma pop - -/* 804EEFC4-804EEFC8 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFC4[4]; -#pragma pop - -/* 804EEFC8-804EEFCC 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFC8[4]; -#pragma pop - -/* 804EEFCC-804EEFD0 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFCC[4]; -#pragma pop - -/* 804EEFD0-804EEFD4 0000E8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804EEFD0[4]; -#pragma pop - -/* 804EEFD4-804EEFD8 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_804EEFD4[4]; -#pragma pop - -/* 804EEFD8-804EEFDC 0000F0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_804EEFD8[4]; -#pragma pop - -/* 804EEFDC-804EEFE0 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_804EEFDC[4]; -#pragma pop - -/* 804EEFE0-804EEFE4 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFE0[4]; -#pragma pop - -/* 804EEFE4-804EEFE8 0000FC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFE4[4]; -#pragma pop - -/* 804EEFE8-804EEFEC 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFE8[4]; -#pragma pop - -/* 804EEFEC-804EEFF0 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFEC[4]; -#pragma pop - -/* 804EEFF0-804EEFF4 000108 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFF0[4]; -#pragma pop - -/* 804EEFF4-804EEFF8 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_804EEFF4[4]; -#pragma pop - -/* 804EEFF8-804EEFFC 000110 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_804EEFF8[4]; -#pragma pop - -/* 804EEA34-804EEA34 000188 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_e_mf.cpp b/src/d/actor/d_a_e_mf.cpp index 8f087f41ec6..7f7c9f9a2bb 100644 --- a/src/d/actor/d_a_e_mf.cpp +++ b/src/d/actor/d_a_e_mf.cpp @@ -5,498 +5,3307 @@ #include "d/actor/d_a_e_mf.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +#include "Z2AudioLib/Z2Instances.h" UNK_REL_DATA; #include "f_op/f_op_actor_enemy.h" +#include "d/d_bomb.h" +#include "f_op/f_op_kankyo_mng.h" +#include "d/actor/d_a_horse.h" +#include "d/d_com_inf_game.h" - -// -// Forward References: -// - -extern "C" void __ct__12daE_MF_HIO_cFv(); -extern "C" static void mf_disappear__FP10e_mf_class(); -extern "C" static void anm_init__FP10e_mf_classifUcf(); -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" static void daE_MF_Draw__FP10e_mf_class(); -extern "C" static void other_bg_check__FP10e_mf_classP10fopAc_ac_c(); -extern "C" static void other_bg_check2__FP10e_mf_classP4cXyz(); -extern "C" static void s_b_sub__FPvPv(); -extern "C" static void search_bomb__FP10e_mf_classi(); -extern "C" static void bomb_view_check__FP10e_mf_class(); -extern "C" static void bomb_check__FP10e_mf_class(); -extern "C" static void player_way_check__FP10e_mf_class(); -extern "C" static void pl_check__FP10e_mf_classfs(); -extern "C" static void move_gake_check__FP10e_mf_classfSc(); -extern "C" static void jump_pos_check__FP10e_mf_classP4cXyz(); -extern "C" static void e_mf_stay__FP10e_mf_class(); -extern "C" static void e_mf_otoreac__FP10e_mf_class(); -extern "C" static void e_mf_bomb_action__FP10e_mf_class(); -extern "C" static void e_mf_normal__FP10e_mf_class(); -extern "C" static void e_mf_drawback__FP10e_mf_class(); -extern "C" static void e_mf_wolfbite__FP10e_mf_class(); -extern "C" static void way_check__FP10e_mf_class(); -extern "C" static void shot_s_sub__FPvPv(); -extern "C" static void e_mf_fight_run__FP10e_mf_class(); -extern "C" static void e_mf_jump__FP10e_mf_class(); -extern "C" static void e_mf_gakejump__FP10e_mf_class(); -extern "C" static void at_hit_check__FP10e_mf_class(); -extern "C" static void e_mf_attack__FP10e_mf_class(); -extern "C" static void tail_eff_set__FP10e_mf_class(); -extern "C" static void e_mf_tail_attack__FP10e_mf_class(); -extern "C" static void e_mf_guard__FP10e_mf_class(); -extern "C" static void e_mf_s_damage__FP10e_mf_class(); -extern "C" static void kado_check__FP10e_mf_class(); -extern "C" static void body_gake__FP10e_mf_class(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" static void e_mf_damage__FP10e_mf_class(); -extern "C" static void e_mf_backdrop__FP10e_mf_class(); -extern "C" static void e_mf_water__FP10e_mf_class(); -extern "C" static void wolfkick_damage__FP10e_mf_class(); -extern "C" static void big_damage__FP10e_mf_class(); -extern "C" static void small_damage__FP10e_mf_class(); -extern "C" static void damage_check__FP10e_mf_class(); -extern "C" static void action__FP10e_mf_class(); -extern "C" static void anm_se_set__FP10e_mf_class(); -extern "C" static void daE_MF_Execute__FP10e_mf_class(); -extern "C" static bool daE_MF_IsDelete__FP10e_mf_class(); -extern "C" static void daE_MF_Delete__FP10e_mf_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daE_MF_Create__FP10fopAc_ac_c(); -extern "C" void __ct__10e_mf_classFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daE_MF_HIO_cFv(); -extern "C" void __sinit_d_a_e_mf_cpp(); -extern "C" static void func_807134E8(); -extern "C" static void func_807134F0(); -extern "C" static void func_807134F8(); -extern "C" static void func_80713500(); -extern "C" static void func_80713508(); -extern "C" void __dt__5csXyzFv(); -extern "C" extern char const* const d_a_e_mf__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 mDoExt_modelUpdateDL__FP8J3DModel(); -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 entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -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 fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_getTalkEventPartner__FPC10fopAc_ac_c(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void fopAcM_otoCheck__FPC10fopAc_ac_cf(); -extern "C" void fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_wayBgCheck__FPC10fopAc_ac_cff(); -extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -extern "C" void fopKyM_createMpillar__FPC4cXyzf(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void checkStateCarry__7dBomb_cFv(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void __ct__9dJntCol_cFv(); -extern "C" void init__9dJntCol_cFP10fopAc_ac_cPC13dJntColData_cP8J3DModeli(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void addReal__21dDlst_shadowControl_cFUlP8J3DModel(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_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__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void __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 __dt__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 GetCoHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void StartCAt__8dCcD_SphFR4cXyz(); -extern "C" void MoveCAt__8dCcD_SphFR4cXyz(); -extern "C" void cc_pl_cut_bit_get__Fv(); -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 checkBoomerangCharge__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_Sound_set__F4cXyziUii(); -extern "C" void dKy_Sound_get__Fv(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC3Vec(); -extern "C" void 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_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void func_802807E0(); -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 __construct_array(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -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 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 807139A0-807139A4 00002C 0004+00 0/1 0/0 0/0 .rodata @3849 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3849 = 13.0f / 10.0f; -COMPILER_STRIP_GATE(0x807139A0, &lit_3849); -#pragma pop - -/* 807139A4-807139A8 000030 0004+00 0/1 0/0 0/0 .rodata @3850 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3850 = 8.0f; -COMPILER_STRIP_GATE(0x807139A4, &lit_3850); -#pragma pop - -/* 807139A8-807139AC 000034 0004+00 0/1 0/0 0/0 .rodata @3851 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3851 = 28.0f; -COMPILER_STRIP_GATE(0x807139A8, &lit_3851); -#pragma pop - -/* 807139AC-807139B0 000038 0004+00 0/6 0/0 0/0 .rodata @3852 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3852 = 300.0f; -COMPILER_STRIP_GATE(0x807139AC, &lit_3852); -#pragma pop - -/* 807139B0-807139B4 00003C 0004+00 0/1 0/0 0/0 .rodata @3853 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3853 = 350.0f; -COMPILER_STRIP_GATE(0x807139B0, &lit_3853); -#pragma pop - -/* 80713B40-80713B6C -00001 002C+00 1/1 0/0 0/0 .data @4569 */ -SECTION_DATA static void* lit_4569[11] = { - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x4C), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x78), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x158), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x1AC), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x230), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x280), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x2D4), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x330), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x3BC), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x40C), - (void*)(((char*)e_mf_stay__FP10e_mf_class) + 0x3F8), +enum Action { + /* 0x00 */ ACTION_NORMAL = 0, + /* 0x03 */ ACTION_FIGHT_RUN = 3, + /* 0x05 */ ACTION_ATTACK = 5, + /* 0x06 */ ACTION_TAIL_ATTACK = 6, + /* 0x07 */ ACTION_GUARD = 7, + /* 0x08 */ ACTION_JUMP = 8, + /* 0x09 */ ACTION_STAY = 9, + /* 0x0A */ ACTION_OTOREAC = 10, + /* 0x0B */ ACTION_BOMB_ACTION = 11, + /* 0x0C */ ACTION_DRAWBACK = 12, + /* 0x0D */ ACTION_WOLFBITE = 13, + /* 0x14 */ ACTION_S_DAMAGE = 20, + /* 0x15 */ ACTION_DAMAGE = 21, + /* 0x17 */ ACTION_BACKDROP = 23, + /* 0x18 */ ACTION_WATER = 24, + /* 0x19 */ ACTION_GAKEJUMP = 25, }; -/* 80713B6C-80713B9C -00001 0030+00 1/1 0/0 0/0 .data @4741 */ -SECTION_DATA static void* lit_4741[12] = { - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x98), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0xE4), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x11C), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x15C), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x1A8), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x294), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x498), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x498), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x498), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x498), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x304), - (void*)(((char*)e_mf_bomb_action__FP10e_mf_class) + 0x3C4), +enum Animation { + /* 0x04 */ ANM_ATTACK_TAIL_01 = 4, + /* 0x05 */ ANM_ATTACK_TAIL_02, + /* 0x06 */ ANM_ATTACK_TAIL_03, + /* 0x07 */ ANM_ATTACK_00, + /* 0x08 */ ANM_ATTACK_01, + /* 0x09 */ ANM_BLOWNOFF, + /* 0x0A */ ANM_BRUSH_LEFT_UP, + /* 0x0B */ ANM_BRUSH_RIGHT_UP, + /* 0x0C */ ANM_DAMAGE_W, + /* 0x0D */ ANM_DIE_LEFT, + /* 0x0E */ ANM_DIE_LEFT_UP, + /* 0x0F */ ANM_DIE_RIGHT, + /* 0x10 */ ANM_DIE_RIGHT_UP, + /* 0x11 */ ANM_DIE_W, + /* 0x12 */ ANM_DRAWBACK, + /* 0x13 */ ANM_DROWNED_A, + /* 0x14 */ ANM_DROWNED_B, + /* 0x15 */ ANM_FIND, + /* 0x16 */ ANM_GUARD, + /* 0x17 */ ANM_HANGED, + /* 0x18 */ ANM_HANGED_DAMAGE, + /* 0x19 */ ANM_HANGED_BRUSH, + /* 0x1A */ ANM_HANGED_WAIT, + /* 0x1B */ ANM_JUMP_A, + /* 0x1C */ ANM_JUMP_B, + /* 0x1D */ ANM_JUMP_C, + /* 0x1E */ ANM_RUN, + /* 0x1F */ ANM_WAIT_01, + /* 0x20 */ ANM_WAIT_02, + /* 0x21 */ ANM_WAIT_03, + /* 0x22 */ ANM_WAIT_04, + /* 0x23 */ ANM_WALK, }; -/* 80713B9C-80713BC0 -00001 0024+00 1/1 0/0 0/0 .data @5567 */ -SECTION_DATA static void* lit_5567[9] = { - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x50), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x88), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x238), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x238), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x238), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0xB8), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0xFC), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x150), - (void*)(((char*)e_mf_guard__FP10e_mf_class) + 0x1FC), -}; +/* 8070A70C-8070A77C 0000EC 0070+00 1/1 0/0 0/0 .text __ct__12daE_MF_HIO_cFv */ +daE_MF_HIO_c::daE_MF_HIO_c() { + field_0x4 = -1; + model_size = 1.3f; + movement_speed = 8.0f; + dash_speed = 28.0f; + battle_init_range = 300.0f; + attack_init_range = 350.0f; + field_0x1c = 3; + field_0x1e = 40; + field_0x20 = 80; + field_0x22 = 1; + invulnerable = 0; +} -/* 80713BC0-80713BC8 0000B8 0008+00 1/1 0/0 0/0 .data kado_bit$5580 */ -SECTION_DATA static u8 kado_bit[8] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, -}; +/* 8070A77C-8070A82C 00015C 00B0+00 2/2 0/0 0/0 .text mf_disappear__FP10e_mf_class */ +static void mf_disappear(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp1c, sp28; -/* 80713BC8-80713BD0 0000C0 0008+00 1/1 0/0 0/0 .data kado_check_x$5581 */ -SECTION_DATA static u8 kado_check_x[8] = { - 0x42, 0xA0, 0x00, 0x00, 0xC2, 0xA0, 0x00, 0x00, -}; + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp1c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp1c, &sp28); -/* 80713BD0-80713C50 -00001 0080+00 1/1 0/0 0/0 .data @6010 */ -SECTION_DATA static void* lit_6010[32] = { - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x194), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x250), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x4F0), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x6E0), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x820), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x8D0), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x974), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x974), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xAC8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0x9B8), - (void*)(((char*)e_mf_damage__FP10e_mf_class) + 0xA9C), -}; + fopAcM_createDisappear(a_this, &sp28, 13, 0, 36); + fopAcM_delete(a_this); -/* 80713C50-80713C68 000148 0016+02 1/1 0/0 0/0 .data j_spd$6379 */ -SECTION_DATA static u8 j_spd[22 + 2 /* padding */] = { - 0x40, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - 0x10, - 0x00, - 0x10, - 0x00, - 0x10, - 0x00, - 0x10, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - 0x40, - 0x00, - /* padding */ - 0x00, - 0x00, -}; + int swBit = fopAcM_GetParam(a_this) >> 24; + if (swBit != 0xFF) { + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(a_this)); + } +} -/* 80713C68-80713C70 000160 0008+00 1/1 0/0 0/0 .data foot_idx$6427 */ -SECTION_DATA static u8 foot_idx[8] = { - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1E, -}; +/* 8070A82C-8070A8D8 00020C 00AC+00 16/16 0/0 0/0 .text anm_init__FP10e_mf_classifUcf */ +static void anm_init(e_mf_class* i_this, int i_anmID, f32 i_morf, u8 i_attr, f32 i_rate) { + i_this->mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_mf", i_anmID), i_attr, i_morf, + i_rate, 0.0f, -1.0f); + i_this->mAnmID = i_anmID; +} -/* 80713C70-80713CD8 -00001 0068+00 1/1 0/0 0/0 .data @6893 */ -SECTION_DATA static void* lit_6893[26] = { - (void*)(((char*)action__FP10e_mf_class) + 0xE4), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0xF0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x100), - (void*)(((char*)action__FP10e_mf_class) + 0x110), - (void*)(((char*)action__FP10e_mf_class) + 0x120), - (void*)(((char*)action__FP10e_mf_class) + 0x130), - (void*)(((char*)action__FP10e_mf_class) + 0x140), - (void*)(((char*)action__FP10e_mf_class) + 0x14C), - (void*)(((char*)action__FP10e_mf_class) + 0x174), - (void*)(((char*)action__FP10e_mf_class) + 0x158), - (void*)(((char*)action__FP10e_mf_class) + 0x168), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x180), - (void*)(((char*)action__FP10e_mf_class) + 0x18C), - (void*)(((char*)action__FP10e_mf_class) + 0x1C0), - (void*)(((char*)action__FP10e_mf_class) + 0x198), - (void*)(((char*)action__FP10e_mf_class) + 0x1A4), - (void*)(((char*)action__FP10e_mf_class) + 0x1B4), -}; +/* 8070A8D8-8070AD94 0002B8 04BC+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ +static int nodeCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + int jointNo = i_joint->getJntNo(); + J3DModel* model = j3dSys.getModel(); + e_mf_class* i_this = (e_mf_class*)model->getUserArea(); + if (i_this != NULL) { + MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); + + if (jointNo != 0) { + if (jointNo == 22) { + cMtx_YrotM(*calc_mtx, i_this->field_0x812); + cMtx_ZrotM(*calc_mtx, i_this->field_0x7d0 + (i_this->field_0x810 - i_this->field_0x742[2].x)); + } else if (jointNo == 23) { + cMtx_YrotM(*calc_mtx, i_this->field_0x7da); + } else if (jointNo == 24) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x7dc[0]); + } else if (jointNo == 27) { + cMtx_YrotM(*calc_mtx, i_this->field_0x7dc[1]); + } else if (jointNo == 28) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x7dc[2]); + } else if (jointNo == 2) { + cMtx_YrotM(*calc_mtx, (i_this->field_0x6da / 2) + (i_this->field_0x742[1].y + - i_this->field_0x6d6)); + cMtx_ZrotM(*calc_mtx, i_this->field_0x742[1].x + i_this->field_0x7cc[1]); + } else if (jointNo == 3 || jointNo == 4) { + cMtx_YrotM(*calc_mtx, i_this->field_0x742[0].y + (i_this->field_0x6da - i_this->field_0x6d6)); + cMtx_ZrotM(*calc_mtx, i_this->field_0x7cc[0] + (i_this->field_0x742[0].x - i_this->field_0x6d8)); + } else if (jointNo == 11) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x742[3].y + i_this->field_0x7d2); + } else if (jointNo == 12) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x742[4].y + i_this->field_0x7d4); + } else if (jointNo == 17) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x742[5].y + i_this->field_0x7d6); + } else if (jointNo == 18) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x742[6].y + i_this->field_0x7d8); + } else if (jointNo >= 31 && jointNo <= 34) { + cMtx_YrotM(*calc_mtx, i_this->field_0x742[jointNo - 2].x + i_this->field_0x806); + cMtx_ZrotM(*calc_mtx, i_this->field_0x742[jointNo - 3].z); + } + } + + if (i_this->field_0x7ea != 0) { + if ((jointNo & 1) != 0) { + cMtx_YrotM(*calc_mtx, i_this->field_0x7ea); + } else if ((jointNo & 2) != 0) { + cMtx_XrotM(*calc_mtx, i_this->field_0x7ea); + } else if ((jointNo & 4) != 0) { + cMtx_ZrotM(*calc_mtx, i_this->field_0x7ea); + } + } + + model->setAnmMtx(jointNo, *calc_mtx); + MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); + if (jointNo == 0) { + MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); + cMtx_YrotM(*calc_mtx, 0); + cMtx_XrotM(*calc_mtx, 0); + cMtx_ZrotM(*calc_mtx, 0); + model->setAnmMtx(jointNo, *calc_mtx); + MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); + } + + if (jointNo == 0) { + MTXCopy(model->getAnmMtx(jointNo), *calc_mtx); + cMtx_YrotM(*calc_mtx, 0); + cMtx_XrotM(*calc_mtx, 0); + cMtx_ZrotM(*calc_mtx, 0); + model->setAnmMtx(jointNo, *calc_mtx); + MTXCopy(*calc_mtx, J3DSys::mCurrentMtx); + } + } + } + + return 1; +} + +/* 8070AD94-8070B03C 000774 02A8+00 1/0 0/0 0/0 .text daE_MF_Draw__FP10e_mf_class */ +static int daE_MF_Draw(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + if (i_this->field_0x728 != 0) { + return 1; + } + + J3DModel* model = i_this->mpModelMorf->getModel(); + g_env_light.settingTevStruct(0, &a_this->current.pos, &a_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &a_this->tevStr); + + J3DModelData* modelData; + J3DMaterial* matNode_p; + if (i_this->field_0x6a4 != 0) { + modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + matNode_p = modelData->getMaterialNodePointer(i); + matNode_p->getTevColor(0)->r = i_this->field_0x6a8; + matNode_p->getTevColor(0)->g = i_this->field_0x6a8; + matNode_p->getTevColor(0)->b = i_this->field_0x6a8; + } + } + + i_this->mpModelMorf->entryDL(); + + if (i_this->field_0x6a4 != 0) { + modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + matNode_p = modelData->getMaterialNodePointer(i); + matNode_p->getTevColor(0)->r = 0; + matNode_p->getTevColor(0)->g = 0; + matNode_p->getTevColor(0)->b = 0; + } + } + + g_env_light.setLightTevColorType_MAJI(i_this->mpAxeModel, &a_this->tevStr); + mDoExt_modelUpdateDL(i_this->mpAxeModel); + g_env_light.setLightTevColorType_MAJI(i_this->mpShieldModel, &a_this->tevStr); + mDoExt_modelUpdateDL(i_this->mpShieldModel); + + cXyz sp50; + sp50.set(a_this->current.pos.x, a_this->current.pos.y + 50.0f, a_this->current.pos.z); + i_this->mShadowKey = dComIfGd_setShadow(i_this->mShadowKey, 1, model, &sp50, 1150.0f, 0.0f, + a_this->current.pos.y, i_this->mObjAcch.GetGroundH(), + i_this->mObjAcch.m_gnd, &a_this->tevStr, 0, 1.0f, + dDlst_shadowControl_c::getSimpleTex()); + dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpAxeModel); + dComIfGd_addRealShadow(i_this->mShadowKey, i_this->mpShieldModel); + + return 1; +} + +/* 8070B03C-8070B114 000A1C 00D8+00 2/2 0/0 0/0 .text other_bg_check__FP10e_mf_classP10fopAc_ac_c */ +static BOOL other_bg_check(e_mf_class* i_this, fopAc_ac_c* i_actor) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz start, end; + + end = i_actor->current.pos; + end.y += 100.0f; + start = a_this->current.pos; + start.y = a_this->eyePos.y; + lin_chk.Set(&start, &end, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + return TRUE; + } + + return FALSE; +} + +/* 8070B114-8070B1EC 000AF4 00D8+00 1/1 0/0 0/0 .text other_bg_check2__FP10e_mf_classP4cXyz */ +static BOOL other_bg_check2(e_mf_class* i_this, cXyz* param_2) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz start, end; + + end = *param_2; + end.y += 100.0f; + start = a_this->current.pos; + start.y = a_this->eyePos.y; + + lin_chk.Set(&start, &end, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + return TRUE; + } + + return FALSE; +} + +UNK_REL_BSS; + +u8 l_initHIO; + +/* 80713F74-80713F98 000054 0024+00 9/10 0/0 0/0 .bss l_HIO */ +daE_MF_HIO_c l_HIO; + +/* 80713F98-80713FC0 000078 0028+00 2/2 0/0 0/0 .bss target_info */ +fopAc_ac_c* target_info[10]; + +/* 80713FC0-80713FC4 0000A0 0004+00 2/2 0/0 0/0 .bss target_info_count */ +int target_info_count; + +/* 8070B1EC-8070B268 000BCC 007C+00 1/1 0/0 0/0 .text s_b_sub__FPvPv */ +static void* s_b_sub(void* i_actor, void* i_data) { + if (fopAcM_IsActor(i_actor) && dBomb_c::checkBombActor((fopAc_ac_c*)i_actor) && !((dBomb_c*)i_actor)->checkStateExplode() && target_info_count < 10) { + target_info[target_info_count] = (fopAc_ac_c*)i_actor; + target_info_count++; + } + + return NULL; +} + +/* 8070B268-8070B6E0 000C48 0478+00 2/2 0/0 0/0 .text search_bomb__FP10e_mf_classi */ +static dBomb_c* search_bomb(e_mf_class* i_this, BOOL param_2) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBomb_c* bomb; + target_info_count = 0; + for (int i = 0; i < 10; i++) { + target_info[i] = NULL; + } + + fpcM_Search(s_b_sub, i_this); + + f32 threshold = 50.0f; + if (target_info_count != 0) { + cXyz sp44, sp50, sp5c; + for (int i = 0; i < target_info_count;) { + bomb = (dBomb_c*)target_info[i]; + sp44.x = bomb->current.pos.x - a_this->eyePos.x; + sp44.y = 50.0f + bomb->current.pos.y - a_this->eyePos.y; + sp44.z = bomb->current.pos.z - a_this->eyePos.z; + sp50.x = bomb->current.pos.x - a_this->current.pos.x; + sp50.y = bomb->current.pos.y - a_this->current.pos.y; + sp50.z = bomb->current.pos.z - a_this->current.pos.z; + + if (sp44.abs() < threshold && !(sp50.abs() > i_this->mPlayerDistance + 30.0f) && (!other_bg_check(i_this, bomb) || !param_2)) { + if (param_2) { + if (fabsf(50.0f + bomb->current.pos.y - a_this->eyePos.y) <= 300.0f) { + s16 sVar1 = a_this->shape_angle.y - cM_atan2s(sp44.x, sp44.z); + if (sVar1 < 0) { + sVar1 = -1 * sVar1; + } + + if ((u16)sVar1 < 20000) { + return bomb; + } + + cMtx_YrotS(*calc_mtx, -a_this->shape_angle.y); + MtxPosition(&sp44, &sp5c); + + if (fabsf(sp5c.x) < 500.0f && fabsf(sp5c.y) < 300.0f && sp5c.z > -125.0f && sp5c.z < 500.0f) { + return bomb; + } + } + } else { + return bomb; + } + } + + i++; + if (i == target_info_count) { + i = 0; + threshold += 50.0f; + if (threshold > 1500.0f) { + return NULL; + } + } + } + } else { + return NULL; + } + + return NULL; +} + +/* 8070B6E0-8070B704 0010C0 0024+00 4/4 0/0 0/0 .text bomb_view_check__FP10e_mf_class */ +static dBomb_c* bomb_view_check(e_mf_class* i_this) { + return search_bomb(i_this, TRUE); +} + +/* 8070B704-8070B728 0010E4 0024+00 1/1 0/0 0/0 .text bomb_check__FP10e_mf_class */ +static dBomb_c* bomb_check(e_mf_class* i_this) { + return search_bomb(i_this, FALSE); +} + +/* 8070B728-8070B76C 001108 0044+00 1/1 0/0 0/0 .text player_way_check__FP10e_mf_class */ +static BOOL player_way_check(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + s16 sVar1 = a_this->shape_angle.y - dComIfGp_getPlayer(0)->shape_angle.y; + if ((int)sVar1 < 0) { + sVar1 = -sVar1; + } + + if (((u32)sVar1 & 0xFFFF) < 0x6000) { + return FALSE; + } + + return TRUE; +} + +/* 8070B76C-8070B848 00114C 00DC+00 4/4 0/0 0/0 .text pl_check__FP10e_mf_classfs */ +static int pl_check(e_mf_class* i_this, f32 param_2, s16 param_3) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + if (i_this->mPlayerDistance < param_2) { + s16 sVar1 = a_this->shape_angle.y - i_this->mYAngleToPlayer; + if (sVar1 < param_3 && sVar1 > (s16)-param_3 && !other_bg_check(i_this, player)) { + return 1; + } + } + + for (int i = 0; i <= 2; i++) { + if (i_this->field_0xa7c[i].ChkCoHit() != 0) { + if (player == dCc_GetAc(i_this->field_0xa7c[i].GetCoHitObj()->GetAc())) { + return 2; + } + } + } + + return 0; +} + +/* 8070B848-8070B950 001228 0108+00 3/3 0/0 0/0 .text move_gake_check__FP10e_mf_classfSc */ +static BOOL move_gake_check(e_mf_class* i_this, f32 param_2, s8 param_3) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_GndChk gnd_chk; + cXyz sp84, sp90; + + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + sp84.x = 0.0f; + sp84.y = 100.0f; + if (param_3 != 0) { + sp84.z = -param_2; + } else { + sp84.z = param_2; + } + MtxPosition(&sp84, &sp90); + sp90 += a_this->current.pos; + gnd_chk.SetPos(&sp90); + + if (a_this->current.pos.y - dComIfG_Bgsp().GroundCross(&gnd_chk) > 300.0f) { + return TRUE; + } + + return FALSE; +} + +/* 8070B950-8070BB10 001330 01C0+00 1/1 0/0 0/0 .text jump_pos_check__FP10e_mf_classP4cXyz */ +static BOOL jump_pos_check(e_mf_class* i_this, cXyz* param_2) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_GndChk gnd_chk; + cXyz sp94, spa0; + f32 fVar1 = 300.0f; + + cMtx_YrotS(*calc_mtx, i_this->mYAngleToPlayer); + sp94.x = 0.0f; + sp94.y = 200.0f; + + int i = 0; + while (i < 10) { + sp94.z = fVar1; + MtxPosition(&sp94, &spa0); + spa0 += a_this->current.pos; + gnd_chk.SetPos(&spa0); + spa0.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if ((a_this->current.pos.y - spa0.y) < 200.0f) { + *param_2 = spa0; + sp94.z += 200.0f; + MtxPosition(&sp94, &spa0); + spa0 += a_this->current.pos; + gnd_chk.SetPos(&spa0); + spa0.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if ((a_this->current.pos.y - spa0.y) < 200.0f) { + *param_2 = spa0; + } + + return TRUE; + } + + fVar1 += 50.0f; + i++; + } + + return FALSE; +} + +/* 8070BB10-8070BF94 0014F0 0484+00 2/1 0/0 0/0 .text e_mf_stay__FP10e_mf_class */ +static void e_mf_stay(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp30; + + i_this->field_0x6d4 = 5; + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_WAIT_01, 10.0f, 2, cM_rndF(0.1f) + 0.9f); + i_this->field_0x5b4 = 1; + // fallthrough + case 1: + if (fopAcM_otoCheck(a_this, 2000.0f) || daPy_getPlayerActorClass()->checkWolfBark()) { + SND_INFLUENCE* sound = dKy_Sound_get(); + sp30 = sound->position - a_this->current.pos; + if (cM_atan2s(sp30.y, JMAFastSqrt(sp30.x * sp30.x + sp30.z * sp30.z)) > 0x1000) { + i_this->field_0x5b4 = 5; + } else { + i_this->field_0x5b4 = 2; + } + + i_this->field_0x6c0[0] = cM_rndF(10.0f) + 10.0f; + i_this->field_0x718 = sound->position; + } + break; + + case 2: + if (i_this->field_0x6c0[0] == 0) { + anm_init(i_this, ANM_FIND, 3.0f, 0, 1.5f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_FIND, -1); + i_this->field_0x5b4 = 3; + } + break; + + case 3: + if (i_this->mpModelMorf->isStop()) { + if (other_bg_check2(i_this, &i_this->field_0x718)) { + i_this->field_0x6c0[0] = cM_rndF(10.0f) + 20.0f; + i_this->field_0x5b4 = 4; + } else { + i_this->mAction = 10; + i_this->field_0x5b4 = 0; + } + } + break; + + case 4: + if (i_this->field_0x6c0[0] == 0) { + i_this->field_0x5b4 = 10; + i_this->field_0x6c0[0] = cM_rndF(10.0f) + 30.0f; + anm_init(i_this, ANM_WAIT_03, 5.0f, 2, 1.5f); + } + break; + + case 5: + if (i_this->field_0x6c0[0] == 0) { + anm_init(i_this, ANM_FIND, 3.0f, 0, 1.5f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_FIND, -1); + i_this->field_0x5b4 = 6; + } + break; + + case 6: + if (i_this->mpModelMorf->isStop()) { + i_this->field_0x6c0[0] = cM_rndF(10.0f) + 20.0f; + i_this->field_0x5b4 = 7; + } + break; + + case 7: + if (i_this->field_0x6c0[0] == 0) { + i_this->field_0x5b4 = 10; + i_this->field_0x6c0[0] = cM_rndF(40.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_04, 5.0f, 2, 1.3f); + i_this->mpModelMorf->setFrame(cM_rndF(75.0f)); + } + break; + + case 8: + if (i_this->mpModelMorf->isStop()) { + i_this->field_0x5b4 = 0; + } + break; + + case 10: + if (i_this->field_0x6c0[0] == 0) { + i_this->field_0x5b4 = 0; + } + } + + if ((i_this->field_0x6ac & 15) == 0) { + if (pl_check(i_this, i_this->field_0x6b8, 0x4000) != 0) { + i_this->mAction = 3; + i_this->field_0x5b4 = -10; + i_this->field_0x6c0[0] = 60; + } else if (bomb_view_check(i_this) != NULL) { + i_this->mAction = 11; + i_this->field_0x5b4 = 0; + } + } +} + +/* 8070BF94-8070C2C4 001974 0330+00 1/1 0/0 0/0 .text e_mf_otoreac__FP10e_mf_class */ +static void e_mf_otoreac(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp40, sp4c; + f32 fVar1 = 0.0f; + i_this->field_0x6d4 = 2; + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_WAIT_01, 10.0f, 2, cM_rndF(0.2f) + 1.5f); + i_this->field_0x6c0[0] = cM_rndF(10.0f) + 20.0f; + i_this->field_0x5b4 = 1; + // fallthrough + case 1: + if (i_this->field_0x6c0[0] == 0) { + anm_init(i_this, ANM_RUN, 5.0f, 2, cM_rndFX(0.05f) + 1.0f); + i_this->field_0x5b4 = 2; + } + break; + + case 2: + fVar1 = l_HIO.dash_speed; + if ((i_this->field_0x6ac & 3) == 0) { + if ((i_this->field_0x6ac & 4) != 0) { + i_this->field_0x10c4 = 1; + } else { + i_this->field_0x10c4 = 2; + } + } + + sp40 = i_this->field_0x718 - a_this->current.pos; + cLib_addCalcAngleS2(&a_this->current.angle.y, cM_atan2s(sp40.x, sp40.z), 2, 0xC00); + if (sp40.abs() < 250.0f || i_this->mObjAcch.ChkWallHit() != 0) { + i_this->mAction = 0; + i_this->field_0x5b4 = 0; + i_this->field_0x6c0[0] = cM_rndF(50.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, 2, 1.0f); + } + break; + + + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + if ((i_this->field_0x6ac & 15) == 0) { + if (pl_check(i_this, i_this->field_0x6b8, 0x4000) != 0) { + i_this->mAction = 3; + i_this->field_0x5b4 = -10; + i_this->field_0x6c0[0] = 60; + } else if (bomb_view_check(i_this) != NULL) { + i_this->mAction = 11; + i_this->field_0x5b4 = 0; + } + } +} + +/* 8070C2C4-8070C7C4 001CA4 0500+00 2/1 0/0 0/0 .text e_mf_bomb_action__FP10e_mf_class */ +static void e_mf_bomb_action(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + s16 sVar2; + cXyz sp3c, sp48; + dBomb_c* bomb = bomb_check(i_this); + if (bomb == NULL) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + return; + } + + sp3c.x = bomb->current.pos.x - a_this->current.pos.x; + sp3c.z = bomb->current.pos.z - a_this->current.pos.z; + s16 sVar1 = cM_atan2s(sp3c.x, sp3c.z); + f32 fVar1 = 0.0f; + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_FIND, 3.0f, 0, 1.5f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_FIND_BOMB, -1); + i_this->field_0x5b4 = 1; + break; + + case 1: + if (i_this->mpModelMorf->isStop()) { + i_this->field_0x5b4 = 2; + } + break; + + case 2: + i_this->field_0x5b4 = 3; + anm_init(i_this, ANM_WAIT_01, 5.0f, 2, 1.0f); + i_this->field_0x6c0[1] = cM_rndF(10.0f) + 10.0f; + // fallthrough + case 3: + if (i_this->field_0x6c0[1] == 0 && bomb->speedF < 0.1f) { + i_this->field_0x5b4 = 4; + anm_init(i_this, ANM_RUN, 5.0f, 2, cM_rndFX(0.05f) + 1.0f); + } + break; + + case 4: + if (bomb->speedF < 0.1f && !bomb->checkStateCarry() && JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 250.0f) { + sVar2 = i_this->mYAngleToPlayer - a_this->shape_angle.y; + if (sVar2 < 0x4000 && sVar2 > -0x4000) { + i_this->field_0x5b4 = 10; + break; + } + } + + sVar1 += 0x8000; + fVar1 = l_HIO.dash_speed; + if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) > 600.0f) { + i_this->field_0x5b4 = 5; + anm_init(i_this, ANM_WAIT_01, 5.0f, 2, 1.0f); + } + + break; + + case 5: + i_this->mSound.startCreatureSoundLevel(Z2SE_EN_MF_V_LOOK_BOMB, 0, -1); + sVar1 = i_this->mYAngleToPlayer; + if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 500.0f) { + i_this->field_0x5b4 = 2; + } + break; + + case 10: + i_this->field_0x6d2 = 0; + fVar1 = l_HIO.dash_speed; + if (JMAFastSqrt(sp3c.x * sp3c.x + sp3c.z * sp3c.z) < 100.0f) { + i_this->field_0x6c0[0] = 20; + i_this->field_0x5b4 = 11; + anm_init(i_this, ANM_RUN, 5.0f, 0, cM_rndFX(0.05f) + 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_KICK_BOMB, -1); + } + + if (bomb->speedF > 0.1f) { + i_this->field_0x5b4 = 2; + } + break; + + case 11: + i_this->field_0x6d2 = 0; + sVar1 = i_this->mYAngleToPlayer; + + if (i_this->field_0x6c0[0] >= 10) { + cMtx_YrotS(*calc_mtx, sVar1); + sp3c.x = -30.0f; + sp3c.y = 0.0f; + sp3c.z = 60.0f; + MtxPosition(&sp3c, &sp48); + sp48 += a_this->current.pos; + + cLib_addCalc2(&bomb->current.pos.x, sp48.x, 1.0f, 15.0f); + cLib_addCalc2(&bomb->current.pos.z, sp48.z, 1.0f, 15.0f); + + if (i_this->field_0x6c0[0] == 10) { + bomb->speedF = 30.0f; + bomb->speed.y = 30.0f; + bomb->current.angle.y = a_this->shape_angle.y; + } + } + + if (i_this->field_0x6c0[0] == 0) { + anm_init(i_this, ANM_WAIT_01, 5.0f, 2, 1.0f); + i_this->field_0x5b4 = 5; + } + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + cLib_addCalcAngleS2(&a_this->current.angle.y, sVar1, 4, 0x1000); + i_this->field_0x6d4 = 2; + i_this->field_0x718 = bomb->current.pos; +} + +/* 8070C7C4-8070CB1C 0021A4 0358+00 1/1 0/0 0/0 .text e_mf_normal__FP10e_mf_class */ +static void e_mf_normal(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp44, sp50; + f32 fVar1 = 0.0f; + s16 sVar1 = 0x4000; + s16 sVar2, sVar3; + + switch (i_this->field_0x5b4) { + case 0: + case 1: + case 2: + if (i_this->field_0x6c0[0] == 0) { + if (fopAcM_wayBgCheck(a_this, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)) { + sVar2 = cM_rndFX(10000.0f) + 32768.0f; + i_this->field_0x6c0[1] = 40; + } else { + sp50.x = a_this->home.pos.x + cM_rndFX(600.0f); + sp50.y = a_this->home.pos.y; + sp50.z = a_this->home.pos.z + cM_rndFX(600.0f); + sp44 = sp50 - a_this->current.pos; + + sVar2 = cM_atan2s(sp44.x, sp44.z) - a_this->current.angle.y; + if (sVar2 > 0x3000) { + sVar2 = 0x3000; + } else if (sVar2 < -0x3000) { + sVar2 = -0x3000; + } + } + + i_this->field_0x5d4 = a_this->current.angle.y + sVar2; + anm_init(i_this, ANM_WALK, 10.0f, 2, 1.0f); + i_this->field_0x5b4 = 3; + i_this->field_0x6c0[0] = cM_rndF(100.0f) + 100.0f; + } else { + sVar1 = 0x7000; + } + break; + + case 3: + fVar1 = l_HIO.movement_speed; + sVar2 = a_this->current.angle.y; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 2, 0x400); + sVar3 = a_this->current.angle.y - i_this->field_0x5d4; + if (sVar3 > 0x1000 || sVar3 < -0x1000) { + fVar1 = 0.0f; + } + + sVar2 -= a_this->current.angle.y; + sVar2 *= 2; + if (sVar2 > 0x1000) { + sVar2 = 0x1000; + } else if (sVar2 < -0x1000) { + sVar2 = -0x1000; + } + + cLib_addCalcAngleS2(&i_this->field_0x806, sVar2, 2, 0x400); + + if (i_this->field_0x6c0[0] == 0 || + (i_this->field_0x6c0[1] == 0 && (fopAcM_wayBgCheck(a_this, 200.0f, 50.0f) || move_gake_check(i_this, 200.0f, 0)))) { + i_this->field_0x5b4 = 2; + i_this->field_0x6c0[0] = cM_rndF(100.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, 2, 1.0f); + } + break; + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 3.0f); + BOOL bVar1 = fopAcM_otoCheck(a_this, 2000.0f) | daPy_getPlayerActorClass()->checkWolfBark(); + if ((i_this->field_0x6ac & 15) == 0 || bVar1) { + if (bVar1 || pl_check(i_this, i_this->field_0x6b8, sVar1) != 0) { + i_this->mAction = 3; + i_this->field_0x5b4 = -10; + i_this->field_0x6c0[0] = 60; + } + + if (bomb_view_check(i_this) != NULL) { + i_this->mAction = 11; + i_this->field_0x5b4 = 0; + } + } +} + +/* 8070CB1C-8070CCB8 0024FC 019C+00 1/1 0/0 0/0 .text e_mf_drawback__FP10e_mf_class */ +static void e_mf_drawback(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_DRAWBACK, 5.0f, 0, 1.0f); + i_this->field_0x5b4 = 1; + a_this->speedF = -5.0f; + i_this->field_0x6c8 = 10; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DRAWBACK, -1); + i_this->field_0x5d4 = player->shape_angle.y + 0x8000; + i_this->field_0x6c0[0] = 50; + break; + + case 1: + a_this->onHeadLockFlg(); + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->field_0x5d4, 4, 0x400); + cLib_addCalc0(&a_this->speedF, 1.0f, 0.1f); + + if (i_this->mpModelMorf->isStop() || i_this->field_0x6c0[0] == 0) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_AWAKE, -1); + } + break; + } + + if (move_gake_check(i_this, 50.0f, 1)) { + i_this->mAction = 23; + i_this->field_0x5b4 = 0; + } +} + +/* 8070CCB8-8070D090 002698 03D8+00 1/1 0/0 0/0 .text e_mf_wolfbite__FP10e_mf_class */ +static void e_mf_wolfbite(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + i_this->field_0x6c8 = 10; + cLib_addCalc0(&a_this->speedF, 1.0f, 2.0f); + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_HANGED, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 1; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DRAWBACK, -1); + a_this->health -= 10; + i_this->field_0x10b8 = 0; + break; + + case 1: + if (i_this->mpModelMorf->isStop()) { + anm_init(i_this, ANM_HANGED_WAIT, 3.0f, 2, 1.0f); + i_this->field_0x5b4 = 2; + } + break; + + case 2: + if (i_this->mAnmID == ANM_HANGED_DAMAGE) { + if (i_this->mpModelMorf->isStop()) { + anm_init(i_this, ANM_HANGED_WAIT, 3.0f, 2, 1.0f); + } + } + + if (a_this->health <= 0 || a_this->checkWolfBiteDamage()) { + a_this->offWolfBiteDamage(); + anm_init(i_this, ANM_HANGED_DAMAGE, 2.0f, 0, 1.0f); + a_this->health -= 10; + if (a_this->health <= 0) { + player->offWolfEnemyHangBite(); + i_this->field_0x730 = (a_this->shape_angle.y - 0x8000) - player->shape_angle.y; + i_this->field_0x72c = 150.0f; + i_this->mAction = 21; + i_this->field_0x5b4 = 0; + i_this->field_0x704.y = player->shape_angle.y + 0x8000; + a_this->speed.y = 0.0f; + i_this->field_0x6e4 = -1.0f; + i_this->field_0x808 = 50; + i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 32); + i_this->field_0x6f0 = 1; + i_this->field_0x6c8 = 1000; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DEATH, -1); + return; + } + + i_this->field_0x10b8++; + if (i_this->field_0x10b8 >= 4) { + player->offWolfEnemyHangBite(); + anm_init(i_this, ANM_HANGED_BRUSH, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 3; + } + + i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 30); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DAMAGE, -1); + } + + if (!player->checkWolfEnemyHangBiteOwn(a_this)) { + anm_init(i_this, ANM_HANGED_BRUSH, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 3; + } + break; + + case 3: + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_AWAKE, -1); + } + } +} + +/* 8070D090-8070D0D0 002A70 0040+00 1/1 0/0 0/0 .text way_check__FP10e_mf_class */ +static int way_check(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + s16 sVar1 = a_this->shape_angle.y - i_this->mYAngleToPlayer; + if (sVar1 <= 0x4000 && sVar1 >= -0x4000) { + return 0; + } + + if (sVar1 < 0) { + return 1; + } + + return 2; +} + +/* 8070D0D0-8070D2C8 002AB0 01F8+00 1/1 0/0 0/0 .text shot_s_sub__FPvPv */ +static void* shot_s_sub(void* i_actor, void* i_data) { + e_mf_class* i_this = (e_mf_class*)i_data; + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + if ((fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_ARROW && (fopAcM_GetParam(i_actor) == 1 || fopAcM_GetParam(i_actor) == 2)) || + fopAcM_GetName(i_actor) == PROC_BOOMERANG && dComIfGp_checkPlayerStatus0(0, 0x80000) == 0 && daPy_py_c::checkBoomerangCharge() && fopAcM_GetParam(i_actor) == 1) { + cXyz sp28(a_this->current.pos - ((fopAc_ac_c*)i_actor)->current.pos); + if (sp28.abs() < 1000.0f) { + return i_actor; + } + } + + if (dComIfGp_checkPlayerStatus0(0, 0x400) != 0 && i_this->mPlayerDistance < 1000.0f) { + return dComIfGp_getPlayer(0); + } + + return NULL; +} + +/* 8070D2C8-8070DBB4 002CA8 08EC+00 1/1 0/0 0/0 .text e_mf_fight_run__FP10e_mf_class */ +static void e_mf_fight_run(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp4c, sp58; + f32 fVar1 = 0.0f; + int frame = i_this->mpModelMorf->getFrame(); + s8 sVar4 = 1; + + if (pl_check(i_this, i_this->field_0x6b8 + 50.0f, 0x7FFF) == 0 && i_this->field_0x6c0[0] == 0) { + if (i_this->field_0x6ca == 0) { + sVar4 = 0; + } + } else { + i_this->field_0x6ca = 40; + } + + switch (i_this->field_0x5b4) { + case -10: + anm_init(i_this, ANM_WAIT_01, 5.0f, 2, 1.0f); + i_this->field_0x6c0[1] = cM_rndF(10.0f) + 15.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_FIND, -1); + i_this->field_0x5b4 = -9; + break; + + case -9: + cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); + if (i_this->field_0x6c0[1] == 0) { + i_this->field_0x5b4 = 0; + } + break; + + case 0: + anm_init(i_this, ANM_RUN, 5.0f, 2, cM_rndFX(0.05f) + 1.0f); + i_this->field_0x5b4 = 1; + i_this->field_0x80c = 0; + // fallthrough + case 1: + fVar1 = l_HIO.dash_speed; + if ((i_this->field_0x6ac & 3) == 0) { + if ((i_this->field_0x6ac & 4) != 0) { + i_this->field_0x10c4 = 1; + } else { + i_this->field_0x10c4 = 2; + } + } + + if (i_this->mObjAcch.ChkWallHit() != 0 && !fopAcM_wayBgCheck(a_this, 200.0f, 120.0f)) { + i_this->field_0x80c++; + } else if (i_this->mPlayerDistance < l_HIO.battle_init_range) { + anm_init(i_this, ANM_WAIT_02, 5.0f, 2, 1.0f); + i_this->field_0x5b4 = 2; + i_this->field_0x6c0[2] = cM_rndF(30.0f) + 30.0f; + } + + if (i_this->field_0x80c > 20) { + i_this->mAction = 8; + i_this->field_0x5b4 = 0; + return; + } + + if (move_gake_check(i_this, 50.0f, 0)) { + i_this->mAction = 25; + i_this->field_0x5b4 = 0; + i_this->field_0x6c8 = 100; + a_this->speedF = 0.0f; + return; + } + break; + + case 2: + i_this->field_0x80e = 1; + if (frame == 7 || frame == 21) { + a_this->speed.y = 10.0f; + if (i_this->mPlayerDistance > (l_HIO.battle_init_range + 250.0f)) { + i_this->field_0x5b4 = 0; + a_this->current.angle.y = a_this->shape_angle.y; + break; + } + + if (i_this->mPlayerDistance > (l_HIO.battle_init_range + 100.0f)) { + a_this->current.angle.y = i_this->mYAngleToPlayer; + } else if (i_this->mPlayerDistance < (l_HIO.battle_init_range - 100.0f)) { + a_this->current.angle.y = -i_this->mYAngleToPlayer; + } else { + a_this->current.angle.y = cM_rndFX(32763.0f); + } + + a_this->speedF = cM_rndF(5.0f) + 5.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_BREATH, -1); + } + + if (frame == 13 || frame == 27) { + a_this->speedF = 0.0f; + i_this->field_0x10c4 = 3; + if (frame == 13) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_RUN_L, 0, -1); + } else { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_RUN_R, 0, -1); + } + } + + a_this->gravity = -5.0f; + break; + } + + s16 sVar1; + if (i_this->field_0x5b4 >= 0) { + if (i_this->field_0x80e == 0) { + sVar1 = a_this->current.angle.y; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 2, 0x800); + sVar1 -= a_this->current.angle.y; + s16 sVar2 = a_this->current.angle.y - i_this->mYAngleToPlayer; + if (sVar2 > 0x800 || sVar2 < -0x800) { + fVar1 = 0.0f; + } + + cLib_addCalc2(&a_this->speedF, fVar1, 1.0f, 5.0f); + } else { + sVar1 = a_this->shape_angle.y; + cLib_addCalcAngleS2(&a_this->shape_angle.y, i_this->mYAngleToPlayer, 4, 0x800); + sVar1 -= a_this->shape_angle.y; + } + + sVar1 *= 2; + if (sVar1 > 0x1000) { + sVar1 = 0x1000; + } else if (sVar1 < -0x1000) { + sVar1 = -0x1000; + } + cLib_addCalcAngleS2(&i_this->field_0x806, sVar1, 2, 0x400); + } + + u8 sVar3 = 0; + if (fpcM_Search(shot_s_sub, i_this) != NULL || daPy_getPlayerActorClass()->checkHookshotShootReturnMode()) { + sVar3 = 1; + OS_REPORT(" DEF ON !!\n"); + } + + if (i_this->mPlayerDistance < 300.0f && daPy_getPlayerActorClass()->checkSpinnerRide() != 0) { + sVar3 = 2; + } + + if (sVar4 == 0) { + if (i_this->field_0x6ca == 0) { + i_this->mAction = 0; + i_this->field_0x5b4 = 0; + i_this->field_0x6c0[0] = cM_rndF(50.0f) + 50.0f; + anm_init(i_this, ANM_WAIT_03, 10.0f, 2, 1.0f); + + if (i_this->field_0x80e == 0) { + return; + } + + a_this->current.angle.y = a_this->shape_angle.y; + return; + } + } else { + if ((sVar3 == 2 || dComIfGp_checkPlayerStatus1(0, 0x2000000) != 0) || (((i_this->mXAngleToPlayer < 0x1000 && i_this->mXAngleToPlayer > -0x1000) || sVar3 != 0) && player_way_check(i_this))) { + if ((sVar3 != 0 || (i_this->mPlayerDistance < l_HIO.battle_init_range && + ((daPy_getPlayerActorClass()->getCutAtFlg() != 0 || daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_JUMP) || + ((i_this->field_0x6ac & 48) != 0 && daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK)))) && i_this->field_0x72c < 1.0f) { + i_this->mAction = 7; + if (cc_pl_cut_bit_get() == 0x100) { + i_this->field_0x5b4 = 0; + } else { + i_this->field_0x5b4 = 5; + } + + i_this->field_0x6e8 = 30.0f; + i_this->field_0x6ec = a_this->shape_angle.y; + i_this->field_0x6c0[0] = 0; + i_this->field_0x6c8 = 15; + } else { + if (i_this->mPlayerDistance < l_HIO.attack_init_range) { + if (i_this->field_0x6c0[2] == 0) { + i_this->field_0x6c0[2] = cM_rndF(60.0f) + 30.0f; + if (way_check(i_this) == 0 && cM_rndF(1.0f) < 0.65f) { + i_this->mAction = 5; + i_this->field_0x5b4 = 0; + } else { + i_this->mAction = 6; + i_this->field_0x5b4 = 0; + } + } + } else { + i_this->field_0x6c0[2] = cM_rndF(50.0f) + 30.0f; + } + + } + } + } + + i_this->field_0x6d4 = 1; + if ((i_this->field_0x6ac & 15) == 0 && bomb_view_check(i_this) != NULL) { + i_this->mAction = 11; + i_this->field_0x5b4 = 0; + } + + if (move_gake_check(i_this, 150.0f, 1) && (i_this->field_0x6ac & 15) == 0 && cM_rndF(1.0f) < 0.5f) { + i_this->field_0x6e0 = cM_rndF(10.0f) + 10.0f; + i_this->field_0x6e1 = cM_rndF(1.9f); + } + + if (move_gake_check(i_this, 50.0f, 1)) { + if (cM_rndF(1.0f) < 0.5f) { + i_this->mAction = 6; + i_this->field_0x5b4 = 0; + } else { + i_this->mAction = 25; + i_this->field_0x5b4 = 0; + i_this->field_0x5c8 = a_this->current.pos; + i_this->field_0x5bc = a_this->current.pos; + i_this->field_0x6c8 = 100; + } + + a_this->speedF = 0.0f; + } + + if (i_this->mAction != 3 && i_this->field_0x80e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } +} + +/* 8070DBB4-8070DDDC 003594 0228+00 1/1 0/0 0/0 .text e_mf_jump__FP10e_mf_class */ +static void e_mf_jump(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->field_0x6d4 = 1; + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_JUMP_A, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 1; + return; + + case 1: + if (!i_this->mpModelMorf->isStop()) { + return; + } + + a_this->speed.y = 50.0f; + i_this->field_0x5b4 = 2; + i_this->field_0x10c4 = 3; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_JUMP, -1); + // fallthrough + case 2: + a_this->speedF = 30.0f; + if (a_this->speed.y <= 0.0f) { + anm_init(i_this, ANM_JUMP_B, 5.0f, 0, 1.0f); + i_this->field_0x5b4 = 3; + } + return; + + case 3: + if (!i_this->mObjAcch.ChkGroundHit()) { + return; + } + + anm_init(i_this, ANM_JUMP_C, 1.0f, 0, 1.0f); + i_this->field_0x5b4 = 4; + i_this->field_0x10c4 = 3; + i_this->field_0x6c0[0] = 3; + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_R, 0, -1); + return; + + case 4: + if (i_this->field_0x6c0[0] == 1) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_L, 0, -1); + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 10.0f); + if (!i_this->mpModelMorf->isStop()) { + return; + } + + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + return; + } +} + +/* 8070DDDC-8070E30C 0037BC 0530+00 1/1 0/0 0/0 .text e_mf_gakejump__FP10e_mf_class */ +static void e_mf_gakejump(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp24, sp30; + + i_this->field_0x6d4 = 1; + switch (i_this->field_0x5b4) { + case 0: + if (jump_pos_check(i_this, &i_this->field_0x5bc)) { + anm_init(i_this, ANM_JUMP_A, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 2; + a_this->current.angle.y = i_this->mYAngleToPlayer; + return; + } + + if (i_this->mAnmID != ANM_WAIT_01) { + anm_init(i_this, ANM_WAIT_01, 5.0f, 2, cM_rndF(0.1f) + 0.9f); + i_this->field_0x6c0[0] = cM_rndF(15.0f) + 35.0f; + i_this->field_0x5b4 = 1; + } + + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 4, 0x800); + return; + + case 1: + i_this->field_0x6d4 = 2; + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + sp24.x = 0.0f; + sp24.y = 0.0f; + sp24.z = 100.0f; + MtxPosition(&sp24, &i_this->field_0x718); + i_this->field_0x718 += a_this->current.pos; + + if (i_this->field_0x6c0[0] != 0) { + return; + } + + i_this->field_0x5b4 = 0; + return; + + case 2: + if (!i_this->mpModelMorf->isStop()) { + return; + } + + if (jump_pos_check(i_this, &i_this->field_0x5bc)) { + i_this->field_0x5b4 = 3; + i_this->field_0x10c4 = 3; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_JUMP, -1); + i_this->field_0x6c0[0] = 20; + i_this->field_0x6c0[1] = 60; + i_this->field_0x5c8 = a_this->current.pos; + } else { + anm_init(i_this, ANM_WAIT_01, 5.0f, 2, cM_rndF(0.1f) + 0.9f); + i_this->field_0x6c0[0] = cM_rndF(15.0f) + 35.0f; + i_this->field_0x5b4 = 1; + return; + } + // fallthrough + case 3: + i_this->field_0x5d8 = 1; + sp24 = i_this->field_0x5bc - a_this->current.pos; + i_this->field_0x5d4 = cM_atan2s(sp24.x, sp24.z); + i_this->field_0x5d6 = -cM_atan2s(sp24.y, JMAFastSqrt(sp24.x * sp24.x + sp24.z * sp24.z)); + a_this->speedF = 50.0f; + + if (i_this->field_0x6c0[0] == 1) { + anm_init(i_this, ANM_JUMP_B, 5.0f, 0, 1.0f); + } + + if (sp24.abs() < (a_this->speedF * 1.1f)) { + a_this->current.pos = i_this->field_0x5bc; + anm_init(i_this, ANM_JUMP_C, 1.0f, 0, 1.0f); + i_this->field_0x5b4 = 4; + i_this->field_0x10c4 = 3; + i_this->field_0x6c0[0] = 3; + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_R, 0, -1); + a_this->speedF = 0.0f; + i_this->field_0x6c8 = 0; + } + + if (i_this->field_0x6c0[1] == 0 || i_this->mObjAcch.ChkWallHit() != 0) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + } + return; + + case 4: + if (i_this->field_0x6c0[0] == 1) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_L, 0, -1); + } + + if (!i_this->mpModelMorf->isStop()) { + return; + } + + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + return; + } +} + +/* 8070E30C-8070E36C 003CEC 0060+00 2/2 0/0 0/0 .text at_hit_check__FP10e_mf_class */ +static fopAc_ac_c* at_hit_check(e_mf_class* i_this) { + if (i_this->field_0x5b4 >= 10) { + return NULL; + } + + if (i_this->field_0xe24.ChkAtHit() != 0) { + return dCc_GetAc(i_this->field_0xe24.GetAtHitObj()->GetAc()); + } + + return NULL; +} + +/* 8070E36C-8070E5E0 003D4C 0274+00 1/1 0/0 0/0 .text e_mf_attack__FP10e_mf_class */ +static void e_mf_attack(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp34, sp40; + int frame = i_this->mpModelMorf->getFrame(); + + i_this->field_0x6d4 = 1; + s16 sVar1, sVar2; + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_ATTACK_TAIL_02, 6.0f, 0, 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_KNIFE2_A, -1); + i_this->field_0x5b4 = 1; + // fallthrough + case 1: + if (frame < 15 || (frame >= 34 && frame <= 43)) { + sVar1 = a_this->current.angle.y; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mYAngleToPlayer, 2, 0x800); + sVar1 -= a_this->current.angle.y; + sVar1 *= 2; + if (sVar1 > 0x1000) { + sVar1 = 0x1000; + } else if (sVar1 < -0x1000) { + sVar1 = -0x1000; + } + cLib_addCalcAngleS2(&i_this->field_0x806, sVar1, 2, 0x400); + } + + if (frame >= 15 && frame <= 20) { + i_this->field_0x6cf = 1; + i_this->field_0x6ce = 0; + } + + if (frame >= 34 && frame <= 43) { + i_this->field_0x6cf = 1; + i_this->field_0x6ce = 1; + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + sp34.x = 0.0f; + sp34.y = 0.0f; + if (i_this->field_0x6c0[1] != 0) { + sp34.z = -35.0f; + } else { + sp34.z = 25.0f; + } + MtxPosition(&sp34, &sp40); + a_this->current.pos += sp40; + } + + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + } + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 5.0f); + if (i_this->field_0x6cf != 0) { + fopAc_ac_c* actor_p = at_hit_check(i_this); + if (actor_p != NULL && fopAcM_GetName(actor_p) == PROC_ALINK && daPy_getPlayerActorClass()->checkPlayerGuard()) { + i_this->mpModelMorf->setPlaySpeed(0.0f); + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + } + } +} + +/* 8070E5E0-8070E760 003FC0 0180+00 1/1 0/0 0/0 .text tail_eff_set__FP10e_mf_class */ +static void tail_eff_set(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + J3DModel* model = i_this->mpModelMorf->getModel(); + i_this->field_0x10e4 = dComIfGp_particle_set(i_this->field_0x10e4, 0x815F, &a_this->current.pos, NULL, NULL); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->field_0x10e4); + if (emitter != NULL) { + MTXCopy(model->getAnmMtx(0), *calc_mtx); + emitter->setGlobalRTMatrix(*calc_mtx); + } + + i_this->field_0x10e8 = dComIfGp_particle_set(i_this->field_0x10e8, 0x8160, &a_this->current.pos, NULL, NULL); + emitter = dComIfGp_particle_getEmitter(i_this->field_0x10e8); + if (emitter != NULL) { + MTXCopy(model->getAnmMtx(0), *calc_mtx); + emitter->setGlobalRTMatrix(*calc_mtx); + } +} + +/* 8070E760-8070EA10 004140 02B0+00 1/1 0/0 0/0 .text e_mf_tail_attack__FP10e_mf_class */ +static void e_mf_tail_attack(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp30, sp3c; + int frame = i_this->mpModelMorf->getFrame(); + + i_this->field_0x6d4 = 1; + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_ATTACK_01, 5.0f, 0, 1.0f); + i_this->mpModelMorf->setFrame(20.0f); + i_this->field_0x5b4 = 1; + i_this->field_0x6c0[1] = 0; + break; + + case 1: + tail_eff_set(i_this); + if (frame >= 33 && frame <= 41) { + i_this->field_0x6cf = 1; + i_this->field_0x6ce = 2; + cMtx_YrotS(*calc_mtx, i_this->mYAngleToPlayer); + sp30.x = 0.0f; + sp30.y = 0.0f; + sp30.z = 30.0f; + MtxPosition(&sp30, &sp3c); + a_this->current.pos += sp3c; + + if (at_hit_check(i_this) != NULL) { + i_this->field_0x6c0[1] = 80; + } + } + + if (i_this->field_0x6c0[1] != 0 && i_this->mpModelMorf->checkFrame(55.0f)) { + i_this->mAction = 5; + i_this->field_0x5b4 = 1; + anm_init(i_this, ANM_ATTACK_TAIL_02, 4.0f, 0, 1.0f); + i_this->mpModelMorf->setFrame(20.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_KNIFE2_A, -1); + return; + } + + if (frame == 40) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_RUN_R, 0, -1); + } else if (frame == 43) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_RUN_L, 0, -1); + } + + if (i_this->mpModelMorf->isStop()) { + if (i_this->field_0x6c0[1] != 0) { + i_this->field_0x5b4 = 0; + } else { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + } + } + } + + a_this->current.angle.y += i_this->field_0x80a; + a_this->shape_angle.y += i_this->field_0x80a; + cLib_addCalcAngleS2(&i_this->field_0x80a, 0, 1, 300); + cLib_addCalc0(&a_this->speedF, 1.0f, 3.0f); +} + +/* 8070EA10-8070EC60 0043F0 0250+00 2/1 0/0 0/0 .text e_mf_guard__FP10e_mf_class */ +static void e_mf_guard(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->field_0x6d1 = 1; + i_this->field_0x6d4 = 1; + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_WAIT_02, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 1; + a_this->speed.y = 20.0f; + a_this->speedF = -8.0f; + i_this->field_0x10c4 = 3; + break; + + case 1: + i_this->field_0x6c8 = 5; + if (i_this->mpModelMorf->getFrame() >= 5.0f) { + i_this->field_0x5b4 = 5; + i_this->field_0x6c0[0] = 20; + } + break; + + case 5: + anm_init(i_this, ANM_GUARD, 3.0f, 0, 1.0f); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_GUARD, -1); + i_this->field_0x5b4 = 6; + // fallthrough + case 6: + i_this->field_0x6c8 = 5; + if (i_this->mObjAcch.ChkGroundHit()) { + cLib_addCalc0(&a_this->speedF, 1.0f, 10.0f); + } + + if (i_this->mpModelMorf->getFrame() >= 8.0f) { + i_this->mpModelMorf->setPlaySpeed(0.0f); + i_this->field_0x5b4 = 7; + a_this->speedF = 0.0f; + } + break; + + case 7: + if (cc_pl_cut_bit_get() == 0x80 || cc_pl_cut_bit_get() == 0x800) { + i_this->field_0x6c0[0] = 2; + i_this->field_0x6c8 = 10; + } + + if (dComIfGp_checkPlayerStatus0(0, 0x400) != 0) { + i_this->field_0x6c0[0] = 20; + } + + if (i_this->mPlayerDistance < 300.0f && daPy_getPlayerActorClass()->checkSpinnerRide() != 0) { + i_this->field_0x6c0[0] = 2; + } + + if (i_this->field_0x6c0[0] == 0) { + i_this->field_0x5b4 = 8; + i_this->mpModelMorf->setPlaySpeed(1.0f); + } + break; + + case 8: + if (i_this->mpModelMorf->isStop()) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + } + } +} + +/* 8070EC60-8070ED10 004640 00B0+00 1/1 0/0 0/0 .text e_mf_s_damage__FP10e_mf_class */ +static void e_mf_s_damage(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->field_0x5b4) { + case 0: + i_this->field_0x5b4 = 1; + i_this->field_0x6c0[0] = 20; + anm_init(i_this, ANM_WAIT_01, 10.0f, 2, 1.0f); + break; + + case 1: + if (i_this->field_0x6c0[0] == 0) { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + i_this->field_0x6c0[0] = 40; + } + } + + cLib_addCalc0(&a_this->speedF, 1.0f, 3.0f); +} + +/* 8070ED10-8070EEC4 0046F0 01B4+00 1/1 0/0 0/0 .text kado_check__FP10e_mf_class */ +static int kado_check(e_mf_class* i_this) { + static int kado_bit[2] = { + 1, 2, + }; + + static f32 kado_check_x[2] = { + 80.0f, -80.0f, + }; + + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz sp9c, spa8, spb4; + BOOL rv = FALSE; + + cMtx_YrotS(*calc_mtx, i_this->field_0x704.y); + for (int i = 0; i < 2; i++) { + spa8 = a_this->current.pos; + spa8.y += 100.0f; + sp9c.x = 0.0f; + sp9c.y = 0.0f; + sp9c.z = 70.0f; + MtxPosition(&sp9c, &spb4); + spa8 += spb4; + sp9c.y = 50.0f; + sp9c.z = -150.0f; + sp9c.x = 1.0f * kado_check_x[i]; + MtxPosition(&sp9c, &spb4); + spb4 += spa8; + lin_chk.Set(&spa8, &spb4, a_this); + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + rv |= kado_bit[i]; + } + } + + if (rv == 3) { + rv = FALSE; + } + + return rv; +} + +/* 8070EEC4-8070F014 0048A4 0150+00 1/1 0/0 0/0 .text body_gake__FP10e_mf_class */ +static BOOL body_gake(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + J3DModel* model = i_this->mpModelMorf->getModel(); + cXyz sp7c, sp88; + + MTXCopy(model->getAnmMtx(2), *calc_mtx); + sp7c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp7c, &sp88); + + dBgS_ObjGndChk gnd_chk; + sp88.y += 100.0f; + gnd_chk.SetPos(&sp88); + sp88.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if ((a_this->current.pos.y - sp88.y) > 300.0f) { + return TRUE; + } + + return FALSE; +} + +/* 8070F08C-8070FBEC 004A6C 0B60+00 2/1 0/0 0/0 .text e_mf_damage__FP10e_mf_class */ +static void e_mf_damage(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp34, sp40; + + if (a_this->health <= 0) { + fopAcM_OffStatus(a_this, 0); + a_this->attention_info.flags = 0; + } + + if (daPy_py_c::checkNowWolf() != 0) { + if (i_this->field_0x6d3 == 0 && a_this->checkWolfDownStartFlg()) { + if (i_this->field_0x6c0[0] > 40) { + i_this->field_0x6c0[0] = 90; + OS_REPORT(" DN WOLFHIT LONG \n"); + } else if (i_this->field_0x6c0[0] > 20) { + i_this->field_0x6c0[0] = 70; + OS_REPORT(" DN WOLFHIT MID \n"); + } else { + i_this->field_0x6c0[0] = 50; + OS_REPORT(" DN WOLFHIT SHORT \n"); + } + + i_this->field_0x5b4 = 30; + i_this->field_0x6d3 = 1; + i_this->field_0x6c0[1] = l_HIO.field_0x20 + 1; + } + } else if (i_this != NULL && a_this->checkCutDownHitFlg()) { + a_this->offCutDownHitFlg(); + i_this->field_0x5b4 = 3; + a_this->health = 0; + i_this->field_0x6c0[0] = 100; + i_this->field_0x6c0[1] = 46; + a_this->offDownFlg(); + a_this->health = 0; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DEATH, -1); + i_this->field_0x6a4 = 1; + daPy_getPlayerActorClass()->onEnemyDead(); + i_this->field_0x7ec = 15; + } + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_BLOWNOFF, 3.0f, 0, 1.0f); + i_this->field_0x5b4 = 1; + a_this->speedF = 0.0f; + i_this->field_0x7c8 = 8000.0f; + + if (a_this->health <= 0) { + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DEATH, -1); + i_this->field_0x6a4 = 1; + daPy_getPlayerActorClass()->onEnemyDead(); + } else { + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DAMAGE2, -1); + } + + i_this->field_0x6c0[0] = 0; + break; + + case 1: + if (i_this->mObjAcch.ChkWallHit() != 0 && i_this->field_0x6c0[0] == 0) { + int iVar1 = kado_check(i_this); + if (iVar1 != 0) { + OS_REPORT(" ..KADO KABE ..%x\n", iVar1); + if (iVar1 == 2) { + i_this->field_0x6ee = 0xC00; + i_this->field_0x704.y += -7000; + } else { + i_this->field_0x6ee = -0xC00; + i_this->field_0x704.y += 7000; + } + + i_this->field_0x7c8 = 8000.0f; + i_this->field_0x734 = 100.0f; + i_this->field_0x73c = 100.0f; + i_this->field_0x808 = 40; + i_this->field_0x6c0[0] = 60; + } else { + i_this->field_0x5b4 = 10; + a_this->speed.y = 0.0f; + i_this->field_0x6e4 *= 0.2f; + i_this->field_0x704.y += 0x8000; + i_this->field_0x7c8 = 8000.0f; + i_this->field_0x820 = 5; + i_this->field_0x734 = 100.0f; + i_this->field_0x73c = 100.0f; + i_this->field_0x808 = 40; + i_this->field_0x6ee = 0; + } + } else { + cLib_addCalcAngleS2(&i_this->field_0x704.x, -0x4000, 1, 0x300); + a_this->current.angle.y += i_this->field_0x6ee; + a_this->shape_angle.y = a_this->current.angle.y; + + if (i_this->field_0x704.x <= -0x3000 && i_this->mObjAcch.ChkGroundHit()) { + i_this->field_0x5b4 = 2; + i_this->field_0x716 = 10; + i_this->mSound.startCreatureSound(Z2SE_CM_BODYFALL_L, 0, -1); + + if (i_this->field_0x717 == 0) { + anm_init(i_this, ANM_DIE_LEFT, 5.0f, 0, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT, 5.0f, 0, 1.0f); + } + + if (i_this->field_0x6f0 != 0) { + i_this->field_0x6e4 = 0.0f; + i_this->field_0x7c8 = 2000.0f; + } else { + if (i_this->field_0x717 == 0) { + i_this->field_0x734 = -100.0f; + i_this->field_0x73c = -100.0f; + } else { + i_this->field_0x734 = 100.0f; + i_this->field_0x73c = 100.0f; + } + + i_this->field_0x738 = -0x5000; + i_this->field_0x740 = -0x4000; + i_this->field_0x808 = 40; + i_this->field_0x6e4 *= 0.5f; + a_this->speed.y = 20.0f; + i_this->field_0x6ee /= 2; + a_this->current.angle.y = i_this->field_0x704.y; + i_this->field_0x7c8 = 8000.0f; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); + + fopAcM_effSmokeSet1(&i_this->field_0x10bc, &i_this->field_0x10c0, &sp40, NULL, 1.8f, &a_this->tevStr, 1); + } + } + } + break; + + case 2: + a_this->current.angle.y += i_this->field_0x6ee; + a_this->shape_angle.y = a_this->current.angle.y; + cLib_addCalcAngleS2(&i_this->field_0x704.x, -0x4000, 1, 0x300); + + if (i_this->mObjAcch.ChkGroundHit()) { + if (a_this->health > 0 && daPy_py_c::checkNowWolf() == 0) { + a_this->onDownFlg(); + } + + dKy_Sound_set(a_this->current.pos, 100, fopAcM_GetID(a_this), 5); + i_this->field_0x716 = 10; + + if (i_this->field_0x717 == 0) { + anm_init(i_this, ANM_DIE_LEFT, 3.0f, 0, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT, 3.0f, 0, 1.0f); + } + + i_this->field_0x6e4 = 0.0f; + i_this->field_0x704.x = -0x4000; + + for (int i = 0; i < 4; i++) { + i_this->field_0x7e2[i] = cM_rndF(10.0f); + } + + a_this->current.angle.y = i_this->field_0x704.y; + if (daPy_py_c::checkNowWolf() != 0) { + i_this->field_0x6c0[0] = 80; + i_this->field_0x6c0[1] = 55; + } else { + if (a_this->health <= 0) { + i_this->field_0x6c0[0] = 60; + } else { + i_this->field_0x6c0[0] = 5; + } + i_this->field_0x6c0[1] = 35; + } + + i_this->field_0x5b4 = 3; + i_this->field_0x7c8 = 1500.0f; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); + + fopAcM_effSmokeSet1(&i_this->field_0x10bc, &i_this->field_0x10c0, &sp40, NULL, 1.0f, &a_this->tevStr, 1); + } + break; + + case 3: + if (body_gake(i_this)) { + i_this->field_0x6e4 = -20.0f; + i_this->field_0x704.x -= 0x300; + } + + if (a_this->health <= 0 && i_this->field_0x6c0[1] == 0) { + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp34.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp34, &sp40); + + mf_disappear(i_this); + fopAcM_delete(a_this); + return; + } + + if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->field_0x6c0[0] == 0) { + i_this->field_0x5b4 = 20; + if (i_this->field_0x717 == 0) { + anm_init(i_this, ANM_DIE_LEFT_UP, 3.0f, 0, 1.0f); + } else { + anm_init(i_this, ANM_DIE_RIGHT_UP, 3.0f, 0, 1.0f); + } + + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_UP, -1); + + if (i_this != NULL) { + a_this->offDownFlg(); + } + } + break; + + case 10: + if (i_this->field_0x820 != 0) { + cLib_addCalcAngleS2(&i_this->field_0x704.x, 0, 1, 0x300); + } else { + cLib_addCalcAngleS2(&i_this->field_0x704.x, -0x4000, 1, 0x800); + if (i_this->mObjAcch.ChkGroundHit()) { + i_this->field_0x5b4 = 2; + if (i_this->field_0x717 == 0) { + i_this->field_0x734 = -100.0f; + i_this->field_0x73c = -100.0f; + } else { + i_this->field_0x734 = 100.0f; + i_this->field_0x73c = 100.0f; + } + + i_this->field_0x738 = -0x5000; + i_this->field_0x740 = -0x4000; + i_this->field_0x6e4 *= 0.5f; + a_this->speed.y = 20.0f; + a_this->current.angle.y = i_this->field_0x704.y; + i_this->field_0x7c8 = 8000.0f; + } + } + break; + + case 20: + if (i_this->mpModelMorf->getFrame() >= 35.0f) { + i_this->field_0x710.z = 0; + i_this->field_0x710.x = 0; + } + + if (i_this->mpModelMorf->isStop()) { + i_this->field_0x704.y = 0; + i_this->field_0x704.x = 0; + anm_init(i_this, ANM_WAIT_01, 0.0f, 2, 1.0f); + i_this->field_0x6c0[0] = 5; + i_this->field_0x5b4 = 21; + + if (i_this != NULL) { + a_this->offDownFlg(); + } + } + break; + + case 21: + case 22: + i_this->field_0x6c8 = 0; + if (i_this->field_0x6c0[0] == 0) { + if (i_this->mPlayerDistance < 300.0f) { + i_this->mAction = 6; + i_this->field_0x5b4 = 0; + } else { + i_this->mAction = 3; + i_this->field_0x5b4 = 0; + } + } + break; + + case 30: + if (!a_this->checkWolfDownPullFlg()) { + i_this->field_0x6c0[1] = 0; + } + + if (i_this->field_0x6c0[0] == 0) { + i_this->field_0x5b4 = 31; + if (i_this->field_0x717 == 0) { + anm_init(i_this, ANM_BRUSH_LEFT_UP, 3.0f, 0, 1.0f); + } else { + anm_init(i_this, ANM_BRUSH_RIGHT_UP, 3.0f, 0, 1.0f); + } + + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_UP, -1); + i_this->field_0x6c0[0] = 10; + } else if (i_this->field_0x6c0[1] == 1) { + a_this->onWolfDownPullEndFlg(); + a_this->offCutDownHitFlg(); + a_this->health = 0; + i_this->field_0x6c0[0] = 1000; + i_this->field_0x6c0[1] = 35; + i_this->field_0x5b4 = 3; + } + break; + + case 31: + if (i_this->field_0x6c0[0] == 0) { + a_this->offDownFlg(); + i_this->field_0x5b4 = 20; + i_this->field_0x6d3 = 0; + } + } + + if (i_this != NULL && a_this->checkDownFlg()) { + i_this->field_0x6d2 = 0; + } + + if (i_this->field_0x7ec != 0) { + i_this->field_0x7ec--; + i_this->field_0x7ea = i_this->field_0x7ec * cM_ssin(i_this->field_0x7ec * 0x3800) * 100.0f; + } +} + +/* 8070FBEC-8070FD40 0055CC 0154+00 1/1 0/0 0/0 .text e_mf_backdrop__FP10e_mf_class */ +static void e_mf_backdrop(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + switch (i_this->field_0x5b4) { + case 0: + anm_init(i_this, ANM_DRAWBACK, 3.0f, 0, 0.5f); + i_this->field_0x5b4 = 1; + i_this->field_0x704.y = a_this->shape_angle.y; + i_this->field_0x704.x = 0; + a_this->speedF = -3.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DEATH, -1); + // fallthrough + case 1: + if (i_this->field_0x704.x < -0x4000) { + a_this->speedF = -6.0f; + } + + if (a_this->speed.y < -20.0f) { + i_this->field_0x5b4 = 2; + a_this->speedF = 0.0f; + } + // fallthrough + case 2: + cLib_addCalcAngleS2(&i_this->field_0x704.x, -0x7000, 2, 0x800); + if (i_this->field_0x5b4 == 2 && a_this->current.pos.y <= (i_this->mObjAcch.GetGroundH() + 100.0f)) { + a_this->current.pos.y = i_this->mObjAcch.GetGroundH() + 100.0f; + i_this->field_0x704.x = -0x4000; + i_this->mAction = 21; + i_this->field_0x5b4 = 0; + i_this->field_0x6e4 = 0.0f; + a_this->health = 0; + } + } +} + +/* 8070FD40-8070FEE0 005720 01A0+00 1/1 0/0 0/0 .text e_mf_water__FP10e_mf_class */ +static void e_mf_water(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + cXyz sp20, sp2c, sp38; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp20.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp20, &sp2c); + + i_this->field_0x6c8 = 10; + switch (i_this->field_0x5b4) { + case 0: + case 1: + a_this->speed.y = 0.0f; + if (i_this->field_0x717 == 0) { + anm_init(i_this, ANM_DROWNED_A, 3.0f, 2, 1.0f); + } else { + anm_init(i_this, ANM_DROWNED_B, 3.0f, 2, 1.0f); + } + + i_this->field_0x6c0[0] = 60; + a_this->speedF = 0.0f; + i_this->field_0x6e4 = 0.0f; + i_this->field_0x6e8 = 0.0f; + + sp38 = a_this->current.pos; + sp38.y = i_this->field_0xa3c; + if (i_this->field_0x5b4 == 0) { + fopKyM_createWpillar(&sp38, 1.5f, 0); + } else { + fopKyM_createMpillar(&sp38, 1.0f); + } + + i_this->field_0x5b4 = 10; + break; + + case 10: + a_this->speed.y = 0.0f; + cLib_addCalc2(&a_this->current.pos.y, i_this->field_0xa3c, 0.5f, 5.0f); + cLib_addCalcAngleS2(&i_this->field_0x704.x, -0x4000, 4, 0x400); + + if (i_this->field_0x6c0[0] == 0) { + mf_disappear(i_this); + } + } +} + +/* 8070FEE0-8070FF98 0058C0 00B8+00 1/1 0/0 0/0 .text wolfkick_damage__FP10e_mf_class */ +static void wolfkick_damage(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + i_this->field_0x730 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x72c = 150.0f; + i_this->mAction = 21; + i_this->field_0x5b4 = 0; + i_this->field_0x704.y = player->shape_angle.y + 0x8000; + a_this->speed.y = 0.0f; + i_this->field_0x6e4 = -1.0f; + i_this->field_0x808 = 50; + i_this->mSound.startCollisionSE(Z2SE_HIT_WOOD_WEAPON, 31); + i_this->field_0x6f0 = 1; +} + +/* 8070FF98-807100A8 005978 0110+00 1/1 0/0 0/0 .text big_damage__FP10e_mf_class */ +static void big_damage(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->field_0x730 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x72c = 150.0f; + i_this->mAction = 21; + i_this->field_0x5b4 = 0; + i_this->field_0x704.y = i_this->mAtInfo.mHitDirection.y; + a_this->speed.y = cM_rndF(10.0f) + 25.0f; + i_this->field_0x6e4 = -20.0f; + i_this->field_0x808 = 50; + if ((i_this->mAtInfo.mHitBit & 0x80) != 0) { + OS_REPORT("SPIN CUT HIT !!\n"); + i_this->field_0x6ee = cM_rndFX(800.0f) + 3000.0f; + } else if ((i_this->mAtInfo.mHitBit & 0x800) != 0) { + OS_REPORT("SPIN CUT L HIT !!\n"); + i_this->field_0x6ee = -(cM_rndFX(800.0f) + 3000.0f); + } else { + i_this->field_0x6ee = cM_rndFX(700.0f); + } + + i_this->field_0x6f0 = 0; +} + +/* 807100A8-80710158 005A88 00B0+00 1/1 0/0 0/0 .text small_damage__FP10e_mf_class */ +static void small_damage(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + + i_this->mAction = 20; + i_this->field_0x5b4 = 0; + i_this->field_0x808 = 50; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DAMAGE, -1); + + if (i_this->field_0x80e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } + + i_this->field_0x730 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x72c = 150.0f; + i_this->field_0x6e8 = 25.0f; + i_this->field_0x6ec = i_this->mAtInfo.mHitDirection.y; +} + +/* 80710158-807104EC 005B38 0394+00 1/1 0/0 0/0 .text damage_check__FP10e_mf_class */ +static void damage_check(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + i_this->mStts.Move(); + + if (i_this->field_0x6c8 == 0) { + fopEn_enemy_c* mf_p = (fopEn_enemy_c*)i_this; + if (l_HIO.invulnerable != 0) { + a_this->health = 100; + } + + for (int i = 0; i <= 2; i++) { + if (i_this->field_0xa7c[i].ChkTgHit() != 0) { + i_this->mAtInfo.mpCollider = i_this->field_0xa7c[i].GetTgHitObj(); + if (player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_LEFT && player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_RIGHT && + i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK)) { + if (!player->onWolfEnemyHangBite(mf_p)) { + return; + } + + OS_REPORT("DN PL BITE HANG \n"); + i_this->mAction = 13; + i_this->field_0x5b4 = 0; + i_this->field_0x6c8 = 1000; + i_this->mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 31); + return; + } + + i_this->field_0x10ba = 3; + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_10000000)) { + wolfkick_damage(i_this); + i_this->field_0x6c8 = 1000; + } else { + at_power_check(&i_this->mAtInfo); + s16 sVar1 = a_this->health; + cc_at_check(a_this, &i_this->mAtInfo); + + if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP) { + i_this->mAtInfo.mHitStatus = 0; + } + + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK)) { + i_this->field_0x6c8 = 20; + } else { + i_this->field_0x6c8 = 10; + } + + if (i_this->mAtInfo.mAttackPower <= 1) { + i_this->field_0x6c8 = 10; + } + + i_this->field_0x724 |= i_this->mAtInfo.mHitBit; + if (i_this->mAtInfo.mHitType == 16 || i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + a_this->health = sVar1; + i_this->mAction = 12; + i_this->field_0x5b4 = 0; + + if (i_this->field_0x80e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } + + i_this->field_0x730 = (a_this->shape_angle.y - 0x8000) - i_this->mAtInfo.mHitDirection.y; + i_this->field_0x72c = 100.0f; + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DAMAGE, -1); + } else { + if (daPy_getPlayerActorClass()->checkHorseRide() != 0 && dComIfGp_getHorseActor()->speedF >= 20.0f && i_this->mAtInfo.mHitType == 1) { + i_this->mAtInfo.mAttackPower = 20; + if (cM_rndF(1.0f) < 0.5f) { + i_this->mAtInfo.mHitBit |= 0x80; + } else { + i_this->mAtInfo.mHitBit |= 0x800; + } + } + + if (a_this->health <= 0 || i_this->mAtInfo.mHitStatus != 0) { + if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) { + small_damage(i_this); + i_this->field_0x6c8 = 3; + } else { + big_damage(i_this); + i_this->field_0x6c8 = 1000; + } + } else { + small_damage(i_this); + } + + a_this->speedF = 0.0f; + } + } + break; + } + } + + for (int i = 0; i < 3; i++) { + if (a_this->health <= 1) { + i_this->field_0xa7c[i].SetTgHitMark((CcG_Tg_HitMark)3); + } + } + } +} + +/* 807104EC-807119BC 005ECC 14D0+00 2/1 0/0 0/0 .text action__FP10e_mf_class */ +static void action(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + cXyz sp240, sp24c; + + i_this->field_0x6d4 = 0; + f32 fVar1 = fopAcM_searchPlayerDistanceXZ(a_this); + i_this->mPlayerDistance = fVar1; + s16 sVar1 = fopAcM_searchPlayerAngleY(a_this); + i_this->mYAngleToPlayer = sVar1; + sVar1 = fopAcM_searchPlayerAngleX(a_this); + i_this->mXAngleToPlayer = sVar1; + damage_check(i_this); + i_this->field_0x80e = 0; + + s8 bVar1 = 0; + s8 bVar2 = 1; + a_this->offHeadLockFlg(); + if (fopAcM_otherBgCheck(player, a_this)) { + fopAcM_OffStatus(a_this, 0); + a_this->attention_info.flags = 0; + } else { + fopAcM_OnStatus(a_this, 0); + a_this->attention_info.flags = 4; + } + + switch (i_this->mAction) { + case ACTION_NORMAL: + e_mf_normal(i_this); + break; + + case ACTION_FIGHT_RUN: + e_mf_fight_run(i_this); + bVar1 = 1; + break; + + case ACTION_ATTACK: + e_mf_attack(i_this); + bVar1 = 1; + break; + + case ACTION_TAIL_ATTACK: + e_mf_tail_attack(i_this); + bVar1 = 1; + break; + + case ACTION_GUARD: + e_mf_guard(i_this); + bVar1 = 1; + break; + + case ACTION_JUMP: + e_mf_jump(i_this); + bVar1 = 1; + break; + + case ACTION_STAY: + e_mf_stay(i_this); + break; + + case ACTION_OTOREAC: + e_mf_otoreac(i_this); + break; + + case ACTION_DRAWBACK: + e_mf_drawback(i_this); + bVar1 = 1; + break; + + case ACTION_WOLFBITE: + e_mf_wolfbite(i_this); + break; + + case ACTION_BOMB_ACTION: + e_mf_bomb_action(i_this); + break; + + case ACTION_S_DAMAGE: + e_mf_s_damage(i_this); + break; + + case ACTION_DAMAGE: + e_mf_damage(i_this); + break; + + case ACTION_BACKDROP: + e_mf_backdrop(i_this); + break; + + case ACTION_WATER: + e_mf_water(i_this); + bVar2 = 0; + break; + + case ACTION_GAKEJUMP: + e_mf_gakejump(i_this); + bVar1 = 1; + break; + } + + f32 fVar6 = 0.0f; + if (bVar2) { + dBgS_ObjGndChk obj_gnd_chk; + dBgS_ObjGndChk_Spl spl_chk; + sp240 = a_this->current.pos; + sp240.y += 150.0f; + spl_chk.SetPos(&sp240); + obj_gnd_chk.SetPos(&sp240); + i_this->field_0xa3c = dComIfG_Bgsp().GroundCross(&spl_chk); + fVar1 = i_this->field_0xa3c - dComIfG_Bgsp().GroundCross(&obj_gnd_chk); + if (a_this->current.pos.y < i_this->field_0xa3c && fVar1 > 100.0f) { + OS_REPORT("DN YOGAN \n"); + i_this->mAction = 24; + if (dComIfG_Bgsp().GetPolyAtt0(spl_chk) == 6) { + i_this->field_0x5b4 = 1; + } else { + i_this->field_0x5b4 = 0; + } + + a_this->current.pos.y = i_this->field_0xa3c; + } + } + + if (bVar1) { + i_this->mSound.setLinkSearch(true); + } else { + i_this->mSound.setLinkSearch(false); + } + + if (i_this->field_0x80e == 0) { + 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 (i_this->field_0x5d8 != 0) { + cMtx_YrotS(*calc_mtx, i_this->field_0x5d4); + cMtx_XrotM(*calc_mtx, i_this->field_0x5d6); + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = a_this->speedF; + MtxPosition(&sp240, &sp24c); + a_this->current.pos += sp24c; + sp240 = i_this->field_0x5bc - i_this->field_0x5c8; + fVar1 = sp240.abs(); + sp240 = i_this->field_0x5bc - a_this->current.pos; + f32 fVar2 = sp240.abs(); + f32 fVar3 = fVar1 * 0.3f; + if (fVar3 > 250.0f) { + fVar3 = 250.0f; + } + + i_this->field_0x700 = fVar3 * cM_ssin((fVar2 / fVar1) * 32768.0f); + i_this->field_0x5d8 = 0; + } else { + cLib_addCalc0(&i_this->field_0x700, 1.0f, 30.0f); + + if (i_this->field_0x6e4 != fVar6) { + cMtx_YrotS(*calc_mtx, i_this->field_0x704.y); + if (i_this->field_0x820 == 0) { + sp240.z = i_this->field_0x6e4; + } else { + sp240.z = 0.0f; + a_this->speed.y = 0.0f; + } + + a_this->gravity = -4.0f; + } else { + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + sp240.z = a_this->speedF; + } + sp240.x = 0.0f; + sp240.y = 0.0f; + MtxPosition(&sp240, &sp24c); + + a_this->speed.x = sp24c.x; + a_this->speed.z = sp24c.z; + a_this->speed.y += a_this->gravity; + a_this->current.pos += a_this->speed; + a_this->gravity = -5.0f; + + if (a_this->speed.y < -100.0f) { + a_this->speed.y = -100.0f; + } + + if (i_this->mAction != 9 && i_this->field_0x6d2 != 0) { + cXyz* move_pos = i_this->mStts.GetCCMoveP(); + if (move_pos != NULL) { + a_this->current.pos.x += move_pos->x; + a_this->current.pos.z += move_pos->z; + } + } + + if (i_this->field_0x6e8 > 0.1f) { + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = -i_this->field_0x6e8; + cMtx_YrotS(*calc_mtx, i_this->field_0x6ec); + MtxPosition(&sp240, &sp24c); + a_this->current.pos += sp24c; + cLib_addCalc0(&i_this->field_0x6e8, 1.0f, 7.0f); + } + } + + sVar1 = 0x800; + if (i_this->field_0x6e0 != 0) { + i_this->field_0x6e0--; + i_this->field_0x6d4 = 2; + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + + if (i_this->field_0x6e1 != 0) { + sp240.x = 100.0f; + } else { + sp240.x = -100.0f; + } + sp240.y = 100.0f; + sp240.z = -100.0f; + MtxPosition(&sp240, &i_this->field_0x718); + i_this->field_0x718 += a_this->current.pos; + sVar1 = 0x400; + } + + if (i_this->field_0x6d4 != 0) { + if (i_this->field_0x6d4 == 5) { + if ((i_this->field_0x6ac & 15) == 0 && cM_rndF(1.0f) < 0.3f) { + i_this->field_0x6dc = cM_rndFX(2500.0f); + } + } else { + if (i_this->field_0x6d4 == 1) { + sp240 = player->eyePos - a_this->current.pos; + } else if (i_this->field_0x6d4 == 2) { + sp240 = i_this->field_0x718 - a_this->current.pos; + } else { + sp240 = player->eyePos - a_this->current.pos; + } + sp240.y += l_HIO.model_size * -150.0f; + + s16 sVar2 = cM_atan2s(sp240.x, sp240.z) - a_this->shape_angle.y; + s16 sVar3 = a_this->shape_angle.x + cM_atan2s(sp240.y, JMAFastSqrt(sp240.x * sp240.x + sp240.z * sp240.z)); + if (sVar2 > 0x2710) { + sVar2 = 10000; + } else if (sVar2 < -10000) { + sVar2 = -10000; + } + + if (sVar3 > 0x2710) { + sVar3 = 10000; + } else if (sVar3 < -20000) { + sVar3 = -20000; + } + + cLib_addCalcAngleS2(&i_this->field_0x6d6, sVar2 / 2, 2, sVar1); + cLib_addCalcAngleS2(&i_this->field_0x6d8, sVar3 / 2, 2, sVar1); + } + + i_this->field_0x6dc = 0; + } else { + cLib_addCalcAngleS2(&i_this->field_0x6d6, 0, 2, sVar1); + cLib_addCalcAngleS2(&i_this->field_0x6d8, 0, 2, sVar1); + i_this->field_0x6dc = 0; + } + + cLib_addCalcAngleS2(&i_this->field_0x6da, i_this->field_0x6dc, 4, 0x400); + + if (i_this->field_0x6de != 0) { + i_this->field_0x6de--; + i_this->field_0x6da = i_this->field_0x6de * cM_ssin(i_this->field_0x6de * 12000) * 200.0f; + } + + if (i_this->field_0x72c > 1.0f) { + cMtx_YrotS(*calc_mtx, i_this->field_0x730); + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = i_this->field_0x72c * 120.0f; + if (sp240.z > 15000.0f) { + sp240.z = 15000.0f; + } + MtxPosition(&sp240, &sp24c); + + i_this->field_0x784[0].y = sp24c.x; + i_this->field_0x784[0].x = sp24c.z; + i_this->field_0x784[1].y = sp24c.x; + i_this->field_0x784[1].x = sp24c.z; + cLib_addCalc0(&i_this->field_0x72c, 0.5f, 10.0f); + } + + if (fabsf(i_this->field_0x73c) > 1.0f) { + i_this->field_0x784[1].x = i_this->field_0x73c * cM_scos(i_this->field_0x740) * 70.0f; + i_this->field_0x784[2].x += i_this->field_0x784[1].x; + cLib_addCalc0(&i_this->field_0x73c, 1.0f, 3.0f); + i_this->field_0x740 += 4000; + } + + if (fabsf(i_this->field_0x734) > 1.0f) { + i_this->field_0x784[0].x = i_this->field_0x734 * cM_scos(i_this->field_0x738) * 70.0f; + cLib_addCalc0(&i_this->field_0x734, 1.0f, 3.0f); + i_this->field_0x738 += 4000; + } + + if (a_this->speed.y < 0.0f && i_this->mObjAcch.ChkGroundHit()) { + cLib_addCalc0(&i_this->field_0x73c, 1.0f, 30.0f); + cLib_addCalc0(&i_this->field_0x734, 1.0f, 30.0f); + } + + if (i_this->field_0x6e4 != fVar6) { + s16 sVar4 = i_this->field_0x704.y - a_this->shape_angle.y; + i_this->field_0x784[3].y = 0x4000 - sVar4; + if (i_this->field_0x784[3].y > 0x1770) { + i_this->field_0x784[3].y = 6000; + } else if (i_this->field_0x784[3].y < -9000) { + i_this->field_0x784[3].y = -9000; + } + + i_this->field_0x784[4].y = 0x4000 - sVar4; + if (i_this->field_0x784[4].y > 0x4268) { + i_this->field_0x784[4].y = 17000; + } else if (i_this->field_0x784[4].y < 0) { + i_this->field_0x784[4].y = 0; + } + + i_this->field_0x784[5].y = sVar4 + 0x4000; + if (i_this->field_0x784[5].y > 0x1770) { + i_this->field_0x784[5].y = 6000; + } else if (i_this->field_0x784[5].y < -9000) { + i_this->field_0x784[5].y = -9000; + } + + i_this->field_0x784[6].y = sVar4 + 0x4000; + if (i_this->field_0x784[6].y > 0x4268) { + i_this->field_0x784[6].y = 17000; + } else if (i_this->field_0x784[6].y < 0) { + i_this->field_0x784[6].y = 0; + } + + cMtx_YrotS(*calc_mtx, sVar4); + sp240.x = 0.0f; + sp240.y = 0.0f; + sp240.z = 12000.0f; + MtxPosition(&sp240, &sp24c); + i_this->field_0x816.y = -sp24c.x; + i_this->field_0x816.x = -sp24c.z * 1.3f; + + if (i_this->field_0x816.x > 10000) { + i_this->field_0x816.x = 10000; + } + + i_this->field_0x816.x += 6000; + } + + static s16 j_spd[11] = { + 0x4000, 0x4000, 0x4000, + 0x1000, 0x1000, 0x1000, + 0x1000, 0x4000, 0x4000, + 0x4000, 0x4000 + }; + + for (int i = 0; i < 11; i++) { + cLib_addCalcAngleS2(&i_this->field_0x742[i].x, i_this->field_0x784[i].x, 2, j_spd[i]); + cLib_addCalcAngleS2(&i_this->field_0x742[i].y, i_this->field_0x784[i].y, 2, j_spd[i]); + cLib_addCalcAngleS2(&i_this->field_0x742[i].z, i_this->field_0x784[i].z, 2, j_spd[i]); + i_this->field_0x784[i].z = 0; + i_this->field_0x784[i].x = 0; + + if (i >= 3 && i <= 6) { + if (i_this->field_0x7dc[i] == 0) { + s16 sVar5; + if (i == 4 || i == 6) { + sVar5 = 0x600; + } else { + sVar5 = 0x800; + } + + cLib_addCalcAngleS2(&i_this->field_0x784[i].y, 0, 1, sVar5); + } else { + i_this->field_0x7dc[i]--; + } + } else { + i_this->field_0x784[i].y = 0; + } + + if (i >= 3) { + i_this->field_0x7cc[i] = i_this->field_0x7c8 * cM_scos(i_this->field_0x6ac * 4000 + i * 20000); + } + } + + cLib_addCalc0(&i_this->field_0x7c8, 1.0f, 100.0f); + cLib_addCalcAngleS2(&i_this->field_0x812, i_this->field_0x816.y, 2, 0x800); + cLib_addCalcAngleS2(&i_this->field_0x810, i_this->field_0x816.x, 2, 0x800); + i_this->field_0x816.x = 0; + i_this->field_0x816.y = 0; + if (i_this->field_0x808 != 0) { + i_this->field_0x808--; + } + + fVar1 = i_this->field_0x808 * 1.0f; + if (fVar1 > 30.0f) { + fVar1 = 30.0f; + } + fVar1 *= fVar1; + + for (int i = 0; i < 4; i++) { + i_this->field_0x7ee[i].x = fVar1 * (cM_ssin(i_this->field_0x6ac * 5000 + i * -15000) * 5.0f); + i_this->field_0x7ee[i].y = fVar1 * (cM_ssin(i_this->field_0x6ac * 0x12C0 + i * -13000) * 5.0f); + } + + J3DModel* model; + cLib_addCalcAngleS2(&i_this->field_0x806, 0, 4, 0x100); + if (i_this->field_0x716 != 0) { + i_this->field_0x716--; + if (i_this->field_0x704.x != 0) { + Vec sp258; + cXyz sp264, sp270; + dBgS_GndChk gnd_chk; + int sVar6 = 0; + s16 sVar7 = 0; + fVar1 = 100.0f; + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), *calc_mtx); + sp240.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp240, &sp264); + sp264.y += 100.0f; + sp264.y += 100.0f; + gnd_chk.SetPos(&sp264); + sp264.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if (sp264.y != -1000000000.0f) { + sp258.x = sp264.x; + sp258.y = sp264.y + 100.0f; + sp258.z = sp264.z + fVar1; + gnd_chk.SetPos(&sp258); + sp258.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + + if (sp258.y != -1000000000.0f) { + sVar7 = -cM_atan2s(sp258.y - sp264.y, sp258.z - sp264.z); + if (sVar7 > 0x3000 || sVar7 < -0x3000) { + sVar7 = 0; + } + } + + sp258.x = sp264.x + fVar1; + sp258.y = sp264.y + 100.0f; + sp258.z = sp264.z; + gnd_chk.SetPos(&sp258); + sp258.y = dComIfG_Bgsp().GroundCross(&gnd_chk); + if (sp258.y != -1000000000.0f) { + sVar6 = cM_atan2s(sp258.y - sp264.y, sp258.x - sp264.x); + if (sVar6 > 0x3000 || sVar6 < -0x3000) { + sVar6 = 0; + } + } + } + + dBgS_LinChk lin_chk; + cXyz sp27c, sp288, sp294; + + sp288 = a_this->current.pos; + sp288.y += 30.0f; + model = i_this->mpModelMorf->getModel(); + sp27c.set(0.0f, 0.0f, 0.0f); + MTXCopy(model->getAnmMtx(4), *calc_mtx); + MtxPosition(&sp27c, &sp294); + sp294.y += 30.0f; + lin_chk.Set(&sp288, &sp294, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + sp27c = sp288 - sp294; + cMtx_YrotS(*calc_mtx, cM_atan2s(sp27c.x, sp27c.z)); + sp27c.x = 0.0f; + sp27c.y = 0.0f; + sp27c.z = 50.0f; + MtxPosition(&sp27c, &sp24c); + a_this->current.pos += sp24c; + } + + i_this->field_0x710.x = sVar7; + i_this->field_0x710.z = sVar6; + } + } + + cLib_addCalcAngleS2(&i_this->field_0x70a.x, i_this->field_0x710.x, 1, 0x400); + cLib_addCalcAngleS2(&i_this->field_0x70a.z, i_this->field_0x710.z, 1, 0x400); + + if (i_this->field_0x10c4 != 0) { + model = i_this->mpModelMorf->getModel(); + sp240.set(0.0f, 0.0f, 0.0f); + + static int foot_idx[2] = { + 26, 30, + }; + for (int i = 0; i < 2; i++) { + if ((i_this->field_0x10c4 == 3 || (i_this->field_0x10c4 == 2 && i == 1)) || (i_this->field_0x10c4 == 1 && i == 0)) { + MTXCopy(model->getAnmMtx(foot_idx[i]), *calc_mtx); + MtxPosition(&sp240, &sp24c); + fopAcM_effSmokeSet1(&i_this->field_0x10c8[i], &i_this->field_0x10d0[i], &sp24c, &a_this->shape_angle, 1.0f, &a_this->tevStr, 0); + } + } + + i_this->field_0x10c4 = 0; + } + + if (i_this->field_0x10ba != 0) { + i_this->field_0x10ba--; + if (i_this->field_0x10ba == 0) { + dComIfGp_particle_set(0x15E, &a_this->eyePos, &a_this->shape_angle, NULL); + } + } +} + +/* 807119BC-80711CB8 00739C 02FC+00 1/1 0/0 0/0 .text anm_se_set__FP10e_mf_class */ +static void anm_se_set(e_mf_class* i_this) { + int frame = i_this->mpModelMorf->getFrame(); + + if (i_this->mAnmID == ANM_ATTACK_01) { + if (frame == 35) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_TAIL, 0, -1); + } else if (frame == 28) { + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_TAIL, -1); + } + } else if (i_this->mAnmID == ANM_ATTACK_TAIL_01) { + if (frame == 18) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_KNIFE, 0, -1); + } + } else if (i_this->mAnmID == ANM_ATTACK_TAIL_02) { + if (frame == 10) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_KNIFE2_A, 0, -1); + } + + if (frame == 24) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_KNIFE2_B, 0, -1); + } + } else if (i_this->mAnmID == ANM_WALK) { + if (frame == 3) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_L, 0, -1); + } else if (frame == 18) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_R, 0, -1); + } + } else if (i_this->mAnmID == ANM_RUN) { + if (frame == 10) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_RUN_L, 0, -1); + } else if (frame == 4) { + i_this->mSound.startCreatureSound(Z2SE_EN_MF_FN_RUN_R, 0, -1); + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_BREATH, -1); + } + } else if (i_this->mAnmID == ANM_WAIT_03) { + if (frame == 15) { + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_SEARCH, -1); + } + } else if (i_this->mAnmID == ANM_WAIT_04 && frame == 15) { + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_SEARCH2, -1); + } +} + +/* 80713FC4-80713FC8 0000A4 0004+00 1/2 0/0 0/0 .bss c_start */ +int c_start; + +/* 80711CB8-80712998 007698 0CE0+00 2/1 0/0 0/0 .text daE_MF_Execute__FP10e_mf_class */ +static int daE_MF_Execute(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + f32 fVar1 = 0.0f; + + if (i_this->field_0x728 != 0) { + return 1; + } + + if (c_start == 0 && dComIfGp_event_runCheck() && + (fopAcM_getTalkEventPartner((fopAc_ac_c*)daPy_getLinkPlayerActorClass()) == daPy_py_c::getMidnaActor() || daPy_getPlayerActorClass()->eventInfo.checkCommandDoor())) { + return 1; + } + + cXyz sp2c; + cXyz sp38; + cXyz sp44; + i_this->field_0x6ac++; + for (int i = 0; i < 4; i++) { + if (i_this->field_0x6c0[i] != 0) { + i_this->field_0x6c0[i]--; + } + } + + if (i_this->field_0x6c8 != 0) { + i_this->field_0x6c8--; + } + + if (i_this->field_0x6cc != 0) { + i_this->field_0x6cc--; + } + + if (i_this->field_0x820 != 0) { + i_this->field_0x820--; + } + + if (i_this->field_0x6ca != 0) { + i_this->field_0x6ca--; + } + + i_this->field_0x6d2 = 1; + action(i_this); + + if (i_this->field_0x820 == 0 && i_this->field_0x5d8 == 0) { + if (i_this->field_0x6e4 != fVar1) { + cMtx_YrotS(*calc_mtx, i_this->field_0x704.y); + sp2c.x = 0.0f; + sp2c.y = 0.0f; + sp2c.z = i_this->field_0x81c; + MtxPosition(&sp2c, &sp38); + a_this->current.pos += sp38; + a_this->old.pos += sp38; + cLib_addCalc2(&i_this->field_0x81c, i_this->field_0x6e4 * 2.0f, 1.0f, 5.0f); + } else { + cLib_addCalc0(&i_this->field_0x81c, 1.0f, 5.0f); + } + + i_this->mObjAcch.CrrPos(dComIfG_Bgsp()); + if (i_this->field_0x6e4 != fVar1) { + a_this->current.pos -= sp38; + a_this->old.pos -= sp38; + } + + + if (!i_this->mObjAcch.ChkGroundHit()) { + if (a_this->speed.y < -10.0f) { + i_this->field_0x822++; + if (i_this->field_0x822 == 13) { + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DEATH, -1); + } + } + } else { + if (i_this->field_0x822 >= 13) { + i_this->mAction = 21; + i_this->field_0x5b4 = 0; + a_this->speed.y = 0.0f; + i_this->field_0x6e4 = -1.0; + i_this->field_0x704.x = -0x3000; + i_this->field_0x808 = 50; + i_this->field_0x6c8 = 1000; + a_this->health = 0; + } + + i_this->field_0x822 = 0; + } + } + + mDoMtx_stack_c::transS(a_this->current.pos.x, a_this->current.pos.y + i_this->field_0x700, a_this->current.pos.z); + mDoMtx_stack_c::XrotM(i_this->field_0x70a.x); + mDoMtx_stack_c::ZrotM(i_this->field_0x70a.z); + mDoMtx_stack_c::YrotM(i_this->field_0x704.y); + mDoMtx_stack_c::XrotM(i_this->field_0x704.x); + mDoMtx_stack_c::YrotM(-i_this->field_0x704.y); + 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.model_size * a_this->scale.x, l_HIO.model_size * a_this->scale.x, l_HIO.model_size * a_this->scale.x); + + J3DModel* model = i_this->mpModelMorf->getModel(); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + i_this->mpModelMorf->play(0, 0); + anm_se_set(i_this); + i_this->mpModelMorf->modelCalc(); + MTXCopy(model->getAnmMtx(2), *calc_mtx); + + sp2c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + sp2c.set(0.0f, 0.0f, -200.0f); + MtxPosition(&sp2c, &sp44); + if (sp38.y < sp44.y) { + i_this->field_0x717 = 0; + } + else { + i_this->field_0x717 = 1; + } + + cXyz sp50(0.0f, 0.0f, 0.0f); + if (i_this->field_0x6c8 != 0) { + sp50.set(-20000.0f, 200000.0f, 30000.0f); + } + + MTXCopy(model->getAnmMtx(6), *calc_mtx); + sp2c.set(30.0f, 30.0f, 0.0f); + MtxPosition(&sp2c, &a_this->eyePos); + cXyz sp5c; + sp5c = a_this->eyePos + sp50; + sp5c.y += 40.0f; + i_this->field_0xa7c[0].SetC(sp5c); + if (daPy_getPlayerActorClass()->checkHorseRide()) { + i_this->field_0xa7c[0].SetR(70.0f); + } else { + i_this->field_0xa7c[0].SetR(50.0f); + } + + a_this->attention_info.position = a_this->eyePos; + a_this->attention_info.position.y += 70.0f; + + MTXCopy(model->getAnmMtx(1), *calc_mtx); + sp2c.set(-30.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + i_this->field_0xa7c[1].SetC(sp38 + sp50); + i_this->field_0xa7c[1].SetR(45.0f); + MTXCopy(model->getAnmMtx(2), *calc_mtx); + sp2c.set(20.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + i_this->field_0xa7c[2].SetC(sp38 + sp50); + i_this->field_0xa7c[2].SetR(45.0f); + + for (int i = 0; i <= 2; i++) { + if (i_this->field_0x6d2 != 0) { + i_this->field_0xa7c[i].OnCoSetBit(); + } else { + i_this->field_0xa7c[i].OffCoSetBit(); + } + + dComIfG_Ccsp()->Set(&i_this->field_0xa7c[i]); + } + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(19), *calc_mtx); + i_this->mpAxeModel->setBaseTRMtx(*calc_mtx); + + if (i_this->field_0x6cf != 0 && i_this->field_0x6ce <= 1) { + sp2c.set(0.0f, 35.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + if (i_this->field_0x6d0 == 0) { + i_this->field_0x6d0 = 1; + i_this->field_0xe24.StartCAt(sp38); + } else { + i_this->field_0xe24.MoveCAt(sp38); + } + + if (i_this->field_0x6ce == 1) { + i_this->field_0xe24.SetR(l_HIO.model_size * 80.0f); + } else { + i_this->field_0xe24.SetR(l_HIO.model_size * 60.0f); + } + i_this->field_0xe24.SetAtAtp(2); + + if (i_this->field_0x6c0[1] != 0) { + i_this->field_0xe24.SetAtSpl((dCcG_At_Spl)1); + } else { + i_this->field_0xe24.SetAtSpl((dCcG_At_Spl)0); + } + } + + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(12), *calc_mtx); + i_this->mpShieldModel->setBaseTRMtx(*calc_mtx); + + if (i_this->field_0x6cf != 0 && i_this->field_0x6ce == 2) { + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(34), *calc_mtx); + sp2c.set(0.0f, 0.0f, 0.0f); + MtxPosition(&sp2c, &sp38); + + if (i_this->field_0x6d0 == 0) { + i_this->field_0x6d0 = 1; + i_this->field_0xe24.StartCAt(sp38); + } else { + i_this->field_0xe24.MoveCAt(sp38); + } + + i_this->field_0xe24.SetR(70.0f * l_HIO.model_size); + i_this->field_0xe24.SetAtAtp(3); + i_this->field_0xe24.SetAtSpl((dCcG_At_Spl)10); + } + + if (i_this->field_0x6cf == 0) { + cXyz sp68(-23500.0f, -20000.0f, -50000.0f); + i_this->field_0xe24.SetC(a_this->current.pos + sp68); + i_this->field_0x6d0 = 0; + } else { + i_this->field_0x6cf = 0; + } + + dComIfG_Ccsp()->Set(&i_this->field_0xe24); + + daPy_py_c* player; + if (i_this->field_0x6d1 != 0 && i_this->field_0x6cc == 0) { + player = (daPy_py_c*)dComIfGp_getPlayer(0); + i_this->field_0x6c8 = 5; + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(12), *calc_mtx); + sp2c.set(50.0f, 0.0f, 30.0f); + MtxPosition(&sp2c, &sp38); + i_this->field_0xf5c.SetC(sp38); + i_this->field_0xf5c.SetR(70.0f * l_HIO.model_size); + + if (i_this->field_0xf5c.ChkTgHit()) { + def_se_set(&i_this->mSound, i_this->field_0xf5c.GetTgHitObj(), 40, 0); + dScnPly_c::setPauseTimer(l_HIO.field_0x1c); + i_this->field_0x6cc = 10; + cMtx_YrotS(*calc_mtx, a_this->shape_angle.y); + sp2c.x = 0.0f; + sp2c.y = 120.0f; + sp2c.z = 50.0f; + MtxPosition(&sp2c, &sp38); + sp38 += a_this->current.pos; + dComIfGp_setHitMark(2, NULL, &sp38, &a_this->shape_angle, NULL, 0); + if (player->getIronBallCenterPos() != NULL) { + i_this->mAction = 12; + i_this->field_0x5b4 = 0; + if (i_this->field_0x80e != 0) { + a_this->current.angle.y = a_this->shape_angle.y; + } + + i_this->mSound.startCreatureVoice(Z2SE_EN_MF_V_DAMAGE, -1); + } + } + } else { + cXyz sp74(-23500.0f, -20000.0f, -30000.0f); + i_this->field_0xf5c.SetC(a_this->current.pos + sp74); + } + + i_this->field_0x6d1 = 0; + dComIfG_Ccsp()->Set(&i_this->field_0xf5c); + if (i_this->field_0x6a4 != 0) { + cLib_addCalc2(&i_this->field_0x6a8, -20.0f, 1.0f, 0.4f); + } + player = (daPy_py_c*)dComIfGp_getPlayer(0); + MTXCopy(i_this->mpModelMorf->getModel()->getAnmMtx(2), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&sp38); + sp2c = player->current.pos - sp38; + cMtx_YrotS(*calc_mtx, cM_atan2s(sp2c.x, sp2c.z)); + sp2c.x = 0.0; + sp2c.y = 45.0f; + sp2c.z = 30.0f; + MtxPosition(&sp2c, &sp44); + sp44 += sp38; + a_this->setDownPos(&sp44); + cXyz sp80(a_this->eyePos); + sp80.y += 180.0f; + a_this->setHeadLockPos(&sp80); + cXyz sp8c(1.5f, 1.5f, 1.5f); + setMidnaBindEffect(a_this, &i_this->mSound, &a_this->eyePos, &sp8c); + + if ((a_this->current.pos.y - a_this->home.pos.y) < -5000.0f) { + fopAcM_delete(a_this); + OS_REPORT("MF NARAKU\n"); + int swBit = fopAcM_GetParam(a_this) >> 24; + if (swBit != 0xFF) { + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(a_this)); + } + } + + if (strcmp(dComIfGp_getStartStageName(), "D_MN07") == 0 && fopAcM_GetRoomNo(a_this) == 8 && a_this->health != 0 && a_this->current.pos.y <= -300.0f) { + i_this->mAction = 21; + i_this->field_0x5b4 = 0; + i_this->field_0x6e4 = 0.0; + a_this->health = 0; + } + + return 1; +} + +/* 80712998-807129A0 008378 0008+00 1/0 0/0 0/0 .text daE_MF_IsDelete__FP10e_mf_class */ +static int daE_MF_IsDelete(e_mf_class* i_this) { + return 1; +} + +/* 807129A0-80712A08 008380 0068+00 1/0 0/0 0/0 .text daE_MF_Delete__FP10e_mf_class */ +static int daE_MF_Delete(e_mf_class* i_this) { + fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->actor; + dComIfG_resDelete(&i_this->mPhase, "E_mf"); + + if (i_this->field_0x10b9 != 0) { + l_initHIO = 0; + } + + if (a_this->heap != NULL) { + i_this->mpModelMorf->stopZelAnime(); + } + + return 1; +} /* 80713CD8-80713CE4 0001D0 000C+00 1/0 0/0 0/0 .data jv_offset */ -SECTION_DATA static u8 jv_offset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; +Vec jv_offset = { 0.0f, 0.0f, 0.0f }; /* 80713CE4-80713D74 -00001 0090+00 1/1 0/0 0/0 .data jc_data */ -SECTION_DATA static void* jc_data[36] = { - (void*)0x00010002, (void*)0x42200000, (void*)&jv_offset, (void*)0x00010003, (void*)0x41F00000, - (void*)&jv_offset, (void*)0x00010016, (void*)0x42200000, (void*)&jv_offset, (void*)0x0001000B, - (void*)0x41700000, (void*)&jv_offset, (void*)0x0001000C, (void*)0x41200000, (void*)&jv_offset, - (void*)0x00010011, (void*)0x41700000, (void*)&jv_offset, (void*)0x00010012, (void*)0x41200000, - (void*)&jv_offset, (void*)0x00010017, (void*)0x41A00000, (void*)&jv_offset, (void*)0x00010018, - (void*)0x41700000, (void*)&jv_offset, (void*)0x0001001B, (void*)0x41A00000, (void*)&jv_offset, - (void*)0x0001001C, (void*)0x41700000, (void*)&jv_offset, (void*)0x00010020, (void*)0x41A00000, - (void*)&jv_offset, +dJntColData_c jc_data[12] = { + {0, 1, 2, 40.0f, &jv_offset}, {0, 1, 3, 30.0f, &jv_offset}, + {0, 1, 22, 40.0f, &jv_offset}, {0, 1, 11, 15.0f, &jv_offset}, + {0, 1, 12, 10.0f, &jv_offset}, {0, 1, 17, 15.0f, &jv_offset}, + {0, 1, 18, 10.0f, &jv_offset}, {0, 1, 23, 20.0f, &jv_offset}, + {0, 1, 24, 15.0f, &jv_offset}, {0, 1, 27, 20.0f, &jv_offset}, + {0, 1, 28, 15.0f, &jv_offset}, {0, 1, 32, 20.0f, &jv_offset}, }; -/* 80713D74-80713DB4 00026C 0040+00 0/1 0/0 0/0 .data cc_sph_src$7407 */ -#pragma push -#pragma force_active on -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xd8fafdbf, 0x3}, 0x75}}, // 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 -}; -#pragma pop +/* 80712A08-80712BF0 0083E8 01E8+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* a_this) { + e_mf_class* i_this = (e_mf_class*)a_this; -/* 80713DB4-80713DF4 0002AC 0040+00 0/1 0/0 0/0 .data at_sph_src$7408 */ -#pragma push -#pragma force_active on -static dCcD_SrcSph at_sph_src = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x2, 0xd}, {0x0, 0x0}, 0x0}}, // mObj - {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 35.0f} // mSph - } // mSphAttr -}; -#pragma pop + i_this->mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_mf", 38), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_mf", 31), 0, 1.0f, + 0, -1, &i_this->mSound, 0x80000, 0x11000084); + if (i_this->mpModelMorf == NULL || i_this->mpModelMorf->getModel() == NULL) { + return 0; + } -/* 80713DF4-80713E34 0002EC 0040+00 0/1 0/0 0/0 .data tate_sph_src$7409 */ -#pragma push -#pragma force_active on -static dCcD_SrcSph tate_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_STONE, 0x5, 0x0, 0x0, 0x303}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph - } // mSphAttr -}; -#pragma pop + J3DModel* model = i_this->mpModelMorf->getModel(); + model->setUserArea((u32)i_this); + + for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) { + if (i != 0) { + model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack); + } + } + + if (i_this->mJntCol.init(a_this, &jc_data[0], model, 12) == 0) { + return 0; + } + + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_mf", 39); + JUT_ASSERT(5274, modelData != 0); + i_this->mpAxeModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->mpAxeModel == NULL) { + return 0; + } + + modelData = (J3DModelData*)dComIfG_getObjectRes("E_mf", 40); + JUT_ASSERT(5286, modelData != 0); + i_this->mpShieldModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (i_this->mpShieldModel == NULL) { + return 0; + } + + return 1; +} + +/* 80712BF0-80712F20 0085D0 0330+00 1/0 0/0 0/0 .text daE_MF_Create__FP10fopAc_ac_c */ +static cPhs__Step daE_MF_Create(fopAc_ac_c* a_this) { + e_mf_class* i_this = (e_mf_class*)a_this; + + fopAcM_SetupActor(a_this, e_mf_class); + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&i_this->mPhase, "E_mf"); + if (phase == cPhs_COMPLEATE_e) { + int swBit = fopAcM_GetParam(a_this) >> 24; + if (swBit != 0xFF) { + if (dComIfGs_isSwitch(swBit, fopAcM_GetRoomNo(a_this))) { + return cPhs_ERROR_e; + } + } + + OS_REPORT("E_mf PARAM %x\n", fopAcM_GetParam(a_this)); + i_this->field_0x5b6 = fopAcM_GetParam(a_this); + i_this->field_0x5b9 = 1; + i_this->field_0x5b7 = (fopAcM_GetParam(a_this) >> 8) & 15; + i_this->field_0x5b8 = (fopAcM_GetParam(a_this) & 0xF000) >> 12; + + if ((a_this->home.angle.z & 0xFF) == 0 || (a_this->home.angle.z & 0xFF) == 0xFF) { + i_this->field_0x6b8 = 100000.0f; + } else { + i_this->field_0x6b8 = (a_this->home.angle.z & 0xFF) * 100.0f; + } + + OS_REPORT("E_mf AZ %x\n", a_this->home.angle.z); + OS_REPORT("E_mf PR %d\n", i_this->field_0x6b8); + a_this->shape_angle.z = 0; + a_this->current.angle.z = 0; + a_this->home.angle.z = 0; + OS_REPORT("E_mf//////////////E_MF SET 1 !!\n"); + + if (!fopAcM_entrySolidHeap(a_this, useHeapInit, 0x33E0)) { + OS_REPORT("//////////////E_MF SET NON !!\n"); + return cPhs_ERROR_e; + } + + if (l_initHIO == 0) { + i_this->field_0x10b9 = 1; + l_initHIO = 1; + l_HIO.field_0x4 = -1; + } + + fopAcM_OnStatus(a_this, fopAcM_STATUS_UNK_000100); + a_this->attention_info.flags = 4; + fopAcM_SetMtx(a_this, i_this->mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(a_this, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(a_this, 200.0f, 200.0f, 200.0f); + + i_this->mObjAcch.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(80.0f, 100.0f); + a_this->health = 200; + a_this->field_0x560 = 200; + i_this->mStts.Init(200, 0, a_this); + + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xd8fafdbf, 0x3}, 0x75}}, // 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 + }; + for (int i = 0; i <= 2; i++) { + i_this->field_0xa7c[i].Set(cc_sph_src); + i_this->field_0xa7c[i].SetStts(&i_this->mStts); + } + + static dCcD_SrcSph at_sph_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x2, 0xd}, {0x0, 0x0}, 0x0}}, // mObj + {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 35.0f} // mSph + } // mSphAttr + }; + i_this->field_0xe24.Set(at_sph_src); + i_this->field_0xe24.SetStts(&i_this->mStts); + + static dCcD_SrcSph tate_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_STONE, 0x5, 0x0, 0x0, 0x303}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph + } // mSphAttr + }; + i_this->field_0xf5c.Set(tate_sph_src); + i_this->field_0xf5c.SetStts(&i_this->mStts); + + i_this->field_0x6ac = (int)cM_rndF(65535.0f) & 0xFF00; + + if (i_this->field_0x5b6 == 0) { + i_this->mAction = 9; + } + + i_this->mSound.init(&a_this->current.pos, &a_this->eyePos, 3, 1); + i_this->mSound.setEnemyName("E_mf"); + i_this->mAtInfo.mpSound = &i_this->mSound; + + if (strcmp(dComIfGp_getStartStageName(), "D_MN09") == 0) { + fopAcM_OnStatus(a_this, fopAcM_STATUS_UNK_004000); + } + + c_start = 1; + daE_MF_Execute(i_this); + c_start = 0; + } + + return phase; +} + +/* 80712F20-807130FC 008900 01DC+00 1/1 0/0 0/0 .text __ct__10e_mf_classFv */ +e_mf_class::e_mf_class() {} + +AUDIO_INSTANCES; /* 80713E34-80713E54 -00001 0020+00 1/0 0/0 0/0 .data l_daE_MF_Method */ -static actor_method_class l_daE_MF_Method = { - (process_method_func)daE_MF_Create__FP10fopAc_ac_c, - (process_method_func)daE_MF_Delete__FP10e_mf_class, - (process_method_func)daE_MF_Execute__FP10e_mf_class, - (process_method_func)daE_MF_IsDelete__FP10e_mf_class, - (process_method_func)daE_MF_Draw__FP10e_mf_class, +actor_method_class l_daE_MF_Method = { + (process_method_func)daE_MF_Create, + (process_method_func)daE_MF_Delete, + (process_method_func)daE_MF_Execute, + (process_method_func)daE_MF_IsDelete, + (process_method_func)daE_MF_Draw, }; /* 80713E54-80713E84 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_MF */ @@ -516,1294 +3325,3 @@ extern actor_process_profile_definition g_profile_E_MF = { fopAc_ENEMY_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80713E84-80713E90 00037C 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, -}; - -/* 80713E90-80713E9C 000388 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, -}; - -/* 80713E9C-80713EA8 000394 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, -}; - -/* 80713EA8-80713EB4 0003A0 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80713EB4-80713EC0 0003AC 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80713EC0-80713EE4 0003B8 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_80713508, - (void*)NULL, - (void*)NULL, - (void*)func_80713500, -}; - -/* 80713EE4-80713F14 0003DC 0030+00 3/3 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_807134E8, - (void*)NULL, - (void*)NULL, - (void*)func_807134F8, - (void*)NULL, - (void*)NULL, - (void*)func_807134F0, -}; - -/* 80713F14-80713F20 00040C 000C+00 2/2 0/0 0/0 .data __vt__12daE_MF_HIO_c */ -SECTION_DATA extern void* __vt__12daE_MF_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_MF_HIO_cFv, -}; - -/* 8070A70C-8070A77C 0000EC 0070+00 1/1 0/0 0/0 .text __ct__12daE_MF_HIO_cFv */ -daE_MF_HIO_c::daE_MF_HIO_c() { - // NONMATCHING -} - -/* 8070A77C-8070A82C 00015C 00B0+00 2/2 0/0 0/0 .text mf_disappear__FP10e_mf_class */ -static void mf_disappear(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807139B4-807139B8 000040 0004+00 1/4 0/0 0/0 .rodata @3893 */ -SECTION_RODATA static f32 const lit_3893 = -1.0f; -COMPILER_STRIP_GATE(0x807139B4, &lit_3893); - -/* 80713AF4-80713AF4 000180 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80713AF4 = "E_mf"; -#pragma pop - -/* 8070A82C-8070A8D8 00020C 00AC+00 16/16 0/0 0/0 .text anm_init__FP10e_mf_classifUcf */ -static void anm_init(e_mf_class* param_0, int param_1, f32 param_2, u8 param_3, f32 param_4) { - // NONMATCHING -} - -/* 8070A8D8-8070AD94 0002B8 04BC+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -static void nodeCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807139B8-807139BC 000044 0004+00 0/11 0/0 0/0 .rodata @4120 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4120 = 50.0f; -COMPILER_STRIP_GATE(0x807139B8, &lit_4120); -#pragma pop - -/* 807139BC-807139C0 000048 0004+00 0/1 0/0 0/0 .rodata @4121 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4121 = 1150.0f; -COMPILER_STRIP_GATE(0x807139BC, &lit_4121); -#pragma pop - -/* 8070AD94-8070B03C 000774 02A8+00 1/0 0/0 0/0 .text daE_MF_Draw__FP10e_mf_class */ -static void daE_MF_Draw(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070B03C-8070B114 000A1C 00D8+00 2/2 0/0 0/0 .text other_bg_check__FP10e_mf_classP10fopAc_ac_c - */ -static void other_bg_check(e_mf_class* param_0, fopAc_ac_c* param_1) { - // NONMATCHING -} - -/* 8070B114-8070B1EC 000AF4 00D8+00 1/1 0/0 0/0 .text other_bg_check2__FP10e_mf_classP4cXyz */ -static void other_bg_check2(e_mf_class* param_0, cXyz* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713F28-80713F2C 000008 0001+03 1/1 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 80713F2C-80713F30 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 - -/* 80713F30-80713F34 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 - -/* 80713F34-80713F38 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 - -/* 80713F38-80713F3C 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 - -/* 80713F3C-80713F40 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 - -/* 80713F40-80713F44 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 - -/* 80713F44-80713F48 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 - -/* 80713F48-80713F4C 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 - -/* 80713F4C-80713F50 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 - -/* 80713F50-80713F54 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 - -/* 80713F54-80713F58 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 - -/* 80713F58-80713F5C 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 - -/* 80713F5C-80713F60 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 - -/* 80713F60-80713F64 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 - -/* 80713F64-80713F68 -00001 0004+00 1/2 0/0 0/0 .bss None */ -/* 80713F64 0001+00 data_80713F64 @1009 */ -/* 80713F65 0003+00 data_80713F65 None */ -static u8 struct_80713F64[4]; - -/* 80713F68-80713F74 000048 000C+00 1/1 0/0 0/0 .bss @3844 */ -static u8 lit_3844[12]; - -/* 80713F74-80713F98 000054 0024+00 9/10 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[36]; - -/* 80713F98-80713FC0 000078 0028+00 2/2 0/0 0/0 .bss target_info */ -static u8 target_info[40]; - -/* 80713FC0-80713FC4 0000A0 0004+00 2/2 0/0 0/0 .bss target_info_count */ -static u8 target_info_count[4]; - -/* 8070B1EC-8070B268 000BCC 007C+00 1/1 0/0 0/0 .text s_b_sub__FPvPv */ -static void s_b_sub(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807139C0-807139C4 00004C 0004+00 0/5 0/0 0/0 .rodata @4346 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4346 = 30.0f; -COMPILER_STRIP_GATE(0x807139C0, &lit_4346); -#pragma pop - -/* 807139C4-807139C8 000050 0004+00 0/1 0/0 0/0 .rodata @4347 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4347 = 500.0f; -COMPILER_STRIP_GATE(0x807139C4, &lit_4347); -#pragma pop - -/* 807139C8-807139CC 000054 0004+00 0/1 0/0 0/0 .rodata @4348 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4348 = -125.0f; -COMPILER_STRIP_GATE(0x807139C8, &lit_4348); -#pragma pop - -/* 807139CC-807139D0 000058 0004+00 0/1 0/0 0/0 .rodata @4349 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4349 = 1500.0f; -COMPILER_STRIP_GATE(0x807139CC, &lit_4349); -#pragma pop - -/* 8070B268-8070B6E0 000C48 0478+00 2/2 0/0 0/0 .text search_bomb__FP10e_mf_classi */ -static void search_bomb(e_mf_class* param_0, int param_1) { - // NONMATCHING -} - -/* 8070B6E0-8070B704 0010C0 0024+00 4/4 0/0 0/0 .text bomb_view_check__FP10e_mf_class */ -static void bomb_view_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070B704-8070B728 0010E4 0024+00 1/1 0/0 0/0 .text bomb_check__FP10e_mf_class */ -static void bomb_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070B728-8070B76C 001108 0044+00 1/1 0/0 0/0 .text player_way_check__FP10e_mf_class */ -static void player_way_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070B76C-8070B848 00114C 00DC+00 4/4 0/0 0/0 .text pl_check__FP10e_mf_classfs */ -static void pl_check(e_mf_class* param_0, f32 param_1, s16 param_2) { - // NONMATCHING -} - -/* 8070B848-8070B950 001228 0108+00 3/3 0/0 0/0 .text move_gake_check__FP10e_mf_classfSc - */ -static void move_gake_check(e_mf_class* param_0, f32 param_1, s8 param_2) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807139D0-807139D4 00005C 0004+00 0/4 0/0 0/0 .rodata @4459 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4459 = 200.0f; -COMPILER_STRIP_GATE(0x807139D0, &lit_4459); -#pragma pop - -/* 8070B950-8070BB10 001330 01C0+00 1/1 0/0 0/0 .text jump_pos_check__FP10e_mf_classP4cXyz */ -static void jump_pos_check(e_mf_class* param_0, cXyz* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807139D4-807139D8 000060 0004+00 0/7 0/0 0/0 .rodata @4559 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4559 = 10.0f; -COMPILER_STRIP_GATE(0x807139D4, &lit_4559); -#pragma pop - -/* 807139D8-807139DC 000064 0004+00 0/2 0/0 0/0 .rodata @4560 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4560 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x807139D8, &lit_4560); -#pragma pop - -/* 807139DC-807139E0 000068 0004+00 0/3 0/0 0/0 .rodata @4561 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4561 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x807139DC, &lit_4561); -#pragma pop - -/* 807139E0-807139E4 00006C 0004+00 0/2 0/0 0/0 .rodata @4562 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4562 = 2000.0f; -COMPILER_STRIP_GATE(0x807139E0, &lit_4562); -#pragma pop - -/* 8070BB10-8070BF94 0014F0 0484+00 2/1 0/0 0/0 .text e_mf_stay__FP10e_mf_class */ -static void e_mf_stay(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807139E4-807139E8 000070 0004+00 0/11 0/0 0/0 .rodata @4563 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4563 = 3.0f; -COMPILER_STRIP_GATE(0x807139E4, &lit_4563); -#pragma pop - -/* 807139E8-807139EC 000074 0004+00 0/4 0/0 0/0 .rodata @4564 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4564 = 1.5f; -COMPILER_STRIP_GATE(0x807139E8, &lit_4564); -#pragma pop - -/* 807139EC-807139F0 000078 0004+00 0/5 0/0 0/0 .rodata @4565 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4565 = 20.0f; -COMPILER_STRIP_GATE(0x807139EC, &lit_4565); -#pragma pop - -/* 807139F0-807139F4 00007C 0004+00 0/10 0/0 0/0 .rodata @4566 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4566 = 5.0f; -COMPILER_STRIP_GATE(0x807139F0, &lit_4566); -#pragma pop - -/* 807139F4-807139F8 000080 0004+00 0/1 0/0 0/0 .rodata @4567 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4567 = 40.0f; -COMPILER_STRIP_GATE(0x807139F4, &lit_4567); -#pragma pop - -/* 807139F8-807139FC 000084 0004+00 0/0 0/0 0/0 .rodata @4568 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4568 = 75.0f; -COMPILER_STRIP_GATE(0x807139F8, &lit_4568); -#pragma pop - -/* 807139FC-80713A04 000088 0008+00 0/1 0/0 0/0 .rodata @4573 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4573[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x807139FC, &lit_4573); -#pragma pop - -/* 80713A04-80713A08 000090 0004+00 0/1 0/0 0/0 .rodata @4634 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4634 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80713A04, &lit_4634); -#pragma pop - -/* 80713A08-80713A0C 000094 0004+00 0/2 0/0 0/0 .rodata @4635 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4635 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80713A08, &lit_4635); -#pragma pop - -/* 80713A0C-80713A10 000098 0004+00 0/2 0/0 0/0 .rodata @4636 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4636 = 250.0f; -COMPILER_STRIP_GATE(0x80713A0C, &lit_4636); -#pragma pop - -/* 8070BF94-8070C2C4 001974 0330+00 1/1 0/0 0/0 .text e_mf_otoreac__FP10e_mf_class */ -static void e_mf_otoreac(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070C2C4-8070C7C4 001CA4 0500+00 2/1 0/0 0/0 .text e_mf_bomb_action__FP10e_mf_class */ -static void e_mf_bomb_action(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A10-80713A14 00009C 0004+00 0/1 0/0 0/0 .rodata @4737 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4737 = 600.0f; -COMPILER_STRIP_GATE(0x80713A10, &lit_4737); -#pragma pop - -/* 80713A14-80713A18 0000A0 0004+00 0/1 0/0 0/0 .rodata @4738 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4738 = -30.0f; -COMPILER_STRIP_GATE(0x80713A14, &lit_4738); -#pragma pop - -/* 80713A18-80713A1C 0000A4 0004+00 0/2 0/0 0/0 .rodata @4739 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4739 = 60.0f; -COMPILER_STRIP_GATE(0x80713A18, &lit_4739); -#pragma pop - -/* 80713A1C-80713A20 0000A8 0004+00 0/2 0/0 0/0 .rodata @4740 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4740 = 15.0f; -COMPILER_STRIP_GATE(0x80713A1C, &lit_4740); -#pragma pop - -/* 80713A20-80713A24 0000AC 0004+00 0/1 0/0 0/0 .rodata @4805 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4805 = 32768.0f; -COMPILER_STRIP_GATE(0x80713A20, &lit_4805); -#pragma pop - -/* 80713A24-80713A28 0000B0 0004+00 0/1 0/0 0/0 .rodata @4806 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4806 = 10000.0f; -COMPILER_STRIP_GATE(0x80713A24, &lit_4806); -#pragma pop - -/* 8070C7C4-8070CB1C 0021A4 0358+00 1/1 0/0 0/0 .text e_mf_normal__FP10e_mf_class */ -static void e_mf_normal(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A28-80713A2C 0000B4 0004+00 0/2 0/0 0/0 .rodata @4834 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4834 = -5.0f; -COMPILER_STRIP_GATE(0x80713A28, &lit_4834); -#pragma pop - -/* 8070CB1C-8070CCB8 0024FC 019C+00 1/1 0/0 0/0 .text e_mf_drawback__FP10e_mf_class */ -static void e_mf_drawback(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A2C-80713A30 0000B8 0004+00 0/2 0/0 0/0 .rodata @4899 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4899 = 2.0f; -COMPILER_STRIP_GATE(0x80713A2C, &lit_4899); -#pragma pop - -/* 80713A30-80713A34 0000BC 0004+00 1/5 0/0 0/0 .rodata @4900 */ -SECTION_RODATA static f32 const lit_4900 = 150.0f; -COMPILER_STRIP_GATE(0x80713A30, &lit_4900); - -/* 8070CCB8-8070D090 002698 03D8+00 1/1 0/0 0/0 .text e_mf_wolfbite__FP10e_mf_class */ -static void e_mf_wolfbite(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070D090-8070D0D0 002A70 0040+00 1/1 0/0 0/0 .text way_check__FP10e_mf_class */ -static void way_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A34-80713A38 0000C0 0004+00 0/1 0/0 0/0 .rodata @4971 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4971 = 1000.0f; -COMPILER_STRIP_GATE(0x80713A34, &lit_4971); -#pragma pop - -/* 8070D0D0-8070D2C8 002AB0 01F8+00 1/1 0/0 0/0 .text shot_s_sub__FPvPv */ -static void shot_s_sub(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A38-80713A3C 0000C4 0004+00 0/2 0/0 0/0 .rodata @5152 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5152 = 120.0f; -COMPILER_STRIP_GATE(0x80713A38, &lit_5152); -#pragma pop - -/* 80713A3C-80713A40 0000C8 0004+00 0/1 0/0 0/0 .rodata @5153 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5153 = 32763.0f; -COMPILER_STRIP_GATE(0x80713A3C, &lit_5153); -#pragma pop - -/* 80713A40-80713A44 0000CC 0004+00 0/1 0/0 0/0 .rodata @5154 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5154 = 13.0f / 20.0f; -COMPILER_STRIP_GATE(0x80713A40, &lit_5154); -#pragma pop - -/* 80713A44-80713A48 0000D0 0004+00 0/4 0/0 0/0 .rodata @5155 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5155 = 0.5f; -COMPILER_STRIP_GATE(0x80713A44, &lit_5155); -#pragma pop - -/* 80713A48-80713A4C 0000D4 0004+00 0/1 0/0 0/0 .rodata @5156 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5156 = 19.0f / 10.0f; -COMPILER_STRIP_GATE(0x80713A48, &lit_5156); -#pragma pop - -/* 8070D2C8-8070DBB4 002CA8 08EC+00 1/1 0/0 0/0 .text e_mf_fight_run__FP10e_mf_class */ -static void e_mf_fight_run(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070DBB4-8070DDDC 003594 0228+00 1/1 0/0 0/0 .text e_mf_jump__FP10e_mf_class */ -static void e_mf_jump(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A4C-80713A50 0000D8 0004+00 0/2 0/0 0/0 .rodata @5310 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5310 = 35.0f; -COMPILER_STRIP_GATE(0x80713A4C, &lit_5310); -#pragma pop - -/* 80713A50-80713A54 0000DC 0004+00 0/1 0/0 0/0 .rodata @5311 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5311 = 11.0f / 10.0f; -COMPILER_STRIP_GATE(0x80713A50, &lit_5311); -#pragma pop - -/* 8070DDDC-8070E30C 0037BC 0530+00 1/1 0/0 0/0 .text e_mf_gakejump__FP10e_mf_class */ -static void e_mf_gakejump(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070E30C-8070E36C 003CEC 0060+00 2/2 0/0 0/0 .text at_hit_check__FP10e_mf_class */ -static void at_hit_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A54-80713A58 0000E0 0004+00 0/1 0/0 0/0 .rodata @5389 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5389 = 6.0f; -COMPILER_STRIP_GATE(0x80713A54, &lit_5389); -#pragma pop - -/* 80713A58-80713A5C 0000E4 0004+00 0/1 0/0 0/0 .rodata @5390 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5390 = -35.0f; -COMPILER_STRIP_GATE(0x80713A58, &lit_5390); -#pragma pop - -/* 80713A5C-80713A60 0000E8 0004+00 1/3 0/0 0/0 .rodata @5391 */ -SECTION_RODATA static f32 const lit_5391 = 25.0f; -COMPILER_STRIP_GATE(0x80713A5C, &lit_5391); - -/* 8070E36C-8070E5E0 003D4C 0274+00 1/1 0/0 0/0 .text e_mf_attack__FP10e_mf_class */ -static void e_mf_attack(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070E5E0-8070E760 003FC0 0180+00 1/1 0/0 0/0 .text tail_eff_set__FP10e_mf_class */ -static void tail_eff_set(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A60-80713A64 0000EC 0004+00 0/1 0/0 0/0 .rodata @5509 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5509 = 55.0f; -COMPILER_STRIP_GATE(0x80713A60, &lit_5509); -#pragma pop - -/* 80713A64-80713A68 0000F0 0004+00 0/1 0/0 0/0 .rodata @5510 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5510 = 4.0f; -COMPILER_STRIP_GATE(0x80713A64, &lit_5510); -#pragma pop - -/* 8070E760-8070EA10 004140 02B0+00 1/1 0/0 0/0 .text e_mf_tail_attack__FP10e_mf_class */ -static void e_mf_tail_attack(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A68-80713A6C 0000F4 0004+00 0/1 0/0 0/0 .rodata @5566 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5566 = -8.0f; -COMPILER_STRIP_GATE(0x80713A68, &lit_5566); -#pragma pop - -/* 8070EA10-8070EC60 0043F0 0250+00 2/1 0/0 0/0 .text e_mf_guard__FP10e_mf_class */ -static void e_mf_guard(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070EC60-8070ED10 004640 00B0+00 1/1 0/0 0/0 .text e_mf_s_damage__FP10e_mf_class */ -static void e_mf_s_damage(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A6C-80713A70 0000F8 0004+00 0/2 0/0 0/0 .rodata @5615 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5615 = 70.0f; -COMPILER_STRIP_GATE(0x80713A6C, &lit_5615); -#pragma pop - -/* 80713A70-80713A74 0000FC 0004+00 0/1 0/0 0/0 .rodata @5616 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5616 = -150.0f; -COMPILER_STRIP_GATE(0x80713A70, &lit_5616); -#pragma pop - -/* 8070ED10-8070EEC4 0046F0 01B4+00 1/1 0/0 0/0 .text kado_check__FP10e_mf_class */ -static void kado_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070EEC4-8070F014 0048A4 0150+00 1/1 0/0 0/0 .text body_gake__FP10e_mf_class */ -static void body_gake(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070F014-8070F08C 0049F4 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A74-80713A78 000100 0004+00 0/1 0/0 0/0 .rodata @6006 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6006 = 8000.0f; -COMPILER_STRIP_GATE(0x80713A74, &lit_6006); -#pragma pop - -/* 8070F08C-8070FBEC 004A6C 0B60+00 2/1 0/0 0/0 .text e_mf_damage__FP10e_mf_class */ -static void e_mf_damage(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A78-80713A7C 000104 0004+00 0/0 0/0 0/0 .rodata @6007 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6007 = -100.0f; -COMPILER_STRIP_GATE(0x80713A78, &lit_6007); -#pragma pop - -/* 80713A7C-80713A80 000108 0004+00 0/0 0/0 0/0 .rodata @6008 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6008 = 9.0f / 5.0f; -COMPILER_STRIP_GATE(0x80713A7C, &lit_6008); -#pragma pop - -/* 80713A80-80713A84 00010C 0004+00 0/3 0/0 0/0 .rodata @6009 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6009 = -20.0f; -COMPILER_STRIP_GATE(0x80713A80, &lit_6009); -#pragma pop - -/* 80713A84-80713A88 000110 0004+00 0/1 0/0 0/0 .rodata @6033 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6033 = -3.0f; -COMPILER_STRIP_GATE(0x80713A84, &lit_6033); -#pragma pop - -/* 80713A88-80713A8C 000114 0004+00 0/1 0/0 0/0 .rodata @6034 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6034 = -6.0f; -COMPILER_STRIP_GATE(0x80713A88, &lit_6034); -#pragma pop - -/* 8070FBEC-8070FD40 0055CC 0154+00 1/1 0/0 0/0 .text e_mf_backdrop__FP10e_mf_class */ -static void e_mf_backdrop(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070FD40-8070FEE0 005720 01A0+00 1/1 0/0 0/0 .text e_mf_water__FP10e_mf_class */ -static void e_mf_water(e_mf_class* param_0) { - // NONMATCHING -} - -/* 8070FEE0-8070FF98 0058C0 00B8+00 1/1 0/0 0/0 .text wolfkick_damage__FP10e_mf_class */ -static void wolfkick_damage(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A8C-80713A90 000118 0004+00 0/1 0/0 0/0 .rodata @6087 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6087 = 3000.0f; -COMPILER_STRIP_GATE(0x80713A8C, &lit_6087); -#pragma pop - -/* 80713A90-80713A94 00011C 0004+00 0/1 0/0 0/0 .rodata @6088 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6088 = 800.0f; -COMPILER_STRIP_GATE(0x80713A90, &lit_6088); -#pragma pop - -/* 80713A94-80713A98 000120 0004+00 0/1 0/0 0/0 .rodata @6089 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6089 = 700.0f; -COMPILER_STRIP_GATE(0x80713A94, &lit_6089); -#pragma pop - -/* 8070FF98-807100A8 005978 0110+00 1/1 0/0 0/0 .text big_damage__FP10e_mf_class */ -static void big_damage(e_mf_class* param_0) { - // NONMATCHING -} - -/* 807100A8-80710158 005A88 00B0+00 1/1 0/0 0/0 .text small_damage__FP10e_mf_class */ -static void small_damage(e_mf_class* param_0) { - // NONMATCHING -} - -/* 80710158-807104EC 005B38 0394+00 1/1 0/0 0/0 .text damage_check__FP10e_mf_class */ -static void damage_check(e_mf_class* param_0) { - // NONMATCHING -} - -/* 807104EC-807119BC 005ECC 14D0+00 2/1 0/0 0/0 .text action__FP10e_mf_class */ -static void action(e_mf_class* param_0) { - // NONMATCHING -} - -/* 807119BC-80711CB8 00739C 02FC+00 1/1 0/0 0/0 .text anm_se_set__FP10e_mf_class */ -static void anm_se_set(e_mf_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713A98-80713A9C 000124 0004+00 0/0 0/0 0/0 .rodata @6886 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6886 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80713A98, &lit_6886); -#pragma pop - -/* 80713A9C-80713AA0 000128 0004+00 0/0 0/0 0/0 .rodata @6887 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6887 = -4.0f; -COMPILER_STRIP_GATE(0x80713A9C, &lit_6887); -#pragma pop - -/* 80713AA0-80713AA4 00012C 0004+00 0/0 0/0 0/0 .rodata @6888 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6888 = 7.0f; -COMPILER_STRIP_GATE(0x80713AA0, &lit_6888); -#pragma pop - -/* 80713AA4-80713AA8 000130 0004+00 0/0 0/0 0/0 .rodata @6889 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6889 = 2500.0f; -COMPILER_STRIP_GATE(0x80713AA4, &lit_6889); -#pragma pop - -/* 80713AA8-80713AAC 000134 0004+00 0/0 0/0 0/0 .rodata @6890 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6890 = 15000.0f; -COMPILER_STRIP_GATE(0x80713AA8, &lit_6890); -#pragma pop - -/* 80713AAC-80713AB0 000138 0004+00 0/0 0/0 0/0 .rodata @6891 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6891 = 12000.0f; -COMPILER_STRIP_GATE(0x80713AAC, &lit_6891); -#pragma pop - -/* 80713AB0-80713AB4 00013C 0004+00 0/0 0/0 0/0 .rodata @6892 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6892 = -1000000000.0f; -COMPILER_STRIP_GATE(0x80713AB0, &lit_6892); -#pragma pop - -/* 80713AB4-80713AB8 000140 0004+00 0/1 0/0 0/0 .rodata @7307 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7307 = -10.0f; -COMPILER_STRIP_GATE(0x80713AB4, &lit_7307); -#pragma pop - -/* 80713AB8-80713ABC 000144 0004+00 0/2 0/0 0/0 .rodata @7308 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7308 = -200.0f; -COMPILER_STRIP_GATE(0x80713AB8, &lit_7308); -#pragma pop - -/* 80713ABC-80713AC0 000148 0004+00 0/1 0/0 0/0 .rodata @7309 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7309 = -20000.0f; -COMPILER_STRIP_GATE(0x80713ABC, &lit_7309); -#pragma pop - -/* 80713AC0-80713AC4 00014C 0004+00 0/1 0/0 0/0 .rodata @7310 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7310 = 200000.0f; -COMPILER_STRIP_GATE(0x80713AC0, &lit_7310); -#pragma pop - -/* 80713AC4-80713AC8 000150 0004+00 0/1 0/0 0/0 .rodata @7311 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7311 = 30000.0f; -COMPILER_STRIP_GATE(0x80713AC4, &lit_7311); -#pragma pop - -/* 80713AC8-80713ACC 000154 0004+00 0/1 0/0 0/0 .rodata @7312 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7312 = 45.0f; -COMPILER_STRIP_GATE(0x80713AC8, &lit_7312); -#pragma pop - -/* 80713ACC-80713AD0 000158 0004+00 0/2 0/0 0/0 .rodata @7313 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7313 = 80.0f; -COMPILER_STRIP_GATE(0x80713ACC, &lit_7313); -#pragma pop - -/* 80713AD0-80713AD4 00015C 0004+00 0/1 0/0 0/0 .rodata @7314 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7314 = -23500.0f; -COMPILER_STRIP_GATE(0x80713AD0, &lit_7314); -#pragma pop - -/* 80713AD4-80713AD8 000160 0004+00 0/1 0/0 0/0 .rodata @7315 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7315 = -50000.0f; -COMPILER_STRIP_GATE(0x80713AD4, &lit_7315); -#pragma pop - -/* 80713AD8-80713ADC 000164 0004+00 0/1 0/0 0/0 .rodata @7316 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7316 = -30000.0f; -COMPILER_STRIP_GATE(0x80713AD8, &lit_7316); -#pragma pop - -/* 80713ADC-80713AE0 000168 0004+00 0/1 0/0 0/0 .rodata @7317 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7317 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x80713ADC, &lit_7317); -#pragma pop - -/* 80713AE0-80713AE4 00016C 0004+00 0/1 0/0 0/0 .rodata @7318 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7318 = 180.0f; -COMPILER_STRIP_GATE(0x80713AE0, &lit_7318); -#pragma pop - -/* 80713AE4-80713AE8 000170 0004+00 0/1 0/0 0/0 .rodata @7319 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7319 = -5000.0f; -COMPILER_STRIP_GATE(0x80713AE4, &lit_7319); -#pragma pop - -/* 80713AE8-80713AEC 000174 0004+00 0/1 0/0 0/0 .rodata @7320 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7320 = -300.0f; -COMPILER_STRIP_GATE(0x80713AE8, &lit_7320); -#pragma pop - -/* 80713AF4-80713AF4 000180 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80713AF9 = "D_MN07"; -#pragma pop - -/* 80713FC4-80713FC8 0000A4 0004+00 1/2 0/0 0/0 .bss c_start */ -static u8 c_start[4]; - -/* 80711CB8-80712998 007698 0CE0+00 2/1 0/0 0/0 .text daE_MF_Execute__FP10e_mf_class */ -static void daE_MF_Execute(e_mf_class* param_0) { - // NONMATCHING -} - -/* 80712998-807129A0 008378 0008+00 1/0 0/0 0/0 .text daE_MF_IsDelete__FP10e_mf_class */ -static bool daE_MF_IsDelete(e_mf_class* param_0) { - return true; -} - -/* 807129A0-80712A08 008380 0068+00 1/0 0/0 0/0 .text daE_MF_Delete__FP10e_mf_class */ -static void daE_MF_Delete(e_mf_class* param_0) { - // NONMATCHING -} - -/* 80712A08-80712BF0 0083E8 01E8+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713AEC-80713AF0 000178 0004+00 0/1 0/0 0/0 .rodata @7484 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7484 = 100000.0f; -COMPILER_STRIP_GATE(0x80713AEC, &lit_7484); -#pragma pop - -/* 80713AF0-80713AF4 00017C 0004+00 0/1 0/0 0/0 .rodata @7485 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7485 = 65535.0f; -COMPILER_STRIP_GATE(0x80713AF0, &lit_7485); -#pragma pop - -/* 80713AF4-80713AF4 000180 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80713B00 = "D_MN09"; -#pragma pop - -/* 80712BF0-80712F20 0085D0 0330+00 1/0 0/0 0/0 .text daE_MF_Create__FP10fopAc_ac_c */ -static void daE_MF_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80712F20-807130FC 008900 01DC+00 1/1 0/0 0/0 .text __ct__10e_mf_classFv */ -e_mf_class::e_mf_class() { - // NONMATCHING -} - -/* 807130FC-80713144 008ADC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80713144-8071318C 008B24 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 8071318C-80713258 008B6C 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80713258-807132DC 008C38 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} - -/* 807132DC-80713338 008CBC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80713338-807133A8 008D18 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 807133A8-80713418 008D88 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80713418-8071341C 008DF8 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 8071341C-80713464 008DFC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80713464-807134AC 008E44 0048+00 2/1 0/0 0/0 .text __dt__12daE_MF_HIO_cFv */ -daE_MF_HIO_c::~daE_MF_HIO_c() { - // NONMATCHING -} - -/* 807134AC-807134E8 008E8C 003C+00 0/0 1/0 0/0 .text __sinit_d_a_e_mf_cpp */ -void __sinit_d_a_e_mf_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x807134AC, __sinit_d_a_e_mf_cpp); -#pragma pop - -/* 807134E8-807134F0 008EC8 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_807134E8() { - // NONMATCHING -} - -/* 807134F0-807134F8 008ED0 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_807134F0() { - // NONMATCHING -} - -/* 807134F8-80713500 008ED8 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_807134F8() { - // NONMATCHING -} - -/* 80713500-80713508 008EE0 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80713500() { - // NONMATCHING -} - -/* 80713508-80713510 008EE8 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80713508() { - // NONMATCHING -} - -/* 80713924-80713960 009304 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80713FC8-80713FCC 0000A8 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_80713FC8[4]; -#pragma pop - -/* 80713FCC-80713FD0 0000AC 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_80713FCC[4]; -#pragma pop - -/* 80713FD0-80713FD4 0000B0 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80713FD0[4]; -#pragma pop - -/* 80713FD4-80713FD8 0000B4 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80713FD4[4]; -#pragma pop - -/* 80713FD8-80713FDC 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80713FD8[4]; -#pragma pop - -/* 80713FDC-80713FE0 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80713FDC[4]; -#pragma pop - -/* 80713FE0-80713FE4 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80713FE0[4]; -#pragma pop - -/* 80713FE4-80713FE8 0000C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80713FE4[4]; -#pragma pop - -/* 80713FE8-80713FEC 0000C8 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80713FE8[4]; -#pragma pop - -/* 80713FEC-80713FF0 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80713FEC[4]; -#pragma pop - -/* 80713FF0-80713FF4 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80713FF0[4]; -#pragma pop - -/* 80713FF4-80713FF8 0000D4 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80713FF4[4]; -#pragma pop - -/* 80713FF8-80713FFC 0000D8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_80713FF8[4]; -#pragma pop - -/* 80713FFC-80714000 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80713FFC[4]; -#pragma pop - -/* 80714000-80714004 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80714000[4]; -#pragma pop - -/* 80714004-80714008 0000E4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80714004[4]; -#pragma pop - -/* 80714008-8071400C 0000E8 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_80714008[4]; -#pragma pop - -/* 8071400C-80714010 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8071400C[4]; -#pragma pop - -/* 80714010-80714014 0000F0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80714010[4]; -#pragma pop - -/* 80714014-80714018 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80714014[4]; -#pragma pop - -/* 80714018-8071401C 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_80714018[4]; -#pragma pop - -/* 8071401C-80714020 0000FC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8071401C[4]; -#pragma pop - -/* 80714020-80714024 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80714020[4]; -#pragma pop - -/* 80714024-80714028 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80714024[4]; -#pragma pop - -/* 80714028-8071402C 000108 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80714028[4]; -#pragma pop - -/* 80713AF4-80713AF4 000180 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */