From e8ea87e5c2a4b1773617c09af031403c2ad9f545 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Thu, 28 Aug 2025 15:25:36 -0700 Subject: [PATCH] d_a_e_fk equivalent (#2614) * d_a_e_fk equivalent * pr --- configure.py | 2 +- include/d/actor/d_a_e_fk.h | 69 +- src/d/actor/d_a_e_fk.cpp | 1916 ++++++++++++++++-------------------- 3 files changed, 896 insertions(+), 1091 deletions(-) diff --git a/configure.py b/configure.py index dd051fa4473..b2631b8625f 100755 --- a/configure.py +++ b/configure.py @@ -1695,7 +1695,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_e_dk"), ActorRel(Equivalent, "d_a_e_dt"), # weak func order ActorRel(NonMatching, "d_a_e_fb"), - ActorRel(NonMatching, "d_a_e_fk"), + ActorRel(Equivalent, "d_a_e_fk"), # weak func order ActorRel(MatchingFor("GZ2E01"), "d_a_e_fs"), ActorRel(MatchingFor("GZ2E01"), "d_a_e_fz"), ActorRel(NonMatching, "d_a_e_gb"), diff --git a/include/d/actor/d_a_e_fk.h b/include/d/actor/d_a_e_fk.h index a4dc863052e..402848c5cd2 100644 --- a/include/d/actor/d_a_e_fk.h +++ b/include/d/actor/d_a_e_fk.h @@ -17,12 +17,12 @@ */ class daE_FK_c : public fopEn_enemy_c { public: - /* 806B93CC */ void CreateHeap(); + /* 806B93CC */ int CreateHeap(); /* 806B9534 */ void initBodySph(); /* 806B95BC */ void initSwordSph(); /* 806B9670 */ void SetBodySph(); /* 806B97A4 */ void SetSwordSph(); - /* 806B98C4 */ void ctrlJoint(J3DJoint*, J3DModel*); + /* 806B98C4 */ int ctrlJoint(J3DJoint*, J3DModel*); /* 806B9A28 */ void SetAnm(int, int, f32, f32); /* 806B9AD8 */ void Yazirushi(); /* 806B9B2C */ void SpeedSet(); @@ -40,73 +40,58 @@ public: /* 806BA024 */ void DeathAction(); /* 806BA188 */ void DamageChk(); /* 806BA24C */ void DamageAction(); - /* 806BA330 */ void checkViewArea(); + /* 806BA330 */ bool checkViewArea(); /* 806BA3B4 */ void AttackAction(); /* 806BA61C */ void UpDown(); - /* 806BA6EC */ void Execute(); + /* 806BA6EC */ int Execute(); /* 806BABB8 */ void At_Check(int); - /* 806BACEC */ void Draw(); - /* 806BADB4 */ void Delete(); + /* 806BACEC */ int Draw(); + /* 806BADB4 */ int Delete(); /* 806BAE1C */ void setBaseMtx(); /* 806BAEB0 */ void setEfMtx(); /* 806BAF74 */ void CreateChk(); - /* 806BB004 */ void Create(); + /* 806BB004 */ int Create(); + private: /* 0x5AC */ u8 field_0x5AC[0x5B1 - 0x5AC]; - /* 0x5B1 */ u8 field_0x5b1; + /* 0x5B1 */ u8 mUpDownMode; /* 0x5B2 */ u8 field_0x5B2[0x5B6 - 0x5B2]; - /* 0x5B6 */ s16 field_0x5b6[2]; + /* 0x5B6 */ s16 mCcTimer[2]; /* 0x5BA */ u8 field_0x5BA[0x5C0 - 0x5BA]; - /* 0x5C0 */ s32 field_0x5c0; - /* 0x5C4 */ s16 field_0x5c4[4]; - /* 0x5CC */ f32 field_0x5cc; + /* 0x5C0 */ int mAnm; + /* 0x5C4 */ s16 mTimers[4]; + /* 0x5CC */ f32 mMaxSpeed; /* 0x5D0 */ s16 field_0x5d0; /* 0x5D2 */ s16 field_0x5d2; - /* 0x5D4 */ s16 field_0x5d4; + /* 0x5D4 */ s16 mHNeckRot; /* 0x5D6 */ u8 field_0x5D6[0x5D8 - 0x5D6]; - /* 0x5D8 */ s16 field_0x5d8; + /* 0x5D8 */ s16 mKNeckRot; /* 0x5DC */ f32 field_0x5dc; /* 0x5E0 */ u8 field_0x5E0[0x5E4 - 0x5E0]; - /* 0x5E4 */ f32 field_0x5e4; + /* 0x5E4 */ f32 mSize; /* 0x5E8 */ f32 field_0x5e8; /* 0x5EC */ u8 field_0x5EC[0x604 - 0x5EC]; - /* 0x604 */ f32 field_0x604; + /* 0x604 */ f32 mAlpha; /* 0x608 */ u8 field_0x608[0x60C - 0x608]; /* 0x60C */ f32 field_0x60c; /* 0x610 */ u8 field_0x610[0x615 - 0x610]; - /* 0x615 */ u8 field_0x615; - /* 0x616 */ u8 field_0x616; - /* 0x617 */ u8 field_0x617[0x618 - 0x617]; - /* 0x618 */ dCcD_Sph mBodySpheres[2]; - /* 0x888 */ dCcD_Sph mSwordSpheres[3]; - /* 0xC30 */ mDoExt_McaMorfSO* mpMorfSO; + /* 0x615 */ u8 mAction; + /* 0x616 */ u8 mMode; + /* 0x618 */ dCcD_Sph mCcBodySph[2]; + /* 0x888 */ dCcD_Sph mCcSwordSph[3]; + /* 0xC30 */ mDoExt_McaMorfSO* mpModelMorf; /* 0xC34 */ mDoExt_invisibleModel mInvisibleModel; - /* 0xC3C */ J3DModel* mpModel; - /* 0xC40 */ request_of_phase_process_class mPhaseReq; + /* 0xC3C */ J3DModel* mpEffModel; + /* 0xC40 */ request_of_phase_process_class mPhase; /* 0xC48 */ u8 field_0xC48[0xC4C - 0xC48]; - /* 0xC4C */ Z2CreatureEnemy mCreatureSound; + /* 0xC4C */ Z2CreatureEnemy mSound; /* 0xCF0 */ dBgS_AcchCir mAcchCir; - /* 0xD30 */ dBgS_ObjAcch mObjAcch; - /* 0xF08 */ dCcD_Stts mStts; + /* 0xD30 */ dBgS_ObjAcch mAcch; + /* 0xF08 */ dCcD_Stts mCcStts; /* 0xF44 */ dCcU_AtInfo mAtInfo; /* 0xF68 */ u8 mHIOInit; }; STATIC_ASSERT(sizeof(daE_FK_c) == 0xf6c); -class daE_FK_HIO_c : public JORReflexible { -public: - /* 806B938C */ daE_FK_HIO_c(); - /* 806BB594 */ virtual ~daE_FK_HIO_c(); - - void genMessage(JORMContext*); - - /* 0x04 */ s8 field_0x4; - /* 0x08 */ f32 model_size; - /* 0x0C */ f32 alpha; // "α" - /* 0x10 */ s16 effect_alpha; // "Effectα" - /* 0x12 */ s16 generation_time; -}; - - #endif /* D_A_E_FK_H */ diff --git a/src/d/actor/d_a_e_fk.cpp b/src/d/actor/d_a_e_fk.cpp index f36fcdf0aea..ad0d2602aa8 100644 --- a/src/d/actor/d_a_e_fk.cpp +++ b/src/d/actor/d_a_e_fk.cpp @@ -6,227 +6,888 @@ #include "d/dolzel_rel.h" #include "d/actor/d_a_e_fk.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" +#include "d/d_s_play.h" +#include "d/actor/d_a_player.h" +#include "d/actor/d_a_horse.h" +#include "Z2AudioLib/Z2Instances.h" +class daE_FK_HIO_c : public JORReflexible { +public: + /* 806B938C */ daE_FK_HIO_c(); + /* 806BB594 */ virtual ~daE_FK_HIO_c() {} + void genMessage(JORMContext*); -// -// Forward References: -// - -extern "C" void __ct__12daE_FK_HIO_cFv(); -extern "C" void CreateHeap__8daE_FK_cFv(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void initBodySph__8daE_FK_cFv(); -extern "C" void initSwordSph__8daE_FK_cFv(); -extern "C" void SetBodySph__8daE_FK_cFv(); -extern "C" void SetSwordSph__8daE_FK_cFv(); -extern "C" void ctrlJoint__8daE_FK_cFP8J3DJointP8J3DModel(); -extern "C" static void JointCallBack__FP8J3DJointi(); -extern "C" void SetAnm__8daE_FK_cFiiff(); -extern "C" void Yazirushi__8daE_FK_cFv(); -extern "C" void SpeedSet__8daE_FK_cFv(); -extern "C" void TnNeckSet__8daE_FK_cFs(); -extern "C" void HsAngleSet__8daE_FK_cFv(); -extern "C" void SpeedChk__8daE_FK_cFv(); -extern "C" void SetAnmSpeed__8daE_FK_cFv(); -extern "C" void TgChk__8daE_FK_cFv(); -extern "C" void AtChk__8daE_FK_cFv(); -extern "C" void OnAt__8daE_FK_cFv(); -extern "C" void R_MoveAction__8daE_FK_cFv(); -extern "C" void StartAction__8daE_FK_cFv(); -extern "C" void RunAction__8daE_FK_cFv(); -extern "C" void Action__8daE_FK_cFv(); -extern "C" void DeathAction__8daE_FK_cFv(); -extern "C" void DamageChk__8daE_FK_cFv(); -extern "C" void DamageAction__8daE_FK_cFv(); -extern "C" void checkViewArea__8daE_FK_cFv(); -extern "C" void AttackAction__8daE_FK_cFv(); -extern "C" void UpDown__8daE_FK_cFv(); -extern "C" void Execute__8daE_FK_cFv(); -extern "C" void At_Check__8daE_FK_cFi(); -extern "C" void Draw__8daE_FK_cFv(); -extern "C" void Delete__8daE_FK_cFv(); -extern "C" void setBaseMtx__8daE_FK_cFv(); -extern "C" void setEfMtx__8daE_FK_cFv(); -extern "C" static void daE_FK_Draw__FP8daE_FK_c(); -extern "C" static void daE_FK_Execute__FP8daE_FK_c(); -extern "C" static bool daE_FK_IsDelete__FP8daE_FK_c(); -extern "C" static void daE_FK_Delete__FP8daE_FK_c(); -extern "C" void CreateChk__8daE_FK_cFv(); -extern "C" void Create__8daE_FK_cFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" static void daE_FK_Create__FP10fopAc_ac_c(); -extern "C" void __dt__12daE_FK_HIO_cFv(); -extern "C" void __sinit_d_a_e_fk_cpp(); -extern "C" static void func_806BB670(); -extern "C" static void func_806BB678(); -extern "C" void __dt__4cXyzFv(); -extern "C" extern char const* const d_a_e_fk__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void create__21mDoExt_invisibleModelFP8J3DModelUc(); -extern "C" void entryDL__21mDoExt_invisibleModelFP4cXyz(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void mDoLib_project__FP3VecP3Vec(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_calcSpeed__FP10fopAc_ac_c(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void getHitSeID__12dCcD_GObjInfFUci(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void at_power_check__FP11dCcU_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 Set__4cCcSFP8cCcD_Obj(); -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 cLib_chaseF__FPfff(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 806BB6D0-806BB6D4 000000 0004+00 12/12 0/0 0/0 .rodata @3826 */ -SECTION_RODATA static f32 const lit_3826 = 100.0f; -COMPILER_STRIP_GATE(0x806BB6D0, &lit_3826); - -/* 806BB6D4-806BB6D8 000004 0004+00 4/10 0/0 0/0 .rodata @3827 */ -SECTION_RODATA static u8 const lit_3827[4] = { - 0x00, - 0x00, - 0x00, - 0x00, + /* 0x04 */ s8 id; + /* 0x08 */ f32 model_size; + /* 0x0C */ f32 alpha; // "α" + /* 0x10 */ s16 effect_alpha; // "Effectα" + /* 0x12 */ s16 generation_time; }; -COMPILER_STRIP_GATE(0x806BB6D4, &lit_3827); -/* 806BB6D8-806BB6E0 000008 0004+04 2/7 0/0 0/0 .rodata @3828 */ -SECTION_RODATA static f32 const lit_3828[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x806BB6D8, &lit_3828); +static f32 dummyFloat(int _) { + switch (_) { + case 0: + return 100.0f; + case 1: + return 0.0f; + case 2: + return 1.0f; + } +} -/* 806BB6E0-806BB6E8 000010 0008+00 0/1 0/0 0/0 .rodata @3829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3829[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x806BB6E0, &lit_3829); -#pragma pop +static f64 dummyDouble(int _) { + switch (_) { + case 0: + return 0.5; + case 1: + return 3.0; + case 2: + return 0.0; + } +} -/* 806BB6E8-806BB6F0 000018 0008+00 0/1 0/0 0/0 .rodata @3830 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3830[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x806BB6E8, &lit_3830); -#pragma pop +static f32 dummyFloat2() { + return 0.01f; +} -/* 806BB6F0-806BB6F8 000020 0008+00 0/1 0/0 0/0 .rodata @3831 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3831[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x806BB6F0, &lit_3831); -#pragma pop +/* 806B938C-806B93CC 0000EC 0040+00 1/1 0/0 0/0 .text __ct__12daE_FK_HIO_cFv */ +daE_FK_HIO_c::daE_FK_HIO_c() { + id = -1; + model_size = 0.8f; + alpha = 2.0f; + effect_alpha = 20; + generation_time = 750; +} -/* 806BB6F8-806BB6FC 000028 0004+00 0/0 0/0 0/0 .rodata @3832 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3832 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x806BB6F8, &lit_3832); -#pragma pop +/* 806B93CC-806B9514 00012C 0148+00 1/1 0/0 0/0 .text CreateHeap__8daE_FK_cFv */ +int daE_FK_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_fk", 15); + JUT_ASSERT(189, modelData != 0); + mpModelMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_fk", 12), 2, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) { + return 0; + } -/* 806BB6FC-806BB700 00002C 0004+00 1/1 0/0 0/0 .rodata @3848 */ -SECTION_RODATA static f32 const lit_3848 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x806BB6FC, &lit_3848); + if (!mInvisibleModel.create(mpModelMorf->getModel(), 1)) { + return 0; + } -/* 806BB700-806BB704 000030 0004+00 1/1 0/0 0/0 .rodata @3849 */ -SECTION_RODATA static f32 const lit_3849 = 2.0f; -COMPILER_STRIP_GATE(0x806BB700, &lit_3849); + modelData = (J3DModelData*)dComIfG_getObjectRes("E_fk", 16); + mpEffModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpEffModel == NULL) { + return 0; + } + + return 1; +} + +/* 806B9514-806B9534 000274 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* i_this) { + return ((daE_FK_c*)i_this)->CreateHeap(); +} + +/* 806B9534-806B95BC 000294 0088+00 1/1 0/0 0/0 .text initBodySph__8daE_FK_cFv */ +void daE_FK_c::initBodySph() { + const static dCcD_SrcSph ccBodySphSrc = { + { + {0x0, {{0x0, 0x0, 0x0}, {0x4000000, 0x43}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0xd, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x1, 0x0, 0x0, 0x0}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph + } // mSphAttr + }; + + mCcStts.Init(125, 0xFF, this); + for (int i = 0; i < 2; i++) { + mCcBodySph[i].Set(ccBodySphSrc); + mCcBodySph[i].SetStts(&mCcStts); + mCcBodySph[i].SetC(current.pos); + } +} + +/* 806B95BC-806B9670 00031C 00B4+00 1/1 0/0 0/0 .text initSwordSph__8daE_FK_cFv */ +void daE_FK_c::initSwordSph() { + const static dCcD_SrcSph ccSphSrc = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj + {dCcD_SE_SWORD, 0x0, 0xd, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 80.0f} // mSph + } // mSphAttr + }; + + mCcStts.Init(254, 0xFF, this); + for (int i = 0; i < 3; i++) { + mCcSwordSph[i].Set(ccSphSrc); + mCcSwordSph[i].SetStts(&mCcStts); + mCcSwordSph[i].SetC(current.pos); + mCcSwordSph[i].OffTgNoHitMark(); + mCcSwordSph[i].OffTgSetBit(); + mCcSwordSph[i].OffAtSetBit(); + } + + OnAt(); +} + +static u8 l_HIOInit; + +/* 806BB91C-806BB930 000054 0014+00 5/6 0/0 0/0 .bss l_HIO */ +static daE_FK_HIO_c l_HIO; + +/* 806B9670-806B97A4 0003D0 0134+00 1/1 0/0 0/0 .text SetBodySph__8daE_FK_cFv */ +void daE_FK_c::SetBodySph() { + cXyz pos(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVec(&pos, &pos); + mCcBodySph[0].SetC(pos); + mCcBodySph[0].SetR(400.0f * l_HIO.model_size); + dComIfG_Ccsp()->Set(&mCcBodySph[0]); + + pos.set(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(3)); + mDoMtx_stack_c::multVec(&pos, &pos); + mCcBodySph[1].SetC(pos); + mCcBodySph[1].SetR(400.0f * l_HIO.model_size); + dComIfG_Ccsp()->Set(&mCcBodySph[1]); +} + +/* 806B97A4-806B98C4 000504 0120+00 1/1 0/0 0/0 .text SetSwordSph__8daE_FK_cFv */ +void daE_FK_c::SetSwordSph() { + cXyz pos0(0.0f, 0.0f, 0.0f); + cXyz pos1(0.0f, 100.0f, -500.0f); + + pos0.set(0.0f, 350.0f + BREG_F(5), -500.0f + BREG_F(4)); + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&pos0, &pos0); + mDoMtx_stack_c::multVec(&pos1, &pos1); + + pos0 += current.pos; + mCcSwordSph[0].SetC(pos0); + mCcSwordSph[0].SetR((250.0f + BREG_F(0)) * l_HIO.model_size); + dComIfG_Ccsp()->Set(&mCcSwordSph[0]); + + mCcSwordSph[1].SetC(pos1); + mCcSwordSph[1].SetR((250.0f + BREG_F(0)) * l_HIO.model_size); + dComIfG_Ccsp()->Set(&mCcSwordSph[1]); +} + +/* 806B98C4-806B99DC 000624 0118+00 1/1 0/0 0/0 .text ctrlJoint__8daE_FK_cFP8J3DJointP8J3DModel */ +int daE_FK_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + int jnt_no = i_joint->getJntNo(); + mDoMtx_stack_c::copy(i_model->getAnmMtx(jnt_no)); + csXyz spC; + + switch (jnt_no) { + case 1: + mDoMtx_stack_c::YrotM(mHNeckRot); + break; + case 2: + mDoMtx_stack_c::YrotM(0.3f * mHNeckRot); + break; + case 12: + mDoMtx_stack_c::XrotM(mKNeckRot); + break; + } + + i_model->setAnmMtx(jnt_no, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + return 1; +} + +/* 806B99DC-806B9A28 00073C 004C+00 1/1 0/0 0/0 .text JointCallBack__FP8J3DJointi */ +static int JointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + J3DModel* model_p = j3dSys.getModel(); + daE_FK_c* a_this = (daE_FK_c*)model_p->getUserArea(); + + if (a_this != NULL) { + a_this->ctrlJoint(i_joint, model_p); + } + } + + return 1; +} + +/* 806B9A28-806B9AD8 000788 00B0+00 4/4 0/0 0/0 .text SetAnm__8daE_FK_cFiiff */ +void daE_FK_c::SetAnm(int i_anm, int i_mode, f32 i_morf, f32 i_speed) { + mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("e_fk", i_anm), i_mode, i_morf, i_speed, 0.0f, -1.0f); + mAnm = i_anm; +} + +static f32 dummyFloat3(int _) { + switch (_) { + case 0: + return 30.0f; + case 1: + return 300.0f; + } +} + +/* 806B9AD8-806B9B2C 000838 0054+00 1/1 0/0 0/0 .text Yazirushi__8daE_FK_cFv */ +void daE_FK_c::Yazirushi() { + eyePos = current.pos; + eyePos.y += 150.0f; + + attention_info.position = eyePos; + attention_info.position.y += 150.0f; +} + +/* 806B9B2C-806B9BB4 00088C 0088+00 5/5 0/0 0/0 .text SpeedSet__8daE_FK_cFv */ +void daE_FK_c::SpeedSet() { + field_0x5d2 = current.angle.y; + cLib_addCalc2(&speedF, mMaxSpeed, 0.1f, 5.0f); + cLib_addCalcAngleS2(¤t.angle.y, field_0x5d0, 2, 0x2000); + shape_angle.y = current.angle.y; + field_0x5dc = 1.0f - (5.0f / mMaxSpeed); +} + +/* 806B9BB4-806B9C14 000914 0060+00 4/4 0/0 0/0 .text TnNeckSet__8daE_FK_cFs */ +void daE_FK_c::TnNeckSet(s16 i_rot) { + cLib_addCalcAngleS2(&mKNeckRot, i_rot, 5, 0x1000); + + if (mKNeckRot > 0x3000) { + mKNeckRot = 0x3000; + } else if (mKNeckRot < -0x3000) { + mKNeckRot = -0x3000; + } +} + +/* 806B9C14-806B9C18 000974 0004+00 5/5 0/0 0/0 .text HsAngleSet__8daE_FK_cFv */ +void daE_FK_c::HsAngleSet() {} + +/* 806B9C18-806B9C1C 000978 0004+00 4/4 0/0 0/0 .text SpeedChk__8daE_FK_cFv */ +void daE_FK_c::SpeedChk() {} + +/* 806B9C1C-806B9C20 00097C 0004+00 4/4 0/0 0/0 .text SetAnmSpeed__8daE_FK_cFv */ +void daE_FK_c::SetAnmSpeed() {} + +/* 806B9C20-806B9D00 000980 00E0+00 4/4 0/0 0/0 .text TgChk__8daE_FK_cFv */ +void daE_FK_c::TgChk() { + for (int i = 0; i < 2; i++) { + if (mCcBodySph[i].ChkTgHit()) { + cCcD_Obj* hit_obj = mCcBodySph[i].GetTgHitObj(); + + mAtInfo.field_0x18 = 30; + mAtInfo.mpCollider = mCcBodySph[i].GetTgHitObj(); + At_Check(i); + + mCcTimer[0] = 15; + mCcBodySph[i].ClrTgHit(); + mAction = 3; + mMode = 0; + + mSound.startCreatureSound(Z2SE_EN_FK_DEATH, 0, -1); + } + } +} + +/* 806B9D00-806B9D7C 000A60 007C+00 1/1 0/0 0/0 .text AtChk__8daE_FK_cFv */ +void daE_FK_c::AtChk() { + for (int i = 0; i < 2; i++) { + if (mCcSwordSph[i].ChkAtHit()) { + mCcTimer[1] = 30; + mCcSwordSph[i].ClrAtHit(); + } + } +} + +/* 806B9D7C-806B9DA4 000ADC 0028+00 1/1 0/0 0/0 .text OnAt__8daE_FK_cFv */ +void daE_FK_c::OnAt() { + for (int i = 0; i < 2; i++) { + mCcSwordSph[i].OnAtSetBit(); + } +} + +static f32 dummyFloat4(int _) { + switch (_) { + case 0: + return 2000.0f; + case 1: + return 1000.0f; + case 2: + return -4000.0f; + } +} + +namespace { +/* 806BB930-806BB934 000068 0004+00 0/1 0/0 0/0 .bss s_dis__22@unnamed@d_a_e_fk_cpp@ */ +static f32 s_dis; + +/* 806BB934-806BB938 00006C 0004+00 0/1 0/0 0/0 .bss s_LinkPos__22@unnamed@d_a_e_fk_cpp@ + */ +static cXyz* s_LinkPos; + +/* 806BB938-806BB93C 000070 0002+02 1/2 0/0 0/0 .bss s_TargetAngle__22@unnamed@d_a_e_fk_cpp@ */ +static s16 s_TargetAngle; + +/* 806BB948-806BB954 000080 000C+00 0/1 0/0 0/0 .bss s_centerpos__22@unnamed@d_a_e_fk_cpp@ */ +static cXyz s_centerpos(217.0f, 1275.0f, -57.0f); + +/* 806BB960-806BB96C 000098 000C+00 0/2 0/0 0/0 .bss s_TargetPos__22@unnamed@d_a_e_fk_cpp@ */ +static cXyz s_TargetPos; + +/* 806BB96C-806BB970 0000A4 0002+02 1/3 0/0 0/0 .bss s_PointAngle__22@unnamed@d_a_e_fk_cpp@ */ +static s16 s_PointAngle; + +/* 806BB970-806BB974 0000A8 0004+00 1/3 0/0 0/0 .bss s_TargetDis__22@unnamed@d_a_e_fk_cpp@ */ +static f32 s_TargetDis; +} + +/* 806B9DA4-806B9E6C 000B04 00C8+00 1/1 0/0 0/0 .text R_MoveAction__8daE_FK_cFv */ +void daE_FK_c::R_MoveAction() { + daPy_py_c* actor = daPy_getPlayerActorClass(); + cXyz pos(current.pos); + + field_0x5d0 = s_PointAngle; + if (s_TargetDis < 4000.0f) { + mAction = 2; + mMode = 0; + } + + SpeedChk(); + SpeedSet(); + SetAnmSpeed(); + HsAngleSet(); + TnNeckSet(fopAcM_searchPlayerAngleY(this) - shape_angle.y); + TgChk(); +} + +static f32 dummyFloat5() { + return -100.0f; +} + +/* 806B9E6C-806B9F20 000BCC 00B4+00 1/1 0/0 0/0 .text StartAction__8daE_FK_cFv */ +void daE_FK_c::StartAction() { + if (cLib_chaseF(&mAlpha, 0.5f, 0.02f)) { + mAction = 1; + } + + f32 speedf = fopAcM_GetSpeedF(daPy_getPlayerActorClass()); + cXyz sp8; + + field_0x5dc = 1.0f; + + SpeedChk(); + SpeedSet(); + SetAnmSpeed(); + HsAngleSet(); + TnNeckSet(fopAcM_searchPlayerAngleY(this) - shape_angle.y); + TgChk(); +} + +/* 806B9F20-806BA004 000C80 00E4+00 1/1 0/0 0/0 .text RunAction__8daE_FK_cFv */ +void daE_FK_c::RunAction() { + switch (mAction) { + case 1: + R_MoveAction(); + cLib_chaseF(&mAlpha, 0.5f, 0.02f); + cLib_addCalc2(&mSize, l_HIO.model_size, 0.2f, 0.5f); + break; + case 2: + AttackAction(); + cLib_chaseF(&mAlpha, 0.5f, 0.02f); + cLib_addCalc2(&mSize, l_HIO.model_size, 0.2f, 0.5f); + break; + case 3: + DamageAction(); + break; + case 4: + DeathAction(); + break; + case 5: + StartAction(); + break; + } +} + +/* 806BA004-806BA024 000D64 0020+00 1/1 0/0 0/0 .text Action__8daE_FK_cFv */ +void daE_FK_c::Action() { + RunAction(); +} + +/* 806BA024-806BA188 000D84 0164+00 1/1 0/0 0/0 .text DeathAction__8daE_FK_cFv */ +void daE_FK_c::DeathAction() { + switch (mMode) { + case 0: + if (cLib_chaseF(&mAlpha, 0.2f, 0.03f + yREG_F(0))) { + fopAcM_createDisappear(this, ¤t.pos, 15, 3, field_0x564); + fopAcM_delete(this); + } + + mCcBodySph[0].OffTgSetBit(); + mCcBodySph[1].OffTgSetBit(); + + if (mpModelMorf->isStop()) { + SetAnm(9, 2, 5.0f, 1.0f); + mMode++; + mMaxSpeed = 0.0f; + mTimers[0] = 0; + } + break; + case 1: + if (cLib_chaseF(&mAlpha, 0.2f, 0.05f + yREG_F(0))) { + fopAcM_createDisappear(this, ¤t.pos, 15, 3, field_0x564); + fopAcM_delete(this); + } + break; + } + + SpeedChk(); + SpeedSet(); + SetAnmSpeed(); + HsAngleSet(); +} + +/* 806BA188-806BA24C 000EE8 00C4+00 1/1 0/0 0/0 .text DamageChk__8daE_FK_cFv */ +void daE_FK_c::DamageChk() { + daPy_py_c* player = daPy_getPlayerActorClass(); + if (health <= 0) { + SetAnm(8, 0, 5.0f, 1.0f); + mAction = 4; + mMode = 0; + attention_info.flags = 0; + + mCcBodySph[0].OffCoSetBit(); + mCcBodySph[1].OffCoSetBit(); + + if ((fopAcM_GetShapeAngle_p(player)->y - s_TargetAngle) >= 0) { + current.angle.y += 0x2000; + } else { + current.angle.y -= 0x2000; + } + } +} + +/* 806BA24C-806BA330 000FAC 00E4+00 1/1 0/0 0/0 .text DamageAction__8daE_FK_cFv */ +void daE_FK_c::DamageAction() { + switch (mMode) { + case 0: + DamageChk(); + break; + case 1: + if (mpModelMorf->isStop()) { + mAction = 1; + mMode = 0; + } + break; + } + + SpeedChk(); + SpeedSet(); + SetAnmSpeed(); + HsAngleSet(); + TnNeckSet(fopAcM_searchPlayerAngleY(this) - shape_angle.y); + TgChk(); +} + +/* 806BA330-806BA3B4 001090 0084+00 1/1 0/0 0/0 .text checkViewArea__8daE_FK_cFv */ +bool daE_FK_c::checkViewArea() { + Vec proj; + mDoLib_project(¤t.pos, &proj); + return (proj.x >= 0.0f && proj.x <= 608.0f) && (proj.y >= 0.0f && proj.y <= 448.0f); +} + +namespace { +/* 806BB974 0002+00 data_806BB974 s_HorseAngle__22@unnamed@d_a_e_fk_cpp@ */ +static s16 s_HorseAngle; + +/* 806BB976 0002+00 data_806BB976 s_AttackChk__22@unnamed@d_a_e_fk_cpp@ */ +static s16 s_AttackChk; +} + +/* 806BA3B4-806BA61C 001114 0268+00 1/1 0/0 0/0 .text AttackAction__8daE_FK_cFv */ +void daE_FK_c::AttackAction() { + switch (mMode) { + case 0: + if (mAnm != 12) { + SetAnm(12, 2, 5.0f, 1.0f); + } + + mMode++; + TnNeckSet(fopAcM_searchPlayerAngleY(this) - shape_angle.y); + field_0x5d0 = s_PointAngle; + + if (s_TargetDis < 1000.0f + aREG_F(0)) { + mMode = 1; + } + break; + case 1: + if (s_TargetDis < 1500.0f + aREG_F(0)) { + mTimers[0] = 100; + mMode++; + } + + TnNeckSet(fopAcM_searchPlayerAngleY(this) - shape_angle.y); + + if (checkViewArea()) { + field_0x5d0 = s_PointAngle; + } else { + field_0x5d0 = s_PointAngle; + + s16 temp_r0_2 = s_HorseAngle - current.angle.y; + if ((temp_r0_2 < 0x4000 && temp_r0_2 > 0) || (temp_r0_2 > -0x4000 && temp_r0_2 < 0)) { + mMode = 3; + } + } + break; + case 2: + if (!checkViewArea()) { + s16 temp_r0_3 = s_HorseAngle - current.angle.y; + if ((temp_r0_3 < 0x4000 && temp_r0_3 > 0) || (temp_r0_3 > -0x4000 && temp_r0_3 < 0)) { + mMode = 3; + } + } + + if (mTimers[0] == 0) { + SetAnm(10, 2, 5.0f, 1.0f); + mMode++; + } + + TnNeckSet(0); + break; + case 3: + if (cLib_chaseF(&mAlpha, 0.2f, 0.1f + yREG_F(0))) { + fopAcM_delete(this); + } + + TnNeckSet(0); + break; + } + + SpeedSet(); + HsAngleSet(); + TgChk(); + AtChk(); +} + +/* 806BA61C-806BA6EC 00137C 00D0+00 1/1 0/0 0/0 .text UpDown__8daE_FK_cFv */ +void daE_FK_c::UpDown() { + switch (mUpDownMode) { + case 0: + if (mTimers[2] == 0) { + mTimers[2] = 15; + mUpDownMode++; + } + cLib_chaseF(&speed.y, 3.5f + yREG_F(3), 0.5f + yREG_F(5)); + break; + case 1: + if (mTimers[2] == 0) { + mTimers[2] = 15; + mUpDownMode--; + } + cLib_chaseF(&speed.y, -3.5f - yREG_F(3), 0.5f + yREG_F(5)); + break; + } + + field_0x5e8 += speed.y; + current.pos.y += field_0x5e8; +} + +/* 806BA6EC-806BABB8 00144C 04CC+00 1/1 0/0 0/0 .text Execute__8daE_FK_cFv */ +int daE_FK_c::Execute() { + if (dComIfGp_event_runCheck()) { + return 1; + } + + mSound.startCreatureSoundLevel(Z2SE_EN_FK_MOVE, 0, -1); + + daPy_py_c* player = daPy_getPlayerActorClass(); + s_LinkPos = &fopAcM_GetPosition(player); + s_TargetAngle = cLib_targetAngleY(¤t.pos, s_LinkPos); + s_dis = current.pos.abs(*s_LinkPos); + + daHorse_c* horse = dComIfGp_getHorseActor(); + if (horse != NULL) { + s_HorseAngle = horse->current.angle.y; + } + + cXyz targetPos(field_0x60c, 0.0f, 0.0f); + cLib_offsetPos(&targetPos, s_LinkPos, s_TargetAngle, &targetPos); + s_TargetPos = targetPos; + + s_PointAngle = cLib_targetAngleY(¤t.pos, &s_TargetPos); + s_TargetDis = current.pos.absXZ(s_TargetPos); + + int i; + for (i = 0; i < 4; i++) { + mTimers[i]--; + if (mTimers[i] <= 0) { + mTimers[i] = 0; + } + } + + for (i = 0; i < 2; i++) { + mCcTimer[i]--; + if (mCcTimer[i] <= 0) { + mCcTimer[i] = 0; + } + } + + Yazirushi(); + Action(); + + if (mTimers[1] == 0) { + mAction = 4; + mMode = 0; + attention_info.flags = 0; + mCcBodySph[0].OffCoSetBit(); + mCcBodySph[1].OffCoSetBit(); + mTimers[1] = 1000; + } + + setBaseMtx(); + setEfMtx(); + + if (mCcTimer[0] == 0) { + SetBodySph(); + SetSwordSph(); + } + + mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + fopAcM_calcSpeed(this); + + cXyz* pos_p = fopAcM_GetPosition_p(this); + cXyz* speed_p = fopAcM_GetSpeed_p(this); + current.pos.x += speed_p->x; + current.pos.y += speed_p->y; + current.pos.z += speed_p->z; + + cXyz sp14(current.pos.x, 100.0f + current.pos.y, current.pos.z); + if (fopAcM_gc_c::gndCheck(&sp14)) { + current.pos.y = 50.0f + fopAcM_gc_c::getGroundY(); + } + + UpDown(); + mAcch.CrrPos(dComIfG_Bgsp()); + return 1; +} + +/* 806BABB8-806BACEC 001918 0134+00 1/1 0/0 0/0 .text At_Check__8daE_FK_cFi */ +void daE_FK_c::At_Check(int i_sphIdx) { + mAtInfo.mpCollider = mCcBodySph[i_sphIdx].GetTgHitObj(); + mAtInfo.mpActor = at_power_check(&mAtInfo); + + if (mAtInfo.mpActor != 0) { + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + mAtInfo.mAttackPower = 0; + } + + if ((s16)mAtInfo.mAttackPower > 0) { + health -= (s16)mAtInfo.mAttackPower; + } + + int unk_r29 = 0; + + if (mAtInfo.mAttackPower != 0) { + mAtInfo.mHitStatus = 2; + unk_r29 = 5; + } else { + unk_r29 = 2; + } + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_MIDNA_LOCK)) { + unk_r29 = 0; + } + + u8 at_se = ((dCcD_GObjInf*)mAtInfo.mpCollider)->GetAtSe(); + u32 var_r28 = 0x1E; + if (mAtInfo.mHitStatus == 1) { + var_r28 = 0x1F; + } else if (mAtInfo.mHitStatus == 2) { + var_r28 = 0x20; + } + + if (mAtInfo.mpSound != NULL) { + if (mAtInfo.field_0x18 != 0) { + mAtInfo.mpSound->startCollisionSE(dCcD_GObjInf::getHitSeID(at_se, 0), mAtInfo.field_0x18); + } else { + mAtInfo.mpSound->startCollisionSE(dCcD_GObjInf::getHitSeID(at_se, 0), var_r28); + } + } + + if ((mAtInfo.mHitType == 1 || mAtInfo.mpCollider->ChkAtType(AT_TYPE_THROW_OBJ)) && mAtInfo.mpCollider->ChkAtType(AT_TYPE_THROW_OBJ)) { + unk_r29 = 4; + } + } +} + +/* 806BACEC-806BADB4 001A4C 00C8+00 1/1 0/0 0/0 .text Draw__8daE_FK_cFv */ +int daE_FK_c::Draw() { + J3DModel* model_p = mpModelMorf->getModel(); + + g_env_light.settingTevStruct(7, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model_p, &tevStr); + + model_p->getModelData()->getMaterialNodePointer(0)->getTevKColor(3)->a = 255.0f * mAlpha * l_HIO.alpha; + mInvisibleModel.entryDL(NULL); + + cXyz sp8; + sp8.set(current.pos.x, 100.0f + current.pos.y, current.pos.z); + return 1; +} + +/* 806BADB4-806BAE1C 001B14 0068+00 1/1 0/0 0/0 .text Delete__8daE_FK_cFv */ +int daE_FK_c::Delete() { + dComIfG_resDelete(&mPhase, "E_fk"); + + if (mHIOInit) { + l_HIOInit = FALSE; + mDoHIO_DELETE_CHILD(l_HIO.id); + } + + mSound.deleteObject(); + return 1; +} + +/* 806BAE1C-806BAEB0 001B7C 0094+00 1/1 0/0 0/0 .text setBaseMtx__8daE_FK_cFv */ +void daE_FK_c::setBaseMtx() { + cXyz sp8(0.0f, 50.0f, 0.0f); + scale.set(mSize, mSize, mSize); + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(sp8); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(scale); + + mpModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + mpModelMorf->modelCalc(); +} + +/* 806BAEB0-806BAF0C 001C10 005C+00 1/1 0/0 0/0 .text setEfMtx__8daE_FK_cFv */ +void daE_FK_c::setEfMtx() { + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0x18)); + mpEffModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} + +/* 806BAF0C-806BAF2C 001C6C 0020+00 1/0 0/0 0/0 .text daE_FK_Draw__FP8daE_FK_c */ +static int daE_FK_Draw(daE_FK_c* i_this) { + return i_this->Draw(); +} + +/* 806BAF2C-806BAF4C 001C8C 0020+00 2/1 0/0 0/0 .text daE_FK_Execute__FP8daE_FK_c */ +static int daE_FK_Execute(daE_FK_c* i_this) { + return i_this->Execute(); +} + +/* 806BAF4C-806BAF54 001CAC 0008+00 1/0 0/0 0/0 .text daE_FK_IsDelete__FP8daE_FK_c */ +static int daE_FK_IsDelete(daE_FK_c* i_this) { + return 1; +} + +/* 806BAF54-806BAF74 001CB4 0020+00 1/0 0/0 0/0 .text daE_FK_Delete__FP8daE_FK_c */ +static int daE_FK_Delete(daE_FK_c* i_this) { + return i_this->Delete(); +} + +/* 806BAF74-806BB004 001CD4 0090+00 1/1 0/0 0/0 .text CreateChk__8daE_FK_cFv */ +void daE_FK_c::CreateChk() { + u8 arg0 = fopAcM_GetParam(this) & 0xF; + if (arg0 == 0) { + field_0x60c = 0.0f; + mMaxSpeed = 100.0f; + } else if (arg0 == 1) { + mMaxSpeed = 85.0f; + field_0x60c = 0.0f; + } else if (arg0 == 2) { + mMaxSpeed = 75.0f; + field_0x60c = 0.0f; + } else if (arg0 == 3) { + mMaxSpeed = 85.0f; + field_0x60c = 0.0f; + } else { + mMaxSpeed = 100.0f; + field_0x60c = 0.0f; + } +} + +/* 806BB004-806BB324 001D64 0320+00 1/1 0/0 0/0 .text Create__8daE_FK_cFv */ +int daE_FK_c::Create() { + fopAcM_SetupActor(this, daE_FK_c); + + int phase_state = dComIfG_resLoad(&mPhase, "E_fk"); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("E_FK PARAM %x\n", fopAcM_GetParam(this)); + if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x1C20)) { + return cPhs_ERROR_e; + } + + if (!l_HIOInit) { + l_HIOInit = TRUE; + mHIOInit = TRUE; + l_HIO.id = mDoHIO_CREATE_CHILD("ファントム騎馬兵", &l_HIO); + } + + fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(this, -700.0f, 0.0f, -700.0f); + fopAcM_SetMax(this, 700.0f, 700.0f, 700.0f); + + CreateChk(); + + gravity = 0.0f; + attention_info.flags = 0; + + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + + mSound.init(¤t.pos, &eyePos, 3, 1); + mAtInfo.mpSound = &mSound; + mAtInfo.mPowerType = 1; + + initBodySph(); + initSwordSph(); + + fopAcM_setCullSizeFar(this, 3.0f); + mSound.setEnemyName("E_FK"); + scale.set(0.0f, 0.0f, 0.0f); + mSize = 0.0f; + + J3DModel* model_p = mpModelMorf->getModel(); + model_p->setUserArea((u32)this); + + for (u16 i = 0; i < model_p->getModelData()->getJointNum(); i++) { + if (i != 0) { + model_p->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack); + } + } + + health = 10; + + cXyz sp10(current.pos.x, 100.0f + current.pos.y, current.pos.z); + if (fopAcM_gc_c::gndCheck(&sp10)) { + current.pos.y = fopAcM_gc_c::getGroundY(); + } + + mAction = 1; + mMode = 0; + SetAnm(12, 2, 1.0f, 1.0f); + mTimers[1] = 1000; + + daE_FK_Execute(this); + } + + return phase_state; +} + +/* 806BB574-806BB594 0022D4 0020+00 1/0 0/0 0/0 .text daE_FK_Create__FP10fopAc_ac_c */ +static int daE_FK_Create(fopAc_ac_c* i_this) { + return ((daE_FK_c*)i_this)->Create(); +} + +AUDIO_INSTANCES /* 806BB82C-806BB84C -00001 0020+00 1/0 0/0 0/0 .data l_daE_FK_Method */ static actor_method_class l_daE_FK_Method = { - (process_method_func)daE_FK_Create__FP10fopAc_ac_c, - (process_method_func)daE_FK_Delete__FP8daE_FK_c, - (process_method_func)daE_FK_Execute__FP8daE_FK_c, - (process_method_func)daE_FK_IsDelete__FP8daE_FK_c, - (process_method_func)daE_FK_Draw__FP8daE_FK_c, + (process_method_func)daE_FK_Create, + (process_method_func)daE_FK_Delete, + (process_method_func)daE_FK_Execute, + (process_method_func)daE_FK_IsDelete, + (process_method_func)daE_FK_Draw, }; /* 806BB84C-806BB87C -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_FK */ @@ -246,844 +907,3 @@ extern actor_process_profile_definition g_profile_E_FK = { fopAc_ENEMY_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 806BB87C-806BB888 000050 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 806BB888-806BB894 00005C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 806BB894-806BB8B8 000068 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_806BB678, - (void*)NULL, - (void*)NULL, - (void*)func_806BB670, -}; - -/* 806BB8B8-806BB8C4 00008C 000C+00 2/2 0/0 0/0 .data __vt__12daE_FK_HIO_c */ -SECTION_DATA extern void* __vt__12daE_FK_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_FK_HIO_cFv, -}; - -/* 806B938C-806B93CC 0000EC 0040+00 1/1 0/0 0/0 .text __ct__12daE_FK_HIO_cFv */ -daE_FK_HIO_c::daE_FK_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB81C-806BB81C 00014C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_806BB81C = "E_fk"; -#pragma pop - -/* 806B93CC-806B9514 00012C 0148+00 1/1 0/0 0/0 .text CreateHeap__8daE_FK_cFv */ -void daE_FK_c::CreateHeap() { - // NONMATCHING -} - -/* 806B9514-806B9534 000274 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB704-806BB744 000034 0040+00 1/1 0/0 0/0 .rodata ccBodySphSrc$3886 */ -const static dCcD_SrcSph ccBodySphSrc = { - { - {0x0, {{0x0, 0x0, 0x0}, {0x4000000, 0x43}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0xd, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x1, 0x0, 0x0, 0x0}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 100.0f} // mSph - } // mSphAttr -}; - -/* 806B9534-806B95BC 000294 0088+00 1/1 0/0 0/0 .text initBodySph__8daE_FK_cFv */ -void daE_FK_c::initBodySph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB744-806BB784 000074 0040+00 1/1 0/0 0/0 .rodata ccSphSrc$3898 */ -const static dCcD_SrcSph ccSphSrc = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj - {dCcD_SE_SWORD, 0x0, 0xd, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 80.0f} // mSph - } // mSphAttr -}; - -/* 806B95BC-806B9670 00031C 00B4+00 1/1 0/0 0/0 .text initSwordSph__8daE_FK_cFv */ -void daE_FK_c::initSwordSph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB784-806BB788 0000B4 0004+00 1/1 0/0 0/0 .rodata @3951 */ -SECTION_RODATA static f32 const lit_3951 = 400.0f; -COMPILER_STRIP_GATE(0x806BB784, &lit_3951); - -/* 806BB910-806BB91C 000048 000C+00 0/1 0/0 0/0 .bss @3843 */ -#pragma push -#pragma force_active on -static u8 lit_3843[12]; -#pragma pop - -/* 806BB91C-806BB930 000054 0014+00 5/6 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[20]; - -/* 806B9670-806B97A4 0003D0 0134+00 1/1 0/0 0/0 .text SetBodySph__8daE_FK_cFv */ -void daE_FK_c::SetBodySph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB788-806BB78C 0000B8 0004+00 0/1 0/0 0/0 .rodata @3972 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3972 = -500.0f; -COMPILER_STRIP_GATE(0x806BB788, &lit_3972); -#pragma pop - -/* 806BB78C-806BB790 0000BC 0004+00 0/1 0/0 0/0 .rodata @3973 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3973 = 350.0f; -COMPILER_STRIP_GATE(0x806BB78C, &lit_3973); -#pragma pop - -/* 806BB790-806BB794 0000C0 0004+00 0/1 0/0 0/0 .rodata @3974 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3974 = 250.0f; -COMPILER_STRIP_GATE(0x806BB790, &lit_3974); -#pragma pop - -/* 806B97A4-806B98C4 000504 0120+00 1/1 0/0 0/0 .text SetSwordSph__8daE_FK_cFv */ -void daE_FK_c::SetSwordSph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB794-806BB798 0000C4 0004+00 1/1 0/0 0/0 .rodata @4008 */ -SECTION_RODATA static f32 const lit_4008 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x806BB794, &lit_4008); - -/* 806BB798-806BB7A0 0000C8 0008+00 1/1 0/0 0/0 .rodata @4010 */ -SECTION_RODATA static u8 const lit_4010[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x806BB798, &lit_4010); - -/* 806B98C4-806B99DC 000624 0118+00 1/1 0/0 0/0 .text ctrlJoint__8daE_FK_cFP8J3DJointP8J3DModel */ -void daE_FK_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING -} - -/* 806B99DC-806B9A28 00073C 004C+00 1/1 0/0 0/0 .text JointCallBack__FP8J3DJointi */ -static void JointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7A0-806BB7A4 0000D0 0004+00 1/1 0/0 0/0 .rodata @4037 */ -SECTION_RODATA static f32 const lit_4037 = -1.0f; -COMPILER_STRIP_GATE(0x806BB7A0, &lit_4037); - -/* 806BB81C-806BB81C 00014C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_806BB821 = "e_fk"; -#pragma pop - -/* 806B9A28-806B9AD8 000788 00B0+00 4/4 0/0 0/0 .text SetAnm__8daE_FK_cFiiff */ -void daE_FK_c::SetAnm(int param_0, int param_1, f32 param_2, f32 param_3) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7A4-806BB7A8 0000D4 0004+00 0/0 0/0 0/0 .rodata @4067 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4067 = 30.0f; -COMPILER_STRIP_GATE(0x806BB7A4, &lit_4067); -#pragma pop - -/* 806BB7A8-806BB7AC 0000D8 0004+00 0/0 0/0 0/0 .rodata @4068 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4068 = 300.0f; -COMPILER_STRIP_GATE(0x806BB7A8, &lit_4068); -#pragma pop - -/* 806BB7AC-806BB7B0 0000DC 0004+00 1/1 0/0 0/0 .rodata @4129 */ -SECTION_RODATA static f32 const lit_4129 = 150.0f; -COMPILER_STRIP_GATE(0x806BB7AC, &lit_4129); - -/* 806B9AD8-806B9B2C 000838 0054+00 1/1 0/0 0/0 .text Yazirushi__8daE_FK_cFv */ -void daE_FK_c::Yazirushi() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7B0-806BB7B4 0000E0 0004+00 0/2 0/0 0/0 .rodata @4138 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4138 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x806BB7B0, &lit_4138); -#pragma pop - -/* 806BB7B4-806BB7B8 0000E4 0004+00 1/4 0/0 0/0 .rodata @4139 */ -SECTION_RODATA static f32 const lit_4139 = 5.0f; -COMPILER_STRIP_GATE(0x806BB7B4, &lit_4139); - -/* 806B9B2C-806B9BB4 00088C 0088+00 5/5 0/0 0/0 .text SpeedSet__8daE_FK_cFv */ -void daE_FK_c::SpeedSet() { - // NONMATCHING -} - -/* 806B9BB4-806B9C14 000914 0060+00 4/4 0/0 0/0 .text TnNeckSet__8daE_FK_cFs */ -void daE_FK_c::TnNeckSet(s16 param_0) { - // NONMATCHING -} - -/* 806B9C14-806B9C18 000974 0004+00 5/5 0/0 0/0 .text HsAngleSet__8daE_FK_cFv */ -void daE_FK_c::HsAngleSet() { - /* empty function */ -} - -/* 806B9C18-806B9C1C 000978 0004+00 4/4 0/0 0/0 .text SpeedChk__8daE_FK_cFv */ -void daE_FK_c::SpeedChk() { - /* empty function */ -} - -/* 806B9C1C-806B9C20 00097C 0004+00 4/4 0/0 0/0 .text SetAnmSpeed__8daE_FK_cFv */ -void daE_FK_c::SetAnmSpeed() { - /* empty function */ -} - -/* 806B9C20-806B9D00 000980 00E0+00 4/4 0/0 0/0 .text TgChk__8daE_FK_cFv */ -void daE_FK_c::TgChk() { - // NONMATCHING -} - -/* 806B9D00-806B9D7C 000A60 007C+00 1/1 0/0 0/0 .text AtChk__8daE_FK_cFv */ -void daE_FK_c::AtChk() { - // NONMATCHING -} - -/* 806B9D7C-806B9DA4 000ADC 0028+00 1/1 0/0 0/0 .text OnAt__8daE_FK_cFv */ -void daE_FK_c::OnAt() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7B8-806BB7BC 0000E8 0004+00 0/0 0/0 0/0 .rodata @4234 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4234 = 2000.0f; -COMPILER_STRIP_GATE(0x806BB7B8, &lit_4234); -#pragma pop - -/* 806BB7BC-806BB7C0 0000EC 0004+00 0/1 0/0 0/0 .rodata @4235 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4235 = 1000.0f; -COMPILER_STRIP_GATE(0x806BB7BC, &lit_4235); -#pragma pop - -/* 806BB7C0-806BB7C4 0000F0 0004+00 0/0 0/0 0/0 .rodata @4236 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4236 = -4000.0f; -COMPILER_STRIP_GATE(0x806BB7C0, &lit_4236); -#pragma pop - -/* 806BB7C4-806BB7C8 0000F4 0004+00 1/1 0/0 0/0 .rodata @4250 */ -SECTION_RODATA static f32 const lit_4250 = 4000.0f; -COMPILER_STRIP_GATE(0x806BB7C4, &lit_4250); - -/* 806BB930-806BB934 000068 0004+00 0/1 0/0 0/0 .bss s_dis__22@unnamed@d_a_e_fk_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_806BB930[4]; -#pragma pop - -/* 806BB934-806BB938 00006C 0004+00 0/1 0/0 0/0 .bss s_LinkPos__22@unnamed@d_a_e_fk_cpp@ - */ -#pragma push -#pragma force_active on -static u8 data_806BB934[4]; -#pragma pop - -/* 806BB938-806BB93C 000070 0002+02 1/2 0/0 0/0 .bss s_TargetAngle__22@unnamed@d_a_e_fk_cpp@ */ -static u8 data_806BB938[2 + 2 /* padding */]; - -/* 806BB93C-806BB948 000074 000C+00 0/1 0/0 0/0 .bss @3850 */ -#pragma push -#pragma force_active on -static u8 lit_3850[12]; -#pragma pop - -/* 806BB948-806BB954 000080 000C+00 0/1 0/0 0/0 .bss s_centerpos__22@unnamed@d_a_e_fk_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_806BB948[12]; -#pragma pop - -/* 806BB954-806BB960 00008C 000C+00 0/1 0/0 0/0 .bss @3851 */ -#pragma push -#pragma force_active on -static u8 lit_3851[12]; -#pragma pop - -/* 806BB960-806BB96C 000098 000C+00 0/2 0/0 0/0 .bss s_TargetPos__22@unnamed@d_a_e_fk_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_806BB960[12]; -#pragma pop - -/* 806BB96C-806BB970 0000A4 0002+02 1/3 0/0 0/0 .bss s_PointAngle__22@unnamed@d_a_e_fk_cpp@ */ -static u8 data_806BB96C[2 + 2 /* padding */]; - -/* 806BB970-806BB974 0000A8 0004+00 1/3 0/0 0/0 .bss s_TargetDis__22@unnamed@d_a_e_fk_cpp@ */ -static u8 data_806BB970[4]; - -/* 806B9DA4-806B9E6C 000B04 00C8+00 1/1 0/0 0/0 .text R_MoveAction__8daE_FK_cFv */ -void daE_FK_c::R_MoveAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7C8-806BB7CC 0000F8 0004+00 0/0 0/0 0/0 .rodata @4265 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4265 = -100.0f; -COMPILER_STRIP_GATE(0x806BB7C8, &lit_4265); -#pragma pop - -/* 806BB7CC-806BB7D0 0000FC 0004+00 0/3 0/0 0/0 .rodata @4281 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4281 = 0.5f; -COMPILER_STRIP_GATE(0x806BB7CC, &lit_4281); -#pragma pop - -/* 806BB7D0-806BB7D4 000100 0004+00 0/2 0/0 0/0 .rodata @4282 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4282 = 1.0f / 50.0f; -COMPILER_STRIP_GATE(0x806BB7D0, &lit_4282); -#pragma pop - -/* 806B9E6C-806B9F20 000BCC 00B4+00 1/1 0/0 0/0 .text StartAction__8daE_FK_cFv */ -void daE_FK_c::StartAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7D4-806BB7D8 000104 0004+00 0/3 0/0 0/0 .rodata @4293 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4293 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x806BB7D4, &lit_4293); -#pragma pop - -/* 806B9F20-806BA004 000C80 00E4+00 1/1 0/0 0/0 .text RunAction__8daE_FK_cFv */ -void daE_FK_c::RunAction() { - // NONMATCHING -} - -/* 806BA004-806BA024 000D64 0020+00 1/1 0/0 0/0 .text Action__8daE_FK_cFv */ -void daE_FK_c::Action() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7D8-806BB7DC 000108 0004+00 0/1 0/0 0/0 .rodata @4325 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4325 = 3.0f / 100.0f; -COMPILER_STRIP_GATE(0x806BB7D8, &lit_4325); -#pragma pop - -/* 806BB7DC-806BB7E0 00010C 0004+00 0/1 0/0 0/0 .rodata @4326 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4326 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x806BB7DC, &lit_4326); -#pragma pop - -/* 806BA024-806BA188 000D84 0164+00 1/1 0/0 0/0 .text DeathAction__8daE_FK_cFv */ -void daE_FK_c::DeathAction() { - // NONMATCHING -} - -/* 806BA188-806BA24C 000EE8 00C4+00 1/1 0/0 0/0 .text DamageChk__8daE_FK_cFv */ -void daE_FK_c::DamageChk() { - // NONMATCHING -} - -/* 806BA24C-806BA330 000FAC 00E4+00 1/1 0/0 0/0 .text DamageAction__8daE_FK_cFv */ -void daE_FK_c::DamageAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7E0-806BB7E4 000110 0004+00 0/1 0/0 0/0 .rodata @4376 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4376 = 608.0f; -COMPILER_STRIP_GATE(0x806BB7E0, &lit_4376); -#pragma pop - -/* 806BB7E4-806BB7E8 000114 0004+00 0/1 0/0 0/0 .rodata @4377 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4377 = 448.0f; -COMPILER_STRIP_GATE(0x806BB7E4, &lit_4377); -#pragma pop - -/* 806BA330-806BA3B4 001090 0084+00 1/1 0/0 0/0 .text checkViewArea__8daE_FK_cFv */ -void daE_FK_c::checkViewArea() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7E8-806BB7EC 000118 0004+00 0/1 0/0 0/0 .rodata @4418 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4418 = 1500.0f; -COMPILER_STRIP_GATE(0x806BB7E8, &lit_4418); -#pragma pop - -/* 806BB974-806BB978 -00001 0004+00 0/2 0/0 0/0 .bss None */ -#pragma push -#pragma force_active on -/* 806BB974 0002+00 data_806BB974 s_HorseAngle__22@unnamed@d_a_e_fk_cpp@ */ -/* 806BB976 0002+00 data_806BB976 s_AttackChk__22@unnamed@d_a_e_fk_cpp@ */ -static u8 struct_806BB974[4]; -#pragma pop - -/* 806BA3B4-806BA61C 001114 0268+00 1/1 0/0 0/0 .text AttackAction__8daE_FK_cFv */ -void daE_FK_c::AttackAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7EC-806BB7F0 00011C 0004+00 0/1 0/0 0/0 .rodata @4430 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4430 = 3.5f; -COMPILER_STRIP_GATE(0x806BB7EC, &lit_4430); -#pragma pop - -/* 806BB7F0-806BB7F4 000120 0004+00 0/1 0/0 0/0 .rodata @4431 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4431 = -3.5f; -COMPILER_STRIP_GATE(0x806BB7F0, &lit_4431); -#pragma pop - -/* 806BA61C-806BA6EC 00137C 00D0+00 1/1 0/0 0/0 .text UpDown__8daE_FK_cFv */ -void daE_FK_c::UpDown() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7F4-806BB7F8 000124 0004+00 1/2 0/0 0/0 .rodata @4556 */ -SECTION_RODATA static f32 const lit_4556 = 50.0f; -COMPILER_STRIP_GATE(0x806BB7F4, &lit_4556); - -/* 806BA6EC-806BABB8 00144C 04CC+00 1/1 0/0 0/0 .text Execute__8daE_FK_cFv */ -void daE_FK_c::Execute() { - // NONMATCHING -} - -/* 806BABB8-806BACEC 001918 0134+00 1/1 0/0 0/0 .text At_Check__8daE_FK_cFi */ -void daE_FK_c::At_Check(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7F8-806BB7FC 000128 0004+00 1/1 0/0 0/0 .rodata @4618 */ -SECTION_RODATA static f32 const lit_4618 = 255.0f; -COMPILER_STRIP_GATE(0x806BB7F8, &lit_4618); - -/* 806BACEC-806BADB4 001A4C 00C8+00 1/1 0/0 0/0 .text Draw__8daE_FK_cFv */ -void daE_FK_c::Draw() { - // NONMATCHING -} - -/* 806BADB4-806BAE1C 001B14 0068+00 1/1 0/0 0/0 .text Delete__8daE_FK_cFv */ -void daE_FK_c::Delete() { - // NONMATCHING -} - -/* 806BAE1C-806BAEB0 001B7C 0094+00 1/1 0/0 0/0 .text setBaseMtx__8daE_FK_cFv */ -void daE_FK_c::setBaseMtx() { - // NONMATCHING -} - -/* 806BAEB0-806BAF0C 001C10 005C+00 1/1 0/0 0/0 .text setEfMtx__8daE_FK_cFv */ -void daE_FK_c::setEfMtx() { - // NONMATCHING -} - -/* 806BAF0C-806BAF2C 001C6C 0020+00 1/0 0/0 0/0 .text daE_FK_Draw__FP8daE_FK_c */ -static void daE_FK_Draw(daE_FK_c* param_0) { - // NONMATCHING -} - -/* 806BAF2C-806BAF4C 001C8C 0020+00 2/1 0/0 0/0 .text daE_FK_Execute__FP8daE_FK_c */ -static void daE_FK_Execute(daE_FK_c* param_0) { - // NONMATCHING -} - -/* 806BAF4C-806BAF54 001CAC 0008+00 1/0 0/0 0/0 .text daE_FK_IsDelete__FP8daE_FK_c */ -static bool daE_FK_IsDelete(daE_FK_c* param_0) { - return true; -} - -/* 806BAF54-806BAF74 001CB4 0020+00 1/0 0/0 0/0 .text daE_FK_Delete__FP8daE_FK_c */ -static void daE_FK_Delete(daE_FK_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB7FC-806BB800 00012C 0004+00 0/1 0/0 0/0 .rodata @4707 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4707 = 85.0f; -COMPILER_STRIP_GATE(0x806BB7FC, &lit_4707); -#pragma pop - -/* 806BB800-806BB804 000130 0004+00 0/1 0/0 0/0 .rodata @4708 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4708 = 75.0f; -COMPILER_STRIP_GATE(0x806BB800, &lit_4708); -#pragma pop - -/* 806BAF74-806BB004 001CD4 0090+00 1/1 0/0 0/0 .text CreateChk__8daE_FK_cFv */ -void daE_FK_c::CreateChk() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB804-806BB808 000134 0004+00 0/1 0/0 0/0 .rodata @4818 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4818 = -700.0f; -COMPILER_STRIP_GATE(0x806BB804, &lit_4818); -#pragma pop - -/* 806BB808-806BB80C 000138 0004+00 0/1 0/0 0/0 .rodata @4819 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4819 = 700.0f; -COMPILER_STRIP_GATE(0x806BB808, &lit_4819); -#pragma pop - -/* 806BB80C-806BB810 00013C 0004+00 0/1 0/0 0/0 .rodata @4820 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4820 = 3.0f; -COMPILER_STRIP_GATE(0x806BB80C, &lit_4820); -#pragma pop - -/* 806BB81C-806BB81C 00014C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_806BB826 = "E_FK"; -#pragma pop - -/* 806BB004-806BB324 001D64 0320+00 1/1 0/0 0/0 .text Create__8daE_FK_cFv */ -void daE_FK_c::Create() { - // NONMATCHING -} - -/* 806BB324-806BB394 002084 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 806BB394-806BB460 0020F4 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* 806BB460-806BB4E4 0021C0 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} - -/* 806BB4E4-806BB52C 002244 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 806BB52C-806BB574 00228C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 806BB574-806BB594 0022D4 0020+00 1/0 0/0 0/0 .text daE_FK_Create__FP10fopAc_ac_c */ -static void daE_FK_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 806BB594-806BB5DC 0022F4 0048+00 2/1 0/0 0/0 .text __dt__12daE_FK_HIO_cFv */ -daE_FK_HIO_c::~daE_FK_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB810-806BB814 000140 0004+00 0/1 0/0 0/0 .rodata @4929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4929 = 217.0f; -COMPILER_STRIP_GATE(0x806BB810, &lit_4929); -#pragma pop - -/* 806BB814-806BB818 000144 0004+00 0/1 0/0 0/0 .rodata @4930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4930 = 1275.0f; -COMPILER_STRIP_GATE(0x806BB814, &lit_4930); -#pragma pop - -/* 806BB818-806BB81C 000148 0004+00 0/1 0/0 0/0 .rodata @4931 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4931 = -57.0f; -COMPILER_STRIP_GATE(0x806BB818, &lit_4931); -#pragma pop - -/* 806BB5DC-806BB670 00233C 0094+00 0/0 1/0 0/0 .text __sinit_d_a_e_fk_cpp */ -void __sinit_d_a_e_fk_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x806BB5DC, __sinit_d_a_e_fk_cpp); -#pragma pop - -/* 806BB670-806BB678 0023D0 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_806BB670() { - // NONMATCHING -} - -/* 806BB678-806BB680 0023D8 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_806BB678() { - // NONMATCHING -} - -/* 806BB680-806BB6BC 0023E0 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806BB978-806BB97C 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_806BB978[4]; -#pragma pop - -/* 806BB97C-806BB980 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_806BB97C[4]; -#pragma pop - -/* 806BB980-806BB984 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB980[4]; -#pragma pop - -/* 806BB984-806BB988 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB984[4]; -#pragma pop - -/* 806BB988-806BB98C 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_806BB988[4]; -#pragma pop - -/* 806BB98C-806BB990 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_806BB98C[4]; -#pragma pop - -/* 806BB990-806BB994 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_806BB990[4]; -#pragma pop - -/* 806BB994-806BB998 0000CC 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_806BB994[4]; -#pragma pop - -/* 806BB998-806BB99C 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_806BB998[4]; -#pragma pop - -/* 806BB99C-806BB9A0 0000D4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_806BB99C[4]; -#pragma pop - -/* 806BB9A0-806BB9A4 0000D8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB9A0[4]; -#pragma pop - -/* 806BB9A4-806BB9A8 0000DC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB9A4[4]; -#pragma pop - -/* 806BB9A8-806BB9AC 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB9A8[4]; -#pragma pop - -/* 806BB9AC-806BB9B0 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_806BB9AC[4]; -#pragma pop - -/* 806BB9B0-806BB9B4 0000E8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_806BB9B0[4]; -#pragma pop - -/* 806BB9B4-806BB9B8 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_806BB9B4[4]; -#pragma pop - -/* 806BB9B8-806BB9BC 0000F0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_806BB9B8[4]; -#pragma pop - -/* 806BB9BC-806BB9C0 0000F4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_806BB9BC[4]; -#pragma pop - -/* 806BB9C0-806BB9C4 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_806BB9C0[4]; -#pragma pop - -/* 806BB9C4-806BB9C8 0000FC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB9C4[4]; -#pragma pop - -/* 806BB9C8-806BB9CC 000100 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_806BB9C8[4]; -#pragma pop - -/* 806BB9CC-806BB9D0 000104 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_806BB9CC[4]; -#pragma pop - -/* 806BB9D0-806BB9D4 000108 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_806BB9D0[4]; -#pragma pop - -/* 806BB9D4-806BB9D8 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_806BB9D4[4]; -#pragma pop - -/* 806BB9D8-806BB9DC 000110 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_806BB9D8[4]; -#pragma pop - -/* 806BB81C-806BB81C 00014C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */