diff --git a/config/GZ2E01/rels/d_a_e_yg/symbols.txt b/config/GZ2E01/rels/d_a_e_yg/symbols.txt index 55a53a1fcd2..87f0bd2fb2d 100644 --- a/config/GZ2E01/rels/d_a_e_yg/symbols.txt +++ b/config/GZ2E01/rels/d_a_e_yg/symbols.txt @@ -165,10 +165,11 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa @1012 = .bss:0x0000003C; // type:object size:0x1 scope:local @1010 = .bss:0x00000040; // type:object size:0x1 scope:local @1009 = .bss:0x00000044; // type:object size:0x1 scope:local -lbl_250_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte +l_initHIO = .bss:0x00000045; // type:object size:0x1 data:byte @3817 = .bss:0x00000048; // type:object size:0xC scope:local l_HIO = .bss:0x00000054; // type:object size:0x1C scope:global data:byte @3917 = .bss:0x00000070; // type:object size:0xC scope:local +init$1863 = .bss:0x0000007C; // type:object size:0x1 scope:local align:1 @3920 = .bss:0x00000080; // type:object size:0xC scope:local @3921 = .bss:0x0000008C; // type:object size:0xC scope:local e_pos$3916 = .bss:0x00000098; // type:object size:0x24 scope:local @@ -203,6 +204,7 @@ ke_p = .bss:0x000001AC; // type:object size:0x9C scope:global align:4 data:float @4714 = .bss:0x000002D8; // type:object size:0xC scope:local ke_a = .bss:0x000002E4; // type:object size:0x4E scope:global data:2byte @5031 = .bss:0x00000334; // type:object size:0xC scope:local +init$2973 = .bss:0x00000340; // type:object size:0x1 scope:local align:1 sc$5030 = .bss:0x00000344; // type:object size:0xC scope:local sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x00000350; // type:object size:0x4 scope:global sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000354; // type:object size:0x4 scope:global diff --git a/configure.py b/configure.py index 410b0a6c0ba..464d3b35db4 100755 --- a/configure.py +++ b/configure.py @@ -1806,7 +1806,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yc"), ActorRel(NonMatching, "d_a_e_yd"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yd_leaf"), - ActorRel(NonMatching, "d_a_e_yg"), + ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yg"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yh"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yk"), ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ym"), diff --git a/include/d/actor/d_a_e_yg.h b/include/d/actor/d_a_e_yg.h index a1b16a0a774..69a85430a89 100644 --- a/include/d/actor/d_a_e_yg.h +++ b/include/d/actor/d_a_e_yg.h @@ -1,5 +1,8 @@ #ifndef D_A_E_YG_H #define D_A_E_YG_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" #include "f_op/f_op_actor_mng.h" /** @@ -9,23 +12,59 @@ * * @details * - */ -class e_yg_class : public fopEn_enemy_c { -private: - /* 0x5ac */ u8 field_0x5ac[0x18a0 - 0x5ac]; +*/ + +struct yg_ke_s { + /* 0x00 */ cXyz field_0x0[10]; + /* 0x78 */ cXyz field_0x78[10]; + /* 0xF0 */ cXyz field_0xf0; +}; + +class e_yg_class { +public: + /* 0x0000 */ fopEn_enemy_c actor; + /* 0x05AC */ request_of_phase_process_class mPhase; + /* 0x05B4 */ s16 mActionMode; + /* 0x05B6 */ u8 arg0; + /* 0x05B7 */ u8 arg1; + /* 0x05B8 */ int mSwBit; + /* 0x05BC */ cXyz field_0x5bc; + /* 0x05C8 */ s16 mCurrentAngleYTarget; + /* 0x05CC */ mDoExt_McaMorfSO* mpMorf; + /* 0x05D0 */ int mAnm; + /* 0x05D4 */ u32 mShadowKey; + /* 0x05D8 */ Z2CreatureEnemy mSound; + /* 0x067C */ s16 mFrameCounter; + /* 0x067E */ s16 mAction; + /* 0x0680 */ f32 mPlayerDist; + /* 0x0684 */ s16 mPlayerAngleY; + /* 0x0686 */ s16 mTimers[4]; + /* 0x068E */ s16 mInvulnerabilityTimer; + /* 0x0690 */ f32 mGroundCross; + /* 0x0694 */ f32 mCurrentPosYOffset; + /* 0x0698 */ dBgS_AcchCir mAcchCir; + /* 0x06D8 */ dBgS_ObjAcch mBgc; + /* 0x08B0 */ s8 mWaterFlag; + /* 0x08B4 */ dCcD_Stts mStts; + /* 0x08F0 */ dCcD_Sph mSph1; + /* 0x0A28 */ dCcD_Sph mSph2; + /* 0x0B60 */ dCcU_AtInfo mAtInfo; + /* 0x0B84 */ s8 mUnkFlag1; + /* 0x0B88 */ u32 mUnkPrtcl; + /* 0x0B8C */ u32 mDownWtrAPrtcls[4]; + /* 0x0B9C */ u32 mHamonPrtcl; + /* 0x0BA0 */ u8 field_0xba0[0xba5 - 0xba0]; + /* 0x0BA5 */ s8 mDispFlag; + /* 0x0BA6 */ s8 mUnkFlag2; + /* 0x0BA7 */ s8 mSplashTimer; + /* 0x0BA8 */ s8 mDeathFlag; + /* 0x0BAC */ f32 mDistance; + /* 0x0BB0 */ fpc_ProcID mSkullActorID; + /* 0x0BB4 */ yg_ke_s mYgKes[13]; + /* 0x1880 */ mDoExt_3DlineMat0_c mLineMat; + /* 0x189C */ u8 mIsFirstSpawn; }; STATIC_ASSERT(sizeof(e_yg_class) == 0x18a0); -class daE_YG_HIO_c { - /* 807F834C */ daE_YG_HIO_c(); - /* 807FC168 */ ~daE_YG_HIO_c(); -}; - -struct yg_ke_s { - /* 807FBE70 */ ~yg_ke_s(); - /* 807FBEEC */ yg_ke_s(); -}; - - #endif /* D_A_E_YG_H */ diff --git a/src/d/actor/d_a_e_yg.cpp b/src/d/actor/d_a_e_yg.cpp index 41e59e6e6e3..11ff0d52c40 100644 --- a/src/d/actor/d_a_e_yg.cpp +++ b/src/d/actor/d_a_e_yg.cpp @@ -7,311 +7,1477 @@ #include "d/actor/d_a_e_yg.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +#include "f_op/f_op_kankyo_mng.h" +#include "d/actor/d_a_obj_carry.h" +#include "Z2AudioLib/Z2Instances.h" #include "f_op/f_op_actor_enemy.h" +enum E_yg_RES_File_ID { + /* BCK */ + /* 0x04 */ BCK_YG_BITE_DIE = 0x4, + /* 0x05 */ BCK_YG_DAMAGE, + /* 0x06 */ BCK_YG_DIE, + /* 0x07 */ BCK_YG_DIE_FLOAT, + /* 0x08 */ BCK_YG_FIND, + /* 0x09 */ BCK_YG_GNAW, + /* 0x0A */ BCK_YG_JUMP_END, + /* 0x0B */ BCK_YG_JUMP_MIDDLE, + /* 0x0C */ BCK_YG_JUMP_START, + /* 0x0D */ BCK_YG_RUN, + /* 0x0E */ BCK_YG_SWIM, + /* 0x0F */ BCK_YG_WAIT, + /* 0x10 */ BCK_YG_WALK, - -// -// Forward References: -// - -extern "C" void __ct__12daE_YG_HIO_cFv(); -extern "C" static void anm_init__FP10e_yg_classifUcf(); -extern "C" static void pl_check__FP10e_yg_classf(); -extern "C" static void daE_YG_Draw__FP10e_yg_class(); -extern "C" static void sibuki_set__FP10e_yg_class(); -extern "C" static void ms_disappear__FP10e_yg_class(); -extern "C" static void s_d_sub__FPvPv(); -extern "C" static void search_dokuro__FP10e_yg_class(); -extern "C" static void way_set__FP10e_yg_class(); -extern "C" static void e_yg_normal__FP10e_yg_class(); -extern "C" static void e_yg_attack__FP10e_yg_class(); -extern "C" static void search_ground_1__FP10e_yg_class(); -extern "C" void __ct__4cXyzFv(); -extern "C" static void e_yg_swim__FP10e_yg_class(); -extern "C" static void e_yg_dokuro__FP10e_yg_class(); -extern "C" static void e_yg_damage__FP10e_yg_class(); -extern "C" static void e_yg_wolfbite__FP10e_yg_class(); -extern "C" static void e_yg_standby__FP10e_yg_class(); -extern "C" static void damage_check__FP10e_yg_class(); -extern "C" static void ke_control__FP10e_yg_classP7yg_ke_sif(); -extern "C" static void ke_move__FP10e_yg_classP19mDoExt_3DlineMat0_cP7yg_ke_sif(); -extern "C" static void ke_set__FP10e_yg_class(); -extern "C" static void action__FP10e_yg_class(); -extern "C" static void anm_se_set__FP10e_yg_class(); -extern "C" static void daE_YG_Execute__FP10e_yg_class(); -extern "C" static bool daE_YG_IsDelete__FP10e_yg_class(); -extern "C" static void daE_YG_Delete__FP10e_yg_class(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" static void daE_YG_Create__FP10fopAc_ac_c(); -extern "C" void __dt__7yg_ke_sFv(); -extern "C" void __ct__7yg_ke_sFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daE_YG_HIO_cFv(); -extern "C" void __sinit_d_a_e_yg_cpp(); -extern "C" static void func_807FC804(); -extern "C" static void func_807FC80C(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" extern char const* const d_a_e_yg__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotS__FPA4_fs(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -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 init__19mDoExt_3DlineMat0_cFUsUsi(); -extern "C" void update__19mDoExt_3DlineMat0_cFiR8_GXColorP12dKy_tevstr_c(); -extern "C" void setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_createItemFromEnemyID__FUcPC4cXyziiPC5csXyzPC4cXyzPfPf(); -extern "C" void fopAcM_otherBgCheck__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_wayBgCheck__FPC10fopAc_ac_cff(); -extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcSch_JudgeForPName__FPvPv(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); -extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void cM_initRnd2__Fiii(); -extern "C" void cM_rndF2__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxTrans__FfffUc(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void MtxPush__Fv(); -extern "C" void MtxPull__Fv(); -extern "C" void func_802807E0(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -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 __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_22(); -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_21(); -extern "C" void _restgpr_22(); -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__19mDoExt_3DlineMat0_c[5]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 807FCCE0-807FCCE4 00002C 0004+00 0/3 0/0 0/0 .rodata @3822 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3822 = 15.0f; -COMPILER_STRIP_GATE(0x807FCCE0, &lit_3822); -#pragma pop - -/* 807FCCE4-807FCCE8 000030 0004+00 0/6 0/0 0/0 .rodata @3823 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3823 = 40.0f; -COMPILER_STRIP_GATE(0x807FCCE4, &lit_3823); -#pragma pop - -/* 807FCCE8-807FCCEC 000034 0004+00 0/1 0/0 0/0 .rodata @3824 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3824 = 4.0f; -COMPILER_STRIP_GATE(0x807FCCE8, &lit_3824); -#pragma pop - -/* 807FCCEC-807FCCF0 000038 0004+00 0/1 0/0 0/0 .rodata @3825 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3825 = 450.0f; -COMPILER_STRIP_GATE(0x807FCCEC, &lit_3825); -#pragma pop - -/* 807FCE34-807FCE94 -00001 0060+00 1/1 0/0 0/0 .data @4282 */ -SECTION_DATA static void* lit_4282[24] = { - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x58), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x78), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0xD0), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x1AC), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x21C), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2AC), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x2E8), - (void*)(((char*)e_yg_attack__FP10e_yg_class) + 0x178), + /* BMDR */ + /* 0x13 */ BMDR_YG = 0x13, }; -/* 807FCE94-807FCEC0 -00001 002C+00 1/1 0/0 0/0 .data @4898 */ -SECTION_DATA static void* lit_4898[11] = { - (void*)(((char*)action__FP10e_yg_class) + 0xE4), - (void*)(((char*)action__FP10e_yg_class) + 0xF8), - (void*)(((char*)action__FP10e_yg_class) + 0x10C), - (void*)(((char*)action__FP10e_yg_class) + 0x118), - (void*)(((char*)action__FP10e_yg_class) + 0x128), - (void*)(((char*)action__FP10e_yg_class) + 0x140), - (void*)(((char*)action__FP10e_yg_class) + 0x170), - (void*)(((char*)action__FP10e_yg_class) + 0x170), - (void*)(((char*)action__FP10e_yg_class) + 0x170), - (void*)(((char*)action__FP10e_yg_class) + 0x170), - (void*)(((char*)action__FP10e_yg_class) + 0x158), +enum Joint { + /* 0x0 */ JNT_WORLD_ROOT, + /* 0x1 */ JNT_BODY, + /* 0x2 */ JNT_TAIL_01, + /* 0x3 */ JNT_TAIL_02, + /* 0x4 */ JNT_TAIL_03, + /* 0x5 */ JNT_TAIL_04, }; -/* 807FCEC0-807FCEC8 0000C4 0008+00 1/1 0/0 0/0 .data eff_id$5034 */ -SECTION_DATA static u8 eff_id_5034[8] = { - 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xBB, +enum Action { + /* 0x0 */ ACTION_NORMAL, + /* 0x1 */ ACTION_ATTACK, + /* 0x2 */ ACTION_DOKURO, + /* 0x3 */ ACTION_SWIM, + /* 0x4 */ ACTION_DAMAGE, + /* 0x5 */ ACTION_WOLFBITE, + /* 0xA */ ACTION_STANDBY = 0xA, }; -/* 807FCEC8-807FCF08 0000CC 0040+00 1/1 0/0 0/0 .data cc_sph_src$5193 */ -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{0x0, 0x0, 0x0}, {0xdafbfdff, 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 +enum Action_Mode { + /* 0x0 */ MODE_INIT, + + /* e_yg_normal */ + /* 0x1 */ NORMAL_MODE_1, + /* 0x2 */ NORMAL_MODE_2, + /* 0x5 */ NORMAL_MODE_5 = 0x5, + /* 0x6 */ NORMAL_MODE_6, + + /* e_yg_attack */ + /* 0x01 */ ATTACK_MODE_RUN = 0x1, + /* 0x02 */ ATTACK_MODE_2, + /* 0x03 */ ATTACK_MODE_JUMPING, + /* 0x04 */ ATTACK_MODE_JUMP_END, + /* 0x05 */ ATTACK_MODE_END, + /* 0x17 */ ATTACK_MODE_23 = 0x17, + + /* e_yg_swim */ + /* 0x1 */ SWIM_MODE_1 = 0x1, + + /* e_yg_dokuro */ + /* 0x1 */ DOKURO_MODE_RUN = 0x1, + /* 0x2 */ DOKURO_MODE_2, + /* 0x3 */ DOKURO_MODE_3, + + /* e_yg_damage */ + /* 0x1 */ DAMAGE_MODE_DIE = 0x1, + /* 0x2 */ DAMAGE_MODE_DISAPPEAR, + + /* e_yg_wolfbite */ + /* 0x1 */ WOLFBITE_MODE_END = 0x1, }; -/* 807FCF08-807FCF48 00010C 0040+00 1/1 0/0 0/0 .data at_sph_src$5194 */ -static dCcD_SrcSph at_sph_src = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj - {dCcD_SE_SOFT_BODY, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 20.0f} // mSph - } // mSphAttr +class daE_YG_HIO_c : public JORReflexible { +public: + /* 807F834C */ daE_YG_HIO_c(); + /* 807FC168 */ virtual ~daE_YG_HIO_c() {} + void genMessage(JORMContext*); + + /* 0x04 */ s8 id; + /* 0x08 */ f32 basic_size; + /* 0x0C */ f32 movement_spd; + /* 0x10 */ f32 attack_spd; + /* 0x14 */ f32 swim_spd; + /* 0x18 */ f32 pl_recognition_dist; }; +/* 807F834C-807F8394 0000EC 0048+00 1/1 0/0 0/0 .text __ct__12daE_YG_HIO_cFv */ +daE_YG_HIO_c::daE_YG_HIO_c() { + id = -1; + basic_size = 1.0f; + movement_spd = 15.0f; + attack_spd = 40.0f; + swim_spd = 4.0f; + pl_recognition_dist = 450.0f; +} + +#if DEBUG +void daE_YG_HIO_c::genMessage(JORMContext* ctx) { + ctx->genLabel(" グース", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("基本サイズ", &basic_size, 0.0f, 3.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("移動速度", &movement_spd, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("攻撃速度", &attack_spd, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("泳ぎ速度", &swim_spd, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); + ctx->genSlider("PL認識距離", &pl_recognition_dist, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18); +} +#endif + +/* 807F8394-807F8440 000134 00AC+00 7/7 0/0 0/0 .text anm_init__FP10e_yg_classifUcf */ +static void anm_init(e_yg_class* i_this, int i_index, f32 i_morf, u8 i_attr, f32 i_rate) { + i_this->mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_YG", i_index), i_attr, i_morf, i_rate, 0.0f, -1.0f); + i_this->mAnm = i_index; +} + +/* 807F8440-807F848C 0001E0 004C+00 3/3 0/0 0/0 .text pl_check__FP10e_yg_classf */ +static BOOL pl_check(e_yg_class* i_this, f32 i_dist) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + if (i_this->mPlayerDist < i_dist && !fopAcM_otherBgCheck(actor, player)) { + return TRUE; + } + + return FALSE; +} + +/* 807F848C-807F8610 00022C 0184+00 1/0 0/0 0/0 .text daE_YG_Draw__FP10e_yg_class */ +static int daE_YG_Draw(e_yg_class* i_this) { + if (i_this->mDispFlag) { + return 1; + } + + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + + J3DModel* model = i_this->mpMorf->getModel(); + g_env_light.settingTevStruct(2, &actor->current.pos, &actor->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &i_this->actor.tevStr); + dComIfGd_setListDark(); + i_this->mpMorf->entryDL(); + + cXyz pos; + pos.set(actor->current.pos.x, actor->current.pos.y + 100.0f, actor->current.pos.z); + i_this->mShadowKey = dComIfGd_setShadow(i_this->mShadowKey, 1, model, &pos, 400.0f, 40.0f, actor->current.pos.y, + i_this->mBgc.GetGroundH(), i_this->mBgc.m_gnd, &i_this->actor.tevStr, 0, 1.0f, + dDlst_shadowControl_c::getSimpleTex()); + + GXColor color; + color.r = JREG_S(0) + 20; + color.g = JREG_S(1) + 20; + color.b = JREG_S(2) + 20; + color.a = 0xFF; + i_this->mLineMat.update(10, color, &actor->tevStr); + dComIfGd_set3DlineMatDark(&i_this->mLineMat); + dComIfGd_setList(); + + return 1; +} + +/* 807F8610-807F86F8 0003B0 00E8+00 2/2 0/0 0/0 .text sibuki_set__FP10e_yg_class */ +static void sibuki_set(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + + if (i_this->mSplashTimer == 0) { + i_this->mSplashTimer = 20; + cXyz pos(actor->current.pos); + pos.y = i_this->mGroundCross; + + fopKyM_createWpillar(&pos, 1.0f, 0); + + f32 fVar1 = i_this->mGroundCross - i_this->mBgc.GetGroundH(); + if (fVar1 > 50.0f) { + i_this->mSound.startCreatureSound(Z2SE_CM_BODYFALL_ASASE_S, 0, -1); + } else { + i_this->mSound.startCreatureSound(Z2SE_EN_YG_FALLWATER, 0, -1); + } + } +} + +static bool l_initHIO; + +/* 807FD06C-807FD088 000054 001C+00 6/8 0/0 0/0 .bss l_HIO */ +static daE_YG_HIO_c l_HIO; + +/* 807F86F8-807F8A68 000498 0370+00 1/1 0/0 0/0 .text ms_disappear__FP10e_yg_class */ +static void ms_disappear(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + cXyz unused, prtcl_pos; + cXyz prtcl_a_scale(0.65f, 0.65f, 0.65f); + cXyz prtcl_b_scale(0.6f, 1.0f, 0.6f); + static cXyz e_pos[3] = { + cXyz(0.0f, 60.0f, 36.0f), + cXyz(-18.0f, 22.0f, 45.0f), + cXyz(0.0f, -2.0f, -68.0f), + }; + + dComIfGp_particle_set(dPa_RM(ID_ZI_S_YAMIDEAD_NORMAL_A), &actor->current.pos, NULL, &prtcl_a_scale); + + int idx; + if (i_this->mAnm == BCK_YG_BITE_DIE) { + idx = 0; + } else if (i_this->mAnm == BCK_YG_DIE) { + idx = 1; + } else { + idx = 2; + } + + cMtx_YrotS(*calc_mtx, actor->shape_angle.y); + MtxPosition(&e_pos[idx], &prtcl_pos); + prtcl_pos += actor->current.pos; + + dComIfGp_particle_set(dPa_RM(ID_ZI_S_YAMIDEAD_NORMAL_B), &prtcl_pos, NULL, &prtcl_b_scale); + fopAcM_seStart(actor, Z2SE_DARK_VANISH, 0); + + if (i_this->arg0 == 1) { + actor->current = actor->home; + actor->old = actor->current; + actor->health = 1; + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = MODE_INIT; + + if (i_this->mSwBit != 0xFF) { + i_this->mUnkFlag2 = 1; + } + } else { + fopAcM_delete(actor); + } + + fopAcM_createItemFromEnemyID(Z2_ENEMY_NULL, &actor->current.pos, -1, -1, NULL, NULL, NULL, NULL); + + int swBit = (fopAcM_GetParam(actor) & 0xFF0000) >> 16; + if (swBit != 0xFF) { + dComIfGs_onSwitch(swBit, fopAcM_GetRoomNo(actor)); + } +} + +/* 807FD0D4-807FD124 0000BC 0050+00 2/2 0/0 0/0 .bss target_info */ +static fopAc_ac_c* target_info[20]; + +/* 807FD124-807FD128 00010C 0004+00 2/2 0/0 0/0 .bss target_info_count */ +static int target_info_count; + +/* 807F8A68-807F8AE4 000808 007C+00 1/1 0/0 0/0 .text s_d_sub__FPvPv */ +static void* s_d_sub(void* i_actor, void* i_data) { + daObjCarry_c* actor = (daObjCarry_c*)i_actor; + + if (fopAcM_IsActor(actor) && fopAcM_GetName(actor) == PROC_Obj_Carry && actor->getType() == 5 && target_info_count < 20) { + target_info[target_info_count] = actor; + target_info_count++; + } + + return NULL; +} + +/* 807F8AE4-807F8C60 000884 017C+00 1/1 0/0 0/0 .text search_dokuro__FP10e_yg_class */ +static fopAc_ac_c* search_dokuro(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + + target_info_count = 0; + for (int i = 0; i < 20; i++) { + target_info[i] = NULL; + } + + fpcM_Search(s_d_sub, i_this); + f32 fVar1 = 100.0f; + + if (target_info_count != 0) { + cXyz pos_delta; + fopAc_ac_c* target_actor; + for (int i = 0; i < target_info_count;) { + target_actor = target_info[i]; + pos_delta = target_actor->current.pos - actor->current.pos; + + f32 sqrt_val = JMAFastSqrt(pos_delta.x * pos_delta.x + pos_delta.z * pos_delta.z); + if (sqrt_val < fVar1 && !fopAcM_otherBgCheck(actor, target_info[i])) { + return target_actor; + } + + if (++i == target_info_count) { + i = 0; + fVar1 += 100.0f; + + if (fVar1 > 1000.0f) { + return NULL; + } + } + } + } else { + return NULL; + } + + return NULL; +} + +/* 807F8C60-807F8DD8 000A00 0178+00 1/1 0/0 0/0 .text way_set__FP10e_yg_class */ +static BOOL way_set(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + cXyz start, end, work; + s16 y_rot = cM_rndF(65535.0f); + f32 pos_z_val = 1000.0f; + + start = actor->current.pos; + start.y += 50.0f; + + for (int i = 0; i < 5; i++) { + for (int j = 0; j < 16; j++) { + cMtx_YrotS(*calc_mtx, y_rot); + work.x = 0.0f; + work.y = 0.0f; + work.z = pos_z_val; + MtxPosition(&work, &end); + end += start; + + dBgS_LinChk lin_chk; + lin_chk.Set(&start, &end, actor); + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + y_rot += (s16)0x1000; + } else { + i_this->mCurrentAngleYTarget = y_rot; + return TRUE; + } + } + + pos_z_val -= 150.0f; + } + + return FALSE; +} + +/* 807F8DD8-807F9154 000B78 037C+00 1/1 0/0 0/0 .text e_yg_normal__FP10e_yg_class */ +static s8 e_yg_normal(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + f32 target = 0.0f; + cXyz work; + s8 rv = 1; + + switch (i_this->mActionMode) { + case MODE_INIT: + anm_init(i_this, BCK_YG_RUN, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mTimers[0] = cM_rndF(60.0f) + 30.0f; + i_this->mActionMode = NORMAL_MODE_1; + i_this->mFrameCounter = cM_rndF(65535.0f); + i_this->mTimers[2] = 20; + break; + + case NORMAL_MODE_1: + target = l_HIO.movement_spd; + + if (i_this->mpMorf->checkFrame(1.0f)) { + i_this->mCurrentAngleYTarget += (s16)cM_rndFX(2000.0f); + } + + if (i_this->mTimers[0] == 0 || (i_this->mTimers[2] == 0 && fopAcM_wayBgCheck(actor, 200.0f, 50.0f))) { + i_this->mTimers[0] = cM_rndF(60.0f) + 30.0f; + i_this->mActionMode = NORMAL_MODE_2; + anm_init(i_this, BCK_YG_WAIT, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } + break; + + case NORMAL_MODE_2: + if (i_this->mTimers[0] == 0) { + if (way_set(i_this)) { + i_this->mActionMode = MODE_INIT; + } else { + i_this->mTimers[0] = 10; + } + } + break; + + case NORMAL_MODE_5: + rv = 0; + + if (i_this->mTimers[0] == 0) { + anm_init(i_this, BCK_YG_RUN, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.5f); + i_this->mTimers[0] = cM_rndF(60.0f) + 30.0f; + i_this->mActionMode = NORMAL_MODE_6; + i_this->mCurrentAngleYTarget = i_this->mPlayerAngleY + 0x8000; + } + break; + + case NORMAL_MODE_6: + rv = 0; + target = l_HIO.movement_spd * 1.5f; + + if (i_this->mpMorf->checkFrame(1.0f)) { + i_this->mCurrentAngleYTarget += (s16)cM_rndFX(4000.0f); + } + + if (i_this->mTimers[2] == 0 && fopAcM_wayBgCheck(actor, 200.0f, 50.0f)) { + i_this->mTimers[2] = 20; + i_this->mCurrentAngleYTarget = actor->current.angle.y + 0x8000; + } + + if (i_this->mTimers[0] == 0) { + i_this->mActionMode = MODE_INIT; + } + break; + } + + if (fopAcM_SearchByID(actor->parentActorID) == NULL && dComIfGp_event_runCheck()) { + target = 0.0f; + } + + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mCurrentAngleYTarget, 2, 0x1000); + cLib_addCalc2(&actor->speedF, target, 1.0f, l_HIO.movement_spd * 0.25f); + + if (i_this->mUnkFlag2 || (rv && pl_check(i_this, i_this->mDistance))) { + i_this->mAction = ACTION_ATTACK; + i_this->mActionMode = MODE_INIT; + } + + return rv; +} + +/* 807F9154-807F94E8 000EF4 0394+00 2/1 0/0 0/0 .text e_yg_attack__FP10e_yg_class */ +static s8 e_yg_attack(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + f32 target = 0.0f; + cXyz work; + s8 rv = 1; + s8 end_attack_flag = false; + + switch (i_this->mActionMode) { + /* Initialize */ + case MODE_INIT: + anm_init(i_this, BCK_YG_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mActionMode = ATTACK_MODE_RUN; + break; + + /* Run towards the player */ + case ATTACK_MODE_RUN: + i_this->mCurrentAngleYTarget = i_this->mPlayerAngleY; + + if (i_this->mpMorf->isStop()) { + anm_init(i_this, BCK_YG_RUN, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mActionMode = ATTACK_MODE_2; + } + break; + + case ATTACK_MODE_2: + target = l_HIO.movement_spd; + i_this->mCurrentAngleYTarget = i_this->mPlayerAngleY; + + if (i_this->mPlayerDist < TREG_F(4) + 300.0f) { + /* If Phantom Zant actor exists */ + if (fopAcM_SearchByName(PROC_E_PZ) != NULL) { + i_this->mTimers[0] = fopAcM_GetID(actor) & 0x1F; + i_this->mActionMode = ATTACK_MODE_23; + anm_init(i_this, BCK_YG_WAIT, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + } else { + i_this->mActionMode = ATTACK_MODE_JUMPING; + anm_init(i_this, BCK_YG_JUMP_START, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + } + break; + + case ATTACK_MODE_23: + i_this->mCurrentAngleYTarget = i_this->mPlayerAngleY; + + if (i_this->mTimers[0] == 0) { + i_this->mActionMode = ATTACK_MODE_JUMPING; + anm_init(i_this, BCK_YG_JUMP_START, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + } + break; + + case ATTACK_MODE_JUMPING: + i_this->mCurrentAngleYTarget = i_this->mPlayerAngleY; + + if (i_this->mpMorf->isStop()) { + anm_init(i_this, BCK_YG_JUMP_MIDDLE, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + actor->speed.y = TREG_F(5) + 30.0f; + actor->speedF = l_HIO.attack_spd; + i_this->mActionMode = ATTACK_MODE_JUMP_END; + } + break; + + case ATTACK_MODE_JUMP_END: + rv = 0; + i_this->mUnkFlag1 = 1; + + if (i_this->mSph2.ChkAtShieldHit()) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 31, cXyz(0.0f, 1.0f, 0.0f)); + i_this->mUnkFlag1 = 0; + #if DEBUG + target = 0.0f; + actor->speedF = target; + #else + actor->speedF = 0.0f; + #endif + } + + if (i_this->mUnkFlag1 == 0 || i_this->mBgc.ChkGroundHit()) { + anm_init(i_this, BCK_YG_JUMP_END, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mActionMode = ATTACK_MODE_END; + } + break; + + case ATTACK_MODE_END: + rv = 0; + + if (i_this->mpMorf->isStop()) { + end_attack_flag = true; + i_this->mUnkFlag2 = 0; + } + break; + } + + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mCurrentAngleYTarget, 2, 0x1000); + + if (i_this->mActionMode == ATTACK_MODE_JUMP_END) { + if (i_this->mBgc.ChkWallHit()) { + actor->speedF = 0.0f; + } + } else { + cLib_addCalc2(&actor->speedF, target, 1.0f, 10.0f); + } + + if (i_this->mUnkFlag2 == 0 && (end_attack_flag || !pl_check(i_this, i_this->mDistance + 100.0f))) { + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = MODE_INIT; + } + + return rv; +} + +/* 807F94E8-807F99CC 001288 04E4+00 1/1 0/0 0/0 .text search_ground_1__FP10e_yg_class */ +static void search_ground_1(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + dBgS_LinChk lin_chk; + cXyz start, end, work; + cXyz pos[16]; + s16 y_rot = actor->shape_angle.y; + s8 line_cross_flag = false; + + for (int i = 0; i < 16; i++) { + start = actor->current.pos; + start.y = i_this->mGroundCross; + cMtx_YrotS(*calc_mtx, y_rot); + work.x = 0.0f; + work.y = 0.0f; + work.z = 2000.0f; + MtxPosition(&work, &end); + end += start; + lin_chk.Set(&start, &end, actor); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + end = lin_chk.GetCross(); + work.x = 0.0f; + work.y = 30.0f; + work.z = KREG_F(9) + 100.0f; + MtxPosition(&work, &start); + start += end; + end = start; + end.y -= 70.0f; + lin_chk.Set(&start, &end, actor); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + pos[i] = lin_chk.GetCross(); + line_cross_flag = true; + } else { + pos[i] = actor->current.pos; + pos[i].x += 10000.0f; + } + } + + y_rot += (s16)0x1000; + } + + if (line_cross_flag) { + int idx = 0; + for (int i = 1; i < 16; i++) { + if ((pos[idx] - actor->current.pos).abs() > (pos[i] - actor->current.pos).abs()) { + idx = i; + } + } + + i_this->field_0x5bc = pos[idx]; + } else { + i_this->field_0x5bc.x = actor->current.pos.x + cM_rndFX(300.0f); + i_this->field_0x5bc.y = actor->current.pos.y; + i_this->field_0x5bc.z = actor->current.pos.z + cM_rndFX(300.0f); + } +} + +/* 807F99D0-807F9BB8 001770 01E8+00 1/1 0/0 0/0 .text e_yg_swim__FP10e_yg_class */ +static void e_yg_swim(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz work; + s16 maxStep = 0; + f32 target = l_HIO.swim_spd; + f32 play_spd = 1.0f; + + switch (i_this->mActionMode) { + case MODE_INIT: + anm_init(i_this, BCK_YG_SWIM, 5.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mActionMode++; + actor->speedF = 0.0f; + search_ground_1(i_this); + i_this->mTimers[1] = 50; + // fallthrough + case SWIM_MODE_1: + if (i_this->mPlayerDist < 300.0f) { + maxStep = 0x800; + play_spd = 2.0f; + target = 8.0f; + i_this->mCurrentAngleYTarget = i_this->mPlayerAngleY; + i_this->mUnkFlag1 = 1; + } else { + maxStep = 0x300; + + if ((i_this->mFrameCounter & 0x3F) == 0 && cM_rndF(1.0f) < 0.5f) { + search_ground_1(i_this); + } + + work = i_this->field_0x5bc - actor->current.pos; + i_this->mCurrentAngleYTarget = cM_atan2s(work.x, work.z); + } + break; + } + + cLib_addCalc2(&actor->speedF, target, 1.0f, 0.5f); + i_this->mpMorf->setPlaySpeed(play_spd); + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mCurrentAngleYTarget, 8, maxStep); + actor->gravity = actor->speed.y = 0.0f; + cLib_addCalc2(&actor->current.pos.y, i_this->mGroundCross - 40.0f + KREG_F(4), 1.0f, 5.0f); + + if (i_this->mTimers[1] == 0 && i_this->mBgc.ChkWallHit()) { + actor->current.pos.y += 10.0f; + actor->speed.y = nREG_F(8) + 30.0f; + actor->speedF = 20.0f; + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = MODE_INIT; + } +} + +/* 807F9BB8-807F9EF8 001958 0340+00 1/1 0/0 0/0 .text e_yg_dokuro__FP10e_yg_class */ +static void e_yg_dokuro(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + fopAc_ac_c* skull_p = fopAcM_SearchByID(i_this->mSkullActorID); + + if (skull_p == NULL || i_this->mBgc.ChkWallHit() || fopAcM_checkCarryNow(skull_p)) { + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = MODE_INIT; + } else { + cXyz pos_delta(skull_p->current.pos - actor->current.pos); + f32 abs_val = pos_delta.abs(); + i_this->mCurrentAngleYTarget = (s16)cM_atan2s(pos_delta.x, pos_delta.z); + f32 target = 0.0f; + + switch (i_this->mActionMode) { + case MODE_INIT: + anm_init(i_this, BCK_YG_FIND, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mActionMode = DOKURO_MODE_RUN; + break; + + case DOKURO_MODE_RUN: + if (i_this->mpMorf->isStop()) { + anm_init(i_this, BCK_YG_RUN, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mActionMode = DOKURO_MODE_2; + } + break; + + case DOKURO_MODE_2: + if (abs_val < TREG_F(14) + 75.0f) { + anm_init(i_this, BCK_YG_GNAW, 3.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mTimers[0] = cM_rndF(60.0f) + 90.0f; + i_this->mActionMode = DOKURO_MODE_3; + } else { + target = l_HIO.movement_spd; + } + break; + + case DOKURO_MODE_3: + if (abs_val < TREG_F(15) + 65.0f) { + target = -2.0f; + } else if (abs_val > TREG_F(16) + 70.0f) { + target = 2.0f; + } + break; + } + + cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mCurrentAngleYTarget, 2, 0x2000); + cLib_addCalc2(&actor->speedF, target, 1.0f, 10.0f); + + if (pl_check(i_this, i_this->mDistance)) { + i_this->mAction = ACTION_ATTACK; + i_this->mActionMode = MODE_INIT; + } + } +} + +/* 807F9EF8-807FA14C 001C98 0254+00 1/1 0/0 0/0 .text e_yg_damage__FP10e_yg_class */ +static void e_yg_damage(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + + i_this->mInvulnerabilityTimer = 6; + + switch (i_this->mActionMode) { + case MODE_INIT: + anm_init(i_this, BCK_YG_DAMAGE, 2.0f, J3DFrameCtrl::EMode_LOOP, 1.0f); + i_this->mActionMode = DAMAGE_MODE_DIE; + actor->speed.y = cM_rndF(10.0f) + 40.0f; + actor->speedF = -30.0f; + break; + + case DAMAGE_MODE_DIE: + if (i_this->mBgc.ChkGroundHit()) { + if (actor->health <= 0) { + i_this->mDeathFlag = 1; + anm_init(i_this, BCK_YG_DIE, 5.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mTimers[0] = cM_rndF(10.0f) + 5.0f; + i_this->mActionMode = DAMAGE_MODE_DISAPPEAR; + actor->speed.y = 10.0f; + actor->speedF *= 0.5f; + } else { + i_this->mAction = ACTION_ATTACK; + i_this->mActionMode = MODE_INIT; + } + + i_this->mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + } else if (actor->speed.y <= 0.0f && i_this->mWaterFlag) { + i_this->mDeathFlag = 1; + anm_init(i_this, BCK_YG_DIE_FLOAT, 3.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + sibuki_set(i_this); + i_this->mTimers[0] = 30; + i_this->mActionMode = DAMAGE_MODE_DISAPPEAR; + } + break; + + case DAMAGE_MODE_DISAPPEAR: + if (actor->speed.y <= 0.0f && (i_this->mBgc.ChkGroundHit() || i_this->mWaterFlag)) { + actor->speedF *= 0.5f; + } + + if (i_this->mTimers[0] == 0) { + ms_disappear(i_this); + } + break; + } + + if (actor->speed.y <= 0.0f && actor->current.pos.y <= i_this->mGroundCross - 20.0f + KREG_F(0)) { + actor->gravity = actor->speed.y = 0.0f; + cLib_addCalc2(&actor->current.pos.y, i_this->mGroundCross - 20.0f + KREG_F(4), 1.0f, 5.0f); + } +} + +/* 807FA14C-807FA284 001EEC 0138+00 1/1 0/0 0/0 .text e_yg_wolfbite__FP10e_yg_class */ +static void e_yg_wolfbite(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + switch (i_this->mActionMode) { + case MODE_INIT: + i_this->mDeathFlag = 1; + anm_init(i_this, BCK_YG_BITE_DIE, 0.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mActionMode = WOLFBITE_MODE_END; + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_DAMAGE, -1); + break; + + case WOLFBITE_MODE_END: + if (!player->checkWolfEnemyCatchOwn(actor)) { + i_this->mAction = ACTION_DAMAGE; + i_this->mActionMode = MODE_INIT; + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_DEATH, -1); + actor->health = 0; + + if (player->checkWolfEnemyLeftThrow()) { + actor->current.angle.y = player->shape_angle.y - 0x4000; + } else { + actor->current.angle.y = player->shape_angle.y + 0x4000; + } + } + break; + } +} + +/* 807FA284-807FA2E4 002024 0060+00 1/1 0/0 0/0 .text e_yg_standby__FP10e_yg_class */ +static void e_yg_standby(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + + i_this->mInvulnerabilityTimer = 6; + + if (dComIfGs_isSwitch(i_this->mSwBit, fopAcM_GetRoomNo(actor))) { + i_this->mDispFlag = 0; + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = MODE_INIT; + } +} + +/* 807FA2E4-807FA478 002084 0194+00 1/1 0/0 0/0 .text damage_check__FP10e_yg_class */ +static void damage_check(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + if (i_this->mInvulnerabilityTimer == 0) { + i_this->mStts.Move(); + + if (i_this->mSph1.ChkTgHit()) { + i_this->mAtInfo.mpCollider = i_this->mSph1.GetTgHitObj(); + cc_at_check(actor, &i_this->mAtInfo); + + if ( + i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT) || + i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_SLINGSHOT) || + i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_2000000) + ) { + actor->health = 0; + } + + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK)) { + i_this->mInvulnerabilityTimer = 20; + } else { + i_this->mInvulnerabilityTimer = 10; + } + + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->onWolfEnemyCatch(actor)) { + i_this->mAction = ACTION_WOLFBITE; + i_this->mActionMode = 0; + i_this->mInvulnerabilityTimer = 200; + dScnPly_c::setPauseTimer(0); + return; + } + + i_this->mAction = ACTION_DAMAGE; + i_this->mActionMode = MODE_INIT; + actor->current.angle.y = i_this->mAtInfo.mHitDirection.y; + + if (actor->health != 0 && i_this->mAtInfo.mHitType == HIT_TYPE_STUN) { + actor->health = 1; + } else { + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_DEATH, -1); + } + } + + if (actor->health <= 10) { + i_this->mSph1.SetTgHitMark(CcG_Tg_UNK_MARK_3); + } + } +} + +/* 807FA478-807FA7B0 002218 0338+00 1/1 0/0 0/0 .text ke_control__FP10e_yg_classP7yg_ke_sif */ +static void ke_control(e_yg_class* i_this, yg_ke_s* yg_p, int param_3, f32 i_posZ) { + cXyz work, pos_offset; + int i; + cXyz* pcVar1 = &yg_p->field_0x0[1]; + cXyz* pcVar2 = &yg_p->field_0x78[1]; + + work.x = 0.0f; + work.y = 0.0f; + work.z = i_posZ; + + cXyz spc4; + f32 fVar2, fVar3, fVar4; + f32 fVar1; + if (i_this->mWaterFlag) { + fVar1 = ZREG_F(9) + -5.0f; + } else { + fVar1 = ZREG_F(8) + -12.0f; + } + + s16 sVar1 = cM_rndF2(65536.0f); + + fVar2 = JREG_F(8) + 3.0f; + f32 fVar5 = JREG_F(5) + (i_this->mBgc.GetGroundH() + 3.0f); + if (fVar5 < i_this->mGroundCross) { + fVar5 = i_this->mGroundCross; + } + + f32 fVar6 = JREG_F(17) + 0.8f; + + for (i = 1; i < 10; i++, pcVar1++, pcVar2++) { + f32 fVar7 = fVar2 * cM_ssin(sVar1 + i * 7000); + f32 fVar8 = fVar2 * cM_ssin(sVar1 + 10000 + i * 6000); + f32 fVar9 = (10 - i) * 0.1f; + + spc4.x = pcVar2->x + (fVar7 + yg_p->field_0xf0.x * fVar9); + spc4.y = pcVar2->y + yg_p->field_0xf0.y * fVar9; + spc4.z = pcVar2->z + (fVar8 + yg_p->field_0xf0.z * fVar9); + + fVar3 = spc4.x + (pcVar1->x - pcVar1[-1].x); + + f32 fVar10; + f32 fVar11 = spc4.z + (pcVar1->z - pcVar1[-1].z); + + fVar4 = fVar1 + (pcVar1->y + spc4.y); + if (fVar4 < fVar5) { + fVar4 = fVar5; + } + + fVar10 = fVar4 - pcVar1[-1].y; + s16 x_rot = -cM_atan2s(fVar10, fVar11); + s16 y_rot = (s16)cM_atan2s(fVar3, JMAFastSqrt(fVar10 * fVar10 + fVar11 * fVar11)); + cMtx_XrotS(*calc_mtx, x_rot); + cMtx_YrotM(*calc_mtx, y_rot); + MtxPosition(&work, &pos_offset); + + *pcVar2 = *pcVar1; + + pcVar1->x = pcVar1[-1].x + pos_offset.x; + pcVar1->y = pcVar1[-1].y + pos_offset.y; + pcVar1->z = pcVar1[-1].z + pos_offset.z; + + pcVar2->x = fVar6 * (pcVar1->x - pcVar2->x); + pcVar2->y = fVar6 * (pcVar1->y - pcVar2->y); + pcVar2->z = fVar6 * (pcVar1->z - pcVar2->z); + } +} + +/* 807FA7B0-807FA888 002550 00D8+00 1/1 0/0 0/0 .text ke_move__FP10e_yg_classP19mDoExt_3DlineMat0_cP7yg_ke_sif */ +static void ke_move(e_yg_class* i_this, mDoExt_3DlineMat0_c* i_lineMat, yg_ke_s* yg_p, int i_idx, f32 i_posZ) { + ke_control(i_this, yg_p, i_idx, i_posZ); + cXyz* pos_p = i_lineMat->getPos(i_idx); + f32* size_p = i_lineMat->getSize(i_idx); + + for (int i = 0; i < 10; i++, pos_p++, size_p++) { + *pos_p = yg_p->field_0x0[i]; + + if (i == JREG_S(7) + 8) { + *size_p = (JREG_S(8) + 6) * 0.1f; + } else if (i < 5) { + *size_p = 3.5f; + } else { + *size_p = cM_rndF2(1.0f) + 1.8f; + } + } +} + +/* 807FD1C4-807FD260 0001AC 009C+00 1/2 0/0 0/0 .bss ke_p */ +static cXyz ke_p[13] = { + cXyz(8.0f, 5.0f, 0.0f), + cXyz(30.0f, 13.0f, 0.0f), + cXyz(50.0f, 8.0f, 0.0f), + cXyz(5.0f, 5.0f, -10.0f), + cXyz(30.0f, 5.0f, -10.0f), + cXyz(50.0f, 5.0f, -5.0f), + cXyz(5.0f, 5.0f, 10.0f), + cXyz(30.0f, 5.0f, 10.0f), + cXyz(50.0f, 5.0f, 5.0f), + cXyz(10.0f, -2.0f, 10.0f), + cXyz(10.0f, -2.0f, -10.0f), + cXyz(40.0f, -2.0f, 10.0f), + cXyz(40.0f, -2.0f, -10.0f), +}; + +/* 807FD2FC-807FD34C 0002E4 004E+02 1/2 0/0 0/0 .bss ke_a */ +static csXyz ke_a[13] = { + csXyz(0, 0, 5000), + csXyz(0, 0, 3000), + csXyz(0, 0, 2000), + csXyz(0, -8000, 5000), + csXyz(0, -8000, 0), + csXyz(0, -8000, -3000), + csXyz(0, 8000, 5000), + csXyz(0, 8000, 0), + csXyz(0, 8000, -3000), + csXyz(0, 20000, 5000), + csXyz(0, -20000, 5000), + csXyz(0, 20000, -5000), + csXyz(0, -20000, -5000), +}; + +/* 807FA888-807FAA34 002628 01AC+00 1/1 0/0 0/0 .text ke_set__FP10e_yg_class */ +static void ke_set(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + cXyz work, unused; + + cM_initRnd2(12, 123, fopAcM_GetID(actor) * 2 + 50); + MTXCopy(i_this->mpMorf->getModel()->getAnmMtx(JNT_BODY), *calc_mtx); + f32 pos_z = ZREG_F(10) + 10.0f; + + for (int i = 0; i < 13; i++) { + MtxPush(); + MtxTrans(ke_p[i].x, ke_p[i].y, ke_p[i].z, 1); + cMtx_YrotM(*calc_mtx, ke_a[i].y); + cMtx_XrotM(*calc_mtx, ke_a[i].x); + cMtx_ZrotM(*calc_mtx, ke_a[i].z); + + work.set(0.0f, 0.0f, 0.0f); + MtxPosition(&work, &i_this->mYgKes[i].field_0x0[0]); + + if (i_this->mWaterFlag) { + work.set(0.0f, ZREG_F(5) + 5.0f, 0.0f); + } else { + work.set(0.0f, ZREG_F(4) + 15.0f, 0.0f); + } + MtxPosition(&work, &i_this->mYgKes[i].field_0xf0); + + i_this->mYgKes[i].field_0xf0 -= i_this->mYgKes[i].field_0x0[0]; + ke_move(i_this, &i_this->mLineMat, &i_this->mYgKes[i], i, pos_z); + MtxPull(); + } +} + +/* 807FAA34-807FB034 0027D4 0600+00 2/1 0/0 0/0 .text action__FP10e_yg_class */ +static void action(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz work, speed_xz; + + i_this->mPlayerDist = fopAcM_searchPlayerDistance(actor); + i_this->mPlayerAngleY = fopAcM_searchPlayerAngleY(actor); + + damage_check(i_this); + s8 unk_flag_1 = 0; + s8 unk_flag_2 = 1; + s8 skull_flag = 0; + s8 status_flag = 1; + s8 co_bit_flag = 1; + dBgS_ObjGndChk_Spl gnd_chk_spl; + + work = actor->current.pos; + work.y += 200.0f; + gnd_chk_spl.SetPos(&work); + i_this->mGroundCross = dComIfG_Bgsp().GroundCross(&gnd_chk_spl); + s8 link_search_flag = 0; + + switch (i_this->mAction) { + case ACTION_NORMAL: + unk_flag_1 = e_yg_normal(i_this); + skull_flag = 1; + break; + + case ACTION_ATTACK: + unk_flag_1 = e_yg_attack(i_this); + link_search_flag = 1; + break; + + case ACTION_DOKURO: + e_yg_dokuro(i_this); + break; + + case ACTION_SWIM: + e_yg_swim(i_this); + unk_flag_2 = 0; + break; + + case ACTION_DAMAGE: + e_yg_damage(i_this); + unk_flag_2 = -1; + co_bit_flag = 0; + status_flag = 0; + break; + + case ACTION_WOLFBITE: + e_yg_wolfbite(i_this); + co_bit_flag = 0; + unk_flag_2 = -1; + status_flag = 0; + break; + + case ACTION_STANDBY: + e_yg_standby(i_this); + return; + } + + if (link_search_flag) { + i_this->mSound.setLinkSearch(true); + } else { + i_this->mSound.setLinkSearch(false); + } + + if (status_flag && actor->health > 0) { + fopAcM_OnStatus(actor, 0); + actor->attention_info.flags = fopAc_AttnFlag_BATTLE_e; + } else { + fopAcM_OffStatus(actor, 0); + actor->attention_info.flags = 0; + } + + if (skull_flag) { + i_this->mSkullActorID = fpcM_ERROR_PROCESS_ID_e; + + if ((i_this->mFrameCounter & 15) == 0) { + fopAc_ac_c* skull_p = search_dokuro(i_this); + if (skull_p != NULL) { + work = skull_p->current.pos - actor->current.pos; + + if (work.abs() < 500.0f) { + i_this->mSkullActorID = fopAcM_GetID(skull_p); + i_this->mAction = ACTION_DOKURO; + i_this->mActionMode = MODE_INIT; + } + } + } + } + + if (unk_flag_1 && i_this->mPlayerDist < 500.0f) { + if (daPy_getPlayerActorClass()->checkWolfBark()) { + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = NORMAL_MODE_5; + anm_init(i_this, BCK_YG_FIND, 1.0f, J3DFrameCtrl::EMode_NONE, 1.0f); + i_this->mTimers[0] = cM_rndF(10.0f) + 5.0f; + } + } + + cLib_addCalcAngleS2(&actor->shape_angle.y, actor->current.angle.y, 2, 0x2000); + cLib_addCalcAngleS2(&actor->shape_angle.x, actor->current.angle.x, 2, 0x2000); + cLib_addCalcAngleS2(&actor->shape_angle.z, actor->current.angle.z, 2, 0x2000); + cMtx_YrotS(*calc_mtx, actor->current.angle.y); + work.x = 0.0f; + work.y = 0.0f; + work.z = actor->speedF; + MtxPosition(&work, &speed_xz); + actor->speed.x = speed_xz.x; + actor->speed.z = speed_xz.z; + actor->current.pos += actor->speed * l_HIO.basic_size; + actor->speed.y += actor->gravity; + actor->gravity = TREG_F(3) + -7.0f; + + if (actor->speed.y < -80.0f) { + actor->speed.y = -80.0f; + } + + if (co_bit_flag) { + i_this->mSph1.OnCoSetBit(); + cXyz* ccMoveP = i_this->mStts.GetCCMoveP(); + if (ccMoveP != NULL) { + actor->current.pos.x += ccMoveP->x * 0.3f; + actor->current.pos.z += ccMoveP->z * 0.3f; + } + } else { + i_this->mSph1.OffCoSetBit(); + } + + i_this->mBgc.CrrPos(dComIfG_Bgsp()); + + if (actor->current.pos.y <= i_this->mGroundCross - 10.0f + KREG_F(10)) { + i_this->mWaterFlag = 1; + } else { + i_this->mWaterFlag = 0; + } + + f32 target = 0.0f; + if (unk_flag_2 == 1) { + if (actor->current.pos.y <= i_this->mGroundCross - 45.0f + KREG_F(0)) { + i_this->mAction = ACTION_SWIM; + i_this->mActionMode = MODE_INIT; + sibuki_set(i_this); + } + } else if (unk_flag_2 == 0) { + target = KREG_F(2) + 47.0f; + cXyz pos(actor->current.pos); + pos.y = i_this->mGroundCross; + fopAcM_effHamonSet(&i_this->mHamonPrtcl, &pos, 1.0f, KREG_F(11) + 0.1f); + + if (actor->current.pos.y > i_this->mGroundCross - 35.0f + KREG_F(1)) { + i_this->mAction = ACTION_NORMAL; + i_this->mActionMode = MODE_INIT; + } + } + + cLib_addCalc2(&i_this->mCurrentPosYOffset, target, 0.4f, 5.0f); +} + +/* 807FB034-807FB3FC 002DD4 03C8+00 1/1 0/0 0/0 .text anm_se_set__FP10e_yg_class */ +static void anm_se_set(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + s8 footnote_flag = false; + + if (i_this->mAnm == BCK_YG_WAIT) { + if (i_this->mpMorf->checkFrame(0.0f)) { + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_NAKU, -1); + footnote_flag = true; + } + } else if (i_this->mAnm == BCK_YG_WALK) { + if (i_this->mpMorf->checkFrame(0.0f)) { + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_NAKU, -1); + } + + if (i_this->mpMorf->checkFrame(0.0f) || i_this->mpMorf->checkFrame(9.5f)) { + footnote_flag = true; + } + } else if (i_this->mAnm == BCK_YG_RUN) { + if (i_this->mpMorf->checkFrame(0.0f)) { + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_NAKU, -1); + } + + if (i_this->mpMorf->checkFrame(0.0f) || i_this->mpMorf->checkFrame(5.5f)) { + footnote_flag = true; + } + } else if (i_this->mAnm == BCK_YG_JUMP_START) { + if (i_this->mpMorf->checkFrame(6.5f) || i_this->mpMorf->checkFrame(8.0f)) { + footnote_flag = true; + } + } else if (i_this->mAnm == BCK_YG_JUMP_END) { + if (i_this->mpMorf->checkFrame(2.5f) || i_this->mpMorf->checkFrame(6.0f)) { + footnote_flag = true; + } + } else if (i_this->mAnm == BCK_YG_FIND) { + if (i_this->mpMorf->checkFrame(1.0f)) { + i_this->mSound.startCreatureVoice(Z2SE_EN_YG_V_FIND, -1); + } + } else if (i_this->mAnm == BCK_YG_GNAW) { + if (i_this->mpMorf->checkFrame(0.0f) || i_this->mpMorf->checkFrame(4.5f) || i_this->mpMorf->checkFrame(9.5f) || i_this->mpMorf->checkFrame(15.0f)) { + i_this->mSound.startCreatureSound(Z2SE_EN_YG_BITE, 0, -1); + } + } else if (i_this->mAnm == BCK_YG_SWIM && (i_this->mpMorf->checkFrame(0.0f) || i_this->mpMorf->checkFrame(9.5f))) { + i_this->mSound.startCreatureSound(Z2SE_EN_YG_SWIM, 0, -1); + } + + if (footnote_flag) { + if (i_this->mWaterFlag) { + i_this->mSound.startCreatureSound(Z2SE_EN_YG_FN_WATER, 0, -1); + } else { + i_this->mSound.startCreatureSound(Z2SE_EN_YG_FOOTNOTE, 0, -1); + } + } +} + +/* 807FB3FC-807FB908 00319C 050C+00 2/1 0/0 0/0 .text daE_YG_Execute__FP10e_yg_class */ +static int daE_YG_Execute(e_yg_class* i_this) { + fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor; + cXyz work, center, unused; + + i_this->mFrameCounter++; + + for (int i = 0; i < 4; i++) { + if (i_this->mTimers[i] != 0) { + i_this->mTimers[i]--; + } + } + + if (i_this->mInvulnerabilityTimer != 0) { + i_this->mInvulnerabilityTimer--; + } + + if (i_this->mSplashTimer != 0) { + i_this->mSplashTimer--; + } + + J3DModel* model = i_this->mpMorf->getModel(); + + action(i_this); + + if (i_this->mAction == ACTION_STANDBY) { + return 1; + } + + if (i_this->mAction == ACTION_WOLFBITE) { + MTXCopy(daPy_getLinkPlayerActorClass()->getWolfMouthMatrix(), mDoMtx_stack_c::get()); + mDoMtx_stack_c::multVecZero(&actor->current.pos); + mDoMtx_stack_c::YrotM(KREG_S(0)); + mDoMtx_stack_c::XrotM(KREG_S(1) + (s16)0x8000); + mDoMtx_stack_c::ZrotM(KREG_S(2) + 2500); + mDoMtx_stack_c::transM(KREG_F(0) + 10.0f, KREG_F(1) + -60.0f, KREG_F(2) + -20.0f); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + } else { + mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y + i_this->mCurrentPosYOffset, actor->current.pos.z); + mDoMtx_stack_c::YrotM((s16)actor->shape_angle.y); + mDoMtx_stack_c::XrotM((s16)actor->shape_angle.x); + mDoMtx_stack_c::ZrotM(actor->shape_angle.z); + } + + mDoMtx_stack_c::scaleM(l_HIO.basic_size, l_HIO.basic_size, l_HIO.basic_size); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + + i_this->mpMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor))); + i_this->mpMorf->modelCalc(); + ke_set(i_this); + anm_se_set(i_this); + + MTXCopy(model->getAnmMtx(JNT_BODY), *calc_mtx); + work.set(TREG_F(0) + 30.0f, TREG_F(1), TREG_F(2)); + MtxPosition(&work, &actor->eyePos); + actor->attention_info.position = actor->eyePos; + actor->attention_info.position.y += 40.0f; + + work.set(BREG_F(0) + 10.0f, BREG_F(1) + 10.0f, BREG_F(2)); + MtxPosition(&work, ¢er); + i_this->mSph1.SetC(center); + i_this->mSph1.SetR((JREG_F(3) + 35.0f) * l_HIO.basic_size); + dComIfG_Ccsp()->Set(&i_this->mSph1); + + if (i_this->mUnkFlag1 == 0) { + center.x += 10000.0f; + } else { + work.set(TREG_F(8), TREG_F(9), TREG_F(10)); + MtxPosition(&work, ¢er); + i_this->mUnkFlag1 = 0; + } + + i_this->mSph2.SetC(center); + i_this->mSph2.SetR((JREG_F(2) + 20.0f) * l_HIO.basic_size); + dComIfG_Ccsp()->Set(&i_this->mSph2); + + if (i_this->mWaterFlag && i_this->mAnm == BCK_YG_RUN && (i_this->mpMorf->checkFrame(1.0f) || i_this->mpMorf->checkFrame(7.0f)) && cM_rndF(1.0f) < 0.5f) { + static cXyz sc(0.3f, 0.3f, 0.3f); + static u16 eff_id[4] = { + ID_ZI_J_DOWNWTRA_A, ID_ZI_J_DOWNWTRA_B, ID_ZI_J_DOWNWTRA_C, ID_ZI_J_DOWNWTRA_D, + }; + + for (int i = 0; i < 4; i++) { + i_this->mDownWtrAPrtcls[i] = dComIfGp_particle_set(i_this->mDownWtrAPrtcls[i], eff_id[i], &actor->current.pos, &actor->tevStr, + &actor->shape_angle, &sc, 0xFF, NULL, -1, NULL, NULL, NULL); + } + } + + if (i_this->mDeathFlag == 0) { + i_this->mUnkPrtcl = dComIfGp_particle_set(i_this->mUnkPrtcl, dPa_RM(ID_ZF_S_YGCONST00), &actor->current.pos, NULL, NULL); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mUnkPrtcl); + if (emitter != NULL) { + emitter->setGlobalRTMatrix(model->getAnmMtx(JNT_BODY)); + } + } + + cXyz i_effSize(0.5f, 0.5f, 0.5f); + setMidnaBindEffect(actor, &i_this->mSound, &actor->eyePos, &i_effSize); + + return 1; +} + +/* 807FB908-807FB910 0036A8 0008+00 1/0 0/0 0/0 .text daE_YG_IsDelete__FP10e_yg_class */ +static int daE_YG_IsDelete(e_yg_class* i_this) { + return 1; +} + +/* 807FB910-807FB978 0036B0 0068+00 1/0 0/0 0/0 .text daE_YG_Delete__FP10e_yg_class */ +static int daE_YG_Delete(e_yg_class* i_this) { + fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor; + fpc_ProcID id = fopAcM_GetID(i_this); + + dComIfG_resDelete(&i_this->mPhase, "E_YG"); + + if (i_this->mIsFirstSpawn) { + l_initHIO = false; + mDoHIO_DELETE_CHILD(l_HIO.id); + } + + if (actor->heap != NULL) { + i_this->mpMorf->stopZelAnime(); + } + + return 1; +} + +/* 807FB978-807FBA88 003718 0110+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* a_this) { + e_yg_class* i_this = (e_yg_class*)a_this; + + i_this->mpMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_YG", 0x13), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_YG", 0xF), 2, 1.0f, 0, -1, + &i_this->mSound, J3DMdlFlag_DifferedDLBuffer, 0x11000084); + if (i_this->mpMorf == NULL || i_this->mpMorf->getModel() == NULL) { + return 0; + } + + if (!i_this->mLineMat.init(13, 10, 1)) { + return 0; + } + + return 1; +} + +/* 807FBA88-807FBE70 003828 03E8+00 1/0 0/0 0/0 .text daE_YG_Create__FP10fopAc_ac_c */ +static cPhs__Step daE_YG_Create(fopAc_ac_c* actor) { + e_yg_class* i_this = (e_yg_class*)actor; + + fopAcM_ct(&i_this->actor, e_yg_class); + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&i_this->mPhase, "E_YG"); + if (phase == cPhs_COMPLEATE_e) { + OS_REPORT("E_YG PARAM %x\n", fopAcM_GetParam(actor)); + + s32 swBit = (fopAcM_GetParam(actor) & 0xFF0000) >> 16; + if (swBit != 0xFF) { + if (dComIfGs_isSwitch(swBit, fopAcM_GetRoomNo(actor))) { + return cPhs_ERROR_e; + } + } + + i_this->arg0 = fopAcM_GetParam(actor); + i_this->arg1 = (fopAcM_GetParam(actor) & 0xff00) >> 8; + i_this->mSwBit = (fopAcM_GetParam(actor) & 0xff000000) >> 24; + + OS_REPORT("E_YG//////////////E_YG SET 1 !!\n"); + + if (!fopAcM_entrySolidHeap(actor, useHeapInit, 0x3c60)) { + OS_REPORT("//////////////E_YG SET NON !!\n"); + return cPhs_ERROR_e; + } + + if (!l_initHIO) { + i_this->mIsFirstSpawn = 1; + l_initHIO = true; + l_HIO.id = mDoHIO_CREATE_CHILD("グース", &l_HIO); + } + + fopAcM_SetMtx(actor, i_this->mpMorf->getModel()->getBaseTRMtx()); + + actor->field_0x560 = actor->health = 1; + + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xdafbfdff, 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 + }; + + static dCcD_SrcSph at_sph_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj + #if DEBUG + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + #else + {dCcD_SE_SOFT_BODY, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + #endif + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 20.0f} // mSph + } // mSphAttr + }; + + i_this->mStts.Init(30, 0, actor); + i_this->mSph1.Set(cc_sph_src); + i_this->mSph1.SetStts(&i_this->mStts); + i_this->mSph2.Set(at_sph_src); + i_this->mSph2.SetStts(&i_this->mStts); + i_this->mBgc.Set(fopAcM_GetPosition_p(actor), fopAcM_GetOldPosition_p(actor), actor, 1, + &i_this->mAcchCir, fopAcM_GetSpeed_p(actor), NULL, NULL); + i_this->mAcchCir.SetWall(30.0f, 41.0f); + + i_this->mSound.init(&actor->current.pos, &actor->eyePos, 3, 1); + i_this->mSound.setEnemyName("E_yg"); + + i_this->mAtInfo.mpSound = &i_this->mSound; + + i_this->mFrameCounter = (s16)cM_rndF(65535.0f); + + if (i_this->mSwBit != 0xFF) { + if (!dComIfGs_isSwitch(i_this->mSwBit, fopAcM_GetRoomNo(actor))) { + i_this->mDispFlag = 1; + i_this->mAction = ACTION_STANDBY; + } + + i_this->mUnkFlag2 = 1; + } + + i_this->mDistance = l_HIO.pl_recognition_dist; + + /* If Phantom Zant actor exists */ + if (fopAcM_SearchByName(PROC_E_PZ) != 0) { + i_this->mDistance = 10000.0f; + i_this->mUnkFlag2 = 1; + } + + daE_YG_Execute(i_this); + } + + return phase; +} + +AUDIO_INSTANCES; + /* 807FCF48-807FCF68 -00001 0020+00 1/0 0/0 0/0 .data l_daE_YG_Method */ static actor_method_class l_daE_YG_Method = { - (process_method_func)daE_YG_Create__FP10fopAc_ac_c, - (process_method_func)daE_YG_Delete__FP10e_yg_class, - (process_method_func)daE_YG_Execute__FP10e_yg_class, - (process_method_func)daE_YG_IsDelete__FP10e_yg_class, - (process_method_func)daE_YG_Draw__FP10e_yg_class, + (process_method_func)daE_YG_Create, + (process_method_func)daE_YG_Delete, + (process_method_func)daE_YG_Execute, + (process_method_func)daE_YG_IsDelete, + (process_method_func)daE_YG_Draw, }; /* 807FCF68-807FCF98 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_YG */ @@ -331,1146 +1497,3 @@ extern actor_process_profile_definition g_profile_E_YG = { fopAc_ENEMY_e, // mActorType fopAc_CULLBOX_0_e, // cullType }; - -/* 807FCF98-807FCFA4 00019C 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, -}; - -/* 807FCFA4-807FCFB0 0001A8 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, -}; - -/* 807FCFB0-807FCFBC 0001B4 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, -}; - -/* 807FCFBC-807FCFD0 0001C0 0014+00 1/1 0/0 0/0 .data __vt__18mDoExt_3DlineMat_c */ -SECTION_DATA extern void* __vt__18mDoExt_3DlineMat_c[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - -/* 807FCFD0-807FCFDC 0001D4 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 807FCFDC-807FCFE8 0001E0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 807FCFE8-807FD00C 0001EC 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_807FC80C, - (void*)NULL, - (void*)NULL, - (void*)func_807FC804, -}; - -/* 807FD00C-807FD018 000210 000C+00 2/2 0/0 0/0 .data __vt__12daE_YG_HIO_c */ -SECTION_DATA extern void* __vt__12daE_YG_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_YG_HIO_cFv, -}; - -/* 807F834C-807F8394 0000EC 0048+00 1/1 0/0 0/0 .text __ct__12daE_YG_HIO_cFv */ -daE_YG_HIO_c::daE_YG_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCCF0-807FCCF4 00003C 0004+00 1/2 0/0 0/0 .rodata @3839 */ -SECTION_RODATA static f32 const lit_3839 = -1.0f; -COMPILER_STRIP_GATE(0x807FCCF0, &lit_3839); - -/* 807FCDF0-807FCDF0 00013C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_807FCDF0 = "E_YG"; -#pragma pop - -/* 807F8394-807F8440 000134 00AC+00 7/7 0/0 0/0 .text anm_init__FP10e_yg_classifUcf */ -static void anm_init(e_yg_class* param_0, int param_1, f32 param_2, u8 param_3, f32 param_4) { - // NONMATCHING -} - -/* 807F8440-807F848C 0001E0 004C+00 3/3 0/0 0/0 .text pl_check__FP10e_yg_classf */ -static void pl_check(e_yg_class* param_0, f32 param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCCF4-807FCCF8 000040 0004+00 0/1 0/0 0/0 .rodata @3893 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3893 = 400.0f; -COMPILER_STRIP_GATE(0x807FCCF4, &lit_3893); -#pragma pop - -/* 807F848C-807F8610 00022C 0184+00 1/0 0/0 0/0 .text daE_YG_Draw__FP10e_yg_class */ -static void daE_YG_Draw(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCCF8-807FCCFC 000044 0004+00 1/4 0/0 0/0 .rodata @3912 */ -SECTION_RODATA static f32 const lit_3912 = 50.0f; -COMPILER_STRIP_GATE(0x807FCCF8, &lit_3912); - -/* 807F8610-807F86F8 0003B0 00E8+00 2/2 0/0 0/0 .text sibuki_set__FP10e_yg_class */ -static void sibuki_set(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCCFC-807FCD00 000048 0004+00 0/1 0/0 0/0 .rodata @4023 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4023 = 13.0f / 20.0f; -COMPILER_STRIP_GATE(0x807FCCFC, &lit_4023); -#pragma pop - -/* 807FCD00-807FCD04 00004C 0004+00 0/2 0/0 0/0 .rodata @4024 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4024 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x807FCD00, &lit_4024); -#pragma pop - -/* 807FCD04-807FCD08 000050 0004+00 0/3 0/0 0/0 .rodata @4025 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4025 = 60.0f; -COMPILER_STRIP_GATE(0x807FCD04, &lit_4025); -#pragma pop - -/* 807FCD08-807FCD0C 000054 0004+00 0/1 0/0 0/0 .rodata @4026 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4026 = 36.0f; -COMPILER_STRIP_GATE(0x807FCD08, &lit_4026); -#pragma pop - -/* 807FCD0C-807FCD10 000058 0004+00 0/1 0/0 0/0 .rodata @4027 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4027 = -18.0f; -COMPILER_STRIP_GATE(0x807FCD0C, &lit_4027); -#pragma pop - -/* 807FCD10-807FCD14 00005C 0004+00 0/1 0/0 0/0 .rodata @4028 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4028 = 22.0f; -COMPILER_STRIP_GATE(0x807FCD10, &lit_4028); -#pragma pop - -/* 807FCD14-807FCD18 000060 0004+00 0/1 0/0 0/0 .rodata @4029 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4029 = 45.0f; -COMPILER_STRIP_GATE(0x807FCD14, &lit_4029); -#pragma pop - -/* 807FCD18-807FCD1C 000064 0004+00 0/3 0/0 0/0 .rodata @4030 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4030 = -2.0f; -COMPILER_STRIP_GATE(0x807FCD18, &lit_4030); -#pragma pop - -/* 807FCD1C-807FCD20 000068 0004+00 0/1 0/0 0/0 .rodata @4031 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4031 = -68.0f; -COMPILER_STRIP_GATE(0x807FCD1C, &lit_4031); -#pragma pop - -/* 807FD060-807FD06C 000048 000C+00 0/1 0/0 0/0 .bss @3817 */ -#pragma push -#pragma force_active on -static u8 lit_3817[12]; -#pragma pop - -/* 807FD06C-807FD088 000054 001C+00 6/8 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[28]; - -/* 807FD088-807FD098 000070 000C+04 0/1 0/0 0/0 .bss @3917 */ -#pragma push -#pragma force_active on -static u8 lit_3917[12 + 4 /* padding */]; -#pragma pop - -/* 807FD098-807FD0A4 000080 000C+00 0/1 0/0 0/0 .bss @3920 */ -#pragma push -#pragma force_active on -static u8 lit_3920[12]; -#pragma pop - -/* 807FD0A4-807FD0B0 00008C 000C+00 0/1 0/0 0/0 .bss @3921 */ -#pragma push -#pragma force_active on -static u8 lit_3921[12]; -#pragma pop - -/* 807FD0B0-807FD0D4 000098 0024+00 0/1 0/0 0/0 .bss e_pos$3916 */ -#pragma push -#pragma force_active on -static u8 e_pos[36]; -#pragma pop - -/* 807F86F8-807F8A68 000498 0370+00 1/1 0/0 0/0 .text ms_disappear__FP10e_yg_class */ -static void ms_disappear(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FD0D4-807FD124 0000BC 0050+00 2/2 0/0 0/0 .bss target_info */ -static u8 target_info[80]; - -/* 807FD124-807FD128 00010C 0004+00 2/2 0/0 0/0 .bss target_info_count */ -static u8 target_info_count[4]; - -/* 807F8A68-807F8AE4 000808 007C+00 1/1 0/0 0/0 .text s_d_sub__FPvPv */ -static void s_d_sub(void* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD20-807FCD24 00006C 0004+00 0/2 0/0 0/0 .rodata @4097 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4097 = 1000.0f; -COMPILER_STRIP_GATE(0x807FCD20, &lit_4097); -#pragma pop - -/* 807F8AE4-807F8C60 000884 017C+00 1/1 0/0 0/0 .text search_dokuro__FP10e_yg_class */ -static void search_dokuro(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD24-807FCD28 000070 0004+00 0/3 0/0 0/0 .rodata @4144 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4144 = 65535.0f; -COMPILER_STRIP_GATE(0x807FCD24, &lit_4144); -#pragma pop - -/* 807FCD28-807FCD2C 000074 0004+00 0/1 0/0 0/0 .rodata @4145 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4145 = 150.0f; -COMPILER_STRIP_GATE(0x807FCD28, &lit_4145); -#pragma pop - -/* 807F8C60-807F8DD8 000A00 0178+00 1/1 0/0 0/0 .text way_set__FP10e_yg_class */ -static void way_set(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD2C-807FCD30 000078 0004+00 0/5 0/0 0/0 .rodata @4192 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4192 = 3.0f; -COMPILER_STRIP_GATE(0x807FCD2C, &lit_4192); -#pragma pop - -/* 807FCD30-807FCD34 00007C 0004+00 0/6 0/0 0/0 .rodata @4193 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4193 = 30.0f; -COMPILER_STRIP_GATE(0x807FCD30, &lit_4193); -#pragma pop - -/* 807FCD34-807FCD38 000080 0004+00 0/2 0/0 0/0 .rodata @4194 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4194 = 2000.0f; -COMPILER_STRIP_GATE(0x807FCD34, &lit_4194); -#pragma pop - -/* 807FCD38-807FCD3C 000084 0004+00 0/2 0/0 0/0 .rodata @4195 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4195 = 200.0f; -COMPILER_STRIP_GATE(0x807FCD38, &lit_4195); -#pragma pop - -/* 807FCD3C-807FCD40 000088 0004+00 0/1 0/0 0/0 .rodata @4196 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4196 = 1.5f; -COMPILER_STRIP_GATE(0x807FCD3C, &lit_4196); -#pragma pop - -/* 807FCD40-807FCD44 00008C 0004+00 0/1 0/0 0/0 .rodata @4197 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4197 = 4000.0f; -COMPILER_STRIP_GATE(0x807FCD40, &lit_4197); -#pragma pop - -/* 807FCD44-807FCD48 000090 0004+00 0/1 0/0 0/0 .rodata @4198 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4198 = 0.25f; -COMPILER_STRIP_GATE(0x807FCD44, &lit_4198); -#pragma pop - -/* 807F8DD8-807F9154 000B78 037C+00 1/1 0/0 0/0 .text e_yg_normal__FP10e_yg_class */ -static void e_yg_normal(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807F9154-807F94E8 000EF4 0394+00 2/1 0/0 0/0 .text e_yg_attack__FP10e_yg_class */ -static void e_yg_attack(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD48-807FCD4C 000094 0004+00 0/2 0/0 0/0 .rodata @4280 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4280 = 300.0f; -COMPILER_STRIP_GATE(0x807FCD48, &lit_4280); -#pragma pop - -/* 807FCD4C-807FCD50 000098 0004+00 0/6 0/0 0/0 .rodata @4281 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4281 = 10.0f; -COMPILER_STRIP_GATE(0x807FCD4C, &lit_4281); -#pragma pop - -/* 807FCD50-807FCD54 00009C 0004+00 0/2 0/0 0/0 .rodata @4398 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4398 = 70.0f; -COMPILER_STRIP_GATE(0x807FCD50, &lit_4398); -#pragma pop - -/* 807FCD54-807FCD58 0000A0 0004+00 0/3 0/0 0/0 .rodata @4399 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4399 = 10000.0f; -COMPILER_STRIP_GATE(0x807FCD54, &lit_4399); -#pragma pop - -/* 807F94E8-807F99CC 001288 04E4+00 1/1 0/0 0/0 .text search_ground_1__FP10e_yg_class */ -static void search_ground_1(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807F99CC-807F99D0 00176C 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 807FCD58-807FCD5C 0000A4 0004+00 0/4 0/0 0/0 .rodata @4430 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4430 = 5.0f; -COMPILER_STRIP_GATE(0x807FCD58, &lit_4430); -#pragma pop - -/* 807FCD5C-807FCD60 0000A8 0004+00 0/3 0/0 0/0 .rodata @4431 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4431 = 2.0f; -COMPILER_STRIP_GATE(0x807FCD5C, &lit_4431); -#pragma pop - -/* 807FCD60-807FCD64 0000AC 0004+00 0/3 0/0 0/0 .rodata @4432 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4432 = 8.0f; -COMPILER_STRIP_GATE(0x807FCD60, &lit_4432); -#pragma pop - -/* 807FCD64-807FCD68 0000B0 0004+00 0/3 0/0 0/0 .rodata @4433 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4433 = 0.5f; -COMPILER_STRIP_GATE(0x807FCD64, &lit_4433); -#pragma pop - -/* 807FCD68-807FCD6C 0000B4 0004+00 0/3 0/0 0/0 .rodata @4434 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4434 = 20.0f; -COMPILER_STRIP_GATE(0x807FCD68, &lit_4434); -#pragma pop - -/* 807F99D0-807F9BB8 001770 01E8+00 1/1 0/0 0/0 .text e_yg_swim__FP10e_yg_class */ -static void e_yg_swim(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD6C-807FCD70 0000B8 0004+00 0/1 0/0 0/0 .rodata @4500 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4500 = 75.0f; -COMPILER_STRIP_GATE(0x807FCD6C, &lit_4500); -#pragma pop - -/* 807FCD70-807FCD74 0000BC 0004+00 0/1 0/0 0/0 .rodata @4501 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4501 = 90.0f; -COMPILER_STRIP_GATE(0x807FCD70, &lit_4501); -#pragma pop - -/* 807FCD74-807FCD78 0000C0 0004+00 0/1 0/0 0/0 .rodata @4502 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4502 = 65.0f; -COMPILER_STRIP_GATE(0x807FCD74, &lit_4502); -#pragma pop - -/* 807F9BB8-807F9EF8 001958 0340+00 1/1 0/0 0/0 .text e_yg_dokuro__FP10e_yg_class */ -static void e_yg_dokuro(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD78-807FCD7C 0000C4 0004+00 0/1 0/0 0/0 .rodata @4532 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4532 = -30.0f; -COMPILER_STRIP_GATE(0x807FCD78, &lit_4532); -#pragma pop - -/* 807F9EF8-807FA14C 001C98 0254+00 1/1 0/0 0/0 .text e_yg_damage__FP10e_yg_class */ -static void e_yg_damage(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807FA14C-807FA284 001EEC 0138+00 1/1 0/0 0/0 .text e_yg_wolfbite__FP10e_yg_class */ -static void e_yg_wolfbite(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807FA284-807FA2E4 002024 0060+00 1/1 0/0 0/0 .text e_yg_standby__FP10e_yg_class */ -static void e_yg_standby(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807FA2E4-807FA478 002084 0194+00 1/1 0/0 0/0 .text damage_check__FP10e_yg_class */ -static void damage_check(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD7C-807FCD80 0000C8 0004+00 0/2 0/0 0/0 .rodata @4658 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4658 = -5.0f; -COMPILER_STRIP_GATE(0x807FCD7C, &lit_4658); -#pragma pop - -/* 807FCD80-807FCD84 0000CC 0004+00 0/1 0/0 0/0 .rodata @4659 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4659 = -12.0f; -COMPILER_STRIP_GATE(0x807FCD80, &lit_4659); -#pragma pop - -/* 807FCD84-807FCD88 0000D0 0004+00 0/1 0/0 0/0 .rodata @4660 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4660 = 65536.0f; -COMPILER_STRIP_GATE(0x807FCD84, &lit_4660); -#pragma pop - -/* 807FCD88-807FCD8C 0000D4 0004+00 0/1 0/0 0/0 .rodata @4661 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4661 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x807FCD88, &lit_4661); -#pragma pop - -/* 807FCD8C-807FCD94 0000D8 0004+04 0/1 0/0 0/0 .rodata @4662 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4662[1 + 1 /* padding */] = { - 4.0f / 5.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x807FCD8C, &lit_4662); -#pragma pop - -/* 807FCD94-807FCD9C 0000E0 0008+00 0/1 0/0 0/0 .rodata @4664 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4664[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x807FCD94, &lit_4664); -#pragma pop - -/* 807FA478-807FA7B0 002218 0338+00 1/1 0/0 0/0 .text ke_control__FP10e_yg_classP7yg_ke_sif */ -static void ke_control(e_yg_class* param_0, yg_ke_s* param_1, int param_2, f32 param_3) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCD9C-807FCDA0 0000E8 0004+00 0/1 0/0 0/0 .rodata @4687 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4687 = 3.5f; -COMPILER_STRIP_GATE(0x807FCD9C, &lit_4687); -#pragma pop - -/* 807FCDA0-807FCDA4 0000EC 0004+00 0/1 0/0 0/0 .rodata @4688 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4688 = 9.0f / 5.0f; -COMPILER_STRIP_GATE(0x807FCDA0, &lit_4688); -#pragma pop - -/* 807FA7B0-807FA888 002550 00D8+00 1/1 0/0 0/0 .text - * ke_move__FP10e_yg_classP19mDoExt_3DlineMat0_cP7yg_ke_sif */ -static void ke_move(e_yg_class* param_0, mDoExt_3DlineMat0_c* param_1, yg_ke_s* param_2, - int param_3, f32 param_4) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FD128-807FD134 000110 000C+00 0/1 0/0 0/0 .bss @4689 */ -#pragma push -#pragma force_active on -static u8 lit_4689[12]; -#pragma pop - -/* 807FD134-807FD140 00011C 000C+00 0/1 0/0 0/0 .bss @4690 */ -#pragma push -#pragma force_active on -static u8 lit_4690[12]; -#pragma pop - -/* 807FD140-807FD14C 000128 000C+00 0/1 0/0 0/0 .bss @4691 */ -#pragma push -#pragma force_active on -static u8 lit_4691[12]; -#pragma pop - -/* 807FD14C-807FD158 000134 000C+00 0/1 0/0 0/0 .bss @4692 */ -#pragma push -#pragma force_active on -static u8 lit_4692[12]; -#pragma pop - -/* 807FD158-807FD164 000140 000C+00 0/1 0/0 0/0 .bss @4693 */ -#pragma push -#pragma force_active on -static u8 lit_4693[12]; -#pragma pop - -/* 807FD164-807FD170 00014C 000C+00 0/1 0/0 0/0 .bss @4694 */ -#pragma push -#pragma force_active on -static u8 lit_4694[12]; -#pragma pop - -/* 807FD170-807FD17C 000158 000C+00 0/1 0/0 0/0 .bss @4695 */ -#pragma push -#pragma force_active on -static u8 lit_4695[12]; -#pragma pop - -/* 807FD17C-807FD188 000164 000C+00 0/1 0/0 0/0 .bss @4696 */ -#pragma push -#pragma force_active on -static u8 lit_4696[12]; -#pragma pop - -/* 807FD188-807FD194 000170 000C+00 0/1 0/0 0/0 .bss @4697 */ -#pragma push -#pragma force_active on -static u8 lit_4697[12]; -#pragma pop - -/* 807FD194-807FD1A0 00017C 000C+00 0/1 0/0 0/0 .bss @4698 */ -#pragma push -#pragma force_active on -static u8 lit_4698[12]; -#pragma pop - -/* 807FD1A0-807FD1AC 000188 000C+00 0/1 0/0 0/0 .bss @4699 */ -#pragma push -#pragma force_active on -static u8 lit_4699[12]; -#pragma pop - -/* 807FD1AC-807FD1B8 000194 000C+00 0/1 0/0 0/0 .bss @4700 */ -#pragma push -#pragma force_active on -static u8 lit_4700[12]; -#pragma pop - -/* 807FD1B8-807FD1C4 0001A0 000C+00 0/1 0/0 0/0 .bss @4701 */ -#pragma push -#pragma force_active on -static u8 lit_4701[12]; -#pragma pop - -/* 807FD1C4-807FD260 0001AC 009C+00 1/2 0/0 0/0 .bss ke_p */ -static u8 ke_p[156]; - -/* 807FD260-807FD26C 000248 000C+00 0/1 0/0 0/0 .bss @4702 */ -#pragma push -#pragma force_active on -static u8 lit_4702[12]; -#pragma pop - -/* 807FD26C-807FD278 000254 000C+00 0/1 0/0 0/0 .bss @4703 */ -#pragma push -#pragma force_active on -static u8 lit_4703[12]; -#pragma pop - -/* 807FD278-807FD284 000260 000C+00 0/1 0/0 0/0 .bss @4704 */ -#pragma push -#pragma force_active on -static u8 lit_4704[12]; -#pragma pop - -/* 807FD284-807FD290 00026C 000C+00 0/1 0/0 0/0 .bss @4705 */ -#pragma push -#pragma force_active on -static u8 lit_4705[12]; -#pragma pop - -/* 807FD290-807FD29C 000278 000C+00 0/1 0/0 0/0 .bss @4706 */ -#pragma push -#pragma force_active on -static u8 lit_4706[12]; -#pragma pop - -/* 807FD29C-807FD2A8 000284 000C+00 0/1 0/0 0/0 .bss @4707 */ -#pragma push -#pragma force_active on -static u8 lit_4707[12]; -#pragma pop - -/* 807FD2A8-807FD2B4 000290 000C+00 0/1 0/0 0/0 .bss @4708 */ -#pragma push -#pragma force_active on -static u8 lit_4708[12]; -#pragma pop - -/* 807FD2B4-807FD2C0 00029C 000C+00 0/1 0/0 0/0 .bss @4709 */ -#pragma push -#pragma force_active on -static u8 lit_4709[12]; -#pragma pop - -/* 807FD2C0-807FD2CC 0002A8 000C+00 0/1 0/0 0/0 .bss @4710 */ -#pragma push -#pragma force_active on -static u8 lit_4710[12]; -#pragma pop - -/* 807FD2CC-807FD2D8 0002B4 000C+00 0/1 0/0 0/0 .bss @4711 */ -#pragma push -#pragma force_active on -static u8 lit_4711[12]; -#pragma pop - -/* 807FD2D8-807FD2E4 0002C0 000C+00 0/1 0/0 0/0 .bss @4712 */ -#pragma push -#pragma force_active on -static u8 lit_4712[12]; -#pragma pop - -/* 807FD2E4-807FD2F0 0002CC 000C+00 0/1 0/0 0/0 .bss @4713 */ -#pragma push -#pragma force_active on -static u8 lit_4713[12]; -#pragma pop - -/* 807FD2F0-807FD2FC 0002D8 000C+00 0/1 0/0 0/0 .bss @4714 */ -#pragma push -#pragma force_active on -static u8 lit_4714[12]; -#pragma pop - -/* 807FD2FC-807FD34C 0002E4 004E+02 1/2 0/0 0/0 .bss ke_a */ -static u8 ke_a[78 + 2 /* padding */]; - -/* 807FA888-807FAA34 002628 01AC+00 1/1 0/0 0/0 .text ke_set__FP10e_yg_class */ -static void ke_set(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807FAA34-807FB034 0027D4 0600+00 2/1 0/0 0/0 .text action__FP10e_yg_class */ -static void action(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCDA4-807FCDA8 0000F0 0004+00 0/0 0/0 0/0 .rodata @4891 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4891 = 500.0f; -COMPILER_STRIP_GATE(0x807FCDA4, &lit_4891); -#pragma pop - -/* 807FCDA8-807FCDAC 0000F4 0004+00 0/0 0/0 0/0 .rodata @4892 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4892 = -7.0f; -COMPILER_STRIP_GATE(0x807FCDA8, &lit_4892); -#pragma pop - -/* 807FCDAC-807FCDB0 0000F8 0004+00 0/0 0/0 0/0 .rodata @4893 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4893 = -80.0f; -COMPILER_STRIP_GATE(0x807FCDAC, &lit_4893); -#pragma pop - -/* 807FCDB0-807FCDB4 0000FC 0004+00 0/1 0/0 0/0 .rodata @4894 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4894 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x807FCDB0, &lit_4894); -#pragma pop - -/* 807FCDB4-807FCDB8 000100 0004+00 0/0 0/0 0/0 .rodata @4895 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4895 = 47.0f; -COMPILER_STRIP_GATE(0x807FCDB4, &lit_4895); -#pragma pop - -/* 807FCDB8-807FCDBC 000104 0004+00 0/1 0/0 0/0 .rodata @4896 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4896 = 35.0f; -COMPILER_STRIP_GATE(0x807FCDB8, &lit_4896); -#pragma pop - -/* 807FCDBC-807FCDC0 000108 0004+00 0/0 0/0 0/0 .rodata @4897 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4897 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x807FCDBC, &lit_4897); -#pragma pop - -/* 807FCDC0-807FCDC4 00010C 0004+00 0/1 0/0 0/0 .rodata @4995 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4995 = 9.5f; -COMPILER_STRIP_GATE(0x807FCDC0, &lit_4995); -#pragma pop - -/* 807FCDC4-807FCDC8 000110 0004+00 0/1 0/0 0/0 .rodata @4996 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4996 = 5.5f; -COMPILER_STRIP_GATE(0x807FCDC4, &lit_4996); -#pragma pop - -/* 807FCDC8-807FCDCC 000114 0004+00 0/1 0/0 0/0 .rodata @4997 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4997 = 6.5f; -COMPILER_STRIP_GATE(0x807FCDC8, &lit_4997); -#pragma pop - -/* 807FCDCC-807FCDD0 000118 0004+00 0/1 0/0 0/0 .rodata @4998 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4998 = 2.5f; -COMPILER_STRIP_GATE(0x807FCDCC, &lit_4998); -#pragma pop - -/* 807FCDD0-807FCDD4 00011C 0004+00 0/1 0/0 0/0 .rodata @4999 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4999 = 6.0f; -COMPILER_STRIP_GATE(0x807FCDD0, &lit_4999); -#pragma pop - -/* 807FCDD4-807FCDD8 000120 0004+00 0/1 0/0 0/0 .rodata @5000 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5000 = 4.5f; -COMPILER_STRIP_GATE(0x807FCDD4, &lit_5000); -#pragma pop - -/* 807FB034-807FB3FC 002DD4 03C8+00 1/1 0/0 0/0 .text anm_se_set__FP10e_yg_class */ -static void anm_se_set(e_yg_class* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCDD8-807FCDDC 000124 0004+00 0/1 0/0 0/0 .rodata @5140 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5140 = -60.0f; -COMPILER_STRIP_GATE(0x807FCDD8, &lit_5140); -#pragma pop - -/* 807FCDDC-807FCDE0 000128 0004+00 0/1 0/0 0/0 .rodata @5141 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5141 = -20.0f; -COMPILER_STRIP_GATE(0x807FCDDC, &lit_5141); -#pragma pop - -/* 807FCDE0-807FCDE4 00012C 0004+00 0/1 0/0 0/0 .rodata @5142 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5142 = 7.0f; -COMPILER_STRIP_GATE(0x807FCDE0, &lit_5142); -#pragma pop - -/* 807FD34C-807FD35C 000334 000C+04 0/1 0/0 0/0 .bss @5031 */ -#pragma push -#pragma force_active on -static u8 lit_5031[12 + 4 /* padding */]; -#pragma pop - -/* 807FD35C-807FD368 000344 000C+00 0/1 0/0 0/0 .bss sc$5030 */ -#pragma push -#pragma force_active on -static u8 sc[12]; -#pragma pop - -/* 807FB3FC-807FB908 00319C 050C+00 2/1 0/0 0/0 .text daE_YG_Execute__FP10e_yg_class */ -static void daE_YG_Execute(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807FB908-807FB910 0036A8 0008+00 1/0 0/0 0/0 .text daE_YG_IsDelete__FP10e_yg_class */ -static bool daE_YG_IsDelete(e_yg_class* param_0) { - return true; -} - -/* 807FB910-807FB978 0036B0 0068+00 1/0 0/0 0/0 .text daE_YG_Delete__FP10e_yg_class */ -static void daE_YG_Delete(e_yg_class* param_0) { - // NONMATCHING -} - -/* 807FB978-807FBA88 003718 0110+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCDE4-807FCDE8 000130 0004+00 0/1 0/0 0/0 .rodata @5310 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5310 = 41.0f; -COMPILER_STRIP_GATE(0x807FCDE4, &lit_5310); -#pragma pop - -/* 807FCDF0-807FCDF0 00013C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_807FCDF5 = "E_yg"; -#pragma pop - -/* 807FBA88-807FBE70 003828 03E8+00 1/0 0/0 0/0 .text daE_YG_Create__FP10fopAc_ac_c */ -static void daE_YG_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 807FBE70-807FBEEC 003C10 007C+00 1/1 0/0 0/0 .text __dt__7yg_ke_sFv */ -yg_ke_s::~yg_ke_s() { - // NONMATCHING -} - -/* 807FBEEC-807FBF54 003C8C 0068+00 1/1 0/0 0/0 .text __ct__7yg_ke_sFv */ -yg_ke_s::yg_ke_s() { - // NONMATCHING -} - -/* 807FBF54-807FBF9C 003CF4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 807FBF9C-807FBFE4 003D3C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 807FBFE4-807FC040 003D84 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 807FC040-807FC0B0 003DE0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 807FC0B0-807FC120 003E50 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 807FC120-807FC168 003EC0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 807FC168-807FC1B0 003F08 0048+00 2/1 0/0 0/0 .text __dt__12daE_YG_HIO_cFv */ -daE_YG_HIO_c::~daE_YG_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FCDE8-807FCDEC 000134 0004+00 0/1 0/0 0/0 .rodata @5574 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5574 = 13.0f; -COMPILER_STRIP_GATE(0x807FCDE8, &lit_5574); -#pragma pop - -/* 807FCDEC-807FCDF0 000138 0004+00 0/1 0/0 0/0 .rodata @5575 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5575 = -10.0f; -COMPILER_STRIP_GATE(0x807FCDEC, &lit_5575); -#pragma pop - -/* 807FC1B0-807FC804 003F50 0654+00 0/0 1/0 0/0 .text __sinit_d_a_e_yg_cpp */ -void __sinit_d_a_e_yg_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x807FC1B0, __sinit_d_a_e_yg_cpp); -#pragma pop - -/* 807FC804-807FC80C 0045A4 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_807FC804() { - // NONMATCHING -} - -/* 807FC80C-807FC814 0045AC 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_807FC80C() { - // NONMATCHING -} - -/* 807FCC28-807FCC64 0049C8 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 807FCC64-807FCCA0 004A04 003C+00 6/6 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807FD368-807FD36C 000350 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_807FD368[4]; -#pragma pop - -/* 807FD36C-807FD370 000354 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_807FD36C[4]; -#pragma pop - -/* 807FD370-807FD374 000358 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD370[4]; -#pragma pop - -/* 807FD374-807FD378 00035C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD374[4]; -#pragma pop - -/* 807FD378-807FD37C 000360 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807FD378[4]; -#pragma pop - -/* 807FD37C-807FD380 000364 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807FD37C[4]; -#pragma pop - -/* 807FD380-807FD384 000368 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_807FD380[4]; -#pragma pop - -/* 807FD384-807FD388 00036C 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_807FD384[4]; -#pragma pop - -/* 807FD388-807FD38C 000370 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_807FD388[4]; -#pragma pop - -/* 807FD38C-807FD390 000374 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_807FD38C[4]; -#pragma pop - -/* 807FD390-807FD394 000378 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD390[4]; -#pragma pop - -/* 807FD394-807FD398 00037C 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD394[4]; -#pragma pop - -/* 807FD398-807FD39C 000380 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD398[4]; -#pragma pop - -/* 807FD39C-807FD3A0 000384 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807FD39C[4]; -#pragma pop - -/* 807FD3A0-807FD3A4 000388 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_807FD3A0[4]; -#pragma pop - -/* 807FD3A4-807FD3A8 00038C 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_807FD3A4[4]; -#pragma pop - -/* 807FD3A8-807FD3AC 000390 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_807FD3A8[4]; -#pragma pop - -/* 807FD3AC-807FD3B0 000394 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_807FD3AC[4]; -#pragma pop - -/* 807FD3B0-807FD3B4 000398 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_807FD3B0[4]; -#pragma pop - -/* 807FD3B4-807FD3B8 00039C 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD3B4[4]; -#pragma pop - -/* 807FD3B8-807FD3BC 0003A0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_807FD3B8[4]; -#pragma pop - -/* 807FD3BC-807FD3C0 0003A4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807FD3BC[4]; -#pragma pop - -/* 807FD3C0-807FD3C4 0003A8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807FD3C0[4]; -#pragma pop - -/* 807FD3C4-807FD3C8 0003AC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807FD3C4[4]; -#pragma pop - -/* 807FD3C8-807FD3CC 0003B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_807FD3C8[4]; -#pragma pop - -/* 807FCDF0-807FCDF0 00013C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */