diff --git a/config/GZ2E01/rels/d_a_e_hp/symbols.txt b/config/GZ2E01/rels/d_a_e_hp/symbols.txt index b2240915c7e..dd58f774a9e 100644 --- a/config/GZ2E01/rels/d_a_e_hp/symbols.txt +++ b/config/GZ2E01/rels/d_a_e_hp/symbols.txt @@ -122,6 +122,6 @@ __vt__12dBgS_ObjAcch = .data:0x000001B8; // type:object size:0x24 scope:global __vt__8cM3dGPla = .data:0x000001DC; // type:object size:0xC scope:global __vt__12daE_HP_HIO_c = .data:0x000001E8; // type:object size:0xC scope:global __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_200_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte +l_HIOInit = .bss:0x00000008; // type:object size:0x1 data:byte @3921 = .bss:0x0000000C; // type:object size:0xC scope:local l_HIO = .bss:0x00000018; // type:object size:0x14 scope:global data:byte diff --git a/config/ShieldD/rels/d_a_e_hpD/symbols.txt b/config/ShieldD/rels/d_a_e_hpD/symbols.txt index a0cfd862556..25a3aaaed0e 100644 --- a/config/ShieldD/rels/d_a_e_hpD/symbols.txt +++ b/config/ShieldD/rels/d_a_e_hpD/symbols.txt @@ -162,5 +162,5 @@ lbl_191_data_310 = .data:0x00000310; // type:object size:0x24 @120215 = .data:0x00000538; // type:object size:0xC scope:local @120216 = .data:0x0000055C; // type:object size:0x11 scope:local data:string lbl_191_data_56D = .data:0x0000056D; // type:object size:0x8F -lbl_191_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +l_HIOInit = .bss:0x00000000; // type:object size:0x1 data:byte l_HIO = .bss:0x00000004; // type:object size:0x14 scope:global data:byte diff --git a/include/SSystem/SComponent/c_bg_s_lin_chk.h b/include/SSystem/SComponent/c_bg_s_lin_chk.h index b7d116f2e2d..1c0b26c4a5a 100644 --- a/include/SSystem/SComponent/c_bg_s_lin_chk.h +++ b/include/SSystem/SComponent/c_bg_s_lin_chk.h @@ -39,9 +39,9 @@ public: cXyz* GetCrossP() { return &mLin.GetEndP(); } cM3dGLin* GetLinP() { return &mLin; } bool ChkBackFlag() const { return mBackFlag; } - void onBackFlag() { mBackFlag = true; } + void OnBackFlag() { mBackFlag = true; } bool ChkFrontFlag() const { return mFrontFlag; } - void onFrontFlag() { mFrontFlag = true; } + void OnFrontFlag() { mFrontFlag = true; } bool GetPreWallChk() const { return mPreWallChk; } bool GetPreGroundChk() const { return mPreGroundChk; } bool GetPreRoofChk() const { return mPreRoofChk; } diff --git a/include/d/actor/d_a_e_hb.h b/include/d/actor/d_a_e_hb.h index a826621cbfa..bf355b11f33 100644 --- a/include/d/actor/d_a_e_hb.h +++ b/include/d/actor/d_a_e_hb.h @@ -77,8 +77,12 @@ public: STATIC_ASSERT(sizeof(e_hb_class) == 0x1268); -class daE_HB_HIO_c { +class daE_HB_HIO_c : public JORReflexible { public: +#if DEBUG + virtual void genMessage(JORMContext*); +#endif + /* 804FBD6C */ daE_HB_HIO_c(); /* 805005D0 */ virtual ~daE_HB_HIO_c() {} diff --git a/include/d/actor/d_a_e_hp.h b/include/d/actor/d_a_e_hp.h index cbce6d8794b..ad001cf6d73 100644 --- a/include/d/actor/d_a_e_hp.h +++ b/include/d/actor/d_a_e_hp.h @@ -1,6 +1,9 @@ #ifndef D_A_E_HP_H #define D_A_E_HP_H +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_cc_uty.h" #include "f_op/f_op_actor_mng.h" /** @@ -12,14 +15,15 @@ * */ class daE_HP_c : public fopEn_enemy_c { - /* 806E5E30 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 806E5ED0 */ void JointCallBack(J3DJoint*, int); - /* 806E5F1C */ void LampCtrlJoint(J3DJoint*, J3DModel*); - /* 806E5FCC */ void LampJointCallBack(J3DJoint*, int); - /* 806E6018 */ void draw(); +public: + /* 806E5E30 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 806E5ED0 */ static int JointCallBack(J3DJoint*, int); + /* 806E5F1C */ int LampCtrlJoint(J3DJoint*, J3DModel*); + /* 806E5FCC */ static int LampJointCallBack(J3DJoint*, int); + /* 806E6018 */ int draw(); /* 806E6514 */ void setBck(int, u8, f32, f32); /* 806E65C0 */ void setActionMode(int, int); - /* 806E65CC */ void mChkDistance(f32); + /* 806E65CC */ bool mChkDistance(f32); /* 806E673C */ void damage_check(); /* 806E6948 */ void executeWait(); /* 806E6C74 */ void executeMove(); @@ -31,20 +35,86 @@ class daE_HP_c : public fopEn_enemy_c { /* 806E814C */ void action(); /* 806E89C0 */ void mtx_set(); /* 806E8DE0 */ void cc_set(); - /* 806E8FEC */ void execute(); - /* 806E9198 */ void _delete(); - /* 806E9240 */ void CreateHeap(); - /* 806E951C */ void create(); + /* 806E8FEC */ int execute(); + /* 806E9198 */ int _delete(); + /* 806E9240 */ int CreateHeap(); + /* 806E951C */ int create(); /* 806E9900 */ daE_HP_c(); -private: - /* 0x5ac */ u8 field_0x5ac[0xdfc - 0x5ac]; + + /* 0x5AC */ request_of_phase_process_class mPhaseReq; + /* 0x5B4 */ mDoExt_McaMorfSO* mpMorfSO; + /* 0x5B8 */ mDoExt_invisibleModel mInvModel; + /* 0x5C0 */ J3DModel* mpModel; + /* 0x5C4 */ mDoExt_McaMorf* mpMorf; + /* 0x5C8 */ Z2CreatureEnemy mSound1; + /* 0x66C */ Z2CreatureEnemy mSound2; + /* 0x710 */ s32 mAction; + /* 0x714 */ s32 movemode; + /* 0x718 */ u32 field_0x718; + /* 0x71C */ u8 field_0x71c; + /* 0x71D */ u8 field_0x71d; + /* 0x71E */ u8 field_0x71e; + /* 0x71F */ u8 field_0x71f; + /* 0x720 */ cXyz field_0x720; + /* 0x72C */ cXyz field_0x72c; + /* 0x738 */ cXyz field_0x738; + /* 0x744 */ cXyz field_0x744; + /* 0x750 */ cXyz field_0x750; + /* 0x75C */ cXyz field_0x75c; + /* 0x768 */ f32 field_0x768; + /* 0x76C */ csXyz field_0x76c; + /* 0x772 */ csXyz field_0x772; + /* 0x778 */ s16 field_0x778; + /* 0x77A */ u8 arg0; + /* 0x77B */ u8 bitSw; + /* 0x77C */ u8 field_0x77c; + /* 0x780 */ s32 field_0x780; + /* 0x784 */ u32 field_0x784; + /* 0x788 */ u8 field_0x788; + /* 0x789 */ u8 field_0x789; + /* 0x78A */ u8 field_0x78a; + /* 0x78B */ u8 field_0x78b; + /* 0x78C */ u8 mNight; + /* 0x78D */ u8 field_0x78d; + /* 0x790 */ f32 field_0x790; + /* 0x794 */ f32 field_0x794; + /* 0x798 */ f32 field_0x798; + /* 0x79C */ f32 mDisHani; + /* 0x7A0 */ f32 field_0x7a0; + /* 0x7A4 */ f32 field_0x7a4; + /* 0x7A8 */ s16 field_0x7a8; + /* 0x7AA */ s16 field_0x7aa; + /* 0x7AC */ dBgS_AcchCir mAcchCir; + /* 0x7EC */ dBgS_ObjAcch mObjAcch; + /* 0x9C4 */ dCcD_Stts mStts; + /* 0xA00 */ dCcD_Cyl mCyl1; + /* 0xB3C */ dCcD_Cyl mCyl2; + /* 0xC78 */ dCcD_Sph mSph; + /* 0xDB0 */ dCcU_AtInfo mAtInfo; + /* 0xDD4 */ s32 field_0xdd4[2]; + /* 0xDDC */ u32 field_0xddc; + /* 0xDE0 */ cXyz field_0xde0; + /* 0xDEC */ u8 field_0xdec[0xdf9 - 0xdec]; + /* 0xDF9 */ u8 field_0xdf9; }; STATIC_ASSERT(sizeof(daE_HP_c) == 0xdfc); -class daE_HP_HIO_c { +class daE_HP_HIO_c : public JORReflexible { +public: /* 806E5DEC */ daE_HP_HIO_c(); - /* 806E9D38 */ ~daE_HP_HIO_c(); + /* 806E9D38 */ virtual ~daE_HP_HIO_c() {} + +#if DEBUG + void genMessage(JORMContext*); +#endif + + s8 mChild; + f32 modelSize; + s16 waitTimeAfterAttack; + s16 resurrectionTime; + s16 attackDelayOnApproach; + u8 rangeDisplay; }; diff --git a/include/d/actor/d_a_npc_ykm.h b/include/d/actor/d_a_npc_ykm.h index 592425dd2db..c839b791ac0 100644 --- a/include/d/actor/d_a_npc_ykm.h +++ b/include/d/actor/d_a_npc_ykm.h @@ -44,8 +44,6 @@ public: /* 80B5D6C8 */ virtual ~daNpc_ykM_Param_c() {} - void genMessage(JORMContext*); - static daNpc_ykM_HIOParam const m; }; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 1fdae3c74fb..5e204866ad5 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -3558,7 +3558,7 @@ inline int dComIfGp_evmng_startDemo(int param_0) { return dComIfGp_getPEvtManager()->setStartDemo(param_0); } -inline void dComIfGp_event_setTalkPartner(fopAc_ac_c* i_actor) { +inline void dComIfGp_event_setTalkPartner(void* i_actor) { g_dComIfG_gameInfo.play.getEvent().setPtT(i_actor); } diff --git a/include/d/d_event.h b/include/d/d_event.h index cc0bf739f44..fa759c5540e 100644 --- a/include/d/d_event.h +++ b/include/d/d_event.h @@ -105,7 +105,13 @@ public: void setGtItm(u8 itemNo); u16 chkFlag2(u16 flag) { return flag & mFlag2; } - BOOL runCheck() { return mEventStatus != 0; } + BOOL runCheck() { +#if DEBUG + return mEventStatus != 0 || mDebugStb != 0; +#else + return mEventStatus != 0; +#endif + } f32 getCullRate() { return mCullRate; } u16 chkEventFlag(u16 flag) { return flag & mEventFlag; } void onEventFlag(u16 flag) { mEventFlag |= flag; } diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 2b103073dac..12c179e77d1 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -511,7 +511,7 @@ fopAcM_prm_class* createAppend(u16 i_setId, u32 i_parameters, const cXyz* i_pos, void fopAcM_Log(fopAc_ac_c const* i_actor, char const* i_message); -void fopAcM_delete(fopAc_ac_c* i_actor); +s32 fopAcM_delete(fopAc_ac_c* i_actor); s32 fopAcM_delete(fpc_ProcID i_actorID); diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 514134953e4..a39164ac1fd 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -255,6 +255,7 @@ private: class mDoExt_invisibleModel { public: + mDoExt_invisibleModel() {} /* 8000E53C */ int create(J3DModel* i_model, u8 param_1); /* 8000E6C8 */ void entryJoint(cXyz*); /* 8000E7C0 */ void entryDL(cXyz*); diff --git a/src/d/actor/d_a_e_hp.cpp b/src/d/actor/d_a_e_hp.cpp index d4e11783d8d..8fb33a95179 100644 --- a/src/d/actor/d_a_e_hp.cpp +++ b/src/d/actor/d_a_e_hp.cpp @@ -1,830 +1,1326 @@ /** * @file d_a_e_hp.cpp - * -*/ + * + */ #include "d/actor/d_a_e_hp.h" +#include "d/actor/d_a_alink.h" +#include "d/d_debug_viewer.h" #include "dol2asm.h" UNK_REL_DATA; #include "f_op/f_op_actor_enemy.h" - - -// -// Forward References: -// - -extern "C" void __ct__12daE_HP_HIO_cFv(); -extern "C" void ctrlJoint__8daE_HP_cFP8J3DJointP8J3DModel(); -extern "C" void JointCallBack__8daE_HP_cFP8J3DJointi(); -extern "C" void LampCtrlJoint__8daE_HP_cFP8J3DJointP8J3DModel(); -extern "C" void LampJointCallBack__8daE_HP_cFP8J3DJointi(); -extern "C" void draw__8daE_HP_cFv(); -extern "C" static void daE_HP_Draw__FP8daE_HP_c(); -extern "C" void setBck__8daE_HP_cFiUcff(); -extern "C" void setActionMode__8daE_HP_cFii(); -extern "C" void mChkDistance__8daE_HP_cFf(); -extern "C" void damage_check__8daE_HP_cFv(); -extern "C" void executeWait__8daE_HP_cFv(); -extern "C" void executeMove__8daE_HP_cFv(); -extern "C" void executeRetMove__8daE_HP_cFv(); -extern "C" void executeAttack__8daE_HP_cFv(); -extern "C" void executeDamage__8daE_HP_cFv(); -extern "C" void executeDown__8daE_HP_cFv(); -extern "C" void executeDead__8daE_HP_cFv(); -extern "C" void action__8daE_HP_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void mtx_set__8daE_HP_cFv(); -extern "C" void cc_set__8daE_HP_cFv(); -extern "C" void execute__8daE_HP_cFv(); -extern "C" static void daE_HP_Execute__FP8daE_HP_c(); -extern "C" static bool daE_HP_IsDelete__FP8daE_HP_c(); -extern "C" void _delete__8daE_HP_cFv(); -extern "C" static void daE_HP_Delete__FP8daE_HP_c(); -extern "C" void CreateHeap__8daE_HP_cFv(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void create__8daE_HP_cFv(); -extern "C" void __ct__8daE_HP_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" static void daE_HP_Create__FP8daE_HP_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daE_HP_HIO_cFv(); -extern "C" void __sinit_d_a_e_hp_cpp(); -extern "C" static void func_806E9DBC(); -extern "C" static void func_806E9DC4(); -extern "C" extern char const* const d_a_e_hp__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void create__21mDoExt_invisibleModelFP8J3DModelUc(); -extern "C" void entryDL__21mDoExt_invisibleModelFP4cXyz(); -extern "C" void -__ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl(); -extern "C" void play__14mDoExt_McaMorfFP3VecUlSc(); -extern "C" void entryDL__14mDoExt_McaMorfFv(); -extern "C" void modelCalc__14mDoExt_McaMorfFv(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void initBallModel__13fopEn_enemy_cFv(); -extern "C" void checkBallModelDraw__13fopEn_enemy_cFv(); -extern "C" void setBallModelEffect__13fopEn_enemy_cFP12dKy_tevstr_c(); -extern "C" void drawBallModel__13fopEn_enemy_cFP12dKy_tevstr_c(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void fopAcM_getTalkEventPartner__FPC10fopAc_ac_c(); -extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void fpcEx_IsExist__FUi(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void onEventBit__11dSv_event_cFUs(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void setPtT__14dEvt_control_cFPv(); -extern "C" void setPtI_Id__14dEvt_control_cFUi(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void getRunEventName__16dEvent_manager_cFv(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void SetGroundUpY__9dBgS_AcchFf(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__14dBgS_ObjLinChkFv(); -extern "C" void __dt__14dBgS_ObjLinChkFv(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -extern "C" void checkNowWolfEyeUp__9daPy_py_cFv(); -extern "C" void dKy_daynight_check__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 dKy_darkworld_check__Fv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void MtxPosition__FP4cXyzP4cXyz(); -extern "C" void func_802807E0(); -extern "C" void func_80280808(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void setLinkSearch__15Z2CreatureEnemyFb(); -extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[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__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 806EA220-806EA224 00002C 0004+00 1/1 0/0 0/0 .rodata @3926 */ -SECTION_RODATA static f32 const lit_3926 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x806EA220, &lit_3926); - +namespace { /* 806EA320-806EA364 000038 0044+00 0/1 0/0 0/0 .data cc_hp_src__22@unnamed@d_a_e_hp_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_806EA320[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, +static dCcD_SrcCyl cc_hp_src = { + { + {0, {{0x0, 0x0, 0x0}, {(s32)0xd8000000, 0x3}, 0x0}}, + {dCcD_SE_13, 0, 0, 0, {0}}, + {dCcD_SE_NONE, 0, 0, 0, {6}}, + {0}, + }, + { + {0.0f, 0.0f, 0.0f}, + 50.0f, + 300.0f, + } }; -#pragma pop /* 806EA364-806EA3A4 00007C 0040+00 0/1 0/0 0/0 .data cc_lamp_src__22@unnamed@d_a_e_hp_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_806EA364[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x0D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, +static dCcD_SrcSph cc_lamp_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {(s32)0xD8FBFDFF, 0x43}, 0x75}}, // mObj + {dCcD_SE_13, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr }; -#pragma pop /* 806EA3A4-806EA3E8 0000BC 0044+00 0/1 0/0 0/0 .data cc_hp_at_src__22@unnamed@d_a_e_hp_cpp@ */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 data_806EA3A4[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, -}; -#pragma pop - -/* 806EA3E8-806EA3EC 000100 0004+00 1/1 0/0 0/0 .data particleNmaeDt$4030 */ -SECTION_DATA static u8 particleNmaeDt[4] = { - 0x87, - 0x89, - 0x87, - 0x8A, -}; - -/* 806EA3EC-806EA408 -00001 001C+00 1/1 0/0 0/0 .data @5058 */ -SECTION_DATA static void* lit_5058[7] = { - (void*)(((char*)action__8daE_HP_cFv) + 0x7C), (void*)(((char*)action__8daE_HP_cFv) + 0x88), - (void*)(((char*)action__8daE_HP_cFv) + 0x98), (void*)(((char*)action__8daE_HP_cFv) + 0xA4), - (void*)(((char*)action__8daE_HP_cFv) + 0xB4), (void*)(((char*)action__8daE_HP_cFv) + 0xC0), - (void*)(((char*)action__8daE_HP_cFv) + 0xCC), -}; - -/* 806EA408-806EA428 -00001 0020+00 1/0 0/0 0/0 .data l_daE_HP_Method */ -static actor_method_class l_daE_HP_Method = { - (process_method_func)daE_HP_Create__FP8daE_HP_c, - (process_method_func)daE_HP_Delete__FP8daE_HP_c, - (process_method_func)daE_HP_Execute__FP8daE_HP_c, - (process_method_func)daE_HP_IsDelete__FP8daE_HP_c, - (process_method_func)daE_HP_Draw__FP8daE_HP_c, -}; - -/* 806EA428-806EA458 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_HP */ -extern actor_process_profile_definition g_profile_E_HP = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_E_HP, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daE_HP_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 172, // mPriority - &l_daE_HP_Method, // sub_method - 0x00040100, // mStatus - fopAc_ENEMY_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 806EA458-806EA464 000170 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 806EA464-806EA470 00017C 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, -}; - -/* 806EA470-806EA47C 000188 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, -}; - -/* 806EA47C-806EA488 000194 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, -}; - -/* 806EA488-806EA494 0001A0 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, -}; - -/* 806EA494-806EA4A0 0001AC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 806EA4A0-806EA4C4 0001B8 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_806E9DC4, - (void*)NULL, - (void*)NULL, - (void*)func_806E9DBC, -}; - -/* 806EA4C4-806EA4D0 0001DC 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, -}; - -/* 806EA4D0-806EA4DC 0001E8 000C+00 2/2 0/0 0/0 .data __vt__12daE_HP_HIO_c */ -SECTION_DATA extern void* __vt__12daE_HP_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_HP_HIO_cFv, +static dCcD_SrcCyl cc_hp_at_src = { + { + {0, {{0x400, 0x1, 0xd}, {0x0, 0x0}, 0x0}}, + {dCcD_SE_METAL, 0, 1, 0, {0}}, + {dCcD_SE_NONE, 0, 0, 0, {2}}, + {0}, + }, + { + {0.0f, 0.0f, 0.0f}, + 50.0f, + 300.0f, + } }; +} // namespace /* 806E5DEC-806E5E30 0000EC 0044+00 1/1 0/0 0/0 .text __ct__12daE_HP_HIO_cFv */ daE_HP_HIO_c::daE_HP_HIO_c() { - // NONMATCHING + mChild = -1; + modelSize = 1.2f; + waitTimeAfterAttack = 40; + resurrectionTime = 100; + attackDelayOnApproach = 50; + rangeDisplay = 0; } +#if DEBUG +void daE_HP_HIO_c::genMessage(JORMContext* ctx) { + // General-purpose Poe + ctx->genLabel("汎用ポゥ", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("モデルサイズ", &modelSize, 0.0, 10.0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("攻撃終了後待ち時間", &waitTimeAfterAttack, 0, 1000, 0, NULL, 0xffff, 0xffff, + 0x200, 0x18); + ctx->genSlider("復活時間", &resurrectionTime, 0, 1000, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("接近後攻撃しない時間", &attackDelayOnApproach, 0, 0xfe, 0, NULL, 0xffff, 0xffff, + 0x200, 0x18); + ctx->genCheckBox("範囲表示(FINALでは不可)", &rangeDisplay, 1, 0, NULL, 0xffff, 0xffff, 0x200, + 0x18); +} +#endif + /* 806E5E30-806E5ED0 000130 00A0+00 1/1 0/0 0/0 .text ctrlJoint__8daE_HP_cFP8J3DJointP8J3DModel */ -void daE_HP_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING +int daE_HP_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + J3DJoint* joint = i_joint; + s32 jointNo = joint->getJntNo(); + mDoMtx_stack_c::copy(i_model->getAnmMtx(jointNo)); + + switch (jointNo) { + case 8: + mDoMtx_stack_c::XrotM(field_0x7aa); + break; + } + + if (TREG_S(0) != 0 && jointNo == TREG_S(0)) { + mDoMtx_stack_c::XrotM(TREG_S(1)); + mDoMtx_stack_c::YrotM(TREG_S(2)); + mDoMtx_stack_c::ZrotM(TREG_S(3)); + } + + i_model->setAnmMtx(jointNo, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + return 1; } /* 806E5ED0-806E5F1C 0001D0 004C+00 1/1 0/0 0/0 .text JointCallBack__8daE_HP_cFP8J3DJointi */ -void daE_HP_c::JointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daE_HP_c::JointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == NULL) { + J3DModel* model = j3dSys.getModel(); + daE_HP_c* poe = (daE_HP_c*)model->getUserArea(); + if (poe != NULL) { + poe->ctrlJoint(i_joint, model); + } + } + + return 1; } /* 806E5F1C-806E5FCC 00021C 00B0+00 1/1 0/0 0/0 .text * LampCtrlJoint__8daE_HP_cFP8J3DJointP8J3DModel */ -void daE_HP_c::LampCtrlJoint(J3DJoint* param_0, J3DModel* param_1) { - // NONMATCHING +int daE_HP_c::LampCtrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + J3DJoint* joint = i_joint; + s32 jointNo = joint->getJntNo(); + + mDoMtx_stack_c::copy(i_model->getAnmMtx(jointNo)); + + switch (jointNo) { + case 2: + mDoMtx_stack_c::XrotM(field_0x76c.x); + mDoMtx_stack_c::ZrotM(field_0x76c.z); + } + + if (TREG_S(0) != 0 && jointNo == (s32)TREG_S(0)) { + mDoMtx_stack_c::XrotM(TREG_S(1)); + mDoMtx_stack_c::YrotM(TREG_S(2)); + mDoMtx_stack_c::ZrotM(TREG_S(3)); + } + + i_model->setAnmMtx(jointNo, mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + return 1; } /* 806E5FCC-806E6018 0002CC 004C+00 1/1 0/0 0/0 .text LampJointCallBack__8daE_HP_cFP8J3DJointi */ -void daE_HP_c::LampJointCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING +int daE_HP_c::LampJointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == NULL) { + J3DModel* model = j3dSys.getModel(); + daE_HP_c* poe = (daE_HP_c*)model->getUserArea(); + if (poe != NULL) { + poe->LampCtrlJoint(i_joint, model); + } + } + + return 1; } -/* ############################################################################################## */ -/* 806EA224-806EA228 000030 0004+00 0/1 0/0 0/0 .rodata @4178 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4178 = 600.0f; -COMPILER_STRIP_GATE(0x806EA224, &lit_4178); -#pragma pop - -/* 806EA228-806EA22C 000034 0004+00 0/3 0/0 0/0 .rodata @4179 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4179 = 30.0f; -COMPILER_STRIP_GATE(0x806EA228, &lit_4179); -#pragma pop - -/* 806EA22C-806EA230 000038 0004+00 0/1 0/0 0/0 .rodata @4180 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4180 = -20.0f; -COMPILER_STRIP_GATE(0x806EA22C, &lit_4180); -#pragma pop - -/* 806EA230-806EA234 00003C 0004+00 0/1 0/0 0/0 .rodata @4181 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4181 = 40.0f; -COMPILER_STRIP_GATE(0x806EA230, &lit_4181); -#pragma pop - -/* 806EA234-806EA238 000040 0004+00 0/4 0/0 0/0 .rodata @4182 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4182 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x806EA234, &lit_4182); -#pragma pop - -/* 806EA238-806EA23C 000044 0004+00 0/1 0/0 0/0 .rodata @4183 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4183 = 4.0f; -COMPILER_STRIP_GATE(0x806EA238, &lit_4183); -#pragma pop - /* 806EA4E8-806EA4EC 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_806EA4E8[4]; - -/* 806EA4EC-806EA4F8 00000C 000C+00 1/1 0/0 0/0 .bss @3921 */ -static u8 lit_3921[12]; +static bool l_HIOInit; /* 806EA4F8-806EA50C 000018 0014+00 9/9 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[20]; +static daE_HP_HIO_c l_HIO; /* 806E6018-806E64F4 000318 04DC+00 1/1 0/0 0/0 .text draw__8daE_HP_cFv */ -void daE_HP_c::draw() { - // NONMATCHING +int daE_HP_c::draw() { + /* 806EA3E8-806EA3EC 000100 0004+00 1/1 0/0 0/0 .data particleNmaeDt$4030 */ + static u16 particleNmaeDt[2] = { + 0x8789, + 0x878A, + }; + + if (field_0x77c != 0xff && fopAcM_isSwitch(this, field_0x77c) == 0) { + return 1; + } + + if (mNight == 1 && !dKy_daynight_check()) { + return 1; + } + + if (attention_info.distances[fopAc_attn_BATTLE_e] == 0) { + attention_info.distances[fopAc_attn_BATTLE_e] = 0x04; + fopAcM_SetGroup(this, 2); + fopAcM_OnStatus(this, 0); + attention_info.flags = attention_info.flags | 4; + } + + J3DModel* model = mpMorfSO->getModel(); + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + + J3DModelData* modelData = model->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + J3DMaterial* material = modelData->getMaterialNodePointer(i); + if (material != NULL) { + material->getTevKColor(3)->a = field_0x790; + } + } + + if (mAction == 6 || field_0x790 && (!dComIfGp_event_runCheck() || + fopAcM_getTalkEventPartner(dComIfGp_getLinkPlayer()) != + daPy_py_c::getMidnaActor())) + { + mInvModel.entryDL(0); + } else { + field_0x790 = 0.0f; + } + + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + mDoExt_modelUpdateDL(mpModel); + + cXyz curPosWithOffset; + curPosWithOffset.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); + + field_0x718 = + dComIfGd_setShadow(field_0x718, 1, mpModel, &curPosWithOffset, 600.0f + BREG_F(0x12), + BREG_F(0x13), current.pos.y, mObjAcch.GetGroundH(), mObjAcch.m_gnd, + &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + + cXyz unkXyz1; + mDoMtx_stack_c::copy(mpModel->getAnmMtx(2)); + unkXyz1.set(30.0f + JREG_F(10), 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&unkXyz1, &field_0x75c); + mDoMtx_stack_c::transS(field_0x75c); + + unkXyz1 = dComIfGp_getCamera(0)->lookat.eye - field_0x75c; + mDoMtx_stack_c::YrotM(unkXyz1.atan2sX_Z()); + mDoMtx_stack_c::XrotM((s16)unkXyz1.atan2sY_XZ()); + mDoMtx_stack_c::scaleM(l_HIO.modelSize, l_HIO.modelSize, l_HIO.modelSize); + + model = mpMorf->getModel(); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + mpMorf->modelCalc(); + + mDoMtx_stack_c::copy(mpModel->getAnmMtx(2)); + mDoMtx_stack_c::multVecZero(&unkXyz1); + + for (s32 i = 0; i < 2; i++) { + field_0xdd4[i] = dComIfGp_particle_set(field_0xdd4[i], particleNmaeDt[i], &unkXyz1, 0, 0); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xdd4[i]); + if (emitter != NULL) { + emitter->setGlobalRTMatrix(mpModel->getAnmMtx(2)); + } + } + + mpMorf->getModel(); + mpMorf->entryDL(); + + if (checkDownFlg()) { + cXyz local_50; + cXyz cStack_5c; + cMtx_YrotS(*calc_mtx, shape_angle.y); + local_50.x = 0.0f; + local_50.y = field_0x7a0; + local_50.z = -20.0f + JREG_F(1); + MtxPosition(&local_50, &cStack_5c); + field_0x738 = cStack_5c + current.pos; + setDownPos(&field_0x738); + cLib_addCalc2(&field_0x7a0, 40.0f + JREG_F(2), 0.7, JREG_F(7) + 4.0f); + } + + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + if (!player->checkWolfDownAttackPullOut() && mAction != 6) { + drawBallModel(&tevStr); + } + +#if DEBUG + if (WREG_S(0) != 0 || l_HIO.rangeDisplay != 0) { + cXyz cStack_68; + GXColor color; + color.r = 0xff; + color.g = 0x82; + color.b = 0x82; + color.a = 0xfa; + dDbVw_drawCircleXlu(home.pos, mDisHani, color, 1, 0xc); + } +#endif + + return 1; } /* 806E64F4-806E6514 0007F4 0020+00 1/0 0/0 0/0 .text daE_HP_Draw__FP8daE_HP_c */ -static void daE_HP_Draw(daE_HP_c* param_0) { - // NONMATCHING +static int daE_HP_Draw(daE_HP_c* param_0) { + return param_0->draw(); } -/* ############################################################################################## */ -/* 806EA23C-806EA240 000048 0004+00 1/1 0/0 0/0 .rodata @4196 */ -SECTION_RODATA static f32 const lit_4196 = -1.0f; -COMPILER_STRIP_GATE(0x806EA23C, &lit_4196); - -/* 806EA2CC-806EA2CC 0000D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_806EA2CC = "E_HP"; -#pragma pop - /* 806E6514-806E65C0 000814 00AC+00 6/6 0/0 0/0 .text setBck__8daE_HP_cFiUcff */ void daE_HP_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) { - // NONMATCHING + mpMorfSO->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_HP", param_0), param_1, param_2, + param_3, 0.0f, -1.0f); + field_0x780 = param_0; } /* 806E65C0-806E65CC 0008C0 000C+00 9/9 0/0 0/0 .text setActionMode__8daE_HP_cFii */ -void daE_HP_c::setActionMode(int param_0, int param_1) { - // NONMATCHING +void daE_HP_c::setActionMode(int param_0, int i_mode) { + mAction = param_0; + movemode = i_mode; } /* 806E65CC-806E673C 0008CC 0170+00 4/4 0/0 0/0 .text mChkDistance__8daE_HP_cFf */ -void daE_HP_c::mChkDistance(f32 param_0) { - // NONMATCHING +bool daE_HP_c::mChkDistance(f32 param_0) { + cXyz vecToPlayer = dComIfGp_getPlayer(0)->current.pos - current.pos; + if (vecToPlayer.abs() < param_0) { + return true; + } else { + return false; + } } -/* ############################################################################################## */ -/* 806EA240-806EA244 00004C 0004+00 1/1 0/0 0/0 .rodata @4301 */ -SECTION_RODATA static f32 const lit_4301 = 250.0f; -COMPILER_STRIP_GATE(0x806EA240, &lit_4301); - /* 806E673C-806E6948 000A3C 020C+00 1/1 0/0 0/0 .text damage_check__8daE_HP_cFv */ void daE_HP_c::damage_check() { - // NONMATCHING + if (health <= 1 || !daPy_py_c::checkNowWolf() || field_0x71e != 0 || field_0x790 < 250.0f || + mAction == 5 || mAction == 6) + { + return; + } + + cXyz cStack_1c; + mDoMtx_stack_c::copy(mpMorfSO->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&cStack_1c); + + scale.set(l_HIO.modelSize, l_HIO.modelSize, l_HIO.modelSize); + + setMidnaBindEffect(this, &mSound1, &cStack_1c, &scale); + + mStts.Move(); + + if (mCyl1.ChkTgHit()) { + csXyz unkSXyz; + cXyz unkXyz1; + cXyz unkXyz2; + + mAtInfo.mpCollider = mCyl1.GetTgHitObj(); + mAtInfo.field_0x18 = 31; + cc_at_check(this, &mAtInfo); + + unkXyz1 = current.pos - *mCyl1.GetTgHitPosP(); + unkXyz2.set(*mCyl1.GetTgHitPosP()); + unkSXyz.x = 0; + unkSXyz.y = (s32)unkXyz1.atan2sX_Z(); + unkSXyz.z = 0; + dComIfGp_setHitMark(3, this, &unkXyz2, &unkSXyz, NULL, 0); + + field_0x71e = 8; + + mCyl1.ClrTgHit(); + + if (health > 1) { + setActionMode(4, 0); + } else { + health = 0; + + setActionMode(5, 0); + } + } } -/* ############################################################################################## */ -/* 806EA244-806EA248 000050 0004+00 0/5 0/0 0/0 .rodata @4367 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4367 = 3.0f; -COMPILER_STRIP_GATE(0x806EA244, &lit_4367); -#pragma pop - -/* 806EA248-806EA24C 000054 0004+00 0/2 0/0 0/0 .rodata @4368 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4368 = 5.0f; -COMPILER_STRIP_GATE(0x806EA248, &lit_4368); -#pragma pop - /* 806E6948-806E6C74 000C48 032C+00 1/1 0/0 0/0 .text executeWait__8daE_HP_cFv */ void daE_HP_c::executeWait() { - // NONMATCHING + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz homeToPlayer; + + switch (movemode) { + case 0: + mStts.SetWeight(250); + setBck(13, 2, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_LAUGH, -1); + + movemode = 1; + case 1: + homeToPlayer = home.pos - player->current.pos; + if (homeToPlayer.abs() < mDisHani) { + mStts.SetWeight(100); + + setActionMode(1, 0); + } + + break; + case 10: + mStts.SetWeight(100); + setBck(10, 0, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_FOUND, -1); + + movemode++; + + break; + case 11: + if (mpMorfSO->isStop()) { + setActionMode(1, 0); + } + + break; + case 100: + field_0x71c = 40; + + setBck(0xd, 0x02, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_LAUGH, -1); + + movemode++; + case 101: + if (field_0x71c == 0) { + setActionMode(2, 0); + } + + break; + } + + cLib_addCalc0(&speedF, 0.7f, 5.0f); } -/* ############################################################################################## */ -/* 806EA24C-806EA250 000058 0004+00 0/2 0/0 0/0 .rodata @4418 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4418 = 10.0f; -COMPILER_STRIP_GATE(0x806EA24C, &lit_4418); -#pragma pop - -/* 806EA250-806EA254 00005C 0004+00 0/4 0/0 0/0 .rodata @4419 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4419 = 20.0f; -COMPILER_STRIP_GATE(0x806EA250, &lit_4419); -#pragma pop - -/* 806EA254-806EA258 000060 0004+00 0/4 0/0 0/0 .rodata @4420 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4420 = 300.0f; -COMPILER_STRIP_GATE(0x806EA254, &lit_4420); -#pragma pop - /* 806E6C74-806E6ED8 000F74 0264+00 1/1 0/0 0/0 .text executeMove__8daE_HP_cFv */ void daE_HP_c::executeMove() { - // NONMATCHING -} + cXyz vecToHome; + switch (movemode) { + case 0: + field_0x71f = 0; + setBck(12, 2, 10.0f, 1.0f); + mSound1.startCreatureVoice(Z2SE_EN_HP_V_LAUGH, -1); + movemode = 1; + case 1: + speedF = 20.0f + NREG_F(5); + vecToHome = home.pos - current.pos; + if (vecToHome.abs() > mDisHani) { + setActionMode(0, 100); + } else { + if (mChkDistance(300.0f + NREG_F(7))) { + if (!daPy_py_c::checkNowWolfPowerUp()) { + field_0x71f++; + if (field_0x71f < l_HIO.attackDelayOnApproach) { + speedF = 0.0f; + break; + } + } -/* ############################################################################################## */ -/* 806EA258-806EA25C 000064 0004+00 0/1 0/0 0/0 .rodata @4493 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4493 = 0.5f; -COMPILER_STRIP_GATE(0x806EA258, &lit_4493); -#pragma pop + setActionMode(3, 0); + } + } + + break; + } + + cLib_addCalcAngleS2(¤t.angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800); +} /* 806E6ED8-806E7228 0011D8 0350+00 1/1 0/0 0/0 .text executeRetMove__8daE_HP_cFv */ void daE_HP_c::executeRetMove() { - // NONMATCHING -} + cXyz vecToHome; -/* ############################################################################################## */ -/* 806EA25C-806EA260 000068 0004+00 0/1 0/0 0/0 .rodata @4562 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4562 = 32.0f; -COMPILER_STRIP_GATE(0x806EA25C, &lit_4562); -#pragma pop + switch (movemode) { + case 0: + field_0x71f = 0; + setBck(12, 2, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_LAUGH, -1); + + movemode = 1; + case 1: + speedF = 20.0f + NREG_F(6); + + vecToHome = home.pos - current.pos; + vecToHome.y = 0.0f; + + if (vecToHome.abs() < mDisHani * 0.5f && mChkDistance(300.0f + NREG_F(7)) != 0) { + if (daPy_py_c::checkNowWolfPowerUp() == 0) { + field_0x71f++; + if (field_0x71f < l_HIO.attackDelayOnApproach) { + speedF = 0.0f; + + break; + } + } + setActionMode(3, 0); + } else { + current.angle.y = (s16)vecToHome.atan2sX_Z(); + + if (vecToHome.abs() < 20.0f) { + setActionMode(0, 0); + } + } + + break; + } +} /* 806E7228-806E7574 001528 034C+00 1/1 0/0 0/0 .text executeAttack__8daE_HP_cFv */ void daE_HP_c::executeAttack() { - // NONMATCHING + cXyz vecToHome; + switch (movemode) { + case 0: + current.angle.y = fopAcM_searchPlayerAngleY(this); + speedF = 20.0f + NREG_F(10); + setBck(5, 0, 3.0f, 1.0f); + + movemode++; + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_ATTACK, -1); + + field_0x71c = 1; + + break; + case 1: + if (mpMorfSO->checkFrame(20.0f) || mpMorfSO->checkFrame(32.0f)) { + mSound1.startCreatureSound(Z2SE_EN_HP_SWING, 0, -1); + } + + if (mpMorfSO->isStop()) { + setBck(14, 2, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_LAUGH, -1); + + field_0x71c = l_HIO.waitTimeAfterAttack; + + movemode++; + } + + break; + case 2: + if (field_0x71c == 0) { + if (!mChkDistance(300.0f + NREG_F(7))) { + setActionMode(1, 0); + } else { + movemode = 0; + } + + vecToHome = home.pos - current.pos; + if (vecToHome.abs() > mDisHani) { + setActionMode(0, 100); + } + } + break; + } + + cLib_addCalc0(&speedF, 0.7f, 1.0f); + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y, 1, 0x1000); } /* 806E7574-806E77C0 001874 024C+00 1/1 0/0 0/0 .text executeDamage__8daE_HP_cFv */ void daE_HP_c::executeDamage() { - // NONMATCHING + switch (movemode) { + case 0: { + field_0x789 = 1; + setBck(6, 0, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_DAMAGE, -1); + + movemode = 1; + + break; + } + case 1: { + if (mpMorfSO->isStop()) { + cXyz vecToHome; + if (mChkDistance(300.0f + NREG_F(7))) { + setActionMode(3, 0); + } else { + setActionMode(1, 0); + } + + vecToHome = home.pos - current.pos; + if (vecToHome.abs() > mDisHani) { + setActionMode(0, 100); + } + } + + break; + } + } + + cLib_addCalc0(&speedF, 0.7f, 5.0f); } -/* ############################################################################################## */ -/* 806EA260-806EA264 00006C 0004+00 0/3 0/0 0/0 .rodata @4781 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4781 = 200.0f; -COMPILER_STRIP_GATE(0x806EA260, &lit_4781); -#pragma pop - -/* 806EA264-806EA268 000070 0004+00 0/1 0/0 0/0 .rodata @4782 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4782 = 0x42424925; -COMPILER_STRIP_GATE(0x806EA264, &lit_4782); -#pragma pop - -/* 806EA268-806EA26C 000074 0004+00 0/3 0/0 0/0 .rodata @4783 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4783 = 170.0f; -COMPILER_STRIP_GATE(0x806EA268, &lit_4783); -#pragma pop - -/* 806EA26C-806EA270 000078 0004+00 0/2 0/0 0/0 .rodata @4784 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4784 = 1000.0f; -COMPILER_STRIP_GATE(0x806EA26C, &lit_4784); -#pragma pop - -/* 806EA270-806EA274 00007C 0004+00 0/1 0/0 0/0 .rodata @4785 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4785 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x806EA270, &lit_4785); -#pragma pop - -/* 806EA274-806EA27C 000080 0004+04 0/3 0/0 0/0 .rodata @4786 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4786[1 + 1 /* padding */] = { - 2000.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x806EA274, &lit_4786); -#pragma pop - -/* 806EA27C-806EA284 000088 0008+00 0/2 0/0 0/0 .rodata @4788 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4788[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x806EA27C, &lit_4788); -#pragma pop - /* 806E77C0-806E7E94 001AC0 06D4+00 1/1 0/0 0/0 .text executeDown__8daE_HP_cFv */ void daE_HP_c::executeDown() { - // NONMATCHING -} + fopAc_ac_c* player = dComIfGp_getPlayer(0); + dBgS_LinChk dStack_98; + cXyz unkXyz1; + cXyz cStack_b0; -/* ############################################################################################## */ -/* 806EA2CC-806EA2CC 0000D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_806EA2D1 = "DEFAULT_GETITEM"; -#pragma pop + s16 latDist; + switch (movemode) { + case 0: { + field_0x7a4 = 0.0f; + field_0x7a8 = 0; + field_0x768 = 0.0f; + field_0x789 = 1; + + unkXyz1 = home.pos - current.pos; + latDist = unkXyz1.atan2sX_Z(); + cMtx_YrotS(*calc_mtx, latDist + 0x8000); + + unkXyz1.x = 0.0f; + unkXyz1.y = 100.0f; + unkXyz1.z = 200.0f; + MtxPosition(&unkXyz1, &cStack_b0); + unkXyz1.set(current.pos); + unkXyz1.y += field_0x7a4; + cStack_b0 += current.pos; + cStack_b0.y += field_0x7a4; + field_0x720.set(cStack_b0); + + dStack_98.Set(&unkXyz1, &cStack_b0, this); + if (dComIfG_Bgsp().LineCross(&dStack_98)) { + current.angle.y = latDist; + speedF = 10.0f; + } + + if (daPy_getPlayerActorClass()->checkWolfLock(this)) { + daPy_getPlayerActorClass()->cancelWolfLock(this); + } + onWolfNoLock(); + + field_0x78a = 0; + speed.y = NREG_F(8) + 20.0f; + setBck(8, 0, 3.0f, 1.0f); + + mSound1.startCreatureVoice(Z2SE_EN_HP_V_DOWN, -1); + + movemode = 1; + break; + } + case 1: { + if (field_0x780 == 9 && mpMorfSO->isStop()) { + field_0x7a0 = 0.0f; + field_0x71d = 7 + BREG_S(7); + field_0x71c = (u8)l_HIO.resurrectionTime; + setBck(15, 2, 3.0f, 1.0f); + movemode = 10; + } else if (field_0x780 == 8 && mpMorfSO->isStop()) { + setBck(9, 0, 3.0f, 1.0f); + } + break; + } + case 10: { + onDownFlg(); + if (checkWolfDownPullFlg()) { + setBck(7, 0, 3.0f, 1.0f); + mSound1.startCreatureVoice(Z2SE_EN_HP_V_DEAD, -1); + field_0x71c = 0x1f; + offDownFlg(); + setActionMode(6, 0); + } else { + if (field_0x71c == 0) { + offDownFlg(); + setBck(0xb, 0, 3.0f, 1.0f); + mSound1.startCreatureVoice(Z2SE_EN_HP_V_RETURN, -1); + mStts.SetWeight(100); + movemode = this->movemode + 1; + } + } + break; + } + case 11: { + cLib_addCalcAngleS2(&field_0x772.x, 0, 4, 0x100); + cLib_addCalcAngleS2(&field_0x772.z, 0, 4, 0x100); + if ((s32)mpMorfSO->getFrame() >= 16 && (s32)mpMorfSO->getFrame() <= 23) { + field_0x7a4 += (170.0f + JREG_F(0)) / 7.0f * (2.0f + JREG_F(3)); + if (field_0x7a4 > 170.0f + JREG_F(0)) { + field_0x7a4 = 170.0f + JREG_F(0); + } + cLib_addCalcAngleS2(&field_0x76c.z, -0x4000 + JREG_S(0), 1, 0x1000); + } else { + if ((s32)mpMorfSO->getFrame() >= 28) { + field_0x7a8++; + cLib_addCalcAngleS2(&field_0x76c.z, 0, 4, 0x400); + } + } + + cLib_addCalc2(&field_0x768, + field_0x7a4 + + (20.0f + NREG_F(4)) * (cM_ssin((f32)field_0x7a8 * (1000.0f + NREG_F(3)))), + 0.8f, 10.0f); + if (mpMorfSO->isStop()) { + health = 40; + + offWolfNoLock(); + + field_0x772.x = 0; + field_0x772.z = 0; + + unkXyz1 = home.pos - current.pos; + latDist = unkXyz1.atan2sX_Z(); + cMtx_YrotS(*calc_mtx, latDist); + + unkXyz1.x = 0.0f; + unkXyz1.y = 100.0f; + unkXyz1.z = 2000.0f; + MtxPosition(&unkXyz1, &cStack_b0); + + unkXyz1.set(current.pos); + unkXyz1.y += field_0x7a4; + cStack_b0 += current.pos; + cStack_b0.y += field_0x7a4; + field_0x720.set(cStack_b0); + dStack_98.OnBackFlag(); + dStack_98.Set(&unkXyz1, &cStack_b0, this); + + if (dComIfG_Bgsp().LineCross(&dStack_98)) { + setActionMode(2, 0); + } else { + setActionMode(1, 0); + } + } + } + } + + if (movemode <= 2) { + cLib_addCalcAngleS2(&(field_0x76c).z, -0x4a38, 2, 0x800); + } +} /* 806E7E94-806E814C 002194 02B8+00 1/1 0/0 0/0 .text executeDead__8daE_HP_cFv */ +// NONMATCHING - g_dComIfG_gameInfo loading void daE_HP_c::executeDead() { - // NONMATCHING -} + if (field_0x78d == 0 && field_0x71c == 1) { + mSound1.startCreatureSound(Z2SE_EN_PO_SOUL_PULLOUT, 0, -1); + mSound1.startCollisionSE(0x40003, 0x20); + field_0x78d = 1; + } -/* ############################################################################################## */ -/* 806EA2CC-806EA2CC 0000D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_806EA2E1 = "E_hp"; -#pragma pop + switch (movemode) { + case 0: { + field_0x789 = 0x01; + if (field_0x71c > 1) { + return; + } + + if (bitSw != 0xff) { + fopAcM_onSwitch(this, bitSw); + } + + dComIfGs_addPohSpiritNum(); + + field_0x784 = -1; + + if (dComIfGs_getPohSpiritNum() == 20) { + dComIfGs_onEventBit((u16)dSv_event_flag_c::saveBitLabels[0x1c9]); + } + + movemode++; + } + case 1: { + if (dComIfGp_event_runCheck() != FALSE) { + if (eventInfo.checkCommandDemoAccrpt()) { + if (dComIfGp_getEventManager().endCheck(field_0x778)) { + dComIfGp_event_reset(); + } else if (strcmp(dComIfGp_getEventManager().getRunEventName(), + "DEFAULT_GETITEM") == 0 && + field_0x784 != -1) + { + dComIfGp_event_setTalkPartner(NULL); + dComIfGp_event_setItemPartnerId(field_0x784); + + field_0x784 = -1; + field_0x788 = 1; + } + } + } else if (field_0x788 != 0) { + fopAcM_createDisappear(this, ¤t.pos, 8, 3, 0xff); + fopAcM_delete(this); + } else { + if (field_0x784 == -1) { + field_0x784 = fopAcM_createItemForPresentDemo(¤t.pos, fpcNm_ITEM_POU_SPIRIT, 0, -1, + -1, 0, 0); + } + + if (fopAcM_IsExecuting(field_0x784)) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + if (player->eventInfo.chkCondition(8)) { + field_0x778 = + dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xff); + fopAcM_orderOtherEventId(this, field_0x778, 0xff, 0xffff, 6, 1); + } + } + } + + break; + } + } +} /* 806E814C-806E8978 00244C 082C+00 2/1 0/0 0/0 .text action__8daE_HP_cFv */ void daE_HP_c::action() { - // NONMATCHING + s16 angleDiff = 0; + s32 unkFlag1 = 0; + + if (field_0x78b != 0) { + field_0x78b = 0; + mSound1.setEnemyName("E_hp"); + } + + damage_check(); + + switch (mAction) { + case 0: + executeWait(); + break; + case 1: + executeMove(); + unkFlag1 = 1; + break; + case 2: + executeRetMove(); + break; + case 3: + executeAttack(); + unkFlag1 = 1; + break; + case 4: + executeDamage(); + break; + case 5: + executeDown(); + break; + case 6: + executeDead(); + break; + } + + if (checkBallModelDraw()) { + mSound2.startCreatureSoundLevel(Z2SE_EN_PO_SOUL, 0, -1); + } + + if (field_0x780 == 12 || field_0x780 == 13 || field_0x780 == 14) { + mSound1.startCreatureSoundLevel(Z2SE_EN_HP_MOVE, 0, -1); + } + + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + if (mObjAcch.GetGroundH() != -1000000000.0f) { + if (arg0 != 2 || mAction == 5 || mAction == 6) { + gravity = -3.0f; + if ((mAction == 5 && field_0x780 == 9 || mAction == 6) && mObjAcch.ChkGroundHit()) { + dBgS_ObjLinChk linChk; + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(mObjAcch.m_gnd, &plane); + + cXyz* planeNormal = plane.GetNP(); + mStts.SetWeight(250); + + speedF = 0.0f; + + if (field_0x780 == 9 && field_0x78a == 0) { + Z2GetAudioMgr()->seStart(0x70523, &field_0x744, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, + 0); + field_0x78a = 0x01; + } + + field_0x772.x = -cM_atan2s(planeNormal->z, planeNormal->y); + field_0x772.z = cM_atan2s(planeNormal->x, planeNormal->y); + } + } else if (mAction != 1 && mAction != 3) { + gravity = 0.0f; + cLib_addCalc2(¤t.pos.y, home.pos.y, 0.8f, 10.0f + BREG_F(17)); + } else { + cLib_addCalc2(¤t.pos.y, player->current.pos.y, 0.8f, 10.0f + BREG_F(17)); + } + } else { + gravity = 0.0f; + speed.y = 0.0f; + + if (field_0x72c.y < home.pos.y) { + cLib_addCalc2(&(field_0x72c).y, home.pos.y, 0.8f, 10.0f + BREG_F(17)); + } + + current.pos.y = (field_0x72c).y; + } + if (mAction != 5 && mAction != 6) { + if (JREG_F(0)) { + field_0x7a4 = 170.0f + JREG_F(0); + } + field_0x7a8++; + } + + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + + cXyz unkXyz1; + + mObjAcch.SetWallNone(); + mAcchCir.SetWall(30.0f + BREG_F(1), 60.0f + BREG_F(2)); + + field_0x768 = + field_0x7a4 + (20.0f + NREG_F(4)) * cM_ssin((f32)field_0x7a8 * (1000.0f + NREG_F(3))); + + if (mObjAcch.GetGroundH() != -1000000000.0f) { + field_0x72c.y = mObjAcch.GetGroundH(); + } + + mObjAcch.SetGroundUpY(BREG_F(5)); + mObjAcch.CrrPos(dComIfG_Bgsp()); + + if (arg0 != 0x02 || mAction == 5 || mAction == 6) { + if (field_0x72c.y + 5.0f + BREG_F(6) < current.pos.y) { + current.pos.y = (field_0x72c).y; + } + } + + if (mAction != 3) { + cLib_addCalcAngleS2(&shape_angle.y, current.angle.y, 8, 0x800); + } + + if (daPy_py_c::checkNowWolfPowerUp() || mAction == 5) { + if (field_0x789 == 0) { + unkXyz1 = home.pos - player->current.pos; + if (unkXyz1.abs() < mDisHani) { + setActionMode(0, 10); + field_0x789 = 1; + } + } + field_0x794 = 255.0f; + } else { + field_0x794 = 0.0f; + } + + cLib_addCalc2(&field_0x790, field_0x794, 1.0f, 60.0f); + + if (BREG_S(9) != 0) { + OS_REPORT("mAction %d\n", mAction); + OS_REPORT("movemode %d\n", movemode); + } + + if (BREG_S(8) != 0) { + field_0x790 = 255.0f; + } + + if (field_0x790 > 250.0f) { + unkXyz1 = home.pos - player->current.pos; + fopAcM_OnStatus(this, 0); + attention_info.flags |= 0x4; + + if (unkXyz1.abs() < mDisHani) { + if (abs((s16)(current.angle.y - fopAcM_searchPlayerAngleY(this))) < 0x4000 && + (mAction == 0 || mAction == 1 || mAction == 3 && movemode == 2)) + { + angleDiff = -(shape_angle.y - fopAcM_searchPlayerAngleY(this)); + if (angleDiff < -10000) { + angleDiff = -10000; + } else if (angleDiff > 10000) { + angleDiff = 10000; + } + } + } + } else { + fopAcM_OffStatus(this, 0); + attention_info.flags = attention_info.flags & 0xfffffffb; + } + + cLib_addCalcAngleS2(&field_0x7aa, angleDiff, 8, 0x400); + + mpMorfSO->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mpMorf->play(NULL, 0, 0); + + setBallModelEffect(&tevStr); + + mSound1.setLinkSearch(unkFlag1); } -/* 806E8978-806E89C0 002C78 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 806EA284-806EA288 000090 0004+00 0/0 0/0 0/0 .rodata @5054 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5054 = -1000000000.0f; -COMPILER_STRIP_GATE(0x806EA284, &lit_5054); -#pragma pop - -/* 806EA288-806EA28C 000094 0004+00 0/0 0/0 0/0 .rodata @5055 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5055 = -3.0f; -COMPILER_STRIP_GATE(0x806EA288, &lit_5055); -#pragma pop - -/* 806EA28C-806EA290 000098 0004+00 0/1 0/0 0/0 .rodata @5056 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5056 = 60.0f; -COMPILER_STRIP_GATE(0x806EA28C, &lit_5056); -#pragma pop - -/* 806EA290-806EA294 00009C 0004+00 0/1 0/0 0/0 .rodata @5057 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5057 = 255.0f; -COMPILER_STRIP_GATE(0x806EA290, &lit_5057); -#pragma pop - -/* 806EA294-806EA298 0000A0 0004+00 0/1 0/0 0/0 .rodata @5168 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5168 = 12.0f; -COMPILER_STRIP_GATE(0x806EA294, &lit_5168); -#pragma pop - -/* 806EA298-806EA29C 0000A4 0004+00 0/1 0/0 0/0 .rodata @5169 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5169 = 400.0f; -COMPILER_STRIP_GATE(0x806EA298, &lit_5169); -#pragma pop - -/* 806EA29C-806EA2A0 0000A8 0004+00 0/1 0/0 0/0 .rodata @5170 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5170 = 6000.0f; -COMPILER_STRIP_GATE(0x806EA29C, &lit_5170); -#pragma pop - -/* 806EA2A0-806EA2A4 0000AC 0004+00 0/1 0/0 0/0 .rodata @5171 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5171 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x806EA2A0, &lit_5171); -#pragma pop - -/* 806EA2A4-806EA2A8 0000B0 0004+00 0/1 0/0 0/0 .rodata @5172 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5172 = 2500.0f; -COMPILER_STRIP_GATE(0x806EA2A4, &lit_5172); -#pragma pop - /* 806E89C0-806E8DE0 002CC0 0420+00 2/2 0/0 0/0 .text mtx_set__8daE_HP_cFv */ void daE_HP_c::mtx_set() { - // NONMATCHING + J3DModel* model = mpMorfSO->getModel(); + + cXyz unkXyz1; + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(0.0f, field_0x768, 0.0f); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::ZXYrotM(field_0x772); + mDoMtx_stack_c::scaleM(l_HIO.modelSize, l_HIO.modelSize, l_HIO.modelSize); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + + mpMorfSO->modelCalc(); + field_0x750.set(field_0x744); + + mDoMtx_stack_c::copy(model->getAnmMtx(13)); + unkXyz1.set(12.0f, 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&unkXyz1, &field_0x744); + mDoMtx_stack_c::transS(field_0x744); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(l_HIO.modelSize, l_HIO.modelSize, l_HIO.modelSize); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); + + if (mAction != 5 && mAction != 6) { + unkXyz1 = field_0x750 - field_0x744; + f32 unkFloat1 = (400.0f + BREG_F(10)) * unkXyz1.abs(); + unkFloat1 += 1000.0f + BREG_F(11); + if (unkFloat1 > 6000.0f + BREG_F(9)) { + unkFloat1 = 6000.0f + BREG_F(9); + } + + cLib_addCalc2(&field_0x798, unkFloat1, 0.1f, unkFloat1 * 0.1f); + cLib_addCalcAngleS2(&field_0x76c.x, + field_0x798 * cM_ssin((f32)field_0x7a8 * (2000.0f + BREG_F(12))), 8, + 0x400); + + field_0x76c.z = field_0x798 * cM_ssin((f32)field_0x7a8 * (2500.0f + BREG_F(13))); + } else { + field_0x798 = 0.0f; + field_0x76c.x = 0; + } + + if (mAction == 3 && field_0x71c == 0 && daPy_py_c::checkNowWolfPowerUp()) { + field_0xddc = dComIfGp_particle_set(field_0xddc, 0x878b, &field_0xde0, &shape_angle, 0); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xddc); + if (emitter != NULL) { + J3DModel* model = mpMorfSO->getModel(); + emitter->setGlobalSRTMatrix(model->getAnmMtx(7)); + } + } } -/* ############################################################################################## */ -/* 806EA2A8-806EA2AC 0000B4 0004+00 0/1 0/0 0/0 .rodata @5243 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5243 = 25.0f; -COMPILER_STRIP_GATE(0x806EA2A8, &lit_5243); -#pragma pop - -/* 806EA2AC-806EA2B0 0000B8 0004+00 0/1 0/0 0/0 .rodata @5244 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5244 = -40.0f; -COMPILER_STRIP_GATE(0x806EA2AC, &lit_5244); -#pragma pop - -/* 806EA2B0-806EA2B4 0000BC 0004+00 0/1 0/0 0/0 .rodata @5245 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5245 = 120.0f; -COMPILER_STRIP_GATE(0x806EA2B0, &lit_5245); -#pragma pop - -/* 806EA2B4-806EA2B8 0000C0 0004+00 0/1 0/0 0/0 .rodata @5246 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5246 = 23.0f; -COMPILER_STRIP_GATE(0x806EA2B4, &lit_5246); -#pragma pop - -/* 806EA2B8-806EA2BC 0000C4 0004+00 0/1 0/0 0/0 .rodata @5247 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5247 = 42.0f; -COMPILER_STRIP_GATE(0x806EA2B8, &lit_5247); -#pragma pop - /* 806E8DE0-806E8FEC 0030E0 020C+00 1/1 0/0 0/0 .text cc_set__8daE_HP_cFv */ void daE_HP_c::cc_set() { - // NONMATCHING + cXyz cStack_1c; + cXyz cStack_28; + + J3DModel* model = mpMorfSO->getModel(); + + mDoMtx_stack_c::copy(model->getAnmMtx(8)); + mDoMtx_stack_c::multVecZero(&eyePos); + attention_info.position = eyePos; + attention_info.position.y += 25.0f; + + mDoMtx_stack_c::copy(model->getAnmMtx(0)); + cStack_1c.set(JREG_F(11), -40.0f + JREG_F(12), JREG_F(13)); + mDoMtx_stack_c::multVec(&cStack_1c, &cStack_28); + mCyl1.SetC(cStack_28); + mCyl1.SetH(170.0f + JREG_F(4)); + mCyl1.SetR(30.0f + JREG_F(5)); + dComIfG_Ccsp()->Set(&mCyl1); + + mDoMtx_stack_c::copy(model->getAnmMtx(10)); + cStack_1c.set(120.0f + JREG_F(6), 0.0f, 0.0f); + mDoMtx_stack_c::multVec(&cStack_1c, &cStack_28); + mCyl2.SetC(cStack_28); + mCyl2.SetH(200.0f + JREG_F(8)); + mCyl2.SetR(200.0f + JREG_F(9)); + + mDoMtx_stack_c::copy(model->getAnmMtx(7)); + mDoMtx_stack_c::multVecZero(&field_0xde0); + + if (field_0x780 == 5) { + if (mpMorfSO->getFrame() >= 23.0f) { + if (mpMorfSO->getFrame() <= 42.0f) { + dComIfG_Ccsp()->Set(&mCyl2); + } + } + } + + mSph.SetC(field_0x75c); + mSph.SetR(30.0f + JREG_F(14)); + + dComIfG_Ccsp()->Set(&mSph); } /* 806E8FEC-806E9170 0032EC 0184+00 1/1 0/0 0/0 .text execute__8daE_HP_cFv */ -void daE_HP_c::execute() { - // NONMATCHING +int daE_HP_c::execute() { + if (field_0x77c != 0xff && !fopAcM_isSwitch(this, field_0x77c)) { + attention_info.distances[fopAc_attn_BATTLE_e] = 0; + + fopAcM_SetGroup(this, 0); + fopAcM_OffStatus(this, 0); + + attention_info.flags &= ~0x4; + + if (field_0x78b == 0) { + field_0x790 = 0.0f; + field_0x78b = 1; + + mSound1.setEnemyName(NULL); + } + + return 1; + } + + if (mNight == 1 && !dKy_daynight_check()) { + attention_info.distances[fopAc_attn_BATTLE_e] = 0; + + fopAcM_SetGroup(this, 0); + fopAcM_OffStatus(this, 0); + + attention_info.flags &= ~0x4; + + if (field_0x78b == 0) { + field_0x790 = 0.0f; + field_0x78b = 1; + + mSound1.setEnemyName(NULL); + } + + return 1; + } + + if (attention_info.distances[fopAc_attn_BATTLE_e] == 0) { + attention_info.distances[fopAc_attn_BATTLE_e] = 0x04; + + fopAcM_SetGroup(this, 2); + fopAcM_OnStatus(this, 0); + + attention_info.flags = attention_info.flags | 4; + } + + if (field_0x71c != 0) { + field_0x71c--; + } + + if (field_0x71e != 0) { + field_0x71e--; + } + + action(); + mtx_set(); + cc_set(); + + return 1; } /* 806E9170-806E9190 003470 0020+00 1/0 0/0 0/0 .text daE_HP_Execute__FP8daE_HP_c */ -static void daE_HP_Execute(daE_HP_c* param_0) { - // NONMATCHING +static int daE_HP_Execute(daE_HP_c* i_this) { + return i_this->execute(); } /* 806E9190-806E9198 003490 0008+00 1/0 0/0 0/0 .text daE_HP_IsDelete__FP8daE_HP_c */ -static bool daE_HP_IsDelete(daE_HP_c* param_0) { - return true; +static int daE_HP_IsDelete(daE_HP_c* i_this) { + return 1; } /* 806E9198-806E9220 003498 0088+00 1/1 0/0 0/0 .text _delete__8daE_HP_cFv */ -void daE_HP_c::_delete() { - // NONMATCHING +int daE_HP_c::_delete() { + dComIfG_resDelete(&mPhaseReq, "E_HP"); + + if (field_0xdf9 != 0) { + l_HIOInit = false; + mDoHIO_DELETE_CHILD(l_HIO.mChild); + } + + if (heap != NULL) { + mSound1.deleteObject(); + mSound2.deleteObject(); + } + + return 1; } /* 806E9220-806E9240 003520 0020+00 1/0 0/0 0/0 .text daE_HP_Delete__FP8daE_HP_c */ -static void daE_HP_Delete(daE_HP_c* param_0) { - // NONMATCHING +static int daE_HP_Delete(daE_HP_c* i_this) { + fpc_ProcID id = fopAcM_GetID(i_this); + return i_this->_delete(); } /* 806E9240-806E94FC 003540 02BC+00 1/1 0/0 0/0 .text CreateHeap__8daE_HP_cFv */ -void daE_HP_c::CreateHeap() { - // NONMATCHING +int daE_HP_c::CreateHeap() { + J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes("E_HP", 19); + JUT_ASSERT(0x764, modeldata != 0) + mpMorfSO = new mDoExt_McaMorfSO(modeldata, NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("E_HP", 13), 2, 1.0f, 0, + -1, &mSound1, 0x80000, 0x11000084); + if (mpMorfSO == NULL || mpMorfSO->getModel() == NULL) { + return 0; + } + + if (mInvModel.create(mpMorfSO->getModel(), 1) == 0) { + return 0; + } + + model = mpMorfSO->getModel(); + model->setUserArea((u32)this); + + for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) { + if (i != 0) { + model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack); + } + } + + modeldata = (J3DModelData*)dComIfG_getObjectRes("E_HP", 20); + JUT_ASSERT(0x78b, modeldata != 0); + + mpModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + + mpModel->setUserArea((u32)this); + for (u16 i = 0; i < mpModel->getModelData()->getJointNum(); i++) { + if (i != 0) { + mpModel->getModelData()->getJointNodePointer(i)->setCallBack(LampJointCallBack); + } + } + + modeldata = (J3DModelData*)dComIfG_getObjectRes("E_HP", 18); + mpMorf = + new mDoExt_McaMorf(modeldata, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_HP", 4), + 2, 1.0f, 0, -1, 1, NULL, 0x80000, 0x11000084); + + if (mpMorf == NULL || mpMorf->getModel() == 0) { + return 0; + } + + if (initBallModel() == 0) { + return 0; + } + + return 1; } /* 806E94FC-806E951C 0037FC 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING +static int useHeapInit(fopAc_ac_c* i_this) { + daE_HP_c* poe = (daE_HP_c*)i_this; + return poe->CreateHeap(); } -/* ############################################################################################## */ -/* 806EA2BC-806EA2C4 0000C8 0004+04 0/1 0/0 0/0 .rodata @5512 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5512[1 + 1 /* padding */] = { - -200.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x806EA2BC, &lit_5512); -#pragma pop - -/* 806EA2C4-806EA2CC 0000D0 0008+00 0/1 0/0 0/0 .rodata @5514 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_5514[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x806EA2C4, &lit_5514); -#pragma pop - /* 806E951C-806E9900 00381C 03E4+00 1/1 0/0 0/0 .text create__8daE_HP_cFv */ -void daE_HP_c::create() { - // NONMATCHING +int daE_HP_c::create() { + fopAcM_SetupActor(this, daE_HP_c); + + s32 loadResult = dComIfG_resLoad(&mPhaseReq, "E_HP"); + if (loadResult == cPhs_COMPLEATE_e) { + OS_REPORT("\n\n"); + OS_REPORT("E_HP PARAM %x\n", fopAcM_GetParam(this)); + + arg0 = fopAcM_GetParam(this); + bitSw = (fopAcM_GetParam(this) & 0xff00) >> 8; + mDisHani = (f32)((fopAcM_GetParam(this) & 0xff0000) >> 0x10); + field_0x77c = (fopAcM_GetParam(this) & 0xff000000) >> 24; + + mNight = current.angle.z & 0x1; + + if (BREG_S(0) == 0 && bitSw != 0xff && fopAcM_isSwitch(this, bitSw) != 0) { + return cPhs_ERROR_e; + } + + OS_REPORT("arg0 %d\n", arg0); + OS_REPORT("bitSw %d\n", bitSw); + OS_REPORT("mDisHani %f\n", mDisHani); + OS_REPORT("mNight %d\n", mNight); + OS_REPORT("dKy_daynight_check() %d\n", dKy_daynight_check()); + OS_REPORT("\n\n"); + + current.angle.z = 0; + + if (fopAcM_entrySolidHeap(this, useHeapInit, 0x3b30) == 0) { + return cPhs_ERROR_e; + } + + if (!l_HIOInit) { + l_HIOInit = true; + field_0xdf9 = 1; + // "General-purpose Poe" + l_HIO.mChild = mDoHIO_CREATE_CHILD("汎用ポゥ", &l_HIO); + } + if (mDisHani == 255.0f || mDisHani == 0.0f) { + mDisHani = 2000.0f; + } else { + mDisHani *= 100.0f; + } + // "After change" + OS_REPORT("変動後・mDisHani %f\n", mDisHani); + + if (BREG_S(2) != 0) { + home.pos.y = current.pos.y + 100.0f; + arg0 = 0x02; + } + attention_info.flags = 0x4; + + fopAcM_SetMtx(this, mpMorfSO->getModel()->getBaseTRMtx()); + fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f); + + mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, + 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + mObjAcch.SetWallNone(); + mAcchCir.SetWall(BREG_F(1) + 30.0f, BREG_F(2) + 60.0f); + + mStts.Init(250, 0, this); + field_0x560 = health = 40; + field_0x7a4 = JREG_F(0) + 170.0f; + field_0x72c.set(current.pos); + field_0x75c.set(current.pos); + + mSph.Set(cc_lamp_src); + mSph.SetStts(&mStts); + mCyl1.Set(cc_hp_src); + mCyl1.SetStts(&mStts); + mCyl2.Set(cc_hp_at_src); + mCyl2.SetStts(&mStts); + + mSound1.init(¤t.pos, &eyePos, 3, 1); + mSound2.init(¤t.pos, &eyePos, 3, 1); + + if (field_0x77c != 0xff && !fopAcM_isSwitch(this, field_0x77c) || + mNight == 1 && !dKy_daynight_check()) + { + field_0x78b = 1; + mSound1.setEnemyName(NULL); + } else { + field_0x78b = 0; + mSound1.setEnemyName("E_hp"); + } + + mAtInfo.mpSound = &mSound1; + mAtInfo.mPowerType = 1; + + setActionMode(0, 0); + + shape_angle.x = shape_angle.z = 0; + + if (BREG_S(0) != 0 || mNight == 0 || dKy_daynight_check()) { + attention_info.distances[fopAc_attn_BATTLE_e] = 0x04; + fopAcM_OffStatus(this, 0); + attention_info.flags &= ~0x4; + } else { + attention_info.distances[fopAc_attn_BATTLE_e] = 0; + fopAcM_SetGroup(this, 0); + fopAcM_OffStatus(this, 0); + attention_info.flags &= ~0x4; + } + + mtx_set(); + } + + return loadResult; } /* 806E9900-806E9ABC 003C00 01BC+00 1/1 0/0 0/0 .text __ct__8daE_HP_cFv */ @@ -832,76 +1328,32 @@ daE_HP_c::daE_HP_c() { // NONMATCHING } -/* 806E9ABC-806E9B04 003DBC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 806E9B04-806E9B4C 003E04 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 806E9B4C-806E9B94 003E4C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 806E9B94-806E9BF0 003E94 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 806E9BF0-806E9C60 003EF0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 806E9C60-806E9CD0 003F60 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - /* 806E9CD0-806E9CF0 003FD0 0020+00 1/0 0/0 0/0 .text daE_HP_Create__FP8daE_HP_c */ -static void daE_HP_Create(daE_HP_c* param_0) { - // NONMATCHING +static int daE_HP_Create(daE_HP_c* i_this) { + return i_this->create(); } -/* 806E9CF0-806E9D38 003FF0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 806EA408-806EA428 -00001 0020+00 1/0 0/0 0/0 .data l_daE_HP_Method */ +static actor_method_class l_daE_HP_Method = { + (process_method_func)daE_HP_Create, (process_method_func)daE_HP_Delete, + (process_method_func)daE_HP_Execute, (process_method_func)daE_HP_IsDelete, + (process_method_func)daE_HP_Draw, +}; -/* 806E9D38-806E9D80 004038 0048+00 2/1 0/0 0/0 .text __dt__12daE_HP_HIO_cFv */ -daE_HP_HIO_c::~daE_HP_HIO_c() { - // NONMATCHING -} - -/* 806E9D80-806E9DBC 004080 003C+00 0/0 1/0 0/0 .text __sinit_d_a_e_hp_cpp */ -void __sinit_d_a_e_hp_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x806E9D80, __sinit_d_a_e_hp_cpp); -#pragma pop - -/* 806E9DBC-806E9DC4 0040BC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_806E9DBC() { - // NONMATCHING -} - -/* 806E9DC4-806E9DCC 0040C4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_806E9DC4() { - // NONMATCHING -} - -/* 806EA2CC-806EA2CC 0000D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 806EA428-806EA458 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_HP */ +extern actor_process_profile_definition g_profile_E_HP = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_E_HP, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daE_HP_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 172, // mPriority + &l_daE_HP_Method, // sub_method + 0x00040100, // mStatus + fopAc_ENEMY_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_e_zh.cpp b/src/d/actor/d_a_e_zh.cpp index c19d64b365a..bf81bea8da6 100644 --- a/src/d/actor/d_a_e_zh.cpp +++ b/src/d/actor/d_a_e_zh.cpp @@ -859,7 +859,7 @@ void daE_ZH_c::executeBallWait() { spa4.z = WREG_F(1) + 2000.0f; MtxPosition(&spa4, &spb0); field_0x680 = spb0 + current.pos; - lin_chk.onBackFlag(); + lin_chk.OnBackFlag(); lin_chk.Set(¤t.pos, &field_0x680, this); if (dComIfG_Bgsp().LineCross(&lin_chk)) { diff --git a/src/d/actor/d_a_npc_moir.cpp b/src/d/actor/d_a_npc_moir.cpp index 311e27aec1c..6de11530251 100644 --- a/src/d/actor/d_a_npc_moir.cpp +++ b/src/d/actor/d_a_npc_moir.cpp @@ -1391,7 +1391,7 @@ bool daNpcMoiR_c::talk(void* param_1) { } else { msgTimer = mMsgTimer; if (ctrlMsgAnm(i_expression, i_actionID, this, FALSE)) { - OS_REPORT("レジスタンスモイ 表情番号=%d 動作番号=%d\n", i_expressionID, i_actionID); // "Resistance Moi Expression Number=%d Action Number=%d\n" + OS_REPORT("レジスタンスモイ 表情番号=%d 動作番号=%d\n", i_expression, i_actionID); // "Resistance Moi Expression Number=%d Action Number=%d\n" setExpression(i_expression, -1.0f); setMotion(i_actionID, -1.0f, 0); } else if (msgTimer != 0 && mMsgTimer == 0) { @@ -1657,7 +1657,7 @@ BOOL daNpcMoiR_c::EvCut_Appear(int i_cutIndex) { case '0005': if (fopAcM_searchPlayerAngleY(this) == mCurAngle.y) { if (talkProc(NULL, TRUE, NULL)) { - OS_REPORT("二択分岐 %s\n", getChoiceNo() == 0 ? "はい" : "いいえ"); + OS_REPORT("二択分岐 %s\n", mFlow.getChoiceNo() == 0 ? "はい" : "いいえ"); if (mFlow.getChoiceNo() == 0) { mOrderEvtNo = 3; diff --git a/src/d/actor/d_a_tag_kmsg.cpp b/src/d/actor/d_a_tag_kmsg.cpp index bf4827d18fd..756816d10c0 100644 --- a/src/d/actor/d_a_tag_kmsg.cpp +++ b/src/d/actor/d_a_tag_kmsg.cpp @@ -197,8 +197,8 @@ int daTag_KMsg_c::Execute() { vec54.z = vec60.z + 80.0f * angle.Cos(); dBgS_LinChk lin_chk; lin_chk.ClrSttsWallOff(); - lin_chk.onBackFlag(); - lin_chk.onFrontFlag(); + lin_chk.OnBackFlag(); + lin_chk.OnFrontFlag(); lin_chk.Set(&vec54, &vec60, NULL); if (dComIfG_Bgsp().LineCross(&lin_chk)) { cXyz vec48; diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index 6afeeb1b1e9..0f46a43a5ed 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -3396,8 +3396,8 @@ bool dCamera_c::bumpCheck(u32 i_flags) { * lineBGCheckBoth__9dCamera_cFP4cXyzP4cXyzP11dBgS_LinChkUl */ bool dCamera_c::lineBGCheckBoth(cXyz* i_start, cXyz* i_end, dBgS_LinChk* i_linchk, u32 i_flags) { - i_linchk->onBackFlag(); - i_linchk->onFrontFlag(); + i_linchk->OnBackFlag(); + i_linchk->OnFrontFlag(); return lineBGCheck(i_start, i_end, i_linchk, i_flags); } diff --git a/src/d/d_event.cpp b/src/d/d_event.cpp index 36e835ae69f..9683c4e6b8d 100644 --- a/src/d/d_event.cpp +++ b/src/d/d_event.cpp @@ -558,10 +558,10 @@ int dEvt_control_c::entry() { void dEvt_control_c::reset() { if (field_0xec != 0xFF) { fopAc_ac_c* pt1 = getPt1(); + fopAc_ac_c* pt1_2 = pt1; s16 eventIdx = dComIfGp_getEventManager().getEventIdx(NULL, field_0xec, -1); - fopAc_ac_c* pt2 = getPt2(); - order(EVT_TYPE_OTHER, 3, 0x201, mHindFlag, pt1, pt2, eventIdx, field_0xec); + order(EVT_TYPE_OTHER, 3, 0x201, mHindFlag, pt1, getPt2(), eventIdx, field_0xec); mChangeOK = pt1; } diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index e31b483c799..cf038c951eb 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -136,10 +136,10 @@ void fopAcM_Log(fopAc_ac_c const* i_actor, char const* i_message) {} /* 80019C7C-80019CB8 0145BC 003C+00 0/0 10/10 483/483 .text fopAcM_delete__FP10fopAc_ac_c */ -void fopAcM_delete(fopAc_ac_c* i_actor) { +s32 fopAcM_delete(fopAc_ac_c* i_actor) { // "Deleting Actor" fopAcM_Log(i_actor, "アクターの削除"); - fpcM_Delete(i_actor); + return fpcM_Delete(i_actor); } /* 80019CB8-80019D18 0145F8 0060+00 0/0 3/3 12/12 .text fopAcM_delete__FUi */