tp/src/d/actor/d_a_e_ym.cpp

2051 lines
67 KiB
C++

/**
* d_a_e_ym.cpp
* Enemy - Shadow Insect / 闇虫 (Yami Mushi)
*/
#include "d/actor/d_a_e_ym.h"
#include "d/actor/d_a_player.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_com_inf_game.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void __ct__12daE_YM_HIO_cFv();
extern "C" void checkBck__8daE_YM_cFPCci();
extern "C" void bckSet__8daE_YM_cFiUcff();
extern "C" void bckSetFly__8daE_YM_cFiUcff();
extern "C" void draw__8daE_YM_cFv();
extern "C" static void daE_YM_Draw__FP8daE_YM_c();
extern "C" static void s_obj_sub__FPvPv();
extern "C" void setDigEffect__8daE_YM_cFv();
extern "C" void setElecEffect1__8daE_YM_cFv();
extern "C" void setElecEffect2__8daE_YM_cFv();
extern "C" void setFireEffect__8daE_YM_cFv();
extern "C" void checkWallCrash__8daE_YM_cFv();
extern "C" void checkWolfBark__8daE_YM_cFv();
extern "C" void checkSurpriseLock__8daE_YM_cFv();
extern "C" void checkRailSurprise__8daE_YM_cFv();
extern "C" void checkSurpriseNear__8daE_YM_cFv();
extern "C" void setNormalCc__8daE_YM_cFv();
extern "C" void setAppear__8daE_YM_cFv();
extern "C" void setMoveSound__8daE_YM_cFi();
extern "C" void setTurnSound__8daE_YM_cFv();
extern "C" void setActionMode__8daE_YM_cFi();
extern "C" void executeWait__8daE_YM_cFv();
extern "C" void executeMove__8daE_YM_cFv();
extern "C" void executeEscape__8daE_YM_cFv();
extern "C" void executeDown__8daE_YM_cFv();
extern "C" void __dt__8cM3dGPlaFv();
extern "C" void damage_check__8daE_YM_cFv();
extern "C" void executeWind__8daE_YM_cFv();
extern "C" void getSurpriseType__8daE_YM_cFv();
extern "C" void setSurpriseAway__8daE_YM_cFv();
extern "C" void setGoHomeType__8daE_YM_cFv();
extern "C" void executeSurprise__8daE_YM_cFv();
extern "C" void executeBack__8daE_YM_cFv();
extern "C" void executeFall__8daE_YM_cFv();
extern "C" void executeAttack__8daE_YM_cFv();
extern "C" void checkAttackEnd__8daE_YM_cFv();
extern "C" void setAttackMotion__8daE_YM_cFv();
extern "C" void executeAttackWall__8daE_YM_cFv();
extern "C" void executeDefense__8daE_YM_cFv();
extern "C" void checkFlyTerritory__8daE_YM_cFv();
extern "C" void initFly__8daE_YM_cFv();
extern "C" void executeFly__8daE_YM_cFv();
extern "C" void setInclination__8daE_YM_cFv();
extern "C" void executeFlyAttack__8daE_YM_cFv();
extern "C" void setNextPathPoint__8daE_YM_cFv();
extern "C" void checkRailDig__8daE_YM_cFv();
extern "C" void executeRail__8daE_YM_cFv();
extern "C" void executeBackRail__8daE_YM_cFv();
extern "C" void checkElectricStart__8daE_YM_cFv();
extern "C" void executeElectric__8daE_YM_cFv();
extern "C" void executeSwitch__8daE_YM_cFv();
extern "C" void initFireFly__8daE_YM_cFi();
extern "C" void executeFire__8daE_YM_cFv();
extern "C" void setRiverAttention__8daE_YM_cFv();
extern "C" void setLockByCargo__8daE_YM_cFv();
extern "C" void executeRiver__8daE_YM_cFv();
extern "C" static void s_ym_sub__FPvPv();
extern "C" void checkFrinedSamePos__8daE_YM_cFv();
extern "C" void action__8daE_YM_cFv();
extern "C" void mtx_set__8daE_YM_cFv();
extern "C" void cc_set__8daE_YM_cFv();
extern "C" void execute__8daE_YM_cFv();
extern "C" static void daE_YM_Execute__FP8daE_YM_c();
extern "C" static bool daE_YM_IsDelete__FP8daE_YM_c();
extern "C" void _delete__8daE_YM_cFv();
extern "C" static void daE_YM_Delete__FP8daE_YM_c();
extern "C" void CreateHeap__8daE_YM_cFv();
extern "C" void __ct__4cXyzFv();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" void checkBeforeBg__8daE_YM_cFs();
extern "C" void checkBeforeGround__8daE_YM_cFv();
extern "C" void checkInitialWall__8daE_YM_cFv();
extern "C" void checkWall__8daE_YM_cFv();
extern "C" void setHideType__8daE_YM_cFv();
extern "C" void create__8daE_YM_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" static void daE_YM_Create__FP8daE_YM_c();
extern "C" void __dt__10cCcD_GSttsFv();
extern "C" void __dt__12daE_YM_HIO_cFv();
extern "C" void __sinit_d_a_e_ym_cpp();
extern "C" static void func_808154DC();
extern "C" static void func_808154E4();
extern "C" static void setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz();
extern "C" void __dt__4cXyzFv();
extern "C" void getLeftHandPos__9daPy_py_cCFv();
extern "C" void getPos__13daTag_FWall_cFUc();
extern "C" extern char const* const d_a_e_ym__stringBase0;
extern "C" u8 cc_sph_src__6E_YM_n[64];
//
// External References:
//
extern "C" void mDoMtx_XrotS__FPA4_fs();
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotS__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotS__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void transM__14mDoMtx_stack_cFRC4cXyz();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
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 __ct__10fopAc_ac_cFv();
extern "C" void fopAc_IsActor__FPv();
extern "C" void fopAcM_SearchByName__FsPP10fopAc_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_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc();
extern "C" void fopAcM_effSmokeSet1__FPUlPUlPC4cXyzPC5csXyzfPC12dKy_tevstr_ci();
extern "C" void fpcEx_Search__FPFPvPv_PvPv();
extern "C" void fpcM_IsCreating__FUi();
extern "C" void getLayerNo__14dComIfG_play_cFi();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void dComIfGp_getReverb__Fi();
extern "C" void
dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
extern "C" void isLightDropGetFlag__16dSv_light_drop_cCFUc();
extern "C" void onSwitch__10dSv_info_cFii();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl();
extern "C" void
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void dPath_GetPnt__FPC5dPathi();
extern "C" void dPath_GetRoomPath__Fii();
extern "C" void LockonTarget__12dAttention_cFl();
extern "C" void LockonTruth__12dAttention_cFv();
extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
extern "C" void GetGroundCode__4dBgSFRC13cBgS_PolyInfo();
extern "C" void __ct__12dBgS_AcchCirFv();
extern "C" void SetWall__12dBgS_AcchCirFff();
extern "C" void __dt__9dBgS_AcchFv();
extern "C" void __ct__9dBgS_AcchFv();
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
extern "C" void SetGroundUpY__9dBgS_AcchFf();
extern "C" void __ct__11dBgS_GndChkFv();
extern "C" void __dt__11dBgS_GndChkFv();
extern "C" void __ct__18dBgS_ObjGndChk_WtrFv();
extern "C" void __dt__18dBgS_ObjGndChk_WtrFv();
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 GetAtHitObj__12dCcD_GObjInfFv();
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
extern "C" void ChkCoHit__12dCcD_GObjInfFv();
extern "C" void GetCoHitObj__12dCcD_GObjInfFv();
extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo();
extern "C" void checkNowWolfEyeUp__9daPy_py_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 GetAc__8cCcD_ObjFv();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void __pl__4cXyzCFRC3Vec();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void __ml__4cXyzCFf();
extern "C" bool __eq__4cXyzCFRC3Vec();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rnd__Fv();
extern "C" void cM_rndF__Ff();
extern "C" void cM_rndFX__Ff();
extern "C" void SetPos__11cBgS_GndChkFPC3Vec();
extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
extern "C" void __dt__13cBgS_PolyInfoFv();
extern "C" void __dt__8cM3dGCirFv();
extern "C" void SetC__8cM3dGSphFRC4cXyz();
extern "C" void SetR__8cM3dGSphFf();
extern "C" void cLib_addCalc2__FPffff();
extern "C" void cLib_addCalcAngleS__FPsssss();
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_targetAngleX__FPC4cXyzPC4cXyz();
extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz();
extern "C" void cLib_distanceAngleS__Fss();
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* __nwa__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void checkPass__12J3DFrameCtrlFf();
extern "C" void __construct_new_array();
extern "C" void _savegpr_19();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_19();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__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" extern u8 JPTracePCB4[4];
extern "C" u8 m_midnaActor__9daPy_py_c[4];
extern "C" void __register_global_object();
extern "C" void checkNextPath__8daKago_cF4cXyz();
//
// Declarations:
//
/* ############################################################################################## */
/* 80815994-80815998 000000 0004+00 48/48 0/0 0/0 .rodata @3925 */
SECTION_RODATA static f32 const lit_3925 = 100.0f;
COMPILER_STRIP_GATE(0x80815994, &lit_3925);
/* 80815998-8081599C 000004 0004+00 3/41 0/0 0/0 .rodata @3926 */
SECTION_RODATA static u8 const lit_3926[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80815998, &lit_3926);
/* 8081599C-808159A4 000008 0004+04 3/29 0/0 0/0 .rodata @3927 */
SECTION_RODATA static f32 const lit_3927[1 + 1 /* padding */] = {
1.0f,
/* padding */
0.0f,
};
COMPILER_STRIP_GATE(0x8081599C, &lit_3927);
/* 808159A4-808159AC 000010 0008+00 0/25 0/0 0/0 .rodata @3928 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3928[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x808159A4, &lit_3928);
#pragma pop
/* 808159AC-808159B4 000018 0008+00 0/25 0/0 0/0 .rodata @3929 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3929[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x808159AC, &lit_3929);
#pragma pop
/* 808159B4-808159BC 000020 0008+00 0/25 0/0 0/0 .rodata @3930 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3930[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x808159B4, &lit_3930);
#pragma pop
/* 808159BC-808159C0 000028 0004+00 0/1 0/0 0/0 .rodata @3931 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3931 = 1.0f / 100.0f;
COMPILER_STRIP_GATE(0x808159BC, &lit_3931);
#pragma pop
/* 808159C0-808159C4 00002C 0004+00 0/7 0/0 0/0 .rodata @3946 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3946 = 20.0f;
COMPILER_STRIP_GATE(0x808159C0, &lit_3946);
#pragma pop
/* 808159C4-808159C8 000030 0004+00 1/15 0/0 0/0 .rodata @3947 */
SECTION_RODATA static f32 const lit_3947 = 30.0f;
COMPILER_STRIP_GATE(0x808159C4, &lit_3947);
/* 808159C8-808159CC 000034 0004+00 0/2 0/0 0/0 .rodata @3948 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3948 = 3.0f / 5.0f;
COMPILER_STRIP_GATE(0x808159C8, &lit_3948);
#pragma pop
/* 808159CC-808159D0 000038 0004+00 1/11 0/0 0/0 .rodata @3949 */
SECTION_RODATA static f32 const lit_3949 = 3.0f;
COMPILER_STRIP_GATE(0x808159CC, &lit_3949);
/* 808159D0-808159D4 00003C 0004+00 0/1 0/0 0/0 .rodata @3950 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3950 = 13.0f;
COMPILER_STRIP_GATE(0x808159D0, &lit_3950);
#pragma pop
/* 808159D4-808159D8 000040 0004+00 0/5 0/0 0/0 .rodata @3951 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3951 = 400.0f;
COMPILER_STRIP_GATE(0x808159D4, &lit_3951);
#pragma pop
/* 808159D8-808159DC 000044 0004+00 0/3 0/0 0/0 .rodata @3952 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3952 = 300.0f;
COMPILER_STRIP_GATE(0x808159D8, &lit_3952);
#pragma pop
/* 80815B04-80815B10 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80815B10-80815B24 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
#pragma push
#pragma force_active on
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
0x00000000,
0x3FE00000,
0x00000000,
};
#pragma pop
/* 80815B24-80815B2C 000020 0008+00 0/1 0/0 0/0 .data e_prim$3804 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 e_prim[8] = {
0xFF, 0x78, 0x00, 0x00, 0xFF, 0x64, 0x78, 0x00,
};
#pragma pop
/* 80815B2C-80815B34 000028 0008+00 0/1 0/0 0/0 .data e_env$3805 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 e_env[8] = {
0x5A, 0x2D, 0x2D, 0x00, 0x3C, 0x1E, 0x1E, 0x00,
};
#pragma pop
/* 80815B34-80815B3C 000030 0006+02 0/1 0/0 0/0 .data eff_id$3813 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 eff_id[6 + 2 /* padding */] = {
0x02,
0x9D,
0x02,
0x9E,
0x02,
0x9F,
/* padding */
0x00,
0x00,
};
#pragma pop
/* 80815B3C-80815B7C 000038 0040+00 1/1 0/0 0/0 .data cc_sph_src__6E_YM_n */
dCcD_SrcSph E_YM_n::cc_sph_src = {
{
{0, {{0x400, 1, 13}, {0xD8FBFDFF, 3}, 0x75}},
{dCcD_SE_METAL, 0, 0, 0, {0}},
{dCcD_SE_NONE, 0, 0, 0, {2}},
{0},
},
{
{
{0.0f, 0.0f, 0.0f},
40.0f,
},
}
};
/* 80815B7C-80815B84 000078 0008+00 0/0 0/0 0/0 .data w_eff_id$5427 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 w_eff_id[8] = {
0x01, 0xB8, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xBB,
};
#pragma pop
/* 80815B84-80815BA4 -00001 0020+00 1/1 0/0 0/0 .data @6063 */
SECTION_DATA static void* lit_6063[8] = {
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0xEC),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0x1F4),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0x708),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0x810),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0xB44),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0x83C),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0xA88),
(void*)(((char*)executeSurprise__8daE_YM_cFv) + 0xAEC),
};
/* 80815BA4-80815BD0 -00001 002C+00 1/1 0/0 0/0 .data @7049 */
SECTION_DATA static void* lit_7049[11] = {
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x10C),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x13C),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x1EC),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x228),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x798),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0xAB0),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x798),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x9BC),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x11DC),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0x11DC),
(void*)(((char*)executeFly__8daE_YM_cFv) + 0xFCC),
};
/* 80815BD0-80815BDC 0000CC 000C+00 1/1 0/0 0/0 .data YM_DIG_POS_Y$7355 */
SECTION_DATA static Vec YM_DIG_POS_Y = {-15.0f, -30.0f, -70.0f};
/* 80815BDC-80815C28 -00001 004C+00 1/1 0/0 0/0 .data @8522 */
SECTION_DATA static void* lit_8522[19] = {
(void*)(((char*)action__8daE_YM_cFv) + 0x124), (void*)(((char*)action__8daE_YM_cFv) + 0x130),
(void*)(((char*)action__8daE_YM_cFv) + 0x13C), (void*)(((char*)action__8daE_YM_cFv) + 0x148),
(void*)(((char*)action__8daE_YM_cFv) + 0x154), (void*)(((char*)action__8daE_YM_cFv) + 0x160),
(void*)(((char*)action__8daE_YM_cFv) + 0x16C), (void*)(((char*)action__8daE_YM_cFv) + 0x178),
(void*)(((char*)action__8daE_YM_cFv) + 0x184), (void*)(((char*)action__8daE_YM_cFv) + 0x194),
(void*)(((char*)action__8daE_YM_cFv) + 0x1A4), (void*)(((char*)action__8daE_YM_cFv) + 0x1B0),
(void*)(((char*)action__8daE_YM_cFv) + 0x1BC), (void*)(((char*)action__8daE_YM_cFv) + 0x1CC),
(void*)(((char*)action__8daE_YM_cFv) + 0x1D8), (void*)(((char*)action__8daE_YM_cFv) + 0x1E4),
(void*)(((char*)action__8daE_YM_cFv) + 0x1F4), (void*)(((char*)action__8daE_YM_cFv) + 0x200),
(void*)(((char*)action__8daE_YM_cFv) + 0x20C),
};
/* 80815C28-80815C48 -00001 0020+00 1/1 0/0 0/0 .data @9421 */
SECTION_DATA static void* lit_9421[8] = {
(void*)(((char*)create__8daE_YM_cFv) + 0x40C), (void*)(((char*)create__8daE_YM_cFv) + 0x434),
(void*)(((char*)create__8daE_YM_cFv) + 0x464), (void*)(((char*)create__8daE_YM_cFv) + 0x47C),
(void*)(((char*)create__8daE_YM_cFv) + 0x494), (void*)(((char*)create__8daE_YM_cFv) + 0x524),
(void*)(((char*)create__8daE_YM_cFv) + 0x5B4), (void*)(((char*)create__8daE_YM_cFv) + 0x5C4),
};
/* 80815C48-80815C68 -00001 0020+00 1/0 0/0 0/0 .data l_daE_YM_Method */
static actor_method_class l_daE_YM_Method = {
(process_method_func)daE_YM_Create__FP8daE_YM_c,
(process_method_func)daE_YM_Delete__FP8daE_YM_c,
(process_method_func)daE_YM_Execute__FP8daE_YM_c,
(process_method_func)daE_YM_IsDelete__FP8daE_YM_c,
(process_method_func)daE_YM_Draw__FP8daE_YM_c,
};
/* 80815C68-80815C98 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_YM */
extern actor_process_profile_definition g_profile_E_YM = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_E_YM, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daE_YM_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
194, // mPriority
&l_daE_YM_Method, // sub_method
0x00040100, // mStatus
fopAc_ENEMY_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80815C98-80815CA4 000194 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,
};
/* 80815CA4-80815CB0 0001A0 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,
};
/* 80815CB0-80815CBC 0001AC 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,
};
/* 80815CBC-80815CC8 0001B8 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,
};
/* 80815CC8-80815CD4 0001C4 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,
};
/* 80815CD4-80815CF8 0001D0 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_808154E4,
(void*)NULL,
(void*)NULL,
(void*)func_808154DC,
};
/* 80815CF8-80815D04 0001F4 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DFrameCtrlFv,
};
/* 80815D04-80815D10 000200 000C+00 6/6 0/0 0/0 .data __vt__8cM3dGPla */
SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGPlaFv,
};
/* 80815D10-80815D1C 00020C 000C+00 2/2 0/0 0/0 .data __vt__12daE_YM_HIO_c */
SECTION_DATA extern void* __vt__12daE_YM_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12daE_YM_HIO_cFv,
};
/* 8080812C-80808184 0000EC 0058+00 1/1 0/0 0/0 .text __ct__12daE_YM_HIO_cFv */
daE_YM_HIO_c::daE_YM_HIO_c() {
field_0x4 = -1;
mFlyMoveSpeed = 20.0f;
mFlyAttackSpeed = 30.0f;
mModelSize = 0.6f;
mElectricInvincibilityTimeExtension = 3.0f;
mMoveSpeed = 13.0f;
mSurpriseDistance = 400.0f;
mMoveRange = 300.0f;
}
/* 80808184-808081E0 000144 005C+00 3/3 0/0 0/0 .text checkBck__8daE_YM_cFPCci */
BOOL daE_YM_c::checkBck(char const* i_arcName, int i_resNo) {
return field_0x5b4->getAnm() == (J3DAnmTransform*)dComIfG_getObjectRes(i_arcName, i_resNo);
}
/* ############################################################################################## */
/* 808159DC-808159E0 000048 0004+00 0/4 0/0 0/0 .rodata @3987 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3987 = 2.0f;
COMPILER_STRIP_GATE(0x808159DC, &lit_3987);
#pragma pop
/* 808159E0-808159E4 00004C 0004+00 1/2 0/0 0/0 .rodata @3988 */
SECTION_RODATA static f32 const lit_3988 = -1.0f;
COMPILER_STRIP_GATE(0x808159E0, &lit_3988);
/* 808081E0-80808328 0001A0 0148+00 18/18 0/0 0/0 .text bckSet__8daE_YM_cFiUcff */
void daE_YM_c::bckSet(int i_resID, u8 i_attribute, f32 i_morf, f32 i_speed) {
int tm_res_id;
if (mFlyType == true) {
switch (i_resID) {
case 6:
tm_res_id = 8;
break;
case 15:
tm_res_id = 9;
break;
case 16:
i_speed = FLOAT_LABEL(lit_3987);
tm_res_id = 10;
break;
case 14:
tm_res_id = 10;
break;
default:
tm_res_id = 9;
}
field_0x5b4->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_TM", tm_res_id), i_attribute,
i_morf, i_speed, FLOAT_LABEL(lit_3926), FLOAT_LABEL(lit_3988));
} else {
field_0x5b4->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_YM", i_resID), i_attribute,
i_morf, i_speed, FLOAT_LABEL(lit_3926), FLOAT_LABEL(lit_3988));
}
}
/* 80808328-808083CC 0002E8 00A4+00 4/4 0/0 0/0 .text bckSetFly__8daE_YM_cFiUcff */
void daE_YM_c::bckSetFly(int i_resID, u8 i_attribute, f32 i_morf, f32 i_speed) {
field_0x5b4->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_TM", i_resID), i_attribute,
i_morf, i_speed, FLOAT_LABEL(lit_3926), FLOAT_LABEL(lit_3988));
}
/* ############################################################################################## */
/* 808159E4-808159E8 000050 0004+00 0/1 0/0 0/0 .rodata @4101 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4101 = 255.0f;
COMPILER_STRIP_GATE(0x808159E4, &lit_4101);
#pragma pop
/* 808159E8-808159EC 000054 0004+00 0/6 0/0 0/0 .rodata @4102 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4102 = -70.0f;
COMPILER_STRIP_GATE(0x808159E8, &lit_4102);
#pragma pop
/* 808083CC-80808678 00038C 02AC+00 1/1 0/0 0/0 .text draw__8daE_YM_cFv */
// NONMATCHING - one instruction order mismatch (probably causes regalloc issue)
int daE_YM_c::draw() {
if (field_0x71d) {
return 1;
}
if (daPy_py_c::checkNowWolfEyeUp()) {
cLib_addCalc2(&field_0x6d4, 255.0f, 1.0f, 30.0f);
} else if (mAction == ACT_DOWN) {
cLib_addCalc2(&field_0x6d4, 255.0f, 1.0f, 30.0f);
} else {
cLib_addCalc2(&field_0x6d4, 0.0f, 1.0f, 30.0f);
}
bool bvar = true;
if (field_0x710 != 0) {
if (field_0x6d4 == 0.0f) {
return 1;
}
if (mIsHide && mAction != ACT_RAIL && mAction != ACT_BACK_RAIL) {
bvar = false;
}
} else {
field_0x710 = 1;
}
if (mFlyType == true) {
J3DShape* shape_p =
field_0x5b4->getModel()->getModelData()->getMaterialNodePointer(1)->getShape();
if (shape_p != NULL) {
if (field_0x6cc) {
shape_p->show();
} else {
shape_p->hide();
}
}
}
J3DModel* model_p = field_0x5b4->getModel();
g_env_light.settingTevStruct(6, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(model_p, &tevStr);
J3DModelData* modelData_p = model_p->getModelData();
for (u16 i = 0; i < modelData_p->getMaterialNum(); i++) {
modelData_p->getMaterialNodePointer(i)->getTevKColor(3)->a = field_0x6d4;
}
if (bvar) {
if (field_0x6dc != -70.0f) {
field_0x5b8->entry(model_p->getModelData());
dComIfGd_setListDark();
field_0x5b4->entryDL();
dComIfGd_setList();
}
cXyz sp40;
sp40.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
field_0x69c = dComIfGd_setShadow(field_0x69c, 1, model_p, &sp40, 400.0f, 0.0f,
current.pos.y, field_0x760.GetGroundH(), field_0x760.m_gnd,
&tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
}
return 1;
}
/* 80808678-80808698 000638 0020+00 1/0 0/0 0/0 .text daE_YM_Draw__FP8daE_YM_c */
static int daE_YM_Draw(daE_YM_c* i_this) {
return i_this->draw();
}
/* ############################################################################################## */
/* 80815D28-80815D2C 000008 0004+00 2/2 0/0 0/0 .bss None */
static u8 data_80815D28[4];
/* 80815D38-80815D5C 000018 0024+00 18/18 0/0 0/0 .bss l_HIO */
static daE_YM_HIO_c l_HIO;
/* 80815D5C-80815D60 00003C 0004+00 3/3 0/0 0/0 .bss m_near_obj */
static fopAc_ac_c* m_near_obj;
/* 80815D60-80815D64 000040 0004+00 3/3 0/0 0/0 .bss m_obj_dist */
static f32 m_obj_dist;
/* 80808698-80808768 000658 00D0+00 2/2 0/0 0/0 .text s_obj_sub__FPvPv */
static void* s_obj_sub(void* param_0, void* param_1) {
fopAc_ac_c* e_ym;
fopAc_ac_c* near_obj;
near_obj = (fopAc_ac_c*)param_0;
e_ym = (fopAc_ac_c*)param_1;
if (fopAcM_IsActor(near_obj) && fopAcM_GetName(near_obj) == PROC_Obj_Carry) {
if (!fpcM_IsCreating(fopAcM_GetID(near_obj))) {
f32 obj_dist = fopAcM_searchActorDistanceXZ(near_obj, e_ym);
if (obj_dist < FLOAT_LABEL(lit_3925) && obj_dist < m_obj_dist &&
fabsf(fopAcM_searchActorDistanceY(near_obj, e_ym)) < FLOAT_LABEL(lit_3947))
{
m_near_obj = near_obj;
m_obj_dist = obj_dist;
}
}
}
return 0;
}
/* 80808768-80808884 000728 011C+00 1/1 0/0 0/0 .text setDigEffect__8daE_YM_cFv */
void daE_YM_c::setDigEffect() {
cXyz sp1C(field_0x68c, field_0x68c, field_0x68c);
cXyz sp28(current.pos);
sp28.y += field_0x6dc;
field_0xad8 = dComIfGp_particle_set(field_0xad8, 0x83A8, &sp28, &shape_angle, &sp1C);
field_0xadc = dComIfGp_particle_set(field_0xadc, 0x83A9, &sp28, &shape_angle, &sp1C);
}
/* ############################################################################################## */
/* 808159EC-808159F0 000058 0004+00 0/16 0/0 0/0 .rodata @4214 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4214 = 10.0f;
COMPILER_STRIP_GATE(0x808159EC, &lit_4214);
#pragma pop
/* 808159F0-808159F4 00005C 0004+00 0/4 0/0 0/0 .rodata @4215 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4215 = 6.0f;
COMPILER_STRIP_GATE(0x808159F0, &lit_4215);
#pragma pop
/* 80808884-808089DC 000844 0158+00 8/8 0/0 0/0 .text setElecEffect1__8daE_YM_cFv */
void daE_YM_c::setElecEffect1() {
f32 fVar3 = (field_0x68c * 10.0f) / 6.0f;
cXyz cStack_2c(fVar3, fVar3, fVar3);
MtxP iVar5;
if (mFlyType == true) {
iVar5 = field_0x5b4->getModel()->getAnmMtx(8);
} else {
iVar5 = field_0x5b4->getModel()->getAnmMtx(0);
}
cXyz cStack_38(iVar5[0][3], iVar5[1][3], iVar5[2][3]);
field_0xad8 = dComIfGp_particle_set(field_0xad8, 0x8393, &cStack_38, &tevStr, &shape_angle, &cStack_2c,
0xff, 0, 0xffffffff, 0, 0, 0);
field_0xadc = dComIfGp_particle_set(field_0xadc, 0x8394, &cStack_38, &tevStr, &shape_angle, &cStack_2c,
0xff, 0, 0xffffffff, 0, 0, 0);
}
/* 808089DC-80808B3C 00099C 0160+00 9/9 0/0 0/0 .text setElecEffect2__8daE_YM_cFv */
void daE_YM_c::setElecEffect2() {
f32 fVar3 = (field_0x68c * 10.0f) / 6.0f;
cXyz cStack_2c(fVar3, fVar3, fVar3);
MtxP iVar5;
if (mFlyType == true) {
iVar5 = field_0x5b4->getModel()->getAnmMtx(8);
} else {
iVar5 = field_0x5b4->getModel()->getAnmMtx(0);
}
cXyz cStack_38(iVar5[0][3], iVar5[1][3], iVar5[2][3]);
setElecEffect1();
field_0xae0 = dComIfGp_particle_set(field_0xae0, 0x8395, &cStack_38, &tevStr, &shape_angle, &cStack_2c,
0xff, 0, 0xffffffff, 0, 0, 0);
field_0xae4 = dComIfGp_particle_set(field_0xae4, 0x8396, &cStack_38, &tevStr, &shape_angle, &cStack_2c,
0xff, 0, 0xffffffff, 0, 0, 0);
}
/* 80808B3C-80808E34 000AFC 02F8+00 1/1 0/0 0/0 .text setFireEffect__8daE_YM_cFv */
void daE_YM_c::setFireEffect() {
// NONMATCHING
}
/* ############################################################################################## */
/* 808159F4-808159F8 000060 0004+00 0/1 0/0 0/0 .rodata @4416 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4416 = 600.0f;
COMPILER_STRIP_GATE(0x808159F4, &lit_4416);
#pragma pop
/* 80808E34-80809000 000DF4 01CC+00 3/3 0/0 0/0 .text checkWallCrash__8daE_YM_cFv */
bool daE_YM_c::checkWallCrash() {
if (mType == 1 && (daPy_getPlayerActorClass()->checkFrontRollCrash() ||
daPy_getPlayerActorClass()->checkWolfAttackReverse()))
{
cXyz tmp = daPy_getPlayerActorClass()->current.pos - field_0x670;
if (tmp.absXZ() < 600.0f) {
if (mTagPosP != NULL) {
setActionMode(ACT_FLY);
} else {
setActionMode(ACT_FALL);
}
return true;
}
}
return false;
}
/* ############################################################################################## */
/* 808159F8-808159FC 000064 0004+00 0/1 0/0 0/0 .rodata @4472 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4472 = 900.0f;
COMPILER_STRIP_GATE(0x808159F8, &lit_4472);
#pragma pop
/* 80809000-80809228 000FC0 0228+00 3/3 0/0 0/0 .text checkWolfBark__8daE_YM_cFv */
void daE_YM_c::checkWolfBark() {
// NONMATCHING
}
/* ############################################################################################## */
/* 808159FC-80815A00 000068 0004+00 0/3 0/0 0/0 .rodata @4603 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4603 = 150.0f;
COMPILER_STRIP_GATE(0x808159FC, &lit_4603);
#pragma pop
/* 80809228-8080963C 0011E8 0414+00 1/1 0/0 0/0 .text checkSurpriseLock__8daE_YM_cFv */
void daE_YM_c::checkSurpriseLock() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A00-80815A04 00006C 0004+00 1/9 0/0 0/0 .rodata @4618 */
SECTION_RODATA static f32 const lit_4618 = 200.0f;
COMPILER_STRIP_GATE(0x80815A00, &lit_4618);
/* 8080963C-808096EC 0015FC 00B0+00 2/2 0/0 0/0 .text checkRailSurprise__8daE_YM_cFv */
void daE_YM_c::checkRailSurprise() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A04-80815A08 000070 0004+00 0/10 0/0 0/0 .rodata @4820 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4820 = 50.0f;
COMPILER_STRIP_GATE(0x80815A04, &lit_4820);
#pragma pop
/* 80815A08-80815A0C 000074 0004+00 0/1 0/0 0/0 .rodata @4821 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4821 = 350.0f;
COMPILER_STRIP_GATE(0x80815A08, &lit_4821);
#pragma pop
/* 80815A0C-80815A10 000078 0004+00 0/1 0/0 0/0 .rodata @4822 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4822 = 16.0f;
COMPILER_STRIP_GATE(0x80815A0C, &lit_4822);
#pragma pop
/* 808096EC-80809D6C 0016AC 0680+00 3/3 0/0 0/0 .text checkSurpriseNear__8daE_YM_cFv */
void daE_YM_c::checkSurpriseNear() {
// NONMATCHING
}
/* 80809D6C-80809D84 001D2C 0018+00 6/6 0/0 0/0 .text setNormalCc__8daE_YM_cFv */
void daE_YM_c::setNormalCc() {
mSphCc.SetCoSPrm(0x75);
mSphCc.SetTgType(0xD8FBFDFF);
}
/* 80809D84-80809DA8 001D44 0024+00 7/7 0/0 0/0 .text setAppear__8daE_YM_cFv */
void daE_YM_c::setAppear() {
mIsHide = false;
if (field_0x6a6 != 4) {
mType = 0;
}
field_0x714 = 4;
}
/* ############################################################################################## */
/* 80815A10-80815A14 00007C 0004+00 0/1 0/0 0/0 .rodata @4871 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4871 = 3.0f / 20.0f;
COMPILER_STRIP_GATE(0x80815A10, &lit_4871);
#pragma pop
/* 80815A14-80815A18 000080 0004+00 1/21 0/0 0/0 .rodata @4872 */
SECTION_RODATA static f32 const lit_4872 = 5.0f;
COMPILER_STRIP_GATE(0x80815A14, &lit_4872);
/* 80815A18-80815A1C 000084 0004+00 0/3 0/0 0/0 .rodata @4873 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4873 = 9.0f;
COMPILER_STRIP_GATE(0x80815A18, &lit_4873);
#pragma pop
/* 80809DA8-80809EF0 001D68 0148+00 8/8 0/0 0/0 .text setMoveSound__8daE_YM_cFi */
void daE_YM_c::setMoveSound(int param_0) {
// NONMATCHING
}
/* 80809EF0-80809F9C 001EB0 00AC+00 3/3 0/0 0/0 .text setTurnSound__8daE_YM_cFv */
void daE_YM_c::setTurnSound() {
// NONMATCHING
}
/* 80809F9C-80809FC4 001F5C 0028+00 26/26 0/0 0/0 .text setActionMode__8daE_YM_cFi */
void daE_YM_c::setActionMode(int i_action) {
mLastAction = mAction;
mAction = i_action;
mMode = 0;
field_0x6f2 = 0;
field_0x6f0 = 0;
current.angle.y = shape_angle.y;
}
/* ############################################################################################## */
/* 80815A1C-80815A20 000088 0004+00 0/7 0/0 0/0 .rodata @5021 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5021 = -60.0f;
COMPILER_STRIP_GATE(0x80815A1C, &lit_5021);
#pragma pop
/* 80809FC4-8080A57C 001F84 05B8+00 1/1 0/0 0/0 .text executeWait__8daE_YM_cFv */
void daE_YM_c::executeWait() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A20-80815A24 00008C 0004+00 0/5 0/0 0/0 .rodata @5268 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5268 = 1.5f;
COMPILER_STRIP_GATE(0x80815A20, &lit_5268);
#pragma pop
/* 80815A24-80815A28 000090 0004+00 0/2 0/0 0/0 .rodata @5269 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5269 = 32768.0f;
COMPILER_STRIP_GATE(0x80815A24, &lit_5269);
#pragma pop
/* 80815A28-80815A2C 000094 0004+00 0/10 0/0 0/0 .rodata @5270 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5270 = 40.0f;
COMPILER_STRIP_GATE(0x80815A28, &lit_5270);
#pragma pop
/* 8080A57C-8080ACB4 00253C 0738+00 1/1 0/0 0/0 .text executeMove__8daE_YM_cFv */
void daE_YM_c::executeMove() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A2C-80815A30 000098 0004+00 0/2 0/0 0/0 .rodata @5413 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5413 = 8.0f;
COMPILER_STRIP_GATE(0x80815A2C, &lit_5413);
#pragma pop
/* 80815A30-80815A34 00009C 0004+00 0/1 0/0 0/0 .rodata @5414 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5414 = 8192.0f;
COMPILER_STRIP_GATE(0x80815A30, &lit_5414);
#pragma pop
/* 80815A34-80815A38 0000A0 0004+00 0/1 0/0 0/0 .rodata @5415 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5415 = 45.0f;
COMPILER_STRIP_GATE(0x80815A34, &lit_5415);
#pragma pop
/* 80815A38-80815A3C 0000A4 0004+00 0/4 0/0 0/0 .rodata @5416 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5416 = 500.0f;
COMPILER_STRIP_GATE(0x80815A38, &lit_5416);
#pragma pop
/* 80815A3C-80815A44 0000A8 0008+00 0/4 0/0 0/0 .rodata @5418 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_5418[8] = {
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80815A3C, &lit_5418);
#pragma pop
/* 8080ACB4-8080B444 002C74 0790+00 1/1 0/0 0/0 .text executeEscape__8daE_YM_cFv */
void daE_YM_c::executeEscape() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A44-80815A48 0000B0 0004+00 0/2 0/0 0/0 .rodata @5644 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5644 = -5.0f;
COMPILER_STRIP_GATE(0x80815A44, &lit_5644);
#pragma pop
/* 80815A48-80815A4C 0000B4 0004+00 0/8 0/0 0/0 .rodata @5645 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5645 = 15.0f;
COMPILER_STRIP_GATE(0x80815A48, &lit_5645);
#pragma pop
/* 80815A4C-80815A50 0000B8 0004+00 0/9 0/0 0/0 .rodata @5646 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5646 = 60.0f;
COMPILER_STRIP_GATE(0x80815A4C, &lit_5646);
#pragma pop
/* 80815A50-80815A54 0000BC 0004+00 0/2 0/0 0/0 .rodata @5647 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5647 = 1000.0f;
COMPILER_STRIP_GATE(0x80815A50, &lit_5647);
#pragma pop
/* 80815A54-80815A58 0000C0 0004+00 0/1 0/0 0/0 .rodata @5648 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5648 = -1000000000.0f;
COMPILER_STRIP_GATE(0x80815A54, &lit_5648);
#pragma pop
/* 80815AEC-80815AEC 000158 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80815AF6 = "R_SP108";
#pragma pop
/* 8080B444-8080BB34 003404 06F0+00 2/2 0/0 0/0 .text executeDown__8daE_YM_cFv */
void daE_YM_c::executeDown() {
// NONMATCHING
}
/* 8080BB34-8080BB7C 003AF4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
// cM3dGPla::~cM3dGPla() {
extern "C" void __dt__8cM3dGPlaFv() {
// NONMATCHING
}
/* 8080BB7C-8080BCFC 003B3C 0180+00 1/1 0/0 0/0 .text damage_check__8daE_YM_cFv */
void daE_YM_c::damage_check() {
if (field_0x6f4 != 0 || mAction == ACT_RIVER || mAction == ACT_DOWN) {
return;
}
field_0x938.Move();
if (mSphCc.ChkTgHit()) {
mAtInfo.mpCollider = mSphCc.GetTgHitObj();
if (field_0x700 == 0 || !mAtInfo.mpCollider->ChkAtType(0xD8000000)) {
cc_at_check(this, &mAtInfo);
if (mAtInfo.mpCollider->ChkAtType(0xD8000000)) {
field_0x6f4 = 20;
} else {
field_0x6f4 = 10;
}
if (mAtInfo.mAttackPower <= 1) {
field_0x6f4 = 10;
}
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG)) {
if (mIsHide) {
setActionMode(ACT_WIND);
}
} else if (mType != 2) {
field_0x5bc.startCreatureSound(Z2SE_EN_YM_DEATH, 0, -1);
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_10000000)) {
dComIfGp_setHitMark(3, this, &eyePos, NULL, NULL, 0);
}
setActionMode(ACT_DOWN);
executeDown();
}
}
}
}
/* ############################################################################################## */
/* 80815A58-80815A5C 0000C4 0004+00 0/5 0/0 0/0 .rodata @5724 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5724 = 25.0f;
COMPILER_STRIP_GATE(0x80815A58, &lit_5724);
#pragma pop
/* 80815A5C-80815A60 0000C8 0004+00 0/2 0/0 0/0 .rodata @5725 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5725 = 4096.0f;
COMPILER_STRIP_GATE(0x80815A5C, &lit_5725);
#pragma pop
/* 80815A60-80815A64 0000CC 0004+00 0/1 0/0 0/0 .rodata @5726 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5726 = 2048.0f;
COMPILER_STRIP_GATE(0x80815A60, &lit_5726);
#pragma pop
/* 8080BCFC-8080C05C 003CBC 0360+00 1/1 0/0 0/0 .text executeWind__8daE_YM_cFv */
void daE_YM_c::executeWind() {
// NONMATCHING
}
/* 8080C05C-8080C1FC 00401C 01A0+00 1/1 0/0 0/0 .text getSurpriseType__8daE_YM_cFv */
void daE_YM_c::getSurpriseType() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A64-80815A68 0000D0 0004+00 1/1 0/0 0/0 .rodata @5774 */
SECTION_RODATA static f32 const lit_5774 = 12.0f;
COMPILER_STRIP_GATE(0x80815A64, &lit_5774);
/* 8080C1FC-8080C24C 0041BC 0050+00 2/2 0/0 0/0 .text setSurpriseAway__8daE_YM_cFv */
void daE_YM_c::setSurpriseAway() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A68-80815A6C 0000D4 0004+00 0/1 0/0 0/0 .rodata @5792 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5792 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80815A68, &lit_5792);
#pragma pop
/* 80815A6C-80815A70 0000D8 0004+00 0/2 0/0 0/0 .rodata @5793 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_5793 = 4000.0f;
COMPILER_STRIP_GATE(0x80815A6C, &lit_5793);
#pragma pop
/* 8080C24C-8080C374 00420C 0128+00 1/1 0/0 0/0 .text setGoHomeType__8daE_YM_cFv */
void daE_YM_c::setGoHomeType() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A70-80815A74 0000DC 0004+00 0/2 0/0 0/0 .rodata @6055 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6055 = -90.0f;
COMPILER_STRIP_GATE(0x80815A70, &lit_6055);
#pragma pop
/* 80815A74-80815A78 0000E0 0004+00 0/1 0/0 0/0 .rodata @6056 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6056 = 28.0f;
COMPILER_STRIP_GATE(0x80815A74, &lit_6056);
#pragma pop
/* 80815A78-80815A7C 0000E4 0004+00 0/2 0/0 0/0 .rodata @6057 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6057 = 17.0f;
COMPILER_STRIP_GATE(0x80815A78, &lit_6057);
#pragma pop
/* 8080C374-8080CEE0 004334 0B6C+00 2/1 0/0 0/0 .text executeSurprise__8daE_YM_cFv */
void daE_YM_c::executeSurprise() {
// NONMATCHING
}
/* 8080CEE0-8080CFC8 004EA0 00E8+00 1/1 0/0 0/0 .text executeBack__8daE_YM_cFv */
void daE_YM_c::executeBack() {
// NONMATCHING
}
/* 8080CFC8-8080D2C8 004F88 0300+00 1/1 0/0 0/0 .text executeFall__8daE_YM_cFv */
void daE_YM_c::executeFall() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815A7C-80815A80 0000E8 0004+00 0/0 0/0 0/0 .rodata @6058 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6058 = 3.0f / 10.0f;
COMPILER_STRIP_GATE(0x80815A7C, &lit_6058);
#pragma pop
/* 80815A80-80815A84 0000EC 0004+00 0/0 0/0 0/0 .rodata @6059 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6059 = 650.0f;
COMPILER_STRIP_GATE(0x80815A80, &lit_6059);
#pragma pop
/* 80815A84-80815A88 0000F0 0004+00 0/1 0/0 0/0 .rodata @6060 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6060 = 90.0f;
COMPILER_STRIP_GATE(0x80815A84, &lit_6060);
#pragma pop
/* 80815A88-80815A8C 0000F4 0004+00 0/0 0/0 0/0 .rodata @6061 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6061 = 75.0f;
COMPILER_STRIP_GATE(0x80815A88, &lit_6061);
#pragma pop
/* 80815A8C-80815A90 0000F8 0004+00 0/1 0/0 0/0 .rodata @6062 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6062 = 35.0f;
COMPILER_STRIP_GATE(0x80815A8C, &lit_6062);
#pragma pop
/* 80815A90-80815A94 0000FC 0004+00 0/2 0/0 0/0 .rodata @6244 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6244 = -100.0f;
COMPILER_STRIP_GATE(0x80815A90, &lit_6244);
#pragma pop
/* 80815A94-80815A98 000100 0004+00 0/1 0/0 0/0 .rodata @6245 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_6245 = 4.0f;
COMPILER_STRIP_GATE(0x80815A94, &lit_6245);
#pragma pop
/* 8080D2C8-8080D990 005288 06C8+00 1/1 0/0 0/0 .text executeAttack__8daE_YM_cFv */
void daE_YM_c::executeAttack() {
// NONMATCHING
}
/* 8080D990-8080DB58 005950 01C8+00 1/1 0/0 0/0 .text checkAttackEnd__8daE_YM_cFv */
void daE_YM_c::checkAttackEnd() {
// NONMATCHING
}
/* 8080DB58-8080DC5C 005B18 0104+00 2/2 0/0 0/0 .text setAttackMotion__8daE_YM_cFv */
void daE_YM_c::setAttackMotion() {
// NONMATCHING
}
/* 8080DC5C-8080E26C 005C1C 0610+00 1/1 0/0 0/0 .text executeAttackWall__8daE_YM_cFv */
void daE_YM_c::executeAttackWall() {
// NONMATCHING
}
/* 8080E26C-8080E49C 00622C 0230+00 1/1 0/0 0/0 .text executeDefense__8daE_YM_cFv */
void daE_YM_c::executeDefense() {
// NONMATCHING
}
/* 8080E49C-8080E630 00645C 0194+00 1/1 0/0 0/0 .text checkFlyTerritory__8daE_YM_cFv */
void daE_YM_c::checkFlyTerritory() {
// NONMATCHING
}
/* 8080E630-8080E6A0 0065F0 0070+00 1/1 0/0 0/0 .text initFly__8daE_YM_cFv */
void daE_YM_c::initFly() {
attention_info.distances[fopAc_attn_BATTLE_e] = 46;
gravity = FLOAT_LABEL(lit_3926);
field_0x6e4 = 0;
if (mTagPosP != NULL) {
field_0x670 = mTagPos;
} else {
field_0x670 = home.pos;
}
mType = 3;
shape_angle.x = 0;
}
/* ############################################################################################## */
/* 80815A98-80815A9C 000104 0004+00 0/2 0/0 0/0 .rodata @7042 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7042 = 14.0f;
COMPILER_STRIP_GATE(0x80815A98, &lit_7042);
#pragma pop
/* 80815A9C-80815AA0 000108 0004+00 0/1 0/0 0/0 .rodata @7043 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7043 = -10.0f;
COMPILER_STRIP_GATE(0x80815A9C, &lit_7043);
#pragma pop
/* 8080E6A0-8080F8C8 006660 1228+00 2/1 0/0 0/0 .text executeFly__8daE_YM_cFv */
void daE_YM_c::executeFly() {
// NONMATCHING
}
/* 8080F8C8-8080F92C 007888 0064+00 1/1 0/0 0/0 .text setInclination__8daE_YM_cFv */
void daE_YM_c::setInclination() {
s16 tan = cM_atan2s(speedF, speed.y) - 0x4000;
if (tan < -6000) {
tan = -6000;
}
if (tan > 6000) {
tan = 6000;
}
cLib_chaseAngleS(&shape_angle.x, tan, 0x0180);
}
/* 8080F92C-80810084 0078EC 0758+00 1/1 0/0 0/0 .text executeFlyAttack__8daE_YM_cFv */
void daE_YM_c::executeFlyAttack() {
// NONMATCHING
}
/* 80810084-8081013C 008044 00B8+00 1/1 0/0 0/0 .text setNextPathPoint__8daE_YM_cFv */
void daE_YM_c::setNextPathPoint() {
// NONMATCHING
}
/* 8081013C-8081030C 0080FC 01D0+00 1/1 0/0 0/0 .text checkRailDig__8daE_YM_cFv */
void daE_YM_c::checkRailDig() {
// NONMATCHING
}
/* 8081030C-80810690 0082CC 0384+00 1/1 0/0 0/0 .text executeRail__8daE_YM_cFv */
void daE_YM_c::executeRail() {
// NONMATCHING
}
/* 80810690-80810DF8 008650 0768+00 1/1 0/0 0/0 .text executeBackRail__8daE_YM_cFv */
void daE_YM_c::executeBackRail() {
// NONMATCHING
}
/* 80810DF8-80810E64 008DB8 006C+00 1/1 0/0 0/0 .text checkElectricStart__8daE_YM_cFv */
void daE_YM_c::checkElectricStart() {
if (field_0x6a1 == 1) {
if (mAction != ACT_WAIT && mAction != ACT_SURPRISE) {
field_0x6c9 = 0;
field_0x708 = 0;
} else if (field_0x708 != 0) {
field_0x708--;
if (field_0x708 == 0) {
field_0x6c9 = 1;
}
}
} else {
field_0x6c9 = 0;
field_0x708 = 0;
}
}
/* ############################################################################################## */
/* 80815AA0-80815AA4 00010C 0004+00 0/2 0/0 0/0 .rodata @7044 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7044 = 70.0f;
COMPILER_STRIP_GATE(0x80815AA0, &lit_7044);
#pragma pop
/* 80815AA4-80815AA8 000110 0004+00 0/0 0/0 0/0 .rodata @7045 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7045 = 2.0f / 5.0f;
COMPILER_STRIP_GATE(0x80815AA4, &lit_7045);
#pragma pop
/* 80815AA8-80815AAC 000114 0004+00 0/0 0/0 0/0 .rodata @7046 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7046 = -3072.0f;
COMPILER_STRIP_GATE(0x80815AA8, &lit_7046);
#pragma pop
/* 80815AAC-80815AB0 000118 0004+00 0/0 0/0 0/0 .rodata @7047 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7047 = 5120.0f;
COMPILER_STRIP_GATE(0x80815AAC, &lit_7047);
#pragma pop
/* 80815AB0-80815AB4 00011C 0004+00 0/1 0/0 0/0 .rodata @7048 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7048 = -15.0f;
COMPILER_STRIP_GATE(0x80815AB0, &lit_7048);
#pragma pop
/* 80815AB4-80815AB8 000120 0004+00 0/1 0/0 0/0 .rodata @7556 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7556 = 36.0f;
COMPILER_STRIP_GATE(0x80815AB4, &lit_7556);
#pragma pop
/* 80810E64-8081105C 008E24 01F8+00 1/1 0/0 0/0 .text executeElectric__8daE_YM_cFv */
void daE_YM_c::executeElectric() {
// NONMATCHING
}
/* 8081105C-80811740 00901C 06E4+00 1/1 0/0 0/0 .text executeSwitch__8daE_YM_cFv */
void daE_YM_c::executeSwitch() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815AB8-80815ABC 000124 0004+00 0/1 0/0 0/0 .rodata @7719 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7719 = 512.0f;
COMPILER_STRIP_GATE(0x80815AB8, &lit_7719);
#pragma pop
/* 80811740-80811838 009700 00F8+00 1/1 0/0 0/0 .text initFireFly__8daE_YM_cFi */
void daE_YM_c::initFireFly(int param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815ABC-80815AC0 000128 0004+00 0/1 0/0 0/0 .rodata @7942 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7942 = 550.0f;
COMPILER_STRIP_GATE(0x80815ABC, &lit_7942);
#pragma pop
/* 80815AC0-80815AC4 00012C 0004+00 0/1 0/0 0/0 .rodata @7943 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_7943 = 250.0f;
COMPILER_STRIP_GATE(0x80815AC0, &lit_7943);
#pragma pop
/* 80811838-808120B0 0097F8 0878+00 1/1 0/0 0/0 .text executeFire__8daE_YM_cFv */
void daE_YM_c::executeFire() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815AC4-80815AC8 000130 0004+00 0/2 0/0 0/0 .rodata @8040 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8040 = 2000.0f;
COMPILER_STRIP_GATE(0x80815AC4, &lit_8040);
#pragma pop
/* 808120B0-808123C4 00A070 0314+00 1/1 0/0 0/0 .text setRiverAttention__8daE_YM_cFv */
void daE_YM_c::setRiverAttention() {
// NONMATCHING
}
/* 808123C4-808123D0 00A384 000C+00 0/0 0/0 1/1 .text setLockByCargo__8daE_YM_cFv */
void daE_YM_c::setLockByCargo() {
field_0x6f2 = 90;
}
/* ############################################################################################## */
/* 80815AC8-80815ACC 000134 0004+00 0/1 0/0 0/0 .rodata @8350 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8350 = 1500.0f;
COMPILER_STRIP_GATE(0x80815AC8, &lit_8350);
#pragma pop
/* 80815ACC-80815AD0 000138 0004+00 0/1 0/0 0/0 .rodata @8351 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8351 = 12.0f / 5.0f;
COMPILER_STRIP_GATE(0x80815ACC, &lit_8351);
#pragma pop
/* 808123D0-80812F0C 00A390 0B3C+00 1/1 0/0 0/0 .text executeRiver__8daE_YM_cFv */
void daE_YM_c::executeRiver() {
// NONMATCHING
}
/* 80812F0C-80812FCC 00AECC 00C0+00 1/1 0/0 0/0 .text s_ym_sub__FPvPv */
static void* s_ym_sub(void* param_0, void* param_1) {
daE_YM_c* actor_a = (daE_YM_c*)param_0;
daE_YM_c* actor_b = (daE_YM_c*)param_1;
if (fopAcM_IsActor(actor_a) && fopAcM_GetName(actor_a) == PROC_E_YM) {
if (!fpcM_IsCreating(fopAcM_GetID(actor_a)) && actor_a != actor_b &&
actor_a->current.pos == actor_b->current.pos)
{
if (actor_b->getFriendFlag() & 1) {
actor_a->setFriendFlag(0x84);
} else {
actor_a->setFriendFlag(0x82);
}
actor_b->setFriendFlag(0x81);
}
}
return 0;
}
/* 80812FCC-8081300C 00AF8C 0040+00 1/1 0/0 0/0 .text checkFrinedSamePos__8daE_YM_cFv */
void daE_YM_c::checkFrinedSamePos() {
if (mFriendFlag == 0) {
setFriendFlag(0x80);
fpcM_Search(s_ym_sub, this);
}
}
/* 8081300C-80813528 00AFCC 051C+00 2/1 0/0 0/0 .text action__8daE_YM_cFv */
void daE_YM_c::action() {
// NONMATCHING
}
/* 80813528-808135B0 00B4E8 0088+00 1/1 0/0 0/0 .text mtx_set__8daE_YM_cFv */
void daE_YM_c::mtx_set() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0x6dc, current.pos.z);
mDoMtx_stack_c::ZXYrotM(field_0x668);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::scaleM(field_0x68c, field_0x68c, field_0x68c);
field_0x5b4->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
field_0x5b4->modelCalc();
}
/* ############################################################################################## */
/* 80815AD0-80815AD4 00013C 0004+00 0/1 0/0 0/0 .rodata @8621 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8621 = -30.0f;
COMPILER_STRIP_GATE(0x80815AD0, &lit_8621);
#pragma pop
/* 80815AD4-80815AD8 000140 0004+00 0/1 0/0 0/0 .rodata @8622 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8622 = -20.0f;
COMPILER_STRIP_GATE(0x80815AD4, &lit_8622);
#pragma pop
/* 808135B0-808138AC 00B570 02FC+00 1/1 0/0 0/0 .text cc_set__8daE_YM_cFv */
void daE_YM_c::cc_set() {
// NONMATCHING
}
/* 808138AC-80813A10 00B86C 0164+00 1/1 0/0 0/0 .text execute__8daE_YM_cFv */
int daE_YM_c::execute() {
if (field_0x71d) {
return 1;
}
if (field_0x6f0 != 0) {
field_0x6f0--;
}
if (field_0x6f2 != 0) {
field_0x6f2--;
}
if (field_0x6f4 != 0) {
field_0x6f4--;
}
if (field_0x6f6 != 0) {
field_0x6f6--;
}
if (field_0x6f8 != 0) {
field_0x6f8--;
}
if (field_0x6fc != 0) {
field_0x6fc--;
}
if (field_0x6fe != 0) {
field_0x6fe--;
}
if (field_0x700 != 0) {
field_0x700--;
}
if (field_0x6fa != 0) {
field_0x6fa--;
}
if (field_0x704 != 0) {
field_0x704--;
}
if (field_0x70a != 0) {
field_0x70a--;
}
if (field_0x70c != 0) {
field_0x70c--;
}
if (field_0x70e != 0) {
field_0x70e--;
}
checkElectricStart();
action();
mtx_set();
cc_set();
return 1;
}
/* 80813A10-80813A30 00B9D0 0020+00 2/1 0/0 0/0 .text daE_YM_Execute__FP8daE_YM_c */
static int daE_YM_Execute(daE_YM_c* i_this) {
return i_this->execute();
}
/* 80813A30-80813A38 00B9F0 0008+00 1/0 0/0 0/0 .text daE_YM_IsDelete__FP8daE_YM_c */
static int daE_YM_IsDelete(daE_YM_c* i_this) {
return 1;
}
/* 80813A38-80813AD0 00B9F8 0098+00 1/1 0/0 0/0 .text _delete__8daE_YM_cFv */
int daE_YM_c::_delete() {
if (mFlyType == true) {
dComIfG_resDelete(&mPhase, "E_TM");
} else {
dComIfG_resDelete(&mPhase, "E_YM");
}
if (field_0xaf4) {
data_80815D28[0] = 0;
}
if (heap != NULL) {
field_0x5bc.deleteObject();
}
return 1;
}
/* 80813AD0-80813AF0 00BA90 0020+00 1/0 0/0 0/0 .text daE_YM_Delete__FP8daE_YM_c */
static int daE_YM_Delete(daE_YM_c* i_this) {
return i_this->_delete();
}
/* 80813AF0-80813E38 00BAB0 0348+00 1/1 0/0 0/0 .text CreateHeap__8daE_YM_cFv */
int daE_YM_c::CreateHeap() {
// NONMATCHING
}
/* 80813E38-80813E3C 00BDF8 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
// cXyz::cXyz() {
extern "C" void __ct__4cXyzFv() {
/* empty function */
}
/* 80813E3C-80813E84 00BDFC 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
// J3DFrameCtrl::~J3DFrameCtrl() {
extern "C" void __dt__12J3DFrameCtrlFv() {
// NONMATCHING
}
/* 80813E84-80813EA4 00BE44 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
static int useHeapInit(fopAc_ac_c* i_this) {
return static_cast<daE_YM_c*>(i_this)->CreateHeap();
}
/* ############################################################################################## */
/* 80815AD8-80815ADC 000144 0004+00 0/2 0/0 0/0 .rodata @8964 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8964 = -200.0f;
COMPILER_STRIP_GATE(0x80815AD8, &lit_8964);
#pragma pop
/* 80815ADC-80815AE0 000148 0004+00 0/1 0/0 0/0 .rodata @8965 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_8965 = 80.0f;
COMPILER_STRIP_GATE(0x80815ADC, &lit_8965);
#pragma pop
/* 80813EA4-808143A0 00BE64 04FC+00 2/2 0/0 0/0 .text checkBeforeBg__8daE_YM_cFs */
void daE_YM_c::checkBeforeBg(s16 param_0) {
// NONMATCHING
}
/* 808143A0-808144D8 00C360 0138+00 1/1 0/0 0/0 .text checkBeforeGround__8daE_YM_cFv */
void daE_YM_c::checkBeforeGround() {
// NONMATCHING
}
/* 808144D8-80814758 00C498 0280+00 1/1 0/0 0/0 .text checkInitialWall__8daE_YM_cFv */
void daE_YM_c::checkInitialWall() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80815AE0-80815AE4 00014C 0004+00 0/1 0/0 0/0 .rodata @9187 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_9187 = -50.0f;
COMPILER_STRIP_GATE(0x80815AE0, &lit_9187);
#pragma pop
/* 80814758-80814AF0 00C718 0398+00 3/3 0/0 0/0 .text checkWall__8daE_YM_cFv */
void daE_YM_c::checkWall() {
// NONMATCHING
}
/* 80814AF0-80814BA4 00CAB0 00B4+00 1/1 0/0 0/0 .text setHideType__8daE_YM_cFv */
void daE_YM_c::setHideType() {
mIsHide = true;
mSphCc.SetCoSPrm(0x145);
mSphCc.SetTgType(0x10000);
m_near_obj = NULL;
m_obj_dist = FLOAT_LABEL(lit_3925);
fpcM_Search(s_obj_sub, this);
if (m_near_obj != NULL) {
cXyz obj_pos(m_near_obj->current.pos);
current.pos.x = obj_pos.x;
current.pos.z = obj_pos.z;
field_0x6a6 = 1;
} else {
field_0x6a6 = 3;
}
}
/* ############################################################################################## */
/* 80815AE4-80815AEC 000150 0008+00 0/1 0/0 0/0 .rodata @9420 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_9420[8] = {
0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80815AE4, &lit_9420);
#pragma pop
/* 80815AEC-80815AEC 000158 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80815AFE = "E_ym";
#pragma pop
/* 80814BA4-80815224 00CB64 0680+00 2/1 0/0 0/0 .text create__8daE_YM_cFv */
// NONMATCHING - literals / small issue
int daE_YM_c::create() {
fopAcM_SetupActor(this, daE_YM_c);
mType = fopAcM_GetParam(this);
if (mType == 0xFF) {
mType = 0;
}
mSwitchBit = fopAcM_GetParam(this) >> 0x18;
u8 prm2 = fopAcM_GetParam(this) >> 0x10;
if (prm2 == 0xFF) {
prm2 = 0;
}
field_0x6e0 = prm2 * 100.0f;
u8 prm1 = fopAcM_GetParam(this) >> 0x8;
u8 tmp0 = current.angle.z >> 8;
mTagNo = (u8)current.angle.z;
field_0x6a1 = 1;
if ((current.angle.x & 3) != 0) {
field_0x6a1 = 0;
}
if ((current.angle.x & 12) != 0) {
field_0x6cb = 1;
}
field_0x6a3 = (u8)(current.angle.x >> 8);
if (mSwitchBit != 0xFF && dComIfGs_isSwitch(mSwitchBit, fopAcM_GetRoomNo(this))) {
return cPhs_ERROR_e;
}
if ((mTagNo != 0 && mTagNo != 0xFF) || (mType == 6 || mType == 3 || mType == 7)) {
mFlyType = true;
} else {
mFlyType = false;
}
int phase;
if (mFlyType == true) {
phase = dComIfG_resLoad(&mPhase, "E_TM");
} else {
phase = dComIfG_resLoad(&mPhase, "E_YM");
}
if (phase == cPhs_COMPLEATE_e) {
current.angle.z = 0;
current.angle.x = 0;
shape_angle.z = 0;
shape_angle.x = 0;
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)useHeapInit, 0x28B0)) {
return cPhs_ERROR_e;
}
if (!data_80815D28[0]) {
field_0xaf4 = 1;
data_80815D28[0] = true;
l_HIO.field_0x4 = -1;
}
field_0x714 = 4;
attention_info.distances[fopAc_attn_BATTLE_e] = 58;
fopAcM_SetMtx(this, field_0x5b4->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -100.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 100.0f, 200.0f);
field_0x760.Set(&current.pos, &old.pos, this, 1, &field_0x720, &speed, NULL, NULL);
field_0x760.OnLineCheck();
field_0x720.SetWall(30.0f, 60.0f);
health = 10;
field_0x560 = 10;
field_0x938.Init(100, 0, this);
mSphCc.Set(E_YM_n::cc_sph_src);
mSphCc.SetStts(&field_0x938);
field_0x5bc.init(&current.pos, &eyePos, 3, 1);
field_0x5bc.setEnemyName("E_ym");
mAtInfo.mpSound = &field_0x5bc;
mAtInfo.mPowerType = 1;
field_0x68c = 0.6f;
switch (mType) {
case 0:
field_0x670 = current.pos;
setActionMode(ACT_WAIT);
break;
case 1:
checkInitialWall();
field_0x670 = current.pos;
setActionMode(ACT_WAIT);
break;
case 2:
setActionMode(ACT_WAIT);
mMode = 100;
break;
case 3:
setActionMode(ACT_FLY);
mMode = 2;
break;
case 4:
if (tmp0 != 0xFF) {
mpPath = dPath_GetRoomPath(tmp0, fopAcM_GetRoomNo(this));
if (mpPath != NULL) {
attention_info.distances[fopAc_attn_ETC_e] = 31;
field_0x6a6 = 4;
field_0x670 = current.pos;
setActionMode(ACT_WAIT);
break;
}
}
mType = 0;
field_0x670 = current.pos;
setActionMode(ACT_WAIT);
break;
case 5:
if (field_0x6a3 == 0xFF) {
mType = 0;
field_0x670 = current.pos;
setActionMode(ACT_WAIT);
} else {
if (tmp0 != 0xFF) {
mpPath = dPath_GetRoomPath(tmp0, fopAcM_GetRoomNo(this));
}
setActionMode(ACT_SWITCH);
if (dComIfGs_isSwitch(field_0x6a3, fopAcM_GetRoomNo(this))) {
mMode = 10;
}
}
break;
case 6:
setActionMode(ACT_FIRE);
break;
case 7:
if (tmp0 != 0xFF) {
mpPath = dPath_GetRoomPath(tmp0, fopAcM_GetRoomNo(this));
}
if (prm1 != 0xFF) {
field_0x6b0 = dPath_GetRoomPath(prm1, fopAcM_GetRoomNo(this));
}
if (mpPath != NULL || field_0x6b0 != NULL) {
field_0x68c = 1.5f;
setActionMode(ACT_RIVER);
break;
}
return cPhs_ERROR_e;
}
field_0x6cc = 1;
if (mFlyType == true && mType != 3) {
field_0x6cc = 0;
}
daE_YM_Execute(this);
}
return phase;
}
/* 80815224-8081526C 00D1E4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
// cM3dGSph::~cM3dGSph() {
extern "C" void __dt__8cM3dGSphFv() {
// NONMATCHING
}
/* 8081526C-808152B4 00D22C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
// cM3dGAab::~cM3dGAab() {
extern "C" void __dt__8cM3dGAabFv() {
// NONMATCHING
}
/* 808152B4-80815310 00D274 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
// dCcD_GStts::~dCcD_GStts() {
extern "C" void __dt__10dCcD_GSttsFv() {
// NONMATCHING
}
/* 80815310-80815380 00D2D0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
// dBgS_ObjAcch::~dBgS_ObjAcch() {
extern "C" void __dt__12dBgS_ObjAcchFv() {
// NONMATCHING
}
/* 80815380-808153F0 00D340 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
// dBgS_AcchCir::~dBgS_AcchCir() {
extern "C" void __dt__12dBgS_AcchCirFv() {
// NONMATCHING
}
/* 808153F0-80815410 00D3B0 0020+00 1/0 0/0 0/0 .text daE_YM_Create__FP8daE_YM_c */
static int daE_YM_Create(daE_YM_c* i_this) {
return i_this->create();
}