diff --git a/include/d/actor/d_a_obj_lv6bemos.h b/include/d/actor/d_a_obj_lv6bemos.h index 68e201376f..5be56dbf6c 100644 --- a/include/d/actor/d_a_obj_lv6bemos.h +++ b/include/d/actor/d_a_obj_lv6bemos.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_LV6BEMOS_H #define D_A_OBJ_LV6BEMOS_H +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,23 +13,51 @@ * @details * */ -class daObjL6Bm_c : public fopAc_ac_c { +class daObjL6Bm_c : public dBgS_MoveBgActor { public: + typedef void (daObjL6Bm_c::*actionFunc)(); + /* 80C7CE24 */ void initBaseMtx(); /* 80C7CE60 */ void setBaseMtx(); - /* 80C7CED4 */ void Create(); - /* 80C7CFD0 */ void CreateHeap(); - /* 80C7D2F8 */ void create1st(); - /* 80C7D3A4 */ void Execute(f32 (**)[3][4]); + /* 80C7CED4 */ int Create(); + /* 80C7CFD0 */ int CreateHeap(); + /* 80C7D2F8 */ cPhs__Step create1st(); + /* 80C7D3A4 */ int Execute(f32 (**)[3][4]); /* 80C7D4F4 */ void action(); /* 80C7D598 */ void actionWait(); /* 80C7D6CC */ void actionFindPlayer(); /* 80C7D894 */ void actionAttack(); - /* 80C7D898 */ void Draw(); - /* 80C7DABC */ void Delete(); + /* 80C7D898 */ int Draw(); + /* 80C7DABC */ int Delete(); -private: - /* 0x568 */ u8 field_0x568[0x918 - 0x568]; + void setAction(u8 action) { mAction = action; } + + u8 getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getArg0() { return fopAcM_GetParamBit(this, 0x10, 8); } + u8 getArg1() { return fopAcM_GetParamBit(this, 0x18, 8); } + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mBeamosModel; + /* 0x5AC */ dCcD_Stts mStts; + /* 0x5E8 */ dCcD_Cps field_0x5e8; + /* 0x72C */ cM3dGCpsS field_0x72c; + /* 0x748 */ dCcD_Sph field_0x748; + /* 0x880 */ J3DModel* mBeamEffectModel; + /* 0x884 */ mDoExt_btkAnm* mpBtkAnm; + /* 0x888 */ mDoExt_btkAnm* mpBtkAnm2; + /* 0x88C */ mDoExt_bckAnm* mBeamBck; + /* 0x890 */ u8 field_0x890; + /* 0x891 */ u8 field_0x891; + /* 0x892 */ s16 field_0x892; + /* 0x894 */ cXyz field_0x894; + /* 0x8A0 */ u8 field_0x8a0[0x8b2 - 0x8a0]; + /* 0x8B2 */ s16 field_0x8b2; + /* 0x8B4 */ s16 field_0x8b4; + /* 0x8B8 */ dBgS_ObjGndChk mObjGndChk; + /* 0x90C */ f32 field_0x90c; + /* 0x910 */ u8 mAction; + /* 0x911 */ u8 field_0x911; + /* 0x914 */ f32 field_0x914; }; STATIC_ASSERT(sizeof(daObjL6Bm_c) == 0x918); diff --git a/include/d/actor/d_a_obj_lv6bemos2.h b/include/d/actor/d_a_obj_lv6bemos2.h index c57dbb20c1..42ab95cece 100644 --- a/include/d/actor/d_a_obj_lv6bemos2.h +++ b/include/d/actor/d_a_obj_lv6bemos2.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_LV6BEMOS2_H #define D_A_OBJ_LV6BEMOS2_H +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,20 +13,23 @@ * @details * */ -class daObjLv6Bm_c : public fopAc_ac_c { +class daObjLv6Bm_c : public dBgS_MoveBgActor { public: + typedef void (daObjLv6Bm_c::*actionFunc)(); + typedef void (daObjLv6Bm_c::*effectFunc)(); + /* 80C7E30C */ void initBaseMtx(); /* 80C7E374 */ void setBaseMtx(); - /* 80C7E448 */ void Create(); - /* 80C7E764 */ void CreateHeap(); - /* 80C7EB7C */ void create1st(); - /* 80C7EC6C */ void Execute(f32 (**)[3][4]); + /* 80C7E448 */ int Create(); + /* 80C7E764 */ int CreateHeap(); + /* 80C7EB7C */ cPhs__Step create1st(); + /* 80C7EC6C */ int Execute(f32 (**)[3][4]); /* 80C7EE50 */ void action(); /* 80C7F2A4 */ void calcBeam(); - /* 80C7F904 */ void checkFindPlayer(); - /* 80C7FA54 */ void checkSearchPlayer(); - /* 80C7FBA4 */ void getSearchDistance(); - /* 80C7FBFC */ void getBeamSearchDistance(); + /* 80C7F904 */ int checkFindPlayer(); + /* 80C7FA54 */ int checkSearchPlayer(); + /* 80C7FBA4 */ f32 getSearchDistance(); + /* 80C7FBFC */ f32 getBeamSearchDistance(); /* 80C7FC54 */ void effect_proc(); /* 80C7FD8C */ void effectWait(); /* 80C7FD90 */ void initEffectSet0(); @@ -41,11 +46,89 @@ public: /* 80C81154 */ void actionDead(); /* 80C81428 */ void initActionEnd(); /* 80C814FC */ void actionEnd(); - /* 80C81500 */ void Draw(); - /* 80C816A8 */ void Delete(); + /* 80C81500 */ int Draw(); + /* 80C816A8 */ int Delete(); -private: - /* 0x568 */ u8 field_0x568[0xabc - 0x568]; + u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwNo2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwNo3() { return fopAcM_GetParamBit(this, 16, 8); } + + s16 getHeadJoint() { return mJoints[0]; } + s16 getBigGearJoint() { return mJoints[1]; } + s16 getSmallGear0Joint() { return mJoints[2]; } + s16 getSmallGear1Joint() { return mJoints[3]; } + s16 getSmallGear2Joint() { return mJoints[4]; } + + u8 getSearchDist() { return fopAcM_GetParamBit(this, 0x1C, 4); } + u16 getBeamSearchDist() { return field_0xa32 & 15; } + + BOOL checkLockOnCamera() { return (field_0xa32 & 0x8000) >> 15; } + + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mBeamosModel; + /* 0x5AC */ mDoExt_brkAnm* mpBrkAnm; + /* 0x5B0 */ mDoExt_bckAnm* mpBckAnm; + /* 0x5B4 */ J3DModel* mBeamEffectModel; + /* 0x5B8 */ mDoExt_btkAnm* mpBtkAnm; + /* 0x5BC */ mDoExt_btkAnm* mpBtkAnm2; + /* 0x5C0 */ mDoExt_bckAnm* mpBckAnm2; + /* 0x5C4 */ dCcD_Stts mStts; + /* 0x600 */ dCcD_Sph field_0x600; + /* 0x738 */ dCcD_Cps field_0x738; + /* 0x87C */ dCcD_Cyl field_0x87c; + /* 0x9B8 */ s16 mJoints[5]; + /* 0x9C2 */ s16 field_0x9c2; + /* 0x9C4 */ s16 field_0x9c4; + /* 0x9C6 */ s16 field_0x9c6; + /* 0x9C8 */ s16 field_0x9c8; + /* 0x9CA */ s16 field_0x9ca; + /* 0x9CC */ s16 field_0x9cc; + /* 0x9CE */ s16 field_0x9ce; + /* 0x9D0 */ s16 field_0x9d0; + /* 0x9D2 */ s16 field_0x9d2; + /* 0x9D4 */ s16 field_0x9d4; + /* 0x9D6 */ s16 field_0x9d6; + /* 0x9D8 */ s16 field_0x9d8; + /* 0x9DA */ s16 field_0x9da; + /* 0x9DC */ s16 field_0x9dc; + /* 0x9DE */ s16 field_0x9de; + /* 0x9E0 */ J3DMaterial* mEyeMaterial; + /* 0x9E4 */ cXyz field_0x9e4; + /* 0x9F0 */ csXyz field_0x9f0; + /* 0x9F8 */ cXyz field_0x9f8; + /* 0xA04 */ u8 field_0xa04[0xa0c - 0xa04]; + /* 0xA0C */ f32 field_0xa0c; + /* 0xA10 */ u8 field_0xa10; + /* 0xA11 */ u8 field_0xa11; + /* 0xA12 */ u8 field_0xa12; + /* 0xA13 */ u8 field_0xa13; + /* 0xA14 */ s8 field_0xa14; + /* 0xA15 */ u8 field_0xa15; + /* 0xA16 */ u8 mMode; + /* 0xA17 */ u8 field_0xa17; + /* 0xA18 */ u8 field_0xa18; + /* 0xA19 */ s8 field_0xa19; + /* 0xA1A */ u8 field_0xa1a; + /* 0xA1B */ u8 field_0xa1b; + /* 0xA1C */ u8 field_0xa1c; + /* 0xA20 */ int field_0xa20; + /* 0XA24 */ JPABaseEmitter* field_0xa24; + /* 0xA28 */ f32 field_0xa28; + /* 0xA2C */ f32 field_0xa2c; + /* 0xA30 */ u16 field_0xa30; + /* 0xA32 */ u16 field_0xa32; + /* 0xA34 */ s16 field_0xa34; + /* 0xA36 */ u8 field_0xa36; + /* 0xA37 */ u8 field_0xa37; + /* 0xA38 */ JPABaseEmitter* field_0xa38[2]; + /* 0xA40 */ JPABaseEmitter* field_0xa40[4]; + /* 0xA50 */ JPABaseEmitter* field_0xa50; + /* 0xA54 */ JPABaseEmitter* field_0xa54; + /* 0xA58 */ cXyz field_0xa58; + /* 0xA64 */ cXyz field_0xa64; + /* 0xA70 */ cXyz field_0xa70; + /* 0xA7C */ Z2SoundObjSimple field_0xa7c; + /* 0xA9C */ Z2SoundObjSimple field_0xa9c; }; STATIC_ASSERT(sizeof(daObjLv6Bm_c) == 0xabc); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index bb8508d625..ea2854dee6 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -835,6 +835,11 @@ public: getTriPla(&poly); return cBgW_CheckBWall(poly.mNormal.y); } + static bool checkGroundHit() { + cM3dGPla poly; + getTriPla(&poly); + return cBgW_CheckBGround(poly.mNormal.y); + } static dBgS_ObjLinChk mLineCheck; }; diff --git a/src/d/actor/d_a_obj_lv6bemos.cpp b/src/d/actor/d_a_obj_lv6bemos.cpp index c928a93269..0cd94d3f97 100644 --- a/src/d/actor/d_a_obj_lv6bemos.cpp +++ b/src/d/actor/d_a_obj_lv6bemos.cpp @@ -4,133 +4,31 @@ */ #include "d/actor/d_a_obj_lv6bemos.h" +#include "SSystem/SComponent/c_lib.h" +#include "d/actor/d_a_player.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +enum Obj_lv6bm_RES_File_ID { + /* BCK */ + /* 0x07 */ BCK_EF_BIMOBEAM = 0x07, -// -// Forward References: -// + /* BMDE */ + /* 0x0A */ BMDE_BM6 = 0xA, -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" void initBaseMtx__11daObjL6Bm_cFv(); -extern "C" void setBaseMtx__11daObjL6Bm_cFv(); -extern "C" void Create__11daObjL6Bm_cFv(); -extern "C" void CreateHeap__11daObjL6Bm_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void create1st__11daObjL6Bm_cFv(); -extern "C" void Execute__11daObjL6Bm_cFPPA3_A4_f(); -extern "C" void action__11daObjL6Bm_cFv(); -extern "C" void actionWait__11daObjL6Bm_cFv(); -extern "C" void actionFindPlayer__11daObjL6Bm_cFv(); -extern "C" void actionAttack__11daObjL6Bm_cFv(); -extern "C" void Draw__11daObjL6Bm_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void Delete__11daObjL6Bm_cFv(); -extern "C" static void daObjL6Bm_create1st__FP11daObjL6Bm_c(); -extern "C" void __dt__14dBgS_ObjGndChkFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" static void daObjL6Bm_MoveBGDelete__FP11daObjL6Bm_c(); -extern "C" static void daObjL6Bm_MoveBGExecute__FP11daObjL6Bm_c(); -extern "C" static void daObjL6Bm_MoveBGDraw__FP11daObjL6Bm_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void func_80C7DE90(void* _this, u8*); -extern "C" static void func_80C7DEAC(); -extern "C" static void func_80C7DEB4(); -extern "C" static void func_80C7DEBC(); -extern "C" extern char const* const d_a_obj_lv6bemos__stringBase0; + /* BMDR */ + /* 0x0D */ BMDR_EF_BIMOBEAM = 0xD, + /* 0x0E */ BMDR_K_BIMO00, -// -// External References: -// + /* BTK */ + /* 0x11 */ BTK_EF_BIMOBEAM = 0x11, + /* 0x12 */ BTK_EF_BIMOBEAM_0FF, + /* 0x13 */ BTK_EF_BIMOBEAM_ON, -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void push__14mDoMtx_stack_cFv(); -extern "C" void pop__14mDoMtx_stack_cFv(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb(); -extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -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 -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps(); -extern "C" void CalcAtVec__8dCcD_CpsFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __ct__8cM3dGCpsFv(); -extern "C" void Set__8cM3dGCpsFRC9cM3dGCpsS(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -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__8dCcD_Cps[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CpsAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" extern u8 data_80C7E138[4]; + /* DZB */ + /* 0x16 */ DZB_K_BIMO00 = 0x16, + /* 0x17 */ DZB_LV6_OBJ_BEMOS, +}; -// -// Declarations: -// - -/* ############################################################################################## */ /* 80C7DECC-80C7DF0C 000000 0040+00 5/5 0/0 0/0 .rodata l_sph_src */ const static dCcD_SrcSph l_sph_src = { { @@ -144,120 +42,83 @@ const static dCcD_SrcSph l_sph_src = { } // mSphAttr }; -/* 80C7DF0C-80C7DF10 000040 0004+00 0/1 0/0 0/0 .rodata @3728 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3728 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C7DF0C, &lit_3728); -#pragma pop - -/* 80C7DF10-80C7DF14 000044 0004+00 0/1 0/0 0/0 .rodata @3729 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3729 = 20.0f; -COMPILER_STRIP_GATE(0x80C7DF10, &lit_3729); -#pragma pop - -/* 80C7DF14-80C7DF18 000048 0004+00 0/1 0/0 0/0 .rodata @3730 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3730 = 200.0f; -COMPILER_STRIP_GATE(0x80C7DF14, &lit_3730); -#pragma pop - -/* 80C7DF18-80C7DF1C 00004C 0004+00 0/3 0/0 0/0 .rodata @3731 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3731[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C7DF18, &lit_3731); -#pragma pop - -/* 80C7DF1C-80C7DF24 000050 0008+00 0/1 0/0 0/0 .rodata @3732 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3732[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7DF1C, &lit_3732); -#pragma pop - -/* 80C7DF24-80C7DF2C 000058 0008+00 0/1 0/0 0/0 .rodata @3733 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3733[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7DF24, &lit_3733); -#pragma pop - -/* 80C7DF2C-80C7DF34 000060 0008+00 0/1 0/0 0/0 .rodata @3734 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3734[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7DF2C, &lit_3734); -#pragma pop - -/* 80C7DF34-80C7DF38 000068 0004+00 0/1 0/0 0/0 .rodata @3735 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3735 = 1200.0f; -COMPILER_STRIP_GATE(0x80C7DF34, &lit_3735); -#pragma pop - /* 80C7CB18-80C7CE24 000078 030C+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -static void nodeCallBack(J3DJoint* param_0, int param_1) { +static int nodeCallBack(J3DJoint* i_joint, int param_2) { // NONMATCHING + if (param_2 == 0) { + int jntNo = i_joint->getJntNo(); + J3DModel* model = j3dSys.getModel(); + daObjL6Bm_c* i_this = (daObjL6Bm_c*)model->getUserArea(); + + mDoMtx_stack_c::copy(model->getAnmMtx(jntNo)); + + if (jntNo == 1) { + mDoMtx_stack_c::XrotM(i_this->field_0x892); + } else if (jntNo == 2) { + mDoMtx_stack_c::push(); + mDoMtx_stack_c::multVecZero(&i_this->field_0x894); + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + + if (i_this->field_0x891 != 0) { + cLib_addCalc0(&i_this->field_0x914, 0.1f, 20.0f); + } else { + i_this->field_0x914 = 200.0f; + } + + f32 fVar1 = player->current.pos.absXZ(i_this->field_0x894); + if (fVar1 > i_this->field_0x914) { + fVar1 -= i_this->field_0x914; + } + + s16 sVar1 = cM_atan2s(i_this->field_0x894.y - player->current.pos.y, fVar1); + if (sVar1 > 8000) { + sVar1 = 8000; + } + + mDoMtx_stack_c::transS(i_this->field_0x894); + mDoMtx_stack_c::YrotM(i_this->field_0x892); + mDoMtx_stack_c::XrotM(sVar1); + i_this->mBeamEffectModel->setBaseTRMtx(mDoMtx_stack_c::get()); + cXyz sp40(0.0f, 0.0f, 1200.0f); + mDoMtx_stack_c::multVec(&sp40, &i_this->field_0x72c.mEnd); + i_this->field_0x72c.mStart = i_this->field_0x894; + i_this->field_0x72c.mRadius = 20.0f; + + i_this->field_0x5e8.cM3dGCps::Set(i_this->field_0x72c); + i_this->field_0x5e8.CalcAtVec(); + mDoMtx_stack_c::pop(); + } + + model->setAnmMtx(jntNo, mDoMtx_stack_c::get()); + mDoMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + } + + return 1; } /* 80C7CE24-80C7CE60 000384 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjL6Bm_cFv */ void daObjL6Bm_c::initBaseMtx() { - // NONMATCHING + mBeamosModel->setBaseScale(scale); + setBaseMtx(); } /* 80C7CE60-80C7CED4 0003C0 0074+00 2/2 0/0 0/0 .text setBaseMtx__11daObjL6Bm_cFv */ void daObjL6Bm_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mBeamosModel->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); } -/* ############################################################################################## */ -/* 80C7DF6C-80C7DF6C 0000A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C7DF6C = "Obj_lv6bm"; -#pragma pop - -/* 80C7DF78-80C7DF84 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, -}; - -/* 80C7DF84-80C7DF98 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 +UNK_REL_DATA; /* 80C7DF98-80C7DF9C -00001 0004+00 4/4 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_lv6bemos__stringBase0; +static char* l_arcName = "Obj_lv6bm"; /* 80C7DF9C-80C7DFB4 000024 0018+00 1/1 0/0 0/0 .data l_cull_box */ -SECTION_DATA static u8 l_cull_box[24] = { - 0xC3, 0x48, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, +static f32 l_cull_box[6] = { + -200.0f, -100.0f, -200.0f, + 200.0f, 100.0f, 200.0f, }; /* 80C7DFB4-80C7E000 00003C 004C+00 1/1 0/0 0/0 .data l_cps_src */ @@ -274,68 +135,290 @@ static dCcD_SrcCps l_cps_src = { }; /* 80C7CED4-80C7CFD0 000434 00FC+00 1/0 0/0 0/0 .text Create__11daObjL6Bm_cFv */ -void daObjL6Bm_c::Create() { - // NONMATCHING +int daObjL6Bm_c::Create() { + initBaseMtx(); + fopAcM_SetMtx(this, mBeamosModel->getBaseTRMtx()); + mStts.Init(0xFF, 0xFF, this); + field_0x5e8.Set(l_cps_src); + field_0x5e8.SetStts(&mStts); + field_0x748.Set(l_sph_src); + field_0x748.SetStts(&mStts); + + fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], l_cull_box[4], l_cull_box[5]); + + J3DJoint* neckJnt = mBeamosModel->getModelData()->getJointNodePointer(1); + if (neckJnt != NULL) { + neckJnt->setCallBack(nodeCallBack); + } + + J3DJoint* eyeJnt = mBeamosModel->getModelData()->getJointNodePointer(2); + if (eyeJnt != NULL) { + eyeJnt->setCallBack(nodeCallBack); + } + + mBeamosModel->setUserArea((u32)this); + + if (neckJnt == NULL) { + OS_REPORT_ERROR("表ビーモス:首ジョイントが見つかりませんでした!\n"); // Table Beamos : Neck joint not found! + } + + if (eyeJnt == NULL) { + OS_REPORT_ERROR("表ビーモス:目ジョイントが見つかりませんでした!\n"); // Table Beamos: Eye joint not found! + } + + setAction(0); + return 1; } -/* ############################################################################################## */ -/* 80C7DF38-80C7DF3C 00006C 0004+00 2/4 0/0 0/0 .rodata @3880 */ -SECTION_RODATA static f32 const lit_3880 = 1.0f; -COMPILER_STRIP_GATE(0x80C7DF38, &lit_3880); +/* 80C7CFD0-80C7D2B0 000530 02E0+00 1/0 0/0 0/0 .text CreateHeap__11daObjL6Bm_cFv */ +int daObjL6Bm_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, BMDR_K_BIMO00); + JUT_ASSERT(620, modelData != 0); + mBeamosModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mBeamosModel == NULL) { + return 0; + } -/* 80C7DF3C-80C7DF44 000070 0008+00 1/1 0/0 0/0 .rodata @3882 */ -SECTION_RODATA static u8 const lit_3882[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7DF3C, &lit_3882); + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, BMDR_EF_BIMOBEAM); + JUT_ASSERT(634, modelData != 0); + mBeamEffectModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284); + if (mBeamEffectModel == NULL) { + return 0; + } -/* 80C7E000-80C7E00C -00001 000C+00 0/1 0/0 0/0 .data @3939 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3939[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__11daObjL6Bm_cFv, -}; -#pragma pop + J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_ON); + JUT_ASSERT(648, pbtk != 0); + mpBtkAnm = new mDoExt_btkAnm(); + if (mpBtkAnm == NULL || mpBtkAnm->init(modelData, pbtk, 1, 0, 1.0f, 0, -1) == 0) { + return 0; + } -/* 80C7E00C-80C7E018 -00001 000C+00 0/1 0/0 0/0 .data @3940 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3940[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionFindPlayer__11daObjL6Bm_cFv, -}; -#pragma pop + #ifdef DEBUG + pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_OFF); + JUT_ASSERT(660, pbtk != 0); + #endif -/* 80C7E018-80C7E024 -00001 000C+00 0/1 0/0 0/0 .data @3941 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_3941[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionAttack__11daObjL6Bm_cFv, -}; -#pragma pop + pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM); + JUT_ASSERT(0x29A, pbtk != 0); + mpBtkAnm2 = new mDoExt_btkAnm(); + if (mpBtkAnm2 == NULL || mpBtkAnm2->init(modelData, pbtk, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } -/* 80C7E024-80C7E048 0000AC 0024+00 0/1 0/0 0/0 .data l_func$3938 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[36] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, BCK_EF_BIMOBEAM); + JUT_ASSERT(678, pbck != 0); + mBeamBck = new mDoExt_bckAnm(); + if (mBeamBck == NULL || mBeamBck->init(pbck, 1, 2, 1.0f, 0, -1, false) == 0) { + return 0; + } + + if (field_0x891 != 0) { + mpBtkAnm->setFrame(mpBtkAnm->getEndFrame()); + mpBtkAnm2->setPlaySpeed(1.0f); + field_0x8b2 = 0x1000; + field_0x8b4 = 4; + field_0x890 = 5; + } + + return 1; +} + +/* 80C7D2F8-80C7D3A4 000858 00AC+00 1/1 0/0 0/0 .text create1st__11daObjL6Bm_cFv */ +cPhs__Step daObjL6Bm_c::create1st() { + if (fopAcM_isSwitch(this, getSwBit())) { + OS_REPORT("ビーモス破壊済み!<%d>\n", getSwBit() & 0xFF); // Beamos has been destroyed! <%d>\n + return cPhs_ERROR_e; + } + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhase, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + phase = (cPhs__Step)MoveBGCreate(l_arcName, DZB_K_BIMO00, NULL, 0x4000, NULL); + if (phase == cPhs_ERROR_e) { + return phase; + } + } + + return phase; +} + +/* 80C7D3A4-80C7D4F4 000904 0150+00 1/0 0/0 0/0 .text Execute__11daObjL6Bm_cFPPA3_A4_f */ +int daObjL6Bm_c::Execute(f32 (**param_1)[3][4]) { + static u16 const l_particle_id[6] = { + 0x828F, 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, + }; + + if (field_0x891 != 0) { + mBeamBck->play(); + dComIfG_Ccsp()->Set(&field_0x5e8); + } + + if (field_0x748.ChkTgHit() && field_0x748.GetTgHitObj() != NULL) { + for (int i = 0; i < 5; i++) { + dComIfGp_particle_set(l_particle_id[i], ¤t.pos, NULL, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + } + + fopAcM_delete(this); + fopAcM_onSwitch(this, getSwBit()); + } + + field_0x748.SetC(field_0x894); + dComIfG_Ccsp()->Set(&field_0x748); + action(); + *param_1 = &mBgMtx; + setBaseMtx(); + return 1; +} + +/* 80C7D4F4-80C7D598 000A54 00A4+00 1/1 0/0 0/0 .text action__11daObjL6Bm_cFv */ +void daObjL6Bm_c::action() { + static daObjL6Bm_c::actionFunc l_func[3] = { + &daObjL6Bm_c::actionWait, + &daObjL6Bm_c::actionFindPlayer, + &daObjL6Bm_c::actionAttack, + }; + + (this->*l_func[mAction])(); +} + +/* 80C7D598-80C7D6CC 000AF8 0134+00 1/0 0/0 0/0 .text actionWait__11daObjL6Bm_cFv */ +void daObjL6Bm_c::actionWait() { + // NONMATCHING + f32 fVar1; + f32 playerDistance = fopAcM_searchPlayerDistanceXZ(this); + + if (getArg0() != 0xFF) { + fVar1 = getArg0() * 50.0f; + } else { + fVar1 = 1000.0f; + } + + if (playerDistance < fVar1 && (s16)abs((s16)(cLib_targetAngleY(fopAcM_GetPosition_p(this), fopAcM_GetPosition_p(dComIfGp_getPlayer(0))) - current.angle.y)) < 0x1000) { + setAction(1); + field_0x911 = 20; + } else { + s16 sVar1; + if (getArg1() == 0xFF) { + sVar1 = 0x4B0; + } else { + sVar1 = (u16)getArg1() * 100; + } + current.angle.y += sVar1; + } + + field_0x892 = current.angle.y; + if (mpBtkAnm->play() != 0) { + mpBtkAnm->setPlaySpeed(0.0f); + } +} + +/* 80C7D6CC-80C7D894 000C2C 01C8+00 1/0 0/0 0/0 .text actionFindPlayer__11daObjL6Bm_cFv */ +void daObjL6Bm_c::actionFindPlayer() { + // NONMATCHING + f32 fVar1; + f32 playerDistance = fopAcM_searchPlayerDistanceXZ(this); + + if (getArg0() != 0xFF) { + fVar1 = getArg0() * 50.0f; + } else { + fVar1 = 1000.0f; + } + + if (playerDistance < fVar1) { + OS_REPORT("プレイヤー離れました!\n"); // Player has left!\n + setAction(0); + + if (field_0x891 != 0) { + mpBtkAnm->init(mBeamEffectModel->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_0FF), + 1, 0, 1.0f, 0, -1); + field_0x891 = 0; + } + } else { + cLib_addCalcAngleS2(¤t.angle.y, fopAcM_searchPlayerAngleY(this), 10, 0x400); + if (cLib_calcTimer(&field_0x911) == 0) { + if (field_0x891 == 0) { + mpBtkAnm->init(mBeamEffectModel->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOBEAM_ON), + 1, 0, 0.0f, 0, -1); + field_0x891 = 1; + mpBtkAnm->setPlaySpeed(1.0f); + } + + mpBtkAnm->play(); + mpBtkAnm2->play(); + } + } + + field_0x892 = current.angle.y; +} + +/* 80C7D894-80C7D898 000DF4 0004+00 1/0 0/0 0/0 .text actionAttack__11daObjL6Bm_cFv */ +void daObjL6Bm_c::actionAttack() { + /* empty function */ +} + +/* 80C7D898-80C7DA74 000DF8 01DC+00 1/0 0/0 0/0 .text Draw__11daObjL6Bm_cFv */ +int daObjL6Bm_c::Draw() { + g_env_light.settingTevStruct(16, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mBeamosModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mBeamosModel); + dComIfGd_setList(); + + if (field_0x891 != 0) { + g_env_light.setLightTevColorType_MAJI(mBeamEffectModel, &tevStr); + mpBtkAnm->entry(mBeamEffectModel->getModelData()); + mpBtkAnm2->entry(mBeamEffectModel->getModelData()); + mBeamBck->entry(mBeamEffectModel->getModelData()); + mDoExt_modelUpdateDL(mBeamEffectModel); + mBeamBck->remove(mBeamEffectModel->getModelData()); + mpBtkAnm->remove(mBeamEffectModel->getModelData()); + mpBtkAnm2->remove(mBeamEffectModel->getModelData()); + } + + if (field_0x90c != -1000000000.0f) { + cM3dGPla plane; + if (dComIfG_Bgsp().GetTriPla(mObjGndChk, &plane)) { + dComIfGd_setSimpleShadow(¤t.pos, field_0x90c, 120.0f, &plane.mNormal, 0, + 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + } + + return 1; +} + +/* 80C7DABC-80C7DAF0 00101C 0034+00 1/0 0/0 0/0 .text Delete__11daObjL6Bm_cFv */ +int daObjL6Bm_c::Delete() { + dComIfG_resDelete(&mPhase, l_arcName); + return 1; +} + +/* 80C7DAF0-80C7DC78 001050 0188+00 1/0 0/0 0/0 .text daObjL6Bm_create1st__FP11daObjL6Bm_c */ +static int daObjL6Bm_create1st(daObjL6Bm_c* i_this) { + fopAcM_SetupActor(i_this, daObjL6Bm_c); + return i_this->create1st(); +} + +/* 80C7DDDC-80C7DDFC 00133C 0020+00 1/0 0/0 0/0 .text daObjL6Bm_MoveBGDelete__FP11daObjL6Bm_c */ +static int daObjL6Bm_MoveBGDelete(daObjL6Bm_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C7DDFC-80C7DE1C 00135C 0020+00 1/0 0/0 0/0 .text daObjL6Bm_MoveBGExecute__FP11daObjL6Bm_c */ +static int daObjL6Bm_MoveBGExecute(daObjL6Bm_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C7DE1C-80C7DE48 00137C 002C+00 1/0 0/0 0/0 .text daObjL6Bm_MoveBGDraw__FP11daObjL6Bm_c */ +static int daObjL6Bm_MoveBGDraw(daObjL6Bm_c* i_this) { + return i_this->MoveBGDraw(); +} /* 80C7E048-80C7E068 -00001 0020+00 1/0 0/0 0/0 .data daObjL6Bm_METHODS */ static actor_method_class daObjL6Bm_METHODS = { - (process_method_func)daObjL6Bm_create1st__FP11daObjL6Bm_c, - (process_method_func)daObjL6Bm_MoveBGDelete__FP11daObjL6Bm_c, - (process_method_func)daObjL6Bm_MoveBGExecute__FP11daObjL6Bm_c, + (process_method_func)daObjL6Bm_create1st, + (process_method_func)daObjL6Bm_MoveBGDelete, + (process_method_func)daObjL6Bm_MoveBGExecute, 0, - (process_method_func)daObjL6Bm_MoveBGDraw__FP11daObjL6Bm_c, + (process_method_func)daObjL6Bm_MoveBGDraw, }; /* 80C7E068-80C7E098 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv6bemos */ @@ -355,256 +438,3 @@ extern actor_process_profile_definition g_profile_Obj_Lv6bemos = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C7E098-80C7E0A4 000120 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, -}; - -/* 80C7E0A4-80C7E0B0 00012C 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, -}; - -/* 80C7E0B0-80C7E0E0 000138 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */ -SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_ObjGndChkFv, - (void*)NULL, - (void*)NULL, - (void*)func_80C7DEAC, - (void*)NULL, - (void*)NULL, - (void*)func_80C7DEBC, - (void*)NULL, - (void*)NULL, - (void*)func_80C7DEB4, -}; - -/* 80C7E0E0-80C7E0EC 000168 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, -}; - -/* 80C7E0EC-80C7E0F8 000174 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, -}; - -/* 80C7E0F8-80C7E104 000180 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 80C7E104-80C7E110 00018C 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, -}; - -/* 80C7CFD0-80C7D2B0 000530 02E0+00 1/0 0/0 0/0 .text CreateHeap__11daObjL6Bm_cFv */ -void daObjL6Bm_c::CreateHeap() { - // NONMATCHING -} - -/* 80C7D2B0-80C7D2F8 000810 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80C7D2F8-80C7D3A4 000858 00AC+00 1/1 0/0 0/0 .text create1st__11daObjL6Bm_cFv */ -void daObjL6Bm_c::create1st() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7DF44-80C7DF50 000078 000C+00 1/1 0/0 0/0 .rodata l_particle_id$3914 */ -SECTION_RODATA static u8 const l_particle_id[12] = { - 0x82, 0x8F, 0x82, 0x90, 0x82, 0x91, 0x82, 0x92, 0x82, 0x93, 0x82, 0x94, -}; -COMPILER_STRIP_GATE(0x80C7DF44, &l_particle_id); - -/* 80C7D3A4-80C7D4F4 000904 0150+00 1/0 0/0 0/0 .text Execute__11daObjL6Bm_cFPPA3_A4_f */ -void daObjL6Bm_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* 80C7D4F4-80C7D598 000A54 00A4+00 1/1 0/0 0/0 .text action__11daObjL6Bm_cFv */ -void daObjL6Bm_c::action() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7DF50-80C7DF54 000084 0004+00 0/2 0/0 0/0 .rodata @3993 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3993 = 50.0f; -COMPILER_STRIP_GATE(0x80C7DF50, &lit_3993); -#pragma pop - -/* 80C7DF54-80C7DF5C 000088 0004+04 0/2 0/0 0/0 .rodata @3994 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3994[1 + 1 /* padding */] = { - 1000.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x80C7DF54, &lit_3994); -#pragma pop - -/* 80C7DF5C-80C7DF64 000090 0008+00 0/2 0/0 0/0 .rodata @3996 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3996[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C7DF5C, &lit_3996); -#pragma pop - -/* 80C7D598-80C7D6CC 000AF8 0134+00 1/0 0/0 0/0 .text actionWait__11daObjL6Bm_cFv */ -void daObjL6Bm_c::actionWait() { - // NONMATCHING -} - -/* 80C7D6CC-80C7D894 000C2C 01C8+00 1/0 0/0 0/0 .text actionFindPlayer__11daObjL6Bm_cFv - */ -void daObjL6Bm_c::actionFindPlayer() { - // NONMATCHING -} - -/* 80C7D894-80C7D898 000DF4 0004+00 1/0 0/0 0/0 .text actionAttack__11daObjL6Bm_cFv */ -void daObjL6Bm_c::actionAttack() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80C7DF64-80C7DF68 000098 0004+00 0/1 0/0 0/0 .rodata @4160 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4160 = -1000000000.0f; -COMPILER_STRIP_GATE(0x80C7DF64, &lit_4160); -#pragma pop - -/* 80C7DF68-80C7DF6C 00009C 0004+00 0/1 0/0 0/0 .rodata @4161 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4161 = 120.0f; -COMPILER_STRIP_GATE(0x80C7DF68, &lit_4161); -#pragma pop - -/* 80C7D898-80C7DA74 000DF8 01DC+00 1/0 0/0 0/0 .text Draw__11daObjL6Bm_cFv */ -void daObjL6Bm_c::Draw() { - // NONMATCHING -} - -/* 80C7DA74-80C7DABC 000FD4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* 80C7DABC-80C7DAF0 00101C 0034+00 1/0 0/0 0/0 .text Delete__11daObjL6Bm_cFv */ -void daObjL6Bm_c::Delete() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C7E110-80C7E138 000198 0028+00 1/1 0/0 0/0 .data __vt__11daObjL6Bm_c */ -SECTION_DATA extern void* __vt__11daObjL6Bm_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__11daObjL6Bm_cFv, - (void*)Create__11daObjL6Bm_cFv, - (void*)Execute__11daObjL6Bm_cFPPA3_A4_f, - (void*)Draw__11daObjL6Bm_cFv, - (void*)Delete__11daObjL6Bm_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C7DAF0-80C7DC78 001050 0188+00 1/0 0/0 0/0 .text daObjL6Bm_create1st__FP11daObjL6Bm_c */ -static void daObjL6Bm_create1st(daObjL6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C7DC78-80C7DCF0 0011D8 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */ -// dBgS_ObjGndChk::~dBgS_ObjGndChk() { -extern "C" void __dt__14dBgS_ObjGndChkFv() { - // NONMATCHING -} - -/* 80C7DCF0-80C7DD38 001250 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80C7DD38-80C7DD80 001298 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C7DD80-80C7DDDC 0012E0 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C7DDDC-80C7DDFC 00133C 0020+00 1/0 0/0 0/0 .text daObjL6Bm_MoveBGDelete__FP11daObjL6Bm_c */ -static void daObjL6Bm_MoveBGDelete(daObjL6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C7DDFC-80C7DE1C 00135C 0020+00 1/0 0/0 0/0 .text daObjL6Bm_MoveBGExecute__FP11daObjL6Bm_c */ -static void daObjL6Bm_MoveBGExecute(daObjL6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C7DE1C-80C7DE48 00137C 002C+00 1/0 0/0 0/0 .text daObjL6Bm_MoveBGDraw__FP11daObjL6Bm_c */ -static void daObjL6Bm_MoveBGDraw(daObjL6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C7DE48-80C7DE90 0013A8 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C7DE90-80C7DEAC 0013F0 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPUc */ -extern "C" void func_80C7DE90(void* _this, u8* param_0) { - // NONMATCHING -} - -/* 80C7DEAC-80C7DEB4 00140C 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */ -static void func_80C7DEAC() { - // NONMATCHING -} - -/* 80C7DEB4-80C7DEBC 001414 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */ -static void func_80C7DEB4() { - // NONMATCHING -} - -/* 80C7DEBC-80C7DEC4 00141C 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */ -static void func_80C7DEBC() { - // NONMATCHING -} - -/* 80C7DF6C-80C7DF6C 0000A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/actor/d_a_obj_lv6bemos2.cpp b/src/d/actor/d_a_obj_lv6bemos2.cpp index 0044e18e2a..aa49f08c93 100644 --- a/src/d/actor/d_a_obj_lv6bemos2.cpp +++ b/src/d/actor/d_a_obj_lv6bemos2.cpp @@ -4,322 +4,149 @@ */ #include "d/actor/d_a_obj_lv6bemos2.h" +#include "d/actor/d_a_player.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +#include "d/d_com_inf_game.h" #include "d/d_camera.h" +enum E_bm6_RES_File_ID { + /* BCK */ + /* 0x08 */ BCK_BM6_DOWN = 0x8, + /* 0x09 */ BCK_BM6_UP, + /* 0x0A */ BCK_EF_BIMOL6, -// -// Forward References: -// + /* BMDE */ + /* 0x0D */ BMDE_BM6 = 0xD, -extern "C" static void nodeCallBack__FP8J3DJointi(); -extern "C" void initBaseMtx__12daObjLv6Bm_cFv(); -extern "C" void setBaseMtx__12daObjLv6Bm_cFv(); -extern "C" void Create__12daObjLv6Bm_cFv(); -extern "C" void CreateHeap__12daObjLv6Bm_cFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" void create1st__12daObjLv6Bm_cFv(); -extern "C" void Execute__12daObjLv6Bm_cFPPA3_A4_f(); -extern "C" void action__12daObjLv6Bm_cFv(); -extern "C" void calcBeam__12daObjLv6Bm_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void checkFindPlayer__12daObjLv6Bm_cFv(); -extern "C" void checkSearchPlayer__12daObjLv6Bm_cFv(); -extern "C" void getSearchDistance__12daObjLv6Bm_cFv(); -extern "C" void getBeamSearchDistance__12daObjLv6Bm_cFv(); -extern "C" void effect_proc__12daObjLv6Bm_cFv(); -extern "C" void effectWait__12daObjLv6Bm_cFv(); -extern "C" void initEffectSet0__12daObjLv6Bm_cFv(); -extern "C" void effectSet0__12daObjLv6Bm_cFv(); -extern "C" void initActionSwWait__12daObjLv6Bm_cFv(); -extern "C" void actionSwWait__12daObjLv6Bm_cFv(); -extern "C" void initActionWarning__12daObjLv6Bm_cFv(); -extern "C" void actionWarning__12daObjLv6Bm_cFv(); -extern "C" void initActionFindPlayer__12daObjLv6Bm_cFv(); -extern "C" void actionFindPlayer__12daObjLv6Bm_cFv(); -extern "C" void initActionAttack__12daObjLv6Bm_cFv(); -extern "C" void actionAttack__12daObjLv6Bm_cFv(); -extern "C" void initActionDead__12daObjLv6Bm_cFv(); -extern "C" void actionDead__12daObjLv6Bm_cFv(); -extern "C" void initActionEnd__12daObjLv6Bm_cFv(); -extern "C" void actionEnd__12daObjLv6Bm_cFv(); -extern "C" void Draw__12daObjLv6Bm_cFv(); -extern "C" void Delete__12daObjLv6Bm_cFv(); -extern "C" static void daObjLv6Bm_create1st__FP12daObjLv6Bm_c(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" static void daObjLv6Bm_MoveBGDelete__FP12daObjLv6Bm_c(); -extern "C" static void daObjLv6Bm_MoveBGExecute__FP12daObjLv6Bm_c(); -extern "C" static void daObjLv6Bm_MoveBGDraw__FP12daObjLv6Bm_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void func_80C81BB0(void* _this, u16*); -extern "C" void func_80C81BCC(void* _this, u8*); -extern "C" void __sinit_d_a_obj_lv6bemos2_cpp(); -extern "C" extern char const* const d_a_obj_lv6bemos2__stringBase0; + /* BMDR */ + /* 0x10 */ BMDR_EF_BIMOL6 = 0x10, -// -// External References: -// + /* BRK */ + /* 0x13 */ BRK_BM6_LOOK = 0x13, + /* 0x14 */ BRK_BM6_SERCH, + /* 0x15 */ BRK_BM6_TURN, + /* 0x16 */ BRK_BM6_UP, -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); -extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb(); -extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_btkAnmRemove__FP12J3DModelData(); -extern "C" void mDoExt_brkAnmRemove__FP12J3DModelData(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -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 onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz(); -extern "C" void __ct__16dBgS_MoveBgActorFv(); -extern "C" bool IsDelete__16dBgS_MoveBgActorFv(); -extern "C" bool ToFore__16dBgS_MoveBgActorFv(); -extern "C" bool ToBack__16dBgS_MoveBgActorFv(); -extern "C" void -MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f(); -extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv(); -extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps(); -extern "C" void CalcAtVec__8dCcD_CpsFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void ForceLockOn__9dCamera_cFP10fopAc_ac_c(); -extern "C" void dCam_getBody__Fv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" bool __ne__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cBgW_CheckBGround__Ff(); -extern "C" void __ct__8cM3dGCpsFv(); -extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseUC__FPUcUcUc(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void func_802807E0(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__8dCcD_Cps[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__12cCcD_CpsAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mLineCheck__11fopAcM_lc_c[112]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 struct_80C81FE8[4]; + /* BTK */ + /* 0x19 */ BTK_EF_BIMOL6 = 0x19, + /* 0x1A */ BTK_EF_BIMOL6_OFF, + /* 0x1B */ BTK_EF_BIMOL6_ON, -// -// Declarations: -// + /* DZB */ + /* 0x1E */ DZB_BM6 = 0x1E, +}; + +enum Particle { + /* 0x88D3 */ ZL2_GLOW02_1 = 0x88D3, + /* 0x88D4 */ ZL2_GLOW02_2, + /* 0x88D5 */ ZL2_GLOW02_3, + /* 0x88D6 */ ZLF_RING00, + /* 0x88D7 */ ZL2_SENKO01, + /* 0x88D8 */ ZL2_GLOWLINE01, + /* 0x88D9 */ ZL2_ICEROCK_1, + /* 0x88DA */ ZL2_ICEROCK_2, + /* 0x88DB */ ZL2_ROCK02_1, + /* 0x88DC */ ZL2_ROCK02_2, + /* 0x88DD */ NW_SMOKE, + /* 0x890C */ ZL2_SMOKE00_IA8 = 0x890C, +}; /* 80C7E1B8-80C7E30C 000078 0154+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ -static void nodeCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +static int nodeCallBack(J3DJoint* i_joint, int param_2) { + if (param_2 == 0) { + int jntNo = i_joint->getJntNo(); + J3DModel* model = j3dSys.getModel(); + daObjLv6Bm_c* i_this = (daObjLv6Bm_c*)model->getUserArea(); + + MTXCopy(model->getAnmMtx(jntNo), mDoMtx_stack_c::get()); + s16 sVar1 = i_this->field_0xa28 * cM_scos(i_this->field_0xa20 * 0x2CEC); + + if (jntNo == i_this->getHeadJoint()) { + mDoMtx_stack_c::XrotM(i_this->field_0x9c2 + sVar1); + } else if (jntNo == i_this->getBigGearJoint()) { + mDoMtx_stack_c::XrotM(i_this->field_0x9c6); + } else if (jntNo == i_this->getSmallGear0Joint()) { + mDoMtx_stack_c::XrotM(i_this->field_0x9ca); + } else if (jntNo == i_this->getSmallGear1Joint()) { + mDoMtx_stack_c::XrotM(i_this->field_0x9ce); + } else if (jntNo == i_this->getSmallGear2Joint()) { + mDoMtx_stack_c::XrotM(i_this->field_0x9d2); + } + + MTXCopy(mDoMtx_stack_c::get(), model->getAnmMtx(jntNo)); + } + + return 1; } -/* ############################################################################################## */ /* 80C81C2C-80C81C38 000000 000C+00 9/9 0/0 0/0 .rodata l_eye_offset */ -SECTION_RODATA static u8 const l_eye_offset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x43, 0xD7, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C2C, &l_eye_offset); +static f32 const l_eye_offset[3] = {0.0f, 430.0f, 80.0f}; /* 80C81C38-80C81C44 00000C 000C+00 0/1 0/0 0/0 .rodata l_beam_offsetPos */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_beam_offsetPos[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0xC4, 0x00, 0x00, 0x42, 0xFA, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C38, &l_beam_offsetPos); -#pragma pop - -/* 80C81C44-80C81C48 000018 0004+00 2/3 0/0 0/0 .rodata @3854 */ -SECTION_RODATA static f32 const lit_3854 = 0.5f; -COMPILER_STRIP_GATE(0x80C81C44, &lit_3854); - -/* 80C81C48-80C81C4C 00001C 0004+00 10/15 0/0 0/0 .rodata @3855 */ -SECTION_RODATA static f32 const lit_3855 = 1.0f; -COMPILER_STRIP_GATE(0x80C81C48, &lit_3855); +static f32 const l_beam_offsetPos[3] = {0.0f, 98.0f, 125.0f}; /* 80C7E30C-80C7E374 0001CC 0068+00 1/1 0/0 0/0 .text initBaseMtx__12daObjLv6Bm_cFv */ void daObjLv6Bm_c::initBaseMtx() { - // NONMATCHING + cXyz sp18(0.5f, 0.5f, 1.0f); + mBeamosModel->setBaseScale(scale); + mBeamEffectModel->setBaseScale(sp18); + setBaseMtx(); } /* 80C7E374-80C7E448 000234 00D4+00 2/2 0/0 0/0 .text setBaseMtx__12daObjLv6Bm_cFv */ void daObjLv6Bm_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mBeamosModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mDoMtx_stack_c::scaleM(1.0f, 1.0f, 1.0f); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); + + cXyz sp18(0.5f, 0.5f, field_0xa0c); + mBeamEffectModel->setBaseScale(sp18); + mDoMtx_stack_c::transS(field_0x9e4); + mDoMtx_stack_c::ZXYrotM(field_0x9f0); + mBeamEffectModel->setBaseTRMtx(mDoMtx_stack_c::get()); } -/* ############################################################################################## */ -/* 80C81C4C-80C81C54 000020 0008+00 3/4 0/0 0/0 .rodata @4012 */ -SECTION_RODATA static u8 const lit_4012[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C4C, &lit_4012); - -/* 80C81CCC-80C81CCC 0000A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C81CCC = "E_bm6"; -SECTION_DEAD static char const* const stringBase_80C81CD2 = "bm6_eye"; -SECTION_DEAD static char const* const stringBase_80C81CDA = "head"; -SECTION_DEAD static char const* const stringBase_80C81CDF = "cogRed"; -SECTION_DEAD static char const* const stringBase_80C81CE6 = "cogBlue"; -SECTION_DEAD static char const* const stringBase_80C81CEE = "cogGreen"; -SECTION_DEAD static char const* const stringBase_80C81CF7 = "cogYellow"; -#pragma pop - -/* 80C81D04-80C81D10 000000 000C+00 4/4 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, -}; - -/* 80C81D10-80C81D24 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 +UNK_REL_DATA; /* 80C81D24-80C81D28 -00001 0004+00 9/10 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_lv6bemos2__stringBase0; +static char* l_arcName = "E_bm6"; /* 80C81D28-80C81D2C -00001 0004+00 0/1 0/0 0/0 .data l_eye_matName */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_eye_matName = (void*)(((char*)&d_a_obj_lv6bemos2__stringBase0) + 0x6); -#pragma pop +static char* l_eye_matName = "bm6_eye"; /* 80C81D2C-80C81D30 -00001 0004+00 0/1 0/0 0/0 .data l_head_joint */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_head_joint = (void*)(((char*)&d_a_obj_lv6bemos2__stringBase0) + 0xE); -#pragma pop +static char* l_head_joint = "head"; /* 80C81D30-80C81D34 -00001 0004+00 0/1 0/0 0/0 .data l_bigGear_joint */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_bigGear_joint = - (void*)(((char*)&d_a_obj_lv6bemos2__stringBase0) + 0x13); -#pragma pop +static char* l_bigGear_joint = "cogRed"; /* 80C81D34-80C81D38 -00001 0004+00 0/1 0/0 0/0 .data l_smallGear0_joint */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_smallGear0_joint = - (void*)(((char*)&d_a_obj_lv6bemos2__stringBase0) + 0x1A); -#pragma pop +static char* l_smallGear0_joint = "cogBlue"; /* 80C81D38-80C81D3C -00001 0004+00 0/1 0/0 0/0 .data l_smallGear1_joint */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_smallGear1_joint = - (void*)(((char*)&d_a_obj_lv6bemos2__stringBase0) + 0x22); -#pragma pop +static char* l_smallGear1_joint = "cogGreen"; /* 80C81D3C-80C81D40 -00001 0004+00 0/1 0/0 0/0 .data l_smallGear2_joint */ -#pragma push -#pragma force_active on -SECTION_DATA static void* l_smallGear2_joint = - (void*)(((char*)&d_a_obj_lv6bemos2__stringBase0) + 0x2B); -#pragma pop +static char* l_smallGear2_joint = "cogYellow"; /* 80C81D40-80C81D54 00003C 0014+00 0/2 0/0 0/0 .data l_joint_table */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_joint_table[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static char* l_joint_table[5] = { + l_head_joint, + l_bigGear_joint, + l_smallGear0_joint, + l_smallGear1_joint, + l_smallGear2_joint, }; -#pragma pop /* 80C81D54-80C81D6C 000050 0018+00 0/1 0/0 0/0 .data l_cull_box */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_cull_box[24] = { - 0xC4, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 0xC4, 0x96, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x44, 0x96, 0x00, 0x00, +static f32 l_cull_box[6] = { + -1200.0f, -100.0f, -1200.0f, + 1200.0f, 400.0f, 1200.0f, }; -#pragma pop /* 80C81D6C-80C81DAC 000068 0040+00 0/1 0/0 0/0 .data l_sph_src */ -#pragma push -#pragma force_active on static dCcD_SrcSph l_sph_src = { { {0x0, {{0x0, 0x0, 0x0}, {0x402420, 0x11}, 0x58}}, // mObj @@ -331,11 +158,8 @@ static dCcD_SrcSph l_sph_src = { {{0.0f, 0.0f, 0.0f}, 50.0f} // mSph } // mSphAttr }; -#pragma pop /* 80C81DAC-80C81DF8 0000A8 004C+00 0/1 0/0 0/0 .data l_cps_src */ -#pragma push -#pragma force_active on static dCcD_SrcCps l_cps_src = { { {0x0, {{0x100, 0x1, 0x1d}, {0x0, 0x0}, 0x0}}, // mObj @@ -347,11 +171,8 @@ static dCcD_SrcCps l_cps_src = { {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 20.0f}, // mCps } // mCpsAttr }; -#pragma pop /* 80C81DF8-80C81E3C 0000F4 0044+00 0/1 0/0 0/0 .data l_cyl_src */ -#pragma push -#pragma force_active on static dCcD_SrcCyl l_cyl_src = { { {0x0, {{0x0, 0x0, 0x1e}, {0x400, 0x11}, 0x18}}, // mObj @@ -365,133 +186,1044 @@ static dCcD_SrcCyl l_cyl_src = { 200.0f // mHeight } // mCyl }; -#pragma pop /* 80C7E448-80C7E764 000308 031C+00 1/0 0/0 0/0 .text Create__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::Create() { - // NONMATCHING +int daObjLv6Bm_c::Create() { + fopAcM_SetMtx(this, mBeamosModel->getBaseTRMtx()); + mStts.Init(0xFF, 0xFF, this); + field_0x600.Set(l_sph_src); + field_0x600.SetStts(&mStts); + field_0x738.Set(l_cps_src); + field_0x738.SetStts(&mStts); + field_0x87c.Set(l_cyl_src); + field_0x87c.SetStts(&mStts); + + fopAcM_setCullSizeBox(this, l_cull_box[0], l_cull_box[1], l_cull_box[2], l_cull_box[3], l_cull_box[4], l_cull_box[5]); + + JUTNameTab* name = mBeamosModel->getModelData()->getJointTree().getJointName(); + for (int i = 0; i < 5; i++) { + for (u16 j = 0; j < mBeamosModel->getModelData()->getJointNum(); j++) { + if (strcmp(name->getName(j), l_joint_table[i]) == 0) { + mJoints[i] = j; + mBeamosModel->getModelData()->getJointNodePointer(j)->setCallBack(nodeCallBack); + } + } + } + + mBeamosModel->setUserArea((u32)this); + name = mBeamosModel->getModelData()->getMaterialTable().getMaterialName(); + for (u16 i = 0; i < mBeamosModel->getModelData()->getMaterialNum(); i++) { + if (strcmp(name->getName(i), l_eye_matName) == 0) { + mEyeMaterial = mBeamosModel->getModelData()->getMaterialNodePointer(i); + } + } + + #ifdef DEBUG + if (mEyeMaterial == NULL) { + OS_REPORT("Lv6ビーモス:目のマテリアル<%s>がありません\n", l_eye_matName) // Lv6 Beamos: Eye material <%s> is not available. + return 0; + } + #endif + + field_0xa7c.init(&field_0xa64, 1); + field_0xa9c.init(&field_0xa70, 1); + + field_0xa19 = 1; + if (fopAcM_isSwitch(this, getSwNo2())) { + field_0xa1b = 0; + initActionEnd(); + } else if (getSwNo() != 0xFF && !fopAcM_isSwitch(this, getSwNo())) { + field_0xa1b = 0; + initActionSwWait(); + } else { + field_0xa1b = 1; + mpBrkAnm->init(mBeamosModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_TURN), 1, 2, 1.0f, 0, -1); + mpBckAnm->setFrame(mpBckAnm->getEndFrame()); + initActionWarning(); + } + + + initBaseMtx(); + mBeamosModel->calc(); + + return 1; } -/* ############################################################################################## */ -/* 80C81E3C-80C81E48 -00001 000C+00 0/1 0/0 0/0 .data @4181 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4181[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionSwWait__12daObjLv6Bm_cFv, -}; -#pragma pop +/* 80C7E764-80C7EB34 000624 03D0+00 1/0 0/0 0/0 .text CreateHeap__12daObjLv6Bm_cFv */ +int daObjLv6Bm_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, BMDE_BM6); + JUT_ASSERT(620, modelData != 0); -/* 80C81E48-80C81E54 -00001 000C+00 0/1 0/0 0/0 .data @4182 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4182[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWarning__12daObjLv6Bm_cFv, -}; -#pragma pop + mBeamosModel = mDoExt_J3DModel__create(modelData, 0, 0x11000084); + if (mBeamosModel == NULL) { + return 0; + } -/* 80C81E54-80C81E60 -00001 000C+00 0/1 0/0 0/0 .data @4183 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4183[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionFindPlayer__12daObjLv6Bm_cFv, -}; -#pragma pop + J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_SERCH); + JUT_ASSERT(633, pbrk != 0); + mpBrkAnm = new mDoExt_brkAnm(); + if (mpBrkAnm == NULL || mpBrkAnm->init(modelData, pbrk, 1, 0, 1.0f, 0, -1) == 0) { + return 0; + } -/* 80C81E60-80C81E6C -00001 000C+00 0/1 0/0 0/0 .data @4184 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4184[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionAttack__12daObjLv6Bm_cFv, -}; -#pragma pop + #ifdef DEBUG + pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_TURN); + JUT_ASSERT(644, pbrk != 0); + #endif + + J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, BCK_BM6_UP); + JUT_ASSERT(651, pbck != 0); + mpBckAnm = new mDoExt_bckAnm(); + if (mpBckAnm == NULL || mpBckAnm->init(pbck, 1, 0, 1.0f, 0, -1, false) == 0) { + return 0; + } -/* 80C81E6C-80C81E78 -00001 000C+00 0/1 0/0 0/0 .data @4185 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4185[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionDead__12daObjLv6Bm_cFv, -}; -#pragma pop + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, BMDR_EF_BIMOL6); + JUT_ASSERT(0x29A, modelData != 0); + mBeamEffectModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284); + if (mBeamEffectModel == NULL) { + return 0; + } -/* 80C81E78-80C81E84 -00001 000C+00 0/1 0/0 0/0 .data @4186 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4186[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionEnd__12daObjLv6Bm_cFv, -}; -#pragma pop + J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_OFF); + JUT_ASSERT(680, pbtk != 0); + mpBtkAnm = new mDoExt_btkAnm(); + if (mpBtkAnm == NULL || mpBtkAnm->init(modelData, pbtk, 1, 0, 1.0f, 0, -1) == 0) { + return 0; + } + mpBtkAnm->setFrame(mpBtkAnm->getEndFrame()); -/* 80C81E84-80C81ECC 000180 0048+00 0/1 0/0 0/0 .data l_func$4180 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + #ifdef DEBUG + pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_ON); + JUT_ASSERT(693, pbtk != 0); + #endif -/* 80C81ECC-80C81ED8 -00001 000C+00 0/1 0/0 0/0 .data @4562 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4562[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)effectWait__12daObjLv6Bm_cFv, -}; -#pragma pop + pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6); + JUT_ASSERT(699, pbtk != 0); + mpBtkAnm2 = new mDoExt_btkAnm(); + if (mpBtkAnm2 == NULL || mpBtkAnm2->init(modelData, pbtk, 1, 2, 1.0f, 0, -1) == 0) { + return 0; + } -/* 80C81ED8-80C81EE4 -00001 000C+00 0/1 0/0 0/0 .data @4563 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4563[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)effectSet0__12daObjLv6Bm_cFv, -}; -#pragma pop + J3DAnmTransform* pbck2 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, BCK_EF_BIMOL6); + JUT_ASSERT(711, pbck != 0); + mpBckAnm2 = new mDoExt_bckAnm(); + if (mpBckAnm2 == NULL || mpBckAnm2->init(pbck2, 1, 2, 1.0f, 0, -1, false) == 0) { + return 0; + } -/* 80C81EE4-80C81EFC 0001E0 0018+00 0/1 0/0 0/0 .data l_eff_func$4561 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_eff_func[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop + return 1; +} -/* 80C81EFC-80C81F18 -00001 001C+00 1/1 0/0 0/0 .data @5281 */ -SECTION_DATA static void* lit_5281[7] = { - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0x44), - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0x60), - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0xE4), - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0x174), - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0x188), - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0x1B0), - (void*)(((char*)actionDead__12daObjLv6Bm_cFv) + 0x274), -}; +/* 80C7EB7C-80C7EC6C 000A3C 00F0+00 1/1 0/0 0/0 .text create1st__12daObjLv6Bm_cFv */ +cPhs__Step daObjLv6Bm_c::create1st() { + if (fopAcM_isSwitch(this, (u8)getSwNo3())) { + OS_REPORT("Lv6ビーモス:既に破壊!<%d>\n", getSwNo3()); // Lv6 Beamos: Already destroyed! <%d> + return cPhs_ERROR_e; + } + + if (field_0xa36 == 0) { + field_0xa32 = home.angle.x; + field_0xa34 = home.angle.z; + home.angle.z = 0; + home.angle.x = 0; + current.angle.z = 0; + current.angle.x = 0; + shape_angle.z = 0; + shape_angle.x = 0; + field_0xa36 = 1; + } + + cPhs__Step phase = (cPhs__Step)dComIfG_resLoad(&mPhase, l_arcName); + if (phase == cPhs_COMPLEATE_e) { + phase = (cPhs__Step)MoveBGCreate(l_arcName, DZB_BM6, dBgS_MoveBGProc_TypicalRotY, 0x2FA0, NULL); + + if (phase == cPhs_ERROR_e) { + return phase; + } + } + + return phase; +} + +/* 80C7EC6C-80C7EE50 000B2C 01E4+00 1/0 0/0 0/0 .text Execute__12daObjLv6Bm_cFPPA3_A4_f */ +int daObjLv6Bm_c::Execute(f32 (**param_1)[3][4]) { + field_0xa20++; + + if (field_0x9c2 != field_0x9c4 && field_0x9d6 == 0) { + field_0x9d6 = 0xFA; + } + + cLib_chaseAngleS(&field_0x9c2, field_0x9c4, field_0x9d6); + cLib_chaseAngleS(&field_0x9c6, field_0x9c8, field_0x9da); + cLib_chaseAngleS(&field_0x9ca, field_0x9cc, field_0x9da); + cLib_chaseAngleS(&field_0x9ce, field_0x9d0, field_0x9da); + cLib_chaseAngleS(&field_0x9d2, field_0x9d4, field_0x9da); + + action(); + + eyePos.x = l_eye_offset[0]; + eyePos.y = l_eye_offset[1]; + eyePos.z = l_eye_offset[2]; + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(home.angle.y + field_0x9c2); + mDoMtx_stack_c::multVec(&eyePos, &eyePos); + attention_info.position = eyePos; + + *param_1 = &mBgMtx; + setBaseMtx(); + + cLib_addCalcAngleS(&field_0x9d6, field_0x9d8, 0x1E, 0x14, 10); + cLib_addCalcAngleS(&field_0x9da, field_0x9dc, 0x1E, 0x14, 10); + cLib_addCalc(&field_0xa28, 0.0f, 0.2f, 50.0f, 10.0f); + field_0x9de = field_0x9c2; + + field_0xa7c.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + field_0xa9c.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + return 1; +} + +/* 80C7EE50-80C7F2A4 000D10 0454+00 1/1 0/0 0/0 .text action__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::action() { + static daObjLv6Bm_c::actionFunc l_func[6] = { + &daObjLv6Bm_c::actionSwWait, + &daObjLv6Bm_c::actionWarning, + &daObjLv6Bm_c::actionFindPlayer, + &daObjLv6Bm_c::actionAttack, + &daObjLv6Bm_c::actionDead, + &daObjLv6Bm_c::actionEnd + }; + + static u16 const l_particle_id[3] = { + ZL2_ROCK02_1, + ZL2_ROCK02_2, + NW_SMOKE, + }; + + cCcD_Obj* hitObj; + if (field_0x600.ChkTgHit()) { + hitObj = field_0x600.GetTgHitObj(); + if (hitObj != NULL && (hitObj->ChkAtType(AT_TYPE_ARROW) || hitObj->ChkAtType(AT_TYPE_BOMB) || hitObj->ChkAtType(AT_TYPE_IRON_BALL))) { + mDoAud_seStart(Z2SE_EN_BM_EYE_BREAK, &eyePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + initEffectSet0(); + fopAcM_onSwitch(this, getSwNo2()); + initActionDead(); + OS_REPORT("Lv6ビーモス:目破壊されました!<%d>\n", getSwNo2()); // Lv6 Beamos: Eye destroyed! <%d> + } + } + + field_0x600.ClrTgHit(); + + if (field_0x87c.ChkTgHit()) { + hitObj = field_0x87c.GetTgHitObj(); + if (hitObj != NULL && hitObj->ChkAtType(AT_TYPE_CSTATUE_SWING)) { + if (fopAcM_GetName(field_0x87c.GetTgHitAc()) == PROC_CSTATUE) { + for (int i = 0; i < 3; i++) { + dComIfGp_particle_set(l_particle_id[i], ¤t.pos, NULL, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + } + + fopAcM_seStart(this, Z2SE_EN_BM_BREAK, 0); + fopAcM_delete(this); + fopAcM_onSwitch(this, getSwNo3()); + OS_REPORT_ERROR("Lv6ビーモス:本体破壊されました!<%d>\n", getSwNo2()); // Lv6 Beamos: The main body has been destroyed! <%d> + } + } + } + + effect_proc(); + calcBeam(); + + if (field_0xa10 == 3) { + dComIfG_Ccsp()->Set(&field_0x738); + if (mpBtkAnm != NULL && mpBtkAnm->getFrame() != 0.0f) { + field_0xa7c.startLevelSound(Z2SE_EN_BM_BEAM2, 0, -1); + } + } + + (this->*l_func[field_0xa10])(); + + mpBckAnm2->play(); + mpBtkAnm->play(); + mpBtkAnm2->play(); + mpBrkAnm->play(); + mpBckAnm->play(); + + if (field_0x9d6 != 0) { + fopAcM_seStartLevel(this, Z2SE_EN_BM_TURN, 0); + } + + if (field_0xa10 != 0) { + field_0x600.SetC(eyePos); + dComIfG_Ccsp()->Set(&field_0x600); + } + + cXyz sp2c(current.pos); + sp2c.y += 300.0f; + field_0x87c.SetC(sp2c); + dComIfG_Ccsp()->Set(&field_0x87c); +} + +/* 80C7F2A4-80C7F8BC 001164 0618+00 1/1 0/0 0/0 .text calcBeam__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::calcBeam() { + daPy_py_c* player = daPy_getPlayerActorClass(); + fopAcM_searchPlayerDistanceXZ(this); + + mDoMtx_stack_c::copy(mBeamosModel->getAnmMtx(getHeadJoint())); + mDoMtx_stack_c::multVecZero(&field_0x9e4); + mDoMtx_stack_c::transS(field_0x9e4); + mDoMtx_stack_c::YrotM(shape_angle.y + field_0x9c2); + mDoMtx_stack_c::transM(cXyz(l_beam_offsetPos[0], l_beam_offsetPos[1], l_beam_offsetPos[2])); + mDoMtx_stack_c::multVecZero(&field_0x9e4); + + cXyz sp6c(0.0f, 0.0f, field_0xa2c); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y + field_0x9c2); + mDoMtx_stack_c::multVec(&sp6c, &field_0x9f8); + field_0x9f8.y += player->current.pos.y - current.pos.y; + + cXyz sp78(field_0x9e4 - field_0x9f8); + field_0x9f0.x = cM_atan2s(sp78.y, field_0x9f8.absXZ(field_0x9e4)); + if (field_0x9f0.x < cM_deg2s(20.0f)) { + field_0x9f0.x = cM_deg2s(20.0f); + } + field_0x9f0.y = field_0x9c2 + current.angle.y; + field_0x9f0.z = 0; + + sp6c = field_0x9f8 - field_0x9e4; + sp6c.normalizeZP(); + + f32 fVar1 = (int)(mpBtkAnm->getFrame() + 0.5f) * 360.0f; + + if (fVar1 > 1200.0f) { + fVar1 = 1200.0f; + } + + field_0x9f8 = field_0x9e4 + (sp6c * fVar1); + if (fopAcM_lc_c::lineCheck(&field_0x9e4, &field_0x9f8, this)) { + field_0xa0c = field_0x9e4.abs(fopAcM_lc_c::getCross()) / fVar1; + } else { + field_0xa0c = 1.0f; + } + + field_0xa0c += 0.01f; + field_0x9f8 = field_0x9e4 + (sp6c * (fVar1 * field_0xa0c)); + field_0x738.cCcD_CpsAttr::Set(field_0x9e4, field_0x9f8, 20.0f); + field_0x738.CalcAtVec(); + + if (field_0xa19 > 0) { + cXyz sp84(field_0x9f8); + if (fopAcM_lc_c::lineCheck(&field_0x9e4, &field_0x9f8, this) != NULL && fopAcM_lc_c::checkGroundHit()) { + sp84 = fopAcM_lc_c::getCross(); + } + + if (cLib_chasePos(&field_0xa64, sp84, 60.0f)) { + field_0xa19 = -1; + } + } else if (cLib_chasePos(&field_0xa64, field_0x9e4, 60.0f)) { + field_0xa19 = 1; + } + +} + +/* 80C7F904-80C7FA54 0017C4 0150+00 1/1 0/0 0/0 .text checkFindPlayer__12daObjLv6Bm_cFv */ +int daObjLv6Bm_c::checkFindPlayer() { + daPy_py_c* player = daPy_getPlayerActorClass(); + f32 searchDistance = getSearchDistance(); + int rv = -1; + + field_0xa15 = 0; + f32 playerDistanceXZ = fopAcM_searchPlayerDistanceXZ(this); + f32 fVar1 = current.pos.y - player->current.pos.y; + if (playerDistanceXZ > searchDistance) { + return -1; + } + + if (fabsf(fVar1) > (1.0f - (playerDistanceXZ / searchDistance)) * l_eye_offset[1]) { + return -1; + } + + if ((s16)abs((s16)(fopAcM_searchPlayerAngleY(this) - field_0x9c2 - home.angle.y)) < 0x30D4) { + rv = 0; + } + + if ((s8)rv == 0) { + cXyz sp5c(eyePos); + cXyz sp68(player->eyePos); + if (fopAcM_lc_c::lineCheck(&sp5c, &sp68, this)) { + field_0xa15 = 1; + } + } + + return rv; +} + +/* 80C7FA54-80C7FBA4 001914 0150+00 1/1 0/0 0/0 .text checkSearchPlayer__12daObjLv6Bm_cFv */ +int daObjLv6Bm_c::checkSearchPlayer() { + daPy_py_c* player = daPy_getPlayerActorClass(); + f32 searchDistance = getSearchDistance(); + int rv = -1; + + field_0xa15 = 0; + + f32 playerDistanceXZ = fopAcM_searchPlayerDistanceXZ(this); + f32 fVar1 = current.pos.y - player->current.pos.y; + if (playerDistanceXZ > searchDistance) { + return -1; + } + + if (fabsf(fVar1) > (1.0f - (playerDistanceXZ / searchDistance)) * l_eye_offset[1]) { + return -1; + } + + if ((s16)abs((s16)(fopAcM_searchPlayerAngleY(this) - field_0x9c2 - home.angle.y)) < 0x3A98) { + rv = 0; + } + + if ((s8)rv == 0) { + cXyz sp5c(eyePos); + cXyz sp68(player->eyePos); + if (fopAcM_lc_c::lineCheck(&sp5c, &sp68, this)) { + field_0xa15 = 1; + } + } + + return rv; +} + +/* 80C7FBA4-80C7FBFC 001A64 0058+00 2/2 0/0 0/0 .text getSearchDistance__12daObjLv6Bm_cFv */ +f32 daObjLv6Bm_c::getSearchDistance() { + f32 rv = 1000.0f; + if (getSearchDist() != 15 && getSearchDist() != 0) { + rv -= getSearchDist() * 50.0f; + } + return rv; +} + +/* 80C7FBFC-80C7FC54 001ABC 0058+00 1/1 0/0 0/0 .text getBeamSearchDistance__12daObjLv6Bm_cFv */ +f32 daObjLv6Bm_c::getBeamSearchDistance() { + f32 rv = 1000.0f; + if (getBeamSearchDist() != 15 && getBeamSearchDist() != 0) { + rv -= getBeamSearchDist() * 50.0f; + } + return rv; +} + +/* 80C7FC54-80C7FD8C 001B14 0138+00 1/1 0/0 0/0 .text effect_proc__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::effect_proc() { + static daObjLv6Bm_c::effectFunc l_eff_func[2] = { + &daObjLv6Bm_c::effectWait, + &daObjLv6Bm_c::effectSet0, + }; + + (this->*l_eff_func[field_0xa1a])(); + + if (field_0xa50 != NULL) { + mDoMtx_stack_c::copy(mBeamosModel->getAnmMtx((u16)getBigGearJoint())); + mDoMtx_stack_c::multVecZero(&field_0xa58); + mDoAud_seStartLevel(Z2SE_EN_BM_SPARK, &field_0xa58, 0, 0); + } +} + +/* 80C7FD8C-80C7FD90 001C4C 0004+00 1/0 0/0 0/0 .text effectWait__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::effectWait() { + /* empty function */ +} + +/* 80C7FD90-80C7FEC4 001C50 0134+00 1/1 0/0 0/0 .text initEffectSet0__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initEffectSet0() { + static u16 const eff_id[2] = { + ZL2_ICEROCK_1, + ZL2_ICEROCK_2, + }; + + csXyz i_rotation(home.angle); + i_rotation.y += field_0x9c2; + + for (int i = 0; i < 2; i++) { + dComIfGp_particle_set(eff_id[i], &eyePos, &i_rotation, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + } + + field_0xa24 = dComIfGp_particle_set(ZL2_SMOKE00_IA8, &eyePos, &i_rotation, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + if (field_0xa24 != NULL) { + field_0xa24->becomeImmortalEmitter(); + } + + field_0xa1a = 1; +} + +/* 80C7FEC4-80C7FF78 001D84 00B4+00 1/0 0/0 0/0 .text effectSet0__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::effectSet0() { + if (field_0xa24 != NULL) { + if (field_0xa24->isEnableDeleteEmitter()) { + field_0xa24->quitImmortalEmitter(); + field_0xa24 = NULL; + } else { + mDoMtx_stack_c::copy(mBeamosModel->getAnmMtx(getHeadJoint())); + field_0xa24->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + } +} + +/* 80C7FF78-80C7FFB8 001E38 0040+00 1/1 0/0 0/0 .text initActionSwWait__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initActionSwWait() { + field_0x9d6 = 0; + field_0x9d8 = 0; + field_0x9da = field_0x9d6; + field_0x9da = field_0x9d8; + mpBrkAnm->setPlaySpeed(0.0f); + mpBckAnm->setPlaySpeed(0.0f); + mMode = 0; + field_0xa10 = 0; +} + +/* 80C7FFB8-80C802AC 001E78 02F4+00 1/0 0/0 0/0 .text actionSwWait__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::actionSwWait() { + cXyz i_sePos; + switch (mMode) { + case 0: + if (fopAcM_isSwitch(this, getSwNo())) { + mpBrkAnm->init(mBeamosModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_UP), + 1, 0, 1.0f, 0, -1); + i_sePos = home.pos; + i_sePos.y += 200.0f; + mDoAud_seStart(Z2SE_EN_BM_BOOT, &i_sePos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + field_0xa1b = 1; + mMode = 1; + } + break; + + case 1: + if (mpBrkAnm->isStop()) { + field_0xa11 = 0; + mMode = 2; + } + break; + + case 2: + if (cLib_calcTimer(&field_0xa11) == 0) { + mpBtkAnm->init(mBeamEffectModel->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_ON), + 1, 0, 0.0f, 0, -1); + mpBtkAnm2->setPlaySpeed(0.0f); + mpBrkAnm->init(mBeamosModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_TURN), + 1, 2, 1.0f, 0, -1); + mpBckAnm->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, BCK_BM6_UP), 1, 0, 1.0f, 0, -1, true); + fopAcM_seStart(this, Z2SE_EN_BM_UP, 0); + field_0xa30 = 20; + initActionWarning(); + } + break; + } +} + +/* 80C802AC-80C802C0 00216C 0014+00 3/3 0/0 0/0 .text initActionWarning__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initActionWarning() { + mMode = 0; + field_0xa10 = 1; +} + +/* 80C802C0-80C803D8 002180 0118+00 1/0 0/0 0/0 .text actionWarning__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::actionWarning() { + field_0x9d8 = 500; + fopAcM_searchPlayerAngleY(this); + + switch (mMode) { + case 0: + mMode = 1; + break; + + case 1: + if (cLib_calcTimer(&field_0xa30) == 0) { + field_0xa14 = checkFindPlayer(); + if (field_0xa14 != -1 && field_0xa15 == 0) { + field_0xa11 = 0; + initActionFindPlayer(); + } + } + break; + } + + field_0x9dc = field_0x9d8 + 100; + if (mMode != 5) { + field_0x9c4 = field_0x9c2 + field_0x9d6; + } + + field_0x9c8 = field_0x9c6 - field_0x9da; + field_0x9cc = field_0x9ca + field_0x9da; + field_0x9d0 = field_0x9ce + field_0x9da; + field_0x9d4 = field_0x9d2 + field_0x9da; +} + +/* 80C803D8-80C80538 002298 0160+00 1/1 0/0 0/0 .text initActionFindPlayer__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initActionFindPlayer() { + mpBrkAnm->init(mBeamosModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_SERCH), + 1, 0, 1.0f, 0, -1); + fopAcM_seStart(this, Z2SE_EN_BM_FIND, 0); + fopAcM_seStart(this, Z2SE_EN_BM_HEAT, 0); + field_0xa11 = 0; + mMode = 0; + field_0x9d8 = 1000; + field_0x9d6 = field_0x9d8; + field_0x9dc = field_0x9d8; + field_0xa10 = 2; +} + +/* 80C80538-80C80684 0023F8 014C+00 1/0 0/0 0/0 .text actionFindPlayer__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::actionFindPlayer() { + switch (mMode) { + case 0: + field_0x9c4 = fopAcM_searchPlayerAngleY(this) - home.angle.y; + field_0x9c8 = field_0x9c6 - field_0x9da; + field_0x9cc = field_0x9ca + field_0x9da; + field_0x9d0 = field_0x9ce + field_0x9da; + field_0x9d4 = field_0x9d2 + field_0x9da; + + if ((s16)abs((s16)(fopAcM_searchPlayerAngleY(this) - field_0x9c2 - home.angle.y)) < 2000) { + mMode = 1; + } + break; + + case 1: + field_0x9c4 = field_0x9c2; + field_0x9d8 = 0; + field_0x9d6 = 0; + field_0xa28 = 300.0f; + mMode = 2; + break; + + case 2: + field_0x9c4 = field_0x9c2; + field_0x9d8 = 0; + field_0x9d6 = 0; + + if (field_0xa28 == 0.0f) { + field_0xa11 = 0; + initActionAttack(); + } + break; + } +} + +/* 80C80684-80C8082C 002544 01A8+00 1/1 0/0 0/0 .text initActionAttack__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initActionAttack() { + static u16 const eff_id[4] = { + ZL2_GLOW02_3, + ZLF_RING00, + ZL2_SENKO01, + ZL2_GLOWLINE01, + }; + + f32 fVar1 = 0.0f; + field_0xa2c = fopAcM_searchPlayerDistanceXZ(this) - fVar1; + + mpBtkAnm->init(mBeamEffectModel->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_ON), + 1, 0, 0.0f, 0, -1); + mpBtkAnm->setFrame(0.0f); + mpBtkAnm2->setPlaySpeed(1.0f); + + field_0xa13 = 16; + field_0xa11 = 20; + field_0xa12 = 0; + + mDoMtx_stack_c::copy(mBeamosModel->getAnmMtx(getHeadJoint())); + + for (int i = 0; i < 4; i++) { + field_0xa40[i] = dComIfGp_particle_set(eff_id[i], ¤t.pos, ¤t.angle, NULL, 0xFF, NULL, -1, NULL, NULL, NULL); + if (field_0xa40[i] != NULL) { + field_0xa40[i]->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + } + + field_0xa18 = 0; + mMode = 0; + field_0xa10 = 3; +} + +/* 80C8082C-80C80F48 0026EC 071C+00 1/0 0/0 0/0 .text actionAttack__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::actionAttack() { + // NONMATCHING + static u16 const l_eff_id[2] = { + ZL2_GLOW02_1, + ZL2_GLOW02_2, + }; + + f32 fVar1 = fopAcM_searchPlayerDistanceXZ(this); + if (fVar1 > getBeamSearchDistance()) { + fVar1 = getBeamSearchDistance(); + } + + bool bVar1 = true; + if (((s8)checkSearchPlayer() == -1 && cLib_calcTimer(&field_0xa11) == 0) || field_0xa15 != 0) { + bVar1 = false; + } + + bool bVar2; + switch (mMode) { + case 0: + if (cLib_calcTimer(&field_0xa12) == 0) { + mMode = 2; + } + break; + + case 1: + field_0x9d8 = 200; + field_0x9c4 = fopAcM_searchPlayerAngleY(this) - home.angle.y; + + cLib_chaseF(&field_0xa2c, fVar1, 5.0f); + if (!bVar1) { + mMode = 3; + } + + if (cLib_calcTimer(&field_0xa17) == 0) { + mMode = 2; + } + break; + + case 2: + field_0x9d8 = 450; + field_0x9c4 = fopAcM_searchPlayerAngleY(this) - home.angle.y; + cLib_chaseF(&field_0xa2c, fVar1, 15.0f); + if (!bVar1) { + mMode = 3; + } + break; + + case 3: + mpBtkAnm->init(mBeamEffectModel->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_OFF), + 1, 0, 1.0f, 0, -1); + mpBrkAnm->init(mBeamosModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_TURN), + 1, 2, 1.0f, 0, -1); + field_0xa1c = 0xFF; + mMode = 4; + break; + + case 4: + bVar2 = false; + if (cLib_chaseUC(&field_0xa1c, 0, 26) == 1) { + if (mpBtkAnm->isStop()) { + bVar2 = true; + } + } + + for (int i = 0; i < 4; i++) { + if (field_0xa40[i] != NULL) { + field_0xa40[i]->setGlobalAlpha(field_0xa1c); + } + } + + if (bVar2) { + for (int i = 0; i < 2; i++) { + if (field_0xa38[i] != NULL) { + field_0xa38[i]->becomeInvalidEmitter(); + field_0xa38[i]->quitImmortalEmitter(); + field_0xa38[i] = NULL; + } + } + + for (int i = 0; i < 4; i++) { + if (field_0xa40[i] != NULL) { + field_0xa40[i]->becomeInvalidEmitter(); + field_0xa40[i]->quitImmortalEmitter(); + field_0xa40[i] = NULL; + } + } + + initActionWarning(); + } + break; + } + + field_0xa70 = home.pos; + bVar1 = false; + + if (fopAcM_lc_c::lineCheck(&field_0x9e4, &field_0x9f8, this) && fopAcM_lc_c::checkGroundHit()) { + if (field_0xa18 == 0) { + for (int i = 0; i < 2; i++) { + if (field_0xa38[i] == NULL) { + field_0xa38[i] = dComIfGp_particle_set(l_eff_id[i], fopAcM_lc_c::getCrossP(), NULL, NULL, 0xFF, + NULL, -1, NULL, NULL, NULL); + } + } + + field_0xa18 = 1; + } else { + mDoMtx_stack_c::transS(fopAcM_lc_c::getCross()); + for (int i = 0; i < 2; i++) { + if (field_0xa38[i] != NULL) { + field_0xa38[i]->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + } + + field_0xa70 = fopAcM_lc_c::getCross(); + } + bVar1 = true; + } + + if (!bVar1) { + for (int i = 0; i < 2; i++) { + if (field_0xa38[i] != NULL) { + field_0xa38[i]->becomeInvalidEmitter(); + field_0xa38[i]->quitImmortalEmitter(); + field_0xa38[i] = NULL; + } + } + + field_0xa18 = 0; + } + + if (field_0xa70 != home.pos) { + field_0xa9c.startLevelSound(Z2SE_EN_BM_BURN2, 0, -1); + } + + if (mpBrkAnm->isStop()) { + mpBrkAnm->init(mBeamosModel->getModelData(), (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, BRK_BM6_LOOK), + 1, 2, 1.0f, 0, -1); + } + + if (cLib_calcTimer(&field_0xa13) == 1) { + mpBtkAnm->setPlaySpeed(1.0f); + } + + mDoMtx_stack_c::copy(mBeamosModel->getAnmMtx(getHeadJoint())); + + for (int i = 0; i < 4; i++) { + if (field_0xa40[i] != NULL) { + field_0xa40[i]->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + } + + field_0x9dc = field_0x9d8 * 3; + field_0x9c8 = field_0x9c6 - field_0x9da; + field_0x9cc = field_0x9ca + field_0x9da; + field_0x9d0 = field_0x9ce + field_0x9da; + field_0x9d4 = field_0x9d2 + field_0x9da; + + if (!checkLockOnCamera()) { + dCam_getBody()->ForceLockOn(this); + } +} + +/* 80C80F48-80C81154 002E08 020C+00 1/1 0/0 0/0 .text initActionDead__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initActionDead() { + if (field_0x9c2 > -0x4000 && field_0x9c2 < 0x4000) { + field_0x9c4 = 0; + } else { + field_0x9c4 = 0x7FFF; + } + + field_0x9d6 = 0; + field_0x9d8 = 0; + + mpBckAnm->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, BCK_BM6_DOWN), 1, 0, 0.0f, 0, -1, true); + if (mpBtkAnm->getBtkAnm() == (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_ON)) { + mpBtkAnm->init(mBeamEffectModel->getModelData(), (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, BTK_EF_BIMOL6_OFF), + 1, 0, 1.0f, 0, -1); + } + + for (int i = 0; i < 2; i++) { + if (field_0xa38[i] != NULL) { + field_0xa38[i]->becomeInvalidEmitter(); + field_0xa38[i]->quitImmortalEmitter(); + field_0xa38[i] = NULL; + } + } + + for (int i = 0; i < 4; i++) { + if (field_0xa40[i] != NULL) { + field_0xa40[i]->becomeInvalidEmitter(); + field_0xa40[i]->quitImmortalEmitter(); + field_0xa40[i] = NULL; + } + } + + field_0xa11 = 20; + field_0xa1b = 0; + fopAcM_OffStatus(this, 0); + field_0x600.SetTgType(field_0x600.GetTgType() & 0xFFBFDFDF); + mMode = 0; + field_0xa10 = 4; +} + +/* 80C81154-80C81428 003014 02D4+00 2/0 0/0 0/0 .text actionDead__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::actionDead() { + switch (mMode) { + case 0: + if (!cLib_calcTimer(&field_0xa11)) { + mMode = 1; + } + break; + + case 1: + field_0x9d8 = 500; + if (field_0xa50 != NULL) { + field_0xa50->becomeInvalidEmitter(); + field_0xa50->quitImmortalEmitter(); + field_0xa50 = NULL; + } + + if (field_0xa54 != NULL) { + field_0xa54->becomeInvalidEmitter(); + field_0xa54->quitImmortalEmitter(); + field_0xa54 = NULL; + } + + mMode = 2; + break; + + case 2: + cLib_addCalcAngleS(&field_0x9d8, 0, 0x5A, 10, 5); + if (field_0x9c2 == field_0x9c4) { + field_0x9d8 = 0; + field_0xa28 = 200.0f; + mMode = 3; + fopAcM_seStart(this, Z2SE_EN_BM_TURN_END, 0); + } + break; + + case 3: + field_0xa11 = 20; + mMode = 4; + break; + + case 4: + if (!cLib_calcTimer(&field_0xa11)) { + mpBckAnm->setPlaySpeed(1.0f); + mMode = 5; + } + break; + + case 5: + if (mpBckAnm->getFrame() == mpBckAnm->getEndFrame() - 6.0f) { + fopAcM_seStart(this, Z2SE_EN_BM_DOWN, 0); + } + + if (mpBckAnm->isStop()) { + field_0xa11 = 10; + mMode = 6; + } + break; + + case 6: + break; + } + + field_0x9dc = field_0x9d8; + field_0x9c8 = field_0x9c6 - field_0x9da; + field_0x9cc = field_0x9ca + field_0x9da; + field_0x9d0 = field_0x9ce + field_0x9da; + field_0x9d4 = field_0x9d2 + field_0x9da; +} + +/* 80C81428-80C814FC 0032E8 00D4+00 1/1 0/0 0/0 .text initActionEnd__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::initActionEnd() { + mpBckAnm->init((J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, BCK_BM6_DOWN), 1, 0, 0.0f, 0, -1, true); + mpBckAnm->setFrame(mpBckAnm->getEndFrame()); + field_0xa1b = 0; + fopAcM_OffStatus(this, 0); + field_0x600.SetTgType(field_0x600.GetTgType() & 0xFFBFDFDF); + field_0xa10 = 5; +} + +/* 80C814FC-80C81500 0033BC 0004+00 1/0 0/0 0/0 .text actionEnd__12daObjLv6Bm_cFv */ +void daObjLv6Bm_c::actionEnd() { + /* empty function */ +} + +/* 80C81500-80C816A8 0033C0 01A8+00 1/0 0/0 0/0 .text Draw__12daObjLv6Bm_cFv */ +int daObjLv6Bm_c::Draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mBeamosModel, &tevStr); + dComIfGd_setListBG(); + + J3DShape* shape = mEyeMaterial->getShape(); + if (field_0xa1b == 0) { + shape->hide(); + } + + mpBrkAnm->entry(mBeamosModel->getModelData()); + mpBckAnm->entry(mBeamosModel->getModelData()); + mDoExt_modelUpdateDL(mBeamosModel); + mDoExt_brkAnmRemove(mBeamosModel->getModelData()); + mDoExt_bckAnmRemove(mBeamosModel->getModelData()); + shape->show(); + dComIfGd_setList(); + g_env_light.setLightTevColorType_MAJI(mBeamEffectModel, &tevStr); + + mpBtkAnm2->entry(mBeamEffectModel->getModelData()); + mpBtkAnm->entry(mBeamEffectModel->getModelData()); + mpBckAnm2->entry(mBeamEffectModel->getModelData()); + mDoExt_modelUpdateDL(mBeamEffectModel); + mDoExt_btkAnmRemove(mBeamEffectModel->getModelData()); + mDoExt_bckAnmRemove(mBeamEffectModel->getModelData()); + + return 1; +} + +/* 80C816A8-80C81808 003568 0160+00 1/0 0/0 0/0 .text Delete__12daObjLv6Bm_cFv */ +int daObjLv6Bm_c::Delete() { + if (field_0xa50 != NULL) { + field_0xa50->becomeInvalidEmitter(); + field_0xa50->quitImmortalEmitter(); + field_0xa50 = NULL; + } + + if (field_0xa54 != NULL) { + field_0xa54->becomeInvalidEmitter(); + field_0xa54->quitImmortalEmitter(); + field_0xa54 = NULL; + } + + for (int i = 0; i < 2; i++) { + if (field_0xa38[i] != NULL) { + field_0xa38[i]->becomeInvalidEmitter(); + field_0xa38[i]->quitImmortalEmitter(); + field_0xa38[i] = NULL; + } + } + + for (int i = 0; i < 4; i++) { + if (field_0xa40[i] != NULL) { + field_0xa40[i]->becomeInvalidEmitter(); + field_0xa40[i]->quitImmortalEmitter(); + field_0xa40[i] = NULL; + } + } + + field_0xa7c.deleteObject(); + field_0xa9c.deleteObject(); + dComIfG_resDelete(&mPhase, l_arcName); + + return 1; +} + +/* 80C81808-80C819C8 0036C8 01C0+00 1/0 0/0 0/0 .text daObjLv6Bm_create1st__FP12daObjLv6Bm_c */ +static int daObjLv6Bm_create1st(daObjLv6Bm_c* i_this) { + fopAcM_SetupActor(i_this, daObjLv6Bm_c); + return i_this->create1st(); +} + +/* 80C81AFC-80C81B1C 0039BC 0020+00 1/0 0/0 0/0 .text daObjLv6Bm_MoveBGDelete__FP12daObjLv6Bm_c */ +static int daObjLv6Bm_MoveBGDelete(daObjLv6Bm_c* i_this) { + return i_this->MoveBGDelete(); +} + +/* 80C81B1C-80C81B3C 0039DC 0020+00 1/0 0/0 0/0 .text daObjLv6Bm_MoveBGExecute__FP12daObjLv6Bm_c */ +static int daObjLv6Bm_MoveBGExecute(daObjLv6Bm_c* i_this) { + return i_this->MoveBGExecute(); +} + +/* 80C81B3C-80C81B68 0039FC 002C+00 1/0 0/0 0/0 .text daObjLv6Bm_MoveBGDraw__FP12daObjLv6Bm_c */ +static int daObjLv6Bm_MoveBGDraw(daObjLv6Bm_c* i_this) { + return i_this->MoveBGDraw(); +} /* 80C81F18-80C81F38 -00001 0020+00 1/0 0/0 0/0 .data daObjLv6Bm_METHODS */ static actor_method_class daObjLv6Bm_METHODS = { - (process_method_func)daObjLv6Bm_create1st__FP12daObjLv6Bm_c, - (process_method_func)daObjLv6Bm_MoveBGDelete__FP12daObjLv6Bm_c, - (process_method_func)daObjLv6Bm_MoveBGExecute__FP12daObjLv6Bm_c, + (process_method_func)daObjLv6Bm_create1st, + (process_method_func)daObjLv6Bm_MoveBGDelete, + (process_method_func)daObjLv6Bm_MoveBGExecute, 0, - (process_method_func)daObjLv6Bm_MoveBGDraw__FP12daObjLv6Bm_c, + (process_method_func)daObjLv6Bm_MoveBGDraw, }; /* 80C81F38-80C81F68 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv6bemos2 */ @@ -511,486 +1243,3 @@ extern actor_process_profile_definition g_profile_Obj_Lv6bemos2 = { fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 80C81F68-80C81F74 000264 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, -}; - -/* 80C81F74-80C81F80 000270 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, -}; - -/* 80C81F80-80C81F8C 00027C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80C81F8C-80C81F98 000288 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, -}; - -/* 80C81F98-80C81FA4 000294 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, -}; - -/* 80C81FA4-80C81FB0 0002A0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 80C81FB0-80C81FBC 0002AC 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, -}; - -/* 80C7E764-80C7EB34 000624 03D0+00 1/0 0/0 0/0 .text CreateHeap__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::CreateHeap() { - // NONMATCHING -} - -/* 80C7EB34-80C7EB7C 0009F4 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* 80C7EB7C-80C7EC6C 000A3C 00F0+00 1/1 0/0 0/0 .text create1st__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::create1st() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81C54-80C81C58 000028 0004+00 4/10 0/0 0/0 .rodata @4173 */ -SECTION_RODATA static u8 const lit_4173[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C54, &lit_4173); - -/* 80C81C58-80C81C5C 00002C 0004+00 0/1 0/0 0/0 .rodata @4174 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4174 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80C81C58, &lit_4174); -#pragma pop - -/* 80C81C5C-80C81C60 000030 0004+00 2/3 0/0 0/0 .rodata @4175 */ -SECTION_RODATA static f32 const lit_4175 = 50.0f; -COMPILER_STRIP_GATE(0x80C81C5C, &lit_4175); - -/* 80C81C60-80C81C64 000034 0004+00 0/1 0/0 0/0 .rodata @4176 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4176 = 10.0f; -COMPILER_STRIP_GATE(0x80C81C60, &lit_4176); -#pragma pop - -/* 80C7EC6C-80C7EE50 000B2C 01E4+00 1/0 0/0 0/0 .text Execute__12daObjLv6Bm_cFPPA3_A4_f - */ -void daObjLv6Bm_c::Execute(f32 (**param_0)[3][4]) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81C64-80C81C6C 000038 0006+02 0/1 0/0 0/0 .rodata l_particle_id$4205 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_particle_id[6 + 2 /* padding */] = { - 0x88, - 0xDB, - 0x88, - 0xDC, - 0x88, - 0xDD, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C64, &l_particle_id); -#pragma pop - -/* 80C81C6C-80C81C70 000040 0004+00 2/4 0/0 0/0 .rodata @4276 */ -SECTION_RODATA static f32 const lit_4276 = -1.0f; -COMPILER_STRIP_GATE(0x80C81C6C, &lit_4276); - -/* 80C81C70-80C81C74 000044 0004+00 1/2 0/0 0/0 .rodata @4277 */ -SECTION_RODATA static f32 const lit_4277 = 300.0f; -COMPILER_STRIP_GATE(0x80C81C70, &lit_4277); - -/* 80C7EE50-80C7F2A4 000D10 0454+00 1/1 0/0 0/0 .text action__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::action() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81C74-80C81C7C 000048 0008+00 0/1 0/0 0/0 .rodata @4452 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4452[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C74, &lit_4452); -#pragma pop - -/* 80C81C7C-80C81C84 000050 0008+00 0/1 0/0 0/0 .rodata @4453 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4453[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C7C, &lit_4453); -#pragma pop - -/* 80C81C84-80C81C8C 000058 0008+00 0/1 0/0 0/0 .rodata @4454 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4454[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81C84, &lit_4454); -#pragma pop - -/* 80C81C8C-80C81C90 000060 0004+00 0/1 0/0 0/0 .rodata @4455 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4455 = 360.0f; -COMPILER_STRIP_GATE(0x80C81C8C, &lit_4455); -#pragma pop - -/* 80C81C90-80C81C94 000064 0004+00 0/1 0/0 0/0 .rodata @4456 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4456 = 1200.0f; -COMPILER_STRIP_GATE(0x80C81C90, &lit_4456); -#pragma pop - -/* 80C81C94-80C81C98 000068 0004+00 0/1 0/0 0/0 .rodata @4457 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4457 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x80C81C94, &lit_4457); -#pragma pop - -/* 80C81C98-80C81C9C 00006C 0004+00 0/1 0/0 0/0 .rodata @4458 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4458 = 20.0f; -COMPILER_STRIP_GATE(0x80C81C98, &lit_4458); -#pragma pop - -/* 80C81C9C-80C81CA0 000070 0004+00 0/1 0/0 0/0 .rodata @4459 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4459 = 60.0f; -COMPILER_STRIP_GATE(0x80C81C9C, &lit_4459); -#pragma pop - -/* 80C7F2A4-80C7F8BC 001164 0618+00 1/1 0/0 0/0 .text calcBeam__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::calcBeam() { - // NONMATCHING -} - -/* 80C7F8BC-80C7F904 00177C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* 80C7F904-80C7FA54 0017C4 0150+00 1/1 0/0 0/0 .text checkFindPlayer__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::checkFindPlayer() { - // NONMATCHING -} - -/* 80C7FA54-80C7FBA4 001914 0150+00 1/1 0/0 0/0 .text checkSearchPlayer__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::checkSearchPlayer() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81CA0-80C81CA4 000074 0004+00 2/2 0/0 0/0 .rodata @4543 */ -SECTION_RODATA static f32 const lit_4543 = 1000.0f; -COMPILER_STRIP_GATE(0x80C81CA0, &lit_4543); - -/* 80C81CA4-80C81CAC 000078 0008+00 2/2 0/0 0/0 .rodata @4545 */ -SECTION_RODATA static u8 const lit_4545[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C81CA4, &lit_4545); - -/* 80C7FBA4-80C7FBFC 001A64 0058+00 2/2 0/0 0/0 .text getSearchDistance__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::getSearchDistance() { - // NONMATCHING -} - -/* 80C7FBFC-80C7FC54 001ABC 0058+00 1/1 0/0 0/0 .text getBeamSearchDistance__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::getBeamSearchDistance() { - // NONMATCHING -} - -/* 80C7FC54-80C7FD8C 001B14 0138+00 1/1 0/0 0/0 .text effect_proc__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::effect_proc() { - // NONMATCHING -} - -/* 80C7FD8C-80C7FD90 001C4C 0004+00 1/0 0/0 0/0 .text effectWait__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::effectWait() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80C81CAC-80C81CB0 000080 0004+00 1/1 0/0 0/0 .rodata eff_id$4596 */ -SECTION_RODATA static u8 const eff_id_4596[4] = { - 0x88, - 0xD9, - 0x88, - 0xDA, -}; -COMPILER_STRIP_GATE(0x80C81CAC, &eff_id_4596); - -/* 80C7FD90-80C7FEC4 001C50 0134+00 1/1 0/0 0/0 .text initEffectSet0__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::initEffectSet0() { - // NONMATCHING -} - -/* 80C7FEC4-80C7FF78 001D84 00B4+00 1/0 0/0 0/0 .text effectSet0__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::effectSet0() { - // NONMATCHING -} - -/* 80C7FF78-80C7FFB8 001E38 0040+00 1/1 0/0 0/0 .text initActionSwWait__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::initActionSwWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81CB0-80C81CB4 000084 0004+00 0/1 0/0 0/0 .rodata @4764 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4764 = 200.0f; -COMPILER_STRIP_GATE(0x80C81CB0, &lit_4764); -#pragma pop - -/* 80C7FFB8-80C802AC 001E78 02F4+00 1/0 0/0 0/0 .text actionSwWait__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::actionSwWait() { - // NONMATCHING -} - -/* 80C802AC-80C802C0 00216C 0014+00 3/3 0/0 0/0 .text initActionWarning__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::initActionWarning() { - // NONMATCHING -} - -/* 80C802C0-80C803D8 002180 0118+00 1/0 0/0 0/0 .text actionWarning__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::actionWarning() { - // NONMATCHING -} - -/* 80C803D8-80C80538 002298 0160+00 1/1 0/0 0/0 .text initActionFindPlayer__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::initActionFindPlayer() { - // NONMATCHING -} - -/* 80C80538-80C80684 0023F8 014C+00 1/0 0/0 0/0 .text actionFindPlayer__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::actionFindPlayer() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81CB4-80C81CBC 000088 0008+00 0/1 0/0 0/0 .rodata eff_id$4844 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const eff_id_4844[8] = { - 0x88, 0xD5, 0x88, 0xD6, 0x88, 0xD7, 0x88, 0xD8, -}; -COMPILER_STRIP_GATE(0x80C81CB4, &eff_id_4844); -#pragma pop - -/* 80C80684-80C8082C 002544 01A8+00 1/1 0/0 0/0 .text initActionAttack__12daObjLv6Bm_cFv - */ -void daObjLv6Bm_c::initActionAttack() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81CBC-80C81CC0 000090 0004+00 0/1 0/0 0/0 .rodata l_eff_id$4949 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const l_eff_id[4] = { - 0x88, - 0xD3, - 0x88, - 0xD4, -}; -COMPILER_STRIP_GATE(0x80C81CBC, &l_eff_id); -#pragma pop - -/* 80C81CC0-80C81CC4 000094 0004+00 0/1 0/0 0/0 .rodata @5133 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5133 = 5.0f; -COMPILER_STRIP_GATE(0x80C81CC0, &lit_5133); -#pragma pop - -/* 80C81CC4-80C81CC8 000098 0004+00 0/1 0/0 0/0 .rodata @5134 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5134 = 15.0f; -COMPILER_STRIP_GATE(0x80C81CC4, &lit_5134); -#pragma pop - -/* 80C8082C-80C80F48 0026EC 071C+00 1/0 0/0 0/0 .text actionAttack__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::actionAttack() { - // NONMATCHING -} - -/* 80C80F48-80C81154 002E08 020C+00 1/1 0/0 0/0 .text initActionDead__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::initActionDead() { - // NONMATCHING -} - -/* 80C81154-80C81428 003014 02D4+00 2/0 0/0 0/0 .text actionDead__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::actionDead() { - // NONMATCHING -} - -/* 80C81428-80C814FC 0032E8 00D4+00 1/1 0/0 0/0 .text initActionEnd__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::initActionEnd() { - // NONMATCHING -} - -/* 80C814FC-80C81500 0033BC 0004+00 1/0 0/0 0/0 .text actionEnd__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::actionEnd() { - /* empty function */ -} - -/* 80C81500-80C816A8 0033C0 01A8+00 1/0 0/0 0/0 .text Draw__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::Draw() { - // NONMATCHING -} - -/* 80C816A8-80C81808 003568 0160+00 1/0 0/0 0/0 .text Delete__12daObjLv6Bm_cFv */ -void daObjLv6Bm_c::Delete() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80C81FBC-80C81FE4 0002B8 0028+00 1/1 0/0 0/0 .data __vt__12daObjLv6Bm_c */ -SECTION_DATA extern void* __vt__12daObjLv6Bm_c[10] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)CreateHeap__12daObjLv6Bm_cFv, - (void*)Create__12daObjLv6Bm_cFv, - (void*)Execute__12daObjLv6Bm_cFPPA3_A4_f, - (void*)Draw__12daObjLv6Bm_cFv, - (void*)Delete__12daObjLv6Bm_cFv, - (void*)IsDelete__16dBgS_MoveBgActorFv, - (void*)ToFore__16dBgS_MoveBgActorFv, - (void*)ToBack__16dBgS_MoveBgActorFv, -}; - -/* 80C81808-80C819C8 0036C8 01C0+00 1/0 0/0 0/0 .text daObjLv6Bm_create1st__FP12daObjLv6Bm_c */ -static void daObjLv6Bm_create1st(daObjLv6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C819C8-80C81A10 003888 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80C81A10-80C81A58 0038D0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80C81A58-80C81AA0 003918 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C81AA0-80C81AFC 003960 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C81AFC-80C81B1C 0039BC 0020+00 1/0 0/0 0/0 .text daObjLv6Bm_MoveBGDelete__FP12daObjLv6Bm_c */ -static void daObjLv6Bm_MoveBGDelete(daObjLv6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C81B1C-80C81B3C 0039DC 0020+00 1/0 0/0 0/0 .text daObjLv6Bm_MoveBGExecute__FP12daObjLv6Bm_c - */ -static void daObjLv6Bm_MoveBGExecute(daObjLv6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C81B3C-80C81B68 0039FC 002C+00 1/0 0/0 0/0 .text daObjLv6Bm_MoveBGDraw__FP12daObjLv6Bm_c */ -static void daObjLv6Bm_MoveBGDraw(daObjLv6Bm_c* param_0) { - // NONMATCHING -} - -/* 80C81B68-80C81BB0 003A28 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C81BB0-80C81BCC 003A70 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPUs */ -extern "C" void func_80C81BB0(void* _this, u16* param_0) { - // NONMATCHING -} - -/* 80C81BCC-80C81BE8 003A8C 001C+00 3/3 0/0 0/0 .text cLib_calcTimer__FPUc */ -extern "C" void func_80C81BCC(void* _this, u8* param_0) { - // NONMATCHING -} - -/* 80C81BE8-80C81C20 003AA8 0038+00 0/0 1/0 0/0 .text __sinit_d_a_obj_lv6bemos2_cpp */ -void __sinit_d_a_obj_lv6bemos2_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80C81BE8, __sinit_d_a_obj_lv6bemos2_cpp); -#pragma pop - -/* ############################################################################################## */ -/* 80C81CC8-80C81CCC 00009C 0004+00 0/0 0/0 0/0 .rodata @5280 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5280 = 6.0f; -COMPILER_STRIP_GATE(0x80C81CC8, &lit_5280); -#pragma pop - -/* 80C81CCC-80C81CCC 0000A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */