summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2025-08-19 02:19:01 -0400
committerGitHub <noreply@github.com>2025-08-19 09:19:01 +0300
commitaaa9cb22ef333c3444983fe4bc3f488b0ee542a7 (patch)
treef17ceecb589b361438c9232a58acb1148d0c885e /src
parenta23984e74d1dc4fb1ed9961d80b210683e93e0a7 (diff)
d_a_e_yr equivalent (#2591)
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_e_yr.cpp3608
1 files changed, 2434 insertions, 1174 deletions
diff --git a/src/d/actor/d_a_e_yr.cpp b/src/d/actor/d_a_e_yr.cpp
index a323209df2..43e7d61955 100644
--- a/src/d/actor/d_a_e_yr.cpp
+++ b/src/d/actor/d_a_e_yr.cpp
@@ -1,1283 +1,2543 @@
/**
* @file d_a_e_yr.cpp
- *
+ *
*/
#include "d/actor/d_a_e_yr.h"
+#include "d/actor/d_a_horse.h"
#include "d/d_cc_d.h"
-#include "dol2asm.h"
+#include "d/d_path.h"
UNK_REL_DATA;
#include "f_op/f_op_actor_enemy.h"
-
-//
-// Forward References:
-//
-
-extern "C" static void nodeCallBack__FP8J3DJointi();
-extern "C" static void yr_disappear__FP10e_yr_class();
-extern "C" static void anm_init__FP10e_yr_classifUcf();
-extern "C" static void kuti_open__FP10e_yr_classsUl();
-extern "C" static void e_yr_player_bg_check__FP10e_yr_class();
-extern "C" static void e_yr_player_view_check__FP10e_yr_class();
-extern "C" static void path_check__FP10e_yr_class();
-extern "C" static void pl_horse_check__FP10e_yr_class();
-extern "C" static void daE_Yr_shadowDraw__FP10e_yr_class();
-extern "C" static void daE_Yr_Draw__FP10e_yr_class();
-extern "C" static void e_yr_pos_move__FP10e_yr_class();
-extern "C" static void e_yr_ground_pos_move__FP10e_yr_class();
-extern "C" static void e_yr_path_move__FP10e_yr_class();
-extern "C" static void e_yr_auto_move__FP10e_yr_class();
-extern "C" static void e_yr_atack_move__FP10e_yr_class();
-extern "C" static void e_yr_horse_move__FP10e_yr_class();
-extern "C" static void e_yr_wait_move__FP10e_yr_class();
-extern "C" static void e_yr_su_wait_move__FP10e_yr_class();
-extern "C" static void e_yr_damage__FP10e_yr_class();
-extern "C" static void damage_check__FP10e_yr_class();
-extern "C" static void ground_angle_set__FP10e_yr_class();
-extern "C" static void daE_Yr_Execute__FP10e_yr_class();
-extern "C" static bool daE_Yr_IsDelete__FP10e_yr_class();
-extern "C" static void daE_Yr_Delete__FP10e_yr_class();
-extern "C" static void useHeapInit__FP10fopAc_ac_c();
-extern "C" static void daE_Yr_Create__FP10fopAc_ac_c();
-extern "C" void __ct__10e_yr_classFv();
-extern "C" void __ct__4cXyzFv();
-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 __sinit_d_a_e_yr_cpp();
-extern "C" void __dt__9e_yrHIO_cFv();
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv();
-extern "C" void __dt__14mDoHIO_entry_cFv();
-extern "C" static void func_808283DC();
-extern "C" static void func_808283E4();
-extern "C" void __dt__4cXyzFv();
-extern "C" extern char const* const d_a_e_yr__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void
-__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 __ct__10fopAc_ac_cFv();
-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_SetMin__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff();
-extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_createItemFromEnemyID__FUcPC4cXyziiPC5csXyzPC4cXyzPfPf();
-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 dPath_GetRoomPath__Fii();
-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__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Move__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void ChkAtHit__12dCcD_GObjInfFv();
-extern "C" void 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_Sound_set__F4cXyziUii();
-extern "C" void dKy_darkworld_check__Fv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __pl__4cXyzCFRC3Vec();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void __pl__5csXyzFR5csXyz();
-extern "C" void cM_atan2s__Fff();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void SetPos__11cBgS_GndChkFPC3Vec();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalc0__FPfff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void MtxTrans__FfffUc();
-extern "C" void MtxScale__FfffUc();
-extern "C" void MtxPosition__FP4cXyzP4cXyz();
-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 __construct_array();
-extern "C" void _savegpr_19();
-extern "C" void _savegpr_21();
-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_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" u8 m_midnaActor__9daPy_py_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+#if DEBUG
+void e_yrHIO_c::genMessage(JORMContext* ctx) {
+ // "Kagarok"
+ ctx->genLabel("\u3000闇カーゴロック", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genCheckBox("不死身", &mInvulnerable, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genCheckBox("静止", &mStationary, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genCheckBox("いきなり攻撃", &mSuddenAttack, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("旋回半径", &mTurningRadius, 0.0, 10000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("モデルスケール", &mModelScale, 0.0, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("A攻時間(最短)", &mAttackAMinTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("A攻時間(最長)", &mAttackAMaxTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("B攻時間(最短)", &mAttackBMinTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("B攻時間(最長)", &mAttackBMaxTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("攻撃移動速度", &mAttackMoveSpeed, 0.0, 2.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("攻撃頻度", &mAttackFrequency, 0.0, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("fly再生速度", &mFlyPlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("hovering再生速度", &mHoveringPlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff,
+ 0x200, 0x18);
+ ctx->genSlider("atack再生速度", &mAttackPlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("chance再生速度", &mChancePlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff,
+ 0x200, 0x18);
+ ctx->genSlider("chance時間", &mChanceTime, 0, 200, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("brake開始距離", &mBrakeStartDist, 0, 3000, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("大ダメージ力", &mLargeDamage, 0.0, 150.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("小ダメージ力", &mSmallDamage, 0.0, 150.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
+ ctx->genSlider("HIT発生フレーム", &mHitOccurrenceFrame, 0, 5, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("プ認距離(空)", &mDetectDistSky, 0.0f, 10000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("プ認高さ(空)", &mDetectHeightSky, 0.0f, 5000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("プ認角度(空)", &mDetectAngleSky, 0, 0x7fff, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+ ctx->genSlider("プ認距離(地)", &mDetectDistGround, 0.0f, 10000.0f, 0, NULL, 0xffff, 0xffff,
+ 0x200, 0x18);
+ ctx->genSlider("プ認高さ(地)", &mDetectHeightGround, 0.0f, 5000.0f, 0, NULL, 0xffff, 0xffff,
+ 0x200, 0x18);
+ ctx->genSlider("プ認角度(地)", &mDetectAngleGround, 0, 0x7fff, 0, NULL, 0xffff, 0xffff, 0x200,
+ 0x18);
+}
+#endif
/* 8082220C-808225C0 0000EC 03B4+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
-static void nodeCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
+static int nodeCallBack(J3DJoint* i_joint, int param_1) {
+ if (param_1 == 0) {
+ J3DJoint* joint = i_joint;
+ s32 jointNo = joint->getJntNo();
+ J3DModel* model = j3dSys.getModel();
+
+ e_yr_class* yr = (e_yr_class*)model->getUserArea();
+ e_yr_class* yr_2 = yr;
+ if (yr != NULL) {
+ MTXCopy(model->getAnmMtx(jointNo), *calc_mtx);
+ if (jointNo == 3 || jointNo == 4) {
+ cMtx_YrotM(*calc_mtx, yr->field_0xe84 / 2);
+ cMtx_XrotM(*calc_mtx, yr->field_0xe84);
+ cMtx_ZrotM(*calc_mtx, yr->field_0xe88 / 3);
+ } else if (jointNo == 8) {
+ cMtx_ZrotM(*calc_mtx, -(yr->field_0xe88 / 3));
+ } else if (jointNo == 7) {
+ cMtx_ZrotM(*calc_mtx, -yr->field_0xe88);
+ }
+
+ if (jointNo >= 10 && jointNo <= 13) {
+ cMtx_ZrotM(*calc_mtx, yr->field_0xea8 / 2);
+ cMtx_XrotM(*calc_mtx, yr->field_0xe96[jointNo - 9]);
+ } else {
+ if (jointNo >= 15 && jointNo <= 18) {
+ cMtx_ZrotM(*calc_mtx, yr->field_0xeaa / 2);
+ cMtx_XrotM(*calc_mtx, yr->field_0xe96[jointNo - 9]);
+ }
+ }
+
+ if (jointNo == 3) {
+ cMtx_ZrotM(*calc_mtx, yr->field_0xeb4);
+ } else if (jointNo == 19) {
+ cMtx_ZrotM(*calc_mtx, -yr->field_0xeb4);
+ } else if (jointNo == 20) {
+ cMtx_ZrotM(*calc_mtx, -yr->field_0xeb6);
+ } else if (jointNo == 25) {
+ cMtx_ZrotM(*calc_mtx, -yr->field_0xeb8);
+ } else if (jointNo == 30 || jointNo == 31) {
+ cMtx_YrotM(*calc_mtx, (s16)yr->field_0xebe);
+ cMtx_ZrotM(*calc_mtx, (s16)yr->field_0xebe);
+ }
+
+ if (jointNo == TREG_S(0)) {
+ cMtx_YrotM(*calc_mtx, TREG_S(1));
+ cMtx_XrotM(*calc_mtx, TREG_S(2));
+ cMtx_ZrotM(*calc_mtx, TREG_S(3));
+ } else if (jointNo == TREG_S(4)) {
+ cMtx_YrotM(*calc_mtx, TREG_S(5));
+ cMtx_XrotM(*calc_mtx, TREG_S(6));
+ cMtx_ZrotM(*calc_mtx, TREG_S(7));
+ }
+
+ if (yr->field_0xec4 != 0) {
+ if ((jointNo & 1) != 0) {
+ cMtx_YrotM(*calc_mtx, yr->field_0xec4);
+ } else if ((jointNo & 2) != 0) {
+ cMtx_XrotM(*calc_mtx, yr->field_0xec4);
+ } else if ((jointNo & 4) != 0) {
+ cMtx_ZrotM(*calc_mtx, yr->field_0xec4);
+ }
+ }
+
+ model->setAnmMtx(jointNo, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
+ }
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 8082887C-80828880 00002C 0004+00 0/1 0/0 0/0 .rodata @4099 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4099 = 28.0f;
-COMPILER_STRIP_GATE(0x8082887C, &lit_4099);
-#pragma pop
-
-/* 80828880-80828884 000030 0004+00 0/1 0/0 0/0 .rodata @4100 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4100 = 88.0f;
-COMPILER_STRIP_GATE(0x80828880, &lit_4100);
-#pragma pop
-
-/* 80828884-80828888 000034 0004+00 0/1 0/0 0/0 .rodata @4101 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4101 = 4.0f;
-COMPILER_STRIP_GATE(0x80828884, &lit_4101);
-#pragma pop
-
-/* 80828888-80828890 000038 0004+04 1/2 0/0 0/0 .rodata @4102 */
-SECTION_RODATA static f32 const lit_4102[1 + 1 /* padding */] = {
- -1.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80828888, &lit_4102);
-
/* 808225C0-80822790 0004A0 01D0+00 1/1 0/0 0/0 .text yr_disappear__FP10e_yr_class */
-static void yr_disappear(e_yr_class* param_0) {
- // NONMATCHING
-}
+static void yr_disappear(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
-/* ############################################################################################## */
-/* 808289A8-808289A8 000158 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_808289A8 = "E_Yr";
-#pragma pop
+ cXyz unkXyz1;
+ cXyz unkXyz2(0.0f, 0.0f, 0.0f);
+ cXyz unkXyz3(1.0f, 1.0f, 1.0f);
+
+ dComIfGp_particle_set(0x826c, &actor->current.pos, NULL, &unkXyz3);
+
+ if (i_this->field_0x5b8 == 6) {
+ cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
+ unkXyz1.x = 28.0f;
+ unkXyz1.y = 88.0f;
+ unkXyz1.z = 4.0f;
+ MtxPosition(&unkXyz1, &unkXyz2);
+ }
+
+ unkXyz2 += actor->current.pos;
+
+ dComIfGp_particle_set(0x826d, &unkXyz2, NULL, &unkXyz3);
+
+ fopAcM_seStart(actor, Z2SE_DARK_VANISH, 0);
+ fopAcM_createItemFromEnemyID(Z2_ENEMY_YK, &actor->current.pos, -1, -1, 0, 0, 0,
+ 0);
+ if (i_this->field_0x668 != 0xff) {
+ dComIfGs_onSwitch(i_this->field_0x668, fopAcM_GetRoomNo(actor));
+ }
+}
/* 80822790-80822848 000670 00B8+00 8/8 0/0 0/0 .text anm_init__FP10e_yr_classifUcf */
-static void anm_init(e_yr_class* param_0, int param_1, f32 param_2, u8 param_3, f32 param_4) {
- // NONMATCHING
+static void anm_init(e_yr_class* i_this, int param_1, f32 param_2, u8 param_3, f32 param_4) {
+ if (i_this->field_0x66b < 3) {
+ i_this->mpMorfSO->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_Yr", param_1), param_3,
+ param_2, param_4, 0.0f, -1.0f);
+ i_this->field_0x5b8 = param_1;
+ }
}
/* 80822848-80822874 000728 002C+00 3/3 0/0 0/0 .text kuti_open__FP10e_yr_classsUl */
-static void kuti_open(e_yr_class* param_0, s16 param_1, u32 param_2) {
- // NONMATCHING
+static void kuti_open(e_yr_class* i_this, s16 param_1, u32 param_2) {
+ if (i_this->field_0xe8a == 0) {
+ i_this->field_0xe8a = param_1;
+ i_this->field_0xe8c = param_1 - 5;
+ i_this->field_0xe90 = param_2;
+ }
}
/* 80822874-80822954 000754 00E0+00 1/1 0/0 0/0 .text e_yr_player_bg_check__FP10e_yr_class */
-static void e_yr_player_bg_check(e_yr_class* param_0) {
- // NONMATCHING
+static int e_yr_player_bg_check(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ dBgS_LinChk linChk;
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+ cXyz unkXyz3;
+
+ unkXyz3 = player->current.pos;
+ unkXyz3.y += 100.0f;
+
+ unkXyz2 = actor->current.pos;
+ unkXyz2.y += 100.0f;
+
+ linChk.Set(&unkXyz2, &unkXyz3, actor);
+
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ return 1;
+ } else {
+ return 0;
+ }
}
-/* ############################################################################################## */
-/* 80828890-80828898 000040 0008+00 1/1 0/0 0/0 .rodata @4221 */
-SECTION_RODATA static u8 const lit_4221[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80828890, &lit_4221);
-
-/* 80828DB0-80828DBC 000008 000C+00 1/1 0/0 0/0 .bss @3920 */
-static u8 lit_3920[12];
-
/* 80828DBC-80828E34 000014 0078+00 10/10 0/0 0/0 .bss l_e_yrHIO */
-static u8 l_e_yrHIO[120];
+static e_yrHIO_c l_e_yrHIO;
/* 80822954-80822AFC 000834 01A8+00 4/4 0/0 0/0 .text e_yr_player_view_check__FP10e_yr_class */
-static void e_yr_player_view_check(e_yr_class* param_0) {
- // NONMATCHING
+static int e_yr_player_view_check(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+
+ if (l_e_yrHIO.mSuddenAttack != 0) {
+ return 1;
+ }
+
+ if (i_this->field_0x665 != 0xff) {
+ if (i_this->mPlayerLatDist > i_this->field_0x665 * 100.0f || e_yr_player_bg_check(i_this))
+ {
+ return 0;
+ }
+ } else if (i_this->field_0x669 == 4 || i_this->field_0x669 == 7) {
+ if (i_this->mPlayerLatDist > l_e_yrHIO.mDetectDistGround || e_yr_player_bg_check(i_this)) {
+ return 0;
+ }
+ } else if (i_this->mPlayerLatDist > l_e_yrHIO.mDetectDistSky || e_yr_player_bg_check(i_this)) {
+ return 0;
+ }
+
+ s16 detectAngle;
+ f32 detectHeight;
+ if (i_this->field_0x669 == 4 || i_this->field_0x669 == 7) {
+ detectAngle = l_e_yrHIO.mDetectAngleGround;
+ detectHeight = l_e_yrHIO.mDetectHeightGround;
+ } else {
+ detectAngle = l_e_yrHIO.mDetectAngleSky;
+ detectHeight = l_e_yrHIO.mDetectHeightSky;
+ }
+
+ f32 vDistToPlayer = fabsf(player->current.pos.y - actor->eyePos.y);
+ if (vDistToPlayer < detectHeight) {
+ s16 r28 = actor->current.angle.y - i_this->field_0xe84 - i_this->mYawToPlayer;
+ if (r28 < 0) {
+ r28 = -r28;
+ }
+ if ((u16)r28 < detectAngle) {
+ return 1;
+ }
+ }
+ return 0;
}
-/* ############################################################################################## */
-/* 80828898-8082889C 000048 0004+00 0/4 0/0 0/0 .rodata @4283 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4283 = 50.0f;
-COMPILER_STRIP_GATE(0x80828898, &lit_4283);
-#pragma pop
-
-/* 80828E34-80828F33 00008C 00FF+00 1/1 0/0 0/0 .bss check_index$4227 */
-static u8 check_index[255];
-
/* 80822AFC-80822D4C 0009DC 0250+00 1/1 0/0 0/0 .text path_check__FP10e_yr_class */
-static void path_check(e_yr_class* param_0) {
- // NONMATCHING
+static void path_check(e_yr_class* i_this) {
+ static u8 check_index[255];
+
+ if (i_this->field_0x6ec != 0) {
+ dPnt* point;
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ dBgS_LinChk linChk;
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+
+ unkXyz1 = actor->current.pos;
+ unkXyz1.y += 100.0f;
+
+ point = i_this->field_0x6ec->m_points;
+ for (s32 i = 0; i < i_this->field_0x6ec->m_num; i++, point++) {
+ unkXyz2.x = point->m_position.x;
+ unkXyz2.y = point->m_position.y + 100.0f;
+ unkXyz2.z = point->m_position.z;
+
+ linChk.Set(&unkXyz1, &unkXyz2, actor);
+
+ if (!dComIfG_Bgsp().LineCross(&linChk)) {
+ check_index[i] = 1;
+ } else {
+ check_index[i] = 0;
+ }
+ }
+
+ f32 xDist;
+ f32 yDist;
+ f32 zDist;
+ f32 unkFloat1 = 0.0f;
+ bool unkFlag1 = false;
+ for (s32 i = 0; i < 100; i++, unkFloat1 += 50.0f) {
+ point = i_this->field_0x6ec->m_points;
+ for (s32 j = 0; j < i_this->field_0x6ec->m_num; j++, point++) {
+ if (check_index[j] != 0) {
+ xDist = actor->current.pos.x - point->m_position.x;
+ yDist = actor->current.pos.y - point->m_position.y;
+ zDist = actor->current.pos.z - point->m_position.z;
+
+ if (JMAFastSqrt(xDist * xDist + yDist * yDist + zDist * zDist) < unkFloat1) {
+ i_this->field_0x6ea = j - (s32)i_this->field_0x6eb;
+ if (i_this->field_0x6ea >= (s8)i_this->field_0x6ec->m_num) {
+ i_this->field_0x6ea = i_this->field_0x6ec->m_num;
+ } else {
+ if (i_this->field_0x6ea < 0) {
+ i_this->field_0x6ea = 0;
+ }
+ }
+
+ unkFlag1 = true;
+
+ break;
+ }
+ }
+ }
+
+ if (unkFlag1) {
+ break;
+ }
+ }
+
+ if (!unkFlag1) {
+ i_this->field_0x6e9 = 0;
+ } else {
+ i_this->field_0x6e9 = i_this->field_0x666 + 1;
+ }
+ }
}
-/* ############################################################################################## */
-/* 8082889C-808288A0 00004C 0004+00 1/6 0/0 0/0 .rodata @4295 */
-SECTION_RODATA static f32 const lit_4295 = 20.0f;
-COMPILER_STRIP_GATE(0x8082889C, &lit_4295);
-
/* 80822D4C-80822DB8 000C2C 006C+00 2/2 0/0 0/0 .text pl_horse_check__FP10e_yr_class */
-static void pl_horse_check(e_yr_class* param_0) {
- // NONMATCHING
+static int pl_horse_check(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ if (daPy_getPlayerActorClass()->checkHorseRide() && dComIfGp_getHorseActor()->speedF > 20.0f) {
+ return 1;
+ } else {
+ return 0;
+ }
}
-/* ############################################################################################## */
-/* 808288A0-808288A4 000050 0004+00 0/4 0/0 0/0 .rodata @4320 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4320 = 150.0f;
-COMPILER_STRIP_GATE(0x808288A0, &lit_4320);
-#pragma pop
-
-/* 808288A4-808288A8 000054 0004+00 0/1 0/0 0/0 .rodata @4321 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4321 = 800.0f;
-COMPILER_STRIP_GATE(0x808288A4, &lit_4321);
-#pragma pop
-
-/* 808288A8-808288AC 000058 0004+00 0/2 0/0 0/0 .rodata @4322 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4322 = 40.0f;
-COMPILER_STRIP_GATE(0x808288A8, &lit_4322);
-#pragma pop
-
/* 80822DB8-80822E48 000C98 0090+00 1/1 0/0 0/0 .text daE_Yr_shadowDraw__FP10e_yr_class
*/
-static void daE_Yr_shadowDraw(e_yr_class* param_0) {
- // NONMATCHING
+static void daE_Yr_shadowDraw(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ J3DModel* model = i_this->mpMorfSO->getModel();
+ cXyz unkXyz1;
+ unkXyz1.set(actor->current.pos.x, actor->current.pos.y + 150.0f + BREG_F(18),
+ actor->current.pos.z);
+ i_this->mShadowKey = dComIfGd_setShadow(i_this->mShadowKey, 1, model, &unkXyz1,
+ 800.0f + BREG_F(19), 40.0f + BREG_F(17), actor->current.pos.y,
+ i_this->mAcch.GetGroundH(), i_this->mAcch.m_gnd, &actor->tevStr,
+ 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
}
/* 80822E48-80822F0C 000D28 00C4+00 1/0 0/0 0/0 .text daE_Yr_Draw__FP10e_yr_class */
-static void daE_Yr_Draw(e_yr_class* param_0) {
- // NONMATCHING
-}
+static int daE_Yr_Draw(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
-/* ############################################################################################## */
-/* 808288AC-808288B0 00005C 0004+00 0/5 0/0 0/0 .rodata @4379 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4379 = 0.5f;
-COMPILER_STRIP_GATE(0x808288AC, &lit_4379);
-#pragma pop
-
-/* 808288B0-808288B4 000060 0004+00 0/1 0/0 0/0 .rodata @4380 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4380 = 1.0f / 25.0f;
-COMPILER_STRIP_GATE(0x808288B0, &lit_4380);
-#pragma pop
-
-/* 808288B4-808288B8 000064 0004+00 0/7 0/0 0/0 .rodata @4381 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4381 = 5.0f;
-COMPILER_STRIP_GATE(0x808288B4, &lit_4381);
-#pragma pop
+ if (i_this->field_0x67e != 0) {
+ return 1;
+ }
-/* 80822F0C-80823148 000DEC 023C+00 6/6 0/0 0/0 .text e_yr_pos_move__FP10e_yr_class */
-static void e_yr_pos_move(e_yr_class* param_0) {
- // NONMATCHING
+ J3DModel* model = i_this->mpMorfSO->getModel();
+
+ g_env_light.settingTevStruct(2, &actor->current.pos, &actor->tevStr);
+ g_env_light.setLightTevColorType_MAJI(model, &actor->tevStr);
+
+ dComIfGd_setListDark();
+
+ i_this->mpMorfSO->entryDL();
+
+ dComIfGd_setList();
+
+ daE_Yr_shadowDraw(i_this);
+
+ return 1;
}
-/* ############################################################################################## */
-/* 808288B8-808288BC 000068 0004+00 0/2 0/0 0/0 .rodata @4399 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4399 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x808288B8, &lit_4399);
-#pragma pop
-
-/* 808288BC-808288C0 00006C 0004+00 0/2 0/0 0/0 .rodata @4400 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4400 = 3.0f;
-COMPILER_STRIP_GATE(0x808288BC, &lit_4400);
-#pragma pop
-
-/* 808288C0-808288C4 000070 0004+00 0/1 0/0 0/0 .rodata @4401 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4401 = -0.5f;
-COMPILER_STRIP_GATE(0x808288C0, &lit_4401);
-#pragma pop
+/* 80822F0C-80823148 000DEC 023C+00 6/6 0/0 0/0 .text e_yr_pos_move__FP10e_yr_class */
+static void e_yr_pos_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ cXyz unkXyz1;
+
+ f32 xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ f32 yDiff = i_this->field_0x680.y - actor->current.pos.y;
+ f32 zDiff = i_this->field_0x680.z - actor->current.pos.z;
+ s16 yaw = cM_atan2s(xDiff, zDiff);
+ s16 pitch = -cM_atan2s(yDiff, JMAFastSqrt(xDiff * xDiff + zDiff * zDiff));
+ s16 angleY = actor->current.angle.y;
+
+ cLib_addCalcAngleS2(&actor->current.angle.y, yaw, 10 + TREG_S(3), i_this->field_0x69c * i_this->field_0x694);
+ angleY = (angleY - actor->current.angle.y) * 0x20;
+ s16 limit = 5500 + TREG_S(1);
+ if (angleY > limit) {
+ angleY = limit;
+ } else if (angleY < -limit) {
+ angleY = -limit;
+ }
+
+ cLib_addCalcAngleS2(&actor->current.angle.z, angleY, 10 + TREG_S(3),
+ i_this->field_0x69c * i_this->field_0x694 * 0.5f);
+
+ cLib_addCalcAngleS2(&actor->current.angle.x, pitch, 10 + TREG_S(3),
+ i_this->field_0x69c * i_this->field_0x694);
+ cLib_addCalc2(&i_this->field_0x694, 1.0f, 1.0f, 0.04f);
+ cLib_addCalc2(&actor->speedF, i_this->field_0x68c, 1.0f, i_this->field_0x690);
+
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 0.0f;
+ unkXyz1.z = actor->speedF;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ cMtx_XrotM(*calc_mtx, actor->current.angle.x);
+ MtxPosition(&unkXyz1, &actor->speed);
+ actor->current.pos.x += actor->speed.x;
+ actor->current.pos.y += actor->speed.y;
+ actor->current.pos.z += actor->speed.z;
+
+ if (i_this->field_0x6b0 != 0) {
+ i_this->field_0x6b0--;
+ actor->current.pos.y += 5.0f;
+ }
+}
/* 80823148-80823284 001028 013C+00 1/1 0/0 0/0 .text e_yr_ground_pos_move__FP10e_yr_class */
-static void e_yr_ground_pos_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_ground_pos_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+ f32 xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ f32 zDiff = i_this->field_0x680.z - actor->current.pos.z;
+ s16 yaw = cM_atan2s(xDiff, zDiff);
+ cLib_addCalcAngleS2(&actor->current.angle.y, yaw, TREG_S(3) + 2,
+ i_this->field_0x69c * i_this->field_0x694);
+ cLib_addCalc2(&i_this->field_0x694, 1.0f, 1.0f, 0.1f);
+ cLib_addCalc2(&actor->speedF, i_this->field_0x68c, 1.0f, i_this->field_0x690);
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 0.0f;
+ unkXyz1.z = actor->speedF;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ MtxPosition(&unkXyz1, &unkXyz2);
+ actor->speed.x = unkXyz2.x;
+ actor->speed.z = unkXyz2.z;
+ actor->current.pos.x += actor->speed.x;
+ actor->current.pos.y += actor->speed.y;
+ actor->current.pos.z += actor->speed.z;
+ actor->speed.y = actor->speed.y - 3.0f;
+
+ if (i_this->mAcch.ChkGroundHit()) {
+ actor->speed.y = -0.5f;
+ }
}
-/* ############################################################################################## */
-/* 808288C4-808288C8 000074 0004+00 0/3 0/0 0/0 .rodata @4542 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4542 = 12.0f;
-COMPILER_STRIP_GATE(0x808288C4, &lit_4542);
-#pragma pop
-
-/* 808288C8-808288CC 000078 0004+00 0/2 0/0 0/0 .rodata @4543 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4543 = 25.0f;
-COMPILER_STRIP_GATE(0x808288C8, &lit_4543);
-#pragma pop
-
-/* 808288CC-808288D0 00007C 0004+00 0/2 0/0 0/0 .rodata @4544 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4544 = 2.0f;
-COMPILER_STRIP_GATE(0x808288CC, &lit_4544);
-#pragma pop
-
-/* 808288D0-808288D4 000080 0004+00 0/5 0/0 0/0 .rodata @4545 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4545 = 30.0f;
-COMPILER_STRIP_GATE(0x808288D0, &lit_4545);
-#pragma pop
-
-/* 808289EC-80828A58 -00001 006C+00 1/1 0/0 0/0 .data @4552 */
-SECTION_DATA static void* lit_4552[27] = {
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x1A0),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x108),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x318),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x3F8),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x480),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x54C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x5F8),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x72C),
- (void*)(((char*)e_yr_path_move__FP10e_yr_class) + 0x6D8),
-};
-
/* 80823284-808239F8 001164 0774+00 2/1 0/0 0/0 .text e_yr_path_move__FP10e_yr_class */
-static void e_yr_path_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_path_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*)playerActor;
+ cXyz unkXyz1;
+
+ s8 unkChar1 = 0;
+
+ i_this->field_0xe94 = 2;
+
+ s32 frame;
+ switch (i_this->field_0x67c) {
+ case 0:
+ frame = i_this->mpMorfSO->getFrame();
+ if (actor->current.pos.y > i_this->field_0x680.y &&
+ frame == 9 + TREG_S(0))
+ {
+ i_this->field_0x67c = 1;
+ anm_init(i_this, 12, 12.0f + TREG_F(0), 2, 1.0f);
+ }
+
+ break;
+ case 1:
+ if (actor->current.pos.y <= (i_this->field_0x680).y) {
+ i_this->field_0x67c = 0;
+ anm_init(i_this, 8, 5.0f, 2, l_e_yrHIO.mFlyPlaybackSpeed);
+ }
+
+ break;
+ case 10:
+ default:
+ break;
+ }
+
+ f32 xDiff;
+ f32 yDiff;
+ f32 zDiff;
+ f32 dist;
+ dPnt* point;
+ switch (i_this->field_0x67d) {
+ case 0: {
+ i_this->field_0x6ea += i_this->field_0x6eb;
+ if (i_this->field_0x6ea >= (s8)i_this->field_0x6ec->m_num) {
+ if (dPath_ChkClose(i_this->field_0x6ec)) {
+ i_this->field_0x6ea = 0;
+ } else {
+ i_this->field_0x6eb = -1;
+ i_this->field_0x6ea = i_this->field_0x6ec->m_num - 2;
+ }
+
+ s32 nextId = i_this->field_0x6ec->m_nextID;
+ if (nextId != 0xffff) {
+ i_this->field_0x6ec = dPath_GetRoomPath(nextId, fopAcM_GetRoomNo(actor));
+ JUT_ASSERT(0x451, i_this->field_0x6ec != 0);
+ }
+ } else {
+ if (i_this->field_0x6ea < 0) {
+ i_this->field_0x6eb = 1;
+ i_this->field_0x6ea = 1;
+ }
+ }
+ }
+ case -1: {
+ i_this->field_0x67d = 1;
+
+ point = i_this->field_0x6ec->m_points;
+ point = &point[i_this->field_0x6ea];
+
+ if (i_this->field_0x6f0 != 0) {
+ i_this->field_0x68c = 25.0f;
+ i_this->field_0x690 = 2.0f;
+ i_this->field_0x6f0 = 0;
+ } else {
+ if (actor->current.pos.y < i_this->field_0x680.y) {
+ i_this->field_0x68c = 20.0f;
+ i_this->field_0x690 = 1.0f + TREG_F(11);
+ } else {
+ i_this->field_0x68c = 30.0f;
+ i_this->field_0x690 = 1.0f + TREG_F(13);
+ }
+ }
+
+ i_this->field_0x694 = TREG_F(7);
+
+ i_this->field_0x680.x = point->m_position.x;
+ i_this->field_0x680.y = point->m_position.y;
+ i_this->field_0x680.z = point->m_position.z;
+
+ if (point->mArg0 == 1) {
+ i_this->field_0x67d = 10;
+ } else if (i_this->field_0x66b == 0) {
+ i_this->field_0x680.x = point->m_position.x + cM_rndFX(150.0f);
+ i_this->field_0x680.y = point->m_position.y + cM_rndFX(150.0f);
+ i_this->field_0x680.z = point->m_position.z + cM_rndFX(150.0f);
+ }
+
+ if ((l_e_yrHIO.mSuddenAttack != 0 ||
+ i_this->field_0x6a4[3] == 0 && i_this->field_0x66b == 0) &&
+ e_yr_player_view_check(i_this) != 0)
+ {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+ i_this->field_0x6e9 = 0;
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_FIND, -1);
+ }
+
+ break;
+ }
+ case 1: {
+ cLib_addCalc2(&i_this->field_0x694, 1.0f, 1.0f, 0.04f);
+
+ xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ yDiff = i_this->field_0x680.y - actor->current.pos.y;
+ zDiff = i_this->field_0x680.z - actor->current.pos.z;
+ dist = JMAFastSqrt(xDiff * xDiff + yDiff * yDiff + zDiff * zDiff);
+ i_this->field_0x69c =
+ 10.0f * TREG_F(5) + 100.0f + (1000.0f * TREG_F(6) + 500000.0f) / dist;
+
+ if (i_this->field_0x69c > 10.0f * TREG_F(4) + 5000.0f) {
+ i_this->field_0x69c = 10.0f * TREG_F(4) + 5000.0f;
+ }
+ if (dist < 10.0f * TREG_F(10) + 300.0f) {
+ i_this->field_0x67d = 0;
+ point = i_this->field_0x6ec->m_points;
+ point = &point[i_this->field_0x6ea];
+ if (point->mArg0 == 5) {
+ i_this->field_0x66c = 1;
+ } else if (point->mArg0 == 6) {
+ fopAcM_delete(actor);
+ }
+ }
+ break;
+ }
+ case 10: {
+ i_this->field_0x68c = 20.0f;
+
+ xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ yDiff = i_this->field_0x680.y + 50.0f + TREG_F(8) * 10.0f -
+ actor->current.pos.y;
+ zDiff = i_this->field_0x680.z - actor->current.pos.z;
+ dist = JMAFastSqrt(xDiff * xDiff + yDiff * yDiff + zDiff * zDiff);
+ if (dist < TREG_F(9) * 10.0f + 300.0f) {
+ i_this->field_0x67d = 20;
+ i_this->field_0x67c = 10;
+ actor->speed.y = 0.0f;
+ unkChar1 = -1;
+ }
+
+ break;
+ }
+ case 20: {
+ unkChar1 = -1;
+ frame = i_this->mpMorfSO->getFrame();
+
+ cLib_addCalc2(&actor->current.pos.x, i_this->field_0x680.x, 0.1f, fabsf(actor->speed.x));
+ cLib_addCalc2(&actor->current.pos.z, i_this->field_0x680.z, 0.1f, fabsf(actor->speed.z));
+
+ actor->current.pos.y += actor->speed.y;
+
+ if (frame > 15 + TREG_S(2)) {
+ actor->speed.y -= 0.8f + TREG_F(7);
+ }
+
+ cLib_addCalcAngleS2(&actor->current.angle.x, 0, 5, 0x800);
+ cLib_addCalcAngleS2(&actor->current.angle.z, 0, 5, 0x800);
+
+ if (i_this->mAcch.ChkGroundHit()) {
+ actor->speed.y = -0.5f;
+ }
+ if (frame == 44) {
+ }
+
+ if (i_this->field_0x6a4[2] == 0) {
+ i_this->field_0x67d = 23;
+ }
+
+ break;
+ }
+ case 22: {
+ unkChar1 = 1;
+ if (i_this->field_0x6a4[2] == 0) {
+ i_this->field_0x6ea++;
+ if (i_this->field_0x6ea >= i_this->field_0x6ec->m_num) {
+ i_this->field_0x6ea = 0;
+ }
+
+ point = i_this->field_0x6ec->m_points;
+ point = &point[i_this->field_0x6ea];
+ i_this->field_0x680.x = point->m_position.x;
+ i_this->field_0x680.y = point->m_position.y;
+ i_this->field_0x680.z = point->m_position.z;
+
+ if (point->mArg0 == 2) {
+ i_this->field_0x67d = 25;
+ } else {
+ i_this->field_0x67d = 23;
+ i_this->field_0x69c = 1000.0f;
+ i_this->field_0x694 = 1.0f;
+ }
+ }
+
+ i_this->field_0x68c = 0.0f;
+ actor->speedF = 0.0f;
+
+ break;
+ }
+ case 23: {
+ unkChar1 = 1;
+ frame = i_this->mpMorfSO->getFrame();
+ if (frame >= TREG_S(3) && frame <= 9 + TREG_S(4)) {
+ i_this->field_0x68c = i_this->field_0x6b4 * 5.0f;
+ actor->speedF = i_this->field_0x6b4 * 5.0f;
+ } else {
+ i_this->field_0x68c = 0.0f;
+ actor->speedF = 0.0f;
+ xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ zDiff = i_this->field_0x680.z - actor->current.pos.z;
+ if (JMAFastSqrt(xDiff * xDiff + zDiff * zDiff) < 50.0f) {
+ i_this->field_0x67d = 22;
+ point = i_this->field_0x6ec->m_points;
+ point = &point[i_this->field_0x6ea];
+ if (point->mArg0 == 3) {
+ i_this->field_0x6a4[2] = cM_rndF(50.0f) + 50.0f;
+ }
+ }
+ }
+
+ break;
+ }
+ case 25: {
+ unkChar1 = 1;
+ anm_init(i_this, 8, 5.0f, 2, l_e_yrHIO.mFlyPlaybackSpeed);
+ i_this->field_0x67d = 0xff;
+ i_this->field_0x69c = 10.0f * TREG_F(4) + 5000.0f;
+ i_this->field_0x68c = 25.0f;
+ i_this->field_0x690 = 2.0f;
+ actor->speedF = 0.0f;
+ i_this->field_0x6b0 = 10 + TREG_S(4);
+
+ break;
+ }
+ default:
+ break;
+ }
+
+ switch (unkChar1) {
+ case 0:
+ e_yr_pos_move(i_this);
+ break;
+ case 1:
+ e_yr_ground_pos_move(i_this);
+ break;
+ }
}
-/* ############################################################################################## */
-/* 808288D4-808288D8 000084 0004+00 0/0 0/0 0/0 .rodata @4546 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4546 = 500000.0f;
-COMPILER_STRIP_GATE(0x808288D4, &lit_4546);
-#pragma pop
-
-/* 808288D8-808288DC 000088 0004+00 0/1 0/0 0/0 .rodata @4547 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4547 = 5000.0f;
-COMPILER_STRIP_GATE(0x808288D8, &lit_4547);
-#pragma pop
-
-/* 808288DC-808288E0 00008C 0004+00 0/4 0/0 0/0 .rodata @4548 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4548 = 300.0f;
-COMPILER_STRIP_GATE(0x808288DC, &lit_4548);
-#pragma pop
-
-/* 808288E0-808288E4 000090 0004+00 0/0 0/0 0/0 .rodata @4549 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4549 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x808288E0, &lit_4549);
-#pragma pop
-
-/* 808288E4-808288E8 000094 0004+00 0/3 0/0 0/0 .rodata @4550 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4550 = 1000.0f;
-COMPILER_STRIP_GATE(0x808288E4, &lit_4550);
-#pragma pop
-
-/* 808288E8-808288EC 000098 0004+00 0/5 0/0 0/0 .rodata @4604 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4604 = 200.0f;
-COMPILER_STRIP_GATE(0x808288E8, &lit_4604);
-#pragma pop
-
-/* 808288EC-808288F0 00009C 0004+00 0/3 0/0 0/0 .rodata @4605 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4605 = 60.0f;
-COMPILER_STRIP_GATE(0x808288EC, &lit_4605);
-#pragma pop
-
-/* 808288F0-808288F4 0000A0 0004+00 0/2 0/0 0/0 .rodata @4606 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4606 = 500.0f;
-COMPILER_STRIP_GATE(0x808288F0, &lit_4606);
-#pragma pop
-
/* 808239F8-80823D3C 0018D8 0344+00 1/1 0/0 0/0 .text e_yr_auto_move__FP10e_yr_class */
-static void e_yr_auto_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_auto_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*)playerActor;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+
+ i_this->field_0xe94 = 2;
+
+ s32 frame;
+ switch (i_this->field_0x67c) {
+ case 0:
+ frame = i_this->mpMorfSO->getFrame();
+ if (i_this->field_0x6a4[0] == 0 && frame == 9 + TREG_S(0)) {
+ i_this->field_0x67c = 1;
+ i_this->field_0x6a4[0] = cM_rndF(200.0f) + 50.0f;
+
+ anm_init(i_this, 12, 12.0f + TREG_F(0), 2, 1.0f);
+ }
+
+ break;
+ case 1:
+ if (i_this->field_0x6a4[0] == 0 && actor->current.pos.y < i_this->field_0x680.y) {
+ i_this->field_0x67c = 0;
+ i_this->field_0x6a4[0] = cM_rndF(60.0f) + 20.0f;
+
+ anm_init(i_this, 8, 5.0f, 2, l_e_yrHIO.mFlyPlaybackSpeed);
+ }
+
+ break;
+ case 10:
+ break;
+ case 20:
+ frame = i_this->mpMorfSO->getFrame();
+ if (frame == 34) {
+ i_this->field_0x67c = 0;
+ i_this->field_0x6a4[0] = cM_rndF(60.0f) + 20.0f;
+
+ anm_init(i_this, 8, 0.0f, 2, l_e_yrHIO.mFlyPlaybackSpeed);
+ }
+
+ break;
+ }
+
+ f32 xDiff;
+ f32 zDiff;
+ switch (i_this->field_0x67d) {
+ case 0:
+ if (i_this->field_0x6a4[1] == 0) {
+ xDiff =
+ actor->home.pos.x + cM_rndFX(l_e_yrHIO.field_0xc) - actor->current.pos.x;
+ zDiff =
+ actor->home.pos.z + cM_rndFX(l_e_yrHIO.field_0xc) - actor->current.pos.z;
+ if (JMAFastSqrt(xDiff * xDiff + zDiff * zDiff) > 200.0f) {
+ i_this->field_0x6a4[1] = cM_rndF(150.0f) + 50.0f;
+
+ i_this->field_0x680.x = xDiff + actor->current.pos.x;
+ i_this->field_0x680.y = actor->home.pos.y + cM_rndF(500.0f);
+ i_this->field_0x680.z = zDiff + actor->current.pos.z;
+
+ i_this->field_0x694 = 0.0f;
+ i_this->field_0x68c = 25.0f + TREG_F(10);
+ i_this->field_0x690 = 1.0f + TREG_F(11);
+ i_this->field_0x69c = cM_rndF(300.0f) + 200.0f;
+
+ if ((l_e_yrHIO.mSuddenAttack != 0 ||
+ i_this->field_0x6a4[3] == 0 && i_this->field_0x66b == 0) &&
+ e_yr_player_view_check(i_this))
+ {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_FIND, -1);
+ }
+ }
+ }
+ }
+
+ e_yr_pos_move(i_this);
}
-/* ############################################################################################## */
-/* 808288F4-808288F8 0000A4 0004+00 0/3 0/0 0/0 .rodata @4933 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4933 = 10.0f;
-COMPILER_STRIP_GATE(0x808288F4, &lit_4933);
-#pragma pop
-
-/* 808288F8-808288FC 0000A8 0004+00 0/3 0/0 0/0 .rodata @4934 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4934 = 400.0f;
-COMPILER_STRIP_GATE(0x808288F8, &lit_4934);
-#pragma pop
-
-/* 808288FC-80828900 0000AC 0004+00 0/2 0/0 0/0 .rodata @4935 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4935 = 2000.0f;
-COMPILER_STRIP_GATE(0x808288FC, &lit_4935);
-#pragma pop
-
-/* 80828900-80828904 0000B0 0004+00 0/0 0/0 0/0 .rodata @4936 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4936 = 1280.0f;
-COMPILER_STRIP_GATE(0x80828900, &lit_4936);
-#pragma pop
-
-/* 80828904-80828908 0000B4 0004+00 0/0 0/0 0/0 .rodata @4937 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4937 = 768.0f;
-COMPILER_STRIP_GATE(0x80828904, &lit_4937);
-#pragma pop
-
-/* 80828908-8082890C 0000B8 0004+00 0/0 0/0 0/0 .rodata @4938 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4938 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80828908, &lit_4938);
-#pragma pop
-
-/* 8082890C-80828910 0000BC 0004+00 0/0 0/0 0/0 .rodata @4939 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4939 = 7000.0f;
-COMPILER_STRIP_GATE(0x8082890C, &lit_4939);
-#pragma pop
-
-/* 80828910-80828914 0000C0 0004+00 0/1 0/0 0/0 .rodata @4940 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4940 = 250.0f;
-COMPILER_STRIP_GATE(0x80828910, &lit_4940);
-#pragma pop
-
-/* 80828914-80828918 0000C4 0004+00 0/1 0/0 0/0 .rodata @4941 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4941 = 600.0f;
-COMPILER_STRIP_GATE(0x80828914, &lit_4941);
-#pragma pop
-
-/* 80828918-8082891C 0000C8 0004+00 0/0 0/0 0/0 .rodata @4942 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4942 = 35.0f;
-COMPILER_STRIP_GATE(0x80828918, &lit_4942);
-#pragma pop
-
-/* 8082891C-80828920 0000CC 0004+00 0/0 0/0 0/0 .rodata @4943 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4943 = 1350.0f;
-COMPILER_STRIP_GATE(0x8082891C, &lit_4943);
-#pragma pop
-
-/* 80828920-80828924 0000D0 0004+00 0/0 0/0 0/0 .rodata @4944 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4944 = -10.0f;
-COMPILER_STRIP_GATE(0x80828920, &lit_4944);
-#pragma pop
-
-/* 80828924-80828928 0000D4 0004+00 0/2 0/0 0/0 .rodata @4945 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4945 = 3000.0f;
-COMPILER_STRIP_GATE(0x80828924, &lit_4945);
-#pragma pop
-
-/* 80828928-80828930 0000D8 0004+04 0/1 0/0 0/0 .rodata @4946 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4946[1 + 1 /* padding */] = {
- -20.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80828928, &lit_4946);
-#pragma pop
-
-/* 80828930-80828938 0000E0 0008+00 0/2 0/0 0/0 .rodata @4949 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4949[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80828930, &lit_4949);
-#pragma pop
-
-/* 80828A58-80828AE8 -00001 0090+00 1/1 0/0 0/0 .data @4948 */
-SECTION_DATA static void* lit_4948[36] = {
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x110),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x148),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x148),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x334),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x4D0),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x83C),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x904),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xB88),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xB88),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0xCC4),
- (void*)(((char*)e_yr_atack_move__FP10e_yr_class) + 0x334),
-};
-
/* 80823D3C-80824BBC 001C1C 0E80+00 2/1 0/0 0/0 .text e_yr_atack_move__FP10e_yr_class */
-static void e_yr_atack_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_atack_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player2 = (daPy_py_c*)playerActor;
+
+ f32 playerDist = fopAcM_searchPlayerDistance(actor);
+
+ cXyz unkXyz1;
+ s8 unkFlag1 = 0;
+ s8 unkFlag2 = 0;
+
+ i_this->field_0xe94 = 1;
+
+ if ((s8)i_this->field_0xec8 != 0) {
+ i_this->field_0xec8 = 0;
+ i_this->field_0x6a4[5] = l_e_yrHIO.mAttackFrequency * (cM_rndF(30.0f) + 20.0f);
+
+ anm_init(i_this, 15, 10.0f, 2, l_e_yrHIO.mHoveringPlaybackSpeed);
+
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+ i_this->field_0x67d = 4;
+
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+
+ s32 frame = i_this->mpMorfSO->getFrame();
+
+ switch (i_this->field_0x67d) {
+ case 0: {
+ i_this->field_0x67d = 1;
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+ i_this->field_0x68c = 30.0f;
+ i_this->field_0x690 = 1.0f;
+ anm_init(i_this, 12, 10.0f, 2, 1.0f);
+ }
+ case 1:
+ case 2: {
+ i_this->field_0x680 = playerActor->current.pos;
+ i_this->field_0x680.y += 200.0f;
+
+ e_yr_pos_move(i_this);
+
+ unkXyz1 = i_this->field_0x680 - actor->current.pos;
+ f32 dist = unkXyz1.abs();
+ if (dist < 100.0f * TREG_F(9) + 500.0f) {
+ i_this->field_0x67d = 3;
+ } else {
+ if (i_this->field_0x67d == 1) {
+ i_this->field_0x69c = 400.0f;
+ if (dist < l_e_yrHIO.mBrakeStartDist) {
+ i_this->field_0x67d = 2;
+ anm_init(i_this, 11, 10.0f, 0, 1.0f);
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+ } else {
+ i_this->field_0xeb0 = KREG_F(0xb) + 1000.0f;
+ i_this->field_0x69c = 2000.0f;
+ }
+ }
+
+ break;
+ }
+ case 3:
+ case 35: {
+ i_this->field_0x68c = 0.0f;
+ i_this->field_0x690 = 3.0f;
+ e_yr_pos_move(i_this);
+ if (actor->speedF <= 0.1f || i_this->mAcch.ChkWallHit())
+ {
+ i_this->field_0x67d = 4;
+ i_this->field_0x6a4[0] = 0;
+
+ if (i_this->field_0x664 == 4 || i_this->field_0x664 == 7) {
+ i_this->field_0x6a4[1] = l_e_yrHIO.mAttackBMinTime + cM_rndF(l_e_yrHIO.mAttackBMaxTime - l_e_yrHIO.mAttackBMinTime);
+ } else {
+ i_this->field_0x6a4[1] = l_e_yrHIO.mAttackAMinTime + cM_rndF(l_e_yrHIO.mAttackAMaxTime - l_e_yrHIO.mAttackAMinTime);
+ }
+
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+ if (i_this->field_0x67d == 3 && actor->speedF <= 10.0f) {
+ i_this->field_0x67d = 35;
+
+ anm_init(i_this, 15, 5.0f, 2, l_e_yrHIO.mHoveringPlaybackSpeed);
+ }
+
+ break;
+ }
+ case 4: {
+ i_this->field_0x6e0++;
+
+ unkXyz1.x = cM_ssin(i_this->field_0x6e0 * (TREG_S(2) + 1000)) * 200.0f;
+ unkXyz1.y = cM_ssin(i_this->field_0x6e0 * (TREG_S(3) + 0x4b0)) * 100.0f;
+ unkXyz1.z = cM_scos(i_this->field_0x6e0 * (TREG_S(4) + 0x5dc)) * 200.0f;
+
+ cLib_addCalc2(&actor->current.pos.x, i_this->field_0x680.x + unkXyz1.x, 0.1f,
+ i_this->field_0x694 * 30.0f);
+ cLib_addCalc2(&actor->current.pos.y, i_this->field_0x680.y + unkXyz1.y, 0.1f,
+ i_this->field_0x694 * 30.0f);
+ cLib_addCalc2(&actor->current.pos.z, i_this->field_0x680.z + unkXyz1.z, 0.1f,
+ i_this->field_0x694 * 30.0f);
+ cLib_addCalc2(&i_this->field_0x694, l_e_yrHIO.mAttackMoveSpeed, 1.0f,
+ l_e_yrHIO.mAttackMoveSpeed * 0.1f);
+ cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mYawToPlayer, 5,
+ i_this->field_0x698 * 1280.0f);
+ cLib_addCalcAngleS2(&actor->current.angle.x, i_this->mPitchToPlayer, 5,
+ i_this->field_0x698 * 768.0f);
+ cLib_addCalcAngleS2(&actor->current.angle.z, 0, 5, i_this->field_0x698 * 768.0f);
+ cLib_addCalc2(&i_this->field_0x698, 1.0f, 1.0f, 0.05f);
+
+ if (i_this->field_0x6a4[1] == 0) {
+ unkFlag1 = 1;
+ } else {
+ if ((i_this->field_0x6a4[0] & 0x1f) == 0 && cM_rndF(1.0f) < 0.5f) {
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+ if (i_this->field_0x6a4[0] == 0) {
+ cMtx_YrotS(*calc_mtx, playerActor->shape_angle.y + (s16)cM_rndFX(7000.0f));
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = cM_rndF(100.0f) + 250.0f + TREG_F(15);
+ unkXyz1.z = cM_rndF(100.0f) + 300.0f + TREG_F(16);
+
+ MtxPosition(&unkXyz1, &i_this->field_0x680);
+
+ i_this->field_0x680 += playerActor->current.pos;
+ i_this->field_0x6a4[0] = cM_rndF(100.0f) + 20.0f;
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+ }
+ if (i_this->field_0x6a4[5] == 0 &&
+ i_this->mPlayerLatDist > 10.0f * TREG_F(5) + 300.0f &&
+ i_this->mPlayerLatDist < 10.0f * TREG_F(6) + 400.0f && frame >= 14 + BREG_S(7))
+ {
+ i_this->field_0x67d = 7;
+ i_this->field_0x6a4[5] = l_e_yrHIO.mAttackFrequency * (cM_rndF(30.0f) + 20.0f);
+
+ anm_init(i_this, 4, 2.0f, 0, l_e_yrHIO.mAttackPlaybackSpeed);
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_ATTACK, -1);
+
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+ i_this->field_0x68c = 0.0f;
+ i_this->field_0x690 = 5.0f;
+ actor->speedF = 0.0f;
+ }
+ }
+ if (playerDist > 600.0f) {
+ i_this->field_0x67d = 5;
+ i_this->field_0x6a4[0] = cM_rndF(35.0f) + 35.0f;
+ }
+ break;
+ }
+ case 5: {
+ if (((i_this->field_0x6de & 0x3f) == 0) && cM_rndF(1.0f) < 0.5f) {
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+ i_this->field_0x68c = 25.0f;
+ i_this->field_0x690 = 2.0f;
+ i_this->field_0x69c = 2000.0f;
+ i_this->field_0x680.x = playerActor->current.pos.x;
+ i_this->field_0x680.y = playerActor->current.pos.y + 200.0f + TREG_F(19);
+ i_this->field_0x680.z = playerActor->current.pos.z;
+ e_yr_pos_move(i_this);
+ if (playerDist < 500.0f) {
+ i_this->field_0x67d = 4;
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+ }
+ if (i_this->field_0x6a4[0] == 0 && playerDist > 1350.0f) {
+ i_this->field_0x67d = 0;
+ }
+ if (i_this->field_0x6a4[1] == 0) {
+ unkFlag1 = 1;
+ }
+ break;
+ }
+ case 7: {
+ i_this->field_0xe94 = 0;
+ if (frame == 3) {
+ kuti_open(i_this, 25, Z2SE_SY_DUMMY);
+ }
+ if (frame == 15 + TREG_S(5)) {
+ i_this->field_0x68c = 30.0f + TREG_F(7);
+ i_this->field_0x690 = 10.0f + TREG_F(8);
+ }
+ if (frame == 25 + TREG_S(6)) {
+ i_this->field_0x68c = -10.0f + TREG_F(9);
+ i_this->field_0x690 = 5.0f + TREG_F(10);
+ }
+ if (frame <= 23) {
+ i_this->field_0x69c = 2000.0f;
+ i_this->field_0x680.x = playerActor->current.pos.x;
+ i_this->field_0x680.y = playerActor->current.pos.y + 100.0f;
+ i_this->field_0x680.z = playerActor->current.pos.z;
+ } else {
+ i_this->field_0x69c = 0.0f;
+ }
+
+ e_yr_pos_move(i_this);
+
+ if (i_this->mpMorfSO->isStop()) {
+ i_this->field_0x67d = 4;
+
+ anm_init(i_this, 15, 3.0f, 2, l_e_yrHIO.mHoveringPlaybackSpeed);
+
+ i_this->field_0x6a4[5] = l_e_yrHIO.mAttackFrequency * (cM_rndF(30.0f) + 20.0f);
+
+ cMtx_YrotS(*calc_mtx, playerActor->shape_angle.y + (s16)cM_rndFX(3000.0f));
+
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = cM_rndF(100.0f) + 250.0f + TREG_F(15);
+ unkXyz1.z = cM_rndF(100.0f) + 300.0f + TREG_F(16);
+
+ MtxPosition(&unkXyz1, &i_this->field_0x680);
+
+ i_this->field_0x680 += playerActor->current.pos;
+ i_this->field_0x6a4[0] = cM_rndF(100.0f) + 20.0f;
+ i_this->field_0x694 = i_this->field_0x698 = 1.0f;
+ } else {
+ if (frame >= 15 && frame <= 27) {
+ unkFlag2 = 1;
+ if (player2->checkPlayerGuard() && i_this->mSph1.ChkAtHit()) {
+ i_this->field_0x6b2 = 10;
+ i_this->field_0x67d = 10;
+ i_this->field_0x6a4[0] = l_e_yrHIO.mChanceTime;
+
+ anm_init(i_this, 14, 0.0f, 0, l_e_yrHIO.field_0x38);
+
+ i_this->field_0x68c = TREG_F(7);
+ i_this->field_0x690 = 1.0f;
+ actor->speedF = -20.0f;
+ unkFlag2 = 0;
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_DAMAGE_S, -1);
+ }
+ }
+ }
+ break;
+ }
+ case 10:
+ case 11: {
+ i_this->field_0xe94 = 0;
+ e_yr_pos_move(i_this);
+ if ((s32)i_this->mpMorfSO->getFrame() == 24) {
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_FURA, -1);
+ }
+
+ if (i_this->mpMorfSO->isStop() && i_this->field_0x67d == 10) {
+ i_this->field_0x67d = 11;
+ anm_init(i_this, 5, 0.0f, 2, l_e_yrHIO.mChancePlaybackSpeed);
+ }
+
+ if (i_this->field_0x6a4[0] == 0) {
+ i_this->field_0x67d = 4;
+ i_this->field_0x6a4[5] = l_e_yrHIO.mAttackFrequency * (cM_rndF(30.0f) + 20.0f);
+
+ anm_init(i_this, 15, 10.0f, 2, l_e_yrHIO.mHoveringPlaybackSpeed);
+
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+ }
+
+ cLib_addCalc2(&actor->current.pos.y, i_this->mAcch.GetGroundH() + 100.0f + TREG_F(17), 0.05f, 5.0f);
+
+ break;
+ }
+ }
+
+ if (i_this->field_0x664 != 3) {
+ unkXyz1 = i_this->field_0x680 - actor->current.pos;
+ f32 unusedDist = unkXyz1.abs();
+
+ if (unkFlag1) {
+ i_this->field_0x669 = i_this->field_0x664;
+ if (i_this->field_0x666 != 0xff) {
+ i_this->field_0x6e9 = i_this->field_0x666 + 1;
+
+ path_check(i_this);
+ }
+ if (i_this->field_0x669 == 4 || i_this->field_0x669 == 7) {
+ i_this->field_0x67d = 10;
+
+ anm_init(i_this, 8, 5.0f, 2, l_e_yrHIO.mFlyPlaybackSpeed);
+ } else {
+ i_this->field_0x67d = 0;
+ i_this->field_0x6a4[0] = 0;
+ i_this->field_0x6a4[1] = 0;
+ i_this->field_0x67c = 1;
+
+ anm_init(i_this, 12, 12.0f + TREG_F(0), 2, 1.0f);
+
+ actor->speedF = 0.0f;
+
+ i_this->field_0x680.y = playerActor->current.pos.y + 500.0f;
+ i_this->field_0x6a4[3] = cM_rndF(200.0f) + 300.0f;
+ }
+ i_this->field_0x694 = 0.0f;
+ }
+ }
+
+ if (unkFlag2) {
+ i_this->mSph1.SetC(actor->eyePos);
+ dComIfG_Ccsp()->Set(&i_this->mSph1);
+ } else {
+ i_this->mSph1.ClrAtHit();
+ }
+
+ if ((i_this->field_0x6de & 0x3f) == 0 && pl_horse_check(i_this)) {
+ i_this->field_0x669 = 9;
+ i_this->field_0x67d = 0;
+ }
}
-/* ############################################################################################## */
-/* 80828938-8082893C 0000E8 0004+00 0/1 0/0 0/0 .rodata @5109 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5109 = 6.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80828938, &lit_5109);
-#pragma pop
-
-/* 8082893C-80828940 0000EC 0004+00 0/3 0/0 0/0 .rodata @5110 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5110 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x8082893C, &lit_5110);
-#pragma pop
-
-/* 80828940-80828944 0000F0 0004+00 0/3 0/0 0/0 .rodata @5111 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5111 = 70.0f;
-COMPILER_STRIP_GATE(0x80828940, &lit_5111);
-#pragma pop
-
-/* 80828944-80828948 0000F4 0004+00 0/1 0/0 0/0 .rodata @5112 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5112 = 180.0f;
-COMPILER_STRIP_GATE(0x80828944, &lit_5112);
-#pragma pop
-
-/* 80828948-8082894C 0000F8 0004+00 0/1 0/0 0/0 .rodata @5113 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5113 = 19.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80828948, &lit_5113);
-#pragma pop
-
-/* 8082894C-80828950 0000FC 0004+00 0/1 0/0 0/0 .rodata @5114 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5114 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x8082894C, &lit_5114);
-#pragma pop
-
-/* 80828950-80828954 000100 0004+00 0/1 0/0 0/0 .rodata @5115 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5115 = -100.0f;
-COMPILER_STRIP_GATE(0x80828950, &lit_5115);
-#pragma pop
-
/* 80824BBC-80825484 002A9C 08C8+00 1/1 0/0 0/0 .text e_yr_horse_move__FP10e_yr_class */
-static void e_yr_horse_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_horse_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*)playerActor;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+
+ i_this->field_0xe94 = 1;
+
+ s32 frame = i_this->mpMorfSO->getFrame();
+
+ f32 horseSpeed = dComIfGp_getHorseActor()->speedF;
+ if (horseSpeed > 60.0f) {
+ horseSpeed = 60.0f;
+ } else {
+ if (horseSpeed < 30.0f) {
+ horseSpeed = 30.0f;
+ }
+ }
+
+ s8 unkFlag1 = 0;
+
+ f32 unkFloat0;
+ f32 unkFloat1;
+ f32 unkFloat2;
+ switch (i_this->field_0x67d) {
+ case 0:
+ i_this->field_0x67d = 2;
+ i_this->field_0x694 = i_this->field_0x698 = 0.0f;
+
+ anm_init(i_this, 8, 5.0f, 2, cM_rndF(0.2f) + 1.2f);
+
+ i_this->field_0x6a4[1] = cM_rndF(100.0f) + 60.0f;
+ i_this->field_0x6c4 = playerActor->shape_angle.y;
+ i_this->field_0x6a4[0] = 0;
+ i_this->field_0x6a4[2] = 0;
+ i_this->field_0x6a4[3] = 0;
+ case 1:
+ if (i_this->field_0x6a4[1] == 0) {
+ anm_init(i_this, 8, 5.0f, 2, cM_rndF(0.2f) + 1.0f);
+
+ i_this->field_0x67d = 2;
+ i_this->field_0x6a4[1] = cM_rndF(150.0f) + 70.0f;
+ }
+
+ goto lbl_case2;
+ case 2:
+ if (i_this->field_0x6a4[1] == 0) {
+ anm_init(i_this, 12, 10.0f, 2, 1.0f);
+
+ i_this->field_0x67d = 1;
+ i_this->field_0x6a4[1] = cM_rndF(150.0f) + 70.0f;
+ }
+
+ lbl_case2:
+ cLib_addCalcAngleS2(&i_this->field_0x6c4, playerActor->shape_angle.y, 4, 0x200);
+ if (i_this->field_0x6a4[0] == 0) {
+ i_this->field_0x6bc = cM_rndFX(400.0f);
+ i_this->field_0x6c0 = cM_rndF(180.0f) + 100.0f;
+ i_this->field_0x6a4[0] = cM_rndF(70.0f) + 20.0f;
+ }
+
+ unkFloat1 = cM_ssin(i_this->field_0x6de * (KREG_S(7) + 200)) * 20.0f;
+ cMtx_YrotS(*calc_mtx, i_this->field_0x6c4);
+ unkXyz1.x = i_this->field_0x6bc;
+ unkXyz1.y = i_this->field_0x6c0;
+ unkXyz1.z = (horseSpeed - 30.0f) * (unkFloat1 + 30.0f);
+ MtxPosition(&unkXyz1, &unkXyz2);
+ i_this->field_0x680 = playerActor->current.pos + unkXyz2;
+
+ unkXyz2 = i_this->field_0x680 - actor->current.pos;
+ unkFloat2 = unkXyz2.abs();
+
+ if (i_this->field_0x6a4[2] == 0) {
+ i_this->field_0x6a4[2] = cM_rndF(30.0f) + 20.0f;
+
+ if (unkFloat2 < 300.0f) {
+ horseSpeed *= 0.95f;
+ i_this->field_0x69c = 400.0f + NREG_F(3);
+ } else {
+ horseSpeed *= 1.2f;
+ i_this->field_0x69c = 600.0f + NREG_F(4);
+ }
+
+ i_this->field_0x68c = horseSpeed;
+ i_this->field_0x690 = 0.4f + NREG_F(2);
+
+ if (i_this->field_0x68c - actor->speedF > 10.0f) {
+ if (i_this->field_0x67d == 1) {
+ i_this->field_0x67d = 2;
+
+ anm_init(i_this, 8, 5.0f, 2, cM_rndF(0.2f) + 1.2f);
+
+ i_this->field_0x6a4[1] = cM_rndF(100.0f) + 60.0f;
+ } else {
+ i_this->mpMorfSO->setPlaySpeed(cM_rndF(0.2f) + 1.2f);
+ }
+ }
+ }
+
+ if ((i_this->field_0x6de & 0x3f) == 0 && cM_rndF(1.0f) < 0.5f) {
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+
+ if (i_this->field_0x6a4[3] == 0) {
+ unkXyz1 = playerActor->eyePos - actor->current.pos;
+ if (unkXyz1.abs() < 250.0f + JREG_F(0)) {
+ i_this->field_0x67d = 3;
+
+ anm_init(i_this, 10, 5.0f, 2, cM_rndF(0.1f) + 1.0f);
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_ATTACK2, -1);
+ i_this->field_0x6a4[0] = 20 + JREG_S(1);
+ }
+ }
+
+ break;
+ case 3:
+ unkFlag1 = 1;
+ if (i_this->field_0x6a4[0] == 0) {
+ anm_init(i_this, 9, 3.0f, 0, 1.0f);
+
+ i_this->field_0x67d = 4;
+ }
+
+ break;
+ case 4:
+ unkFlag1 = 1;
+ unkFloat0 = 30.0f + JREG_F(1);
+ cMtx_YrotS(*calc_mtx, playerActor->shape_angle.y);
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 0.0f;
+ unkXyz1.z = -100.0f + JREG_F(7);
+ MtxPosition(&unkXyz1, &unkXyz2);
+ cLib_addCalc2(&actor->current.pos.x, playerActor->eyePos.x + unkXyz2.x, 0.5f, unkFloat0);
+ cLib_addCalc2(&actor->current.pos.y, playerActor->eyePos.y, 0.5f, unkFloat0);
+ cLib_addCalc2(&actor->current.pos.z, playerActor->eyePos.z + unkXyz2.z, 0.5f, unkFloat0);
+
+ if (frame >= 10) {
+ i_this->mSph1.SetC(i_this->field_0xe6c[0]);
+ dComIfG_Ccsp()->Set(&i_this->mSph1);
+ } else {
+ i_this->mSph1.ClrAtHit();
+ }
+
+ if (i_this->mpMorfSO->isStop() && JREG_S(3) == 0) {
+ i_this->field_0x67d = 2;
+ i_this->field_0x6a4[1] = 0;
+ i_this->field_0x6a4[3] = cM_rndF(100.0f) + 60.0f;
+ }
+
+ break;
+ }
+
+ if (unkFlag1) {
+ cLib_addCalcAngleS2(&i_this->field_0x6c4, playerActor->shape_angle.y, 2, 0x2000);
+ cMtx_YrotS(*calc_mtx, i_this->field_0x6c4);
+
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 200.0f;
+ unkXyz1.z = 100.0f;
+ MtxPosition(&unkXyz1, &unkXyz2);
+ i_this->field_0x680 = playerActor->current.pos + unkXyz2;
+
+ i_this->field_0x69c = NREG_F(4) + 1000.0f;
+ }
+
+ e_yr_pos_move(i_this);
+
+ if ((i_this->field_0x6de & 0x3f) == 0 && !pl_horse_check(i_this)) {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+ }
}
-/* ############################################################################################## */
-/* 80828AE8-80828B40 -00001 0058+00 1/1 0/0 0/0 .data @5218 */
-SECTION_DATA static void* lit_5218[22] = {
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0xA8),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0xE4),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x10C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x1F0),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x23C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x300),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x300),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x300),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x61C),
- (void*)(((char*)e_yr_wait_move__FP10e_yr_class) + 0x514),
-};
-
/* 80825484-80825ADC 003364 0658+00 2/1 0/0 0/0 .text e_yr_wait_move__FP10e_yr_class */
-static void e_yr_wait_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_wait_move(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*)playerActor;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+
+ s8 unkChar1 = -1;
+
+ f32 absSpeedX = fabsf(actor->speed.x);
+ if (absSpeedX < 5.0f) {
+ absSpeedX = 5.0f;
+ }
+
+ f32 absSpeedZ = fabsf(actor->speed.z);
+ if (absSpeedZ < 5.0f) {
+ absSpeedZ = 5.0f;
+ }
+
+ i_this->field_0xe94 = 2;
+
+ f32 xDiff;
+ f32 yDiff;
+ f32 zDiff;
+ f32 dist;
+ f32 yOff;
+ s32 old_0x6e0;
+ switch (i_this->field_0x67d) {
+ case -1:
+ i_this->field_0x924 = 1;
+ if (!i_this->mpMorfSO->isStop()) {
+ break;
+ }
+ i_this->field_0x67d = 0;
+ case 0:
+ anm_init(i_this, 18, 1.0f, 2, 1.0f);
+
+ i_this->field_0x67d = 1;
+ i_this->field_0x6a4[0] = 100;
+ case 1:
+ i_this->field_0x924 = 1;
+
+ cLib_addCalcAngleS2(&actor->current.angle.y, actor->home.angle.y, 5, 0x300);
+ cLib_addCalcAngleS2(&actor->current.angle.x, 0, 5, 0x800);
+ cLib_addCalcAngleS2(&actor->current.angle.z, 0, 5, 0x800);
+ cLib_addCalc2(&actor->current.pos.x, actor->home.pos.x, 0.2f, absSpeedX);
+ cLib_addCalc2(&actor->current.pos.z, actor->home.pos.z, 0.2f, absSpeedZ);
+
+ actor->current.pos.y = actor->home.pos.y;
+
+ if (i_this->field_0x6a4[0] == 0 && e_yr_player_view_check(i_this)) {
+ i_this->field_0x67d = 2;
+ i_this->field_0x6a4[0] = 30;
+
+ anm_init(i_this, 7, 5.0f, 0, 1.0f);
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_FIND, -1);
+ }
+
+ break;
+ case 2:
+ i_this->field_0xe94 = 1;
+
+ if (i_this->field_0x6a4[0] != 0) {
+ break;
+ }
+
+ i_this->field_0x67d = 3;
+
+ anm_init(i_this, 8, 5.0f, 2, 1.5f * l_e_yrHIO.mFlyPlaybackSpeed);
+
+ i_this->field_0x6a4[0] = 70 + TREG_S(0);
+ case 3:
+ i_this->field_0xe94 = 1;
+
+ cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mYawToPlayer, 10, 0x200);
+
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = TREG_F(0) * 10.0f + 300.0f;
+ unkXyz1.z = TREG_F(1) * 10.0f + 300.0f;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ MtxPosition(&unkXyz1, &unkXyz2);
+ cLib_addCalc2(&actor->current.pos.x, actor->home.pos.x + unkXyz2.x, 0.1f, 10.0f);
+ cLib_addCalc2(&actor->current.pos.y, actor->home.pos.y + unkXyz2.y, 0.1f, 10.0f);
+ cLib_addCalc2(&actor->current.pos.z, actor->home.pos.z + unkXyz2.z, 0.1f, 10.0f);
+
+ if (i_this->field_0x6a4[0] == 0) {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+ }
+
+ break;
+ case 10:
+ case 11:
+ case 12:
+ unkChar1 = 0;
+
+ i_this->field_0xe94 = 0;
+
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 0.0f;
+ unkXyz1.z = 0.0f;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ MtxPosition(&unkXyz1, &unkXyz2);
+
+ yOff = 80.0f;
+
+ if (i_this->field_0x67d == 10) {
+ yOff = 300.0f;
+ }
+
+ i_this->field_0x680.x = actor->home.pos.x + unkXyz2.x;
+ i_this->field_0x680.y = actor->home.pos.y + yOff;
+ i_this->field_0x680.z = actor->home.pos.z + unkXyz2.z;
+ i_this->field_0x68c = 20.0f;
+ i_this->field_0x690 = 5.0f;
+ i_this->field_0x69c = 2000.0f;
+
+ xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ yDiff = i_this->field_0x680.y - actor->current.pos.y;
+ zDiff = i_this->field_0x680.z - actor->current.pos.z;
+ dist = JMAFastSqrt(xDiff * xDiff + yDiff * yDiff + zDiff * zDiff);
+
+ if (i_this->field_0x67d == 10) {
+ if (dist < 2000.0f) {
+ i_this->field_0x67d = 11;
+ } else {
+ if (e_yr_player_view_check(i_this)) {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_FIND, -1);
+ }
+ }
+ } else if (i_this->field_0x67d == 11) {
+ if (dist < (f32)l_e_yrHIO.mBrakeStartDist) {
+ i_this->field_0x67d = 12;
+
+ anm_init(i_this, 11, 10.0f, 0, 1.0f);
+ }
+ } else if (i_this->field_0x67d == 12) {
+ i_this->field_0xeb0 = 1000.0f + KREG_F(11);
+
+ if (dist < 10.0f * TREG_F(9) + 300.0f) {
+ i_this->field_0x67d = 20;
+
+ anm_init(i_this, 13, 5.0f, 2, l_e_yrHIO.field_0x44);
+
+ i_this->field_0x67c = 10;
+ actor->speed.y = 0.0f;
+ i_this->field_0x6e0 = 0;
+ unkChar1 = -1;
+ }
+ }
+
+ break;
+ case 20:
+ i_this->field_0x924 = 1;
+ i_this->field_0xe94 = 0;
+
+ old_0x6e0 = i_this->field_0x6e0;
+ i_this->field_0x6e0++;
+
+ cLib_addCalc2(&actor->current.pos.x, actor->home.pos.x, 0.1f, absSpeedX);
+ cLib_addCalc2(&actor->current.pos.z, actor->home.pos.z, 0.1f, absSpeedZ);
+
+ actor->current.pos.y += actor->speed.y;
+
+ if (old_0x6e0 > l_e_yrHIO.field_0x40) {
+ actor->speed.y -= 0.8f + TREG_F(7);
+ }
+
+ cLib_addCalcAngleS2(&actor->current.angle.x, 0, 5, 0x800);
+ cLib_addCalcAngleS2(&actor->current.angle.y, actor->home.angle.y, 5, 0x300);
+ cLib_addCalcAngleS2(&actor->current.angle.z, 0, 5, 0x800);
+
+ if (actor->current.pos.y <= actor->home.pos.y) {
+ actor->current.pos.y = actor->home.pos.y;
+ actor->speed.y = -0.5f;
+
+ if (old_0x6e0 > l_e_yrHIO.field_0x40) {
+ anm_init(i_this, 16, 5.0f, 0, l_e_yrHIO.field_0x48);
+
+ i_this->field_0x67d = 0xff;
+ }
+ }
+
+ break;
+ }
+
+ switch (unkChar1) {
+ case 0:
+ e_yr_pos_move(i_this);
+ break;
+ }
}
-/* ############################################################################################## */
-/* 80828B40-80828B98 -00001 0058+00 1/1 0/0 0/0 .data @5314 */
-SECTION_DATA static void* lit_5314[22] = {
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0xA8),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0xE4),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x10C),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x1F0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x23C),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x300),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x300),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x300),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x5D0),
- (void*)(((char*)e_yr_su_wait_move__FP10e_yr_class) + 0x4C8),
-};
-
/* 80825ADC-808260E8 0039BC 060C+00 2/1 0/0 0/0 .text e_yr_su_wait_move__FP10e_yr_class
*/
-static void e_yr_su_wait_move(e_yr_class* param_0) {
- // NONMATCHING
+static void e_yr_su_wait_move(e_yr_class* i_this) {
+ s32 old_0x6e0;
+
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*)playerActor;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+
+ s8 unkChar1 = -1;
+
+ f32 absSpeedX = fabsf(actor->speed.x);
+ if (absSpeedX < 5.0f) {
+ absSpeedX = 5.0f;
+ }
+
+ f32 absSpeedZ = fabsf(actor->speed.z);
+ if (absSpeedZ < 5.0f) {
+ absSpeedZ = 5.0f;
+ }
+
+ i_this->field_0xe94 = 2;
+
+ f32 xDiff;
+ f32 yDiff;
+ f32 zDiff;
+ f32 dist;
+ f32 yOff;
+ switch (i_this->field_0x67d) {
+ case -1:
+ i_this->field_0x924 = 1;
+
+ if (!i_this->mpMorfSO->isStop()) {
+ break;
+ }
+
+ i_this->field_0x67d = 0;
+ case 0:
+ anm_init(i_this, 18, 1.0f, 2, 1.0f);
+
+ i_this->field_0x67d = 1;
+ i_this->field_0x6a4[0] = 100;
+ case 1:
+ i_this->field_0x924 = 1;
+
+ cLib_addCalcAngleS2(&actor->current.angle.y, actor->home.angle.y, 5, 0x300);
+ cLib_addCalcAngleS2(&actor->current.angle.x, 0, 5, 0x800);
+ cLib_addCalcAngleS2(&actor->current.angle.z, 0, 5, 0x800);
+ cLib_addCalc2(&actor->current.pos.x, actor->home.pos.x, 0.2f, absSpeedX);
+ cLib_addCalc2(&actor->current.pos.z, actor->home.pos.z, 0.2f, absSpeedZ);
+
+ actor->current.pos.y = actor->home.pos.y;
+
+ if (i_this->field_0x6a4[0] == 0 && e_yr_player_view_check(i_this)) {
+ i_this->field_0x67d = 2;
+ i_this->field_0x6a4[0] = 30;
+
+ anm_init(i_this, 7, 5.0f, 0, 1.0f);
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_FIND, -1);
+ }
+
+ break;
+ case 2:
+ i_this->field_0xe94 = 1;
+
+ if (i_this->field_0x6a4[0] != 0) {
+ break;
+ }
+
+ i_this->field_0x67d = 3;
+
+ anm_init(i_this, 8, 5.0f, 2, l_e_yrHIO.mFlyPlaybackSpeed * 1.5f);
+
+ i_this->field_0x6a4[0] = TREG_S(0) + 0x46;
+ case 3:
+ i_this->field_0xe94 = 1;
+ cLib_addCalcAngleS2(&actor->current.angle.y, i_this->mYawToPlayer, 10, 0x200);
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 10.0f * TREG_F(0) + 300.0f;
+ unkXyz1.z = 10.0f * TREG_F(1) + 300.0f;
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ MtxPosition(&unkXyz1, &unkXyz2);
+
+ cLib_addCalc2(&actor->current.pos.x, actor->home.pos.x + unkXyz2.x, 0.1f, 10.0f);
+ cLib_addCalc2(&actor->current.pos.y, actor->home.pos.y + unkXyz2.y, 0.1f, 10.0f);
+ cLib_addCalc2(&actor->current.pos.z, actor->home.pos.z + unkXyz2.z, 0.1f, 10.0f);
+
+ if (i_this->field_0x6a4[0] == 0) {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+ }
+
+ break;
+ case 10:
+ case 11:
+ case 12:
+ unkChar1 = 0;
+ i_this->field_0xe94 = 0;
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = 0.0f;
+ unkXyz1.z = 0.0f;
+
+ cMtx_YrotS(*calc_mtx, actor->current.angle.y);
+ MtxPosition(&unkXyz1, &unkXyz2);
+
+ yOff = 80.0f;
+ if (i_this->field_0x67d == 10) {
+ yOff = 300.0f;
+ }
+
+ i_this->field_0x680.x = actor->home.pos.x + unkXyz2.x;
+ i_this->field_0x680.y = actor->home.pos.y + yOff;
+ i_this->field_0x680.z = actor->home.pos.z + unkXyz2.z;
+
+ i_this->field_0x68c = 20.0f;
+ i_this->field_0x690 = 5.0f;
+ i_this->field_0x69c = 2000.0f;
+
+ xDiff = i_this->field_0x680.x - actor->current.pos.x;
+ yDiff = i_this->field_0x680.y - actor->current.pos.y;
+ zDiff = i_this->field_0x680.z - actor->current.pos.z;
+
+ dist = JMAFastSqrt(xDiff * xDiff + yDiff * yDiff + zDiff * zDiff);
+
+ if (i_this->field_0x67d == 10) {
+ if (dist < 2000.0f) {
+ i_this->field_0x67d = 11;
+ }
+ } else if (i_this->field_0x67d == 11) {
+ if (dist < (f32)l_e_yrHIO.mBrakeStartDist) {
+ i_this->field_0x67d = 12;
+
+ anm_init(i_this, 11, 10.0f, 0, 1.0f);
+ }
+ } else if (i_this->field_0x67d == 12) {
+ i_this->field_0xeb0 = 1000.0f + KREG_F(11);
+
+ if (dist < 10.0f * TREG_F(9) + 300.0f) {
+ i_this->field_0x67d = 20;
+
+ anm_init(i_this, 13, 5.0f, 2, l_e_yrHIO.field_0x44);
+
+ i_this->field_0x67c = 10;
+ actor->speed.y = 0.0f;
+ i_this->field_0x6e0 = 0;
+ unkChar1 = -1;
+ }
+ }
+
+ break;
+ case 20:
+ i_this->field_0x924 = 1;
+ i_this->field_0xe94 = 0;
+
+ old_0x6e0 = i_this->field_0x6e0;
+ i_this->field_0x6e0++;
+
+ cLib_addCalc2(&actor->current.pos.x, actor->home.pos.x, 0.1f, absSpeedX);
+ cLib_addCalc2(&actor->current.pos.z, actor->home.pos.z, 0.1f, absSpeedZ);
+
+ actor->current.pos.y += actor->speed.y;
+
+ if (old_0x6e0 > l_e_yrHIO.field_0x40) {
+ actor->speed.y -= 0.8f + TREG_F(7);
+ }
+
+ cLib_addCalcAngleS2(&actor->current.angle.x, 0, 5, 0x800);
+ cLib_addCalcAngleS2(&actor->current.angle.y, actor->home.angle.y, 5, 0x300);
+ cLib_addCalcAngleS2(&actor->current.angle.z, 0, 5, 0x800);
+
+ if (actor->current.pos.y <= actor->home.pos.y) {
+ actor->current.pos.y = actor->home.pos.y;
+ actor->speed.y = -0.5f;
+
+ if (old_0x6e0 > l_e_yrHIO.field_0x40) {
+ anm_init(i_this, 16, 5.0f, 0, l_e_yrHIO.field_0x48);
+
+ i_this->field_0x67d = 0xff;
+ }
+ }
+ break;
+ }
+ switch (unkChar1) {
+ case 0:
+ e_yr_pos_move(i_this);
+ break;
+ }
}
-/* ############################################################################################## */
-/* 80828954-80828958 000104 0004+00 0/1 0/0 0/0 .rodata @5216 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5216 = 1.5f;
-COMPILER_STRIP_GATE(0x80828954, &lit_5216);
-#pragma pop
-
-/* 80828958-8082895C 000108 0004+00 0/0 0/0 0/0 .rodata @5217 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5217 = 80.0f;
-COMPILER_STRIP_GATE(0x80828958, &lit_5217);
-#pragma pop
-
-/* 8082895C-80828960 00010C 0004+00 0/0 0/0 0/0 .rodata @5371 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5371 = -50.0f;
-COMPILER_STRIP_GATE(0x8082895C, &lit_5371);
-#pragma pop
-
-/* 80828960-80828964 000110 0004+00 0/1 0/0 0/0 .rodata @5424 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5424 = -3.0f;
-COMPILER_STRIP_GATE(0x80828960, &lit_5424);
-#pragma pop
-
-/* 80828964-80828968 000114 0004+00 0/1 0/0 0/0 .rodata @5425 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5425 = 24.0f / 25.0f;
-COMPILER_STRIP_GATE(0x80828964, &lit_5425);
-#pragma pop
-
-/* 80828968-8082896C 000118 0004+00 0/1 0/0 0/0 .rodata @5426 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5426 = -30.0f;
-COMPILER_STRIP_GATE(0x80828968, &lit_5426);
-#pragma pop
+f32 dummy() {
+ return -50.0f;
+}
/* 808260E8-808264F4 003FC8 040C+00 1/1 0/0 0/0 .text e_yr_damage__FP10e_yr_class */
-static void e_yr_damage(e_yr_class* param_0) {
- // NONMATCHING
+static s8 e_yr_damage(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+ fopEn_enemy_c* enemy = (fopEn_enemy_c*)actor;
+
+ cXyz unkXyz1;
+
+ i_this->field_0xe94 = 0;
+ i_this->field_0x6d0 = 10;
+ actor->speedF = 0.0f;
+
+ cLib_addCalcAngleS2(&actor->current.angle.x, 0, 1, 0x800);
+
+ if (enemy->checkCutDownHitFlg()) {
+ enemy->offCutDownHitFlg();
+
+ i_this->field_0x67d = 3;
+ i_this->field_0x6a4[0] = 0x46;
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_DEATH, -1);
+
+ enemy->offDownFlg();
+
+ i_this->field_0xeb0 = 5000.0f + KREG_F(17);
+ i_this->field_0xeb6 = i_this->field_0xeb8 = 0;
+ i_this->field_0xeba = cM_rndF(400.0f);
+ i_this->field_0xebc = cM_rndF(400.0f);
+ i_this->field_0xec6 = 15 + TREG_S(7);
+ actor->health = 0;
+ }
+
+ s8 retVal = 0;
+ s8 unkFlag1 = 1;
+
+ switch (i_this->field_0x67d) {
+ case 0:
+ anm_init(i_this, 6, 0.0f, 0, 1.0f);
+
+ i_this->field_0x67d = 1;
+
+ unkXyz1.x = 0.0f;
+ unkXyz1.y = BREG_F(4) + 30.0f + cM_rndF(10.0f);
+ unkXyz1.z = -i_this->field_0x6d8;
+ cMtx_YrotS(*calc_mtx, i_this->field_0x6d2);
+ MtxPosition(&unkXyz1, &actor->speed);
+
+ i_this->field_0xebe = 8000;
+ i_this->field_0x6a4[0] = cM_rndF(10.0f) + 30.0f;
+ i_this->field_0x6a4[1] = 60;
+ case 1:
+ actor->current.pos += actor->speed;
+ actor->speed.y += -3.0f;
+ if (actor->speed.y < 0.0f) {
+ actor->speed.x *= 0.96f;
+ actor->speed.z *= 0.96f;
+
+ cLib_addCalcAngleS2(&i_this->field_0x6f2.x, -0x4000, 4, 0x180 + BREG_S(7));
+ }
+
+ i_this->field_0xeb0 = 3000.0f + KREG_F(14);
+
+ actor->current.angle.y = actor->current.angle.y + i_this->field_0x6dc;
+
+ if (actor->health > 0) {
+ if (i_this->field_0x6a4[0] == 0 || i_this->mAcch.ChkGroundHit()) {
+ retVal = 1;
+ }
+ } else {
+ unkFlag1 = 0;
+
+ if (i_this->mAcch.ChkGroundHit() || i_this->field_0x6a4[1] == 0) {
+ yr_disappear(i_this);
+ fopAcM_delete(actor);
+
+ return unkFlag1;
+ }
+ }
+ }
+
+ if (actor->speed.y < -30.0f) {
+ actor->speed.y = -30.0f;
+ }
+
+ if (enemy->checkDownFlg()) {
+ enemy->setDownPos(&actor->current.pos);
+ }
+
+ if (i_this->field_0xec6 != 0) {
+ i_this->field_0xec6--;
+ i_this->field_0xec4 = i_this->field_0xec6 *
+ cM_ssin(i_this->field_0xec6 * (TREG_S(9) + 0x3800)) *
+ (100.0f + TREG_F(5));
+ }
+
+ if (retVal) {
+ i_this->field_0x6d8 = 0.0f;
+ i_this->field_0xebe = i_this->field_0xeb6 = i_this->field_0xeb8 = 0;
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 0;
+
+ i_this->field_0x6a4[1] = l_e_yrHIO.mAttackBMinTime +
+ cM_rndF(l_e_yrHIO.mAttackBMaxTime - l_e_yrHIO.mAttackBMinTime);
+ i_this->field_0x6e9 = 0;
+ i_this->field_0xec8 = 1;
+ actor->current.angle.x = -0x3000;
+
+ enemy->offDownFlg();
+ }
+
+ return unkFlag1;
}
/* 808264F4-808267C0 0043D4 02CC+00 1/1 0/0 0/0 .text damage_check__FP10e_yr_class */
-static void damage_check(e_yr_class* param_0) {
- // NONMATCHING
+static void damage_check(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ fopAc_ac_c* unusedPlayer = dComIfGp_getPlayer(0);
+
+ i_this->mStts.Move();
+
+ if ((i_this->mSph3.ChkTgHit() || i_this->mSph2.ChkTgHit()) && i_this->field_0x6d0 == 0) {
+ if (i_this->mSph3.ChkTgHit()) {
+ i_this->mAtInfo.mpCollider = i_this->mSph3.GetTgHitObj();
+ } else {
+ if (i_this->mSph2.ChkTgHit()) {
+ i_this->mAtInfo.mpCollider = i_this->mSph2.GetTgHitObj();
+ }
+ }
+
+ s16 health = actor->health;
+
+ i_this->mAtInfo.mpActor = cc_at_check(actor, &i_this->mAtInfo);
+
+ if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_MIDNA_LOCK | AT_TYPE_10000000 |
+ AT_TYPE_WOLF_CUT_TURN | AT_TYPE_WOLF_ATTACK))
+ {
+ i_this->field_0x6d0 = 20;
+ } else {
+ i_this->field_0x6d0 = 10;
+ }
+
+ dKy_Sound_set(actor->current.pos, 100, fopAcM_GetID(i_this), 5);
+
+#if DEBUG
+ if (l_e_yrHIO.mInvulnerable) {
+ actor->health = 40;
+ }
+#endif
+
+ if (i_this->mAtInfo.mAttackPower == 0) {
+ i_this->field_0x669 = 3;
+ i_this->field_0x67d = 10;
+ i_this->field_0x6a4[0] = l_e_yrHIO.mChanceTime;
+
+ anm_init(i_this, 14, 0.0f, 0, l_e_yrHIO.field_0x38);
+
+ i_this->field_0x68c = TREG_F(7);
+ i_this->field_0x690 = 1.0f;
+ actor->speedF = -20.0f;
+
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_DAMAGE_S, -1);
+ } else {
+ if (i_this->mAtInfo.mHitType == 1) {
+ i_this->field_0x6d2 = i_this->mYawToPlayer;
+ i_this->field_0x6d4 = i_this->mPitchToPlayer;
+ } else {
+ i_this->field_0x6d2 = i_this->mAtInfo.mHitDirection.y;
+ i_this->field_0x6d4 = 0;
+ }
+
+ i_this->field_0x669 = 10;
+ i_this->field_0x67d = 0;
+
+ if (i_this->mAtInfo.mHitStatus) {
+ i_this->field_0x6d8 = l_e_yrHIO.mLargeDamage;
+ } else {
+ i_this->field_0x6d8 = l_e_yrHIO.mSmallDamage;
+ }
+
+ if (cM_rndF(1.0f) < 0.5f) {
+ i_this->field_0x6dc = cM_rndF(1000.0f) + 1000.0f;
+ } else {
+ i_this->field_0x6dc = -(cM_rndF(1000.0f) + 1000.0f);
+ }
+
+ if (actor->health <= 0) {
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_DEATH, -1);
+ } else {
+ i_this->mSound.startCreatureVoice(Z2SE_EN_YR_V_DAMAGE, -1);
+ }
+ }
+ }
}
-/* ############################################################################################## */
-/* 8082896C-80828970 00011C 0004+00 0/1 0/0 0/0 .rodata @5561 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5561 = -1000000000.0f;
-COMPILER_STRIP_GATE(0x8082896C, &lit_5561);
-#pragma pop
-
-/* 80828970-80828974 000120 0004+00 0/1 0/0 0/0 .rodata @5562 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5562 = 75.0f;
-COMPILER_STRIP_GATE(0x80828970, &lit_5562);
-#pragma pop
-
/* 808267C0-80826AFC 0046A0 033C+00 1/1 0/0 0/0 .text ground_angle_set__FP10e_yr_class */
-static void ground_angle_set(e_yr_class* param_0) {
- // NONMATCHING
+static void ground_angle_set(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ J3DModel* model;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+ Vec unkVec1;
+
+ s16 unkShort1 = 0;
+ s16 unkShort2 = 0;
+
+ f32 xDiff;
+ f32 yDiff;
+ f32 zDiff;
+
+ if (i_this->field_0x6f2.x <= -0x1000) {
+ cXyz unkXyz3;
+ cXyz unkXyz4;
+ dBgS_GndChk gndChk;
+ f32 unkFloat1 = 75.0f;
+
+ model = i_this->mpMorfSO->getModel();
+ MTXCopy(model->getAnmMtx(0), *calc_mtx);
+ unkXyz1.set(0.0f, 0.0f, 0.0f);
+ MtxPosition(&unkXyz1, &unkXyz3);
+
+ unkXyz3.y += 100.0f;
+ unkXyz3.y += 100.0f;
+ gndChk.SetPos(&unkXyz3);
+
+ unkXyz3.y = dComIfG_Bgsp().GroundCross(&gndChk);
+ if (unkXyz3.y != -1e+09f) {
+ unkVec1.x = unkXyz3.x;
+ unkVec1.y = unkXyz3.y + 100.0f;
+ unkVec1.z = unkXyz3.z + unkFloat1;
+ gndChk.SetPos(&unkVec1);
+
+ unkVec1.y = dComIfG_Bgsp().GroundCross(&gndChk);
+ if (unkVec1.y != -1e+09f) {
+ yDiff = unkVec1.y - unkXyz3.y;
+ zDiff = unkVec1.z - unkXyz3.z;
+ unkShort2 = -cM_atan2s(yDiff, zDiff);
+ if (unkShort2 > 0x3000 || unkShort2 < -0x3000) {
+ unkShort2 = 0;
+ }
+ }
+ unkVec1.x = unkXyz3.x + unkFloat1;
+ unkVec1.y = unkXyz3.y + 100.0f;
+ unkVec1.z = unkXyz3.z;
+ gndChk.SetPos(&unkVec1);
+ unkVec1.y = dComIfG_Bgsp().GroundCross(&gndChk);
+ if (unkVec1.y != -1e+09f) {
+ yDiff = unkVec1.y - unkXyz3.y;
+ xDiff = unkVec1.x - unkXyz3.x;
+ unkShort1 = (s16)cM_atan2s(yDiff, xDiff);
+ if (unkShort1 > 0x3000 || unkShort1 < -0x3000)
+ {
+ unkShort1 = 0;
+ }
+ }
+ }
+
+ dBgS_LinChk linChk;
+ cXyz unkXyz5;
+ cXyz unkXyz6;
+ cXyz unkXyz7;
+
+ unkXyz6 = actor->current.pos;
+ unkXyz6.y += 30.0f + JREG_F(5);
+
+ model = i_this->mpMorfSO->getModel();
+ unkXyz5.set(0.0f, 0.0f, 0.0f);
+ MTXCopy(model->getAnmMtx(5), *calc_mtx);
+
+ MtxPosition(&unkXyz5, &unkXyz7);
+ unkXyz7.y += JREG_F(6) + 30.0f;
+
+ linChk.Set(&unkXyz6, &unkXyz7, actor);
+
+ if (dComIfG_Bgsp().LineCross(&linChk)) {
+ unkXyz5 = unkXyz6 - unkXyz7;
+ cMtx_YrotS(*calc_mtx, cM_atan2s(unkXyz5.x, unkXyz5.z));
+
+ unkXyz5.x = 0.0f;
+ unkXyz5.y = 0.0f;
+ unkXyz5.z = TREG_F(11) + 50.0f;
+ MtxPosition(&unkXyz5, &unkXyz2);
+
+ actor->current.pos += unkXyz2;
+ }
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0x6f8.x, unkShort2, 1, 0x400);
+ cLib_addCalcAngleS2(&i_this->field_0x6f8.z, unkShort1, 1, 0x400);
}
-/* ############################################################################################## */
-/* 80828974-80828978 000124 0004+00 0/1 0/0 0/0 .rodata @6057 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6057 = 27.0f;
-COMPILER_STRIP_GATE(0x80828974, &lit_6057);
-#pragma pop
-
-/* 80828978-8082897C 000128 0004+00 0/1 0/0 0/0 .rodata @6058 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6058 = 11.0f;
-COMPILER_STRIP_GATE(0x80828978, &lit_6058);
-#pragma pop
-
-/* 8082897C-80828980 00012C 0004+00 0/2 0/0 0/0 .rodata @6059 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6059 = 10000.0f;
-COMPILER_STRIP_GATE(0x8082897C, &lit_6059);
-#pragma pop
-
-/* 80828980-80828984 000130 0004+00 0/1 0/0 0/0 .rodata @6060 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6060 = 200000.0f;
-COMPILER_STRIP_GATE(0x80828980, &lit_6060);
-#pragma pop
-
-/* 80828984-80828988 000134 0004+00 0/1 0/0 0/0 .rodata @6061 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6061 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80828984, &lit_6061);
-#pragma pop
-
-/* 80828988-8082898C 000138 0004+00 0/1 0/0 0/0 .rodata @6062 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6062 = 13.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80828988, &lit_6062);
-#pragma pop
-
-/* 80828B98-80828BA8 0001E4 0010+00 0/0 0/0 0/0 .data wing_j$5339 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 wing_j_5339[16] = {
- 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12,
-};
-#pragma pop
-
-/* 80828BA8-80828BB4 0001F4 000A+02 0/1 0/0 0/0 .data e_name$5628 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 e_name_5628[10 + 2 /* padding */] = {
- 0x84,
- 0x3A,
- 0x84,
- 0x3B,
- 0x84,
- 0x3C,
- 0x84,
- 0x3D,
- 0x84,
- 0x3E,
- /* padding */
- 0x00,
- 0x00,
-};
-#pragma pop
-
-/* 80828BB4-80828BC4 000200 0010+00 0/1 0/0 0/0 .data wing_j$5629 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 wing_j_5629[16] = {
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12,
-};
-#pragma pop
-
-/* 80828BC4-80828BC8 000210 0004+00 0/1 0/0 0/0 .data e_name$5644 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 e_name_5644[4] = {
- 0x84,
- 0x44,
- 0x84,
- 0x45,
-};
-#pragma pop
-
-/* 80828BC8-80828BD0 000214 0008+00 0/1 0/0 0/0 .data wing_j$5645 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 wing_j_5645[8] = {
- 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x11,
-};
-#pragma pop
-
/* 80826AFC-8082789C 0049DC 0DA0+00 2/1 0/0 0/0 .text daE_Yr_Execute__FP10e_yr_class */
-static void daE_Yr_Execute(e_yr_class* param_0) {
- // NONMATCHING
+static int daE_Yr_Execute(e_yr_class* i_this) {
+ static s32 wing_j[4] = {12, 13, 17, 18};
+
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ fopAc_ac_c* playerActor = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*)playerActor;
+
+ cXyz unkXyz1;
+ cXyz unkXyz2;
+
+ f32 xDiff = playerActor->current.pos.x - actor->current.pos.x;
+ f32 yDiff = (100.0f + playerActor->current.pos.y) - actor->current.pos.y;
+ f32 zDiff = playerActor->current.pos.z - actor->current.pos.z;
+
+ i_this->mPlayerLatDist = JMAFastSqrt(xDiff * xDiff + zDiff * zDiff);
+ i_this->mYawToPlayer = cM_atan2s(xDiff, zDiff);
+ i_this->mPitchToPlayer = -cM_atan2s(yDiff, i_this->mPlayerLatDist);
+
+ i_this->field_0x6de++;
+
+ if (i_this->field_0x67e != 0) {
+ if (dComIfGs_isSwitch(i_this->field_0x67e - 1, fopAcM_GetRoomNo(actor))) {
+ i_this->field_0x67e = 0;
+ } else {
+ return 1;
+ }
+ }
+
+ actor->attention_info.flags = 0x4;
+
+ fopAcM_OnStatus(actor, 0);
+
+ s8 unkFlag1 = 1;
+
+ if (l_e_yrHIO.mStationary == 0) {
+
+ for (s32 i = 0; i < 6; i++) {
+ if (i_this->field_0x6a4[i] != 0) {
+ i_this->field_0x6a4[i]--;
+ }
+ }
+
+ if (i_this->field_0x6b2 != 0) {
+ i_this->field_0x6b2--;
+ }
+
+ if (i_this->field_0x6d0 != 0) {
+ i_this->field_0x6d0--;
+ }
+
+ i_this->mpMorfSO->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
+
+ if (i_this->field_0x5b8 == 12) {
+ i_this->mSound.startCreatureSoundLevel(Z2SE_EN_YR_GLIDE, 0, -1);
+ } else if (i_this->field_0x5b8 == 15) {
+ i_this->mSound.startCreatureSoundLevel(Z2SE_EN_YR_V_HOVERING, 0, -1);
+ if (i_this->mpMorfSO->checkFrame(12.0f)) {
+ i_this->mSound.startCreatureSound(Z2SE_EN_YR_WING, 0, -1);
+ }
+ } else if (i_this->mpMorfSO->checkFrame(27.0f) && i_this->field_0x5b8 == 8) {
+ i_this->mSound.startCreatureSound(Z2SE_EN_YR_WING, 0, -1);
+ } else if (i_this->mpMorfSO->checkFrame(11.0f) && i_this->field_0x5b8 == 13) {
+ i_this->mSound.startCreatureSound(Z2SE_EN_YR_WING, 0, -1);
+ } else if (i_this->mpMorfSO->checkFrame(12.0f) && i_this->field_0x5b8 == 15) {
+ i_this->mSound.startCreatureSound(Z2SE_EN_YR_WING, 0, -1);
+ }
+
+ if (i_this->field_0x669 == 10) {
+ unkFlag1 = e_yr_damage(i_this);
+ } else {
+ actor->attention_info.distances[fopAc_attn_BATTLE_e] = 3;
+ s8 unkFlag2 = 0;
+ if (i_this->field_0x6e9 != 0) {
+ e_yr_path_move(i_this);
+ } else {
+ if (i_this->field_0x669 == 9) {
+ actor->attention_info.distances[fopAc_attn_BATTLE_e] = 22;
+
+ e_yr_horse_move(i_this);
+
+ unkFlag2 = 1;
+ } else if (i_this->field_0x669 == 3) {
+ e_yr_atack_move(i_this);
+
+ unkFlag2 = 1;
+ } else if (i_this->field_0x669 == 4) {
+ e_yr_wait_move(i_this);
+ } else if (i_this->field_0x669 == 7) {
+ e_yr_su_wait_move(i_this);
+ } else {
+ e_yr_auto_move(i_this);
+ }
+ }
+
+ if (unkFlag2 != 0) {
+ i_this->mSound.setLinkSearch(true);
+ } else {
+ i_this->mSound.setLinkSearch(false);
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0x6f2.x, 0, 4, 0x800);
+ }
+ }
+ if (unkFlag1 == 0) {
+ fopAcM_OffStatus(actor, 0);
+ actor->attention_info.flags = 0;
+ }
+
+ actor->shape_angle = actor->current.angle + i_this->field_0x6f2;
+
+ ground_angle_set(i_this);
+
+ MtxTrans(actor->current.pos.x, actor->current.pos.y, actor->current.pos.z, 0);
+ cMtx_XrotM(*calc_mtx, i_this->field_0x6f8.x);
+ cMtx_ZrotM(*calc_mtx, i_this->field_0x6f8.z);
+ cMtx_YrotM(*calc_mtx, actor->shape_angle.y);
+ cMtx_XrotM(*calc_mtx, actor->shape_angle.x);
+ cMtx_ZrotM(*calc_mtx, actor->shape_angle.z);
+ MtxScale(l_e_yrHIO.mModelScale, l_e_yrHIO.mModelScale, l_e_yrHIO.mModelScale, 1);
+
+ J3DModel* model = i_this->mpMorfSO->getModel();
+ model->setBaseScale(actor->scale);
+ model->setBaseTRMtx(*calc_mtx);
+ i_this->mpMorfSO->modelCalc();
+
+ if (i_this->field_0xf1c == 0) {
+ static u16 e_name[5] = {0x843A, 0x843B, 0x843C, 0x843D, 0x843E};
+ static s32 wing_j[4] = {11, 13, 16, 18};
+
+ for (s32 i = 0; i < 5; i++) {
+ i_this->mEmitterIds[i] = dComIfGp_particle_set(i_this->mEmitterIds[i], e_name[i], &actor->current.pos, NULL, NULL);
+ if (i != 4) {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mEmitterIds[i]);
+ if (emitter != NULL) {
+ emitter->setGlobalRTMatrix(model->getAnmMtx(wing_j[i]));
+ }
+ }
+ }
+ }
+
+ if (i_this->field_0x5b8 == 4 && i_this->mpMorfSO->checkFrame(1.0f)) {
+ dComIfGp_particle_set(0x8435, &actor->current.pos, NULL, NULL);
+ }
+
+ if (i_this->field_0x5b8 == 6) {
+ static u16 e_name[2] = {0x8444, 0x8445};
+ static s32 wing_j[2] = {12, 17};
+
+ i_this->field_0xf1c = 1;
+ for (s32 i = 0; i < 2; i++) {
+ i_this->mEmitterIds[i + 5] = dComIfGp_particle_set(i_this->mEmitterIds[i + 5], e_name[i], &actor->current.pos, NULL, NULL);
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mEmitterIds[i + 5]);
+ if (emitter != NULL) {
+ emitter->setGlobalRTMatrix(model->getAnmMtx(wing_j[i]));
+ }
+ }
+ } else {
+ i_this->field_0xf1c = 0;
+ }
+
+ MTXCopy(model->getAnmMtx(6), *calc_mtx);
+ unkXyz1.set(0.0f, 0.0f, 0.0f);
+ MtxPosition(&unkXyz1, &actor->eyePos);
+ actor->attention_info.position = actor->eyePos;
+ actor->attention_info.position.y += 50.0f + 10.0f * TREG_F(8);
+ MTXCopy(model->getAnmMtx(22), *calc_mtx);
+ MtxPosition(&unkXyz1, &i_this->field_0xe6c[0]);
+ MTXCopy(model->getAnmMtx(27), *calc_mtx);
+ MtxPosition(&unkXyz1, &i_this->field_0xe6c[1]);
+
+ if (i_this->field_0x66b != 0) {
+ fopAc_ac_c* unkActor1;
+ switch (i_this->field_0x66b) {
+ case 1: {
+ i_this->field_0x66b = 2;
+
+ break;
+ }
+ case 2: {
+ if ((unkActor1 = fopAcM_SearchByID(i_this->field_0x674)) != 0) {
+ i_this->field_0x670 = unkActor1;
+ i_this->field_0x66b = 3;
+ }
+
+ break;
+ }
+ case 3: {
+ unkActor1 = i_this->field_0x670;
+
+ cXyz unkXyz3;
+ unkXyz3.x = i_this->field_0xe6c[0].x +
+ (i_this->field_0xe6c[1].x - i_this->field_0xe6c[0].x) / 2;
+ unkXyz3.y = i_this->field_0xe6c[0].y +
+ (i_this->field_0xe6c[1].y - i_this->field_0xe6c[0].y) / 2;
+ unkXyz3.z = i_this->field_0xe6c[0].z +
+ (i_this->field_0xe6c[1].z - i_this->field_0xe6c[0].z) / 2;
+ unkActor1->current.pos = unkXyz3;
+
+ unkActor1->current.angle = actor->current.angle;
+ unkActor1->shape_angle = actor->current.angle;
+
+ break;
+ }
+ }
+ }
+
+ if (i_this->field_0x6d0 != 0) {
+ cXyz unkXyz4(actor->eyePos.x - 10000.0f, 10000.0f, 200000.0f);
+ i_this->mSph2.SetC(unkXyz4);
+ i_this->mSph3.SetC(unkXyz4);
+ i_this->mSph4.SetC(unkXyz4);
+ } else {
+ i_this->mSph2.SetC(actor->eyePos);
+ i_this->mSph3.SetC(actor->current.pos);
+ i_this->mSph4.SetC(actor->current.pos);
+ }
+
+ dComIfG_Ccsp()->Set(&i_this->mSph2);
+ dComIfG_Ccsp()->Set(&i_this->mSph3);
+ dComIfG_Ccsp()->Set(&i_this->mSph4);
+
+ cXyz* unkXyzP = i_this->mStts.GetCCMoveP();
+ if (unkXyzP != NULL) {
+ f32 temp_f28 = 0.3f + TREG_F(19);
+ actor->current.pos.x += unkXyzP->x * temp_f28;
+#if DEBUG
+ actor->current.pos.y += unkXyzP->y * temp_f28;
+#endif
+ actor->current.pos.z += unkXyzP->z * temp_f28;
+ }
+
+ if (i_this->field_0x924 == 0 || fabsf(i_this->field_0x6d8) > 0.01f) {
+
+ f32 unkFloat1 = 70.0f + TREG_F(15);
+ if (i_this->field_0x669 == 10) {
+ unkFloat1 = 5.0f + TREG_F(14);
+ }
+
+#if DEBUG
+ actor->current.pos.y -= unkFloat1;
+ actor->old.pos.y -= unkFloat1;
+#else
+ cLib_addCalc2(&i_this->field_0x928, unkFloat1, 1.0f, 2.0f);
+ actor->current.pos.y -= i_this->field_0x928;
+ actor->old.pos.y -= i_this->field_0x928;
+#endif
+ i_this->mAcch.CrrPos(dComIfG_Bgsp());
+#if DEBUG
+ actor->current.pos.y += unkFloat1;
+ actor->old.pos.y += unkFloat1;
+#else
+ actor->current.pos.y += i_this->field_0x928;
+ actor->old.pos.y += i_this->field_0x928;
+#endif
+ }
+
+ i_this->field_0x924 = 0;
+
+ damage_check(i_this);
+
+ s16 unkShort1 = 0x800;
+ if (i_this->field_0xe94 != 0) {
+ if (i_this->field_0xe94 == 1) {
+ xDiff = playerActor->current.pos.x - actor->current.pos.x;
+ zDiff = playerActor->current.pos.z - actor->current.pos.z;
+ s16 yaw = cM_atan2s(xDiff, zDiff);
+ i_this->field_0xe86 = actor->current.angle.y - yaw;
+ if (i_this->field_0xe86 > 10000) {
+ i_this->field_0xe86 = 10000;
+ } else if (i_this->field_0xe86 < -10000) {
+ i_this->field_0xe86 = -10000;
+ }
+ } else if (i_this->field_0xe94 == 2) {
+ unkShort1 = 0x200;
+
+ if ((i_this->field_0x6de & 0x1f) == 0 && cM_rndF(1.0f) < 0.5f) {
+ i_this->field_0xe86 = cM_rndFX(10000.0f);
+ }
+ if ((i_this->field_0x6de & 0x3f) == 0 && cM_rndF(1.0f) < 0.5f) {
+ kuti_open(i_this, 25, Z2SE_EN_YR_V_NAKU);
+ }
+ }
+
+ i_this->field_0xe94 = 0;
+ } else {
+ i_this->field_0xe86 = 0;
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0xe84, -(i_this->field_0xe86 / 2), 2, unkShort1);
+
+ s16 unkShort2 = 0;
+ if (i_this->field_0xe8a != 0) {
+ i_this->field_0xe8a--;
+ unkShort2 = 10000;
+ if (i_this->field_0xe8a == i_this->field_0xe8c && i_this->field_0xe90 != Z2SE_SY_DUMMY) {
+ i_this->mSound.startCreatureVoice(i_this->field_0xe90, -1);
+ }
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0xe88, unkShort2, 2, 2000);
+
+ for (s32 i = 0; i <= 8; i++) {
+ i_this->field_0xe96[i] = i_this->field_0xeb0 *
+ cM_ssin(i_this->field_0x6de * (7000 + KREG_S(2)) + i * (11000 + KREG_S(3)));
+ }
+
+ cLib_addCalc0(&i_this->field_0xeb0, 1.0f, 200.0f + TREG_F(18));
+
+ s16 unkShort3;
+ s16 unkShort4;
+ if (i_this->field_0x6d8 > 0.01f) {
+ s16 unkShort5 = (s16)i_this->field_0x6d2;
+ s16 unkShort6 = unkShort5 - actor->shape_angle.y;
+ if (i_this->field_0x6f2.x <= -0x1000) {
+ unkShort6 = 0;
+ }
+
+ unkShort3 = -unkShort6 + 0x4000;
+ if (unkShort3 > 15000) {
+ unkShort3 = 15000;
+ } else if (unkShort3 < -15000) {
+ unkShort3 = -15000;
+ }
+
+ unkShort4 = unkShort6 + 0x4000;
+ if (unkShort4 > 15000) {
+ unkShort4 = 15000;
+ } else if (unkShort4 < -15000) {
+ unkShort4 = -15000;
+ }
+ } else {
+ unkShort3 = unkShort4 = 0;
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0xea8, unkShort3, 4, 0x800);
+ cLib_addCalcAngleS2(&i_this->field_0xeaa, unkShort4, 4, 0x800);
+
+ i_this->field_0xeb4 = i_this->field_0xec0 * cM_ssin(i_this->field_0x6de * (7000 + NREG_S(2)));
+
+ cLib_addCalc0(&i_this->field_0xec0, 1.0f, 300.0f + NREG_F(18));
+
+ cXyz midnaBindEffSize(1.3f, 1.3f, 1.3f);
+ setMidnaBindEffect((fopEn_enemy_c*)actor, &i_this->mSound, &actor->eyePos, &midnaBindEffSize);
+
+ return 1;
}
/* 8082789C-808278A4 00577C 0008+00 1/0 0/0 0/0 .text daE_Yr_IsDelete__FP10e_yr_class */
-static bool daE_Yr_IsDelete(e_yr_class* param_0) {
- return true;
+static int daE_Yr_IsDelete(e_yr_class* i_this) {
+ return 1;
}
/* 808278A4-808278F4 005784 0050+00 1/0 0/0 0/0 .text daE_Yr_Delete__FP10e_yr_class */
-static void daE_Yr_Delete(e_yr_class* param_0) {
- // NONMATCHING
+static int daE_Yr_Delete(e_yr_class* i_this) {
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->mEnemy;
+
+ dComIfG_resDelete(&i_this->mPhaseReq, "E_Yr");
+
+#if DEBUG
+ l_e_yrHIO.removeHIO(&i_this->mEnemy);
+#endif
+
+ if (actor->heap != NULL) {
+ i_this->mpMorfSO->stopZelAnime();
+ }
+ return 1;
}
/* 808278F4-80827A30 0057D4 013C+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
+static int useHeapInit(fopAc_ac_c* i_this) {
+ e_yr_class* yr = (e_yr_class*)i_this;
-/* ############################################################################################## */
-/* 8082898C-80828990 00013C 0004+00 0/1 0/0 0/0 .rodata @6217 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6217 = -300.0f;
-COMPILER_STRIP_GATE(0x8082898C, &lit_6217);
-#pragma pop
-
-/* 80828990-80828994 000140 0004+00 0/1 0/0 0/0 .rodata @6218 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6218 = -200.0f;
-COMPILER_STRIP_GATE(0x80828990, &lit_6218);
-#pragma pop
-
-/* 808289A8-808289A8 000158 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_808289AD = "E_yr";
-#pragma pop
-
-/* 80828BD0-80828C10 00021C 0040+00 0/1 0/0 0/0 .data at_sph_src$6145 */
-#pragma push
-#pragma force_active on
-static dCcD_SrcSph at_sph_src = {
- {
- {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj
- {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x1}, // mGObjAt
- {dCcD_SE_HARD_BODY, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 25.0f} // mSph
- } // mSphAttr
-};
-#pragma pop
+ yr->mpMorfSO = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_Yr", 21), NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes("E_Yr", 12), 2, 1.0f,
+ 0, -1, &yr->mSound, 0x80000, 0x11000084);
-/* 80828C10-80828C50 00025C 0040+00 0/1 0/0 0/0 .data head_tg_sph_src$6146 */
-#pragma push
-#pragma force_active on
-static dCcD_SrcSph head_tg_sph_src = {
- {
- {0x0, {{0x0, 0x1, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
+ if (yr->mpMorfSO == NULL ||
+ yr->mpMorfSO->getModel() == NULL)
{
- {{0.0f, 0.0f, 0.0f}, 62.5f} // mSph
- } // mSphAttr
-};
-#pragma pop
+ return 0;
+ }
-/* 80828C50-80828C90 00029C 0040+00 0/1 0/0 0/0 .data body_tg_sph_src$6147 */
-#pragma push
-#pragma force_active on
-static dCcD_SrcSph body_tg_sph_src = {
- {
- {0x0, {{0x0, 0x1, 0x0}, {0xd8fbfdff, 0x3}, 0x0}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 65.0f} // mSph
- } // mSphAttr
-};
-#pragma pop
+ J3DModel* model = yr->mpMorfSO->getModel();
+ model->setUserArea((int)yr);
-/* 80828C90-80828CD0 0002DC 0040+00 0/1 0/0 0/0 .data body_co_sph_src$6148 */
-#pragma push
-#pragma force_active on
-static dCcD_SrcSph body_co_sph_src = {
- {
- {0x0, {{0x0, 0x1, 0x0}, {0x0, 0x0}, 0x75}}, // mObj
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
- {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
- {0x0}, // mGObjCo
- }, // mObjInf
- {
- {{0.0f, 0.0f, 0.0f}, 80.0f} // mSph
- } // mSphAttr
-};
-#pragma pop
+ for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) {
+ if (i != 0) {
+ model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack);
+ }
+ }
+
+ return 1;
+}
/* 80827A30-80827D64 005910 0334+00 1/0 0/0 0/0 .text daE_Yr_Create__FP10fopAc_ac_c */
-static void daE_Yr_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daE_Yr_Create(fopAc_ac_c* i_this) {
+ static dCcD_SrcSph at_sph_src = {
+ {
+ {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x1}, // mGObjAt
+ {dCcD_SE_HARD_BODY, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 25.0f} // mSph
+ } // mSphAttr
+ };
+
+ static dCcD_SrcSph head_tg_sph_src = {
+ {
+ {0x0, {{0x0, 0x1, 0x0}, {(s32)0xd8fbfdff, 0x3}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 62.5f} // mSph
+ } // mSphAttr
+ };
+
+ static dCcD_SrcSph body_tg_sph_src = {
+ {
+ {0x0, {{0x0, 0x1, 0x0}, {(s32)0xd8fbfdff, 0x3}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 65.0f} // mSph
+ } // mSphAttr
+ };
+
+ static dCcD_SrcSph body_co_sph_src = {
+ {
+ {0x0, {{0x0, 0x1, 0x0}, {0x0, 0x0}, 0x75}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 80.0f} // mSph
+ } // mSphAttr
+ };
+
+ e_yr_class* yr = (e_yr_class*)i_this;
+
+ s32 loadResult = dComIfG_resLoad(&yr->mPhaseReq, "E_Yr");
+ fopAcM_SetupActor(i_this, e_yr_class);
+
+ if (loadResult == cPhs_COMPLEATE_e) {
+ // "It won't reset because it's already been defeated"
+ OS_REPORT("PARAM %x\n", fopAcM_GetParam(i_this));
+
+ yr->field_0x664 = fopAcM_GetParam(i_this);
+ yr->field_0x669 = yr->field_0x664;
+ yr->field_0x665 = (fopAcM_GetParam(i_this) & 0xff00) >> 8;
+ yr->field_0x666 = (fopAcM_GetParam(i_this) & 0xff0000) >> 16;
+ yr->field_0x667 = (fopAcM_GetParam(i_this) & 0xff000000) >> 24;
+
+ yr->field_0x668 = i_this->home.angle.z;
+ i_this->current.angle.z = 0;
+ i_this->current.angle.x = 0;
+
+ if (yr->field_0x668 != 0) {
+ if (dComIfGs_isSwitch(yr->field_0x668, fopAcM_GetRoomNo(i_this))) {
+ // "It won't reset because it's already been defeated"
+ OS_REPORT("E_YR やられ後なので再セットしません\n");
+ return cPhs_ERROR_e;
+ }
+ }
+
+ if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x2340)) {
+ return cPhs_ERROR_e;
+ }
+
+ i_this->current.pos.y += 70.0f + TREG_F(5);
+ i_this->home.pos = i_this->current.pos;
+
+ if (yr->field_0x666 != 0xff) {
+ yr->field_0x6ec = dPath_GetRoomPath(yr->field_0x666, fopAcM_GetRoomNo(i_this));
+ if (yr->field_0x6ec == 0) {
+ return cPhs_ERROR_e;
+ }
+
+ yr->field_0x6e9 = yr->field_0x666 + 1;
+ yr->field_0x6eb = 1;
+ }
+
+ if (yr->field_0x667 != 0xff) {
+ yr->field_0x67e = yr->field_0x667 + 1;
+ }
+
+ if (yr->field_0x669 == 5 || yr->field_0x669 == 6) {
+ yr->field_0x66b = 1;
+ } else if (yr->field_0x664 == 3) {
+ yr->field_0x669 = 3;
+ }
+
+ fopAcM_SetMtx(i_this, yr->mpMorfSO->getModel()->getBaseTRMtx());
+ fopAcM_SetMin(i_this, -300.0f, -200.0f, -300.0f);
+ fopAcM_SetMax(i_this, 300.0f, 200.0f, 300.0f);
+
+ yr->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1,
+ &yr->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL);
+ yr->mAcchCir.SetWall(100.0f, 100.0f);
+
+ i_this->field_0x560 = i_this->health = 0x50;
+
+ yr->mStts.Init(100, 0xff, i_this);
+ yr->mSph1.Set(at_sph_src);
+ yr->mSph2.Set(head_tg_sph_src);
+ yr->mSph3.Set(body_tg_sph_src);
+ yr->mSph4.Set(body_co_sph_src);
+ yr->mSph1.SetStts(&yr->mStts);
+ yr->mSph2.SetStts(&yr->mStts);
+ yr->mSph3.SetStts(&yr->mStts);
+ yr->mSph4.SetStts(&yr->mStts);
+
+ yr->field_0x6a4[3] = cM_rndF(200.0f) + 300.0f;
+ yr->field_0x6de = cM_rndF(10000.0f);
+ i_this->attention_info.distances[fopAc_attn_BATTLE_e] = 22;
+
+#if DEBUG
+ // "Dark Kargarok"
+ l_e_yrHIO.entryHIO("闇カーゴロック");
+#endif
+
+ yr->mSound.init(&i_this->current.pos, &i_this->eyePos, 3, 1);
+ yr->mSound.setEnemyName("E_yr");
+ yr->mAtInfo.mPowerType = 3;
+ yr->mAtInfo.mpSound = &yr->mSound;
+
+ daE_Yr_Execute(yr);
+ }
+
+ return loadResult;
}
/* ############################################################################################## */
/* 80828CD0-80828CF0 -00001 0020+00 1/0 0/0 0/0 .data l_daE_Yr_Method */
static actor_method_class l_daE_Yr_Method = {
- (process_method_func)daE_Yr_Create__FP10fopAc_ac_c,
- (process_method_func)daE_Yr_Delete__FP10e_yr_class,
- (process_method_func)daE_Yr_Execute__FP10e_yr_class,
- (process_method_func)daE_Yr_IsDelete__FP10e_yr_class,
- (process_method_func)daE_Yr_Draw__FP10e_yr_class,
+ (process_method_func)daE_Yr_Create,
+ (process_method_func)daE_Yr_Delete,
+ (process_method_func)daE_Yr_Execute,
+ (process_method_func)daE_Yr_IsDelete,
+ (process_method_func)daE_Yr_Draw,
};
/* 80828CF0-80828D20 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_YR */
extern actor_process_profile_definition g_profile_E_YR = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_E_YR, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(e_yr_class), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 189, // mPriority
- &l_daE_Yr_Method, // sub_method
- 0x10040100, // mStatus
- fopAc_ENEMY_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 80828D20-80828D2C 00036C 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,
-};
-
-/* 80828D2C-80828D38 000378 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,
-};
-
-/* 80828D38-80828D44 000384 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,
-};
-
-/* 80828D44-80828D50 000390 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,
-};
-
-/* 80828D50-80828D5C 00039C 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,
-};
-
-/* 80828D5C-80828D80 0003A8 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_808283E4,
- (void*)NULL,
- (void*)NULL,
- (void*)func_808283DC,
+ (u32)fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_E_YR, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(e_yr_class), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 189, // mPriority
+ &l_daE_Yr_Method, // sub_method
+ 0x10040100, // mStatus
+ fopAc_ENEMY_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80827D64-80827F80 005C44 021C+00 1/1 0/0 0/0 .text __ct__10e_yr_classFv */
e_yr_class::e_yr_class() {
- // NONMATCHING
-}
-
-/* 80827F80-80827F84 005E60 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz() {
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
-}
-
-/* 80827F84-80827FCC 005E64 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
}
-
-/* 80827FCC-80828014 005EAC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 80828014-80828070 005EF4 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 80828070-808280E0 005F50 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 808280E0-80828150 005FC0 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
-
-/* 80828150-80828198 006030 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 80828994-80828998 000144 0004+00 0/1 0/0 0/0 .rodata @6390 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6390 = 2500.0f;
-COMPILER_STRIP_GATE(0x80828994, &lit_6390);
-#pragma pop
-
-/* 80828998-8082899C 000148 0004+00 0/1 0/0 0/0 .rodata @6391 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6391 = 7.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80828998, &lit_6391);
-#pragma pop
-
-/* 8082899C-808289A0 00014C 0004+00 0/1 0/0 0/0 .rodata @6392 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6392 = 3.5f;
-COMPILER_STRIP_GATE(0x8082899C, &lit_6392);
-#pragma pop
-
-/* 808289A0-808289A4 000150 0004+00 0/1 0/0 0/0 .rodata @6393 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6393 = 8000.0f;
-COMPILER_STRIP_GATE(0x808289A0, &lit_6393);
-#pragma pop
-
-/* 808289A4-808289A8 000154 0004+00 0/1 0/0 0/0 .rodata @6394 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6394 = 1500.0f;
-COMPILER_STRIP_GATE(0x808289A4, &lit_6394);
-#pragma pop
-
-/* 80828D80-80828D8C 0003CC 000C+00 2/2 0/0 0/0 .data __vt__9e_yrHIO_c */
-SECTION_DATA extern void* __vt__9e_yrHIO_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__9e_yrHIO_cFv,
-};
-
-/* 80828D8C-80828D98 0003D8 000C+00 3/3 0/0 0/0 .data __vt__18fOpAcm_HIO_entry_c */
-SECTION_DATA extern void* __vt__18fOpAcm_HIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18fOpAcm_HIO_entry_cFv,
-};
-
-/* 80828D98-80828DA4 0003E4 000C+00 4/4 0/0 0/0 .data __vt__14mDoHIO_entry_c */
-SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14mDoHIO_entry_cFv,
-};
-
-/* 80828198-808282CC 006078 0134+00 0/0 1/0 0/0 .text __sinit_d_a_e_yr_cpp */
-void __sinit_d_a_e_yr_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x80828198, __sinit_d_a_e_yr_cpp);
-#pragma pop
-
-/* 808282CC-80828338 0061AC 006C+00 2/1 0/0 0/0 .text __dt__9e_yrHIO_cFv */
-e_yrHIO_c::~e_yrHIO_c() {
- // NONMATCHING
-}
-
-/* 80828338-80828394 006218 005C+00 1/0 0/0 0/0 .text __dt__18fOpAcm_HIO_entry_cFv */
-// fOpAcm_HIO_entry_c::~fOpAcm_HIO_entry_c() {
-extern "C" void __dt__18fOpAcm_HIO_entry_cFv() {
- // NONMATCHING
-}
-
-/* 80828394-808283DC 006274 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
-// mDoHIO_entry_c::~mDoHIO_entry_c() {
-extern "C" void __dt__14mDoHIO_entry_cFv() {
- // NONMATCHING
-}
-
-/* 808283DC-808283E4 0062BC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_808283DC() {
- // NONMATCHING
-}
-
-/* 808283E4-808283EC 0062C4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_808283E4() {
- // NONMATCHING
-}
-
-/* 80828800-8082883C 0066E0 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* 808289A8-808289A8 000158 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */