diff --git a/configure.py b/configure.py index bb7e0b89c44..048eb63c610 100755 --- a/configure.py +++ b/configure.py @@ -1744,7 +1744,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_e_sf"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_e_sg"), ActorRel(NonMatching, "d_a_e_sh"), - ActorRel(NonMatching, "d_a_e_sm"), + ActorRel(Equivalent, "d_a_e_sm"), # weak func order (setMidnaBindEffect) ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_e_sm2"), ActorRel(NonMatching, "d_a_e_st"), ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_e_st_line"), diff --git a/include/d/actor/d_a_arrow.h b/include/d/actor/d_a_arrow.h index cf98a32090b..8508fdb2275 100644 --- a/include/d/actor/d_a_arrow.h +++ b/include/d/actor/d_a_arrow.h @@ -97,6 +97,19 @@ public: NULL); } + BOOL changeActorControll() { + if (fopAcM_GetParam(this) == 2 || fopAcM_GetParam(this) == 1) { + fopAcM_SetParam(this, 6); + field_0x94e = -1; + + return TRUE; + } + + return FALSE; + } + + void setModelMatrix(MtxP mtx) { mpModel->setBaseTRMtx(mtx); } + private: /* 0x568 */ J3DModel* mpModel; /* 0x56C */ dBgS_ArrowLinChk field_0x56c; diff --git a/include/d/actor/d_a_e_sm.h b/include/d/actor/d_a_e_sm.h index e70a71451ed..bdaf211131c 100644 --- a/include/d/actor/d_a_e_sm.h +++ b/include/d/actor/d_a_e_sm.h @@ -1,18 +1,23 @@ #ifndef D_A_E_SM_H #define D_A_E_SM_H -#include "f_op/f_op_actor_mng.h" +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" +#include "f_op/f_op_actor_enemy.h" /** * @ingroup actors-enemies * @class daE_SM_c - * @brief ChuChu + * @brief Chu Worm * * @details * - */ +*/ + class daE_SM_c : public fopEn_enemy_c { +public: /* 80792260 */ void SetAnm(int, int, f32, f32); - /* 8079230C */ void Draw(); + /* 8079230C */ int Draw(); /* 807928A4 */ void Particle_Set(u16, cXyz, cXyz, csXyz); /* 80792914 */ void ArrowCheck(); /* 80792C20 */ void E_SM_Damage(); @@ -31,8 +36,8 @@ class daE_SM_c : public fopEn_enemy_c { /* 80795530 */ void E_SM_C_Death(); /* 807958A0 */ void C_DamageCheck(); /* 80795E64 */ void E_SM_C_Hook(); - /* 80796060 */ void CheckViewArea(); - /* 807960E4 */ void CameraSet(); + /* 80796060 */ bool CheckViewArea(); + /* 807960E4 */ bool CameraSet(); /* 80796204 */ void SetStopCam(cXyz, f32, f32, s16); /* 80796324 */ void SetCMoveCam(cXyz, f32, f32); /* 80796368 */ void SetStopingCam(); @@ -42,25 +47,118 @@ class daE_SM_c : public fopEn_enemy_c { /* 807968A0 */ void E_SM_C_Demo(); /* 807968E4 */ void CoreAction(); /* 80796AEC */ void ArrowOn(); - /* 80796D80 */ void Execute(); + /* 80796D80 */ int Execute(); /* 80796FC4 */ void setSmBaseMtx(); /* 80797274 */ void setBaseMtx(); /* 8079730C */ void CoCoreSet(); /* 80797444 */ void CoSmSet(); - /* 80797570 */ void Delete(); - /* 8079764C */ void CreateHeap(); + /* 80797570 */ int Delete(); + /* 8079764C */ int CreateHeap(); /* 80797784 */ void initCoSph(); - /* 80797858 */ void Create(); + /* 80797858 */ cPhs__Step Create(); /* 80797CE0 */ daE_SM_c(); -private: - /* 0x5ac */ u8 field_0x5ac[0x1160 - 0x5ac]; + + /* 0x05AC */ request_of_phase_process_class mPhase; + /* 0x05B4 */ mDoExt_McaMorfSO* mpModelMorf; + /* 0x05B8 */ J3DModel* mpBubbleModel; + /* 0x05BC */ Z2CreatureEnemy mSound; + /* 0x0660 */ Z2SoundObjSimple mSoundSimple; + /* 0x0680 */ u8 mSwBit; + /* 0x0681 */ u8 mSwBit2; + /* 0x0682 */ bool field_0x682; + /* 0x0683 */ bool field_0x683; + /* 0x0684 */ bool field_0x684; + /* 0x0685 */ bool field_0x685; + /* 0x0688 */ int mAnm; + /* 0x068C */ bool field_0x68c; + /* 0x0690 */ f32 field_0x690; + /* 0x0694 */ f32 field_0x694; + /* 0x0698 */ bool field_0x698; + /* 0x069C */ f32 field_0x69c; + /* 0x06A0 */ u8 field_0x6a0[0x6ac - 0x6a0]; + /* 0x06AC */ bool field_0x6ac; + /* 0x06AD */ u8 field_0x6ad[0x6b0 - 0x6ad]; + /* 0x06B0 */ s16 mCoreAction; + /* 0x06B2 */ s16 field_0x6b2; + /* 0x06B4 */ s16 field_0x6b4; + /* 0x06B6 */ s16 field_0x6b6; + /* 0x06B8 */ f32 field_0x6b8; + /* 0x06BC */ s16 field_0x6bc; + /* 0x06BE */ s16 field_0x6be; + /* 0x06C0 */ s16 field_0x6c0[5]; + /* 0x06CA */ s16 field_0x6ca[5]; + /* 0x06D4 */ s16 field_0x6d4; + /* 0x06D6 */ s16 field_0x6d6; + /* 0x06D8 */ s16 field_0x6d8; + /* 0x06DC */ f32 field_0x6dc; + /* 0x06E0 */ f32 field_0x6e0; + /* 0x06E4 */ f32 field_0x6e4; + /* 0x06E8 */ f32 field_0x6e8; + /* 0x06EC */ u8 field_0x6ec[0x6f0 - 0x6ec]; + /* 0x06F0 */ f32 field_0x6f0; + /* 0x06F4 */ u8 field_0x6f4[0x6f8 - 0x6f4]; + /* 0x06F8 */ s8 field_0x6f8; + /* 0x06F9 */ s8 field_0x6f9[30]; + /* 0x0718 */ fpc_ProcID mArrowProcIDs[30]; + /* 0x0790 */ f32 field_0x790[30]; + /* 0x0808 */ csXyz field_0x808[30]; + /* 0x08BC */ csXyz field_0x8bc[30]; + /* 0x0970 */ f32 field_0x970; + /* 0x0974 */ f32 field_0x974; + /* 0x0978 */ f32 field_0x978; + /* 0x097C */ f32 field_0x97c; + /* 0x0980 */ f32 field_0x980; + /* 0x0984 */ int field_0x984; + /* 0x0988 */ s16 mAction; + /* 0x098A */ s16 mMode; + /* 0x098C */ s16 field_0x98c; + /* 0x0990 */ cXyz field_0x990; + /* 0x099C */ cXyz field_0x99c; + /* 0x09A8 */ f32 field_0x9a8; + /* 0x09AC */ u8 field_0x9ac[0x9b0 - 0x9ac]; + /* 0x09B0 */ csXyz field_0x9b0; + /* 0x09B8 */ cXyz field_0x9b8; + /* 0x09C4 */ s8 field_0x9c4; + /* 0x09C8 */ cXyz field_0x9c8; + /* 0x09D4 */ cXyz mDemoCamCenter; + /* 0x09E0 */ cXyz field_0x9e0; + /* 0x09EC */ cXyz mDemoCamEye; + /* 0x09F8 */ cXyz field_0x9f8; + /* 0x0A04 */ f32 mFovy; + /* 0x0A08 */ bool field_0xa08; + /* 0x0A0A */ s16 mCDemoMode; + /* 0x0A0C */ s16 mDemoMode; + /* 0x0A0E */ u8 field_0xa0e[0xa10 - 0xa0e]; + /* 0x0A10 */ bool field_0xa10; + /* 0x0A14 */ u32 mShadowKey; + /* 0x0A18 */ u32 field_0xa18; + /* 0x0A1C */ u32 field_0xa1c; + /* 0x0A20 */ dBgS_AcchCir field_0xa20; + /* 0x0A60 */ dBgS_ObjAcch field_0xa60; + /* 0x0C38 */ dBgS_AcchCir field_0xc38; + /* 0x0C78 */ dBgS_ObjAcch field_0xc78; + /* 0x0E50 */ dCcD_Stts field_0xe50; + /* 0x0E8C */ dCcD_Stts field_0xe8c; + /* 0x0EC8 */ dCcD_Sph mCoCore; + /* 0x1000 */ dCcD_Sph mCoSm; + /* 0x1138 */ dCcU_AtInfo mAtInfo; + /* 0x115C */ u8 field_0x115c; }; STATIC_ASSERT(sizeof(daE_SM_c) == 0x1160); -class daE_Sm_HIO_c { +class daE_Sm_HIO_c : public JORReflexible { +public: /* 8079222C */ daE_Sm_HIO_c(); - /* 807980E8 */ ~daE_Sm_HIO_c(); + /* 807980E8 */ virtual ~daE_Sm_HIO_c() {} + + void genMessage(JORMContext*); + + /* スライム - Slime */ + /* 0x04 */ s8 field_0x4; + /* 0x08 */ f32 basic_size; // 基本大きさ - Basic Size + /* 0x0C */ f32 pl_notice_dist; // PL認識距離 - PL Notice Distance + /* 0x10 */ f32 core_size; // コア大きさ - Core Size }; #endif /* D_A_E_SM_H */ diff --git a/src/d/actor/d_a_e_sm.cpp b/src/d/actor/d_a_e_sm.cpp index 803f612d991..538db404bd7 100644 --- a/src/d/actor/d_a_e_sm.cpp +++ b/src/d/actor/d_a_e_sm.cpp @@ -7,294 +7,2056 @@ #include "d/actor/d_a_e_sm.h" #include "d/d_cc_d.h" -#include "dol2asm.h" #include "d/d_camera.h" -#include "f_op/f_op_actor_enemy.h" +#include "d/actor/d_a_arrow.h" +#include "Z2AudioLib/Z2Instances.h" +#include "f_op/f_op_camera_mng.h" +enum E_SM_RES_File_ID { + /* BCK */ + /* 0x05 */ BCK_SC_ATTACK = 0x5, + /* 0x06 */ BCK_SC_BUTTOBI, + /* 0x07 */ BCK_SC_DAMAGE, + /* 0x08 */ BCK_SC_DAMAGE02, + /* 0x09 */ BCK_SC_DAMAGEB, + /* 0x0A */ BCK_SC_DAMAGEL, + /* 0x0B */ BCK_SC_DAMAGER, + /* 0x0C */ BCK_SC_DEAD, + /* 0x0D */ BCK_SC_DEAD02, + /* 0x0E */ BCK_SC_DRAW, + /* 0x0F */ BCK_SC_ESCAPE, + /* 0x10 */ BCK_SC_F_SHOCK, + /* 0x11 */ BCK_SC_KYORO, + /* 0x12 */ BCK_SC_LIBERATION, + /* 0x13 */ BCK_SC_MOVE, + /* 0x14 */ BCK_SC_MOVE02, + /* 0x15 */ BCK_SC_PROVOKE, + /* 0x16 */ BCK_SC_REFILL, + /* 0x17 */ BCK_SC_REFILL02, + /* 0x18 */ BCK_SC_S_JUMP, + /* 0x19 */ BCK_SC_S_JUMP_A, + /* 0x1A */ BCK_SC_S_JUMP_B, + /* 0x1B */ BCK_SC_S_JUMP_C, + /* 0x1C */ BCK_SC_WAIT, + /* 0x1D */ BCK_SC_WAIT02, + /* 0x1E */ BCK_SC_WHISTLE, -// -// Forward References: -// + /* BMDE */ + /* 0x21 */ BMDE_SM = 0x21, -extern "C" void __ct__12daE_Sm_HIO_cFv(); -extern "C" void SetAnm__8daE_SM_cFiiff(); -extern "C" void Draw__8daE_SM_cFv(); -extern "C" static void way_bg_check__FP8daE_SM_cf4cXyzs(); -extern "C" static void other_bg_check__FP8daE_SM_cP10fopAc_ac_c(); -extern "C" static void pl_check__FP8daE_SM_cf(); -extern "C" static void move_check__FP8daE_SM_cPi(); -extern "C" void Particle_Set__8daE_SM_cFUs4cXyz4cXyz5csXyz(); -extern "C" void ArrowCheck__8daE_SM_cFv(); -extern "C" void E_SM_Damage__8daE_SM_cFv(); -extern "C" void SmDamageCheck__8daE_SM_cFv(); -extern "C" void E_SM_Normal__8daE_SM_cFv(); -extern "C" void E_SM_Move__8daE_SM_cFv(); -extern "C" void E_SM_Attack__8daE_SM_cFv(); -extern "C" void Action__8daE_SM_cFv(); -extern "C" void E_SM_C_Normal__8daE_SM_cFv(); -extern "C" void E_SM_C_Fight__8daE_SM_cFv(); -extern "C" void E_SM_C_Near_Escape__8daE_SM_cFv(); -extern "C" void E_SM_C_Far_Escape__8daE_SM_cFv(); -extern "C" void E_SM_C_Home_Escape__8daE_SM_cFv(); -extern "C" void E_SM_C_Escape__8daE_SM_cFv(); -extern "C" void E_SM_C_Free__8daE_SM_cFv(); -extern "C" void E_SM_C_Death__8daE_SM_cFv(); -extern "C" void C_DamageCheck__8daE_SM_cFv(); -extern "C" void E_SM_C_Hook__8daE_SM_cFv(); -extern "C" void CheckViewArea__8daE_SM_cFv(); -extern "C" void CameraSet__8daE_SM_cFv(); -extern "C" void SetStopCam__8daE_SM_cF4cXyzffs(); -extern "C" void SetCMoveCam__8daE_SM_cF4cXyzff(); -extern "C" void SetStopingCam__8daE_SM_cFv(); -extern "C" void SetReleaseCam__8daE_SM_cFv(); -extern "C" void DemoStart__8daE_SM_cFv(); -extern "C" void DemoMid__8daE_SM_cFv(); -extern "C" void E_SM_C_Demo__8daE_SM_cFv(); -extern "C" void CoreAction__8daE_SM_cFv(); -extern "C" void ArrowOn__8daE_SM_cFv(); -extern "C" void Execute__8daE_SM_cFv(); -extern "C" void setSmBaseMtx__8daE_SM_cFv(); -extern "C" void setBaseMtx__8daE_SM_cFv(); -extern "C" void CoCoreSet__8daE_SM_cFv(); -extern "C" void CoSmSet__8daE_SM_cFv(); -extern "C" static bool daE_SM_IsDelete__FP8daE_SM_c(); -extern "C" static void daE_SM_Delete__FP8daE_SM_c(); -extern "C" static void daE_SM_Draw__FP8daE_SM_c(); -extern "C" static void daE_SM_Execute__FP8daE_SM_c(); -extern "C" static void daE_SM_Create__FP10fopAc_ac_c(); -extern "C" void Delete__8daE_SM_cFv(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void CreateHeap__8daE_SM_cFv(); -extern "C" void initCoSph__8daE_SM_cFv(); -extern "C" void Create__8daE_SM_cFv(); -extern "C" void __ct__8daE_SM_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __ct__5csXyzFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daE_Sm_HIO_cFv(); -extern "C" void __sinit_d_a_e_sm_cpp(); -extern "C" static void func_8079816C(); -extern "C" static void func_80798174(); -extern "C" void __dt__5csXyzFv(); -extern "C" extern char const* const d_a_e_sm__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void mDoLib_project__FP3VecP3Vec(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_SearchByID__FUiPP10fopAc_ac_c(); -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_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 fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -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 SetGndThinCellingOff__9dBgS_AcchFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void at_power_check__FP11dCcU_AtInfo(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -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_darkworld_check__Fv(); -extern "C" void ClrCcMove__9cCcD_SttsFv(); -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_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcPos2__FP4cXyzRC4cXyzff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void setLinkSearch__15Z2CreatureEnemyFb(); -extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void __construct_array(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8079860C-80798610 00002C 0004+00 1/7 0/0 0/0 .rodata @3941 */ -SECTION_RODATA static f32 const lit_3941 = 1000.0f; -COMPILER_STRIP_GATE(0x8079860C, &lit_3941); - -/* 807987C4-80798818 -00001 0054+00 1/1 0/0 0/0 .data @5019 */ -SECTION_DATA static void* lit_5019[21] = { - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x8C), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x44), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x120), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x6BC), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x388), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x7F8), - (void*)(((char*)E_SM_C_Home_Escape__8daE_SM_cFv) + 0x624), + /* BMDR */ + /* 0x24 */ BMDR_SC = 0x24, }; -/* 80798818-80798838 -00001 0020+00 1/1 0/0 0/0 .data @5683 */ -SECTION_DATA static void* lit_5683[8] = { - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0x48), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0x64), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0x100), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0x74), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0xD4), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0xE0), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0x100), - (void*)(((char*)CoreAction__8daE_SM_cFv) + 0xF8), +enum Action { + /* 0x0 */ ACTION_NORMAL, + /* 0x1 */ ACTION_MOVE, + /* 0x2 */ ACTION_DAMAGE, + /* 0x3 */ ACTION_UNK, + /* 0x4 */ ACTION_DELETE, + /* 0x5 */ ACTION_ATTACK, }; -/* 80798838-80798878 0000AC 0040+00 1/1 0/0 0/0 .data cc_sph_src$5956 */ -static dCcD_SrcSph cc_sph_src = { - { - {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0xd8fbbdff, 0x3}, 0x75}}, // mObj - {dCcD_SE_SOFT_BODY, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 20.0f} // mSph - } // mSphAttr +enum Core_Action { + /* 0x0 */ CORE_ACTION_NORMAL, + /* 0x1 */ CORE_ACTION_FIGHT, + /* 0x3 */ CORE_ACTION_FREE = 0x3, + /* 0x4 */ CORE_ACTION_DEATH, + /* 0x5 */ CORE_ACTION_HOOK, + /* 0x7 */ CORE_ACTION_DEMO = 0x7, }; -/* 80798878-807988B8 0000EC 0040+00 1/1 0/0 0/0 .data core_sph_src$5957 */ -static dCcD_SrcSph core_sph_src = { - { - {0x0, {{0x0, 0x0, 0xd}, {0x4000, 0x43}, 0x75}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf - { - {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph - } // mSphAttr +/* 8079222C-80792260 0000EC 0034+00 1/1 0/0 0/0 .text __ct__12daE_Sm_HIO_cFv */ +daE_Sm_HIO_c::daE_Sm_HIO_c() { + field_0x4 = -1; + basic_size = 1.0f; + pl_notice_dist = 1000.0f; + core_size = 1.0f; +} + +/* 80792260-8079230C 000120 00AC+00 13/13 0/0 0/0 .text SetAnm__8daE_SM_cFiiff */ +void daE_SM_c::SetAnm(int i_index, int i_attr, f32 i_rate, f32 i_morf) { + mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_SM", i_index), i_attr, i_morf, i_rate, 0.0f, -1.0f); + mAnm = i_index; +} + +/* 8079230C-80792604 0001CC 02F8+00 1/1 0/0 0/0 .text Draw__8daE_SM_cFv */ +int daE_SM_c::Draw() { + J3DModel* model = mpModelMorf->getModel(); + + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + + if (field_0x698) { + J3DModelData* modelData = model->getModelData(); + J3DMaterial* material1 = modelData->getMaterialNodePointer(1); + material1->getTevColor(0)->r = field_0x690 * -255.0f; + material1->getTevColor(0)->g = field_0x690 * -255.0f; + material1->getTevColor(0)->b = field_0x690 * -255.0f; + + J3DMaterial* material2 = modelData->getMaterialNodePointer(2); + material2->getTevColor(0)->r = field_0x690 * -255.0f; + material2->getTevColor(0)->g = field_0x690 * -255.0f; + material2->getTevColor(0)->b = field_0x690 * -255.0f; + } + + if (!field_0x683) { + mpModelMorf->entryDL(); + } + + if (field_0x9c4 != 0) { + cXyz sp68; + sp68.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); + mShadowKey = dComIfGd_setShadow(mShadowKey, 1, model, &sp68, 400.0f, 100.0f, current.pos.y, + field_0xa60.GetGroundH(), field_0xa60.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + + if (!field_0x684) { + g_env_light.setLightTevColorType_MAJI(mpBubbleModel, &tevStr); + fopAcM_setEffectMtx(this, mpBubbleModel->getModelData()); + mpBubbleModel->getModelData()->getMaterialNodePointer(0)->getTevKColor(1)->a = field_0x694 * 167.0f; + mDoExt_modelUpdateDL(mpBubbleModel); + dComIfGd_setSimpleShadow(&field_0x990, field_0xc78.GetGroundH(), (TREG_F(10) + 195.0f) * (field_0x6f0 / field_0x6e0), + field_0xc78.m_gnd, 0, -field_0x6b8, dDlst_shadowControl_c::getSimpleTex()); + } + + return 1; +} + +/* 80792604-80792720 0004C4 011C+00 3/3 0/0 0/0 .text way_bg_check__FP8daE_SM_cf4cXyzs */ +static BOOL way_bg_check(daE_SM_c* i_this, f32 param_2, cXyz param_3, s16 param_4) { + dBgS_LinChk lin_chk; + cXyz sp94, i_start, i_end; + + i_start = param_3; + i_start.y += 80.0f; + cMtx_YrotS(*calc_mtx, param_4); + sp94.x = 0.0f; + sp94.y = 80.0f; + sp94.z = param_2; + MtxPosition(&sp94, &i_end); + i_end += param_3; + lin_chk.Set(&i_start, &i_end, i_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + return TRUE; + } + + return FALSE; +} + +/* 80792720-807927F8 0005E0 00D8+00 1/1 0/0 0/0 .text other_bg_check__FP8daE_SM_cP10fopAc_ac_c */ +static BOOL other_bg_check(daE_SM_c* i_this, fopAc_ac_c* param_2) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + dBgS_LinChk lin_chk; + cXyz sp98, i_start, i_end; + + i_end = param_2->current.pos; + i_end.y += 80.0f; + i_start = a_this->current.pos; + i_start.y += 80.0f; + lin_chk.Set(&i_start, &i_end, a_this); + + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + return TRUE; + } + + return FALSE; +} + +/* 807927F8-8079285C 0006B8 0064+00 1/1 0/0 0/0 .text pl_check__FP8daE_SM_cf */ +static BOOL pl_check(daE_SM_c* i_this, f32 param_2) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + if (fabsf(i_this->current.pos.y - player->current.pos.y) < 500.0f && !other_bg_check(i_this, player)) { + return TRUE; + } + + return FALSE; +} + +/* 8079285C-807928A4 00071C 0048+00 2/2 0/0 0/0 .text move_check__FP8daE_SM_cPi */ +static BOOL move_check(daE_SM_c* i_this, int* param_2) { + *param_2 = -1; + + if (pl_check(i_this, i_this->field_0x970)) { + *param_2 = 0; + } +} + +/* 807928A4-80792914 000764 0070+00 1/1 0/0 0/0 .text Particle_Set__8daE_SM_cFUs4cXyz4cXyz5csXyz */ +void daE_SM_c::Particle_Set(u16 i_resID, cXyz i_scale, cXyz i_pos, csXyz i_rotation) { + dComIfGp_particle_set(i_resID, &i_pos, &tevStr, &i_rotation, &i_scale); +} + +/* 80792914-80792C20 0007D4 030C+00 1/1 0/0 0/0 .text ArrowCheck__8daE_SM_cFv */ +void daE_SM_c::ArrowCheck() { + cXyz* tgHitPosP = mCoSm.GetTgHitPosP(); + field_0x6d4 = 10; + + if (((daArrow_c*)mAtInfo.mpActor)->changeActorControll()) { + field_0x6f9[field_0x6f8] = 1; + daArrow_c* arrow_p; + fopAcM_SearchByID(mArrowProcIDs[field_0x6f8], (fopAc_ac_c**)&arrow_p); + + if (arrow_p != NULL) { + arrow_p->deleteArrow(); + } + + if (tgHitPosP != NULL) { + mArrowProcIDs[field_0x6f8] = fopAcM_GetID(mAtInfo.mpActor); + cXyz sp64(field_0x990 - *tgHitPosP); + sp64.y += field_0x6f0 * (KREG_F(1) + 70.0f); + field_0x808[field_0x6f8].y = cM_rndFX(1000.0f) + cM_atan2s(sp64.x, sp64.z); + field_0x808[field_0x6f8].x = cM_rndFX(1000.0f) + -(cM_atan2s(sp64.y, JMAFastSqrt(sp64.x * sp64.x + sp64.z * sp64.z))); + + f32 fVar1 = 230.0f; + if (field_0x808[field_0x6f8].x < 0) { + fVar1 = HREG_F(10) + 130.0f; + } + + field_0x790[field_0x6f8] = field_0x6f0 * -fVar1; + field_0x8bc[field_0x6f8].y = mAtInfo.mpActor->shape_angle.y - field_0x808[field_0x6f8].y; + field_0x8bc[field_0x6f8].x = mAtInfo.mpActor->shape_angle.x - field_0x808[field_0x6f8].x; + field_0x6f8++; + + if (field_0x6f8 == 30) { + field_0x6f8 = 0; + } + } + } + + if (mAction != ACTION_ATTACK && mAction != ACTION_MOVE) { + mAction = ACTION_DAMAGE; + } + + field_0x6dc = XREG_F(12) + 0.05f + cM_rndFX(XREG_F(13) + 0.01f); + field_0x978 = cM_rndFX(0.1f) + -0.3f; + field_0x6c0[0] = 50; + field_0x980 = XREG_F(14) + 2500.0f; +} + +/* 80792C20-80792E70 000AE0 0250+00 3/3 0/0 0/0 .text E_SM_Damage__8daE_SM_cFv */ +void daE_SM_c::E_SM_Damage() { + field_0x6bc += (s16)((field_0x980 + 1000.0f) / field_0x6f0); + mCoSm.OffAtSetBit(); + + if (field_0x6c0[0] != 0) { + f32 fVar1; + + if (field_0x685 == true) { + fVar1 = field_0x978 * cM_ssin(field_0x6be); + } else { + fVar1 = field_0x978; + } + + field_0x6be += (s16)(3000.0f / field_0x6f0); + cLib_addCalc2(&field_0x6e4, field_0x974, 0.3f, 1.0f); + cLib_addCalc2(&field_0x6e0, fVar1 + 1.0f, 0.3f, 1.0f); + cLib_addCalc2(&field_0x6dc, field_0x97c + 0.005f, 0.05f, 0.5f); + cLib_addCalc2(&field_0x980, 0.0f, 0.01f, 1000.0f); + cLib_chaseF(&field_0x974, 0.0f, 0.01f); + cLib_chaseF(&field_0x978, 0.0f, 0.105f); + cLib_chaseF(&field_0x97c, 0.0f, 0.03f); + } else { + field_0x685 = false; + + if (mCoreAction != CORE_ACTION_DEATH && health > 0 && mCoreAction != CORE_ACTION_DEMO && mAction != ACTION_ATTACK && mAction != ACTION_MOVE) { + if (mCoreAction != CORE_ACTION_FREE && mCoreAction != CORE_ACTION_HOOK) { + if (mAnm == BCK_SC_WHISTLE) { + if (mpModelMorf->isStop()) { + SetAnm(BCK_SC_MOVE02, J3DFrameCtrl::EMode_LOOP, 1.0f, 3.0f); + mAction = ACTION_NORMAL; + mMode = 0; + } + } else { + SetAnm(BCK_SC_MOVE02, J3DFrameCtrl::EMode_LOOP, 1.0f, 3.0f); + mAction = ACTION_NORMAL; + mMode = 0; + } + } else { + mAction = ACTION_UNK; + mMode = 0; + } + } + } +} + +/* 80792E70-807936B4 000D30 0844+00 1/1 0/0 0/0 .text SmDamageCheck__8daE_SM_cFv */ +void daE_SM_c::SmDamageCheck() { + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz& pos = fopAcM_GetPosition(player); + + if (field_0x6d4 != 0) { + mCoSm.ClrTgHit(); + mCoSm.ClrAtHit(); + return; + } + + field_0xe50.Move(); + field_0xe8c.Move(); + + if (mCoSm.ChkAtHit()) { + field_0x6d4 = 10; + s16 sVar1 = cLib_targetAngleY(&field_0x990, &pos); + + if (!player->checkPlayerGuard()) { + player->setThrowDamage(sVar1, 15.0f, 20.0f, 1, 0, 0); + } + + mCoSm.ClrAtHit(); + return; + } + + if (mCoSm.ChkTgHit()) { + field_0xa10 = true; + mAtInfo.mpCollider = mCoSm.GetTgHitObj(); + at_power_check(&mAtInfo); + field_0x6d4 = 10; + + if (mCoreAction == CORE_ACTION_FREE && (field_0x6b6 == 7 || field_0x6b6 == 6)) { + field_0x6d4 = 0; + mCoSm.ClrTgHit(); + } + + if (mAction != ACTION_ATTACK && mAction != ACTION_MOVE && mCoreAction != CORE_ACTION_FREE && mCoreAction != CORE_ACTION_DEATH) { + if (mAnm == BCK_SC_WHISTLE || mAnm == BCK_SC_PROVOKE) { + if (mpModelMorf->isStop()) { + int iVar1; + move_check(this, &iVar1); + if (iVar1 >= 0) { + mAction = ACTION_ATTACK; + mMode = 0; + } else if (cM_rndF(1.0f) < 0.5f) { + SetAnm(BCK_SC_PROVOKE, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_PROVOKE, -1); + } else { + SetAnm(BCK_SC_WHISTLE, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_WHISTLE, -1); + } + } + } else if (cM_rndF(1.0f) < 0.5f) { + SetAnm(BCK_SC_PROVOKE, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_PROVOKE, -1); + } else { + SetAnm(BCK_SC_WHISTLE, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_WHISTLE, -1); + } + } + + field_0x6be = 0; + field_0x6c0[0] = 50; + field_0x685 = false; + field_0x9a8 = 0.0f; + speedF = 0.0f; + field_0x6dc = 0.06f; + field_0x97c = 0.0f; + field_0x980 = 2500.0f; + mCoSm.OffAtSetBit(); + + s16 sVar2; + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_ARROW)) { + mSoundSimple.startSound(Z2SE_EN_SC_SL_REBOUND, 0, -1); + ArrowCheck(); + + if (mAction == ACTION_ATTACK) { + return; + } + + if (mAction == ACTION_MOVE) { + return; + } + + sVar2 = mAction; + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_NORMAL_SWORD)) { + field_0x6dc = 0.06f; + field_0x978 += -0.35; + field_0x97c = 0.0f; + field_0x6c0[0] = 50; + field_0x980 = 2500.0f; + mSoundSimple.startSound(Z2SE_EN_SC_SL_REBOUND, 0, -1); + + if (mAction == ACTION_ATTACK) { + return; + } + + if (mAction == ACTION_MOVE) { + return; + } + + sVar2 = mAction; + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOMB)) { + mCoCore.OnTgSetBit(); + mCoCore.OffTgNoHitMark(); + field_0x684 = true; + mCoSm.ClrTgHit(); + field_0x6d4 = 10; + field_0x682 = true; + cXyz i_scale(1.5f, 1.5f, 1.5f); + dComIfGp_particle_set(0x85BF, ¤t.pos, &tevStr, ¤t.angle, &i_scale); + + for (int i = 0; i < 30; i++) { + daArrow_c* arrow_p; + if (fopAcM_SearchByID(mArrowProcIDs[i], (fopAc_ac_c**)&arrow_p) != 0 && arrow_p != NULL) { + arrow_p->deleteArrow(); + } + } + + mCoreAction = CORE_ACTION_FREE; + field_0x6b4 = 0; + field_0x6b6 = 0; + SetAnm(BCK_SC_LIBERATION, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_IRON_BALL)) { + field_0x6dc = cM_rndF(0.01f) + 0.05f; + field_0x978 = cM_rndFX(0.05f) + -0.3f; + field_0x97c = 0.05f; + field_0x6c0[0] = 50; + field_0x980 = 2500.0f; + mSoundSimple.startSound(Z2SE_EN_SC_SL_REBOUND, 0, -1); + } else { + mSoundSimple.startSound(Z2SE_EN_SC_SL_REBOUND, 0, -1); + } + + mAction = ACTION_DAMAGE; + cLib_addCalc2(&field_0x69c, 0.0f, 0.05f, 100.0f); + return; + } + + cXyz* hookshotTopPos = player->getHookshotTopPos(); + if (hookshotTopPos == NULL) { + return; + } + + cXyz sp34(field_0x990); + sp34.y += 100.0f; + + if (!(sp34.abs(*hookshotTopPos) < field_0x6f0 * 100.0f)) { + return; + } + + if (!daPy_getPlayerActorClass()->checkHookshotShootReturnMode()) { + return; + } + + field_0x6be = 0; + field_0x6c0[0] = 50; + field_0x685 = false; + field_0x9a8 = 0.0f; + field_0x6dc = cM_rndF(0.01f) + 0.05f; + field_0x978 = cM_rndFX(0.05f) + -0.3f; + field_0x97c = 0.0f; + field_0x6c0[0] = 50; + field_0x980 = 2500.0f; + + mSoundSimple.startSound(Z2SE_EN_SC_SL_REBOUND, 0, -1); + mAction = ACTION_DAMAGE; + cLib_addCalc2(&field_0x69c, 0.0f, 0.05f, 100.0f); +} + +/* 807989C0-807989CC 000048 000C+00 1/1 0/0 0/0 .bss @3936 */ +static u8 l_initHIO; + +/* 807989CC-807989E0 000054 0014+00 4/5 0/0 0/0 .bss l_HIO */ +static daE_Sm_HIO_c l_HIO; + +namespace { + /* 807989E0-807989E4 000068 0004+00 3/4 0/0 0/0 .bss s_Dis__22@unnamed@d_a_e_sm_cpp@ */ + static f32 s_Dis; + + /* 807989E4-807989E8 00006C 0002+02 9/10 0/0 0/0 .bss s_TargetAngle__22@unnamed@d_a_e_sm_cpp@ */ + static s16 s_TargetAngle; }; +/* 807936B4-80793B64 001574 04B0+00 1/1 0/0 0/0 .text E_SM_Normal__8daE_SM_cFv */ +void daE_SM_c::E_SM_Normal() { + f32 fVar1 = 0.0f; + f32 fVar2 = 0.0f; + field_0x6bc += (int)((field_0x980 + 1000.0f) / field_0x6f0); + f32 fVar3 = cM_ssin(field_0x6bc); + + switch (mMode) { + case 0: + if (field_0xc78.ChkGroundHit()) { + mMode += 1; + field_0x9a8 = 0.0f; + field_0x6c0[0] = 0; + } + break; + + case 1: + if (field_0x6c0[0] == 0 && fVar3 <= -0.9f) { + mMode++; + field_0x6c0[0] = cM_rndF(100.0f) + 100.0f; + + if (mAnm != BCK_SC_MOVE02) { + SetAnm(BCK_SC_MOVE02, J3DFrameCtrl::EMode_LOOP, 1.0f, 5.0f); + } + + if (field_0xa10) { + field_0x9b0.y = s_TargetAngle; + + if (way_bg_check(this, scale.x * 100.0f, field_0x990, field_0x9b0.y)) { + field_0x9b0.y += 0x100; + } + } else { + for (int i = 0; i < 100; i++) { + field_0x9b0.y = cM_rndFX(32767.0f); + + if (!way_bg_check(this, scale.x * 100.0f, field_0x990, field_0x9b0.y)) break; + } + } + } + + cLib_addCalc0(&field_0x9a8, 1.0f, 0.5f); + break; + + case 2: { + if (field_0xa10) { + field_0x9b0.y = s_TargetAngle; + + if (way_bg_check(this, scale.x * 100.0f, field_0x990, field_0x9b0.y)) { + field_0x9b0.y += 0x100; + } + } + + if (field_0x6c0[0] == 0 && fVar3 <= -0.9f) { + mMode = 1; + field_0x6c0[0] = cM_rndF(50.0f) + 50.0f; + SetAnm(BCK_SC_WAIT, J3DFrameCtrl::EMode_LOOP, 1.0f, 5.0f); + } + + s32 tmp = (s32)field_0x6bc; + tmp += (int)((field_0x980 + 1000.0f) / field_0x6f0); + fVar1 = cM_ssin(tmp); + if (fVar3 < -0.0f && fVar1 > 0.0f) { + mSoundSimple.startSound(Z2SE_EN_SC_SL_MOVE, 0, -1); + mSound.startCreatureVoice(Z2SE_EN_SC_V_WAIT, -1); + } + + f32 reg1 = (TREG_F(15) + 0.1f); + fVar1 = fVar3 * reg1 + (TREG_F(15) + 0.1f); + f32 reg2 = (TREG_F(13) + 2.0f); + field_0x9a8 = fVar3 * reg2 + (TREG_F(13) + 2.0f); + fVar2 = 50.0f; + break; + } + + case 3: + break; + } + + cLib_addCalc2(&field_0x6e4, fVar1, 0.2f, 0.1f); + cLib_addCalc2(&field_0x6e0, 1.0f, 0.2f, 0.05f); + cLib_addCalc2(&field_0x6dc, 0.005f, 0.01f, 0.01f); + cLib_addCalc2(&field_0x69c, fVar2, 0.05f, 100.0f); + + if (field_0xc78.ChkGroundHit() && fVar3 <= -0.9f && mMode != 3) { + int iVar1 = -1; + + if (s_Dis < 700.0f) { + move_check(this, &iVar1); + } + + if (iVar1 >= 0) { + mAction = ACTION_ATTACK; + mMode = 0; + mSound.setLinkSearch(true); + field_0x6c0[0] = 0; + } else { + mCoreAction = CORE_ACTION_NORMAL; + mSound.setLinkSearch(false); + } + } +} + +/* 80793B64-80793E18 001A24 02B4+00 1/1 0/0 0/0 .text E_SM_Move__8daE_SM_cFv */ +void daE_SM_c::E_SM_Move() { + field_0x6bc += (int)((field_0x980 + 1500.0f) / field_0x6f0); + + switch (mMode) { + case 0: + if (field_0xc78.ChkGroundHit()) { + mSoundSimple.startSound(Z2SE_EN_SC_SL_ATTACK, 0, -1); + mMode = 1; + field_0x9b0.y = s_TargetAngle + cM_rndFX(3000.0f); + field_0x9b8.y = 45.0f; + field_0x9a8 = field_0x9c8.x * (cM_rndF(8.0f) + 20.0f); + } + break; + + case 1: + cLib_addCalc2(&field_0x6dc, 0.02f, 0.1f, 0.005f); + cLib_addCalc0(&field_0x6e4, 0.5f, 0.1f); + + if (field_0xc78.ChkGroundHit()) { + mSoundSimple.startSound(Z2SE_EN_SC_SL_LAND, 0, -1); + + if (field_0xc78.ChkWaterHit()) { + mSoundSimple.startSound(Z2SE_CM_BODYFALL_ASASE_M, 0, -1); + } else { + mSoundSimple.startSound(Z2SE_CM_BODYFALL_M, 0, -1); + } + + mCoSm.OffAtSetBit(); + field_0x9a8 = 0.0f; + field_0x6bc = 0; + mAction = ACTION_DAMAGE; + field_0x978 = -0.4f; + field_0x97c = 0.15f; + field_0x974 = 0.05f; + field_0x980 = 2500.0f; + field_0x6c0[0] = 30; + field_0x6be = 0; + + for (int i = 0; i < 2; i++) { + E_SM_Damage(); + } + } else if (field_0x9b8.y < 0.0f) { + mCoSm.OnAtSetBit(); + cLib_addCalc(&field_0x6e0, 1.0f, 0.2f, 0.5f, 0.0f); + } else { + cLib_addCalc(&field_0x6e0, 1.4f, 0.5f, 0.5f, 0.0f); + } + + cLib_addCalc2(&field_0x69c, 0.0f, 0.05f, 100.0f); + break; + } +} + +/* 80793E18-80794100 001CD8 02E8+00 1/1 0/0 0/0 .text E_SM_Attack__8daE_SM_cFv */ +void daE_SM_c::E_SM_Attack() { + if (field_0x6c0[0] == 0) { + field_0x6bc += (int)((field_0x980 + 2000.0f) / field_0x6f0); + } else { + field_0x6bc += (int)((field_0x980 + 1000.0f) / field_0x6f0); + } + + switch (mMode) { + case 0: + SetAnm(BCK_SC_ATTACK, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_ATTACK, -1); + mCoreAction = CORE_ACTION_FIGHT; + mMode++; + field_0x97c = 0.0f; + field_0x6dc += 0.01f; + + if (field_0x6d4 != 0) { + field_0x980 = 2600.0f; + } else { + field_0x980 = 1500.0f; + } + + if (field_0x6dc > 0.041f) { + field_0x6dc = 0.041f; + } + break; + + case 1: + if (field_0x6dc > 0.041f) { + field_0x6dc = 0.041f; + } + + if (mpModelMorf->isStop()) { + SetAnm(BCK_SC_S_JUMP_C, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + field_0x6c0[2] = 10; + mMode++; + } + break; + + case 2: + if (field_0x6dc > 0.041f) { + field_0x6dc = 0.041f; + } + + if (field_0x6c0[2] == 0) { + SetAnm(BCK_SC_MOVE02, 2, 1.0f, 5.0f); + mAction = ACTION_MOVE; + mMode = 0; + } else { + cLib_addCalc2(¤t.pos.y, field_0x990.y + 20.0f, 5.0f, 0.05f); + cLib_addCalc2(&field_0x6e0, 0.85f, 0.4f, 0.05f); + cLib_addCalc2(&field_0x6dc, 0.0f, 0.03f, 0.01f); + } + break; + } + + f32 fVar1; + if (field_0x685 == true) { + fVar1 = field_0x978 * cM_ssin(field_0x6be); + } else { + fVar1 = field_0x978; + } + + cLib_addCalc2(&field_0x69c, 0.0f, 0.05f, 100.0f); + cLib_chaseF(&field_0x978, 0.0f, 0.105f); + cLib_addCalc2(&field_0x6e0, fVar1 + 1.0f, 0.3f, 1.0f); +} + +/* 80794100-80794338 001FC0 0238+00 1/1 0/0 0/0 .text Action__8daE_SM_cFv */ +void daE_SM_c::Action() { + cXyz sp2c, sp38; + + SmDamageCheck(); + + switch (mAction) { + case ACTION_NORMAL: + E_SM_Normal(); + break; + + case ACTION_MOVE: + E_SM_Move(); + break; + + case ACTION_ATTACK: + E_SM_Attack(); + break; + + case ACTION_DAMAGE: + E_SM_Damage(); + break; + + case ACTION_UNK: + field_0x9a8 = 0.0f; + field_0x6bc += (int)((field_0x980 + 1000.0f) / field_0x6f0); + cLib_addCalc2(&field_0x6e4, 0.0f, 0.2f, 0.1); + cLib_addCalc2(&field_0x6e0, 1.0f, 0.2f, 0.05f); + cLib_addCalc2(&field_0x6dc, 0.02f, 0.5f, 0.01f); + cLib_chaseF(&field_0x69c, 0.0f, 1.0f); + break; + + case ACTION_DELETE: + if (mpModelMorf->isStop()) { + if (mSwBit != 0xFF && !dComIfGs_isSwitch(mSwBit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwBit, fopAcM_GetRoomNo(this)); + } + + fopAcM_delete(this); + } + break; + } + + cLib_chaseF(&field_0x980, 0.0f, 10.0f); + cMtx_YrotS(*calc_mtx, field_0x9b0.y); + sp2c.x = 0.0f; + sp2c.y = 0.0f; + sp2c.z = field_0x9a8; + MtxPosition(&sp2c, &sp38); + field_0x9b8.x = sp38.x; + field_0x9b8.z = sp38.z; + field_0x990 += field_0x9b8; + field_0x9b8.y -= 5.0f; + + cXyz* ccMoveP = field_0xe8c.GetCCMoveP(); + if (ccMoveP != NULL) { + field_0x990 += *ccMoveP; + } + + field_0xc78.CrrPos(dComIfG_Bgsp()); +} + +/* 80794338-807943C4 0021F8 008C+00 1/1 0/0 0/0 .text E_SM_C_Normal__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Normal() { + cLib_addCalcAngleS2(¤t.angle.y, field_0x9b0.y, 8, 0x400); + + if (mAnm == BCK_SC_WHISTLE && mpModelMorf->checkFrame(63.0f)) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_WHISTLE2, -1); + } +} + +/* 807943C4-80794458 002284 0094+00 1/1 0/0 0/0 .text E_SM_C_Fight__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Fight() { + cLib_addCalcAngleS2(¤t.angle.y, s_TargetAngle, 8, 0x800); + + if (mAnm == BCK_SC_WHISTLE && mpModelMorf->checkFrame(63.0f)) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_WHISTLE2, -1); + } +} + +/* 80794458-8079473C 002318 02E4+00 1/1 0/0 0/0 .text E_SM_C_Near_Escape__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Near_Escape() { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + + switch (field_0x6b6) { + case 4: + speedF = 0.0f; + field_0x6d8 = s_TargetAngle; + cLib_chaseAngleS(¤t.angle.y, field_0x6d8, 0x1000); + + if (mpModelMorf->isStop()) { + field_0x6b6 = 0; + field_0x6ca[3] = 10; + field_0x6d8 = s_TargetAngle + 0x8000; + } + break; + + case 0: + field_0x6b6 = 3; + cLib_chaseAngleS(¤t.angle.y, field_0x6d8, 0x2000); + field_0x9b0.y = current.angle.y; + + if (!way_bg_check(this, 400.0f, current.pos, current.angle.y)) { + current.angle.y += cM_rndFX(2000.0f); + } else { + field_0x6d8 += 0x2000; + } + + if (s_Dis > 600.0f) { + field_0x6b4 = 1; + field_0x6b6 = 0; + } + + if (field_0x6ca[0] == 0.0f && !field_0x684) { + field_0x6b4 = 2; + field_0x6b6 = 4; + } + break; + + case 3: + if (mAnm != BCK_SC_ESCAPE) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_ESCAPE, -1); + mSound.startCreatureSound(Z2SE_EN_SC_JUMP, 0, -1); + SetAnm(BCK_SC_ESCAPE, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } + + if (mpModelMorf->getFrame() >= 2.0f) { + speedF = TREG_F(6) + 20.0f; + field_0x6b6 = 1; + mAnm = 0; + } + break; + + case 1: + if (mpModelMorf->checkFrame(11.0f)) { + speedF = 0.0f; + field_0x6b6 = 0; + SetAnm(BCK_SC_MOVE, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } + break; + } +} + +/* 8079473C-807949CC 0025FC 0290+00 1/1 0/0 0/0 .text E_SM_C_Far_Escape__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Far_Escape() { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + + switch (field_0x6b6) { + case 4: + speedF = 0.0f; + + if (mpModelMorf->isStop()) { + field_0x6b6 = 3; + } + break; + + case 0: + field_0x6b6 = 3; + + for (int i = 0; i < 100; i++) { + field_0x6d8 = current.angle.y + (int)cM_rndFX(12000.0f); + field_0x9b0.y = field_0x6d8; + + if (!way_bg_check(this, 400.0f, current.pos, current.angle.y)) break; + } + + if (s_Dis <= 600.0f) { + field_0x6b4 = 0; + field_0x6b6 = 4; + SetAnm(BCK_SC_KYORO, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_KYORO, -1); + } + + if (field_0x6ca[0] == 0 && !field_0x684) { + field_0x6b4 = 2; + field_0x6b6 = 4; + } + break; + + case 3: + if (mAnm != BCK_SC_ESCAPE) { + SetAnm(BCK_SC_ESCAPE, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_ESCAPE, -1); + mSound.startCreatureSound(Z2SE_EN_SC_JUMP, 0, -1); + } + + if (mpModelMorf->getFrame() >= 2.0f) { + speedF = 20.0f; + field_0x6b6 = 1; + mAnm = BCK_SC_S_JUMP_A; + } + break; + + case 1: + if (mpModelMorf->checkFrame(11.0f)) { + speedF = 0.0f; + field_0x6b6 = 0; + } + break; + } + + cLib_chaseAngleS(¤t.angle.y, field_0x6d8, 0x400); +} + +/* 807949CC-807951EC 00288C 0820+00 2/1 0/0 0/0 .text E_SM_C_Home_Escape__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Home_Escape() { + switch (field_0x6b6) { + case 4: + speedF = 0.0f; + + if (mpModelMorf->isStop()) { + field_0x6b6 = 5; + } + + mAnm = BCK_SC_S_JUMP_A; + break; + + case 0: + if (mpModelMorf->checkFrame(11.0f)) { + speedF = 0.0f; + field_0x6b6 = 5; + + if (field_0xa60.ChkWaterHit()) { + mSound.startCreatureSound(Z2SE_EN_SC_LAND_WATER, 0, -1); + } else { + mSound.startCreatureSound(Z2SE_EN_SC_LAND, 0, -1); + } + } + break; + + case 5: + mCoCore.OnCoSetBit(); + field_0x6d8 = cLib_targetAngleY(¤t.pos, &field_0x990); + cLib_chaseAngleS(¤t.angle.y, field_0x6d8, 0x1000); + + if (current.pos.absXZ(field_0x990) < oREG_F(0) + 220.0f) { + field_0x6b6 = 7; + SetAnm(BCK_SC_S_JUMP_A, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + mSound.startCreatureSound(Z2SE_EN_SC_JUMP, 0, -1); + mCoCore.OffTgNoHitMark(); + mCoCore.OffTgSetBit(); + } else { + if (mAnm != BCK_SC_ESCAPE) { + SetAnm(BCK_SC_ESCAPE, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_ESCAPE, -1); + mSound.startCreatureSound(Z2SE_EN_SC_JUMP, 0, -1); + } + + if (mpModelMorf->checkFrame(2.0f)) { + speedF = 20.0f; + field_0x6b6 = 0; + mAnm = BCK_SC_S_JUMP_A; + } + } + break; + + case 7: + if (mAnm == BCK_SC_S_JUMP_A && mpModelMorf->isStop()) { + speed.y = oREG_F(1) + 73.0f; + speedF = oREG_F(2) + 10.0f; + current.angle.y = cLib_targetAngleY(¤t.pos, &field_0x990); + field_0x6ca[3] = 15; + SetAnm(BCK_SC_S_JUMP_B, J3DFrameCtrl::EMode_LOOP, 1.0f, 3.0f); + } + + if (mAnm == BCK_SC_S_JUMP_B) { + speedF = oREG_F(2) + 10.0f; + } + + if (speed.y <= 0.0f && mAnm == BCK_SC_S_JUMP_B && mCoCore.ChkCoHit()) { + mCoCore.OffCoSameActorHit(); + mCoCore.OffCoSetBit(); + mSoundSimple.startSound(Z2SE_EN_SC_SL_JUMP_IN, 0, -1); + field_0x6b6 = 6; + + cXyz sp20(0.5f, 0.5f, 0.5f); + sp20 *= 1.0f; + dComIfGp_particle_set(0x8781, ¤t.pos, &tevStr, ¤t.angle, &scale); + dComIfGp_particle_set(0x8782, ¤t.pos, &tevStr, ¤t.angle, &scale); + dComIfGp_particle_set(0x8783, ¤t.pos, &tevStr, ¤t.angle, &scale); + + SetAnm(BCK_SC_S_JUMP_C, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mAction = ACTION_DAMAGE; + field_0x978 = XREG_F(4) + -0.6f; + field_0x6dc = XREG_F(2) + 0.04f; + field_0x97c = XREG_F(3) + 0.05f; + field_0x974 = 0.05f; + field_0x980 = XREG_F(5) + 3000.0f; + field_0x6c0[0] = 40; + field_0x6be = 0; + + for (int i = 0; i < 2; i++) { + E_SM_Damage(); + } + + field_0x6e8 = 0.36f; + field_0x6c0[0] = 30; + field_0xe50.ClrCcMove(); + field_0xe8c.SetWeight(150); + } + break; + + case 20: + if (current.pos.y < field_0x990.y + 80.0f) { + speed.y = 0.0f; + speedF = 0.0f; + + if (mAnm != BCK_SC_S_JUMP_C) { + SetAnm(BCK_SC_S_JUMP_C, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } + + cXyz sp2c; + sp2c = field_0x990; + sp2c.y += 80.0f; + + if (cLib_chasePos(¤t.pos, sp2c, 6.0f) != 0) { + mCoreAction = CORE_ACTION_NORMAL; + field_0x6b2 = 0; + mAction = ACTION_NORMAL; + mMode = 0; + } + } + break; + + case 6: + field_0xe50.ClrCcMove(); + speedF = 0.0f; + cLib_chaseF(&speed.y, 0.0f, yREG_F(3) + 17.0f); + cLib_chaseF(&speedF, 0.0f, yREG_F(7) + 3.5f); + cLib_chaseF(¤t.pos.x, field_0x990.x, 8.0f); + cLib_chaseF(¤t.pos.z, field_0x990.z, 8.0f); + + if (mpModelMorf->isStop()) { + SetAnm(BCK_SC_MOVE02, J3DFrameCtrl::EMode_LOOP, 1.0f, 5.0f); + } + + if (speed.y == 0.0f && speedF == 0.0f) { + cXyz sp38; + sp38 = field_0x990; + sp38.y += 80.0f; + + if (cLib_chasePos(¤t.pos, sp38, oREG_F(7) + 5.0f) != 0) { + mCoCore.SetTgType(0); + mCoCore.SetTgType(0x4000); + field_0x6be = 0; + field_0x9c4 = 0; + + if (!field_0xa08) { + mCoreAction = CORE_ACTION_NORMAL; + field_0x6b2 = 0; + field_0x6b4 = 0; + field_0x6b6 = 0; + mAction = ACTION_NORMAL; + mMode = 0; + } + + field_0x68c = true; + mCoCore.OnTgSetBit(); + } + } + break; + } + + cLib_chaseAngleS(¤t.angle.y, field_0x6d8, 0x400); +} + +/* 807951EC-80795244 0030AC 0058+00 1/1 0/0 0/0 .text E_SM_C_Escape__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Escape() { + switch (field_0x6b4) { + case 0: + E_SM_C_Near_Escape(); + break; + + case 1: + E_SM_C_Far_Escape(); + break; + + case 2: + E_SM_C_Home_Escape(); + break; + } +} + +/* 80795244-80795530 003104 02EC+00 3/3 0/0 0/0 .text E_SM_C_Free__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Free() { + fopAcM_GetPosition(daPy_getPlayerActorClass()); + + switch (field_0x6b2) { + case 0: + if (field_0x68c) { + field_0xa18 = dComIfGp_particle_set(field_0xa18, 0x8784, ¤t.pos, &tevStr, ¤t.angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + field_0xa1c = dComIfGp_particle_set(field_0xa1c, 0x8788, ¤t.pos, &tevStr, ¤t.angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + } + + field_0x9c4 = 1; + + if (mpModelMorf->checkFrame(7.0f)) { + if (field_0xa60.ChkWaterHit()) { + mSound.startCreatureSound(Z2SE_CM_BODYFALL_ASASE_S, 0, -1); + } else { + mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + } + } + + if (mpModelMorf->checkFrame(53.0f)) { + if (field_0xa60.ChkWaterHit()) { + mSound.startCreatureSound(Z2SE_EN_SC_LAND_WATER, 0, -1); + } else { + mSound.startCreatureSound(Z2SE_EN_SC_LAND, 0, -1); + } + } + + if (mpModelMorf->checkFrame(32.0f)) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_LIBERATION, -1); + } + + if (mpModelMorf->isStop()) { + mCoCore.SetTgType(0xD8FBFDFF); + mCoCore.OnCoSetBit(); + mCoCore.OnCoSameActorHit(); + mCoCore.OnCoSameActorHit(); + field_0x6b2 = 1; + field_0x6b4 = 0; + field_0x6b6 = 0; + field_0x6d8 = s_TargetAngle + 0x8000; + } + break; + + case 1: + E_SM_C_Escape(); + break; + } +} + +/* 80795530-807958A0 0033F0 0370+00 1/1 0/0 0/0 .text E_SM_C_Death__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Death() { + field_0xe50.ClrCcMove(); + + switch (field_0x6b4) { + case 0: { + attention_info.flags = 0; + s16 sVar1 = current.angle.y - s_TargetAngle; + + if (sVar1 > -0x4000 && sVar1 < 0x4000) { + speed.y = 35.0f; + speedF = -15.0f; + field_0x6b4 = 1; + } else { + speed.y = 35.0f; + speedF = 10.0f; + field_0x6b4 = 1; + } + break; + } + + case 1: + if (field_0xa60.ChkGroundHit()) { + SetAnm(BCK_SC_DEAD, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + field_0x6b4 = 2; + speedF = 0.0f; + speed.set(0.0f, 0.0f, 0.0f); + } + break; + + case 2: + speedF = 0.0f; + + if (mpModelMorf->checkFrame(4.0f)) { + if (field_0xa60.ChkWaterHit()) { + mSound.startCreatureSound(Z2SE_CM_BODYFALL_ASASE_S, 0, -1); + } else { + mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + } + } + + if (mpModelMorf->isStop()) { + field_0x698 = true; + + if (cLib_chaseF(&field_0x690, 0.1f, 0.005f) != 0) { + fopAcM_createDisappear(this, ¤t.pos, 10, 0, 23); + + if (field_0x684) { + fopAcM_delete(this); + if (mSwBit != 0xFF) { + if (!dComIfGs_isSwitch(mSwBit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwBit, fopAcM_GetRoomNo(this)); + } + } + } + + field_0x683 = true; + field_0x6b4 = 3; + field_0x6ca[2] = 30; + } + } + break; + + case 3: + cLib_chaseF(&field_0x6e0, XREG_F(6) + 0.7f, 0.06f); + cLib_chaseF(&field_0x694, 0.0f, 0.03f); + cLib_chaseF(&field_0x6b8, 0.0f, 0.03f); + + if (field_0x6ca[2] == 0) { + if (!field_0x682) { + field_0x682 = true; + + for (int i = 0; i < 30; i++) { + daArrow_c* arrow_p; + if (fopAcM_SearchByID(mArrowProcIDs[i], (fopAc_ac_c**)&arrow_p) != 0 && arrow_p != NULL) { + arrow_p->deleteArrow(); + } + } + } + + field_0x6b4 = 4; + field_0x6ca[2] = 30; + field_0x684 = true; + } + break; + + case 4: + if (mSwBit != 0xFF) { + if (!dComIfGs_isSwitch(mSwBit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwBit, fopAcM_GetRoomNo(this)); + } + } + + fopAcM_delete(this); + break; + } +} + +/* 807958A0-80795E64 003760 05C4+00 1/1 0/0 0/0 .text C_DamageCheck__8daE_SM_cFv */ +void daE_SM_c::C_DamageCheck() { + cXyz& pos = fopAcM_GetPosition(daPy_getPlayerActorClass()); + + if (field_0x6d6 > 0) { + mCoCore.ClrTgHit(); + } else { + field_0xe8c.Move(); + field_0xe50.Move(); + + if (mCoCore.ChkTgHit()) { + field_0xe50.ClrCcMove(); + speedF = 0.0f; + field_0x6d6 = 10; + field_0x6b6 = 4; + s16 sVar1 = current.angle.y - s_TargetAngle; + + if (sVar1 > 0x4000 || sVar1 < -0x4000) { + SetAnm(BCK_SC_DAMAGEB, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } else if (sVar1 <= 0x4000 && sVar1 >= 0) { + SetAnm(BCK_SC_DAMAGEL, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } else { + SetAnm(BCK_SC_DAMAGER, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + } + + mAtInfo.mpCollider = mCoCore.GetTgHitObj(); + mAtInfo.field_0x18 = 30; + cc_at_check(this, &mAtInfo); + speedF = 0.0f; + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) { + mCoCore.SetTgType(0xD8FBFDFF); + + if (mCoreAction == CORE_ACTION_NORMAL) { + field_0x68c = true; + } else { + field_0x68c = false; + } + + csXyz i_rotation(0, fopAcM_searchPlayerAngleY(this), 0); + + if (mCoreAction != CORE_ACTION_FREE) { + dComIfGp_particle_set(0x877E, ¤t.pos, &tevStr, &i_rotation, &scale); + dComIfGp_particle_set(0x877F, ¤t.pos, &tevStr, &i_rotation, &scale); + dComIfGp_particle_set(0x8780, ¤t.pos, &tevStr, &i_rotation, &scale); + field_0x6ac = true; + field_0x6dc = 0.05f; + field_0x978 = -0.1f; + field_0x6dc = 0.1f; + field_0x6c0[0] = 50; + field_0x980 = 2000.0f; + field_0x6e8 = -0.33f; + mAction = ACTION_DAMAGE; + } else { + field_0x6ac = false; + } + + mSound.startCreatureVoice(Z2SE_EN_SC_V_F_SHOCK, -1); + field_0x6c0[0] = 10; + mCoCore.OffTgNoHitMark(); + mCoreAction = CORE_ACTION_HOOK; + SetAnm(BCK_SC_F_SHOCK, J3DFrameCtrl::EMode_LOOP, 1.0f, 3.0f); + speedF = 0.0f; + field_0xe8c.SetWeight(254); + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_IRON_BALL)) { + if (mCoreAction != CORE_ACTION_FREE) { + mCoreAction = CORE_ACTION_DEATH; + mSound.startCreatureVoice(Z2SE_EN_SC_V_DEAD, -1); + field_0x6b2 = 1; + field_0x6b4 = 0; + mAction = ACTION_UNK; + cXyz i_scale(1.5f, 1.5f, 1.5f); + Particle_Set(0x85BF, i_scale, current.pos, current.angle); + field_0x684 = true; + + for (int i = 0; i < 30; i++) { + field_0x682 = true; + daArrow_c* arrow_p; + if (fopAcM_SearchByID(mArrowProcIDs[i], (fopAc_ac_c**)&arrow_p) != 0 && arrow_p != NULL) { + arrow_p->deleteArrow(); + } + } + } else { + mCoreAction = CORE_ACTION_DEATH; + mSound.startCreatureVoice(Z2SE_EN_SC_V_DEAD, -1); + field_0x6b2 = 0; + field_0x6b4 = 0; + } + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_SHIELD_ATTACK)) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_DAMAGE, -1); + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG)) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_DAMAGE, -1); + } else { + field_0x984--; + + if (field_0x984 > 0) { + mSound.startCreatureVoice(Z2SE_EN_SC_V_DAMAGE, -1); + } + } + + field_0xe50.Move(); + mCoCore.ClrTgHit(); + } + + if (field_0x984 <= 0 || health <= 0) { + health = 0; + mCoreAction = CORE_ACTION_DEATH; + mSound.startCreatureVoice(Z2SE_EN_SC_V_DEAD, -1); + field_0x6b2 = 0; + field_0x6b4 = 0; + } + } +} + +/* 80795E64-80796060 003D24 01FC+00 1/1 0/0 0/0 .text E_SM_C_Hook__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Hook() { + daPy_py_c* player = daPy_getPlayerActorClass(); + fopAcM_GetPosition(player); + + if (!player->checkHookshotReturnMode() || field_0xa60.ChkWallHit()) { + fopAcM_cancelHookCarryNow(this); + speedF = IREG_F(18); + speed.set(0.0f, 0.0f, 0.0f); + current.pos.y -= 40.0f; + mCoreAction = CORE_ACTION_FREE; + field_0x6b2 = 0; + SetAnm(BCK_SC_LIBERATION, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + field_0x6ac = false; + } else { + if (strcmp("D_SB01", dComIfGp_getStartStageName()) == 0 && current.pos.y > field_0x990.y + 800.0f) { + fopAcM_cancelHookCarryNow(this); + speedF = IREG_F(18); + speed.set(0.0f, 0.0f, 0.0f); + current.pos.y -= 40.0f; + mCoreAction = CORE_ACTION_FREE; + field_0x6b2 = 0; + SetAnm(BCK_SC_LIBERATION, J3DFrameCtrl::EMode_NONE, 1.0f, 3.0f); + field_0x6ac = false; + } + + cXyz sp28(0.0f, yREG_F(4) + -60.0f, 0.0f); + daPy_getPlayerActorClass()->setHookshotCarryOffset(fopAcM_GetID(this), &sp28); + + if (mAnm == BCK_SC_F_SHOCK && mpModelMorf->isStop()) { + SetAnm(BCK_SC_DRAW, J3DFrameCtrl::EMode_LOOP, 1.0f, 3.0f); + } + } + +} + +/* 80796060-807960E4 003F20 0084+00 1/1 0/0 0/0 .text CheckViewArea__8daE_SM_cFv */ +bool daE_SM_c::CheckViewArea() { + Vec vec; + mDoLib_project(¤t.pos, &vec); + bool rv = false; + + if (vec.x >= 0.0f && vec.x <= 608.0f && vec.y >= 0.0f && vec.y <= 448.0f) { + rv = true; + } + + return rv; +} + +/* 807960E4-80796204 003FA4 0120+00 1/1 0/0 0/0 .text CameraSet__8daE_SM_cFv */ +bool daE_SM_c::CameraSet() { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + dCamera_c* camBody = dCam_getBody(); + bool rv; + + if (!eventInfo.checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xFFFF, 0); + eventInfo.onCondition(dEvtCnd_NONE_e); + rv = false; + } else { + camera->mCamera.Stop(); + mFovy = camBody->Fovy(); + mDemoCamCenter = camBody->Center(); + field_0x9e0 = mDemoCamCenter; + mDemoCamEye = camBody->Eye(); + field_0x9f8 = mDemoCamEye; + camera->mCamera.SetTrimSize(3); + rv = true; + } + + return rv; +} + +/* 80796204-80796324 0040C4 0120+00 2/2 0/0 0/0 .text SetStopCam__8daE_SM_cF4cXyzffs */ +void daE_SM_c::SetStopCam(cXyz param_1, f32 param_2, f32 param_3, s16 param_4) { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + cXyz sp28(0.0f, param_3, param_2); + cXyz eye(0.0f, 0.0f, 0.0f); + + mDemoCamCenter.set(param_1.x, param_1.y, param_1.z); + field_0x9e0 = mDemoCamCenter; + cLib_offsetPos(&eye, ¶m_1, param_4, &sp28); + mDemoCamEye = eye; + field_0x9f8 = eye; + camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mFovy, 0); +} + +/* 80796324-80796368 0041E4 0044+00 1/1 0/0 0/0 .text SetCMoveCam__8daE_SM_cF4cXyzff */ +void daE_SM_c::SetCMoveCam(cXyz param_1, f32 i_scale, f32 i_maxStep) { + field_0x9e0 = param_1; + cLib_addCalcPos2(&mDemoCamCenter, field_0x9e0, i_scale, i_maxStep); +} + +/* 80796368-807963EC 004228 0084+00 1/1 0/0 0/0 .text SetStopingCam__8daE_SM_cFv */ +void daE_SM_c::SetStopingCam() { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mFovy, 0); +} + +/* 807963EC-80796490 0042AC 00A4+00 1/1 0/0 0/0 .text SetReleaseCam__8daE_SM_cFv */ +void daE_SM_c::SetReleaseCam() { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + camera->mCamera.Reset(mDemoCamCenter, mDemoCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); +} + +/* 80796490-80796628 004350 0198+00 1/1 0/0 0/0 .text DemoStart__8daE_SM_cFv */ +void daE_SM_c::DemoStart() { + cXyz sp18; + + switch (mDemoMode) { + case 0: + if (CameraSet()) { + current.angle.y = s_TargetAngle; + shape_angle.y = current.angle.y; + SetAnm(BCK_SC_WAIT02, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + current.pos.y = field_0xa60.GetGroundH(); + sp18 = current.pos; + sp18.y += 80.0f; + SetStopCam(sp18, 300.0f, 0.0f, s_TargetAngle); + field_0x6c0[0] = 10; + mDemoMode++; + field_0xe8c.SetWeight(254); + } + break; + + case 1: + if (field_0x6c0[0] == 0) { + mDemoMode++; + SetAnm(BCK_SC_KYORO, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_KYORO, -1); + field_0x6b2 = 0; + field_0x6b4 = 2; + } + break; + + case 2: + if (!CheckViewArea()) { + mCDemoMode = 1; + mDemoMode = 0; + } + + E_SM_C_Free(); + break; + } +} + +/* 80796628-807968A0 0044E8 0278+00 1/1 0/0 0/0 .text DemoMid__8daE_SM_cFv */ +void daE_SM_c::DemoMid() { + cXyz sp1c; + bool bVar1 = true; + + switch (mDemoMode) { + case 0: + SetStopCam(field_0x990, 500.0f, 100.0f, s_TargetAngle); + mDemoCamCenter = current.pos; + mDemoCamCenter.y += 80.0f; + field_0x9e0 = mDemoCamCenter; + SetStopingCam(); + mDemoMode++; + break; + + case 1: + sp1c = current.pos; + sp1c.y += 80.0f; + SetCMoveCam(sp1c, yREG_F(6) + 0.1f, yREG_F(5) + 25.0f); + SetStopingCam(); + + if (field_0x9c4 == 0) { + if (mAnm != BCK_SC_PROVOKE && mAnm != BCK_SC_MOVE02) { + mMode = 3; + SetAnm(BCK_SC_PROVOKE, J3DFrameCtrl::EMode_NONE, 1.0f, 5.0f); + mSound.startCreatureVoice(Z2SE_EN_SC_V_PROVOKE, -1); + } else { + if (mpModelMorf->isStop()) { + mAction = ACTION_NORMAL; + mMode = 0; + field_0x98c = 0; + mCoreAction = CORE_ACTION_NORMAL; + field_0x6b2 = 0; + field_0x6b4 = 0; + field_0x6b6 = 0; + SetReleaseCam(); + field_0xa08 = false; + + if (mSwBit2 != 0xFF && !dComIfGs_isSwitch(mSwBit2, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwBit2, fopAcM_GetRoomNo(this)); + } + } + } + + bVar1 = false; + field_0x6d8 = cLib_targetAngleY(¤t.pos, &mDemoCamEye); + current.angle.y = field_0x6d8; + shape_angle.y = current.angle.y; + } + break; + } + + if (bVar1) { + E_SM_C_Free(); + } + + field_0x9b0.y = s_TargetAngle; +} + +/* 807968A0-807968E4 004760 0044+00 1/1 0/0 0/0 .text E_SM_C_Demo__8daE_SM_cFv */ +void daE_SM_c::E_SM_C_Demo() { + switch (mCDemoMode) { + case 0: + DemoStart(); + break; + + case 1: + DemoMid(); + break; + } +} + +/* 807968E4-80796AEC 0047A4 0208+00 2/1 0/0 0/0 .text CoreAction__8daE_SM_cFv */ +void daE_SM_c::CoreAction() { + cXyz sp1c, sp28; + s8 sVar1 = 0; + + switch (mCoreAction) { + case CORE_ACTION_NORMAL: + C_DamageCheck(); + E_SM_C_Normal(); + mCoCore.OnTgNoHitMark(); + break; + + case CORE_ACTION_FIGHT: + C_DamageCheck(); + E_SM_C_Fight(); + break; + + case CORE_ACTION_FREE: + if (field_0x6b6 != 7 && field_0x6b6 != 6) { + C_DamageCheck(); + } else { + field_0x6d6 = 0; + field_0x6d4 = 0; + mCoCore.ClrTgHit(); + mCoSm.ClrTgHit(); + } + + E_SM_C_Free(); + sVar1 = 1; + break; + + case CORE_ACTION_DEATH: + E_SM_C_Death(); + sVar1 = 1; + break; + + case CORE_ACTION_HOOK: + mCoCore.OffTgNoHitMark(); + E_SM_C_Hook(); + sVar1 = 1; + break; + + case CORE_ACTION_DEMO: + E_SM_C_Demo(); + sVar1 = 1; + break; + } + + if (sVar1 == 0) { + current.pos.set(field_0x990.x, field_0x990.y + 80.0f, field_0x990.z); + current.pos.y += std::abs(cM_ssin(field_0x6be)) * -25.0f; + } else { + if (sVar1 == 1) { + fopAcM_posMoveF(this, field_0xe50.GetCCMoveP()); + + if (mCoreAction != CORE_ACTION_NORMAL) { + if (field_0x6b6 != 6) { + gravity = -9.0f; + } else { + gravity = 0.0f; + current.pos.y += speed.y; + } + } else { + gravity = 0.0f; + } + + field_0xa60.CrrPos(dComIfG_Bgsp()); + fopAcM_OffStatus(this, fopAcM_STATUS_UNK_000100); + } + } + + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y, 5, 0x1000); +} + +/* 80796AEC-80796D80 0049AC 0294+00 1/1 0/0 0/0 .text ArrowOn__8daE_SM_cFv */ +void daE_SM_c::ArrowOn() { + cXyz sp68, sp74; + f32 fVar1 = 1.0f - field_0x6e4 * 0.2f; + f32 fVar2 = field_0x6f0 / field_0x6e0; + f32 fVar3 = field_0x6f0 * field_0x6e0; + f32 fVar4 = 1.0f / field_0x6f0; + + for (int i = 0; i < 30; i++) { + if (field_0x6f9[i] != 0) { + mDoMtx_stack_c::transS(field_0x990.x, field_0x990.y, field_0x990.z); + mDoMtx_stack_c::YrotM(field_0x9b0.y); + mDoMtx_stack_c::scaleM(fVar1, fVar1, field_0x6e4 + 1.0f); + mDoMtx_stack_c::YrotM(-field_0x9b0.y); + mDoMtx_stack_c::scaleM(fVar2, fVar3, fVar2); + mDoMtx_stack_c::transM(20.0f, 0.0f, 20.0f); + mDoMtx_stack_c::ZrotM(field_0x9b0.z); + mDoMtx_stack_c::XrotM(field_0x9b0.z); + mDoMtx_stack_c::scaleM(1.0f - field_0x6dc, field_0x6dc + 1.0f, 1.0f - field_0x6dc); + mDoMtx_stack_c::XrotM(-field_0x9b0.z); + mDoMtx_stack_c::ZrotM(-field_0x9b0.z); + mDoMtx_stack_c::transM(-20.0f, -0.0f, -20.0f); + mDoMtx_stack_c::transM(0.0f, 50.0f, 0.0f); + mDoMtx_stack_c::YrotM(field_0x808[i].y); + mDoMtx_stack_c::XrotM(field_0x808[i].x); + mDoMtx_stack_c::transM(0.0f, 0.0f, field_0x790[i]); + mDoMtx_stack_c::YrotM(field_0x8bc[i].y); + mDoMtx_stack_c::XrotM(field_0x8bc[i].x); + + cLib_addCalcAngleS2(&field_0x8bc[i].y, 0, 8, 0x800); + cLib_addCalcAngleS2(&field_0x8bc[i].x, 0, 8, 0x800); + mDoMtx_stack_c::scaleM(fVar4, fVar4, fVar4); + + daArrow_c* arrow_p; + if (fopAcM_SearchByID(mArrowProcIDs[i], (fopAc_ac_c**)&arrow_p) != 0 && arrow_p != NULL) { + arrow_p->setModelMatrix(mDoMtx_stack_c::get()); + } + } + } +} + +/* 80796D80-80796FC4 004C40 0244+00 1/1 0/0 0/0 .text Execute__8daE_SM_cFv */ +int daE_SM_c::Execute() { + field_0x99c = field_0x990; + s_TargetAngle = fopAcM_searchPlayerAngleY(this); + s_Dis = fopAcM_searchPlayerDistanceXZ(this); + cLib_addCalc2(&field_0x6f0, scale.x * l_HIO.basic_size, 0.1f, 0.1f); + + for (int i = 0; i < 5; i++) { + if (field_0x6c0[i] != 0) { + field_0x6c0[i]--; + } + + if (field_0x6ca[i] != 0) { + field_0x6ca[i]--; + } + } + + if (field_0x6d4 != 0) { + field_0x6d4--; + } + + if (field_0x6d6 != 0) { + field_0x6d6--; + } + + fopAcM_OnStatus(this, fopAcM_STATUS_UNK_000100); + Action(); + CoreAction(); + cXyz i_effSize(1.0f, 1.0f, 1.0f); + setMidnaBindEffect(this, &mSound, ¤t.pos, &i_effSize); + setSmBaseMtx(); + setBaseMtx(); + CoSmSet(); + CoCoreSet(); + + if (mCoreAction == CORE_ACTION_FREE) { + eyePos = current.pos; + eyePos.y += 80.0f; + attention_info.position = eyePos; + attention_info.position.y += 80.0f; + } else { + eyePos = current.pos; + eyePos.y += 10.0f; + attention_info.position = eyePos; + attention_info.position.y += 50.0f; + } + + mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (!field_0x682) { + ArrowOn(); + } + + return 1; +} + +/* 80796FC4-80797274 004E84 02B0+00 1/1 0/0 0/0 .text setSmBaseMtx__8daE_SM_cFv */ +void daE_SM_c::setSmBaseMtx() { + mDoMtx_stack_c::transS(field_0x990); + mDoMtx_stack_c::YrotM(field_0x9b0.y); + + f32 fVar1 = 1.0f - field_0x6e4 * 0.2f; + mDoMtx_stack_c::scaleM(fVar1, fVar1, field_0x6e4 + 1.0f); + mDoMtx_stack_c::transM(0.0f, 0.0f, field_0x69c); + + fVar1 = field_0x6f0 / field_0x6e0; + mDoMtx_stack_c::scaleM(fVar1, field_0x6f0 * field_0x6e0, fVar1); + mDoMtx_stack_c::transM(0.0f, 0.0f, -field_0x69c); + mDoMtx_stack_c::YrotM(-field_0x9b0.y); + + field_0x9b0.z = field_0x6bc; + mDoMtx_stack_c::transM(20.0f, 0.0f, 20.0f); + mDoMtx_stack_c::ZrotM(field_0x9b0.z); + mDoMtx_stack_c::XrotM(field_0x9b0.z); + mDoMtx_stack_c::scaleM(1.0f - field_0x6dc, field_0x6dc + 1.0f, 1.0f - field_0x6dc); + mDoMtx_stack_c::XrotM(-field_0x9b0.z); + mDoMtx_stack_c::ZrotM(-field_0x9b0.z); + mDoMtx_stack_c::transM(-20.0f, -0.0f, -20.0f); + mDoMtx_stack_c::transM(20.0f, 0.0f, -20.0f); + mDoMtx_stack_c::ZrotM(field_0x9b0.z); + mDoMtx_stack_c::YrotM(field_0x9b0.z); + mDoMtx_stack_c::scaleM(1.0f - field_0x6dc, field_0x6dc + 1.0f, 1.0f - field_0x6dc); + mDoMtx_stack_c::YrotM(-field_0x9b0.z); + mDoMtx_stack_c::ZrotM(-field_0x9b0.z); + mDoMtx_stack_c::transM(-20.0f, -0.0f, 20.0f); + mDoMtx_stack_c::transM(-20.0f, 0.0f, 20.0f); + mDoMtx_stack_c::ZrotM(field_0x9b0.z); + mDoMtx_stack_c::scaleM(1.0f - field_0x6dc, field_0x6dc + 1.0f, 1.0f - field_0x6dc); + mDoMtx_stack_c::ZrotM(-field_0x9b0.z); + mDoMtx_stack_c::transM(20.0f, -0.0f, -20.0f); + mDoMtx_stack_c::transM(-20.0f, 0.0f, -20.0f); + mDoMtx_stack_c::XrotM(field_0x9b0.z); + mDoMtx_stack_c::scaleM(1.0f - field_0x6dc, field_0x6dc + 1.0f, 1.0f - field_0x6dc); + mDoMtx_stack_c::XrotM(-field_0x9b0.z); + mDoMtx_stack_c::transM(20.0f, -0.0f, 20.0f); + mpBubbleModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} + +/* 80797274-8079730C 005134 0098+00 1/1 0/0 0/0 .text setBaseMtx__8daE_SM_cFv */ +void daE_SM_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_stack_c::ZrotM(shape_angle.z); + mDoMtx_stack_c::scaleM(l_HIO.core_size, l_HIO.core_size, l_HIO.core_size); + mpModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + mpModelMorf->modelCalc(); +} + +/* 8079730C-80797444 0051CC 0138+00 1/1 0/0 0/0 .text CoCoreSet__8daE_SM_cFv */ +void daE_SM_c::CoCoreSet() { + cXyz sp18; + sp18 = current.pos; + + if (mCoreAction == CORE_ACTION_DEATH) { + if (field_0x6b4 == 0 || field_0x6b4 == 1) { + sp18.y = current.pos.y + 80.0f; + mCoCore.SetC(sp18); + mCoCore.SetR(40.0f); + dComIfG_Ccsp()->Set(&mCoCore); + } + } else if (mCoreAction == CORE_ACTION_NORMAL || mCoreAction == CORE_ACTION_FIGHT) { + sp18.y = current.pos.y; + mCoCore.SetC(sp18); + mCoCore.SetR(KREG_F(6) + 40.0f); + dComIfG_Ccsp()->Set(&mCoCore); + } else { + sp18.y = current.pos.y + 80.0f; + mCoCore.SetC(sp18); + mCoCore.SetR(KREG_F(6) + 40.0f); + dComIfG_Ccsp()->Set(&mCoCore); + } +} + +/* 80797444-807974E8 005304 00A4+00 1/1 0/0 0/0 .text CoSmSet__8daE_SM_cFv */ +void daE_SM_c::CoSmSet() { + cXyz sp18(0.0f, field_0x6f0 * 80.0f, 0.0f); + sp18 += field_0x990; + + if (!field_0x684) { + mCoSm.SetC(sp18); + mCoSm.SetR(field_0x6f0 * 150.0f); + dComIfG_Ccsp()->Set(&mCoSm); + } +} + +/* 807974E8-807974F0 0053A8 0008+00 1/0 0/0 0/0 .text daE_SM_IsDelete__FP8daE_SM_c */ +static int daE_SM_IsDelete(daE_SM_c* i_this) { + return 1; +} + +/* 807974F0-80797510 0053B0 0020+00 1/0 0/0 0/0 .text daE_SM_Delete__FP8daE_SM_c */ +static int daE_SM_Delete(daE_SM_c* i_this) { + return i_this->Delete(); +} + +/* 80797510-80797530 0053D0 0020+00 1/0 0/0 0/0 .text daE_SM_Draw__FP8daE_SM_c */ +static int daE_SM_Draw(daE_SM_c* i_this) { + return i_this->Draw(); +} + +/* 80797530-80797550 0053F0 0020+00 2/1 0/0 0/0 .text daE_SM_Execute__FP8daE_SM_c */ +static int daE_SM_Execute(daE_SM_c* i_this) { + return i_this->Execute(); +} + +/* 80797550-80797570 005410 0020+00 1/0 0/0 0/0 .text daE_SM_Create__FP10fopAc_ac_c */ +static int daE_SM_Create(fopAc_ac_c* a_this) { + return static_cast(a_this)->Create(); +} + +/* 80797570-8079762C 005430 00BC+00 1/1 0/0 0/0 .text Delete__8daE_SM_cFv */ +int daE_SM_c::Delete() { + dComIfG_resDelete(&mPhase, "E_SM"); + + for (int i = 0; i < 30; i++) { + daArrow_c* arrow_p; + if (fopAcM_SearchByID(mArrowProcIDs[i], (fopAc_ac_c**)&arrow_p) != 0 && arrow_p != NULL) { + arrow_p->deleteArrow(); + } + } + + if (field_0x115c != 0) { + l_initHIO = 0; + } + + if (heap != NULL) { + mpModelMorf->stopZelAnime(); + } + + mSoundSimple.deleteObject(); + + return 1; +} + +/* 8079762C-8079764C 0054EC 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* a_this) { + return static_cast(a_this)->CreateHeap(); +} + +/* 8079764C-80797784 00550C 0138+00 1/1 0/0 0/0 .text CreateHeap__8daE_SM_cFv */ +int daE_SM_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_SM", BMDE_SM); + + JUT_ASSERT(3246, modelData != 0); + + mpBubbleModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203); + if (mpBubbleModel == NULL) { + return 0; + } + + mpModelMorf = new mDoExt_McaMorfSO((J3DModelData*)dComIfG_getObjectRes("E_SM", BMDR_SC), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_SM", BCK_SC_WAIT), 2, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) { + return 0; + } + + return 1; +} + +/* 80797784-80797858 005644 00D4+00 1/1 0/0 0/0 .text initCoSph__8daE_SM_cFv */ +void daE_SM_c::initCoSph() { + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xd}, {0xd8fbbdff, 0x3}, 0x75}}, // mObj + {dCcD_SE_SOFT_BODY, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 20.0f} // mSph + } // mSphAttr + }; + + static dCcD_SrcSph core_sph_src = { + { + {0x0, {{0x0, 0x0, 0xd}, {0x4000, 0x43}, 0x75}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr + }; + + field_0xe50.Init(150, 0, this); + field_0xe8c.Init(150, 0, this); + field_0x6f0 = scale.x * l_HIO.basic_size; + mCoSm.Set(cc_sph_src); + mCoSm.SetStts(&field_0xe8c); + mCoSm.OnTgNoHitMark(); + mCoSm.OffAtSetBit(); + mCoSm.OnTgIronBallRebound(); + mCoCore.OffCoSetBit(); + mCoCore.Set(core_sph_src); + mCoCore.SetStts(&field_0xe50); + mCoCore.OnTgNoHitMark(); +} + +/* 80797858-80797CE0 005718 0488+00 1/1 0/0 0/0 .text Create__8daE_SM_cFv */ +cPhs__Step daE_SM_c::Create() { + fopAcM_SetupActor(this, daE_SM_c); + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhase, "E_SM"); + if (phase == cPhs_COMPLEATE_e) { + OS_REPORT("E_SM PARAM %x\n", fopAcM_GetParam(this)); + + mSwBit = fopAcM_GetParam(this) >> 8; + if (mSwBit != 0xFF) { + if (dComIfGs_isSwitch(mSwBit, fopAcM_GetRoomNo(this))) { + return cPhs_ERROR_e; + } + } + + scale.x = 1.0f; + + if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x3280)) { + OS_REPORT("//////////////E_SM SET NON !!\n"); + return cPhs_ERROR_e; + } + + if (l_initHIO == 0) { + l_initHIO = 1; + field_0x115c = 1; + l_HIO.field_0x4 = -1; + } + + field_0x9c8.set(1.0f, 1.0f, 1.0f); + mAction = ACTION_NORMAL; + mMode = 0; + mCoreAction = CORE_ACTION_NORMAL; + field_0x6b2 = 0; + field_0x6b4 = 0; + field_0x6b6 = 0; + field_0x990 = current.pos; + field_0x99c = field_0x990; + + if (fopAcM_GetRoomNo(this) == 10) { + mSwBit2 = fopAcM_GetParam(this) >> 16; + if (mSwBit2 == 0xFF || !dComIfGs_isSwitch(mSwBit2, fopAcM_GetRoomNo(this))) { + field_0xa08 = true; + mAction = ACTION_UNK; + mMode = 0; + mCoreAction = CORE_ACTION_DEMO; + mCDemoMode = 0; + + cXyz sp40(0.0f, 0.0f, 0.0f); + cXyz sp4c(700.0f, XREG_F(0) + 50.0f, -400.0f); + cLib_offsetPos(&sp40, ¤t.pos, current.angle.y, &sp4c); + current.pos = sp40; + SetAnm(BCK_SC_WAIT02, J3DFrameCtrl::EMode_NONE, 0.0f, 5.0f); + shape_angle.y = fopAcM_searchPlayerAngleY(this); + current.angle.y = shape_angle.y; + } + } + + if ((u8)fopAcM_GetParam(this) != 0xFF) { + field_0x970 = (fopAcM_GetParam(this) & 0xFF) * 100.0f; + } else { + field_0x970 = 1000.0f; + } + + initCoSph(); + field_0x6be = 0; + field_0xa10 = false; + fopAcM_SetMtx(this, mpBubbleModel->getBaseTRMtx()); + fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(this, -800.0f, -200.0f, -800.0f); + fopAcM_SetMax(this, 800.0f, 500.0f, 800.0f); + attention_info.flags = 4; + attention_info.distances[fopAc_attn_BATTLE_e] = 58; + + mSound.init(¤t.pos, NULL, 3, 1); + mSoundSimple.init(&field_0x990, 1); + field_0x682 = false; + mAtInfo.mpSound = &mSound; + mSound.setEnemyName("E_SM"); + + field_0xc38.SetWall(yREG_F(0) + 40.0f, yREG_F(1) + 120.0f + (TREG_F(11) + 30.0f) * field_0x6f0); + field_0xc78.Set(&field_0x990, &field_0x99c, this, 1, &field_0xc38, &field_0x9b8, NULL, NULL); + field_0xa20.SetWall(100.0f, 50.0f); + + field_0xa60.Set(¤t.pos, &old.pos, this, 1, &field_0xa20, &speed, NULL, NULL); + field_0xa60.OnLineCheck(); + field_0xa60.SetGndThinCellingOff(); + field_0xc78.SetGndThinCellingOff(); + + field_0x6bc = cM_rndF(65535.0f); + health = 80; + field_0x984 = 4; + field_0x6e0 = 1.0f; + field_0x694 = 1.0f; + + mSound.init(¤t.pos, &eyePos, 3, 1); + + field_0x690 = 0.0f; + mCoCore.OnTgSetBit(); + field_0x6b8 = 0.5f; + + for (int i = 0; i < 30; i++) { + mArrowProcIDs[i] = fpcM_ERROR_PROCESS_ID_e; + } + + daE_SM_Execute(this); + } + + return phase; +} + +/* 80797CE0-80797ED0 005BA0 01F0+00 1/1 0/0 0/0 .text __ct__8daE_SM_cFv */ +daE_SM_c::daE_SM_c() {} + +AUDIO_INSTANCES; + /* 807988B8-807988D8 -00001 0020+00 1/0 0/0 0/0 .data l_daE_SM_Method */ static actor_method_class l_daE_SM_Method = { - (process_method_func)daE_SM_Create__FP10fopAc_ac_c, - (process_method_func)daE_SM_Delete__FP8daE_SM_c, - (process_method_func)daE_SM_Execute__FP8daE_SM_c, - (process_method_func)daE_SM_IsDelete__FP8daE_SM_c, - (process_method_func)daE_SM_Draw__FP8daE_SM_c, + (process_method_func)daE_SM_Create, + (process_method_func)daE_SM_Delete, + (process_method_func)daE_SM_Execute, + (process_method_func)daE_SM_IsDelete, + (process_method_func)daE_SM_Draw, }; /* 807988D8-80798908 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_SM */ @@ -314,1222 +2076,3 @@ extern actor_process_profile_definition g_profile_E_SM = { fopAc_ENEMY_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80798908-80798914 00017C 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, -}; - -/* 80798914-80798920 000188 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80798920-8079892C 000194 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 8079892C-80798938 0001A0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80798938-80798944 0001AC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80798944-80798968 0001B8 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80798174, - (void*)NULL, - (void*)NULL, - (void*)func_8079816C, -}; - -/* 80798968-80798974 0001DC 000C+00 2/2 0/0 0/0 .data __vt__12daE_Sm_HIO_c */ -SECTION_DATA extern void* __vt__12daE_Sm_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_Sm_HIO_cFv, -}; - -/* 8079222C-80792260 0000EC 0034+00 1/1 0/0 0/0 .text __ct__12daE_Sm_HIO_cFv */ -daE_Sm_HIO_c::daE_Sm_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798610-80798614 000030 0004+00 1/1 0/0 0/0 .rodata @3955 */ -SECTION_RODATA static f32 const lit_3955 = -1.0f; -COMPILER_STRIP_GATE(0x80798610, &lit_3955); - -/* 80798780-80798780 0001A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80798780 = "E_SM"; -#pragma pop - -/* 80792260-8079230C 000120 00AC+00 13/13 0/0 0/0 .text SetAnm__8daE_SM_cFiiff */ -void daE_SM_c::SetAnm(int param_0, int param_1, f32 param_2, f32 param_3) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798614-80798618 000034 0004+00 0/1 0/0 0/0 .rodata @4010 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4010 = -255.0f; -COMPILER_STRIP_GATE(0x80798614, &lit_4010); -#pragma pop - -/* 80798618-8079861C 000038 0004+00 0/3 0/0 0/0 .rodata @4011 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4011 = 400.0f; -COMPILER_STRIP_GATE(0x80798618, &lit_4011); -#pragma pop - -/* 8079861C-80798620 00003C 0004+00 0/1 0/0 0/0 .rodata @4012 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4012 = 167.0f; -COMPILER_STRIP_GATE(0x8079861C, &lit_4012); -#pragma pop - -/* 80798620-80798624 000040 0004+00 0/1 0/0 0/0 .rodata @4013 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4013 = 195.0f; -COMPILER_STRIP_GATE(0x80798620, &lit_4013); -#pragma pop - -/* 8079230C-80792604 0001CC 02F8+00 1/1 0/0 0/0 .text Draw__8daE_SM_cFv */ -void daE_SM_c::Draw() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798624-80798628 000044 0004+00 3/7 0/0 0/0 .rodata @4051 */ -SECTION_RODATA static f32 const lit_4051 = 80.0f; -COMPILER_STRIP_GATE(0x80798624, &lit_4051); - -/* 80792604-80792720 0004C4 011C+00 3/3 0/0 0/0 .text way_bg_check__FP8daE_SM_cf4cXyzs */ -static void way_bg_check(daE_SM_c* param_0, f32 param_1, cXyz param_2, s16 param_3) { - // NONMATCHING -} - -/* 80792720-807927F8 0005E0 00D8+00 1/1 0/0 0/0 .text other_bg_check__FP8daE_SM_cP10fopAc_ac_c */ -static void other_bg_check(daE_SM_c* param_0, fopAc_ac_c* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798628-8079862C 000048 0004+00 1/3 0/0 0/0 .rodata @4095 */ -SECTION_RODATA static f32 const lit_4095 = 500.0f; -COMPILER_STRIP_GATE(0x80798628, &lit_4095); - -/* 807927F8-8079285C 0006B8 0064+00 1/1 0/0 0/0 .text pl_check__FP8daE_SM_cf */ -static void pl_check(daE_SM_c* param_0, f32 param_1) { - // NONMATCHING -} - -/* 8079285C-807928A4 00071C 0048+00 2/2 0/0 0/0 .text move_check__FP8daE_SM_cPi */ -static void move_check(daE_SM_c* param_0, int* param_1) { - // NONMATCHING -} - -/* 807928A4-80792914 000764 0070+00 1/1 0/0 0/0 .text Particle_Set__8daE_SM_cFUs4cXyz4cXyz5csXyz - */ -void daE_SM_c::Particle_Set(u16 param_0, cXyz param_1, cXyz param_2, csXyz param_3) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8079862C-80798630 00004C 0004+00 0/1 0/0 0/0 .rodata @4212 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4212 = 70.0f; -COMPILER_STRIP_GATE(0x8079862C, &lit_4212); -#pragma pop - -/* 80798630-80798634 000050 0004+00 0/1 0/0 0/0 .rodata @4213 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4213 = 230.0f; -COMPILER_STRIP_GATE(0x80798630, &lit_4213); -#pragma pop - -/* 80798634-80798638 000054 0004+00 0/1 0/0 0/0 .rodata @4214 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4214 = 130.0f; -COMPILER_STRIP_GATE(0x80798634, &lit_4214); -#pragma pop - -/* 80798638-8079863C 000058 0004+00 0/8 0/0 0/0 .rodata @4215 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4215 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80798638, &lit_4215); -#pragma pop - -/* 8079863C-80798640 00005C 0004+00 0/2 0/0 0/0 .rodata @4216 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4216 = -3.0f / 10.0f; -COMPILER_STRIP_GATE(0x8079863C, &lit_4216); -#pragma pop - -/* 80798640-80798644 000060 0004+00 0/8 0/0 0/0 .rodata @4217 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4217 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80798640, &lit_4217); -#pragma pop - -/* 80798644-80798648 000064 0004+00 0/3 0/0 0/0 .rodata @4218 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4218 = 2500.0f; -COMPILER_STRIP_GATE(0x80798644, &lit_4218); -#pragma pop - -/* 80798648-80798650 000068 0008+00 0/3 0/0 0/0 .rodata @4220 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4220[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80798648, &lit_4220); -#pragma pop - -/* 80792914-80792C20 0007D4 030C+00 1/1 0/0 0/0 .text ArrowCheck__8daE_SM_cFv */ -void daE_SM_c::ArrowCheck() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798650-80798654 000070 0004+00 0/2 0/0 0/0 .rodata @4294 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4294 = 3000.0f; -COMPILER_STRIP_GATE(0x80798650, &lit_4294); -#pragma pop - -/* 80798654-80798658 000074 0004+00 0/2 0/0 0/0 .rodata @4295 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4295 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x80798654, &lit_4295); -#pragma pop - -/* 80798658-8079865C 000078 0004+00 0/4 0/0 0/0 .rodata @4296 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4296 = 0x3BA3D70A; -COMPILER_STRIP_GATE(0x80798658, &lit_4296); -#pragma pop - -/* 8079865C-80798660 00007C 0004+00 0/6 0/0 0/0 .rodata @4297 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4297 = 0.5f; -COMPILER_STRIP_GATE(0x8079865C, &lit_4297); -#pragma pop - -/* 80798660-80798664 000080 0004+00 0/2 0/0 0/0 .rodata @4298 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4298 = 0x3DD70A3D; -COMPILER_STRIP_GATE(0x80798660, &lit_4298); -#pragma pop - -/* 80798664-80798668 000084 0004+00 0/3 0/0 0/0 .rodata @4299 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4299 = 3.0f / 100.0f; -COMPILER_STRIP_GATE(0x80798664, &lit_4299); -#pragma pop - -/* 80798668-8079866C 000088 0004+00 0/7 0/0 0/0 .rodata @4300 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4300 = 3.0f; -COMPILER_STRIP_GATE(0x80798668, &lit_4300); -#pragma pop - -/* 80792C20-80792E70 000AE0 0250+00 3/3 0/0 0/0 .text E_SM_Damage__8daE_SM_cFv */ -void daE_SM_c::E_SM_Damage() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8079866C-80798670 00008C 0004+00 0/1 0/0 0/0 .rodata @4460 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4460 = 15.0f; -COMPILER_STRIP_GATE(0x8079866C, &lit_4460); -#pragma pop - -/* 80798670-80798674 000090 0004+00 0/7 0/0 0/0 .rodata @4461 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4461 = 20.0f; -COMPILER_STRIP_GATE(0x80798670, &lit_4461); -#pragma pop - -/* 80798674-80798678 000094 0004+00 0/7 0/0 0/0 .rodata @4462 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4462 = 5.0f; -COMPILER_STRIP_GATE(0x80798674, &lit_4462); -#pragma pop - -/* 80798678-80798680 000098 0004+04 0/2 0/0 0/0 .rodata @4463 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4463[1 + 1 /* padding */] = { - 3.0f / 50.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80798678, &lit_4463); -#pragma pop - -/* 80798680-80798688 0000A0 0008+00 0/1 0/0 0/0 .rodata @4464 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4464[8] = { - 0xBF, 0xD6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, -}; -COMPILER_STRIP_GATE(0x80798680, &lit_4464); -#pragma pop - -/* 80798688-8079868C 0000A8 0004+00 0/2 0/0 0/0 .rodata @4465 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4465 = 1.5f; -COMPILER_STRIP_GATE(0x80798688, &lit_4465); -#pragma pop - -/* 80792E70-807936B4 000D30 0844+00 1/1 0/0 0/0 .text SmDamageCheck__8daE_SM_cFv */ -void daE_SM_c::SmDamageCheck() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8079868C-80798690 0000AC 0004+00 0/1 0/0 0/0 .rodata @4542 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4542 = -9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8079868C, &lit_4542); -#pragma pop - -/* 80798690-80798694 0000B0 0004+00 0/1 0/0 0/0 .rodata @4543 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4543 = 32767.0f; -COMPILER_STRIP_GATE(0x80798690, &lit_4543); -#pragma pop - -/* 80798694-80798698 0000B4 0004+00 0/4 0/0 0/0 .rodata @4544 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4544 = 50.0f; -COMPILER_STRIP_GATE(0x80798694, &lit_4544); -#pragma pop - -/* 80798698-8079869C 0000B8 0004+00 0/3 0/0 0/0 .rodata @4545 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4545 = -0.0f; -COMPILER_STRIP_GATE(0x80798698, &lit_4545); -#pragma pop - -/* 8079869C-807986A0 0000BC 0004+00 0/3 0/0 0/0 .rodata @4546 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4546 = 2.0f; -COMPILER_STRIP_GATE(0x8079869C, &lit_4546); -#pragma pop - -/* 807986A0-807986A4 0000C0 0004+00 0/5 0/0 0/0 .rodata @4547 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4547 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x807986A0, &lit_4547); -#pragma pop - -/* 807989C0-807989CC 000048 000C+00 1/1 0/0 0/0 .bss @3936 */ -static u8 lit_3936[12]; - -/* 807989CC-807989E0 000054 0014+00 4/5 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[20]; - -/* 807989E0-807989E4 000068 0004+00 3/4 0/0 0/0 .bss s_Dis__22@unnamed@d_a_e_sm_cpp@ */ -static u8 data_807989E0[4]; - -/* 807989E4-807989E8 00006C 0002+02 9/10 0/0 0/0 .bss s_TargetAngle__22@unnamed@d_a_e_sm_cpp@ */ -static u8 data_807989E4[2 + 2 /* padding */]; - -/* 807936B4-80793B64 001574 04B0+00 1/1 0/0 0/0 .text E_SM_Normal__8daE_SM_cFv */ -void daE_SM_c::E_SM_Normal() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986A4-807986A8 0000C4 0004+00 0/1 0/0 0/0 .rodata @4548 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4548 = 700.0f; -COMPILER_STRIP_GATE(0x807986A4, &lit_4548); -#pragma pop - -/* 807986A8-807986AC 0000C8 0004+00 0/2 0/0 0/0 .rodata @4587 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4587 = 1500.0f; -COMPILER_STRIP_GATE(0x807986A8, &lit_4587); -#pragma pop - -/* 807986AC-807986B0 0000CC 0004+00 0/1 0/0 0/0 .rodata @4588 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4588 = 45.0f; -COMPILER_STRIP_GATE(0x807986AC, &lit_4588); -#pragma pop - -/* 807986B0-807986B4 0000D0 0004+00 0/1 0/0 0/0 .rodata @4589 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4589 = 8.0f; -COMPILER_STRIP_GATE(0x807986B0, &lit_4589); -#pragma pop - -/* 807986B4-807986B8 0000D4 0004+00 0/2 0/0 0/0 .rodata @4590 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4590 = 1.0f / 50.0f; -COMPILER_STRIP_GATE(0x807986B4, &lit_4590); -#pragma pop - -/* 807986B8-807986BC 0000D8 0004+00 0/1 0/0 0/0 .rodata @4591 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4591 = -2.0f / 5.0f; -COMPILER_STRIP_GATE(0x807986B8, &lit_4591); -#pragma pop - -/* 807986BC-807986C0 0000DC 0004+00 0/1 0/0 0/0 .rodata @4592 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4592 = 3.0f / 20.0f; -COMPILER_STRIP_GATE(0x807986BC, &lit_4592); -#pragma pop - -/* 807986C0-807986C4 0000E0 0004+00 0/1 0/0 0/0 .rodata @4593 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4593 = 7.0f / 5.0f; -COMPILER_STRIP_GATE(0x807986C0, &lit_4593); -#pragma pop - -/* 80793B64-80793E18 001A24 02B4+00 1/1 0/0 0/0 .text E_SM_Move__8daE_SM_cFv */ -void daE_SM_c::E_SM_Move() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986C4-807986C8 0000E4 0004+00 0/3 0/0 0/0 .rodata @4637 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4637 = 2000.0f; -COMPILER_STRIP_GATE(0x807986C4, &lit_4637); -#pragma pop - -/* 807986C8-807986CC 0000E8 0004+00 0/1 0/0 0/0 .rodata @4638 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4638 = 2600.0f; -COMPILER_STRIP_GATE(0x807986C8, &lit_4638); -#pragma pop - -/* 807986CC-807986D0 0000EC 0004+00 0/1 0/0 0/0 .rodata @4639 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4639 = 0x3D27EF9E; -COMPILER_STRIP_GATE(0x807986CC, &lit_4639); -#pragma pop - -/* 807986D0-807986D4 0000F0 0004+00 0/1 0/0 0/0 .rodata @4640 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4640 = 17.0f / 20.0f; -COMPILER_STRIP_GATE(0x807986D0, &lit_4640); -#pragma pop - -/* 807986D4-807986D8 0000F4 0004+00 0/1 0/0 0/0 .rodata @4641 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4641 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x807986D4, &lit_4641); -#pragma pop - -/* 80793E18-80794100 001CD8 02E8+00 1/1 0/0 0/0 .text E_SM_Attack__8daE_SM_cFv */ -void daE_SM_c::E_SM_Attack() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986D8-807986DC 0000F8 0004+00 0/3 0/0 0/0 .rodata @4690 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4690 = 10.0f; -COMPILER_STRIP_GATE(0x807986D8, &lit_4690); -#pragma pop - -/* 80794100-80794338 001FC0 0238+00 1/1 0/0 0/0 .text Action__8daE_SM_cFv */ -void daE_SM_c::Action() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986DC-807986E0 0000FC 0004+00 2/2 0/0 0/0 .rodata @4703 */ -SECTION_RODATA static f32 const lit_4703 = 63.0f; -COMPILER_STRIP_GATE(0x807986DC, &lit_4703); - -/* 80794338-807943C4 0021F8 008C+00 1/1 0/0 0/0 .text E_SM_C_Normal__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Normal() { - // NONMATCHING -} - -/* 807943C4-80794458 002284 0094+00 1/1 0/0 0/0 .text E_SM_C_Fight__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Fight() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986E0-807986E4 000100 0004+00 0/2 0/0 0/0 .rodata @4764 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4764 = 600.0f; -COMPILER_STRIP_GATE(0x807986E0, &lit_4764); -#pragma pop - -/* 807986E4-807986E8 000104 0004+00 0/2 0/0 0/0 .rodata @4765 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4765 = 11.0f; -COMPILER_STRIP_GATE(0x807986E4, &lit_4765); -#pragma pop - -/* 80794458-8079473C 002318 02E4+00 1/1 0/0 0/0 .text E_SM_C_Near_Escape__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Near_Escape() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986E8-807986EC 000108 0004+00 0/1 0/0 0/0 .rodata @4825 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4825 = 12000.0f; -COMPILER_STRIP_GATE(0x807986E8, &lit_4825); -#pragma pop - -/* 8079473C-807949CC 0025FC 0290+00 1/1 0/0 0/0 .text E_SM_C_Far_Escape__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Far_Escape() { - // NONMATCHING -} - -/* 807949CC-807951EC 00288C 0820+00 2/1 0/0 0/0 .text E_SM_C_Home_Escape__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Home_Escape() { - // NONMATCHING -} - -/* 807951EC-80795244 0030AC 0058+00 1/1 0/0 0/0 .text E_SM_C_Escape__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Escape() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807986EC-807986F0 00010C 0004+00 0/0 0/0 0/0 .rodata @5011 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5011 = 220.0f; -COMPILER_STRIP_GATE(0x807986EC, &lit_5011); -#pragma pop - -/* 807986F0-807986F4 000110 0004+00 0/0 0/0 0/0 .rodata @5012 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5012 = 73.0f; -COMPILER_STRIP_GATE(0x807986F0, &lit_5012); -#pragma pop - -/* 807986F4-807986F8 000114 0004+00 0/0 0/0 0/0 .rodata @5013 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5013 = -3.0f / 5.0f; -COMPILER_STRIP_GATE(0x807986F4, &lit_5013); -#pragma pop - -/* 807986F8-807986FC 000118 0004+00 0/0 0/0 0/0 .rodata @5014 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5014 = 1.0f / 25.0f; -COMPILER_STRIP_GATE(0x807986F8, &lit_5014); -#pragma pop - -/* 807986FC-80798700 00011C 0004+00 0/0 0/0 0/0 .rodata @5015 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5015 = 9.0f / 25.0f; -COMPILER_STRIP_GATE(0x807986FC, &lit_5015); -#pragma pop - -/* 80798700-80798704 000120 0004+00 0/0 0/0 0/0 .rodata @5016 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5016 = 6.0f; -COMPILER_STRIP_GATE(0x80798700, &lit_5016); -#pragma pop - -/* 80798704-80798708 000124 0004+00 0/0 0/0 0/0 .rodata @5017 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5017 = 17.0f; -COMPILER_STRIP_GATE(0x80798704, &lit_5017); -#pragma pop - -/* 80798708-8079870C 000128 0004+00 0/0 0/0 0/0 .rodata @5018 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5018 = 3.5f; -COMPILER_STRIP_GATE(0x80798708, &lit_5018); -#pragma pop - -/* 8079870C-80798710 00012C 0004+00 0/1 0/0 0/0 .rodata @5100 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5100 = 7.0f; -COMPILER_STRIP_GATE(0x8079870C, &lit_5100); -#pragma pop - -/* 80798710-80798714 000130 0004+00 0/1 0/0 0/0 .rodata @5101 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5101 = 53.0f; -COMPILER_STRIP_GATE(0x80798710, &lit_5101); -#pragma pop - -/* 80798714-80798718 000134 0004+00 0/1 0/0 0/0 .rodata @5102 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5102 = 32.0f; -COMPILER_STRIP_GATE(0x80798714, &lit_5102); -#pragma pop - -/* 80795244-80795530 003104 02EC+00 3/3 0/0 0/0 .text E_SM_C_Free__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Free() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798718-8079871C 000138 0004+00 0/1 0/0 0/0 .rodata @5191 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5191 = 35.0f; -COMPILER_STRIP_GATE(0x80798718, &lit_5191); -#pragma pop - -/* 8079871C-80798720 00013C 0004+00 0/1 0/0 0/0 .rodata @5192 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5192 = -15.0f; -COMPILER_STRIP_GATE(0x8079871C, &lit_5192); -#pragma pop - -/* 80798720-80798724 000140 0004+00 0/1 0/0 0/0 .rodata @5193 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5193 = 4.0f; -COMPILER_STRIP_GATE(0x80798720, &lit_5193); -#pragma pop - -/* 80798724-80798728 000144 0004+00 0/1 0/0 0/0 .rodata @5194 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5194 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80798724, &lit_5194); -#pragma pop - -/* 80795530-807958A0 0033F0 0370+00 1/1 0/0 0/0 .text E_SM_C_Death__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Death() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798728-8079872C 000148 0004+00 0/1 0/0 0/0 .rodata @5365 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5365 = -1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80798728, &lit_5365); -#pragma pop - -/* 8079872C-80798730 00014C 0004+00 0/1 0/0 0/0 .rodata @5366 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5366 = -33.0f / 100.0f; -COMPILER_STRIP_GATE(0x8079872C, &lit_5366); -#pragma pop - -/* 807958A0-80795E64 003760 05C4+00 1/1 0/0 0/0 .text C_DamageCheck__8daE_SM_cFv */ -void daE_SM_c::C_DamageCheck() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798730-80798734 000150 0004+00 1/3 0/0 0/0 .rodata @5413 */ -SECTION_RODATA static f32 const lit_5413 = 40.0f; -COMPILER_STRIP_GATE(0x80798730, &lit_5413); - -/* 80798734-80798738 000154 0004+00 0/2 0/0 0/0 .rodata @5414 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5414 = 800.0f; -COMPILER_STRIP_GATE(0x80798734, &lit_5414); -#pragma pop - -/* 80798738-8079873C 000158 0004+00 0/1 0/0 0/0 .rodata @5415 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5415 = -60.0f; -COMPILER_STRIP_GATE(0x80798738, &lit_5415); -#pragma pop - -/* 80798780-80798780 0001A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80798785 = "D_SB01"; -#pragma pop - -/* 80795E64-80796060 003D24 01FC+00 1/1 0/0 0/0 .text E_SM_C_Hook__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Hook() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8079873C-80798740 00015C 0004+00 0/1 0/0 0/0 .rodata @5430 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5430 = 608.0f; -COMPILER_STRIP_GATE(0x8079873C, &lit_5430); -#pragma pop - -/* 80798740-80798744 000160 0004+00 0/1 0/0 0/0 .rodata @5431 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5431 = 448.0f; -COMPILER_STRIP_GATE(0x80798740, &lit_5431); -#pragma pop - -/* 80796060-807960E4 003F20 0084+00 1/1 0/0 0/0 .text CheckViewArea__8daE_SM_cFv */ -void daE_SM_c::CheckViewArea() { - // NONMATCHING -} - -/* 807960E4-80796204 003FA4 0120+00 1/1 0/0 0/0 .text CameraSet__8daE_SM_cFv */ -void daE_SM_c::CameraSet() { - // NONMATCHING -} - -/* 80796204-80796324 0040C4 0120+00 2/2 0/0 0/0 .text SetStopCam__8daE_SM_cF4cXyzffs */ -void daE_SM_c::SetStopCam(cXyz param_0, f32 param_1, f32 param_2, s16 param_3) { - // NONMATCHING -} - -/* 80796324-80796368 0041E4 0044+00 1/1 0/0 0/0 .text SetCMoveCam__8daE_SM_cF4cXyzff */ -void daE_SM_c::SetCMoveCam(cXyz param_0, f32 param_1, f32 param_2) { - // NONMATCHING -} - -/* 80796368-807963EC 004228 0084+00 1/1 0/0 0/0 .text SetStopingCam__8daE_SM_cFv */ -void daE_SM_c::SetStopingCam() { - // NONMATCHING -} - -/* 807963EC-80796490 0042AC 00A4+00 1/1 0/0 0/0 .text SetReleaseCam__8daE_SM_cFv */ -void daE_SM_c::SetReleaseCam() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798744-80798748 000164 0004+00 0/1 0/0 0/0 .rodata @5563 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5563 = 300.0f; -COMPILER_STRIP_GATE(0x80798744, &lit_5563); -#pragma pop - -/* 80796490-80796628 004350 0198+00 1/1 0/0 0/0 .text DemoStart__8daE_SM_cFv */ -void daE_SM_c::DemoStart() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798748-8079874C 000168 0004+00 0/1 0/0 0/0 .rodata @5623 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5623 = 25.0f; -COMPILER_STRIP_GATE(0x80798748, &lit_5623); -#pragma pop - -/* 80796628-807968A0 0044E8 0278+00 1/1 0/0 0/0 .text DemoMid__8daE_SM_cFv */ -void daE_SM_c::DemoMid() { - // NONMATCHING -} - -/* 807968A0-807968E4 004760 0044+00 1/1 0/0 0/0 .text E_SM_C_Demo__8daE_SM_cFv */ -void daE_SM_c::E_SM_C_Demo() { - // NONMATCHING -} - -/* 807968E4-80796AEC 0047A4 0208+00 2/1 0/0 0/0 .text CoreAction__8daE_SM_cFv */ -void daE_SM_c::CoreAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8079874C-80798750 00016C 0004+00 0/0 0/0 0/0 .rodata @5681 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5681 = -25.0f; -COMPILER_STRIP_GATE(0x8079874C, &lit_5681); -#pragma pop - -/* 80798750-80798754 000170 0004+00 0/0 0/0 0/0 .rodata @5682 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5682 = -9.0f; -COMPILER_STRIP_GATE(0x80798750, &lit_5682); -#pragma pop - -/* 80798754-80798758 000174 0004+00 0/2 0/0 0/0 .rodata @5741 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5741 = -20.0f; -COMPILER_STRIP_GATE(0x80798754, &lit_5741); -#pragma pop - -/* 80796AEC-80796D80 0049AC 0294+00 1/1 0/0 0/0 .text ArrowOn__8daE_SM_cFv */ -void daE_SM_c::ArrowOn() { - // NONMATCHING -} - -/* 80796D80-80796FC4 004C40 0244+00 1/1 0/0 0/0 .text Execute__8daE_SM_cFv */ -void daE_SM_c::Execute() { - // NONMATCHING -} - -/* 80796FC4-80797274 004E84 02B0+00 1/1 0/0 0/0 .text setSmBaseMtx__8daE_SM_cFv */ -void daE_SM_c::setSmBaseMtx() { - // NONMATCHING -} - -/* 80797274-8079730C 005134 0098+00 1/1 0/0 0/0 .text setBaseMtx__8daE_SM_cFv */ -void daE_SM_c::setBaseMtx() { - // NONMATCHING -} - -/* 8079730C-80797444 0051CC 0138+00 1/1 0/0 0/0 .text CoCoreSet__8daE_SM_cFv */ -void daE_SM_c::CoCoreSet() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80798758-8079875C 000178 0004+00 0/1 0/0 0/0 .rodata @5883 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5883 = 150.0f; -COMPILER_STRIP_GATE(0x80798758, &lit_5883); -#pragma pop - -/* 80797444-807974E8 005304 00A4+00 1/1 0/0 0/0 .text CoSmSet__8daE_SM_cFv */ -void daE_SM_c::CoSmSet() { - // NONMATCHING -} - -/* 807974E8-807974F0 0053A8 0008+00 1/0 0/0 0/0 .text daE_SM_IsDelete__FP8daE_SM_c */ -static bool daE_SM_IsDelete(daE_SM_c* param_0) { - return true; -} - -/* 807974F0-80797510 0053B0 0020+00 1/0 0/0 0/0 .text daE_SM_Delete__FP8daE_SM_c */ -static void daE_SM_Delete(daE_SM_c* param_0) { - // NONMATCHING -} - -/* 80797510-80797530 0053D0 0020+00 1/0 0/0 0/0 .text daE_SM_Draw__FP8daE_SM_c */ -static void daE_SM_Draw(daE_SM_c* param_0) { - // NONMATCHING -} - -/* 80797530-80797550 0053F0 0020+00 2/1 0/0 0/0 .text daE_SM_Execute__FP8daE_SM_c */ -static void daE_SM_Execute(daE_SM_c* param_0) { - // NONMATCHING -} - -/* 80797550-80797570 005410 0020+00 1/0 0/0 0/0 .text daE_SM_Create__FP10fopAc_ac_c */ -static void daE_SM_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80797570-8079762C 005430 00BC+00 1/1 0/0 0/0 .text Delete__8daE_SM_cFv */ -void daE_SM_c::Delete() { - // NONMATCHING -} - -/* 8079762C-8079764C 0054EC 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 8079764C-80797784 00550C 0138+00 1/1 0/0 0/0 .text CreateHeap__8daE_SM_cFv */ -void daE_SM_c::CreateHeap() { - // NONMATCHING -} - -/* 80797784-80797858 005644 00D4+00 1/1 0/0 0/0 .text initCoSph__8daE_SM_cFv */ -void daE_SM_c::initCoSph() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8079875C-80798760 00017C 0004+00 0/1 0/0 0/0 .rodata @6098 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6098 = -400.0f; -COMPILER_STRIP_GATE(0x8079875C, &lit_6098); -#pragma pop - -/* 80798760-80798764 000180 0004+00 0/1 0/0 0/0 .rodata @6099 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6099 = -800.0f; -COMPILER_STRIP_GATE(0x80798760, &lit_6099); -#pragma pop - -/* 80798764-80798768 000184 0004+00 0/1 0/0 0/0 .rodata @6100 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6100 = -200.0f; -COMPILER_STRIP_GATE(0x80798764, &lit_6100); -#pragma pop - -/* 80798768-8079876C 000188 0004+00 0/1 0/0 0/0 .rodata @6101 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6101 = 120.0f; -COMPILER_STRIP_GATE(0x80798768, &lit_6101); -#pragma pop - -/* 8079876C-80798770 00018C 0004+00 0/1 0/0 0/0 .rodata @6102 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6102 = 30.0f; -COMPILER_STRIP_GATE(0x8079876C, &lit_6102); -#pragma pop - -/* 80798770-80798778 000190 0004+04 0/1 0/0 0/0 .rodata @6103 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6103[1 + 1 /* padding */] = { - 65535.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80798770, &lit_6103); -#pragma pop - -/* 80798778-80798780 000198 0008+00 0/1 0/0 0/0 .rodata @6105 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_6105[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80798778, &lit_6105); -#pragma pop - -/* 80797858-80797CE0 005718 0488+00 1/1 0/0 0/0 .text Create__8daE_SM_cFv */ -void daE_SM_c::Create() { - // NONMATCHING -} - -/* 80797CE0-80797ED0 005BA0 01F0+00 1/1 0/0 0/0 .text __ct__8daE_SM_cFv */ -daE_SM_c::daE_SM_c() { - // NONMATCHING -} - -/* 80797ED0-80797F18 005D90 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80797F18-80797F60 005DD8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80797F60-80797FBC 005E20 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80797FBC-8079802C 005E7C 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 8079802C-8079809C 005EEC 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 8079809C-807980A0 005F5C 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */ -// csXyz::csXyz() { -extern "C" void __ct__5csXyzFv() { - /* empty function */ -} - -/* 807980A0-807980E8 005F60 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 807980E8-80798130 005FA8 0048+00 2/1 0/0 0/0 .text __dt__12daE_Sm_HIO_cFv */ -daE_Sm_HIO_c::~daE_Sm_HIO_c() { - // NONMATCHING -} - -/* 80798130-8079816C 005FF0 003C+00 0/0 1/0 0/0 .text __sinit_d_a_e_sm_cpp */ -void __sinit_d_a_e_sm_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80798130, __sinit_d_a_e_sm_cpp); -#pragma pop - -/* 8079816C-80798174 00602C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_8079816C() { - // NONMATCHING -} - -/* 80798174-8079817C 006034 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80798174() { - // NONMATCHING -} - -/* 80798590-807985CC 006450 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */ -// csXyz::~csXyz() { -extern "C" void __dt__5csXyzFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807989E8-807989EC 000070 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_807989E8[4]; -#pragma pop - -/* 807989EC-807989F0 000074 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_807989EC[4]; -#pragma pop - -/* 807989F0-807989F4 000078 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_807989F0[4]; -#pragma pop - -/* 807989F4-807989F8 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_807989F4[4]; -#pragma pop - -/* 807989F8-807989FC 000080 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807989F8[4]; -#pragma pop - -/* 807989FC-80798A00 000084 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_807989FC[4]; -#pragma pop - -/* 80798A00-80798A04 000088 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80798A00[4]; -#pragma pop - -/* 80798A04-80798A08 00008C 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80798A04[4]; -#pragma pop - -/* 80798A08-80798A0C 000090 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80798A08[4]; -#pragma pop - -/* 80798A0C-80798A10 000094 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80798A0C[4]; -#pragma pop - -/* 80798A10-80798A14 000098 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80798A10[4]; -#pragma pop - -/* 80798A14-80798A18 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80798A14[4]; -#pragma pop - -/* 80798A18-80798A1C 0000A0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_80798A18[4]; -#pragma pop - -/* 80798A1C-80798A20 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80798A1C[4]; -#pragma pop - -/* 80798A20-80798A24 0000A8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80798A20[4]; -#pragma pop - -/* 80798A24-80798A28 0000AC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80798A24[4]; -#pragma pop - -/* 80798A28-80798A2C 0000B0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_80798A28[4]; -#pragma pop - -/* 80798A2C-80798A30 0000B4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80798A2C[4]; -#pragma pop - -/* 80798A30-80798A34 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80798A30[4]; -#pragma pop - -/* 80798A34-80798A38 0000BC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80798A34[4]; -#pragma pop - -/* 80798A38-80798A3C 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_80798A38[4]; -#pragma pop - -/* 80798A3C-80798A40 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80798A3C[4]; -#pragma pop - -/* 80798A40-80798A44 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80798A40[4]; -#pragma pop - -/* 80798A44-80798A48 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80798A44[4]; -#pragma pop - -/* 80798A48-80798A4C 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80798A48[4]; -#pragma pop - -/* 80798780-80798780 0001A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */