From 0be38784ceb85b74ffa4275aa714ca48627cee62 Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Wed, 23 Apr 2025 14:40:55 -0400 Subject: [PATCH] d_a_b_tn work (#2408) * Initial Work * Initial Work Part 2! * First few functions done * work on some demo and execute functions * Work on AttackH Functions * Work on more execute functions * d_a_b_tn close to finished * Pull request cleanup and damageCheck work --- include/d/actor/d_a_b_tn.h | 149 +- src/d/actor/d_a_b_tn.cpp | 6928 ++++++++++++++++++++++++------------ 2 files changed, 4793 insertions(+), 2284 deletions(-) diff --git a/include/d/actor/d_a_b_tn.h b/include/d/actor/d_a_b_tn.h index 55df0fcffe8..fa32d8600cb 100644 --- a/include/d/actor/d_a_b_tn.h +++ b/include/d/actor/d_a_b_tn.h @@ -1,6 +1,8 @@ #ifndef D_A_B_TN_H #define D_A_B_TN_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_uty.h" #include "f_op/f_op_actor_mng.h" #include "d/d_cc_d.h" @@ -14,11 +16,11 @@ */ class daB_TN_c : public fopEn_enemy_c { public: - /* 8061EC58 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 8061ED10 */ void JointCallBack(J3DJoint*, int); + /* 8061EC58 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 8061ED10 */ static int JointCallBack(J3DJoint*, int); /* 8061ED5C */ void calcNeckAngle(); /* 8061EE14 */ void calcWaistAngle(); - /* 8061EEC8 */ void draw(); + /* 8061EEC8 */ int draw(); /* 8061F200 */ void setBreakPart(int); /* 8061F31C */ void setBreakHeadPart(int); /* 8061F3D0 */ void setPartLandEffect(int, int); @@ -28,22 +30,22 @@ public: /* 8061FFE0 */ void calcOtherPartMove(int); /* 8062070C */ void calcPartMove(); /* 806208C8 */ void setBck(int, u8, f32, f32); - /* 8062096C */ void checkBck(int); + /* 8062096C */ int checkBck(int); /* 806209C8 */ void setActionMode(int, int); /* 806209E0 */ void setSwordAtBit(int); /* 80620AE4 */ void setSwordAtBreak(int); /* 80620B4C */ void setBodyShield(); - /* 80620E90 */ void checkNormalAttackAble(); - /* 80620FA0 */ void getCutType(); + /* 80620E90 */ bool checkNormalAttackAble(); + /* 80620FA0 */ u32 getCutType(); /* 80621070 */ void setDamage(dCcD_Sph*, int); /* 8062138C */ void setShieldEffect(dCcD_Sph*); /* 806213FC */ void damage_check(); - /* 806227D0 */ void checkMoveArea(); - /* 80622B60 */ void checkMoveAngle(); + /* 806227D0 */ int checkMoveArea(); + /* 80622B60 */ bool checkMoveAngle(); /* 80622BE0 */ void setAttackBlurEffect(int); /* 80622CE4 */ void setArmorBreakEffect(int); /* 80622F64 */ void demo_skip(int); - /* 8062318C */ void DemoSkipCallBack(void*, int); + /* 8062318C */ static int DemoSkipCallBack(void*, int); /* 806231C0 */ void executeRoomDemo(); /* 80623920 */ void executeOpening(); /* 806246E8 */ void executeWaitH(); @@ -58,8 +60,8 @@ public: /* 80627100 */ void executeZakoChangeDemo(); /* 80627790 */ void setWalkDir(); /* 8062799C */ void initChaseL(int); - /* 80627CBC */ void checkAttackAble(); - /* 80627D3C */ void checkNextMove(); + /* 80627CBC */ bool checkAttackAble(); + /* 80627D3C */ bool checkNextMove(); /* 8062868C */ void executeChaseL(); /* 806292F8 */ void executeAttackL(); /* 80629D20 */ void executeAttackShieldL(); @@ -71,14 +73,110 @@ public: /* 8062B6A8 */ void action(); /* 8062BA5C */ void mtx_set(); /* 8062BDCC */ void cc_set(); - /* 8062C5B4 */ void execute(); - /* 8062C7C8 */ void _delete(); - /* 8062C868 */ void CreateHeap(); - /* 8062CD78 */ void create(); - /* 8062D2F0 */ daB_TN_c(); + /* 8062C5B4 */ int execute(); + /* 8062C7C8 */ int _delete(); + /* 8062C868 */ int CreateHeap(); + /* 8062CD78 */ int create(); + /* 8062D2F0 */ daB_TN_c() {}; private: - /* 0x5ac */ u8 field_0x5ac[0x5630 - 0x5ac]; + /* 0x05AC */ request_of_phase_process_class mPhase1; + /* 0x05B4 */ request_of_phase_process_class mPhase2; + /* 0x05BC */ J3DModel* mModels[16]; + /* 0x05FC */ mDoExt_McaMorfSO* mpModelMorf1; + /* 0x0600 */ mDoExt_McaMorfSO* mpModelMorf2; + /* 0x0604 */ mDoExt_brkAnm* mBrkAnms[16]; + /* 0x0644 */ mDoExt_brkAnm* mBrkAnm; + /* 0x0648 */ J3DModel* field_0x648; + /* 0x064C */ Z2CreatureEnemy mSound; + /* 0x06F0 */ int mActionMode1; + /* 0x06F4 */ int mActionMode2; + /* 0x06F8 */ u32 mShadowKey; + /* 0x06FC */ int field_0x6fc; + /* 0x0700 */ int field_0x700; + /* 0x0704 */ cXyz mCamEye; + /* 0x0710 */ cXyz mCamCenter; + /* 0x071C */ f32 mCamFovY; + /* 0x0720 */ s16 field_0x720; + /* 0x0722 */ u8 field_0x722[0x724 - 0x722]; + /* 0x0724 */ f32 field_0x724; + /* 0x0728 */ f32 field_0x728; + /* 0x072C */ Mtx field_0x72c; + /* 0x075C */ cXyz field_0x75c[16]; + /* 0x081C */ cXyz field_0x81c[16]; + /* 0x08DC */ cXyz field_0x8dc[16]; + /* 0x099C */ csXyz field_0x99c[16]; + /* 0x09FC */ u16 field_0x9fc[16]; + /* 0x0A1C */ u16 field_0xa1c[16]; + /* 0x0A3C */ s16 field_0xa3c[16]; + /* 0x0A5C */ s16 field_0xa5c; + /* 0x0A5E */ u8 field_0xa5e[0xa60 - 0xa5e]; + /* 0x0A60 */ int field_0xa60; + /* 0x0A64 */ s16 field_0xa64; + /* 0x0A66 */ u8 field_0xa66[0xa68 - 0xa66]; + /* 0x0A68 */ s16 field_0xa68; + /* 0x0A6A */ u8 field_0xa6a[0xa6c - 0xa6a]; + /* 0x0A6C */ int field_0xa6c; + /* 0x0A70 */ int field_0xa70; + /* 0x0A74 */ int field_0xa74; + /* 0x0A78 */ int field_0xa78; + /* 0x0A7C */ int field_0xa7c; + /* 0x0A80 */ int field_0xa80; + /* 0x0A84 */ int field_0xa84; + /* 0x0A88 */ int field_0xa88; + /* 0x0A8C */ int mWalkDir; + /* 0x0A90 */ u8 field_0xa90; + /* 0x0A91 */ u8 field_0xa91; + /* 0x0A92 */ u8 field_0xa92; + /* 0x0A93 */ u8 field_0xa93; + /* 0x0A94 */ u8 field_0xa94; + /* 0x0A95 */ u8 field_0xa95; + /* 0x0A96 */ s16 field_0xa96; + /* 0x0A98 */ s16 field_0xa98; + /* 0x0A9A */ u8 field_0xa9a; + /* 0x0A9B */ u8 field_0xa9b; + /* 0x0A9C */ u8 field_0xa9c; + /* 0x0A9D */ u8 field_0xa9d; + /* 0x0A9E */ u8 field_0xa9e; + /* 0x0A9F */ u8 field_0xa9f; + /* 0x0AA0 */ u8 field_0xaa0; + /* 0x0AA1 */ u8 field_0xaa1; + /* 0x0AA2 */ u8 field_0xaa2; + /* 0x0AA3 */ u8 field_0xaa3; + /* 0x0AA4 */ u8 field_0xaa4; + /* 0x0AA5 */ u8 field_0xaa5; + /* 0x0AA6 */ u8 field_0xaa6; + /* 0x0AA7 */ u8 field_0xaa7; + /* 0x0AA8 */ u8 field_0xaa8; + /* 0x0AA9 */ u8 field_0xaa9; + /* 0x0AAA */ u8 field_0xaaa; + /* 0x0AAB */ u8 field_0xaab; + /* 0x0AAC */ u8 field_0xaac; + /* 0x0AAD */ u8 field_0xaad; + /* 0x0AAE */ u8 field_0xaae; + /* 0x0AAF */ u8 field_0xaaf; + /* 0x0AB0 */ f32 mBlend; + /* 0x0AB4 */ char* field_0xab4; + /* 0x0AB8 */ dBgS_AcchCir mAcchCir; + /* 0x0AF8 */ dBgS_ObjAcch mAcch; + /* 0x0CD0 */ u8 field_0xcd0[0x10d0 - 0xcd0]; + /* 0x10D0 */ dBgS_Acch field_0x10d0[16]; + /* 0x2E50 */ cXyz field_0x2e50; + /* 0x2E5C */ u8 field_0x2e5c[0x2e6c - 0x2e5c]; + /* 0x2E6C */ dCcD_GStts mGStts; + /* 0x2E8C */ dCcD_Stts field_0x2e8c; + /* 0x2EC8 */ dCcD_Sph field_0x2ec8[3]; + /* 0x3270 */ dCcD_Sph field_0x3270[3]; + /* 0x3618 */ dCcD_Sph field_0x3618; + /* 0x3750 */ dCcD_Sph mSwordSphs[4]; + /* 0x3C30 */ dCcD_Cps mCps; + /* 0x3D74 */ dCcD_Sph field_0x3d74; + /* 0x3EAC */ cXyz field_0x3eac; + /* 0x3EB8 */ dCcU_AtInfo mAtInfo; + /* 0x3EDC */ dCcD_Stts field_0x3edc[16]; + /* 0x429C */ dCcD_Sph field_0x429c[16]; + /* 0x561C */ u32 field_0x561c[4]; + /* 0x562C */ u8 field_0x562c; }; STATIC_ASSERT(sizeof(daB_TN_c) == 0x5630); @@ -86,8 +184,21 @@ STATIC_ASSERT(sizeof(daB_TN_c) == 0x5630); class daB_TN_HIO_c { public: /* 8061EBEC */ daB_TN_HIO_c(); - /* 8062D98C */ ~daB_TN_HIO_c(); + /* 8062D98C */ virtual ~daB_TN_HIO_c() {}; + + /* 0x04 */ s8 field_0x4; + /* 0x08 */ f32 mScale; + /* 0x0C */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; + /* 0x2C */ f32 field_0x2c; + + }; - #endif /* D_A_B_TN_H */ diff --git a/src/d/actor/d_a_b_tn.cpp b/src/d/actor/d_a_b_tn.cpp index 980833dedef..36cf2222da9 100644 --- a/src/d/actor/d_a_b_tn.cpp +++ b/src/d/actor/d_a_b_tn.cpp @@ -4,1017 +4,373 @@ */ #include "d/actor/d_a_b_tn.h" +#include "d/actor/d_a_boomerang.h" +#include "d/actor/d_a_nbomb.h" +#include "d/d_cc_uty.h" #include "dol2asm.h" +#include "Z2AudioLib/Z2Instances.h" #include "d/d_camera.h" +#include UNK_REL_DATA; #include "f_op/f_op_actor_enemy.h" -// -// Forward References: -// +namespace { + /* 8062E93C-8062E97C 000038 0040+00 0/1 0/0 0/0 .data cc_tt_src__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_tt_src[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD8, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, + }; -extern "C" void __ct__12daB_TN_HIO_cFv(); -extern "C" void ctrlJoint__8daB_TN_cFP8J3DJointP8J3DModel(); -extern "C" void JointCallBack__8daB_TN_cFP8J3DJointi(); -extern "C" void calcNeckAngle__8daB_TN_cFv(); -extern "C" void calcWaistAngle__8daB_TN_cFv(); -extern "C" void draw__8daB_TN_cFv(); -extern "C" static void daB_TN_Draw__FP8daB_TN_c(); -extern "C" void setBreakPart__8daB_TN_cFi(); -extern "C" void setBreakHeadPart__8daB_TN_cFi(); -extern "C" void setPartLandEffect__8daB_TN_cFii(); -extern "C" void calcShieldMove__8daB_TN_cFv(); -extern "C" void calcSwordMoveA__8daB_TN_cFv(); -extern "C" void calcSwordMoveB__8daB_TN_cFv(); -extern "C" void calcOtherPartMove__8daB_TN_cFi(); -extern "C" void calcPartMove__8daB_TN_cFv(); -extern "C" void setBck__8daB_TN_cFiUcff(); -extern "C" void checkBck__8daB_TN_cFi(); -extern "C" void setActionMode__8daB_TN_cFii(); -extern "C" void setSwordAtBit__8daB_TN_cFi(); -extern "C" void setSwordAtBreak__8daB_TN_cFi(); -extern "C" void setBodyShield__8daB_TN_cFv(); -extern "C" void checkNormalAttackAble__8daB_TN_cFv(); -extern "C" void getCutType__8daB_TN_cFv(); -extern "C" void setDamage__8daB_TN_cFP8dCcD_Sphi(); -extern "C" void setShieldEffect__8daB_TN_cFP8dCcD_Sph(); -extern "C" void damage_check__8daB_TN_cFv(); -extern "C" void __as__8dCcD_SphFRC8dCcD_Sph(); -extern "C" void __as__12dCcD_GObjInfFRC12dCcD_GObjInf(); -extern "C" void __dt__8dCcD_SphFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void checkMoveArea__8daB_TN_cFv(); -extern "C" void checkMoveAngle__8daB_TN_cFv(); -extern "C" void setAttackBlurEffect__8daB_TN_cFi(); -extern "C" void setArmorBreakEffect__8daB_TN_cFi(); -extern "C" static void s_obj_sub__FPvPv(); -extern "C" void demo_skip__8daB_TN_cFi(); -extern "C" void DemoSkipCallBack__8daB_TN_cFPvi(); -extern "C" void executeRoomDemo__8daB_TN_cFv(); -extern "C" void executeOpening__8daB_TN_cFv(); -extern "C" void executeWaitH__8daB_TN_cFv(); -extern "C" void setAwaitSound__8daB_TN_cFv(); -extern "C" void executeChaseH__8daB_TN_cFv(); -extern "C" void checkStartAttackH__8daB_TN_cFv(); -extern "C" void executeAttackH__8daB_TN_cFv(); -extern "C" void executeAttackShieldH__8daB_TN_cFv(); -extern "C" void executeGuardH__8daB_TN_cFv(); -extern "C" void executeDamageH__8daB_TN_cFv(); -extern "C" void executeChangeDemo__8daB_TN_cFv(); -extern "C" void executeZakoChangeDemo__8daB_TN_cFv(); -extern "C" void setWalkDir__8daB_TN_cFv(); -extern "C" void initChaseL__8daB_TN_cFi(); -extern "C" void checkAttackAble__8daB_TN_cFv(); -extern "C" void checkNextMove__8daB_TN_cFv(); -extern "C" void executeChaseL__8daB_TN_cFv(); -extern "C" void executeAttackL__8daB_TN_cFv(); -extern "C" void executeAttackShieldL__8daB_TN_cFv(); -extern "C" void executeGuardL__8daB_TN_cFv(); -extern "C" void executeDamageL__8daB_TN_cFv(); -extern "C" void executeYoroke__8daB_TN_cFv(); -extern "C" void executeEnding__8daB_TN_cFv(); -extern "C" void executeZakoEnding__8daB_TN_cFv(); -extern "C" void action__8daB_TN_cFv(); -extern "C" void mtx_set__8daB_TN_cFv(); -extern "C" void cc_set__8daB_TN_cFv(); -extern "C" void execute__8daB_TN_cFv(); -extern "C" static void daB_TN_Execute__FP8daB_TN_c(); -extern "C" static bool daB_TN_IsDelete__FP8daB_TN_c(); -extern "C" void _delete__8daB_TN_cFv(); -extern "C" static void daB_TN_Delete__FP8daB_TN_c(); -extern "C" void CreateHeap__8daB_TN_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void create__8daB_TN_cFv(); -extern "C" void __ct__8daB_TN_cFv(); -extern "C" void __ct__9dCcD_SttsFv(); -extern "C" void __ct__8dCcD_SphFv(); -extern "C" void __dt__9dCcD_SttsFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __ct__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" static void daB_TN_Create__FP8daB_TN_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daB_TN_HIO_cFv(); -extern "C" void __sinit_d_a_b_tn_cpp(); -extern "C" static void func_8062E16C(); -extern "C" static void func_8062E174(); -extern "C" void __dt__5csXyzFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void checkNowWolf__9daPy_py_cFv(); -extern "C" extern char const* const d_a_b_tn__stringBase0; + /* 8062E97C-8062E9BC 000078 0040+00 0/1 0/0 0/0 .data cc_tt_src2__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_tt_src2[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFB, 0xFD, 0xED, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, + }; -// -// External References: -// + /* 8062E9BC-8062E9FC 0000B8 0040+00 0/1 0/0 0/0 .data cc_bomb_src__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_bomb_src[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, + }; -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void mDoMtx_MtxToRot__FPA4_CfP5csXyz(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void transM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcM_IsCreating__FUi(); -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 dComIfGs_onOneZoneSwitch__Fii(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void checkInsectBombMove__7dBomb_cFP10fopAc_ac_c(); -extern "C" void onDungeonItem__12dSv_memBit_cFi(); -extern "C" void isDungeonItem__12dSv_memBit_cCFi(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -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 reset__14dEvt_control_cFv(); -extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); -extern "C" void onSkipFade__14dEvt_control_cFv(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -setPoly__13dPa_control_cFUsR13cBgS_PolyInfoPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyziP18dPa_levelEcallBackScPC4cXyz(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void addReal__21dDlst_shadowControl_cFUlP8J3DModel(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void StopQuake__12dVibration_cFi(); -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 SetGroundUpY__9dBgS_AcchFf(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void GetCoHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void def_se_set__FP10Z2CreatureP8cCcD_ObjUlP10fopAc_ac_c(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -extern "C" void getThrowBoomerangActor__9daPy_py_cFv(); -extern "C" void Start__9dCamera_cFv(); -extern "C" void Stop__9dCamera_cFv(); -extern "C" void SetTrimSize__9dCamera_cFl(); -extern "C" void Set__9dCamera_cF4cXyz4cXyzfs(); -extern "C" void Reset__9dCamera_cF4cXyz4cXyz(); -extern "C" void dCam_getBody__Fv(); -extern "C" void Eye__9dCamera_cFv(); -extern "C" void Center__9dCamera_cFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_custom_colset__FUcUcf(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rnd__Fv(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void __ct__8cM3dGCpsFv(); -extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcPos2__FP4cXyzRC4cXyzff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz(); -extern "C" void func_80280808(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void subBgmStart__8Z2SeqMgrFUl(); -extern "C" void subBgmStop__8Z2SeqMgrFv(); -extern "C" void bgmStreamPrepare__8Z2SeqMgrFUl(); -extern "C" void bgmStreamPlay__8Z2SeqMgrFv(); -extern "C" void bgmStreamStop__8Z2SeqMgrFUl(); -extern "C" void changeSubBgmStatus__8Z2SeqMgrFl(); -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 init__12J3DFrameCtrlFs(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void __copy(); -extern "C" void __construct_array(); -extern "C" void _savegpr_18(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_18(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_21(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cps[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CpsAttr[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(); + /* 8062E9FC-8062EA3C 0000F8 0040+00 0/1 0/0 0/0 .data cc_tt_at_src__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_tt_at_src[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x09, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, + }; -// -// Declarations: -// + /* 8062EA3C-8062EA88 000138 004C+00 0/1 0/0 0/0 .data cc_tt_at_cps_src__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_tt_at_cps_src[76] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, + }; -/* ############################################################################################## */ -/* 8062E660-8062E664 00002C 0004+00 0/1 0/0 0/0 .rodata @3941 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3941 = 13.0f / 10.0f; -COMPILER_STRIP_GATE(0x8062E660, &lit_3941); -#pragma pop + /* 8062EA88-8062EAC8 000184 0040+00 0/1 0/0 0/0 .data cc_tt_tate_src__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_tt_tate_src[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, + }; -/* 8062E664-8062E668 000030 0004+00 0/5 0/0 0/0 .rodata @3942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3942 = 40.0f; -COMPILER_STRIP_GATE(0x8062E664, &lit_3942); -#pragma pop + /* 8062EAC8-8062EB08 0001C4 0040+00 0/1 0/0 0/0 .data cc_part_src__22@unnamed@d_a_b_tn_cpp@ */ + static u8 cc_part_src[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, + }; -/* 8062E668-8062E66C 000034 0004+00 0/2 0/0 0/0 .rodata @3943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3943 = 150.0f; -COMPILER_STRIP_GATE(0x8062E668, &lit_3943); -#pragma pop + /* 8062EB08-8062EB18 000204 0010+00 0/1 0/0 0/0 .data tn_model_brk_idx__22@unnamed@d_a_b_tn_cpp@ */ + static s8 tn_model_brk_idx[16] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x02, 0xFF, 0xFF, 0xFF, + }; -/* 8062E66C-8062E670 000038 0004+00 0/6 0/0 0/0 .rodata @3944 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3944 = 250.0f; -COMPILER_STRIP_GATE(0x8062E66C, &lit_3944); -#pragma pop + /* 8062EB18-8062EB28 000214 0010+00 0/1 0/0 0/0 .data tn_model_brk_idx2__22@unnamed@d_a_b_tn_cpp@ */ + static s8 tn_model_brk_idx2[16] = { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, + }; -/* 8062E670-8062E674 00003C 0004+00 0/1 0/0 0/0 .rodata @3945 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3945 = 210.0f; -COMPILER_STRIP_GATE(0x8062E670, &lit_3945); -#pragma pop + /* 8062EB28-8062EBA8 000224 0080+00 0/1 0/0 0/0 .data tn_part_model_id__22@unnamed@d_a_b_tn_cpp@ */ + static int tn_part_model_id[32] = { + 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 19, + 18, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 18, + 17, 21, 20, + }; -/* 8062E674-8062E678 000040 0004+00 0/7 0/0 0/0 .rodata @3946 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3946 = 350.0f; -COMPILER_STRIP_GATE(0x8062E674, &lit_3946); -#pragma pop + /* 8062EBA8-8062EBE8 0002A4 0040+00 2/2 0/0 0/0 .data tn_part_joint__22@unnamed@d_a_b_tn_cpp@ */ + static int tn_part_joint[16] = { + 8, 14, 3, 3, 5, 5, 11, 17, 26, + 25, 27, 28, 9, 27, 27, 27 + }; -/* 8062E678-8062E67C 000044 0004+00 0/1 0/0 0/0 .rodata @3947 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3947 = 120.0f; -COMPILER_STRIP_GATE(0x8062E678, &lit_3947); -#pragma pop + /* 8062EBE8-8062EC28 0002E4 0040+00 1/2 0/0 0/0 .data ground_y_part__22@unnamed@d_a_b_tn_cpp@ */ + static float ground_y_part[16] = { + 15.0f, 15.0f, 0.0f, 0.0f, 23.0f, 12.0f, 25.0f, 25.0f, + -5.0f, 5.0f, 8.0f, 5.0f, 12.0f, 7.0f, 0.0f, 0.0f, + }; +} -/* 8062E67C-8062E680 000048 0004+00 0/1 0/0 0/0 .rodata @3948 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3948 = 360.0f; -COMPILER_STRIP_GATE(0x8062E67C, &lit_3948); -#pragma pop - -/* 8062E93C-8062E97C 000038 0040+00 0/1 0/0 0/0 .data cc_tt_src__22@unnamed@d_a_b_tn_cpp@ - */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062E93C[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xD8, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, -}; -#pragma pop - -/* 8062E97C-8062E9BC 000078 0040+00 0/1 0/0 0/0 .data cc_tt_src2__22@unnamed@d_a_b_tn_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062E97C[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFB, 0xFD, 0xED, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, -}; -#pragma pop - -/* 8062E9BC-8062E9FC 0000B8 0040+00 0/1 0/0 0/0 .data cc_bomb_src__22@unnamed@d_a_b_tn_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062E9BC[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x45, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, -}; -#pragma pop - -/* 8062E9FC-8062EA3C 0000F8 0040+00 0/1 0/0 0/0 .data cc_tt_at_src__22@unnamed@d_a_b_tn_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062E9FC[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, -}; -#pragma pop - -/* 8062EA3C-8062EA88 000138 004C+00 0/1 0/0 0/0 .data cc_tt_at_cps_src__22@unnamed@d_a_b_tn_cpp@ - */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062EA3C[76] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, -}; -#pragma pop - -/* 8062EA88-8062EAC8 000184 0040+00 0/1 0/0 0/0 .data cc_tt_tate_src__22@unnamed@d_a_b_tn_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062EA88[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x09, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, -}; -#pragma pop - -/* 8062EAC8-8062EB08 0001C4 0040+00 0/1 0/0 0/0 .data cc_part_src__22@unnamed@d_a_b_tn_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062EAC8[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, -}; -#pragma pop - -/* 8062EB08-8062EB18 000204 0010+00 0/1 0/0 0/0 .data tn_model_brk_idx__22@unnamed@d_a_b_tn_cpp@ - */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062EB08[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x02, 0xFF, 0xFF, 0xFF, -}; -#pragma pop - -/* 8062EB18-8062EB28 000214 0010+00 0/1 0/0 0/0 .data tn_model_brk_idx2__22@unnamed@d_a_b_tn_cpp@ - */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062EB18[16] = { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, -}; -#pragma pop - -/* 8062EB28-8062EBA8 000224 0080+00 0/1 0/0 0/0 .data tn_part_model_id__22@unnamed@d_a_b_tn_cpp@ - */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_8062EB28[128] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, - 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, -}; -#pragma pop - -/* 8062EBA8-8062EBE8 0002A4 0040+00 2/2 0/0 0/0 .data tn_part_joint__22@unnamed@d_a_b_tn_cpp@ */ -SECTION_DATA static u8 data_8062EBA8[64] = { - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1C, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1B, -}; - -/* 8062EBE8-8062EC28 0002E4 0040+00 1/2 0/0 0/0 .data ground_y_part__22@unnamed@d_a_b_tn_cpp@ */ -SECTION_DATA static u8 data_8062EBE8[64] = { - 0x41, 0x70, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xB8, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, - 0xC0, 0xA0, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, - 0x41, 0x40, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 8062EC28-8062EC5C 000324 0034+00 1/1 0/0 0/0 .data break_part_no$4188 */ -SECTION_DATA static u8 break_part_no[52] = { - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, -}; - -/* 8062EC5C-8062EC90 000358 0034+00 1/1 0/0 0/0 .data break_part_no2$4222 */ -SECTION_DATA static u8 break_part_no2[52] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, -}; - -/* 8062EC90-8062ECD0 00038C 0040+00 1/1 0/0 0/0 .data break_part_vib$4254 */ -SECTION_DATA static u8 break_part_vib[64] = { - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x02, -}; - -/* 8062ECD0-8062ECF0 -00001 0020+00 1/1 0/0 0/0 .data @4659 */ -SECTION_DATA static void* lit_4659[8] = { - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x6FC), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x6FC), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x68), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x264), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x4B4), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x5F4), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x65C), - (void*)(((char*)calcOtherPartMove__8daB_TN_cFi) + 0x6FC), -}; - -/* 8062ECF0-8062ED8C -00001 009C+00 1/1 0/0 0/0 .data @5007 */ -SECTION_DATA static void* lit_5007[39] = { - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xA8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xB0), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xA8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xB8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xA8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xA8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0x78), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0x98), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0x98), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0x78), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0x90), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0x90), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xA0), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xB0), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC0), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xC8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xB8), - (void*)(((char*)getCutType__8daB_TN_cFv) + 0xA8), -}; - -/* 8062ED8C-8062ED94 000488 0008+00 1/1 0/0 0/0 .data blur_effect_id$5997 */ -SECTION_DATA static u8 blur_effect_id_5997[8] = { - 0x87, 0xDA, 0x87, 0xDB, 0x87, 0xDC, 0x87, 0xDD, -}; - -/* 8062ED94-8062ED9C 000490 0006+02 1/1 0/0 0/0 .data blur_effect_id$6035 */ -SECTION_DATA static u8 blur_effect_id_6035[6 + 2 /* padding */] = { - 0x87, - 0xDE, - 0x87, - 0xDF, - 0x87, - 0xE0, - /* padding */ - 0x00, - 0x00, -}; - -/* 8062ED9C-8062EDE0 -00001 0044+00 1/1 0/0 0/0 .data @6403 */ -SECTION_DATA static void* lit_6403[17] = { - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x84), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x158), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x1F0), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x348), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x348), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x6D4), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x520), - (void*)(((char*)executeRoomDemo__8daB_TN_cFv) + 0x5BC), -}; - -/* 8062EDE0-8062EE34 -00001 0054+00 1/1 0/0 0/0 .data @6815 */ -SECTION_DATA static void* lit_6815[21] = { - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x6C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x94), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x2F4), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x47C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x538), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x718), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0x7D4), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xB78), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xD3C), - (void*)(((char*)executeOpening__8daB_TN_cFv) + 0xBF8), -}; - -/* 8062EE34-8062EE7C -00001 0048+00 1/1 0/0 0/0 .data @8051 */ -SECTION_DATA static void* lit_8051[18] = { - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x308), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x308), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x50), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x70), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x90), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0xF8), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x160), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x178), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x1B4), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x1D0), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x214), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x214), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x230), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x27C), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x27C), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x298), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x2E4), - (void*)(((char*)initChaseL__8daB_TN_cFi) + 0x1B4), -}; - -/* 8062EE7C-8062EEC4 -00001 0048+00 1/1 0/0 0/0 .data @8593 */ -SECTION_DATA static void* lit_8593[18] = { - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x98), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0xA0), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x31C), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x148), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x338), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x474), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x5B0), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x6C4), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x7B8), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x958), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x9EC), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x9EC), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0xB68), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x9EC), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x9EC), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0xB68), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x258), - (void*)(((char*)executeChaseL__8daB_TN_cFv) + 0x7B8), -}; - -/* 8062EEC4-8062EF04 -00001 0040+00 1/1 0/0 0/0 .data @9574 */ -SECTION_DATA static void* lit_9574[16] = { - (void*)(((char*)action__8daB_TN_cFv) + 0x10C), (void*)(((char*)action__8daB_TN_cFv) + 0x11C), - (void*)(((char*)action__8daB_TN_cFv) + 0x12C), (void*)(((char*)action__8daB_TN_cFv) + 0x148), - (void*)(((char*)action__8daB_TN_cFv) + 0x154), (void*)(((char*)action__8daB_TN_cFv) + 0x160), - (void*)(((char*)action__8daB_TN_cFv) + 0x16C), (void*)(((char*)action__8daB_TN_cFv) + 0x178), - (void*)(((char*)action__8daB_TN_cFv) + 0x184), (void*)(((char*)action__8daB_TN_cFv) + 0x1A8), - (void*)(((char*)action__8daB_TN_cFv) + 0x1B4), (void*)(((char*)action__8daB_TN_cFv) + 0x1C0), - (void*)(((char*)action__8daB_TN_cFv) + 0x1CC), (void*)(((char*)action__8daB_TN_cFv) + 0x1D8), - (void*)(((char*)action__8daB_TN_cFv) + 0x1F0), (void*)(((char*)action__8daB_TN_cFv) + 0x1E4), -}; - -/* 8062EF04-8062EF10 000600 000C+00 0/1 0/0 0/0 .data tn2_brk_index$10040 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 tn2_brk_index[12] = { - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, -}; -#pragma pop - -/* 8062EF10-8062EF30 -00001 0020+00 1/0 0/0 0/0 .data l_daB_TN_Method */ -static actor_method_class l_daB_TN_Method = { - (process_method_func)daB_TN_Create__FP8daB_TN_c, - (process_method_func)daB_TN_Delete__FP8daB_TN_c, - (process_method_func)daB_TN_Execute__FP8daB_TN_c, - (process_method_func)daB_TN_IsDelete__FP8daB_TN_c, - (process_method_func)daB_TN_Draw__FP8daB_TN_c, -}; - -/* 8062EF30-8062EF60 -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_TN */ -extern actor_process_profile_definition g_profile_B_TN = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_B_TN, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daB_TN_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 225, // mPriority - &l_daB_TN_Method, // sub_method - 0x00044000, // mStatus - fopAc_ENEMY_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 8062EF60-8062EF6C 00065C 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, -}; - -/* 8062EF6C-8062EF78 000668 000C+00 3/3 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, -}; - -/* 8062EF78-8062EF84 000674 000C+00 2/2 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, -}; - -/* 8062EF84-8062EFA8 000680 0024+00 3/3 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_8062E174, - (void*)NULL, - (void*)NULL, - (void*)func_8062E16C, -}; - -/* 8062EFA8-8062EFB4 0006A4 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 8062EFB4-8062EFC0 0006B0 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 8062EFC0-8062EFCC 0006BC 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 8062EFCC-8062EFD8 0006C8 000C+00 2/2 0/0 0/0 .data __vt__12daB_TN_HIO_c */ -SECTION_DATA extern void* __vt__12daB_TN_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daB_TN_HIO_cFv, -}; /* 8061EBEC-8061EC58 0000EC 006C+00 1/1 0/0 0/0 .text __ct__12daB_TN_HIO_cFv */ daB_TN_HIO_c::daB_TN_HIO_c() { - // NONMATCHING + field_0x4 = -1; + mScale = 1.3f; + field_0xc = 40.0f; + field_0x1c = 150.0f; + field_0x20 = 250.0f; + field_0x14 = 210.0f; + field_0x18 = 350.0f; + field_0x10 = 120.0f; + field_0x24 = 360.0f; + field_0x28 = 0.0f; + field_0x2c = 0.0f; } /* 8061EC58-8061ED10 000158 00B8+00 1/1 0/0 0/0 .text ctrlJoint__8daB_TN_cFP8J3DJointP8J3DModel */ -void daB_TN_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING +int daB_TN_c::ctrlJoint(J3DJoint* i_joint, J3DModel* model) { + int mJntNo = i_joint->getJntNo(); + mDoMtx_stack_c::copy(model->getAnmMtx(mJntNo)); + + if (mJntNo == 5) { + mDoMtx_stack_c::XrotM(field_0xa96); + } else if (mJntNo == 1) { + mDoMtx_stack_c::XrotM(field_0xa98); + } + + model->setAnmMtx(mJntNo, mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + return 1; } /* 8061ED10-8061ED5C 000210 004C+00 1/1 0/0 0/0 .text JointCallBack__8daB_TN_cFP8J3DJointi */ -void daB_TN_c::JointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daB_TN_c::JointCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + J3DModel* model = j3dSys.getModel(); + daB_TN_c* mUserArea = (daB_TN_c*)model->getUserArea(); + if (mUserArea) { + mUserArea->ctrlJoint(i_joint, model); + } + } + + return 1; } /* 8061ED5C-8061EE14 00025C 00B8+00 1/1 0/0 0/0 .text calcNeckAngle__8daB_TN_cFv */ void daB_TN_c::calcNeckAngle() { - // NONMATCHING + csXyz acStack_18; + s16 sVar1 = 0; + + if (field_0xa93) { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(5)); + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &acStack_18); + + sVar1 = fopAcM_searchPlayerAngleY(this) - (acStack_18.y + 0x4000); + if (sVar1 > 0x3000) { + sVar1 = 0x3000; + } + + if (sVar1 < -0x3000) { + sVar1 = -0x3000; + } + } + + cLib_addCalcAngleS2(&field_0xa96, sVar1, 4, 0x1000); } /* 8061EE14-8061EEC8 000314 00B4+00 1/1 0/0 0/0 .text calcWaistAngle__8daB_TN_cFv */ void daB_TN_c::calcWaistAngle() { - // NONMATCHING + csXyz acStack_18; + s16 sVar1 = 0; + + if (field_0xa94) { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(1)); + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &acStack_18); + + sVar1 = fopAcM_searchPlayerAngleY(this) - shape_angle.y; + if (sVar1 > 0x3000) { + sVar1 = 0x3000; + } + + if (sVar1 < -0x3000) { + sVar1 = -0x3000; + } + } + + cLib_addCalcAngleS2(&field_0xa98, sVar1, 4, 0x1000); } -/* ############################################################################################## */ -/* 8062E680-8062E684 00004C 0004+00 0/3 0/0 0/0 .rodata @4175 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4175 = 1000.0f; -COMPILER_STRIP_GATE(0x8062E680, &lit_4175); -#pragma pop +UNK_REL_BSS -/* 8062EFE0-8062EFE4 000008 0001+03 2/2 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 8062EFE4-8062EFE8 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 8062EFE8-8062EFEC 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 8062EFEC-8062EFF0 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 8062EFF0-8062EFF4 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 8062EFF4-8062EFF8 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 8062EFF8-8062EFFC 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 8062EFFC-8062F000 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 8062F000-8062F004 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 8062F004-8062F008 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 8062F008-8062F00C 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 8062F00C-8062F010 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 8062F010-8062F014 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 8062F014-8062F018 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 8062F018-8062F01C 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 8062F01C-8062F020 -00001 0004+00 2/2 0/0 0/0 .bss None */ -/* 8062F01C 0001+00 data_8062F01C @1009 */ /* 8062F01D 0003+00 data_8062F01D None */ -static u8 struct_8062F01C[4]; - -/* 8062F020-8062F02C 000048 000C+00 0/1 0/0 0/0 .bss @3936 */ -#pragma push -#pragma force_active on -static u8 lit_3936[12]; -#pragma pop +static u8 struct_8062F01C; /* 8062F02C-8062F05C 000054 0030+00 9/11 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[48]; +static daB_TN_HIO_c l_HIO; /* 8061EEC8-8061F1E0 0003C8 0318+00 1/1 0/0 0/0 .text draw__8daB_TN_cFv */ -void daB_TN_c::draw() { - // NONMATCHING +int daB_TN_c::draw() { + J3DModel* model = mpModelMorf2->getModel(); + if (field_0xa9e != 0 || field_0xaac != 0) { + return 1; + } + + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + J3DModelData* modelData = model->getModelData(); + if (field_0xaa5 == 1) { + mBrkAnm->entry(modelData); + } + + if (field_0x728) { + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + J3DMaterial* mMatNodePtr = modelData->getMaterialNodePointer(i); + J3DGXColorS10* mColor = mMatNodePtr->getTevColor(0); + mColor->r = field_0x728; + mColor = mMatNodePtr->getTevColor(0); + mColor->g = field_0x728; + mColor = mMatNodePtr->getTevColor(0); + mColor->b = field_0x728; + } + } + + mpModelMorf2->entryDL(); + cXyz sp48(current.pos.x, current.pos.y + 100.0f, current.pos.z); + mShadowKey = dComIfGd_setShadow(mShadowKey, 1, model, &sp48, 1000.0f, 0.0f, + current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + + for (int i = 0; i < 16; i++) { + if (field_0x9fc[i] != 7) { + if (i == 15) { + model = mpModelMorf1->getModel(); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + mpModelMorf1->entryDL(); + } else { + model = mModels[i]; + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + + if (field_0xaa5 == 1 && mBrkAnms[i]) { + modelData = model->getModelData(); + mBrkAnms[i]->entry(modelData); + } + mDoExt_modelUpdateDL(model); + } + + if (field_0x9fc[i] == 0) { + dComIfGd_addRealShadow(mShadowKey, model); + } + } + } + + if (field_0xa90 != 0) { + g_env_light.setLightTevColorType_MAJI(field_0x648, &tevStr); + modelData = field_0x648->getModelData(); + J3DGXColor* mKColor = modelData->getMaterialNodePointer(0)->getTevKColor(3); + mKColor->a = l_HIO.field_0xc; + mDoExt_modelUpdateDL(field_0x648); + } + + return 1; } /* 8061F1E0-8061F200 0006E0 0020+00 1/0 0/0 0/0 .text daB_TN_Draw__FP8daB_TN_c */ -static void daB_TN_Draw(daB_TN_c* param_0) { - // NONMATCHING +static int daB_TN_Draw(daB_TN_c* i_this) { + return i_this->draw(); } /* 8061F200-8061F31C 000700 011C+00 3/3 0/0 0/0 .text setBreakPart__8daB_TN_cFi */ -void daB_TN_c::setBreakPart(int param_0) { - // NONMATCHING +void daB_TN_c::setBreakPart(int param_1) { + static int break_part_no[13] = { + 6, 11, 8, 1, 10, 0, 9, 7, 4, 5, 12, 2, 3, + }; + + if (param_1 >= 12) { + param_1 = 13; + } + + int iVar1 = 0; + for (int i = 0; i < 13; i++) { + if (field_0x9fc[break_part_no[i]] != 0) { + iVar1++; + } + } + + iVar1 = param_1 - iVar1; + if (iVar1 != 0) { + for (int i = 0; i <= 12; i++) { + if (field_0x9fc[break_part_no[i]] == 0) { + field_0x9fc[break_part_no[i]] = 2; + mSound.startCreatureSound(Z2SE_EN_TN_BRK_ARMOR, 0, -1); + + if (field_0xaa5 == 1 && break_part_no[i] == 4) { + field_0xa78++; + iVar1++; + } + + iVar1--; + + if (iVar1 == 0) { + return; + } + } + } + } } /* 8061F31C-8061F3D0 00081C 00B4+00 1/1 0/0 0/0 .text setBreakHeadPart__8daB_TN_cFi */ -void daB_TN_c::setBreakHeadPart(int param_0) { - // NONMATCHING +void daB_TN_c::setBreakHeadPart(int param_1) { + static int break_part_no2[13] = { + 4, 5, 7, 6, 11, 8, 1, 10, 0, 9, 12, 2, 3, + }; + + if (param_1 >= 12) { + param_1 = 13; + } + + int iVar1 = 0; + for (int i = 0; i < 13; i++) { + if (field_0x9fc[break_part_no2[i]] != 0) { + iVar1++; + } + } + + iVar1 = param_1 - iVar1; + if (iVar1 != 0) { + for (int i = 0; i <= 12; i++) { + if (field_0x9fc[break_part_no2[i]] == 0) { + field_0x9fc[break_part_no2[i]] = 2; + + if (break_part_no2[i] == 4) { + field_0xa78++; + iVar1++; + } + + iVar1--; + + if (iVar1 == 0) { + return; + } + } + } + } } /* 8061F3D0-8061F520 0008D0 0150+00 4/4 0/0 0/0 .text setPartLandEffect__8daB_TN_cFii */ -void daB_TN_c::setPartLandEffect(int param_0, int param_1) { - // NONMATCHING +void daB_TN_c::setPartLandEffect(int param_1, int param_2) { + static int break_part_vib[16] = { + 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 3, 2, 0xFF, 2, + }; + + if (param_2 == 0) { + csXyz cStack_30(0, 0, 0); + cXyz sp1c(l_HIO.mScale, l_HIO.mScale, l_HIO.mScale); + dComIfGp_particle_setPolyColor(0x87ea, mAcch.m_gnd, &field_0x75c[param_1], + &tevStr, &cStack_30, &sp1c, 0, NULL, -1, NULL); + dComIfGp_particle_set(0x880b, &field_0x75c[param_1], &tevStr, &cStack_30, &sp1c); + } + + int mVibMode = break_part_vib[param_1]; + if (mVibMode != 0xff) { + dComIfGp_getVibration().StartShock(mVibMode, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); + } } -/* ############################################################################################## */ -/* 8062E684-8062E688 000050 0004+00 0/12 0/0 0/0 .rodata @4365 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4365 = 10.0f; -COMPILER_STRIP_GATE(0x8062E684, &lit_4365); -#pragma pop - -/* 8062E688-8062E68C 000054 0004+00 0/9 0/0 0/0 .rodata @4366 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4366 = 5.0f; -COMPILER_STRIP_GATE(0x8062E688, &lit_4366); -#pragma pop - -/* 8062E68C-8062E690 000058 0004+00 0/7 0/0 0/0 .rodata @4367 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4367 = 35.0f; -COMPILER_STRIP_GATE(0x8062E68C, &lit_4367); -#pragma pop - -/* 8062E690-8062E694 00005C 0004+00 0/5 0/0 0/0 .rodata @4368 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4368 = 7.0f; -COMPILER_STRIP_GATE(0x8062E690, &lit_4368); -#pragma pop - -/* 8062E694-8062E698 000060 0004+00 0/4 0/0 0/0 .rodata @4369 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4369 = 55.0f; -COMPILER_STRIP_GATE(0x8062E694, &lit_4369); -#pragma pop - -/* 8062E698-8062E69C 000064 0004+00 0/4 0/0 0/0 .rodata @4370 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4370 = -70.0f; -COMPILER_STRIP_GATE(0x8062E698, &lit_4370); -#pragma pop - -/* 8062E69C-8062E6A0 000068 0004+00 1/7 0/0 0/0 .rodata @4371 */ -SECTION_RODATA static f32 const lit_4371 = -1.0f; -COMPILER_STRIP_GATE(0x8062E69C, &lit_4371); - -/* 8062E6A0-8062E6A4 00006C 0004+00 0/1 0/0 0/0 .rodata @4372 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4372 = 32768.0f; -COMPILER_STRIP_GATE(0x8062E6A0, &lit_4372); -#pragma pop - -/* 8062E6A4-8062E6A8 000070 0004+00 0/2 0/0 0/0 .rodata @4373 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4373 = 2.0f; -COMPILER_STRIP_GATE(0x8062E6A4, &lit_4373); -#pragma pop - -/* 8062E6A8-8062E6AC 000074 0004+00 0/3 0/0 0/0 .rodata @4374 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4374 = 18.0f; -COMPILER_STRIP_GATE(0x8062E6A8, &lit_4374); -#pragma pop - -/* 8062E6AC-8062E6B4 000078 0004+04 1/7 0/0 0/0 .rodata @4375 */ -SECTION_RODATA static f32 const lit_4375[1 + 1 /* padding */] = { - 60.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x8062E6AC, &lit_4375); - -/* 8062E6B4-8062E6BC 000080 0008+00 1/4 0/0 0/0 .rodata @4377 */ -SECTION_RODATA static u8 const lit_4377[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8062E6B4, &lit_4377); - /* 8062F05C-8062F068 000084 000C+00 0/1 0/0 0/0 .bss @3949 */ #pragma push #pragma force_active on @@ -1111,8 +467,10 @@ static u8 lit_3963[12]; static u8 lit_3964[12]; #pragma pop -/* 8062F11C-8062F1DC 000144 00C0+00 1/2 0/0 0/0 .bss offset_part__22@unnamed@d_a_b_tn_cpp@ */ -static u8 data_8062F11C[192]; +namespace { + /* 8062F11C-8062F1DC 000144 00C0+00 1/2 0/0 0/0 .bss offset_part__22@unnamed@d_a_b_tn_cpp@ */ + static cXyz offset_part[16]; +} /* 8062F1DC-8062F1E8 000204 000C+00 0/1 0/0 0/0 .bss @3965 */ #pragma push @@ -1210,1273 +568,4499 @@ static u8 lit_3979[12]; static u8 lit_3980[12]; #pragma pop -/* 8062F29C-8062F2FC 0002C4 0060+00 4/5 0/0 0/0 .bss ground_angle_part__22@unnamed@d_a_b_tn_cpp@ - */ -static u8 data_8062F29C[96]; +namespace { + /* 8062F29C-8062F2FC 0002C4 0060+00 4/5 0/0 0/0 .bss ground_angle_part__22@unnamed@d_a_b_tn_cpp@ */ + static csXyz ground_angle_part[16]; +} /* 8061F520-8061F9F4 000A20 04D4+00 1/1 0/0 0/0 .text calcShieldMove__8daB_TN_cFv */ void daB_TN_c::calcShieldMove() { - // NONMATCHING + s16 sVar2; + int iVar1; + + switch (field_0x9fc[12]) { + case 2: + mDoMtx_stack_c::copy(mModels[12]->getBaseTRMtx()); + mDoMtx_stack_c::multVecZero(&field_0x75c[12]); + field_0x81c[12] = field_0x75c[12]; + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x99c[12]); + + sVar2 = shape_angle.y + 0x4000; + field_0xa5c = 0x1800; + field_0x8dc[12].set((cM_rndF(5.0f) + 10.0f) * cM_ssin(sVar2), cM_rndF(7.0f) + 35.0f, (cM_rndF(5.0f) + 10.0f) * cM_scos(sVar2)); + field_0x9fc[12] = 3; + break; + + case 3: + field_0x10d0[12].SetGroundUpY(ground_y_part[12] + 55.0f); + cLib_chaseF(&field_0x8dc[12].y, -70.0f, 5.0f); + cLib_chaseAngleS(&field_0x99c[12].x, ground_angle_part[12].x, 0x400); + cLib_chaseAngleS(&field_0x99c[12].z, field_0xa5c + ground_angle_part[12].z, 0x800); + + if (field_0x10d0[12].ChkGroundHit()) { + Z2GetAudioMgr()->seStart(Z2SE_EN_TN_SHIELD_BND, &field_0x75c[12], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + s16 sVar1 = cM_rndFX(32768.0f); + field_0x8dc[12].set((cM_rndF(2.0f) + 5.0f) * cM_ssin(sVar1), cM_rndF(5.0f) + 18.0f, (cM_rndF(2.0f) + 5.0f) * cM_scos(sVar1)); + field_0x9fc[12] = 4; + setPartLandEffect(12, 0); + } + break; + + case 4: + case 5: + field_0x10d0[12].SetGroundUpY(ground_y_part[12] + cM_ssin(field_0xa5c) * 60.0f); + cLib_chaseAngleS(&field_0x99c[12].x, ground_angle_part[12].x, 0x400); + cLib_chaseAngleS(&field_0x99c[12].z, ground_angle_part[12].z, 0x400); + cLib_chaseAngleS(&field_0xa5c, 0, 0x60); + field_0xa3c[12] += 0x1800; + field_0x99c[12].x += (int)(field_0xa5c * cM_ssin(field_0xa3c[12])); + field_0x99c[12].z += (int)(field_0xa5c * cM_scos(field_0xa3c[12])); + cLib_chaseF(&field_0x8dc[12].y, -70.0f, 5.0f); + + if (field_0x9fc[12] == 4 && field_0x10d0[12].ChkGroundHit()) { + if (field_0xaa5 == 0) { + field_0x9fc[12] = 5; + field_0xa3c[12] = 0; + field_0x8dc[12].set(0.0f, 0.0f, 0.0f); + setPartLandEffect(12, 1); + } else { + fopAcM_createDisappear(this, &field_0x75c[12], 5, 0, 0xff); + field_0x9fc[12] = 7; + } + } + break; + + case 6: + sVar2 = shape_angle.y + 0x4000; + field_0x8dc[12].set((cM_rndF(2.0f) + 5.0f) * cM_ssin(sVar2), cM_rndF(5.0f) + 18.0f, (cM_rndF(2.0f) + 5.0f) * cM_scos(sVar2)); + field_0x9fc[12] = 4; + field_0xa5c = 0x1800; + break; + } } -/* ############################################################################################## */ -/* 8062E6BC-8062E6C0 000088 0004+00 0/4 0/0 0/0 .rodata @4475 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4475 = 70.0f; -COMPILER_STRIP_GATE(0x8062E6BC, &lit_4475); -#pragma pop - -/* 8062E6C0-8062E6C4 00008C 0004+00 0/8 0/0 0/0 .rodata @4476 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4476 = 200.0f; -COMPILER_STRIP_GATE(0x8062E6C0, &lit_4476); -#pragma pop - -/* 8062E6C4-8062E6C8 000090 0004+00 0/2 0/0 0/0 .rodata @4477 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4477 = 80.0f; -COMPILER_STRIP_GATE(0x8062E6C4, &lit_4477); -#pragma pop - -/* 8062E6C8-8062E6CC 000094 0004+00 0/4 0/0 0/0 .rodata @4478 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4478 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x8062E6C8, &lit_4478); -#pragma pop - -/* 8062E6CC-8062E6D0 000098 0004+00 0/3 0/0 0/0 .rodata @4479 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4479 = 25.0f; -COMPILER_STRIP_GATE(0x8062E6CC, &lit_4479); -#pragma pop - /* 8061F9F4-8061FD7C 000EF4 0388+00 1/1 0/0 0/0 .text calcSwordMoveA__8daB_TN_cFv */ void daB_TN_c::calcSwordMoveA() { // NONMATCHING + switch (field_0x9fc[13]) { + case 2: + mDoMtx_stack_c::copy(mModels[13]->getBaseTRMtx()); + mDoMtx_stack_c::multVecZero(&field_0x75c[13]); + field_0x81c[13] = field_0x75c[13]; + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x99c[13]); + + if (field_0xaa5 == 0) { + field_0x8dc[13].set(0.0f, 0.0f, 70.0f); + } else { + cXyz sp20 = daPy_getPlayerActorClass()->current.pos; + sp20.y += 200.0f; + s16 sVar5 = cLib_targetAngleY(&field_0x75c[13], &sp20); + s16 sVar6 = cLib_targetAngleX(&field_0x75c[13], &sp20); + f32 fVar1 = abs(cM_scos(sVar6) * 80.0f); + field_0x8dc[13].set(fVar1 * cM_ssin(sVar5), cM_ssin(sVar6) * 80.0f, fVar1 * cM_scos(sVar5)); + } + + field_0x9fc[13] = 3; + break; + + case 3: + Z2GetAudioMgr()->seStartLevel(Z2SE_EN_TN_WEAPON_FLY, &field_0x75c[13], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + cLib_chaseF(&field_0x8dc[13].y, -70.0f, 0.3f); + cLib_chaseAngleS(&field_0x99c[13].x, ground_angle_part[13].x, 0x800); + field_0x99c[13].y += -0x1800; + cLib_chaseAngleS(&field_0x99c[13].z, ground_angle_part[13].z, 0x800); + + if (field_0x10d0[13].ChkGroundHit() || field_0x10d0[13].ChkWallHit()) { + Z2GetAudioMgr()->seStart(Z2SE_EN_TN_WEAPON_STOP, &field_0x75c[13], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + setPartLandEffect(13, 0); + + if (field_0xaa5 == 1) { + field_0x99c[13].y = 0x1800; + fopAcM_createDisappear(this, &field_0x75c[13], 3, 0, 0xff); + field_0x9fc[13] = 7; + } else { + field_0x8dc[13].set(0.0f, 18.0f, 25.0f); + field_0x9fc[13] = 4; + } + } + break; + + case 6: + case 7: + cLib_chaseF(&field_0x8dc[13].y, -70.0f, 5.0f); + cLib_chaseAngleS(&field_0x99c[13].x, ground_angle_part[13].x, 0x800); + field_0x99c[13].y += -0x1000; + cLib_chaseAngleS(&field_0x99c[13].z, ground_angle_part[13].z, 0x800); + + if (field_0x10d0[13].ChkGroundHit() || field_0x10d0[13].ChkWallHit()) { + field_0x99c[13] = ground_angle_part[13]; + field_0x8dc[13].set(0.0f, 0.0f, 0.0f); + field_0xa3c[13] = -0x1800; + setPartLandEffect(13, 1); + field_0x9fc[13] = 7; + } + } } /* 8061FD7C-8061FFE0 00127C 0264+00 1/1 0/0 0/0 .text calcSwordMoveB__8daB_TN_cFv */ void daB_TN_c::calcSwordMoveB() { // NONMATCHING + switch (field_0x9fc[15]) { + case 2: + mDoMtx_stack_c::copy(mpModelMorf1->getModel()->getBaseTRMtx()); + mDoMtx_stack_c::multVecZero(&field_0x75c[15]); + field_0x81c[15] = field_0x75c[15]; + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x99c[15]); + field_0x8dc[15].set(0.0f, 0.0f, 10.0f); + field_0x9fc[15] = 3; + // fallthrough + + case 3: + case 4: + cLib_chaseAngleS(&field_0x99c[15].x, ground_angle_part[15].x, 16); + cLib_chaseAngleS(&field_0x99c[15].y, ground_angle_part[15].y, 16); + cLib_chaseAngleS(&field_0x99c[15].z, ground_angle_part[15].z, 16); + cLib_chaseF(&field_0x8dc[15].y, -70.0f, 5.0f); + + if (field_0x10d0[15].ChkGroundHit()) { + Z2GetAudioMgr()->seStart(Z2SE_EN_TN_SWD_DROP, &field_0x75c[15], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + if (field_0x9fc[15] == 3) { + field_0x8dc[15].set(0.0f, 10.0f, 10.0f); + field_0x9fc[15] = 4; + setPartLandEffect(15, 0); + } else if (field_0xaa5 == 0) { + field_0x8dc[15].set(0.0f, 0.0f, 7.0f); + field_0x99c[15] = ground_angle_part[15]; + field_0x9fc[15] = 5; + } else { + fopAcM_createDisappear(this, &field_0x75c[15], 3, 0, 0xff); + field_0x9fc[15] = 7; + } + } + break; + + case 5: + cLib_chaseF(&field_0x8dc[15].y, -70.0f, 5.0f); + cLib_chaseF(&field_0x8dc[15].z, 0.0f, 0.3f); + field_0x99c[15].set(ground_angle_part[15].x, ground_angle_part[15].y, ground_angle_part[15].z); + break; + + case 8: + break; + } } -/* ############################################################################################## */ -/* 8062E6D0-8062E6D4 00009C 0004+00 2/10 0/0 0/0 .rodata @4655 */ -SECTION_RODATA static f32 const lit_4655 = 0.5f; -COMPILER_STRIP_GATE(0x8062E6D0, &lit_4655); - -/* 8062E6D4-8062E6D8 0000A0 0004+00 0/1 0/0 0/0 .rodata @4656 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4656 = 4096.0f; -COMPILER_STRIP_GATE(0x8062E6D4, &lit_4656); -#pragma pop - /* 8061FFE0-8062070C 0014E0 072C+00 2/1 0/0 0/0 .text calcOtherPartMove__8daB_TN_cFi */ -void daB_TN_c::calcOtherPartMove(int param_0) { +void daB_TN_c::calcOtherPartMove(int param_1) { // NONMATCHING + cXyz sp7c; + s16 sVar1, sVar4; + + switch (field_0x9fc[param_1]) { + case 0: + if (param_1 != 14) { + setArmorBreakEffect(param_1); + } + // fallthrough + + case 2: + mDoMtx_stack_c::copy(mModels[param_1]->getBaseTRMtx()); + mDoMtx_stack_c::multVecZero(&field_0x75c[param_1]); + field_0x81c[param_1] = field_0x75c[param_1]; + mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x99c[param_1]); + + sp7c = daPy_getPlayerActorClass()->current.pos; + + if (param_1 == 14) { + sVar1 = shape_angle.y + 0x4000; + } else if (param_1 == 2) { + sVar1 = shape_angle.y + -0x4000; + } else if (param_1 == 3) { + sVar1 = shape_angle.y + 0x2000; + } else { + s16 sVar2 = cLib_targetAngleY(&field_0x75c[param_1], &sp7c); + if (cM_rnd() < 0.5f) { + f32 fVar1 = cM_rndFX(4096.0f); + sVar1 = sVar2 + 0x2000 + fVar1; + } else { + f32 fVar2 = cM_rndFX(4096.0f); + sVar1 = sVar2 - 0x2000 + fVar2; + } + } + + field_0x8dc[param_1].set((cM_rndF(5.0f) + 10.0f) * cM_ssin(sVar1), cM_rndF(7.0f) + 35.0f, (cM_rndF(5.0f) + 10.0f) * cM_scos(sVar1)); + field_0x9fc[param_1] = 3; + break; + + case 3: + cLib_chaseF(&field_0x8dc[param_1].y, -70.0f, 5.0f); + + if (param_1 == 14) { + if ( field_0x8dc[param_1].y > 0.0f) { + field_0x99c[param_1].y += 0x800; + field_0x99c[param_1].z += 0x800; + } else { + cLib_chaseAngleS(&field_0x99c[param_1].x, ground_angle_part[param_1].x, 0x800); + cLib_chaseAngleS(&field_0x99c[param_1].z, ground_angle_part[param_1].z, 0x800); + } + } else if (field_0x8dc[param_1].y > 0.0f) { + field_0x99c[param_1].y += 0x1000; + field_0x99c[param_1].z += 0x1000; + } else { + cLib_chaseAngleS(&field_0x99c[param_1].x, ground_angle_part[param_1].x, 0x400); + cLib_chaseAngleS(&field_0x99c[param_1].z, ground_angle_part[param_1].z, 0x400); + } + + if ((field_0xaa5 != 1 || param_1 != 5) && field_0x10d0[param_1].ChkGroundHit()) { + if (param_1 == 14) { + Z2GetAudioMgr()->seStart(Z2SE_EN_TN_SAYA_BND_1, &field_0x75c[0], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } else { + Z2GetAudioMgr()->seStart(Z2SE_EN_TN_ARMOR_BND, &field_0x75c[param_1], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + + s16 sVar3 = cM_rndFX(32768.0f); + field_0x8dc[param_1].set((cM_rndF(2.0f) + 5.0f) * cM_ssin(sVar3), cM_rndF(5.0f) + 18.0f, (cM_rndF(2.0f) + 5.0f) * cM_scos(sVar3)); + field_0x9fc[param_1] = 4; + setPartLandEffect(param_1, 0); + } + break; + + case 4: + cLib_chaseF(&field_0x8dc[param_1].y, -70.0f, 5.0f); + cLib_chaseAngleS(&field_0x99c[param_1].x, ground_angle_part[param_1].x, 0x800); + field_0x99c[param_1].y += 0x400; + cLib_chaseAngleS(&field_0x99c[param_1].z, ground_angle_part[param_1].z, 0x800); + + if (field_0x10d0[param_1].ChkGroundHit()) { + if (field_0xaa5 == 0) { + if (param_1 == 14) { + Z2GetAudioMgr()->seStart(Z2SE_EN_TN_SAYA_BND_2, &field_0x75c[0], 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + } + + field_0x9fc[param_1] = 5; + field_0x99c[param_1].x = ground_angle_part[param_1].x; + field_0x99c[param_1].z = ground_angle_part[param_1].z; + field_0x9fc[param_1 + 0x20] = 0x400; + setPartLandEffect(param_1, 1); + } else { + fopAcM_createDisappear(this, &field_0x75c[param_1], 3, 0, 0xff); + field_0x9fc[param_1] = 7; + if (field_0xaa5 == 1 && param_1 == 4) { + field_0x9fc[5] = 7; + } + } + } + break; + + case 5: + cLib_chaseF(&field_0x8dc[param_1].y, -70.0f, 5.0f); + cLib_chaseF(&field_0x8dc[param_1].x, 0.0f, 2.0f); + cLib_chaseF(&field_0x8dc[param_1].z, 0.0f, 2.0f); + cLib_chaseAngleS(&field_0xa3c[param_1], 0, 0x40); + field_0x99c[param_1].y += field_0xa3c[param_1]; + break; + + case 6: + sVar4 = shape_angle.y + cM_rndFX(16384.0f); + field_0x8dc[param_1].set((cM_rndF(5.0f) + 50.0f) * cM_ssin(sVar4), 0.0f, (cM_rndF(5.0f) + 50.0f) * cM_scos(sVar4)); + field_0x9fc[param_1 + 0x20] = 0x800; + field_0x9fc[param_1] = 5; + break; + + case 7: + break; + } } /* 8062070C-806208C8 001C0C 01BC+00 1/1 0/0 0/0 .text calcPartMove__8daB_TN_cFv */ void daB_TN_c::calcPartMove() { // NONMATCHING + for (int i = 0; i < 16; i++) { + u16 uVar1 = field_0xa1c[i]; + if (uVar1 != 0) { + uVar1 = uVar1 - 1; + } + + field_0x81c[i] = field_0x75c[i]; + + if (i == 12) { + calcShieldMove(); + } else if (i == 13) { + calcSwordMoveA(); + } else if (i == 15) { + calcSwordMoveB(); + } else { + calcOtherPartMove(i); + } + + field_0x75c[i] += *field_0x3edc[i].GetCCMoveP(); + + if (field_0x9fc[i] == 3 || field_0x9fc[i] == 4 || field_0x9fc[i] == 5) { + field_0x8dc[i] += field_0x81c[i]; + field_0x10d0[i].CrrPos(dComIfG_Bgsp()); + + if (field_0xaa1 != 0 && field_0x429c[i].ChkCoHit()) { + cCcD_Obj* mCoHitObj = field_0x429c[i].GetCoHitObj(); + daB_TN_c* i_this = (daB_TN_c*)dCc_GetAc(mCoHitObj->GetAc()); + if ((i_this == this && mCoHitObj->GetAtAtp()) && field_0xa1c[i] == 0) { + field_0x9fc[i] = 6; + field_0xa1c[i] = 0x1e; + } + + field_0x429c[i].ClrCoHit(); + } + } + } } -/* ############################################################################################## */ -/* 8062E8E8-8062E8E8 0002B4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8062E8E8 = "B_tn"; -#pragma pop - /* 806208C8-8062096C 001DC8 00A4+00 18/18 0/0 0/0 .text setBck__8daB_TN_cFiUcff */ -void daB_TN_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) { - // NONMATCHING +void daB_TN_c::setBck(int param_1, u8 param_2, f32 param_3, f32 param_4) { + mpModelMorf2->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("B_tn", param_1), + param_2, param_3, param_4, 0.0f, -1.0f); } /* 8062096C-806209C8 001E6C 005C+00 3/3 0/0 0/0 .text checkBck__8daB_TN_cFi */ -void daB_TN_c::checkBck(int param_0) { - // NONMATCHING +int daB_TN_c::checkBck(int param_1) { + return mpModelMorf2->getAnm() == dComIfG_getObjectRes("B_tn", param_1); } /* 806209C8-806209E0 001EC8 0018+00 22/22 0/0 0/0 .text setActionMode__8daB_TN_cFii */ -void daB_TN_c::setActionMode(int param_0, int param_1) { - // NONMATCHING +void daB_TN_c::setActionMode(int param_1, int param_2) { + offHeadLockFlg(); + mActionMode1 = param_1; + mActionMode2 = param_2; } /* 806209E0-80620AE4 001EE0 0104+00 11/11 0/0 0/0 .text setSwordAtBit__8daB_TN_cFi */ -void daB_TN_c::setSwordAtBit(int param_0) { - // NONMATCHING +void daB_TN_c::setSwordAtBit(int param_1) { + if (param_1 == 0) { + for (int i = 0; i < 4; i++) { + mSwordSphs[i].OffAtSetBit(); + mSwordSphs[i].ClrAtHit(); + } + + mCps.OffAtSetBit(); + mCps.ClrAtHit(); + } else { + for (int i = 0; i < 4; i++) { + mSwordSphs[i].OnAtSetBit(); + if (mActionMode1 <= 8) { + mSwordSphs[i].SetAtAtp(4); + } else { + mSwordSphs[i].SetAtAtp(2); + } + } + + mCps.OnAtSetBit(); + if (mActionMode1 <= 8) { + mCps.SetAtAtp(4); + } else { + mCps.SetAtAtp(2); + } + } } /* 80620AE4-80620B4C 001FE4 0068+00 5/5 0/0 0/0 .text setSwordAtBreak__8daB_TN_cFi */ -void daB_TN_c::setSwordAtBreak(int param_0) { - // NONMATCHING +void daB_TN_c::setSwordAtBreak(int param_1) { + if (param_1 == 0) { + for (int i = 0; i < 4; i++) { + mSwordSphs[i].SetAtSpl((dCcG_At_Spl)1); + } + mCps.SetAtSpl((dCcG_At_Spl)1); + } else { + for (int i = 0; i < 4; i++) { + mSwordSphs[i].SetAtSpl((dCcG_At_Spl)10); + } + mCps.SetAtSpl((dCcG_At_Spl)10); + field_0xa9a = 0; + } } /* 80620B4C-80620E90 00204C 0344+00 1/1 0/0 0/0 .text setBodyShield__8daB_TN_cFv */ void daB_TN_c::setBodyShield() { // NONMATCHING + int bVar3 = true; + int bVar2; + daPy_py_c* player = daPy_getPlayerActorClass(); + switch (mActionMode1) { + case 0: + case 1: + for (int i = 0; i < 3; i++) { + field_0x2ec8[i].OnTgShield(); + } + + field_0x3618.OnTgShield(); + field_0x3618.OnTgSetBit(); + return; + + case 2: + case 3: + case 4: + case 5: + case 6: + if ((daPy_py_c::checkNowWolf() || player->getCutType() == daPy_py_c::CUT_TYPE_TWIRL) || player->getCutCount() < 4) { + field_0xa9f = 0; + } else { + field_0xa9f = 1; + } + + if (field_0xa91 != 0) { + if (abs(fopAcM_searchPlayerAngleY(this) - shape_angle.y) < 0x3001) { + break; + } + } + + bVar3 = false; + // break; + bVar2 = false; + if ((player->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP || player->getCutType() == daPy_py_c::CUT_TYPE_MORTAL_DRAW_B) || + (player->getCutType() == daPy_py_c::CUT_TYPE_MORTAL_DRAW_A || field_0xaa9 != 0)) { + bVar3 = false; + bVar2 = true; + } + + if (field_0xa78 > 10) { + bVar3 = false; + field_0xaa7 = 0; + } + + if ((bVar3 || daPy_py_c::checkNowWolf()) || field_0xaa7 != 0) { + for (int i = 0; i < 3; i++) { + field_0x2ec8[i].OnTgShield(); + } + } else { + for (int i = 0; i < 3; i++) { + field_0x2ec8[i].OffTgShield(); + } + } + + if ((mActionMode1 == 7 || field_0xa78 > 10) && field_0xaa7 == 0) { + bVar2 = true; + } + + if (bVar2) { + field_0x3618.OffTgShield(); + field_0x3618.OffTgSetBit(); + } else { + field_0x3618.OnTgShield(); + field_0x3618.OnTgSetBit(); + } + break; + + default: + field_0xa9f = 0; + + if (((daPy_py_c::checkNowWolf() || player->getCutType() == daPy_py_c::CUT_TYPE_TWIRL) || player->getCutType() == daPy_py_c::CUT_TYPE_MORTAL_DRAW_B) || + (player->getCutType() == daPy_py_c::CUT_TYPE_MORTAL_DRAW_A || player->getCutCount() < 4)) { + if ((player->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT || player->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT) && field_0xaaa == 0) { + field_0xa9f = 1; + } + } else { + field_0xa9f = 1; + } + + bVar3 = false; + if (player->getCutType() != daPy_py_c::CUT_TYPE_HEAD_JUMP && ((field_0xa91 == 1 && field_0xa9f != 0) || (field_0xaa7 != 0 || daPy_py_c::checkNowWolf()))) { + bVar3 = true; + } + + if (bVar3) { + for (int i = 0; i < 3; i++) { + field_0x2ec8[i].OnTgShield(); + } + return; + } + + for (int i = 0; i < 3; i++) { + field_0x2ec8[i].OffTgShield(); + } + + return; + } } -/* ############################################################################################## */ -/* 8062E6D8-8062E6DC 0000A4 0004+00 0/0 0/0 0/0 .rodata @4657 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4657 = 16384.0f; -COMPILER_STRIP_GATE(0x8062E6D8, &lit_4657); -#pragma pop - -/* 8062E6DC-8062E6E0 0000A8 0004+00 1/4 0/0 0/0 .rodata @4658 */ -SECTION_RODATA static f32 const lit_4658 = 50.0f; -COMPILER_STRIP_GATE(0x8062E6DC, &lit_4658); - -/* 8062E6E0-8062E6E4 0000AC 0004+00 1/7 0/0 0/0 .rodata @4957 */ -SECTION_RODATA static f32 const lit_4957 = 30.0f; -COMPILER_STRIP_GATE(0x8062E6E0, &lit_4957); - /* 8062F2FC-8062F300 000324 0004+00 2/3 0/0 0/0 .bss m_attack_tn */ -static u8 m_attack_tn[4]; +static daB_TN_c* m_attack_tn; /* 8062F300-8062F304 000328 0004+00 1/2 0/0 0/0 .bss m_attack_timer */ -static u8 m_attack_timer[4]; +static int m_attack_timer; -/* 80620E90-80620FA0 002390 0110+00 4/4 0/0 0/0 .text checkNormalAttackAble__8daB_TN_cFv - */ -void daB_TN_c::checkNormalAttackAble() { - // NONMATCHING +/* 80620E90-80620FA0 002390 0110+00 4/4 0/0 0/0 .text checkNormalAttackAble__8daB_TN_cFv */ +bool daB_TN_c::checkNormalAttackAble() { + if (field_0xaa5 == 1) { + if (daPy_getPlayerActorClass()->getCutCount() != 0) { + field_0xa70 = cM_rndF(60.0f) + 30.0f; + return 0; + } + + if (m_attack_tn && m_attack_tn != this) { + field_0xa70 = cM_rndF(60.0f) + 30.0f; + return 0; + } + + if (m_attack_timer != 0) { + field_0xa70 = cM_rndF(60.0f) + 30.0f; + return 0; + } + + m_attack_timer = 30; + } + + return 1; } /* 80620FA0-80621070 0024A0 00D0+00 4/3 0/0 0/0 .text getCutType__8daB_TN_cFv */ -void daB_TN_c::getCutType() { +u32 daB_TN_c::getCutType() { // NONMATCHING + u32 rv = 0; + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_NORMAL_SWORD)) { + if (daPy_getPlayerActorClass()->getCutCount() >= 4) { + rv = 4; + } + + if (mAtInfo.mpCollider && ((dCcD_GObjInf*)mAtInfo.mpCollider)->GetAtSpl() == 1) { + rv = 4; + } + } + + switch (daPy_getPlayerActorClass()->getCutType()) { + default: + if (field_0xaaa == 0) { + return 32; + } + + break; + + case daPy_py_c::CUT_TYPE_NM_VERTICAL: + case daPy_py_c::CUT_TYPE_NM_RIGHT: + case daPy_py_c::CUT_TYPE_FINISH_LEFT: + case daPy_py_c::CUT_TYPE_FINISH_VERTICAL: + case daPy_py_c::CUT_TYPE_DASH_UNK_26: + return rv | 32; + + case daPy_py_c::CUT_TYPE_NM_STAB: + case daPy_py_c::CUT_TYPE_FINISH_STAB: + return rv | 16; + + case daPy_py_c::CUT_TYPE_NM_LEFT: + case daPy_py_c::CUT_TYPE_DASH_UNK_25: + return rv | 34; + + case daPy_py_c::CUT_TYPE_TURN_RIGHT: + case daPy_py_c::CUT_TYPE_TURN_LEFT: + return rv | 18; + + case daPy_py_c::CUT_TYPE_JUMP: + case daPy_py_c::CUT_TYPE_LARGE_JUMP: + return rv | 2; + + case daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT: + case daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT: + return rv | 33; + + case daPy_py_c::CUT_TYPE_TWIRL: + return rv | 1; + + case daPy_py_c::CUT_TYPE_COMBO_STAB: + return rv | 3; + } + + return rv | 32; } /* 80621070-8062138C 002570 031C+00 1/1 0/0 0/0 .text setDamage__8daB_TN_cFP8dCcD_Sphi */ -void daB_TN_c::setDamage(dCcD_Sph* param_0, int param_1) { - // NONMATCHING +void daB_TN_c::setDamage(dCcD_Sph* i_sph, int param_2) { + u8 uVar5; + + health = 100; + cc_at_check(this, &mAtInfo); + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK) != 0) { + field_0xa68 = 20; + } else { + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOMB) != 0) { + field_0xa68 = 20; + } else { + field_0xa68 = 10; + } + } + + if (mAtInfo.mAttackPower <= 1) { + field_0xa68 = 10; + } + + dComIfGp_setHitMark(1, this, i_sph->GetTgHitPosP(), NULL, NULL, 0); + + if (field_0xa7c != 0) { + field_0xa92 ^= 1; + } else { + u8 uVar4 = 0; + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_NORMAL_SWORD) != 0) { + uVar4 = getCutType() & -1; + } + + if ((uVar4 & 3) != 0) { + if (abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) > 0x4000) { + if ((uVar4 & 1) != 0) { + uVar5 = 1; + } else { + uVar5 = 0; + } + } else if ((uVar4 & 1) != 0) { + uVar5 = 0; + } else { + uVar5 = 1; + } + } else { + if (cM_rnd() < 0.5f) { + uVar5 = 0; + } else { + uVar5 = 1; + } + } + + field_0xa92 = uVar5; + } + + field_0xa7c = 30; + int iVar1 = mActionMode1; + if (iVar1 < 8) { + if (iVar1 != 7 && field_0xa80 == 0) { + field_0xa80 = 70; + } + + field_0xa78 += param_2; + setActionMode(7, field_0xa92); + } else { + if (iVar1 != 13 && field_0xa80 == 0) { + field_0xa80 = 90; + + if (field_0x6fc > field_0x700 - 50.0f) { + field_0x6fc -= 20; + } + } + + if ((field_0x6fc > field_0x700 - 50.0f) && field_0xa9f != 0) { + field_0x6fc += 50; + } else { + field_0x6fc += 100 - health; + } + + if (field_0x6fc >= field_0x700) { + setActionMode(14, 0); + dComIfGp_setHitMark(3, this, i_sph->GetTgHitPosP(), NULL, NULL, 0); + } else { + setActionMode(13, field_0xa92); + } + } } /* 8062138C-806213FC 00288C 0070+00 1/1 0/0 0/0 .text setShieldEffect__8daB_TN_cFP8dCcD_Sph */ -void daB_TN_c::setShieldEffect(dCcD_Sph* param_0) { - // NONMATCHING +void daB_TN_c::setShieldEffect(dCcD_Sph* i_sph) { + def_se_set(&mSound, mAtInfo.mpCollider, 42, this); + dComIfGp_setHitMark(2, this, i_sph->GetTgHitPosP(), NULL, NULL, 0); } /* 806213FC-806223A0 0028FC 0FA4+00 1/1 0/0 0/0 .text damage_check__8daB_TN_cFv */ void daB_TN_c::damage_check() { // NONMATCHING + mGStts.Move(); + + for (int i = 0; i < 4; i++) { + if (mSwordSphs[i].ChkAtHit()) { + field_0xa9a = 1; + if (mSwordSphs[i].ChkAtShieldHit() && mSwordSphs[i].GetAtSpl() == 10) { + setSwordAtBit(0); + m_attack_tn = this; + break; + } + } + } + + if (mCps.ChkAtHit()) { + field_0xa9a = 1; + if (mCps.ChkAtShieldHit() && mCps.GetAtSpl() == 10) { + setSwordAtBit(0); + m_attack_tn = this; + } + } + + if (field_0x3618.ChkAtHit() && !field_0x3618.ChkAtShieldHit()) { + field_0xa9a = 1; + mSound.startCreatureSound(Z2SE_EN_TN_ATK_NO_DMG, 0, -1); + field_0x3618.ClrAtHit(); + m_attack_tn = this; + } + + if (field_0xa68 != 0) { + return; + } + + if (mActionMode1 == 8) { + return; + } + + if (mActionMode1 == 14) { + return; + } + + dCcD_Sph dStack_160; + + if (mActionMode1 <= 1) { + mAtInfo.mpCollider = NULL; + if (field_0x3618.ChkTgHit()) { + mAtInfo.mpCollider = field_0x3618.GetTgHitObj(); + dStack_160 = field_0x3618; + } + + for (int i = 0; i < 3; i++) { + if (field_0x2ec8[i].ChkTgHit()) { + mAtInfo.mpCollider = field_0x2ec8[i].GetTgHitObj(); + dStack_160 = field_0x2ec8[i]; + break; + } + } + + + + for (int i = 0; i < 3; i++) { + if (field_0x3270[i].ChkTgHit()) { + mAtInfo.mpCollider = field_0x3270[i].GetTgHitObj(); + dStack_160 = field_0x3270[i]; + break; + } + } + + if (mAtInfo.mpCollider) { + setShieldEffect(&dStack_160); + setActionMode(1, 2); + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_40) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + field_0xa60 = 15; + } + + return; + } + + int mCutType = daPy_getPlayerActorClass()->getCutType(); + if (mActionMode1 < 8 && field_0x3618.ChkTgHit()) { + if (field_0x3618.GetTgHitObj()->ChkAtType(18) && mCutType != 5 && mCutType != 31 && mCutType != 26) { + def_se_set(&mSound, field_0x3618.GetTgHitObj(), 42, this); + field_0xaa8 = 0; + if (field_0x3618.GetTgHitObj()->ChkAtType(AT_TYPE_SHIELD_ATTACK)) { + if (mActionMode1 != 6) { + return; + } + + if (mActionMode1 == 6 && field_0xaa8 != 0) { + return; + } + + field_0xaa8 = 1; + } + + setActionMode(6, 0); + return; + } + } + + mAtInfo.mpCollider = NULL; + for (int i = 0; i < 3; i++) { + if (field_0x2ec8[i].ChkTgHit()) { + mAtInfo.mpCollider = field_0x2ec8[i].GetTgHitObj(); + dStack_160 = field_0x2ec8[i]; + break; + } + } + + if (mActionMode1 < 8) { + if ((mCutType == 37 || mCutType == 38) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK)) { + setShieldEffect(&dStack_160); + field_0xa60 = 15; + return; + } + + if (dStack_160.ChkTgShield()) { + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_SHIELD_ATTACK)) { + if (mActionMode1 == 6 && field_0xaa8 != 0) { + return; + } + + field_0xaa8 = 1; + def_se_set(&mSound, dStack_160.GetTgHitObj(), 42, this); + } else { + field_0xaa8 = 0; + setShieldEffect(&dStack_160); + } + + setActionMode(6, 0); + return; + } + + if (mCutType == 5 || mCutType == 31 || mCutType == 26) { + field_0xaa9 = 60; + } + } else { + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_SHIELD_ATTACK)) { + field_0xaa8 = 1; + def_se_set(&mSound, dStack_160.GetTgHitObj(), 42, this); + setActionMode(12, 0); + return; + } + + if (field_0xa91 != 0) { + if (field_0xa9f != 0 || (getCutType() & 4) != 0) { + setShieldEffect(&dStack_160); + if (field_0xa9f != 0) { + setActionMode(12, 11); + } else { + setActionMode(15, 0); + } + + return; + } + + if (field_0xaa7 == 0) { + if (abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) >= 0x3000 || mCutType == 37 && mCutType == 38) { + field_0xaa8 = 0; + setShieldEffect(&dStack_160); + setActionMode(12, 0); + return; + } + + setDamage(&dStack_160, 1); + return; + } + } + } + + mAtInfo.mpCollider = NULL; + for (int i = 0; i < 3; i++) { + if (field_0x3270[i].ChkTgHit()) { + mAtInfo.mpCollider = field_0x3270[i].GetTgHitObj(); + dStack_160 = field_0x3270[i]; + break; + } + } + + bool bVar1 = abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) > 0x3000; + if (mActionMode1 < 8) { + if (!dStack_160.ChkTgShield() || field_0xa78 >= 11) { + bVar1 = true; + } + } else if (field_0xa91 == 0) { + bVar1 = true; + } + + if (mActionMode1 < 8 && field_0x3618.ChkTgHit()) { + mAtInfo.mpCollider = field_0x3618.GetTgHitObj(); + dStack_160 = field_0x3618; + bVar1 = false; + } + + if (mAtInfo.mpCollider) { + field_0xaa8 = 0; + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG) || mAtInfo.mpCollider->ChkAtType(AT_TYPE_40)) { + if (mActionMode1 < 8) { + field_0xa60 = 15; + } else { + setActionMode(12, 10); + } + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOMB)) { + if (mActionMode1 < 8 && field_0xa78 < 11) { + if (abs(cLib_targetAngleY(¤t.pos, &dCc_GetAc(mAtInfo.mpCollider->GetAc())->current.pos) - shape_angle.y) > 0x4000) { + setDamage(&dStack_160, 2); + } else { + setActionMode(6, 0); + } + } else if (abs(cLib_targetAngleY(¤t.pos, &dCc_GetAc(mAtInfo.mpCollider->GetAc())->current.pos) - shape_angle.y) > 0x4000) { + setDamage(&dStack_160, 2); + } + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_SPINNER)) { + setShieldEffect(&dStack_160); + if (mActionMode1 < 8) { + setActionMode(6, 0); + } else { + setActionMode(12, 10); + } + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + if (mActionMode1 < 8) { + field_0xa60 = 15; + setShieldEffect(&dStack_160); + } else if (!bVar1 || field_0xaa7 != 0) { + setShieldEffect(&dStack_160); + setActionMode(12, 0); + } else { + health = 100; + cc_at_check(this, &mAtInfo); + field_0xa92 = 0; + if (cM_rnd() < 0.5f) { + field_0xa92 = 1; + } + + if (mActionMode1 != 13 && field_0xa80 == 0) { + field_0xa80 = 90; + } + + setActionMode(13, field_0xa92); + } + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_IRON_BALL)) { + if (!bVar1) { + setShieldEffect(&dStack_160); + if (mActionMode1 < 8) { + setActionMode(6, 0); + } else { + setActionMode(12, 10); + } + } else { + setDamage(&dStack_160, 2); + } + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_ARROW)) { + if (mActionMode1 < 8) { + setShieldEffect(&dStack_160); + } else if (bVar1 && field_0xaa7 == 0) { + setShieldEffect(&dStack_160); + setActionMode(12, 0); + } else { + setDamage(&dStack_160, 1); + } + } + } + + if (mCutType == 20) { + return; + } + + } } -/* 806223A0-8062242C 0038A0 008C+00 1/1 0/0 0/0 .text __as__8dCcD_SphFRC8dCcD_Sph */ -// void dCcD_Sph::operator=(dCcD_Sph const& param_0) { -extern "C" void __as__8dCcD_SphFRC8dCcD_Sph() { - // NONMATCHING -} - -/* 8062242C-80622674 00392C 0248+00 1/1 0/0 0/0 .text __as__12dCcD_GObjInfFRC12dCcD_GObjInf */ -// void dCcD_GObjInf::operator=(dCcD_GObjInf const& param_0) { -extern "C" void __as__12dCcD_GObjInfFRC12dCcD_GObjInf() { - // NONMATCHING -} - -/* 80622674-80622740 003B74 00CC+00 1/1 0/0 0/0 .text __dt__8dCcD_SphFv */ -// dCcD_Sph::~dCcD_Sph() { -extern "C" void __dt__8dCcD_SphFv() { - // NONMATCHING -} - -/* 80622740-80622788 003C40 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80622788-806227D0 003C88 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8062E6E4-8062E6E8 0000B0 0004+00 0/1 0/0 0/0 .rodata @5981 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5981 = 1700.0f; -COMPILER_STRIP_GATE(0x8062E6E4, &lit_5981); -#pragma pop - -/* 8062E6E8-8062E6EC 0000B4 0004+00 0/1 0/0 0/0 .rodata @5982 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5982 = 1600.0f; -COMPILER_STRIP_GATE(0x8062E6E8, &lit_5982); -#pragma pop - -/* 8062E6EC-8062E6F0 0000B8 0004+00 0/2 0/0 0/0 .rodata @5983 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5983 = 1500.0f; -COMPILER_STRIP_GATE(0x8062E6EC, &lit_5983); -#pragma pop - /* 806227D0-80622B60 003CD0 0390+00 4/4 0/0 0/0 .text checkMoveArea__8daB_TN_cFv */ -void daB_TN_c::checkMoveArea() { - // NONMATCHING +int daB_TN_c::checkMoveArea() { + if (field_0xaa5 != 0) { + return 0; + } + + if (current.pos.absXZ() > 1700.0f) { + return 3; + } + + if (current.pos.absXZ() > 1600.0f) { + return 2; + } + + if (current.pos.absXZ() > 1500.0f) { + return 1; + } + + return 0; } /* 80622B60-80622BE0 004060 0080+00 1/1 0/0 0/0 .text checkMoveAngle__8daB_TN_cFv */ -void daB_TN_c::checkMoveAngle() { - // NONMATCHING +bool daB_TN_c::checkMoveAngle() { + s16 sVar1 = cM_atan2s(-current.pos.x, -current.pos.z); + return abs((s16)(fopAcM_searchPlayerAngleY(this) - sVar1)) < 0x4000; } /* 80622BE0-80622CE4 0040E0 0104+00 1/1 0/0 0/0 .text setAttackBlurEffect__8daB_TN_cFi */ -void daB_TN_c::setAttackBlurEffect(int param_0) { +void daB_TN_c::setAttackBlurEffect(int param_1) { // NONMATCHING + static u16 blur_effect_id_5997[4] = { + 0x87DA, 0x87DB, 0x87DC, 0x87DD, + }; + + if (param_1 != 0) { + for (int i = 0; i < 4; i++) { + field_0x561c[i] = dComIfGp_particle_set(field_0x561c[i], blur_effect_id_5997[i], ¤t.pos, &tevStr); + + JPABaseEmitter* mBaseEmitter = dComIfGp_particle_getEmitter(field_0x561c[i]); + if (mBaseEmitter) { + mBaseEmitter->setGlobalSRTMatrix(mModels[13]->getBaseTRMtx()); + } + } + } } /* 80622CE4-80622DF4 0041E4 0110+00 1/1 0/0 0/0 .text setArmorBreakEffect__8daB_TN_cFi */ -void daB_TN_c::setArmorBreakEffect(int param_0) { +void daB_TN_c::setArmorBreakEffect(int param_1) { // NONMATCHING + static u16 blur_effect_id_6035[3] = { + 0x87DE, 0x87DF, 0x87E0 + }; + + cXyz sp24(l_HIO.mScale, l_HIO.mScale, l_HIO.mScale); + cXyz sp30; + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(tn_part_joint[param_1])); + mDoMtx_stack_c::multVecZero(&sp30); + + for (int i = 0; i < 3; i++) { + dComIfGp_particle_set(blur_effect_id_6035[i], &sp30, &tevStr, &shape_angle, &sp24); + } } -/* ############################################################################################## */ -/* 8062E6F0-8062E6F4 0000BC 0004+00 0/7 0/0 0/0 .rodata @6119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6119 = 300.0f; -COMPILER_STRIP_GATE(0x8062E6F0, &lit_6119); -#pragma pop +/* 80622DF4-80622ec8 0042F4 0170+00 1/1 0/0 0/0 .text s_obj_sub__FPvPv */ +static void* s_obj_sub(void* i_actor, void* i_data) { + if (fopAcM_IsActor(i_actor)) { + if (!fpcM_IsCreating(fopAcM_GetID(i_actor)) && fopAcM_checkCarryNow((fopAc_ac_c*)i_actor) == 0) { + f32 mActorDistance = fopAcM_searchActorDistanceXZ((fopAc_ac_c*)i_actor, (fopAc_ac_c*)i_data); + if (mActorDistance < 300.0f && fopAcM_GetSpeed((fopAc_ac_c*)i_actor).y) { + if (fopAcM_GetName(i_actor) == PROC_Obj_Carry) { + return i_actor; + } -/* 8062E6F4-8062E6F8 0000C0 0004+00 0/4 0/0 0/0 .rodata @6120 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6120 = 700.0f; -COMPILER_STRIP_GATE(0x8062E6F4, &lit_6120); -#pragma pop + if (fopAcM_GetName((fopAc_ac_c*)i_actor) == PROC_NBOMB) { + return i_actor; + } + } -/* 80622DF4-80622F64 0042F4 0170+00 1/1 0/0 0/0 .text s_obj_sub__FPvPv */ -static void s_obj_sub(void* param_0, void* param_1) { - // NONMATCHING + if (mActorDistance < 300.0f && fopAcM_GetName(i_actor) == PROC_NBOMB) { + daNbomb_c* mNBomb = (daNbomb_c*)i_actor; + if (mNBomb->checkInsectBombMove((fopAc_ac_c*)i_actor)) { + return i_actor; + } + + if (mNBomb->getExTime() < 10) { + return i_actor; + } + } + + if ((mActorDistance < 700.0f && fopAcM_GetName(i_actor) == PROC_ARROW) && fopAcM_GetSpeedF((fopAc_ac_c*)i_actor)) { + s16 mAngleY = ((fopAc_ac_c*)i_actor)->current.angle.y; + if (abs((s16)(mAngleY - fopAcM_searchActorAngleY((fopAc_ac_c*)i_actor, (fopAc_ac_c*)i_data))) < 0x2000) { + return i_actor; + } + } + } + } + + return NULL; } -/* ############################################################################################## */ -/* 8062E6F8-8062E6FC 0000C4 0004+00 0/1 0/0 0/0 .rodata @6163 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6163 = -180.0f; -COMPILER_STRIP_GATE(0x8062E6F8, &lit_6163); -#pragma pop +/* 80622ec8-8062318C 004464 0228+00 1/1 0/0 0/0 .text demo_skip__8daB_TN_cFi */ +void daB_TN_c::demo_skip(int param_1) { + camera_class* cameraClass = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + daPy_py_c* player = daPy_getPlayerActorClass(); -/* 8062E6FC-8062E700 0000C8 0004+00 0/3 0/0 0/0 .rodata @6164 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6164 = -200.0f; -COMPILER_STRIP_GATE(0x8062E6FC, &lit_6164); -#pragma pop + if (param_1 == 0) { + mCamCenter.set(0.0f, -180.0f, 0.0f); + mCamEye.set(300.0f, -200.0f, 1000.0f); + cameraClass->mCamera.Reset(mCamCenter, mCamEye); + cameraClass->mCamera.Start(); + cameraClass->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + + Z2GetAudioMgr()->bgmStreamStop(0x1e); + Z2GetAudioMgr()->subBgmStart(Z2BGM_TN_MBOSS); -/* 8062E700-8062E704 0000CC 0004+00 0/1 0/0 0/0 .rodata @6165 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6165 = -239.0f; -COMPILER_STRIP_GATE(0x8062E700, &lit_6165); -#pragma pop + setActionMode(2, 0); + field_0xa93 = 1; + field_0xaae = 2; + mBlend = 1.0f; + } else if (param_1 == 1) { + mCamCenter.set(0.0f, -239.0f, 1874.0f); + mCamEye.set(0.0f, -202.0f, 2251.0f); + cXyz sp28(0.0f, -350.0f, 2200.0f); + player->setPlayerPosAndAngle(&sp28, -0x8000, 0); -/* 8062E704-8062E708 0000D0 0004+00 0/1 0/0 0/0 .rodata @6166 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6166 = 1874.0f; -COMPILER_STRIP_GATE(0x8062E704, &lit_6166); -#pragma pop + cameraClass->mCamera.Reset(mCamCenter, mCamEye); + cameraClass->mCamera.Start(); + cameraClass->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); -/* 8062E708-8062E70C 0000D4 0004+00 0/1 0/0 0/0 .rodata @6167 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6167 = -202.0f; -COMPILER_STRIP_GATE(0x8062E708, &lit_6167); -#pragma pop - -/* 8062E70C-8062E710 0000D8 0004+00 0/1 0/0 0/0 .rodata @6168 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6168 = 2251.0f; -COMPILER_STRIP_GATE(0x8062E70C, &lit_6168); -#pragma pop - -/* 8062E710-8062E714 0000DC 0004+00 0/4 0/0 0/0 .rodata @6169 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6169 = -350.0f; -COMPILER_STRIP_GATE(0x8062E710, &lit_6169); -#pragma pop - -/* 8062E714-8062E718 0000E0 0004+00 0/2 0/0 0/0 .rodata @6170 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6170 = 2200.0f; -COMPILER_STRIP_GATE(0x8062E714, &lit_6170); -#pragma pop - -/* 80622F64-8062318C 004464 0228+00 1/1 0/0 0/0 .text demo_skip__8daB_TN_cFi */ -void daB_TN_c::demo_skip(int param_0) { - // NONMATCHING + setActionMode(1, 0); + } } /* 8062318C-806231C0 00468C 0034+00 2/2 0/0 0/0 .text DemoSkipCallBack__8daB_TN_cFPvi */ -void daB_TN_c::DemoSkipCallBack(void* param_0, int param_1) { - // NONMATCHING +int daB_TN_c::DemoSkipCallBack(void* i_this, int param_2) { + if (i_this) { + static_cast(i_this)->demo_skip(param_2); + return 1; + } + + return 0; } /* 806231C0-80623920 0046C0 0760+00 2/1 0/0 0/0 .text executeRoomDemo__8daB_TN_cFv */ void daB_TN_c::executeRoomDemo() { // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + cXyz sp24 = player->current.pos; + cXyz sp30; + + fopAcM_searchPlayerDistance(this); + + switch (mActionMode2) { + case 0: + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xffff, 0); + eventInfo.onCondition(2); + return; + } + + field_0xaae = 0; + fopAcM_OffStatus(this, 0x4000); + + camera->mCamera.Stop(); + camera->mCamera.SetTrimSize(3); + + mCamCenter = dCam_getBody()->Center(); + mCamEye = dCam_getBody()->Eye(); + + mCamFovY = dCam_getBody()->Fovy(); + mActionMode2 = 2; + field_0xa6c = 30; + break; + + case 2: + if (field_0xa6c == 0) { + if (!daPy_py_c::checkNowWolf()) { + field_0xa6c = 70; + } else { + field_0xa6c = 30; + } + + player->changeOriginalDemo(); + player->changeDemoMoveAngle(-0x8000); + sp24.set(0.0f, -350.0f, 1850.0f); + player->changeDemoPos0(&sp24); + player->changeDemoMode(2, 0, 0, 0); + mActionMode2 = 3; + } + break; + + case 3: + cLib_addCalcPos2(&mCamCenter, sp24, 0.1f, 1.0f); + + if (field_0xa6c == 0) { + player->changeDemoMoveAngle(-0x8000); + + if (!daPy_py_c::checkNowWolf()) { + sp24.set(0.0f, -350.0f, 2173.0f); + } else { + sp24.set(0.0f, -350.0f, 1923.0f); + } + + player->changeDemoPos0(&sp24); + player->changeDemoMode(2, 0, 0, 0); + sp24.z += 500.0f; + player->setPlayerPosAndAngle(&sp24, -0x8000, 0); + + field_0xa6c = 30; + mActionMode2 = 10; + field_0x720 = -0x7000; + mCamEye.x = cM_ssin(field_0x720) * 400.0f; + mCamEye.y = -170.0f; + mCamEye.z = cM_scos(field_0x720) * 400.0f + 1900.0f; + mCamCenter.set(sp24.x, sp24.y + 150.0f, sp24.z); + return; + } + break; + + case 10: + case 11: + sp30.set(sp24.x, sp24.y + 150.0f, sp24.z); + cLib_addCalcPos2(&mCamCenter, sp30, 0.5f, 10.0f); + cLib_addCalcAngleS2(&field_0x720, -0x4000, 16, 32); + cLib_addCalc2(&mCamEye.y, -250.0f, 16.0f, 0.5f); + mCamEye.x = cM_ssin(field_0x720) * 400.0f; + mCamEye.z = cM_scos(field_0x720) * 400.0f + 1900.0f; + + if (field_0xa6c == 0) { + if (mActionMode2 == 10) { + player->changeDemoMode(20, 0, 0, 0); + field_0xa6c = 120; + mActionMode2 = 11; + } else if (mActionMode2 == 11) { + if (!daPy_py_c::checkNowWolf()) { + player->changeDemoMode(47, 2, 0, 0); + } + + mActionMode2 = 15; + field_0xa6c = 150; + + if (!daPy_py_c::checkNowWolf()) { + mCamEye.set(0.0f, -200.0f, 2400.0f); + } else { + mCamEye.set(0.0f, -265.0f, 2400.0f); + } + + field_0x720 = 0x5c00; + mCamCenter = mCamEye; + mCamCenter.y += 400.0f * cM_ssin(field_0x720); + mCamCenter.z += 400.0f * cM_scos(field_0x720); + } + } + break; + + case 15: + mCamCenter = mCamEye; + mCamCenter.y += 400.0f * cM_ssin(field_0x720); + mCamCenter.z += 400.0f * cM_scos(field_0x720); + cLib_addCalcAngleS2(&field_0x720, 0x7800, 16, 64); + + if (field_0xa6c == 0) { + mActionMode2 = 16; + field_0xa6c = 70; + field_0x724 = 1200.0f; + } + break; + + case 16: + cLib_chaseF(&field_0x724, 1200.0f, 50.0f); + sp30.set(0.0f, 423.0f, -1841.0f); + cLib_addCalcPos2(&mCamCenter, sp30, 0.3f, field_0x724); + sp30.set(0.0f, 370.0f, -1442.0f); + cLib_addCalcPos2(&mCamEye, sp30, 0.3f, field_0x724); + + if (field_0xa6c == 0) { + mCamCenter.set(0.0f, -239.0f, 1874.0f); + mCamEye.set(0.0f, -202.0f, 2251.0f); + camera->mCamera.Reset(mCamCenter, mCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + + setActionMode(1, 0); + return; + } + } + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovY, 0); + dComIfGp_getEvent().onSkipFade(); + dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 1); } -/* ############################################################################################## */ -/* 8062E718-8062E71C 0000E4 0004+00 0/0 0/0 0/0 .rodata @6386 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6386 = 1850.0f; -COMPILER_STRIP_GATE(0x8062E718, &lit_6386); -#pragma pop - -/* 8062E71C-8062E720 0000E8 0004+00 0/2 0/0 0/0 .rodata @6387 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6387 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8062E71C, &lit_6387); -#pragma pop - -/* 8062E720-8062E724 0000EC 0004+00 0/0 0/0 0/0 .rodata @6388 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6388 = 1923.0f; -COMPILER_STRIP_GATE(0x8062E720, &lit_6388); -#pragma pop - -/* 8062E724-8062E728 0000F0 0004+00 0/0 0/0 0/0 .rodata @6389 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6389 = 2173.0f; -COMPILER_STRIP_GATE(0x8062E724, &lit_6389); -#pragma pop - -/* 8062E728-8062E72C 0000F4 0004+00 1/2 0/0 0/0 .rodata @6390 */ -SECTION_RODATA static f32 const lit_6390 = 500.0f; -COMPILER_STRIP_GATE(0x8062E728, &lit_6390); - -/* 8062E72C-8062E730 0000F8 0004+00 0/2 0/0 0/0 .rodata @6391 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6391 = 400.0f; -COMPILER_STRIP_GATE(0x8062E72C, &lit_6391); -#pragma pop - -/* 8062E730-8062E734 0000FC 0004+00 0/0 0/0 0/0 .rodata @6392 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6392 = -170.0f; -COMPILER_STRIP_GATE(0x8062E730, &lit_6392); -#pragma pop - -/* 8062E734-8062E738 000100 0004+00 0/0 0/0 0/0 .rodata @6393 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6393 = 1900.0f; -COMPILER_STRIP_GATE(0x8062E734, &lit_6393); -#pragma pop - -/* 8062E738-8062E73C 000104 0004+00 0/1 0/0 0/0 .rodata @6394 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6394 = -250.0f; -COMPILER_STRIP_GATE(0x8062E738, &lit_6394); -#pragma pop - -/* 8062E73C-8062E740 000108 0004+00 0/0 0/0 0/0 .rodata @6395 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6395 = 16.0f; -COMPILER_STRIP_GATE(0x8062E73C, &lit_6395); -#pragma pop - -/* 8062E740-8062E744 00010C 0004+00 0/0 0/0 0/0 .rodata @6396 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6396 = 2400.0f; -COMPILER_STRIP_GATE(0x8062E740, &lit_6396); -#pragma pop - -/* 8062E744-8062E748 000110 0004+00 0/0 0/0 0/0 .rodata @6397 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6397 = -265.0f; -COMPILER_STRIP_GATE(0x8062E744, &lit_6397); -#pragma pop - -/* 8062E748-8062E74C 000114 0004+00 0/0 0/0 0/0 .rodata @6398 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6398 = 1200.0f; -COMPILER_STRIP_GATE(0x8062E748, &lit_6398); -#pragma pop - -/* 8062E74C-8062E750 000118 0004+00 0/0 0/0 0/0 .rodata @6399 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6399 = 423.0f; -COMPILER_STRIP_GATE(0x8062E74C, &lit_6399); -#pragma pop - -/* 8062E750-8062E754 00011C 0004+00 0/0 0/0 0/0 .rodata @6400 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6400 = -1841.0f; -COMPILER_STRIP_GATE(0x8062E750, &lit_6400); -#pragma pop - -/* 8062E754-8062E758 000120 0004+00 0/0 0/0 0/0 .rodata @6401 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6401 = 370.0f; -COMPILER_STRIP_GATE(0x8062E754, &lit_6401); -#pragma pop - -/* 8062E758-8062E75C 000124 0004+00 0/0 0/0 0/0 .rodata @6402 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6402 = -1442.0f; -COMPILER_STRIP_GATE(0x8062E758, &lit_6402); -#pragma pop - -/* 8062E75C-8062E760 000128 0004+00 0/15 0/0 0/0 .rodata @6790 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6790 = 3.0f; -COMPILER_STRIP_GATE(0x8062E75C, &lit_6790); -#pragma pop - -/* 8062E760-8062E764 00012C 0004+00 0/1 0/0 0/0 .rodata @6791 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6791 = 2250.0f; -COMPILER_STRIP_GATE(0x8062E760, &lit_6791); -#pragma pop - -/* 8062E764-8062E768 000130 0004+00 0/1 0/0 0/0 .rodata @6792 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6792 = 1300.0f; -COMPILER_STRIP_GATE(0x8062E764, &lit_6792); -#pragma pop - /* 80623920-806246E8 004E20 0DC8+00 2/1 0/0 0/0 .text executeOpening__8daB_TN_cFv */ void daB_TN_c::executeOpening() { // NONMATCHING + cXyz sp7c, sp34; + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + fopAcM_searchPlayerDistance(this); + + switch (mActionMode2) { + case 0: + speedF = 0.0f; + setBck(18, 2, 3.0f, 1.0f); + mActionMode2 = 1; + // fallthrough + + case 1: + sp7c = player->current.pos; + if (sp7c.absXZ() < 2200.0f) { + sp34.set(0.0f, -350.0f, 2250.0f); + if (sp7c.absXZ(sp34) > 1300.0f) { + mActionMode2 = 2; + } + } + + return; + + case 2: + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xffff, 0); + eventInfo.onCondition(2); + return; + } + + dComIfGs_onOneZoneSwitch(14, fopAcM_GetRoomNo(this)); + + camera->mCamera.Stop(); + camera->mCamera.SetTrimSize(3); + field_0xa6c = 30; + + Z2GetAudioMgr()->bgmStreamPrepare(0x2000037); + Z2GetAudioMgr()->bgmStreamPlay(); + + mActionMode2 = 3; + mCamFovY = 60.0f; + field_0x724 = 380.0f; + field_0x720 = 0x1000; + mCamCenter.set(current.pos.x, current.pos.y + 220.0f, current.pos.z); + mCamEye.set(mCamCenter.x + field_0x724 * cM_ssin(field_0x720), -210.0f, mCamCenter.z + field_0x724 * cM_scos(field_0x720)); + + mpModelMorf2->setFrame(15.0f); + player->changeOriginalDemo(); + sp7c.set(150.0f, -400.0f, 600.0f); + player->setPlayerPosAndAngle(&sp7c, (s16)0xffff9000, 0); + player->changeDemoMode(4, 1, 0, 0); + break; + + case 3: + cLib_addCalcAngleS2(&field_0x720, 0x400, 8, 48); + mCamCenter.set(current.pos.x, current.pos.y + 220.0f, current.pos.z); + mCamEye.set(mCamCenter.x + field_0x724 * cM_ssin(field_0x720), -210.0f, mCamCenter.z + field_0x724 * cM_scos(field_0x720)); + + if (field_0xa6c == 0) { + setBck(14, 0, 20.0f, 1.0f); + mActionMode2 = 4; + field_0xaae = 1; + mBlend = 0.0f; + } + break; + + case 4: + if (mpModelMorf2->checkFrame(111.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(148.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->getFrame() < 80.0f) { + cLib_addCalcAngleS2(&field_0x720, -0x400, 8, 48); + mCamCenter.set(current.pos.x, current.pos.y + 220.0f, current.pos.z); + } else { + cLib_addCalc2(&field_0x724, 250.0f, 8.0f, 5.0f); + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + cLib_addCalcPos2(&mCamCenter, sp34, 0.5f, 5.0f); + } + + mCamEye.set(mCamCenter.x + field_0x724 * cM_ssin(field_0x720), -210.0f, mCamCenter.z + field_0x724 * cM_scos(field_0x720)); + if (mpModelMorf2->isStop()) { + setBck(15, 2, 3.0f, 1.0f); + field_0xa6c = 60; + mActionMode2 = 10; + } + break; + + case 10: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + cLib_addCalcPos2(&mCamCenter, sp34, 0.5f, 5.0f); + + if (field_0xa6c < 30) { + sp34.set(0.0f, -350.0f, 400.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.5f, 5.0f); + } + + if (field_0xa6c == 0) { + setBck(7, 0, 10.0f, 1.0f); + mActionMode2 = 14; + } + break; + + case 14: + if (mpModelMorf2->checkFrame(33.0f) || mpModelMorf2->checkFrame(105.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } else if (mpModelMorf2->checkFrame(57.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_L, 0, -1); + mSound.startCreatureVoice(Z2SE_EN_TN_V_KIAI_OP, -1); + } else if (mpModelMorf2->checkFrame(62.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } else if (mpModelMorf2->checkFrame(98.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_L, 0, -1); + } + + if (mpModelMorf2->getFrame() < 30.0f) { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + cLib_addCalcPos2(&mCamCenter, sp34, 0.5f, 5.0f); + sp34.set(0.0f, -350.0f, 400.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.5f, 5.0f); + } else if (mpModelMorf2->getFrame() < 57.0f) { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(14)); + mDoMtx_stack_c::multVecZero(&sp34); + sp34.y -= 50.0f; + cLib_addCalcPos2(&mCamCenter, sp34, 0.5f, 3.0f); + sp34.set(0.0f, -350.0f, 400.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.5f, 5.0f); + } else { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(14)); + mDoMtx_stack_c::multVecZero(&sp34); + sp34.y -= 50.0f; + cLib_addCalcPos2(&mCamCenter, sp34, 1.0f, 30.0f); + sp34.set(0.0f, -350.0f, 500.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.5f, 3.0f); + } + + if (mpModelMorf2->checkFrame(58.0f) || mpModelMorf2->checkFrame(98.0f)) { + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); + field_0xa88 = 7; + } + + if (mpModelMorf2->checkFrame(126.0f)) { + mActionMode2 = 17; + field_0xa6c = 30; + } + break; + + case 17: + mCamCenter.set(2.0f, -225.0f, -109.0f); + sp34.set(0.0f, -350.0f, 430.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.5f, 100.0f); + if (mpModelMorf2->checkFrame(160.0f)) { + mActionMode2 = 20; + player->changeDemoMode(23, 0, 0, 0); + } + break; + + case 20: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + cLib_addCalcPos2(&mCamCenter, sp34, 0.5f, 5.0f); + sp34.set(0.0f, -300.0f, 1000.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.1f, 20.0f); + + if (mpModelMorf2->checkFrame(220.0f)) { + camera->mCamera.Reset(mCamCenter, mCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + + Z2GetAudioMgr()->subBgmStart(Z2BGM_TN_MBOSS); + + setActionMode(2, 0); + field_0xa93 = 1; + field_0xaae = 2; + mBlend = 0.0f; + return; + } + } + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovY, 0); + dComIfGp_getEvent().onSkipFade(); + dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 0); } /* 806246E8-806247D8 005BE8 00F0+00 1/1 0/0 0/0 .text executeWaitH__8daB_TN_cFv */ void daB_TN_c::executeWaitH() { - // NONMATCHING + fopAcM_searchPlayerAngleY(this); + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + switch (mActionMode2) { + case 0: + speedF = 0.0f; + setBck(15, 2, 3.0f, 1.0f); + mActionMode2 = 1; + // fallthrough + + case 1: + if (mPlayerDistance < 1500.0f) { + if (field_0xaad != 0) { + Z2GetAudioMgr()->subBgmStart(Z2BGM_TN_MBOSS_LV9); + } + + setActionMode(3, 0); + } + } } -/* ############################################################################################## */ -/* 8062E768-8062E76C 000134 0004+00 0/1 0/0 0/0 .rodata @6793 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6793 = 380.0f; -COMPILER_STRIP_GATE(0x8062E768, &lit_6793); -#pragma pop - -/* 8062E76C-8062E770 000138 0004+00 0/0 0/0 0/0 .rodata @6794 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6794 = 220.0f; -COMPILER_STRIP_GATE(0x8062E76C, &lit_6794); -#pragma pop - -/* 8062E770-8062E774 00013C 0004+00 0/0 0/0 0/0 .rodata @6795 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6795 = -210.0f; -COMPILER_STRIP_GATE(0x8062E770, &lit_6795); -#pragma pop - -/* 8062E774-8062E778 000140 0004+00 0/7 0/0 0/0 .rodata @6796 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6796 = 15.0f; -COMPILER_STRIP_GATE(0x8062E774, &lit_6796); -#pragma pop - -/* 8062E778-8062E77C 000144 0004+00 0/2 0/0 0/0 .rodata @6797 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6797 = -400.0f; -COMPILER_STRIP_GATE(0x8062E778, &lit_6797); -#pragma pop - -/* 8062E77C-8062E780 000148 0004+00 0/0 0/0 0/0 .rodata @6798 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6798 = 600.0f; -COMPILER_STRIP_GATE(0x8062E77C, &lit_6798); -#pragma pop - -/* 8062E780-8062E784 00014C 0004+00 0/6 0/0 0/0 .rodata @6799 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6799 = 20.0f; -COMPILER_STRIP_GATE(0x8062E780, &lit_6799); -#pragma pop - -/* 8062E784-8062E788 000150 0004+00 0/0 0/0 0/0 .rodata @6800 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6800 = 111.0f; -COMPILER_STRIP_GATE(0x8062E784, &lit_6800); -#pragma pop - -/* 8062E788-8062E78C 000154 0004+00 0/0 0/0 0/0 .rodata @6801 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6801 = 148.0f; -COMPILER_STRIP_GATE(0x8062E788, &lit_6801); -#pragma pop - -/* 8062E78C-8062E790 000158 0004+00 0/4 0/0 0/0 .rodata @6802 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6802 = 8.0f; -COMPILER_STRIP_GATE(0x8062E78C, &lit_6802); -#pragma pop - -/* 8062E790-8062E794 00015C 0004+00 0/2 0/0 0/0 .rodata @6803 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6803 = 33.0f; -COMPILER_STRIP_GATE(0x8062E790, &lit_6803); -#pragma pop - -/* 8062E794-8062E798 000160 0004+00 0/0 0/0 0/0 .rodata @6804 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6804 = 105.0f; -COMPILER_STRIP_GATE(0x8062E794, &lit_6804); -#pragma pop - -/* 8062E798-8062E79C 000164 0004+00 0/0 0/0 0/0 .rodata @6805 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6805 = 57.0f; -COMPILER_STRIP_GATE(0x8062E798, &lit_6805); -#pragma pop - -/* 8062E79C-8062E7A0 000168 0004+00 0/0 0/0 0/0 .rodata @6806 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6806 = 62.0f; -COMPILER_STRIP_GATE(0x8062E79C, &lit_6806); -#pragma pop - -/* 8062E7A0-8062E7A4 00016C 0004+00 0/0 0/0 0/0 .rodata @6807 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6807 = 98.0f; -COMPILER_STRIP_GATE(0x8062E7A0, &lit_6807); -#pragma pop - -/* 8062E7A4-8062E7A8 000170 0004+00 0/0 0/0 0/0 .rodata @6808 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6808 = 58.0f; -COMPILER_STRIP_GATE(0x8062E7A4, &lit_6808); -#pragma pop - -/* 8062E7A8-8062E7AC 000174 0004+00 0/0 0/0 0/0 .rodata @6809 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6809 = 126.0f; -COMPILER_STRIP_GATE(0x8062E7A8, &lit_6809); -#pragma pop - -/* 8062E7AC-8062E7B0 000178 0004+00 0/0 0/0 0/0 .rodata @6810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6810 = -225.0f; -COMPILER_STRIP_GATE(0x8062E7AC, &lit_6810); -#pragma pop - -/* 8062E7B0-8062E7B4 00017C 0004+00 0/0 0/0 0/0 .rodata @6811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6811 = -109.0f; -COMPILER_STRIP_GATE(0x8062E7B0, &lit_6811); -#pragma pop - -/* 8062E7B4-8062E7B8 000180 0004+00 0/0 0/0 0/0 .rodata @6812 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6812 = 430.0f; -COMPILER_STRIP_GATE(0x8062E7B4, &lit_6812); -#pragma pop - -/* 8062E7B8-8062E7BC 000184 0004+00 0/0 0/0 0/0 .rodata @6813 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6813 = 160.0f; -COMPILER_STRIP_GATE(0x8062E7B8, &lit_6813); -#pragma pop - -/* 8062E7BC-8062E7C0 000188 0004+00 0/1 0/0 0/0 .rodata @6814 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6814 = -300.0f; -COMPILER_STRIP_GATE(0x8062E7BC, &lit_6814); -#pragma pop - -/* 8062E7C0-8062E7C4 00018C 0004+00 1/2 0/0 0/0 .rodata @6847 */ -SECTION_RODATA static f32 const lit_6847 = 17.0f; -COMPILER_STRIP_GATE(0x8062E7C0, &lit_6847); - -/* 8062E7C4-8062E7C8 000190 0004+00 1/2 0/0 0/0 .rodata @6848 */ -SECTION_RODATA static f32 const lit_6848 = 36.0f; -COMPILER_STRIP_GATE(0x8062E7C4, &lit_6848); - /* 806247D8-80624890 005CD8 00B8+00 1/1 0/0 0/0 .text setAwaitSound__8daB_TN_cFv */ void daB_TN_c::setAwaitSound() { - // NONMATCHING + if (mpModelMorf2->checkFrame(17.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(36.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } } -/* ############################################################################################## */ -/* 8062E7C8-8062E7CC 000194 0004+00 0/4 0/0 0/0 .rodata @7021 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7021 = 800.0f; -COMPILER_STRIP_GATE(0x8062E7C8, &lit_7021); -#pragma pop - -/* 8062E7CC-8062E7D0 000198 0004+00 0/1 0/0 0/0 .rodata @7022 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7022 = 43.0f / 10.0f; -COMPILER_STRIP_GATE(0x8062E7CC, &lit_7022); -#pragma pop - -/* 8062E7D0-8062E7D4 00019C 0004+00 0/4 0/0 0/0 .rodata @7023 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7023 = 23.0f; -COMPILER_STRIP_GATE(0x8062E7D0, &lit_7023); -#pragma pop - -/* 8062E7D4-8062E7D8 0001A0 0004+00 0/1 0/0 0/0 .rodata @7024 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7024 = 23.0f / 10.0f; -COMPILER_STRIP_GATE(0x8062E7D4, &lit_7024); -#pragma pop - -/* 8062E7D8-8062E7DC 0001A4 0004+00 0/1 0/0 0/0 .rodata @7025 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7025 = 90.0f; -COMPILER_STRIP_GATE(0x8062E7D8, &lit_7025); -#pragma pop - /* 80624890-80625394 005D90 0B04+00 1/1 0/0 0/0 .text executeChaseH__8daB_TN_cFv */ void daB_TN_c::executeChaseH() { // NONMATCHING + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + s16 sVar4 = fopAcM_searchPlayerAngleY(this); + s16 sVar5 = fopAcM_searchPlayerAngleY(this) - cM_atan2s(-current.pos.x, -current.pos.z); + int mMoveArea = checkMoveArea(); + + switch (mActionMode2) { + case 1: + case 11: + if (mMoveArea == 3) { + if (checkMoveAngle()) { + mActionMode2 = 100; + } else { + mActionMode2 = 103; + } + } else { + if (mMoveArea != 0 && mPlayerDistance > 800.0f) { + mPlayerDistance = 400.0f; + } + + if (mPlayerDistance < 200.0f) { + mActionMode2 = 3; + } else if (mPlayerDistance >= 800.0f) { + if (mActionMode2 == 0) { + mActionMode2 = 10; + } else { + mActionMode2 = 8; + } + } else if (mPlayerDistance >= 400.0f) { + mActionMode2 = 1; + } else { + mActionMode2 = 5; + } + } + + setSwordAtBit(0); + field_0xa91 = 1; + break; + + case 8: + case 10: + if (mActionMode2 == 8) { + setBck(19, 2, 3.0f, 1.0f); + } else { + setBck(19, 2, 10.0f, 1.0f); + } + + mActionMode2 = 9; + speedF = 4.3f; + // fallthrough + default: + if (mpModelMorf2->checkFrame(23.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(0.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + current.angle.y = shape_angle.y; + + if (mPlayerDistance < 700.0f) { + mActionMode2 = 11; + } + break; + + case 0: + case 2: + if (mActionMode2 == 1) { + setBck(16, 2, 3.0f, 1.0f); + } else { + setBck(16, 2, 10.0f, 1.0f); + } + + mActionMode2 = 2; + speedF = 2.3f; + current.angle.y = shape_angle.y; + + + setAwaitSound(); + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + current.angle.y = shape_angle.y; + + if (mPlayerDistance > 800.0f) { + if (mMoveArea == 0) { + mActionMode2 = 10; + } + } else if (mPlayerDistance < 300.0f) { + speedF = 0.0f; + mActionMode2 = 5; + } + break; + + case 3: + setBck(16, 2, 3.0f, -1.0f); + mActionMode2 = 4; + current.angle.y = shape_angle.y + 0x8000; + mWalkDir = 0; + // fallthrough + case 4: + setAwaitSound(); + speedF = 2.3f; + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + current.angle.y = shape_angle.y + 0x8000; + + if (mPlayerDistance < 200.0f && field_0xa70 == 0) { + mWalkDir++; + if (mWalkDir > 60) { + if (field_0xaa5 == 1) { + field_0xa70 = l_HIO.field_0x1c; + } else { + field_0xa70 = l_HIO.field_0x20; + } + + setActionMode(4, 0); + } + } else { + mWalkDir = 0; + } + + if (mPlayerDistance > 300.0f) { + speedF = 0.0f; + mActionMode2 = 5; + } + break; + + case 5: + if (cM_rnd() < 0.5f) { + mActionMode2 = 6; + setBck(17, 2, 3.0f, 1.0f); + current.angle.y = shape_angle.y + 0x4000; + } else { + mActionMode2 = 7; + setBck(17, 2, 3.0f, -1.0f); + current.angle.y = shape_angle.y + -0x4000; + } + + field_0xa6c = cM_rndFX(20.0f) + 60.0f; + speedF = 2.3f; + break; + + case 6: + setAwaitSound(); + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + current.angle.y = shape_angle.y + 0x4000; + + if (field_0xa6c == 0) { + if (cM_rnd() < 0.5f) { + setBck(17, 2, 3.0f, -1.0f); + current.angle.y = shape_angle.y + -0x4000; + mActionMode2 = 7; + } + + field_0xa6c = cM_rndFX(20.0f) + 60.0f; + } + + if (mPlayerDistance < 200.0f) { + mActionMode2 = 3; + } + + if (mPlayerDistance > 400.0f) { + mActionMode2 = 1; + } + break; + + case 7: + setAwaitSound(); + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + current.angle.y = shape_angle.y + -0x4000; + + if (field_0xa6c == 0) { + if (cM_rnd() < 0.5f) { + setBck(17, 2, 3.0f, 1.0f); + current.angle.y = shape_angle.y + 0x4000; + mActionMode2 = 6; + } + field_0xa6c = cM_rndFX(20.0f) + 90.0f; + } + + if (mPlayerDistance < 200.0f) { + mActionMode2 = 3; + } + + if (mPlayerDistance > 400.0f) { + mActionMode2 = 1; + } + break; + + case 70: + case 100: + setBck(16, 2, 10.0f, 1.0f); + mActionMode2 = 102; + speedF = 2.3f; + current.angle.y = shape_angle.y; + // fallthrough + case 101: + setAwaitSound(); + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + cLib_addCalcAngleS(¤t.angle.y, cM_atan2s(-current.pos.x, -current.pos.z), 4, 0x400, 16); + + if (!checkMoveAngle()) { + mActionMode2 = 103; + } + + if (mMoveArea <= 1) { + mActionMode2 = 70; + } + break; + + case 103: + mPlayerDistance = 3.0f; + + if (checkBck(19)) { + mPlayerDistance = 10.0f; + } + + if (abs(sVar5) < 0x2000) { + if (cM_rnd() < 0.5f) { + mActionMode2 = 106; + setBck(17, 2, mPlayerDistance, 1.0f); + } else { + mActionMode2 = 107; + setBck(17, 2, mPlayerDistance, -1.0f); + } + } else if (sVar5 < 0) { + mActionMode2 = 106; + setBck(17, 2, mPlayerDistance, 1.0f); + } else { + mActionMode2 = 107; + setBck(17, 2, mPlayerDistance, -1.0f); + } + + field_0xa6c = cM_rndFX(20.0f) + 60.0f; + // fallthrough + case 106: + case 107: + setAwaitSound(); + speedF = 2.3f; + cLib_addCalcAngleS(&shape_angle.y, sVar4, 4, 0x400, 16); + + if (mActionMode2 == 106) { + if (mMoveArea == 3) { + current.angle.y = shape_angle.y + 0x6000; + } else if (mMoveArea == 2) { + current.angle.y = shape_angle.y + 0x4000; + } else { + current.angle.y = shape_angle.y + 0x3000; + } + } else if (mMoveArea == 3) { + current.angle.y = shape_angle.y + -0x6000; + } else if (mMoveArea == 2) { + current.angle.y = shape_angle.y + -0x4000; + } else { + current.angle.y = shape_angle.y + -0x3000; + } + + if (field_0xa6c == 0 && mpModelMorf2->checkFrame(0.0f)) { + if (abs(sVar5) > 0x7800) { + field_0xa6c = cM_rndFX(20.0f) + 90.0f; + if (cM_rnd() < 0.5f) { + if (mActionMode2 == 106) { + setBck(17, 2, 3.0f, -1.0f); + mActionMode2 = 107; + } else { + setBck(17, 2, 3.0f, 1.0f); + mActionMode2 = 106; + } + } + } else if (abs(sVar5) < 0x7000) { + if (mActionMode2 == 106) { + if (sVar5 > 0) { + setBck(17, 2, 3.0f, -1.0f); + mActionMode2 = 107; + } + } else if (sVar5 < 0) { + setBck(17, 2, 3.0f, 1.0f); + mActionMode2 = 106; + } + } + } + + if (checkMoveAngle()) { + mActionMode2 = 100; + } + + if (mMoveArea < 1) { + mActionMode2 = 70; + } + break; + } + + if (mActionMode2 < 100) { + checkStartAttackH(); + if (mMoveArea == 3) { + if (checkMoveAngle() != 0) { + mActionMode2 = 100; + } else { + mActionMode2 = 103; + } + } + } } /* 80625394-806255F0 006894 025C+00 1/1 0/0 0/0 .text checkStartAttackH__8daB_TN_cFv */ void daB_TN_c::checkStartAttackH() { - // NONMATCHING + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + fopAcM_searchPlayerAngleY(this); + s16 sVar1 = fopAcM_searchPlayerAngleY(this) - shape_angle.y; + + if (mPlayerDistance < 400.0f && abs(sVar1) < 0x3000) { + if (field_0xa78 >= 11) { + if (field_0xaa5 == 1) { + if (field_0xa70 > 40) { + field_0xa70 = cM_rndF(20.0f) + 15.0f; + } + } else if (field_0xa70 > 10) { + field_0xa70 = 10; + } + + if (field_0xa70 == 0 && checkNormalAttackAble()) { + if (field_0xaa5 == 1) { + field_0xa70 = l_HIO.field_0x1c; + } else { + field_0xa70 = l_HIO.field_0x20; + } + + setActionMode(4, 0); + } + } else { + if (mPlayerDistance < 200.0f) { + setActionMode(5, 0); + } else { + if (mPlayerDistance < 250.0f) { + if (field_0xaa5 == 1) { + if (field_0xa70 > 60) { + field_0xa70 = cM_rndF(20.0f) + 40.0f; + } + } else if (field_0xa70 > 30) { + field_0xa70 = 30; + } + } + + if (field_0xa70 == 0 && checkNormalAttackAble()) { + if (field_0xaa5 == 1) { + field_0xa70 = l_HIO.field_0x1c; + } else { + field_0xa70 = l_HIO.field_0x20; + } + + setActionMode(4, 0); + } + } + } + } } -/* ############################################################################################## */ -/* 8062E7DC-8062E7E0 0001A8 0004+00 0/1 0/0 0/0 .rodata @7243 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7243 = 72.0f; -COMPILER_STRIP_GATE(0x8062E7DC, &lit_7243); -#pragma pop - -/* 8062E7E0-8062E7E4 0001AC 0004+00 0/2 0/0 0/0 .rodata @7244 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7244 = 29.0f; -COMPILER_STRIP_GATE(0x8062E7E0, &lit_7244); -#pragma pop - -/* 8062E7E4-8062E7E8 0001B0 0004+00 0/3 0/0 0/0 .rodata @7245 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7245 = 11.0f; -COMPILER_STRIP_GATE(0x8062E7E4, &lit_7245); -#pragma pop - -/* 8062E7E8-8062E7EC 0001B4 0004+00 0/3 0/0 0/0 .rodata @7246 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7246 = 19.0f; -COMPILER_STRIP_GATE(0x8062E7E8, &lit_7246); -#pragma pop - -/* 8062E7EC-8062E7F0 0001B8 0004+00 0/3 0/0 0/0 .rodata @7247 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7247 = 22.0f; -COMPILER_STRIP_GATE(0x8062E7EC, &lit_7247); -#pragma pop - -/* 8062E7F0-8062E7F4 0001BC 0004+00 0/1 0/0 0/0 .rodata @7248 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7248 = 66.0f; -COMPILER_STRIP_GATE(0x8062E7F0, &lit_7248); -#pragma pop - -/* 8062E7F4-8062E7F8 0001C0 0004+00 0/5 0/0 0/0 .rodata @7249 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7249 = 26.0f; -COMPILER_STRIP_GATE(0x8062E7F4, &lit_7249); -#pragma pop - /* 806255F0-80625C74 006AF0 0684+00 1/1 0/0 0/0 .text executeAttackH__8daB_TN_cFv */ void daB_TN_c::executeAttackH() { - // NONMATCHING + f32 frame; + s16 playerAngleY = fopAcM_searchPlayerAngleY(this); + f32 playerDistance = fopAcM_searchPlayerDistance(this); + + switch (mActionMode2) { + case 0: + speedF = 0.0f; + + if (playerDistance < 250.0f) { + mActionMode2 = 1; + setBck(5, 0, 3.0f, 1.0f); + } else { + if (playerDistance < 350.0f) { + mActionMode2 = 2; + setBck(6, 0, 3.0f, 1.0f); + } else { + if (cM_rnd() < 0.5f) { + mActionMode2 = 1; + setBck(5, 0, 3.0f, 1.0f); + } else { + mActionMode2 = 2; + setBck(6, 0, 3.0f, 1.0f); + setAttackBlurEffect(1); + } + } + } + + field_0xa91 = 0; + break; + + case 1: + if (mpModelMorf2->getFrame() >= 20.0f && mpModelMorf2->getFrame() < 25.0f) { + field_0xa90 = 3; + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(15)); + mDoMtx_stack_c::transM(40.0f, 0.0f, 70.0f); + mDoMtx_stack_c::YrotM(-0x8000); + PSMTXCopy(mDoMtx_stack_c::get(), field_0x72c); + } + + if (mpModelMorf2->checkFrame(18.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_L, 0, -1); + mSound.startCreatureVoice(Z2SE_EN_TN_V_KIAI, -1); + } + + if (mpModelMorf2->checkFrame(23.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_L, 0, -1); + } + + if (mpModelMorf2->checkFrame(72.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->getFrame() <= 30.0f) { + cLib_addCalcAngleS(&shape_angle.y, playerAngleY, 8, 0x400, 16); + } + + frame = mpModelMorf2->getFrame(); + if (frame >= 18.0f && frame < 29.0f) { + field_0xaa0 = 1; + } + + if (mpModelMorf2->checkFrame(18.0f)) { + setSwordAtBit(1); + } + + if (mpModelMorf2->checkFrame(29.0f)) { + setSwordAtBit(0); + } + + if (mpModelMorf2->isStop()) { + setActionMode(3, 0); + field_0xa91 = 1; + } + break; + + case 2: + setAttackBlurEffect(1); + if (mpModelMorf2->checkFrame(11.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } else if (mpModelMorf2->checkFrame(19.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_KIAI_AGE, -1); + } else if (mpModelMorf2->checkFrame(22.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_L, 0, -1); + } else if (mpModelMorf2->checkFrame(23.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_L, 0, -1); + } else if (mpModelMorf2->checkFrame(66.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->getFrame() <= 22.0f) { + cLib_addCalcAngleS(&shape_angle.y, playerAngleY, 8, 0x400, 16); + } + + if (mpModelMorf2->getFrame() >= 22.0f && mpModelMorf2->getFrame() < 30.0f) { + field_0xaa1 = 1; + field_0xaa0 = 1; + } + + if (mpModelMorf2->checkFrame(22.0f)) { + setSwordAtBit(1); + } + + if (mpModelMorf2->checkFrame(30.0f)) { + setSwordAtBit(0); + } + + if (mpModelMorf2->checkFrame(26.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_IMPCT, 0, -1); + dComIfGp_getVibration().StartShock(6, 31, cXyz(0.0f, 1.0f, 0.0f)); + } + + if (mpModelMorf2->isStop()) { + setActionMode(3, 0); + field_0xa91 = 1; + } + } } -/* ############################################################################################## */ -/* 8062E7F8-8062E7FC 0001C4 0004+00 0/4 0/0 0/0 .rodata @7293 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7293 = 4.0f; -COMPILER_STRIP_GATE(0x8062E7F8, &lit_7293); -#pragma pop - -/* 8062E7FC-8062E800 0001C8 0004+00 0/1 0/0 0/0 .rodata @7294 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7294 = 21.0f; -COMPILER_STRIP_GATE(0x8062E7FC, &lit_7294); -#pragma pop - -/* 8062E800-8062E804 0001CC 0004+00 0/3 0/0 0/0 .rodata @7295 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7295 = 9.0f; -COMPILER_STRIP_GATE(0x8062E800, &lit_7295); -#pragma pop - -/* 80625C74-80625E40 007174 01CC+00 1/1 0/0 0/0 .text executeAttackShieldH__8daB_TN_cFv - */ +/* 80625C74-80625E40 007174 01CC+00 1/1 0/0 0/0 .text executeAttackShieldH__8daB_TN_cFv */ void daB_TN_c::executeAttackShieldH() { - // NONMATCHING + switch (mActionMode2) { + case 0: + speedF = 0.0f; + setBck(8, 0, 3.0f, 1.0f); + mActionMode2 = 1; + break; + + case 1: + if (mpModelMorf2->checkFrame(4.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_ATK_SLD, -1); + } + + if (mpModelMorf2->checkFrame(8.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_L, 0, -1); + } + + if (mpModelMorf2->checkFrame(21.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(5.0f)) { + field_0x3618.OnAtSetBit(); + } + + if (mpModelMorf2->checkFrame(9.0f)) { + field_0x3618.OffAtSetBit(); + } + + if (mpModelMorf2->isStop()) { + setActionMode(4, 0); + } + } } /* 80625E40-80626034 007340 01F4+00 1/1 0/0 0/0 .text executeGuardH__8daB_TN_cFv */ void daB_TN_c::executeGuardH() { - // NONMATCHING + cXyz sp18; + switch (mActionMode2) { + case 0: + setSwordAtBit(0); + field_0x3618.OffAtSetBit(); + field_0xa91 = 1; + + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(18)); + mDoMtx_stack_c::multVecZero(&sp18); + current.pos.set(sp18.x, current.pos.y, sp18.z); + + mActionMode2 = 1; + speedF = 0.0f; + + if (field_0xaa8 != 0) { + shape_angle.y = fopAcM_searchPlayerAngleY(this); + setBck(13, 0, 0.0f, 1.0f); + } else { + cLib_chaseAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 0x2000); + setBck(12, 0, 0.0f, 1.0f); + } + break; + + case 1: + if (field_0xaa8 != 0) { + onHeadLockFlg(); + } else { + // Obtained 4 secret techinques + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[341])) { + attention_info.flags |= 0x200000; + } + } + + if (mpModelMorf2->isStop()) { + if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_HEAD_JUMP) { + setActionMode(3, 0); + } + } + } } /* 80626034-80626320 007534 02EC+00 1/1 0/0 0/0 .text executeDamageH__8daB_TN_cFv */ void daB_TN_c::executeDamageH() { - // NONMATCHING + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this); + daPy_py_c* player = daPy_getPlayerActorClass(); + field_0xa91 = 0; + + if (field_0xa80 == 0) { + field_0xa91 = 1; + field_0xaa7 = 30; + } + + if (field_0xaa5 == 0) { + if (player->getCutCount() >= 3) { + field_0xa91 = 1; + } + } else if (field_0xaa7 != 0) { + field_0xa91 = 1; + } + + int iVar1; + switch (mActionMode2) { + case 0: + case 1: + setSwordAtBit(0); + iVar1 = field_0xa78; + if (iVar1 >= 12) { + setActionMode(8, 0); + } else { + if (player->getCutType() != daPy_py_c::CUT_TYPE_HEAD_JUMP) { + setBreakPart(iVar1); + } else { + setBreakHeadPart(iVar1); + } + + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(18)); + cXyz sp1c; + mDoMtx_stack_c::multVecZero(&sp1c); + current.pos.set(sp1c.x, current.pos.y, sp1c.z); + + if (mActionMode2 == 0) { + setBck(9, 0, 0.0f, 1.0f); + } else { + setBck(11, 0, 0.0f, 1.0f); + } + + mSound.startCreatureVoice(Z2SE_EN_TN_V_DMG, -1); + speedF = 0.0f; + mActionMode2 = 2; + + cLib_chaseAngleS(&shape_angle.y, mPlayerAngleY, 0x1800); + + if (field_0xaa5 == 1 && field_0xa78 < 11 && field_0xa9f != 0) { + field_0xa91 = 1; + field_0xaa7 = 40; + } + } + break; + + case 2: + if (mpModelMorf2->checkFrame(3.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(35.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + setActionMode(3, 0); + field_0xa91 = 1; + } + } } -/* ############################################################################################## */ -/* 8062E804-8062E808 0001D0 0004+00 0/1 0/0 0/0 .rodata @7807 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7807 = -179.0f; -COMPILER_STRIP_GATE(0x8062E804, &lit_7807); -#pragma pop - -/* 8062E808-8062E80C 0001D4 0004+00 0/1 0/0 0/0 .rodata @7808 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7808 = -342.0f; -COMPILER_STRIP_GATE(0x8062E808, &lit_7808); -#pragma pop - -/* 8062E80C-8062E810 0001D8 0004+00 0/3 0/0 0/0 .rodata @7809 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7809 = 37.0f; -COMPILER_STRIP_GATE(0x8062E80C, &lit_7809); -#pragma pop - -/* 8062E810-8062E814 0001DC 0004+00 0/3 0/0 0/0 .rodata @7810 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7810 = 6.0f; -COMPILER_STRIP_GATE(0x8062E810, &lit_7810); -#pragma pop - -/* 8062E814-8062E818 0001E0 0004+00 0/1 0/0 0/0 .rodata @7811 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7811 = -330.0f; -COMPILER_STRIP_GATE(0x8062E814, &lit_7811); -#pragma pop - -/* 8062E818-8062E81C 0001E4 0004+00 0/1 0/0 0/0 .rodata @7812 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7812 = 1250.0f; -COMPILER_STRIP_GATE(0x8062E818, &lit_7812); -#pragma pop - -/* 8062E81C-8062E820 0001E8 0004+00 0/1 0/0 0/0 .rodata @7813 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7813 = -380.0f; -COMPILER_STRIP_GATE(0x8062E81C, &lit_7813); -#pragma pop - -/* 8062E820-8062E824 0001EC 0004+00 0/1 0/0 0/0 .rodata @7814 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7814 = -270.0f; -COMPILER_STRIP_GATE(0x8062E820, &lit_7814); -#pragma pop - -/* 8062E824-8062E828 0001F0 0004+00 0/2 0/0 0/0 .rodata @7815 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7815 = -100.0f; -COMPILER_STRIP_GATE(0x8062E824, &lit_7815); -#pragma pop - /* 80626320-80627100 007820 0DE0+00 1/1 0/0 0/0 .text executeChangeDemo__8daB_TN_cFv */ void daB_TN_c::executeChangeDemo() { // NONMATCHING + cXyz sp28, sp34, sp40; + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + switch (mActionMode2) { + case 0: + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xffff, 0); + eventInfo.onCondition(2); + return; + } + + Z2GetAudioMgr()->changeSubBgmStatus(1); + + camera->mCamera.Stop(); + camera->mCamera.SetTrimSize(3); + + field_0xa6c = 30; + mCamFovY = 55.0f; + field_0x724 = 380.0f; + field_0x720 = 0x1000; + mCamCenter.set(0.0f, -179.0f, -342.0f); + mCamEye.set(0.0f, -300.0f, 350.0f); + + player->changeOriginalDemo(); + sp28.set(100.0f, -400.0f, 1000.0f); + player->setPlayerPosAndAngle(&sp28, -0x8000, 0); + player->changeDemoMode(4, 1, 0, 0); + + speedF = 0.0f; + setBck(10, 0, 3.0f, 1.0f); + + mSound.startCreatureVoice(Z2SE_EN_TN_V_DMG_2, -1); + + mActionMode2 = 100; + + for (int i = 0; i < 16; i++) { + if (field_0x9fc[i] >= 3 && field_0x9fc[i] <= 5 && std::abs(field_0x75c[i].x) < 200.0f) { + if (field_0x75c[i].x < 0.0f) { + field_0x75c[i].x -= 200.0f; + } else { + field_0x75c[i].x += 200.0f; + } + } + } + + return; + + case 100: + current.pos.set(0.0f, -400.0f, -350.0f); + shape_angle.y = 0; + mActionMode2 = 101; + // fallthrough + case 101: + if (mActionMode2 == 101) { + setBreakPart(field_0xa78); + mActionMode2 = 1; + } + + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mCamCenter); + // fallthrough + default: + mCamEye.set(0.0f, -300.0f, 0.0f); + + if (mpModelMorf2->checkFrame(3.0f) || mpModelMorf2->checkFrame(26.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(15.0f) || mpModelMorf2->checkFrame(37.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + setBck(30, 0, 3.0f, 1.0f); + current.angle.y = shape_angle.y + -0x8000; + mActionMode2 = 2; + } + break; + + case 2: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mCamCenter); + mCamEye.set(0.0f, -300.0f, 0.0f); + + if (mpModelMorf2->checkFrame(4.0f)) { + speedF = 35.0f; + speed.y = 4.0f; + gravity = -1.0f; + } + + if (mpModelMorf2->checkFrame(6.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_JUMP, -1); + } + + if (mpModelMorf2->isStop() && mAcch.ChkGroundHit()) { + setBck(31, 0, 5.0f, 1.0f); + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + mActionMode2 = 3; + } + break; + + case 3: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mCamCenter); + mCamEye.set(0.0f, -300.0f, 0.0f); + cLib_chaseF(&speedF, 0.0f, 7.0f); + if (mpModelMorf2->checkFrame(4.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + speedF = 0.0f; + setBck(41, 0, 3.0f, 1.0f); + mActionMode2 = 4; + } + break; + + case 4: + if (mpModelMorf2->checkFrame(11.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(19.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_THROW, -1); + } + + if (mpModelMorf2->checkFrame(22.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mCamCenter); + mCamEye.set(0.0f, -300.0f, 0.0f); + + if (mpModelMorf2->checkFrame(23.0f)) { + field_0x9fc[13] = 2; + } + + if (mpModelMorf2->checkFrame(33.0f)) { + mActionMode2 = 10; + field_0x75c[13].z = -200.0f; + mCamEye.set(250.0f, -330.0f, 1250.0f); + mCamCenter = field_0x75c[13]; + } + break; + + case 10: + mCamCenter = field_0x75c[13]; + + if (mpModelMorf2->isStop()) { + player->changeDemoMode(16, 2, 0, 0); + setBck(42, 2, 3.0f, 1.0f); + field_0xa6c = 60; + mActionMode2 = 11; + } + break; + + case 11: + sp40 = mCamEye; + sp34.set(100.0f, -330.0f, 1250.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.5f, 10.0f); + mCamCenter += mCamEye - sp40; + sp28 = player->current.pos; + sp28.y += 150.0f; + cLib_addCalcPos2(&mCamCenter, sp28, 0.5f, 30.0f); + + if (field_0xa6c == 45) { + player->changeDemoMode(25, 0, 0, 0); + } + + if (field_0xa6c == 15) { + field_0xa6c = 30; + mActionMode2 = 12; + } + break; + + case 12: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + cLib_addCalcPos2(&mCamCenter, sp34, 0.1f, 60.0f); + + if (field_0xa6c == 0) { + field_0xa6c = 40; + mActionMode2 = 13; + } + break; + + case 13: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + sp34.y -= 100.0f; + cLib_addCalcPos2(&mCamCenter, sp34, 0.1f, 30.0f); + sp34.set(0.0f, -380.0f, -270.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.1f, 70.0f); + + if (field_0xa6c == 0) { + setBck(38, 0, 3.0f, 1.0f); + mSound.startCreatureVoice(Z2SE_EN_TN_V_PULL_OUT, -1); + mActionMode2 = 15; + sp28.set(-100.0f, -400.0f, 300.0f); + player->setPlayerPosAndAngle(&sp28, 0x7000, 0); + } + break; + + case 15: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&sp34); + sp34.y -= 100.0f; + cLib_addCalcPos2(&mCamCenter, sp34, 0.1f, 30.0f); + sp34.set(0.0f, -380.0f, -270.0f); + cLib_addCalcPos2(&mCamEye, sp34, 0.1f, 70.0f); + + if (mpModelMorf2->checkFrame(10.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_PULL_OUT, 0, -1); + field_0x9fc[15] = 1; + field_0x9fc[14] = 2; + mpModelMorf1->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("B_tn", 40), 0, 0.0f, 1.0f, 0.0f, -1.0f); + } + + if (mpModelMorf2->isStop()) { + for (int i = 0; i < 4; i++) { + mSwordSphs[i].OffCoSetBit(); + } + mCps.OffCoSetBit(); + setBck(42, 2, 3.0f, 1.0f); + field_0xa6c = 30; + mActionMode2 = 16; + return; + } + break; + + case 16: + if (field_0xa6c == 0) { + camera->mCamera.Reset(mCamCenter, mCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + setActionMode(9, 0); + initChaseL(16); + field_0x3618.OffAtSetBit(); + } + break; + + } + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovY, 0); } -/* ############################################################################################## */ -/* 8062E828-8062E82C 0001F4 0004+00 0/2 0/0 0/0 .rodata @7949 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7949 = 45.0f; -COMPILER_STRIP_GATE(0x8062E828, &lit_7949); -#pragma pop - -/* 80627100-80627790 008600 0690+00 1/1 0/0 0/0 .text executeZakoChangeDemo__8daB_TN_cFv - */ +/* 80627100-80627790 008600 0690+00 1/1 0/0 0/0 .text executeZakoChangeDemo__8daB_TN_cFv */ void daB_TN_c::executeZakoChangeDemo() { - // NONMATCHING -} + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this); -/* ############################################################################################## */ -/* 8062E82C-8062E830 0001F8 0004+00 0/2 0/0 0/0 .rodata @8010 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8010 = 550.0f; -COMPILER_STRIP_GATE(0x8062E82C, &lit_8010); -#pragma pop + switch (mActionMode2) { + case 0: + if (field_0xaad != 0) { + Z2GetAudioMgr()->changeSubBgmStatus(1); + } + + field_0xa6c = 30; + speedF = 0.0f; + setBck(10, 0, 3.0f, 1.0f); + + mSound.startCreatureVoice(Z2SE_EN_TN_V_DMG_2, -1); + + setBreakPart(field_0xa78); + mActionMode2 = 1; + // fallthrough + case 1: + if (mpModelMorf2->checkFrame(3.0f) || mpModelMorf2->checkFrame(26.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(15.0f) || mpModelMorf2->checkFrame(37.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 8, 0x100, 16); + + if (mpModelMorf2->isStop()) { + setBck(30, 0, 3.0f, 1.0f); + current.angle.y = shape_angle.y + 0x8000; + mActionMode2 = 2; + } + break; + + case 2: + if (mpModelMorf2->checkFrame(4.0f)) { + speedF = 45.0f; + speed.y = 5.0f; + gravity = -1.0f; + } + + if (mpModelMorf2->checkFrame(6.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_JUMP, -1); + } + + if (!mpModelMorf2->isStop()) { + return; + } + + if (!mAcch.ChkGroundHit()) { + return; + } + + setBck(31, 0, 5.0f, 1.0f); + + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + mActionMode2 = 3; + return; + + case 3: + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 8, 0x800, 16); + cLib_chaseF(&speedF, 0.0f, 9.0f); + + if (mpModelMorf2->checkFrame(4.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + speedF = 0.0f; + setBck(41, 0, 3.0f, 1.0f); + mActionMode2 = 4; + } + break; + + case 4: + if (mpModelMorf2->checkFrame(11.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(19.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_THROW, -1); + } + + if (mpModelMorf2->checkFrame(22.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->getFrame() < 23.0f) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 8, 0x800, 16); + } + + if (mpModelMorf2->checkFrame(23.0f)) { + field_0x9fc[13] = 2; + setSwordAtBit(1); + } + + if (mpModelMorf2->isStop()) { + setBck(38, 0, 3.0f, 1.0f); + mSound.startCreatureVoice(Z2SE_EN_TN_V_PULL_OUT, -1); + mActionMode2 = 5; + } + break; + + case 5: + if (mpModelMorf2->checkFrame(10.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_PULL_OUT, 0, -1); + field_0x9fc[15] = 1; + field_0x9fc[14] = 2; + mpModelMorf1->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("B_tn", 40), 0, 0.0f, 1.0f, 0.0f, -1.0f); + } + + if (mpModelMorf2->isStop()) { + setActionMode(9, 0); + initChaseL(3); + field_0x3618.OffAtSetBit(); + } + } +} /* 80627790-8062799C 008C90 020C+00 1/1 0/0 0/0 .text setWalkDir__8daB_TN_cFv */ void daB_TN_c::setWalkDir() { - // NONMATCHING + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + + if (checkMoveArea() != 0) { + s16 sVar1 = cM_atan2s(-current.pos.x, -current.pos.z); + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this) - sVar1; + if (abs(mPlayerAngleY) < 0x2000) { + mWalkDir = 0; + } else { + if (abs(mPlayerAngleY) > 0x6000) { + mWalkDir = 1; + } else { + if (abs(mPlayerAngleY) < 0x4000) { + mWalkDir = 0; + } else { + mWalkDir = 1; + } + + if (mPlayerAngleY < 0) { + if (mActionMode2 == 5 && field_0xa6c > 30) { + field_0xa6c = 30; + } + } else if (mActionMode2 == 4 && field_0xa6c > 30) { + field_0xa6c = 30; + } + } + } + } else { + if (mPlayerDistance > 800.0f) { + field_0xa6c = 0; + } + + if (mWalkDir == 0) { + if (field_0xa70 != 0) { + if (mPlayerDistance < 500.0f) { + mWalkDir = 1; + } + } else if (mPlayerDistance < 300.0f) { + mWalkDir = 1; + } + } else if (mWalkDir == 1) { + if (field_0xa70 != 0) { + if (mPlayerDistance > 550.0f) { + mWalkDir = 0; + } + } else if (mPlayerDistance > 350.0f) { + mWalkDir = 0; + } + + if (mPlayerDistance < 200.0f) { + mWalkDir = 2; + } + } else if (mPlayerDistance > 250.0f) { + mWalkDir = 1; + } + } } /* 8062799C-80627CBC 008E9C 0320+00 6/5 0/0 0/0 .text initChaseL__8daB_TN_cFi */ -void daB_TN_c::initChaseL(int param_0) { +void daB_TN_c::initChaseL(int param_1) { // NONMATCHING + mActionMode2 = param_1; + speedF = 0.0f; + + switch (mActionMode2) { + case 2: + setBck(42, 2, 10.0f, 1.0f); + field_0xa6c = 30; + break; + + case 3: + setBck(45, 2, 10.0f, 1.0f); + speedF = 4.7f; + break; + + case 4: + if (!checkBck(43)) { + setBck(43, 2, 10.0f, 1.0f); + } + + current.angle.y = shape_angle.y + 0x4000; + field_0xa6c = cM_rndFX(20.0f) + 90.0f; + speedF = 4.8f; + mWalkDir = 1; + break; + + case 5: + if (!checkBck(44)) { + setBck(44, 2, 10.0f, 1.0f); + } + + current.angle.y = shape_angle.y + -0x4000; + field_0xa6c = cM_rndFX(20.0f) + 90.0f; + speedF = 4.8f; + mWalkDir = 1; + break; + + case 6: + setBck(30, 0, 3.0f, 1.0f); + break; + + case 7: + mpModelMorf2->setPlaySpeed(1.0f); + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + break; + + case 8: + case 17: + setBck(32, 0, 3.0f, 1.0f); + break; + + case 9: + setBck(33, 0, 5.0f, 1.0f); + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + break; + + case 10: + case 11: + setBck(36, 0, 3.0f, 1.0f); + break; + + case 12: + setBck(37, 0, 3.0f, 1.0f); + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + speedF = 15.0f; + break; + + case 13: + case 14: + setBck(34, 0, 3.0f, 1.0f); + break; + + case 15: + setBck(35, 0, 3.0f, 1.0f); + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + speedF = 15.0f; + break; + + case 16: + setBck(45, 2, 10.0f, 1.0f); + speedF = 4.7; + field_0xa6c = 30; + } } /* 80627CBC-80627D3C 0091BC 0080+00 4/4 0/0 0/0 .text checkAttackAble__8daB_TN_cFv */ -void daB_TN_c::checkAttackAble() { - // NONMATCHING +bool daB_TN_c::checkAttackAble() { + if (fopAcM_searchPlayerDistance(this) < 500.0f) { + if (abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) < 0x3000) { + return true; + } + } + + return false; } -/* ############################################################################################## */ -/* 8062E830-8062E834 0001FC 0004+00 0/0 0/0 0/0 .rodata @8049 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8049 = 47.0f / 10.0f; -COMPILER_STRIP_GATE(0x8062E830, &lit_8049); -#pragma pop - -/* 8062E834-8062E838 000200 0004+00 0/0 0/0 0/0 .rodata @8050 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8050 = 24.0f / 5.0f; -COMPILER_STRIP_GATE(0x8062E834, &lit_8050); -#pragma pop - -/* 8062E838-8062E83C 000204 0004+00 0/3 0/0 0/0 .rodata @8302 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8302 = 28.0f; -COMPILER_STRIP_GATE(0x8062E838, &lit_8302); -#pragma pop - -/* 8062E83C-8062E840 000208 0004+00 0/2 0/0 0/0 .rodata @8303 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8303 = 450.0f; -COMPILER_STRIP_GATE(0x8062E83C, &lit_8303); -#pragma pop - -/* 8062E840-8062E844 00020C 0004+00 0/1 0/0 0/0 .rodata @8304 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8304 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x8062E840, &lit_8304); -#pragma pop - /* 80627D3C-8062868C 00923C 0950+00 1/1 0/0 0/0 .text checkNextMove__8daB_TN_cFv */ -void daB_TN_c::checkNextMove() { +bool daB_TN_c::checkNextMove() { // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this) - shape_angle.y; + s16 isAttackAble = checkAttackAble(); + s16 sVar7 = current.angle.y; + + fopAc_ac_c* mActor = (fopAc_ac_c*)fpcM_Search(s_obj_sub, this); + int iVar1; + if (mActor != NULL) { + sVar7 = fopAcM_searchActorAngleY(this, mActor); + } + + if (dComIfGp_checkPlayerStatus0(0, 0x4000) && player->getHookshotTopPos()) { + if (player->getHookshotTopPos()->absXZ(current.pos) < 300.0f) { + sVar7 = cLib_targetAngleY(¤t.pos, player->getHookshotTopPos()); + iVar1 = 1; + } + } + + if (player->getIronBallCenterPos() && !player->checkIronBallGroundStop()) { + if (player->getIronBallCenterPos()->absXZ(current.pos) < 300.0f) { + sVar7 = cLib_targetAngleY(¤t.pos, player->getIronBallCenterPos()); + iVar1 = 1; + } + } + + if (daPy_py_c::getThrowBoomerangActor()) { + if (daPy_py_c::getThrowBoomerangActor()->current.pos.absXZ(current.pos) < 300.0f) { + sVar7 = cLib_targetAngleY(¤t.pos, &daPy_py_c::getThrowBoomerangActor()->current.pos); + iVar1 = 1; + } + } + + if (iVar1) { + if (shape_angle.y - sVar7 < 0) { + initChaseL(13); + } else { + initChaseL(10); + } + + field_0xa84 = 10; + return 1; + } + + if (isAttackAble) { + if (player->checkFrontRoll() && mPlayerDistance < 250.0f) { + setActionMode(11, 10); + return 1; + } + + if (player->getCutType() != daPy_py_c::CUT_TYPE_JUMP && mPlayerDistance < 200.0f) { + setActionMode(11, 0); + return 1; + } + } + + if ((player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && !player->checkCutJumpCancelTurn()) && mPlayerDistance < 350.0f) { + if ((field_0xa9d & 1) == 0) { + field_0xa9d |= 1; + if (player->speedF < 28.0f) { + initChaseL(6); + } else { + if (mPlayerAngleY < 0) { + initChaseL(14); + } else { + initChaseL(11); + } + + field_0xa84 = 10; + } + } + + return 1; + } else { + field_0xa9d &= 254; + } + + if (checkMoveArea() == 3) { + return 0; + } + + if (player->checkCutCharge() && isAttackAble) { + if ((field_0xa9d & 2) == 0) { + field_0xa9d |= 2; + setActionMode(10, 10); + return 1; + } + } else { + field_0xa9d &= 0xfd; + } + + if (field_0xa70 == 0 && abs(mPlayerAngleY) < 0x3000 && mPlayerDistance > 450.0f && mPlayerAngleY < 700.0f) { + if (cM_rnd() < 0.5f) { + initChaseL(8); + return 1; + } + + if (field_0xaa5 == 1) { + field_0xa70 = cM_rndF(30.0f) + 10.0f; + } else { + field_0xa70 = 10; + } + } + + if (player->getCutCount() != 0) { + if (isAttackAble && (field_0xa9d & 4) == 0) { + field_0xa9d |= 4; + if (cM_rnd() < 0.4f && mPlayerDistance < 450.0f && mPlayerDistance > 200.0f) { + if (cM_rnd() < 0.5f) { + initChaseL(11); + } else { + initChaseL(14); + } + + field_0xa84 = 10; + return 1; + } + } + } else { + field_0xa9d &= 251; + } + + if (isAttackAble && mPlayerDistance < 350.0f) { + if (mPlayerDistance < 250.0f) { + if (field_0xaa5 == 1) { + if (field_0xa70 > 90) { + field_0xa70 = cM_rndF(30.0f) + 60.0f; + } + } else if (field_0xa70 > 30) { + field_0xa70 = 30; + } + } + + if (field_0xa70 == 0 && checkNormalAttackAble()) { + setActionMode(10, 0); + return 1; + } + } + + if (mPlayerDistance < 100.0f) { + if (!isAttackAble) { + initChaseL(6); + return 1; + } + + if (field_0xa70 > 5) { + field_0xa70 = 5; + } + + if (field_0xa70 == 0 && checkNormalAttackAble()) { + setActionMode(10, 0); + return 1; + } + } + + return 0; } /* 8062868C-806292F8 009B8C 0C6C+00 2/1 0/0 0/0 .text executeChaseL__8daB_TN_cFv */ void daB_TN_c::executeChaseL() { // NONMATCHING + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this); + daPy_py_c* player = daPy_getPlayerActorClass(); + + if (player->getCutCount() <= 1) { + field_0xa9c++; + } else { + field_0xa9c = 0; + } + + switch (mActionMode2) { + case 0: + field_0xa9d = 0; + // fallthrough + case 1: + speedF = 0.0f; + if (checkMoveArea()) { + if (cM_rnd() < 0.5f) { + initChaseL(4); + } else { + initChaseL(5); + } + } else { + if (mPlayerDistance > 800.0f) { + initChaseL(3); + } else { + if (cM_rnd() < 0.5f) { + initChaseL(4); + } else { + initChaseL(5); + } + } + } + + setSwordAtBit(0); + field_0xa91 = 1; + break; + + case 3: + if (checkNextMove() == 0) { + if (mpModelMorf2->checkFrame(16.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(33.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + current.angle.y = shape_angle.y; + + if (mPlayerDistance < 700.0f) { + initChaseL(1); + } + + if (checkMoveArea() != 0) { + if (cM_rnd() < 0.5f) { + initChaseL(4); + } else { + initChaseL(5); + } + } + } + break; + + case 16: + if (mpModelMorf2->checkFrame(16.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(33.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + current.angle.y = shape_angle.y; + + if (field_0xa6c == 0) { + initChaseL(17); + } + break; + + case 2: + if (field_0xa6c == 0) { + initChaseL(1); + } + break; + + case 4: + if (checkNextMove() == 0) { + if (mpModelMorf2->checkFrame(13.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(27.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + field_0xa94 = 1; + setWalkDir(); + if (mWalkDir == 0) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY + -0x2000, 4, 0x400, 16); + } else if (mWalkDir == 1) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + } else { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY + 0x2000, 4, 0x400, 16); + } + + current.angle.y = shape_angle.y + 0x4000; + + if (field_0xa6c == 0) { + initChaseL(1); + } + } + break; + + case 5: + if (!checkNextMove()) { + if (mpModelMorf2->checkFrame(13.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(27.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + field_0xa94 = 1; + setWalkDir(); + if (mWalkDir == 0) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY + 0x2000, 4, 0x400, 16); + } else if (mWalkDir == 1) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + } else { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY + -0x2000, 4, 0x400, 16); + } + + current.angle.y = shape_angle.y + -0x4000; + + if (field_0xa6c == 0) { + initChaseL(1); + } + } + break; + + case 6: + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + current.angle.y = shape_angle.y + 0x8000; + + if (checkBck(30)) { + if (mpModelMorf2->checkFrame(4.0f)) { + speedF = 50.0f; + speed.y = 19.0f; + gravity = -4.0f; + } + + if (mpModelMorf2->checkFrame(6.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_JUMP, -1); + } + + if (mpModelMorf2->isStop()) { + setBck(31, 0, 5.0f, 0.0f); + } + } else { + if (mAcch.ChkGroundHit()) { + initChaseL(7); + } + } + break; + + case 7: + cLib_chaseF(&speedF, 0.0f, 6.0f); + + if (mpModelMorf2->checkFrame(4.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + if ((!checkAttackAble() || field_0xaaa != 0) || !checkNormalAttackAble()) { + initChaseL(1); + } else if (mPlayerDistance < 200.0f) { + setActionMode(11, 0); + } else { + setActionMode(10, 10); + } + } + break; + + case 8: + case 17: + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + current.angle.y = shape_angle.y; + + if (mpModelMorf2->checkFrame(4.0f)) { + if (mActionMode2 == 8) { + speedF = 35.0f; + speed.y = 4.0f; + } else { + speedF = 45.0f; + speed.y = 5.0f; + } + + gravity = -1.0f; + } + + if (mpModelMorf2->checkFrame(6.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_JUMP, -1); + } + + if (mpModelMorf2->isStop() && mAcch.ChkGroundHit()) { + if (!checkAttackAble() || !checkNormalAttackAble()) { + initChaseL(9); + } else { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + + if (mPlayerDistance < 200.0f) { + setActionMode(11, 0); + } else { + if (cM_rnd() < 0.5f) { + setActionMode(10, 10); + } else { + setActionMode(10, 0); + } + } + } + } + break; + + case 9: + cLib_chaseF(&speedF, 0.0f, 7.0f); + + if (mpModelMorf2->checkFrame(4.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + initChaseL(1); + } + break; + + case 10: + case 11: + case 13: + case 14: + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x400, 16); + + if (mActionMode2 == 11 || mActionMode2 == 10) { + current.angle.y = shape_angle.y + -0x4000; + } else { + current.angle.y = shape_angle.y + 0x4000; + } + + if (mpModelMorf2->checkFrame(7.0f)) { + speedF = 33.0f; + } else if (mpModelMorf2->checkFrame(6.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_JUMP, -1); + speedF = 35.0f; + } else if (mpModelMorf2->checkFrame(5.0f)) { + speedF = 40.0f; + } else if (mpModelMorf2->checkFrame(4.0f)) { + speedF = 45.0f; + speed.y = 5.0f; + gravity = -1.0f; + } + + if (mpModelMorf2->isStop() && mAcch.ChkGroundHit()) { + if (mActionMode2 == 11 || mActionMode2 == 10) { + initChaseL(12); + } else { + initChaseL(15); + } + } + break; + + case 12: + case 15: + if (mpModelMorf2->checkFrame(5.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + cLib_chaseF(&speedF, 0.0f, 7.0f); + + if (mpModelMorf2->isStop()) { + if (!checkAttackAble() || !checkNormalAttackAble()) { + initChaseL(1); + } else if (mPlayerDistance < 200.0f) { + setActionMode(11, 0); + } else { + setActionMode(10, 10); + } + } + } } -/* ############################################################################################## */ -/* 8062E844-8062E848 000210 0004+00 0/1 0/0 0/0 .rodata @8590 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8590 = 13.0f; -COMPILER_STRIP_GATE(0x8062E844, &lit_8590); -#pragma pop - -/* 8062E848-8062E84C 000214 0004+00 0/1 0/0 0/0 .rodata @8591 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8591 = 27.0f; -COMPILER_STRIP_GATE(0x8062E848, &lit_8591); -#pragma pop - -/* 8062E84C-8062E850 000218 0004+00 0/1 0/0 0/0 .rodata @8592 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8592 = -4.0f; -COMPILER_STRIP_GATE(0x8062E84C, &lit_8592); -#pragma pop - -/* 8062E850-8062E854 00021C 0004+00 0/1 0/0 0/0 .rodata @8823 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8823 = 14.0f; -COMPILER_STRIP_GATE(0x8062E850, &lit_8823); -#pragma pop - -/* 8062E854-8062E858 000220 0004+00 0/1 0/0 0/0 .rodata @8824 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8824 = 52.0f; -COMPILER_STRIP_GATE(0x8062E854, &lit_8824); -#pragma pop - -/* 8062E858-8062E85C 000224 0004+00 0/1 0/0 0/0 .rodata @8825 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8825 = 38.0f; -COMPILER_STRIP_GATE(0x8062E858, &lit_8825); -#pragma pop - -/* 8062E85C-8062E860 000228 0004+00 0/1 0/0 0/0 .rodata @8826 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8826 = 53.0f; -COMPILER_STRIP_GATE(0x8062E85C, &lit_8826); -#pragma pop - -/* 8062E860-8062E864 00022C 0004+00 0/1 0/0 0/0 .rodata @8827 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8827 = 41.0f; -COMPILER_STRIP_GATE(0x8062E860, &lit_8827); -#pragma pop - /* 806292F8-80629D20 00A7F8 0A28+00 1/1 0/0 0/0 .text executeAttackL__8daB_TN_cFv */ void daB_TN_c::executeAttackL() { - // NONMATCHING + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this); + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); + + speedF = 0.0f; + current.angle.y = shape_angle.y; + + switch (mActionMode2) { + case 0: + case 20: + case 10: + field_0xa6c = 0; + field_0xa9b = mActionMode2; + + if (daPy_getPlayerActorClass()->checkNowWolf()) { + field_0xa70 = l_HIO.field_0x10; + } else { + if (field_0xaa5 == 0) { + field_0xa70 = l_HIO.field_0x14; + } else { + field_0xa70 = l_HIO.field_0x18; + } + } + + if (mPlayerDistance < 350.0f) { + if (field_0xa9b == 20) { + mActionMode2 = 4; + setBck(42, 2, 3.0f, 1.0f); + field_0xa6c = 3; + } else { + mActionMode2 = 2; + setBck(21, 0, 3.0f, 1.0f); + } + } else { + if (field_0xa9b == 20 || field_0xa9b == 10) { + mActionMode2 = 3; + setBck(42, 2, 3.0f, 1.0f); + if (field_0xa9b == 10) { + field_0xa6c = 5; + } else { + field_0xa6c = 10; + } + } else { + mActionMode2 = 1; + setBck(20, 0, 3.0f, 1.0f); + } + } + + mWalkDir = 0; + break; + + case 11: + field_0xa9b = mActionMode2; + if (daPy_getPlayerActorClass()->checkNowWolf()) { + field_0xa70 = l_HIO.field_0x10; + } else { + if (field_0xaa5 == 0) { + field_0xa70 = l_HIO.field_0x14; + } else { + field_0xa70 = l_HIO.field_0x18; + } + } + + if (cM_rnd() < 0.5f) { + mActionMode2 = 2; + setBck(21, 0, 10.0f, 1.0f); + } else { + mActionMode2 = 1; + setBck(20, 0, 7.0f, 1.0f); + } + + mWalkDir = 0; + return; + + case 1: + if (mpModelMorf2->checkFrame(7.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_S_TRST, 0, -1); + } + + if (mpModelMorf2->checkFrame(8.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_THRUST, -1); + } + + if (mpModelMorf2->checkFrame(10.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_L, 0, -1); + } + + if (mpModelMorf2->checkFrame(15.0f)) { + mActionMode2 = 101; + field_0xa6c = l_HIO.field_0x28; + mpModelMorf2->setPlaySpeed(0.0f); + } + + case 101: + if (field_0xa9b != 0 && mpModelMorf2->getFrame() < 8.0f) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x800, 16); + } + + if (mpModelMorf2->checkFrame(35.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->checkFrame(7.0f)) { + setSwordAtBit(1); + } else if (mpModelMorf2->checkFrame(14.0f)) { + setSwordAtBit(0); + } + + if (mpModelMorf2->checkFrame(8.0f)) { + field_0xa91 = 0; + } else if (mpModelMorf2->checkFrame(30.0f)) { + field_0xa91 = 1; + } + + if (mActionMode2 == 101 && field_0xa6c == 0) { + mpModelMorf2->setPlaySpeed(1.0f); + if (mpModelMorf2->isStop()) { + setActionMode(9, 0); + } + } + break; + + case 2: + if (field_0xa9b != 0) { + if (mpModelMorf2->checkFrame(40.0f)) { + mActionMode2 = 102; + field_0xa6c = l_HIO.field_0x2c; + mpModelMorf2->setPlaySpeed(0.0f); + } + } else { + mActionMode2 = 102; + } + // fallthrough + case 102: + if (mpModelMorf2->checkFrame(14.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_V_2_SWD_1, 0, -1); + } else if (mpModelMorf2->checkFrame(15.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_S, 0, -1); + } else if (mpModelMorf2->checkFrame(25.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_2_SWD_2, -1); + } else if (mpModelMorf2->checkFrame(26.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_SWD_S, 0, -1); + } else if (mpModelMorf2->checkFrame(28.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_L, 0, -1); + } else if (mpModelMorf2->checkFrame(52.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mWalkDir != 0 && mpModelMorf2->getFrame() < 10.0f) { + speedF = 10.0f; + } + + if (mpModelMorf2->getFrame() < 20.0f) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 8, 0x400, 16); + } + + if (mpModelMorf2->checkFrame(13.0f)) { + setSwordAtBit(1); + setSwordAtBreak(0); + } else if (mpModelMorf2->checkFrame(38.0f)) { + setSwordAtBit(0); + setSwordAtBreak(1); + } + + if (field_0xa9b == 0) { + if (mpModelMorf2->checkFrame(20.0f)) { + field_0xa91 = 0; + } else if (mpModelMorf2->checkFrame(53.0f)) { + field_0xa91 = 1; + } + } + + if (field_0xa9b == 0 && mPlayerDistance < 800.0f && daPy_getPlayerActorClass()->getDamageWaitTimer() == 0) { + if (mpModelMorf2->checkFrame(30.0f)) { + mWalkDir = 10; + } + + if (mpModelMorf2->checkFrame(41.0f) && mWalkDir == 10) { + setBck(20, 0, 5.0f, 1.0f); + setSwordAtBit(0); + setSwordAtBreak(1); + mActionMode2 = 1; + } + } + + if (mActionMode2 != 102) { + return; + } + + if (field_0xa6c != 0) { + return; + } + + mpModelMorf2->setPlaySpeed(1.0f); + if (!mpModelMorf2->isStop()) { + return; + } + + setActionMode(9, 0); + return; + + case 3: + if (field_0xa6c != 0) { + return; + } + + mActionMode2 = 1; + setBck(20, 0, 3.0f, 1.0f); + return; + + case 4: + if (field_0xa6c != 0) { + return; + } + + mActionMode2 = 2; + setBck(21, 0, 3.0f, 1.0f); + return; + } } -/* ############################################################################################## */ -/* 8062E864-8062E868 000230 0004+00 0/2 0/0 0/0 .rodata @8895 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8895 = 12.0f; -COMPILER_STRIP_GATE(0x8062E864, &lit_8895); -#pragma pop - -/* 80629D20-80629FB0 00B220 0290+00 1/1 0/0 0/0 .text executeAttackShieldL__8daB_TN_cFv - */ +/* 80629D20-80629FB0 00B220 0290+00 1/1 0/0 0/0 .text executeAttackShieldL__8daB_TN_cFv */ void daB_TN_c::executeAttackShieldL() { - // NONMATCHING + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this); + fopAcM_searchPlayerDistance(this); + + switch (mActionMode2) { + case 10: + case 0: + field_0xa9b = mActionMode2; + if (daPy_getPlayerActorClass()->checkNowWolf()) { + field_0xa70 = l_HIO.field_0x10; + } else { + if (field_0xaa5 == 0) { + field_0xa70 = l_HIO.field_0x14; + } else { + field_0xa70 = l_HIO.field_0x18; + } + } + + speedF = 0.0f; + setBck(22, 0, 3.0f, 1.0f); + mActionMode2 = 1; + break; + + case 1: + if (mpModelMorf2->checkFrame(8.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_KICK, -1); + } + + if (mpModelMorf2->checkFrame(26.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->getFrame() < 10.0f) { + cLib_addCalcAngleS(&shape_angle.y, mPlayerAngleY, 4, 0x800, 16); + } + + if (mpModelMorf2->checkFrame(8.0f)) { + field_0x3618.OnAtSetBit(); + } + + if (mpModelMorf2->checkFrame(12.0f)) { + field_0x3618.OffAtSetBit(); + } + + if (mpModelMorf2->isStop()) { + if (checkAttackAble() && checkNormalAttackAble()) { + setActionMode(10, 20); + } else { + setActionMode(9, 0); + } + } + break; + } } /* 80629FB0-8062A3D0 00B4B0 0420+00 1/1 0/0 0/0 .text executeGuardL__8daB_TN_cFv */ void daB_TN_c::executeGuardL() { - // NONMATCHING -} + daPy_py_c* player = daPy_getPlayerActorClass(); + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this) - shape_angle.y; + f32 mPlayerDistance = fopAcM_searchPlayerDistance(this); -/* ############################################################################################## */ -/* 8062E868-8062E86C 000234 0004+00 0/1 0/0 0/0 .rodata @9070 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9070 = 32.0f; -COMPILER_STRIP_GATE(0x8062E868, &lit_9070); -#pragma pop + switch (mActionMode2) { + case 0: + case 11: + case 10: + setSwordAtBit(0); + setSwordAtBreak(1); + field_0x3618.OffAtSetBit(); + speedF = 0.0f; + + if (mActionMode2 == 0) { + field_0xa91 = 1; + + u32 mCutType = getCutType(); + if ((mCutType & 16) != 0) { + setBck(28, 0, 3.0f, 1.0f); + } else if ((mCutType & 32) != 0) { + setBck(29, 0, 3.0f, 1.0f); + } else if (cM_rnd() < 0.5f) { + setBck(28, 0, 3.0f, 1.0f); + } else { + setBck(29, 0, 3.0f, 1.0f); + } + + speedF = 0.0f; + mActionMode2 = 1; + } else { + if (mActionMode2 == 11) { + mActionMode2 = 3; + } else { + mActionMode2 = 2; + } + + field_0xa91 = 0; + setBck(26, 0, 3.0f, 1.0f); + speedF = 17.0f; + } + + if (field_0xaa7 != 0) { + shape_angle.y = fopAcM_searchPlayerAngleY(this); + } else { + cLib_chaseAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 0x2000); + } + + current.angle.y = shape_angle.y + 0x8000; + break; + + case 1: + field_0xa91 = 0; + + if (player->getCutType() != daPy_py_c::CUT_TYPE_HEAD_JUMP && abs(mPlayerAngleY) < 0x3000) { + field_0xa91 = 1; + } + + cLib_chaseF(&speedF, 0.0f, 1.0f); + + if (!mpModelMorf2->isStop()) { + break; + } + + if (player->getCutType() == daPy_py_c::CUT_TYPE_HEAD_JUMP) { + break; + } + + setActionMode(9, 0); + break; + + case 2: + case 3: + cLib_chaseF(&speedF, 0.0f, 1.0f); + if (abs(mPlayerAngleY) < 0x3000) { + field_0xa91 = 1; + } else { + field_0xa91 = 0; + } + + if (mpModelMorf2->checkFrame(4.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_PULL_OUT, -1); + } + + if (mpModelMorf2->checkFrame(37.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mActionMode2 == 3) { + if (!mpModelMorf2->checkFrame(15.0f)) { + break; + } + + field_0xa91 = 1; + if (checkAttackAble() && mPlayerDistance < 200.0f) { + setActionMode(11, 0); + break; + } + + setActionMode(10, 11); + break; + } + + if (!mpModelMorf2->isStop()) { + break; + } + + setActionMode(9, 0); + break; + } +} /* 8062A3D0-8062A71C 00B8D0 034C+00 1/1 0/0 0/0 .text executeDamageL__8daB_TN_cFv */ void daB_TN_c::executeDamageL() { - // NONMATCHING + s16 mPlayerAngleY = fopAcM_searchPlayerAngleY(this); + daPy_py_c* player = daPy_getPlayerActorClass(); + + field_0xa91 = 0; + + if (field_0xaa5 == 0) { + if (daPy_py_c::checkNowWolf()) { + field_0xa91 = 1; + } + + if (field_0xa9f != 0 && player->getCutType() != daPy_py_c::CUT_TYPE_TURN_RIGHT && + player->getCutType() != daPy_py_c::CUT_TYPE_TURN_LEFT) { + field_0xa91 = 1; + } + + if (field_0xa80 == 0) { + field_0xa91 = 1; + field_0xaa7 = 30; + } + } else { + field_0xa91 = 0; + + if (field_0xa80 == 0) { + field_0xa91 = 1; + field_0xaa7 = 30; + } + + if (field_0xaa7 != 0 || player->checkNowWolf()) { + field_0xa91 = 1; + } + } + + switch (mActionMode2) { + case 0: + case 1: + setSwordAtBit(0); + setSwordAtBit(0); + setSwordAtBreak(1); + field_0x3618.OffAtSetBit(); + + if (mActionMode2 == 0) { + setBck(23, 0, 3.0f, 1.0f); + } else { + setBck(24, 0, 3.0f, 1.0f); + } + + mSound.startCreatureVoice(Z2SE_EN_TN_V_DMG, -1); + speedF = 0.0f; + mActionMode2 += 2; + + cLib_chaseAngleS(&shape_angle.y, mPlayerAngleY, 0x1800); + + if (field_0xaa5 == 1 && field_0xa9f != 0) { + field_0xa91 = 1; + field_0xaa7 = 40; + } + break; + + case 2: + case 3: + if (mpModelMorf2->checkFrame(3.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mActionMode2 == 2) { + if (mpModelMorf2->checkFrame(32.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + } else if (mpModelMorf2->checkFrame(35.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->isStop()) { + setActionMode(9, 0); + field_0xa91 = 1; + } + } + } /* 8062A71C-8062A950 00BC1C 0234+00 1/1 0/0 0/0 .text executeYoroke__8daB_TN_cFv */ void daB_TN_c::executeYoroke() { - // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + + switch (mActionMode2) { + case 0: + case 1: + if (mActionMode2 == 0) { + setBck(27, 0, 3.0f, 1.0f); + } else { + setBck(27, 0, 3.0f, 1.0f); + } + + mActionMode2 = 10; + setSwordAtBit(0); + setSwordAtBreak(1); + field_0x3618.OffAtSetBit(); + field_0xa91 = 0; + speedF = 0.0f; + field_0xaab = 0; + + if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) { + field_0xaab = 1; + } + // fallthrough + case 10: + if (field_0xaab == 1) { + if (!player->checkCutJumpMode()) { + field_0xaab = 2; + } + } else if (field_0xaab == 2 && player->checkCutJumpMode() && !player->checkCutJumpCancelTurn() && + fopAcM_searchPlayerDistance(this) < 350.0f) { + setActionMode(9, 0); + if (player->speedF < 28.0f) { + initChaseL(6); + break; + } + + if ((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y) < 0) { + initChaseL(14); + } else { + initChaseL(11); + } + + field_0xa84 = 10; + break; + } + + if (mpModelMorf2->isStop()) { + setActionMode(9, 0); + field_0xa91 = 1; + } + } } -/* ############################################################################################## */ -/* 8062E86C-8062E870 000238 0004+00 0/2 0/0 0/0 .rodata @9401 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9401 = -5.0f; -COMPILER_STRIP_GATE(0x8062E86C, &lit_9401); -#pragma pop - -/* 8062E870-8062E874 00023C 0004+00 0/1 0/0 0/0 .rodata @9402 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9402 = -217.0f; -COMPILER_STRIP_GATE(0x8062E870, &lit_9402); -#pragma pop - -/* 8062E874-8062E878 000240 0004+00 0/1 0/0 0/0 .rodata @9403 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9403 = -61.0f; -COMPILER_STRIP_GATE(0x8062E874, &lit_9403); -#pragma pop - -/* 8062E878-8062E87C 000244 0004+00 0/1 0/0 0/0 .rodata @9404 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9404 = 212.0f; -COMPILER_STRIP_GATE(0x8062E878, &lit_9404); -#pragma pop - -/* 8062E87C-8062E880 000248 0004+00 0/1 0/0 0/0 .rodata @9405 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9405 = 94.0f; -COMPILER_STRIP_GATE(0x8062E87C, &lit_9405); -#pragma pop - -/* 8062E880-8062E884 00024C 0004+00 0/1 0/0 0/0 .rodata @9406 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9406 = 103.0f; -COMPILER_STRIP_GATE(0x8062E880, &lit_9406); -#pragma pop - -/* 8062E884-8062E888 000250 0004+00 0/1 0/0 0/0 .rodata @9407 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9407 = 121.0f; -COMPILER_STRIP_GATE(0x8062E884, &lit_9407); -#pragma pop - -/* 8062E888-8062E88C 000254 0004+00 0/1 0/0 0/0 .rodata @9408 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9408 = 147.0f; -COMPILER_STRIP_GATE(0x8062E888, &lit_9408); -#pragma pop - -/* 8062E88C-8062E890 000258 0004+00 0/1 0/0 0/0 .rodata @9409 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9409 = 168.0f; -COMPILER_STRIP_GATE(0x8062E88C, &lit_9409); -#pragma pop - -/* 8062E890-8062E894 00025C 0004+00 0/1 0/0 0/0 .rodata @9410 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9410 = 289.0f; -COMPILER_STRIP_GATE(0x8062E890, &lit_9410); -#pragma pop - -/* 8062E894-8062E898 000260 0004+00 0/1 0/0 0/0 .rodata @9411 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9411 = 312.0f; -COMPILER_STRIP_GATE(0x8062E894, &lit_9411); -#pragma pop - -/* 8062E898-8062E89C 000264 0004+00 0/3 0/0 0/0 .rodata @9412 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9412 = -50.0f; -COMPILER_STRIP_GATE(0x8062E898, &lit_9412); -#pragma pop - /* 8062A950-8062B344 00BE50 09F4+00 1/1 0/0 0/0 .text executeEnding__8daB_TN_cFv */ void daB_TN_c::executeEnding() { // NONMATCHING -} + daPy_py_c* player = daPy_getPlayerActorClass(); + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + cXyz sp1c, sp28; -/* ############################################################################################## */ -/* 8062E89C-8062E8A0 000268 0004+00 0/1 0/0 0/0 .rodata @9502 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9502 = 68.0f; -COMPILER_STRIP_GATE(0x8062E89C, &lit_9502); -#pragma pop + switch (mActionMode2) { + case 0: + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xffff, 0); + eventInfo.onCondition(2); + return; + } + + Z2GetAudioMgr()->subBgmStop(); + + if (field_0xaa4 != 0xff) { + dComIfGs_onSwitch(field_0xaa4, fopAcM_GetRoomNo(this)); + } + + camera->mCamera.Stop(); + camera->mCamera.SetTrimSize(3); + + setBck(25, 0, 3.0f, 1.0f); + mSound.startCreatureVoice(Z2SE_EN_TN_V_DMG_2, -1); + mActionMode2 = 100; + speedF = 0.0f; + field_0xa93 = 0; + + for (int i = 0; i < 16; i++) { + if (i != 15) { + field_0x9fc[i] = 7; + } + } + + mCamFovY = 55.0f; + field_0x724 = 450.0f; + field_0x720 = 0x1000; + mCamCenter.set(-5.0f, -217.0f, -61.0f); + mCamEye.set(field_0x724 * cM_ssin(field_0x720), -350.0f, field_0x724 * cM_scos(field_0x720)); + player->changeOriginalDemo(); + sp1c.set(-100.0f, -400.0f, 550.0f); + player->setPlayerPosAndAngle(&sp1c, 0x7000, 0); + player->changeDemoMode(4, 1, 0, 0); + dComIfGs_onStageMiddleBoss(); + return; + + case 100: + default: + if (mActionMode2 == 100) { + current.angle.y = 0; + shape_angle.y = 0; + current.pos.set(0.0f, -400.0f, 0.0f); + mActionMode2 = 1; + } else { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&mCamCenter); + } + + mCamEye.set(field_0x724 * cM_ssin(field_0x720), -350.0f, field_0x724 * cM_scos(field_0x720)); + cLib_addCalcAngleS2(&field_0x720, (s16)0xfffff000, 8, 24); + + if (mActionMode2 == 1) { + if (mpModelMorf2->checkFrame(212.0f)) { + field_0x9fc[15] = 2; + } + + if (mpModelMorf2->checkFrame(6.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(29.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_ZEIZEI, -1); + } + + if (mpModelMorf2->checkFrame(94.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_KURUSI, -1); + } + + if (mpModelMorf2->checkFrame(103.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->checkFrame(121.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(147.0f)) { + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M2, 0, -1); + } + + if (mpModelMorf2->checkFrame(168.0f)) { + mSound.startCreatureVoice(Z2SE_EN_TN_V_DEAD, -1); + } + + if (mpModelMorf2->checkFrame(289.0f)) { + dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f)); + mSound.startCreatureSound(Z2SE_EN_TN_HIZA, 0, -1); + } + + if (mpModelMorf2->checkFrame(312.0f)) { + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); + mSound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1); + } + + if (mpModelMorf2->isStop()) { + mActionMode2 = 2; + field_0xa6c = 60; + } + } else if (field_0xa6c == 0) { + mActionMode2 = 3; + field_0xa6c = 60; + } + break; + + case 3: + if (field_0xa6c < 36) { + cLib_chaseF(&field_0x728, -50.0f, 0.3f); + } + + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&sp28); + sp28.x += 100.0f; + cLib_addCalcPos2(&mCamCenter, sp28, 0.1f, 2.0f); + sp28.set(-350.0f, -250.0f, 700.0f); + cLib_addCalcPos2(&mCamEye, sp28, 0.1f, 5.0f); + + if (field_0xa6c == 0) { + if (daPy_py_c::checkNowWolf()) { + player->changeDemoMode(1, 0, 0, 0); + } else { + player->changeDemoMode(30, 0, 0, 0); + } + + field_0xa6c = 54; + mActionMode2 = 4; + } + break; + + case 4: + cLib_chaseF(&field_0x728, -50.0f, 0.3f); + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&sp28); + cLib_addCalcPos2(&mCamCenter, sp28, 0.1f, 2.0f); + sp28.set(-350.0f, -250.0f, 700.0f); + cLib_addCalcPos2(&mCamEye, sp28, 0.1f, 5.0f); + + if (field_0xa6c == 0) { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&sp28); + fopAcM_createDisappear(this, &sp28, 10, 0, 0xff); + field_0xa9e = 1; + mActionMode2 = 5; + field_0xa6c = 65; + } + break; + + case 5: + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&sp28); + sp28.x += 100.0f; + cLib_addCalcPos2(&mCamCenter, sp28, 0.1f, 2.0f); + sp28.set(-350.0f, -250.0f, 700.0f); + cLib_addCalcPos2(&mCamEye, sp28, 0.1f, 5.0f); + + if (field_0xa6c == 0) { + camera->mCamera.Reset(mCamCenter, mCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); + fopAcM_delete(this); + } + } + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovY, 0); +} /* 8062B344-8062B6A8 00C844 0364+00 1/1 0/0 0/0 .text executeZakoEnding__8daB_TN_cFv */ void daB_TN_c::executeZakoEnding() { - // NONMATCHING + cXyz sp20; + + switch (mActionMode2) { + case 0: + attention_info.flags = 0; + setBck(4, 0, 3.0f, 1.0f); + mSound.startCreatureVoice(Z2SE_EN_TN_V_DEAD2, -1); + mActionMode2 = 1; + speedF = 0.0f; + field_0xa93 = 0; + + if (field_0xaad != 0) { + Z2GetAudioMgr()->subBgmStop(); + } + // fallthrough + case 1: + if (mpModelMorf2->checkFrame(3.0f)) { + field_0x9fc[15] = 2; + mSound.startCreatureSound(Z2SE_EN_TN_FOOT_M1, 0, -1); + } + + if (mpModelMorf2->checkFrame(33.0f)) { + dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f)); + mSound.startCreatureSound(Z2SE_EN_TN_HIZA, 0, -1); + } + + if (mpModelMorf2->checkFrame(68.0f)) { + dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); + mSound.startCreatureSound(Z2SE_CM_BODYFALL_M, 0, -1); + } + + cLib_chaseF(&field_0x728, -50.0f, 0.3f); + + if (mpModelMorf2->isStop()) { + mActionMode2 = 2; + field_0xa6c = 10; + } + break; + + case 2: + cLib_chaseF(&field_0x728, -50.0f, 0.3f); + + if (field_0xa6c == 0) { + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&sp20); + fopAcM_createDisappear(this, &sp20, 10, 0, 29); + + if (field_0xaad != 0) { + field_0xa6c = 60; + field_0xaac = 1; + mActionMode2 = 3; + } else { + if (field_0xaa4 != 0xff) { + dComIfGs_onSwitch(field_0xaa4, fopAcM_GetRoomNo(this)); + } + + fopAcM_delete(this); + } + } + break; + + case 3: + if (field_0xa6c == 0) { + if (field_0xaa4 != 0xff) { + dComIfGs_onSwitch(field_0xaa4, fopAcM_GetRoomNo(this)); + } + + fopAcM_delete(this); + } + } } /* 8062B6A8-8062BA5C 00CBA8 03B4+00 2/1 0/0 0/0 .text action__8daB_TN_cFv */ void daB_TN_c::action() { // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + + if (m_attack_timer != 0) { + m_attack_timer--; + } + + if (field_0xaa5 == 0 || !player->checkGuardBreakMode()) { + m_attack_tn = 0; + } + + if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) { + field_0xaaa = 30; + } + + damage_check(); + field_0x700 = l_HIO.field_0x24; + field_0xa94 = 0; + field_0xaa1 = 0; + field_0xaa0 = 0; + attention_info.flags &= 0xffdfffff; + int iVar1 = 1; + + switch (mActionMode1) { + case 0: + executeRoomDemo(); + iVar1 = 0; + break; + + case 1: + executeOpening(); + iVar1 = 0; + break; + + case 2: + executeWaitH(); + if (field_0xaa5 == 1) { + iVar1 = 0; + } + break; + + case 3: + executeChaseH(); + break; + + case 4: + executeAttackH(); + break; + + case 5: + executeAttackShieldH(); + break; + + case 6: + executeGuardH(); + break; + + case 7: + executeDamageH(); + break; + + case 8: + if (field_0xaa5 == 0) { + executeChangeDemo(); + } else { + executeZakoChangeDemo(); + } + break; + + case 9: + executeChaseL(); + break; + + case 10: + executeAttackL(); + break; + + case 11: + executeAttackShieldL(); + break; + + case 12: + executeGuardL(); + break; + + case 13: + executeDamageL(); + break; + + case 15: + executeYoroke(); + break; + + case 14: + if (field_0xaa5 == 0) { + executeEnding(); + } else { + executeZakoEnding(); + } + break; + } + + if (field_0xaa5 == 0) { + if (iVar1) { + player->onBossRoomWait(); + } + + switch (field_0xaae) { + case 0: + mBlend = 1.0f; + dKy_custom_colset(0, 0, mBlend); + break; + + case 1: + cLib_chaseF(&mBlend, 1.0f, 0.003f); + dKy_custom_colset(0, 1, mBlend); + break; + + case 2: + cLib_chaseF(&mBlend, 1.0f, 0.01f); + dKy_custom_colset(1, 2, mBlend); + } + } else { + mSound.setLinkSearch(iVar1); + } + + calcNeckAngle(); + calcWaistAngle(); + setBodyShield(); + calcPartMove(); + fopAcM_posMoveF(this, &field_0x2e50); + mAcch.CrrPos(dComIfG_Bgsp()); + + cXyz sp38(eyePos); + sp38.y += 300.0f; + setHeadLockPos(&sp38); + + int iVar2 = 13 - field_0xa78; + if (iVar2 < 0) { + iVar2 = 0; + } + + if (iVar2 > 13) { + iVar2 = 13; + } + + mpModelMorf2->play(iVar2 + 10, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mpModelMorf1->play(iVar2 + 10, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); } -/* ############################################################################################## */ -/* 8062E8A0-8062E8A4 00026C 0004+00 0/0 0/0 0/0 .rodata @9572 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_9572 = 0x3B449BA6; -COMPILER_STRIP_GATE(0x8062E8A0, &lit_9572); -#pragma pop - -/* 8062E8A4-8062E8A8 000270 0004+00 0/1 0/0 0/0 .rodata @9689 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_9689 = 0x414A6666; -COMPILER_STRIP_GATE(0x8062E8A4, &lit_9689); -#pragma pop - -/* 8062E8A8-8062E8AC 000274 0004+00 0/1 0/0 0/0 .rodata @9690 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_9690 = 0x4157851F; -COMPILER_STRIP_GATE(0x8062E8A8, &lit_9690); -#pragma pop - -/* 8062E8AC-8062E8B0 000278 0004+00 0/1 0/0 0/0 .rodata @9691 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_9691 = 0x41A08F5C; -COMPILER_STRIP_GATE(0x8062E8AC, &lit_9691); -#pragma pop - /* 8062BA5C-8062BDCC 00CF5C 0370+00 1/1 0/0 0/0 .text mtx_set__8daB_TN_cFv */ void daB_TN_c::mtx_set() { - // NONMATCHING + J3DModel* model2; + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(l_HIO.mScale, l_HIO.mScale, l_HIO.mScale); + J3DModel* model1 = mpModelMorf2->getModel(); + model1->setBaseTRMtx(mDoMtx_stack_c::get()); + mpModelMorf2->modelCalc(); + + for (int i = 0; i < 16; i++) { + if (i == 15) { + model2 = mpModelMorf1->getModel(); + } else { + model2 = mModels[i]; + } + + switch (field_0x9fc[i]) { + case 0: + mDoMtx_stack_c::copy(model1->getAnmMtx(tn_part_joint[i])); + + if (field_0xa60 != 0 && i <= 11 && i != 5 && i != 4) { + int iVar2 = (s16)(field_0xa60 * 96); + field_0xa64 += 1280; + mDoMtx_stack_c::ZXYrotM(iVar2 * cM_ssin(field_0xa64 + (i << 13)), iVar2 * cM_ssin(field_0xa64 + (i * 0x6000)), + iVar2 * cM_ssin(field_0xa64 - (i << 13))); + } + + model2->setBaseTRMtx(mDoMtx_stack_c::get()); + break; + + case 1: + if (i == 15) { + mDoMtx_stack_c::copy(model1->getAnmMtx(15)); + mDoMtx_stack_c::transM(12.65f, 13.47f, 20.07f); + mDoMtx_stack_c::ZXYrotM(cM_deg2s(-168.0f), cM_deg2s(-42.715f), cM_deg2s(77.897)); + model2->setBaseTRMtx(mDoMtx_stack_c::get()); + } else { + model2->setBaseTRMtx(model1->getAnmMtx(15)); + } + break; + + case 2: + case 3: + case 4: + case 5: + if (field_0xaa5 == 1 && i == 5) { + mDoMtx_stack_c::copy(mModels[4]->getBaseTRMtx()); + } else { + mDoMtx_stack_c::transS(field_0x75c[i]); + + if (i == 4) { + mDoMtx_stack_c::YrotM(field_0x99c[i].y); + mDoMtx_stack_c::ZrotM(field_0x99c[i].z); + mDoMtx_stack_c::XrotM(field_0x99c[i].x); + } else { + mDoMtx_stack_c::ZXYrotM(field_0x99c[i]); + } + + mDoMtx_stack_c::transM(offset_part[i]); + mDoMtx_stack_c::scaleM(l_HIO.mScale, l_HIO.mScale, l_HIO.mScale); + } + + model2->setBaseTRMtx(mDoMtx_stack_c::get()); + } + } + + mpModelMorf1->modelCalc(); + + if (field_0xa90 != 0) { + field_0x648->setBaseTRMtx(field_0x72c); + } } -/* ############################################################################################## */ -/* 8062E8B0-8062E8B4 00027C 0004+00 0/1 0/0 0/0 .rodata @9919 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9919 = 65.0f; -COMPILER_STRIP_GATE(0x8062E8B0, &lit_9919); -#pragma pop - -/* 8062E8B4-8062E8B8 000280 0004+00 0/2 0/0 0/0 .rodata @9920 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9920 = -20.0f; -COMPILER_STRIP_GATE(0x8062E8B4, &lit_9920); -#pragma pop - -/* 8062E8B8-8062E8BC 000284 0004+00 0/1 0/0 0/0 .rodata @9921 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9921 = -6.0f; -COMPILER_STRIP_GATE(0x8062E8B8, &lit_9921); -#pragma pop - -/* 8062E8BC-8062E8C0 000288 0004+00 0/1 0/0 0/0 .rodata @9922 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9922 = -10.0f; -COMPILER_STRIP_GATE(0x8062E8BC, &lit_9922); -#pragma pop - /* 8062BDCC-8062C5B4 00D2CC 07E8+00 1/1 0/0 0/0 .text cc_set__8daB_TN_cFv */ void daB_TN_c::cc_set() { // NONMATCHING + cXyz sp38; + + J3DModel* model = mpModelMorf2->getModel(); + mDoMtx_stack_c::copy(model->getAnmMtx(5)); + mDoMtx_stack_c::transM(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&eyePos); + attention_info.position = eyePos; + + if (mActionMode1 < 8) { + attention_info.position.y += 80.0f; + } else { + attention_info.position.y += 50.0f; + } + + if (field_0xa84 == 0) { + for (int i = 0; i < 3; i++) { + switch (i) { + case 0: + mDoMtx_stack_c::copy(model->getAnmMtx(5)); + + if (mActionMode1 < 8) { + mDoMtx_stack_c::transM(30.0f, 0.0f, 0.0f); + field_0x2ec8[0].SetR(40.0f); + field_0x3270[0].SetR(40.0f); + } else { + mDoMtx_stack_c::transM(15.0f, 0.0f, 0.0f); + field_0x2ec8[0].SetR(30.0f); + field_0x3270[0].SetR(30.0f); + } + break; + + case 1: + field_0x2ec8[1].SetR(65.0f); + field_0x3270[1].SetR(65.0f); + mDoMtx_stack_c::copy(model->getAnmMtx(3)); + break; + + case 2: + field_0x2ec8[2].SetR(55.0f); + field_0x3270[2].SetR(55.0f); + mDoMtx_stack_c::copy(model->getAnmMtx(18)); + mDoMtx_stack_c::transM(30.0f, 0.0f, 0.0f); + break; + } + + mDoMtx_stack_c::multVecZero(&sp38); + field_0x2ec8[i].SetC(sp38); + field_0x3270[i].SetC(sp38); + dComIfG_Ccsp()->Set(&field_0x2ec8[i]); + dComIfG_Ccsp()->Set(&field_0x3270[i]); + } + } else { + for (int i = 0; i < 3; i++) { + field_0x2ec8[i].ClrTgHit(); + field_0x3270[i].ClrTgHit(); + } + } + + if (mActionMode1 < 8) { + sp38 = current.pos; + sp38.y += 30.0f; + field_0x3d74.SetC(sp38); + field_0x3d74.SetR(60.0f); + dComIfG_Ccsp()->Set(&field_0x3d74); + } + + if (field_0x9fc[13] == 1) { + mDoMtx_stack_c::copy(model->getAnmMtx(15)); + mDoMtx_stack_c::transM(10.0f, 15.0f, -20.0f); + + for (int i = 0; i < 4; i++) { + if (field_0xaa5 == 0) { + mDoMtx_stack_c::transM(12.0f, -6.0f, 36.0f); + } else { + mDoMtx_stack_c::transM(9.0f, -4.0f, 27.0f); + } + + mDoMtx_stack_c::multVecZero(&sp38); + mSwordSphs[i].SetC(sp38); + if (mActionMode2 == 1) { + mSwordSphs[i].SetR(70.0f); + } else { + mSwordSphs[i].SetR(60.0f); + } + + dComIfG_Ccsp()->Set(&mSwordSphs[i]); + } + + if (mActionMode2 == 1) { + mCps.cM3dGCps::Set(field_0x3eac, sp38, 70.0f); + } else { + mCps.cM3dGCps::Set(field_0x3eac, sp38, 60.0f); + } + + field_0x3eac = sp38; + dComIfG_Ccsp()->Set(&mCps); + } else if (field_0x9fc[15] == 1) { + mDoMtx_stack_c::copy(mpModelMorf1->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::transM(-50.0f, 0.0f, 0.0f); + + for (int i = 0; i < 4; i++) { + mDoMtx_stack_c::transM(40.0f, 0.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&sp38); + mSwordSphs[i].SetC(sp38); + mSwordSphs[i].SetR(45.0f); + dComIfG_Ccsp()->Set(&mSwordSphs[i]); + } + + mCps.cM3dGCps::Set(field_0x3eac, sp38, 45.0f); + field_0x3eac = sp38; + dComIfG_Ccsp()->Set(&mCps); + } else if (field_0x9fc[13] == 3) { + mDoMtx_stack_c::copy(mModels[13]->getBaseTRMtx()); + + for (int i = 0; i < 4; i++) { + mDoMtx_stack_c::transM(20.0f, 0.0f, 40.0f); + mDoMtx_stack_c::multVecZero(&sp38); + mSwordSphs[i].SetC(sp38); + mSwordSphs[i].SetR(45.0f); + dComIfG_Ccsp()->Set(&mSwordSphs[i]); + } + + mCps.cM3dGCps::Set(field_0x3eac, sp38, 45.0f); + field_0x3eac = sp38; + dComIfG_Ccsp()->Set(&mCps); + } + + if (field_0x9fc[12] == 0) { + mDoMtx_stack_c::copy(model->getAnmMtx(9)); + mDoMtx_stack_c::transM(10.0f, -10.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&sp38); + field_0x3618.SetC(sp38); + + if (field_0x3618.ChkAtSet()) { + field_0x3618.SetR(70.0f); + } else { + if (field_0xaa0 == 0) { + field_0x3618.SetR(55.0f); + } else { + field_0x3618.SetR(30.0f); + } + } + + dComIfG_Ccsp()->Set(&field_0x3618); + } else if (!field_0x3618.ChkAtSet() || mActionMode1 < 9) { + field_0x3618.ClrTgHit(); + } else { + mDoMtx_stack_c::copy(model->getAnmMtx(24)); + mDoMtx_stack_c::multVecZero(&sp38); + field_0x3618.SetC(sp38); + field_0x3618.SetR(70.0f); + dComIfG_Ccsp()->Set(&field_0x3618); + } + + for (int i = 0; i < 13; i++) { + if (field_0x9fc[i] == 5) { + mDoMtx_stack_c::transS(field_0x75c[i]); + mDoMtx_stack_c::multVecZero(&sp38); + field_0x429c[i].SetC(sp38); + + if (i == 12) { + field_0x429c[i].SetR(50.0f); + } else { + field_0x429c[i].SetR(30.0f); + } + + dComIfG_Ccsp()->Set(&field_0x429c[i]); + } + } } -/* ############################################################################################## */ -/* 8062E8C0-8062E8C4 00028C 0004+00 1/1 0/0 0/0 .rodata @9978 */ -SECTION_RODATA static f32 const lit_9978 = 1.5f; -COMPILER_STRIP_GATE(0x8062E8C0, &lit_9978); - -/* 8062E8C4-8062E8CC 000290 0004+04 1/1 0/0 0/0 .rodata @9979 */ -SECTION_RODATA static f32 const lit_9979[1 + 1 /* padding */] = { - 11.0f / 5.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x8062E8C4, &lit_9979); - /* 8062C5B4-8062C7A0 00DAB4 01EC+00 1/1 0/0 0/0 .text execute__8daB_TN_cFv */ -void daB_TN_c::execute() { - // NONMATCHING +int daB_TN_c::execute() { + if (field_0xa6c != 0) { + field_0xa6c--; + } + + if (field_0xa68 != 0) { + field_0xa68--; + } + + if (field_0xa70 != 0) { + field_0xa70--; + } + + if (field_0xa7c != 0) { + field_0xa7c--; + } + + if (field_0xa80 != 0) { + field_0xa80--; + } + + if (field_0xa74 != 0) { + field_0xa74--; + } + + if (field_0xa84 != 0) { + field_0xa84--; + } + + if (field_0xa88 != 0) { + field_0xa88--; + if (field_0xa88 == 0) { + dComIfGp_getVibration().StopQuake(31); + } + } + + if (field_0xa60 != 0) { + field_0xa60--; + } + + if (field_0xaa7 != 0) { + field_0xaa7--; + } + + if (field_0xa90 != 0) { + field_0xa90--; + } + + if (field_0xaa9 != 0) { + field_0xaa9--; + } + + if (field_0xaaa != 0) { + field_0xaaa--; + } + + action(); + mtx_set(); + + if (field_0xaac != 0) { + return 1; + } + + cc_set(); + mDoMtx_stack_c::copy(mpModelMorf2->getModel()->getAnmMtx(18)); + cXyz sp1c, sp28; + mDoMtx_stack_c::multVecZero(&sp1c); + sp28.set(1.5f, 2.2f, 1.5f); + setMidnaBindEffect(this, &mSound, &sp1c, &sp28); + + + return 1; } /* 8062C7A0-8062C7C0 00DCA0 0020+00 2/1 0/0 0/0 .text daB_TN_Execute__FP8daB_TN_c */ -static void daB_TN_Execute(daB_TN_c* param_0) { - // NONMATCHING +static void daB_TN_Execute(daB_TN_c* i_this) { + i_this->execute(); } /* 8062C7C0-8062C7C8 00DCC0 0008+00 1/0 0/0 0/0 .text daB_TN_IsDelete__FP8daB_TN_c */ -static bool daB_TN_IsDelete(daB_TN_c* param_0) { - return true; +static int daB_TN_IsDelete(daB_TN_c* i_this) { + return 1; } /* 8062C7C8-8062C848 00DCC8 0080+00 1/1 0/0 0/0 .text _delete__8daB_TN_cFv */ -void daB_TN_c::_delete() { - // NONMATCHING +int daB_TN_c::_delete() { + dComIfG_resDelete(&mPhase1, "B_tn"); + dComIfG_resDelete(&mPhase2, field_0xab4); + if (field_0x562c != 0) { + struct_8062F01C = 0; + } + + if (heap) { + mSound.deleteObject(); + } + + return 1; } /* 8062C848-8062C868 00DD48 0020+00 1/0 0/0 0/0 .text daB_TN_Delete__FP8daB_TN_c */ -static void daB_TN_Delete(daB_TN_c* param_0) { - // NONMATCHING +static void daB_TN_Delete(daB_TN_c* i_this) { + i_this->_delete(); } -/* ############################################################################################## */ -/* 8062E8E8-8062E8E8 0002B4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8062E8ED = "B_tnp"; -SECTION_DEAD static char const* const stringBase_8062E8F3 = "B_tnp2"; -#pragma pop - /* 8062C868-8062CD10 00DD68 04A8+00 1/1 0/0 0/0 .text CreateHeap__8daB_TN_cFv */ -void daB_TN_c::CreateHeap() { +int daB_TN_c::CreateHeap() { // NONMATCHING -} + static int tn2_brk_index[3] = { + 25, 26, 27 + }; -/* 8062CD10-8062CD58 00E210 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING + J3DModelData* modelData; + + if (field_0xaa5 == 0) { + modelData = (J3DModelData*)dComIfG_getObjectRes("B_tnp", 3); + } else { + modelData = (J3DModelData*)dComIfG_getObjectRes("B_tnp2", 4); + } + + mpModelMorf2 = new mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("B_tn", 15), + 0, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mpModelMorf2 == NULL || mpModelMorf2->getModel() == NULL) { + return 0; + } + + if (field_0xaa5 == 1) { + mBrkAnm = new mDoExt_brkAnm(); + if (mBrkAnm == NULL) { + return 0; + } + + if (mBrkAnm->init(modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes(field_0xab4, 24), + 1, 2, 0.0f, 0, -1) == 0) { + return 0; + } + } + + J3DModel* model = mpModelMorf2->getModel(); + model->setUserArea((u32)this); + model->getModelData()->getJointNodePointer(5)->setCallBack(JointCallBack); + model->getModelData()->getJointNodePointer(1)->setCallBack(JointCallBack); + + int iVar4 = 0; + while (true) { + if (iVar4 == 13 && field_0xaa5 == 1 && field_0xaa6 == 1) { + if (field_0xaa5 == 1) { + s8 sVar1 = tn_model_brk_idx[iVar4]; + if (field_0xaa3 == 3) { + sVar1 = tn_model_brk_idx2[iVar4]; + } + + if (sVar1 == -1) { + mBrkAnms[iVar4] = new mDoExt_brkAnm(); + if (mBrkAnms[iVar4] == NULL) { + return 0; + } + + if (mBrkAnms[iVar4]->init(modelData, + (J3DAnmTevRegKey*)dComIfG_getObjectRes(field_0xab4, tn2_brk_index[iVar4]), + 1, 2, 0.0f, 0, -1) == 0) { + return 0; + } + } + } + } + + if (iVar4 > 14) { + modelData = (J3DModelData*)dComIfG_getObjectRes(field_0xab4, 19); + if (modelData == NULL) { /* Debug Stuff */ } + + mpModelMorf1 = new mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("B_tn", 39), + 0, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mpModelMorf1 == NULL || mpModelMorf1->getModel() == NULL) { + return 0; + } + + modelData = (J3DModelData*)dComIfG_getObjectRes("B_tn", 48); + if (modelData == NULL) { /* Debug Stuff */ } + + model = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + + mModels[iVar4] = model; + if (mModels[iVar4] == NULL) { + return 0; + } + + return 1; + } + + iVar4++; + } + + return 0; } /* 8062CD58-8062CD78 00E258 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { +static int useHeapInit(fopAc_ac_c* actor) { // NONMATCHING } @@ -2497,37 +5081,64 @@ SECTION_DEAD static char const* const stringBase_8062E8FA = "D_MN09"; #pragma pop /* 8062CD78-8062D2F0 00E278 0578+00 1/1 0/0 0/0 .text create__8daB_TN_cFv */ -void daB_TN_c::create() { +int daB_TN_c::create() { // NONMATCHING -} + fopAcM_SetupActor(this, daB_TN_c); -/* 8062D2F0-8062D624 00E7F0 0334+00 1/1 0/0 0/0 .text __ct__8daB_TN_cFv */ -daB_TN_c::daB_TN_c() { - // NONMATCHING -} + field_0xaa4 = fopAcM_GetParam(this); + field_0xaa5 = fopAcM_GetParam(this) >> 8; -/* 8062D624-8062D678 00EB24 0054+00 1/1 0/0 0/0 .text __ct__9dCcD_SttsFv */ -// dCcD_Stts::dCcD_Stts() { -extern "C" void __ct__9dCcD_SttsFv() { - // NONMATCHING -} + if (field_0xaa5 != 1) { + field_0xaa5 = 0; + } -/* 8062D678-8062D6FC 00EB78 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */ -// dCcD_Sph::dCcD_Sph() { -extern "C" void __ct__8dCcD_SphFv() { - // NONMATCHING -} + if (field_0xaa5 == 0) { + field_0xab4 = "B_tnp"; + if (dComIfGs_isStageMiddleBoss()) { + return cPhs_ERROR_e; + } + } else { + field_0xab4 = "B_tnp2"; + if (dComIfGs_isSwitch(field_0xaa4, fopAcM_GetRoomNo(this))) { + return cPhs_ERROR_e; + } + } -/* 8062D6FC-8062D78C 00EBFC 0090+00 1/1 0/0 0/0 .text __dt__9dCcD_SttsFv */ -// dCcD_Stts::~dCcD_Stts() { -extern "C" void __dt__9dCcD_SttsFv() { - // NONMATCHING -} + if (dComIfG_resLoad(&mPhase1, "B_tn") == cPhs_COMPLEATE_e && dComIfG_resLoad(&mPhase2, field_0xab4) == cPhs_COMPLEATE_e) { + field_0xaa3 = fopAcM_GetParam(this) >> 16; + if (field_0xaa3 > 4) { + field_0xaa4 = 4; + } -/* 8062D78C-8062D7E8 00EC8C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING + field_0xaa6 = fopAcM_GetParam(this) >> 24; + if (field_0xaa6 != 1) { + field_0xaa6 = 0; + } + + if (field_0xaa5 == 1) { + if (!fopAcM_entrySolidHeap(this, useHeapInit, 0xb940)) { + return cPhs_ERROR_e; + } + } else if (!fopAcM_entrySolidHeap(this, useHeapInit, 0xaa20)) { + return cPhs_ERROR_e; + } + + if (struct_8062F01C == 0) { + struct_8062F01C = 1; + field_0x562c = 1; + l_HIO.field_0x4 = -1; + } + + attention_info.flags = 4; + fopAcM_SetMtx(this, mpModelMorf2->getModel()->getBaseTRMtx()); + fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f); + + mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed, NULL, NULL); + mAcchCir.SetWall(60.0f, 300.0f); + health = 0x50; + field_0x560 = 0x50; + } } /* 8062D7E8-8062D83C 00ECE8 0054+00 1/1 0/0 0/0 .text __ct__12dBgS_ObjAcchFv */ @@ -2536,44 +5147,9 @@ extern "C" void __ct__12dBgS_ObjAcchFv() { // NONMATCHING } -/* 8062D83C-8062D8AC 00ED3C 0070+00 4/3 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8062D8AC-8062D91C 00EDAC 0070+00 2/1 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8062D91C-8062D920 00EE1C 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 8062D920-8062D924 00EE20 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() { -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - /* 8062D924-8062D944 00EE24 0020+00 1/0 0/0 0/0 .text daB_TN_Create__FP8daB_TN_c */ -static void daB_TN_Create(daB_TN_c* param_0) { - // NONMATCHING -} - -/* 8062D944-8062D98C 00EE44 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 8062D98C-8062D9D4 00EE8C 0048+00 2/1 0/0 0/0 .text __dt__12daB_TN_HIO_cFv */ -daB_TN_HIO_c::~daB_TN_HIO_c() { - // NONMATCHING +static int daB_TN_Create(daB_TN_c* i_this) { + return i_this->create(); } /* ############################################################################################## */ @@ -2617,209 +5193,31 @@ void __sinit_d_a_b_tn_cpp() { // NONMATCHING } -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8062D9D4, __sinit_d_a_b_tn_cpp); -#pragma pop +/* 8062EF10-8062EF30 -00001 0020+00 1/0 0/0 0/0 .data l_daB_TN_Method */ +static actor_method_class l_daB_TN_Method = { + (process_method_func)daB_TN_Create, + (process_method_func)daB_TN_Delete, + (process_method_func)daB_TN_Execute, + (process_method_func)daB_TN_IsDelete, + (process_method_func)daB_TN_Draw, +}; -/* 8062E16C-8062E174 00F66C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8062E16C() { - // NONMATCHING -} +/* 8062EF30-8062EF60 -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_TN */ +extern actor_process_profile_definition g_profile_B_TN = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_B_TN, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daB_TN_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 225, // mPriority + &l_daB_TN_Method, // sub_method + 0x00044000, // mStatus + fopAc_ENEMY_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; -/* 8062E174-8062E17C 00F674 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_8062E174() { - // NONMATCHING -} - -/* 8062E590-8062E5CC 00FA90 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* 8062E5CC-8062E608 00FACC 003C+00 2/2 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING -} - -/* 8062E608-8062E620 00FB08 0018+00 2/2 0/0 0/0 .text checkNowWolf__9daPy_py_cFv */ -// void daPy_py_c::checkNowWolf() { -extern "C" void checkNowWolf__9daPy_py_cFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8062F304-8062F308 00032C 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_8062F304[4]; -#pragma pop - -/* 8062F308-8062F30C 000330 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_8062F308[4]; -#pragma pop - -/* 8062F30C-8062F310 000334 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F30C[4]; -#pragma pop - -/* 8062F310-8062F314 000338 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F310[4]; -#pragma pop - -/* 8062F314-8062F318 00033C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8062F314[4]; -#pragma pop - -/* 8062F318-8062F31C 000340 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8062F318[4]; -#pragma pop - -/* 8062F31C-8062F320 000344 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_8062F31C[4]; -#pragma pop - -/* 8062F320-8062F324 000348 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8062F320[4]; -#pragma pop - -/* 8062F324-8062F328 00034C 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_8062F324[4]; -#pragma pop - -/* 8062F328-8062F32C 000350 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_8062F328[4]; -#pragma pop - -/* 8062F32C-8062F330 000354 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F32C[4]; -#pragma pop - -/* 8062F330-8062F334 000358 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F330[4]; -#pragma pop - -/* 8062F334-8062F338 00035C 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F334[4]; -#pragma pop - -/* 8062F338-8062F33C 000360 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8062F338[4]; -#pragma pop - -/* 8062F33C-8062F340 000364 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8062F33C[4]; -#pragma pop - -/* 8062F340-8062F344 000368 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_8062F340[4]; -#pragma pop - -/* 8062F344-8062F348 00036C 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_8062F344[4]; -#pragma pop - -/* 8062F348-8062F34C 000370 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_8062F348[4]; -#pragma pop - -/* 8062F34C-8062F350 000374 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_8062F34C[4]; -#pragma pop - -/* 8062F350-8062F354 000378 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F350[4]; -#pragma pop - -/* 8062F354-8062F358 00037C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_8062F354[4]; -#pragma pop - -/* 8062F358-8062F35C 000380 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8062F358[4]; -#pragma pop - -/* 8062F35C-8062F360 000384 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8062F35C[4]; -#pragma pop - -/* 8062F360-8062F364 000388 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_8062F360[4]; -#pragma pop - -/* 8062F364-8062F368 00038C 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_8062F364[4]; -#pragma pop - -/* 8062E8E8-8062E8E8 0002B4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES;