From 8845e983e1dad50d5a7b86ed77fda98df9032bbc Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 14 Oct 2023 15:35:20 -0700 Subject: [PATCH] kankyo fixes, d_envse start --- include/f_op/f_op_kankyo.h | 8 ++++-- src/d/d_envse.cpp | 59 +++++++++++++++++++++++++++++--------- src/d/d_kankyo.cpp | 4 +-- src/d/d_kyeff.cpp | 4 +-- src/d/d_kyeff2.cpp | 4 +-- src/d/d_stage.cpp | 2 +- src/f_op/f_op_kankyo.cpp | 59 +++++++++++++++++++------------------- 7 files changed, 88 insertions(+), 52 deletions(-) diff --git a/include/f_op/f_op_kankyo.h b/include/f_op/f_op_kankyo.h index 232a83610..fcf62b5bf 100644 --- a/include/f_op/f_op_kankyo.h +++ b/include/f_op/f_op_kankyo.h @@ -4,11 +4,15 @@ #include "SSystem/SComponent/c_xyz.h" #include "f_pc/f_pc_leaf.h" +struct kankyo_method_class { + /* 0x00 */ leafdraw_method_class base; +}; + class kankyo_class : public leafdraw_class { public: /* 0xC0 */ int mBsType; /* 0xC4 */ create_tag_class mDwTg; - /* 0xD8 */ leafdraw_method_class* mSubMtd; + /* 0xD8 */ kankyo_method_class* mSubMtd; /* 0xDC */ cXyz mPos; /* 0xE8 */ cXyz mScale; /* 0xF4 */ u32 mParam; @@ -16,7 +20,7 @@ public: struct kankyo_process_profile_definition { /* 0x00 */ leaf_process_profile_definition base; - /* 0x24 */ leafdraw_method_class* mSubMtd; + /* 0x24 */ kankyo_method_class* mSubMtd; }; // Size: 0x28 extern leafdraw_method_class g_fopKy_Method; diff --git a/src/d/d_envse.cpp b/src/d/d_envse.cpp index dee0af0b2..d9bad8617 100644 --- a/src/d/d_envse.cpp +++ b/src/d/d_envse.cpp @@ -3,12 +3,23 @@ // Translation Unit: d_envse.cpp // -#include "d_envse.h" -#include "dolphin/types.h" +#include "f_op/f_op_kankyo.h" +#include "f_op/f_op_kankyo_mng.h" +#include "d/d_procname.h" +#include "d/d_stage.h" +#include "m_Do/m_Do_audio.h" + +class dEnvSe_c : public kankyo_class { +public: + BOOL execute(); + + /* 0xF8 */ u32 field_0xf8; + /* 0xFC */ u32 field_0xfc; +}; /* 8017D4C0-8017D4C8 .text dEnvSe_Draw__FP8dEnvSe_c */ -void dEnvSe_Draw(dEnvSe_c*) { - /* Nonmatching */ +BOOL dEnvSe_Draw(dEnvSe_c* i_this) { + return TRUE; } /* 8017D4C8-8017D700 .text dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath */ @@ -17,27 +28,49 @@ void dEnvSe_getNearPathPos(cXyz*, cXyz*, dPath*) { } /* 8017D700-8017DAE0 .text execute__8dEnvSe_cFv */ -void dEnvSe_c::execute() { +BOOL dEnvSe_c::execute() { /* Nonmatching */ } /* 8017DAE0-8017DB00 .text dEnvSe_Execute__FP8dEnvSe_c */ -void dEnvSe_Execute(dEnvSe_c*) { - /* Nonmatching */ +BOOL dEnvSe_Execute(dEnvSe_c* i_this) { + return i_this->execute(); } /* 8017DB00-8017DB08 .text dEnvSe_IsDelete__FP8dEnvSe_c */ -void dEnvSe_IsDelete(dEnvSe_c*) { - /* Nonmatching */ +BOOL dEnvSe_IsDelete(dEnvSe_c* i_this) { + return TRUE; } /* 8017DB08-8017DB38 .text dEnvSe_Delete__FP8dEnvSe_c */ -void dEnvSe_Delete(dEnvSe_c*) { - /* Nonmatching */ +BOOL dEnvSe_Delete(dEnvSe_c* i_this) { + mDoAud_seDeleteObject(&i_this->mPos); + return TRUE; } /* 8017DB38-8017DB40 .text dEnvSe_Create__FP12kankyo_class */ -void dEnvSe_Create(kankyo_class*) { - /* Nonmatching */ +s32 dEnvSe_Create(kankyo_class*) { + return cPhs_COMPLEATE_e; } +kankyo_method_class l_dEnvSe_Method = { + (process_method_func)dEnvSe_Create, + (process_method_func)dEnvSe_Delete, + (process_method_func)dEnvSe_Execute, + (process_method_func)dEnvSe_IsDelete, + (process_method_func)dEnvSe_Draw, +}; + +kankyo_process_profile_definition g_profile_EnvSe = { + fpcLy_CURRENT_e, + 2, + fpcPi_CURRENT_e, + PROC_ENVSE, + &g_fpcLf_Method.mBase, + sizeof(dEnvSe_c), + 0, + 0, + &g_fopKy_Method, + 0xA9, + &l_dEnvSe_Method, +}; diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp index b94486c8c..ac73695ab 100644 --- a/src/d/d_kankyo.cpp +++ b/src/d/d_kankyo.cpp @@ -2967,7 +2967,7 @@ BOOL dKyr_player_overhead_bg_chk() { class sub_kankyo__class : public kankyo_class { }; -static leafdraw_method_class l_dKy_Method = { +kankyo_method_class l_dKy_Method = { (process_method_func)dKy_Create, (process_method_func)dKy_Delete, (process_method_func)dKy_Execute, @@ -2975,7 +2975,7 @@ static leafdraw_method_class l_dKy_Method = { (process_method_func)dKy_Draw, }; -extern kankyo_process_profile_definition g_profile_KANKYO = { +kankyo_process_profile_definition g_profile_KANKYO = { fpcLy_CURRENT_e, 1, fpcPi_CURRENT_e, diff --git a/src/d/d_kyeff.cpp b/src/d/d_kyeff.cpp index 41030616e..64e4102d3 100644 --- a/src/d/d_kyeff.cpp +++ b/src/d/d_kyeff.cpp @@ -164,7 +164,7 @@ s32 dKyeff_Create(kankyo_class* i_ky) { return cPhs_COMPLEATE_e; } -leafdraw_method_class l_dKyeff_Method = { +kankyo_method_class l_dKyeff_Method = { (process_method_func)dKyeff_Create, (process_method_func)dKyeff_Delete, (process_method_func)dKyeff_Execute, @@ -172,7 +172,7 @@ leafdraw_method_class l_dKyeff_Method = { (process_method_func)dKyeff_Draw, }; -extern kankyo_process_profile_definition g_profile_KYEFF = { +kankyo_process_profile_definition g_profile_KYEFF = { fpcLy_CURRENT_e, 12, fpcPi_CURRENT_e, diff --git a/src/d/d_kyeff2.cpp b/src/d/d_kyeff2.cpp index 8a7e34cc3..ce8b12dd0 100644 --- a/src/d/d_kyeff2.cpp +++ b/src/d/d_kyeff2.cpp @@ -53,7 +53,7 @@ s32 dKyeff2_Create(kankyo_class*) { return cPhs_COMPLEATE_e; } -leafdraw_method_class l_dKyeff2_Method = { +kankyo_method_class l_dKyeff2_Method = { (process_method_func)dKyeff2_Create, (process_method_func)dKyeff2_Delete, (process_method_func)dKyeff2_Execute, @@ -61,7 +61,7 @@ leafdraw_method_class l_dKyeff2_Method = { (process_method_func)dKyeff2_Draw, }; -extern kankyo_process_profile_definition g_profile_KYEFF2 = { +kankyo_process_profile_definition g_profile_KYEFF2 = { fpcLy_CURRENT_e, 12, fpcPi_CURRENT_e, diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 5d2def581..e70ebcda0 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -2015,7 +2015,7 @@ void dStage_Create() { // NONMATCHING - almost void dStage_Delete() { if (*dStage_roomControl_c::getDemoArcName() != 0) { - dComIfG_deleteObjectResMain(dStage_roomControl_c::getDemoArcName()); + dComIfG_deleteObjectRes(dStage_roomControl_c::getDemoArcName()); } dStage_roomControl_c::destroyMemoryBlock(); diff --git a/src/f_op/f_op_kankyo.cpp b/src/f_op/f_op_kankyo.cpp index 983496604..ab649f39a 100644 --- a/src/f_op/f_op_kankyo.cpp +++ b/src/f_op/f_op_kankyo.cpp @@ -13,48 +13,48 @@ extern bool dMenu_flag(void); /* 8002A454-8002A4A4 .text fopKy_Draw__FPv */ -static int fopKy_Draw(void* i_this) { +static int fopKy_Draw(void* i_ky) { int ret; - kankyo_class* _this = (kankyo_class*)i_this; + kankyo_class* i_this = (kankyo_class*)i_ky; if (!dMenu_flag()) { - ret = fpcLf_DrawMethod(_this->mSubMtd, i_this); + ret = fpcLf_DrawMethod((leafdraw_method_class*)i_this->mSubMtd, i_this); } return ret; } /* 8002A4A4-8002A514 .text fopKy_Execute__FPv */ -static int fopKy_Execute(void* i_this) { +static int fopKy_Execute(void* i_ky) { int ret; - kankyo_class* _this = (kankyo_class*)i_this; + kankyo_class* i_this = (kankyo_class*)i_ky; - if (!dScnPly_ply_c::isPause() && (!dMenu_flag() || fpcM_GetName(i_this) == PROC_ENVSE || fpcM_GetName(i_this) == PROC_LEVEL_SE)) { - ret = fpcMtd_Execute(&_this->mSubMtd->mBase, i_this); + if (!dScnPly_ply_c::isPause() && (!dMenu_flag() || fpcM_GetName(i_ky) == PROC_ENVSE || fpcM_GetName(i_ky) == PROC_LEVEL_SE)) { + ret = fpcMtd_Execute((process_method_class*)i_this->mSubMtd, i_ky); } return ret; } /* 8002A514-8002A568 .text fopKy_IsDelete__FPv */ -static int fopKy_IsDelete(void* i_this) { +static int fopKy_IsDelete(void* i_ky) { int ret; - kankyo_class* _this = (kankyo_class*)i_this; + kankyo_class* i_this = (kankyo_class*)i_ky; - ret = fpcMtd_IsDelete(&_this->mSubMtd->mBase, _this); + ret = fpcMtd_IsDelete((process_method_class*)i_this->mSubMtd, i_this); if (ret == 1) { - fopDwTg_DrawQTo(&_this->mDwTg); + fopDwTg_DrawQTo(&i_this->mDwTg); } return ret; } /* 8002A568-8002A5B4 .text fopKy_Delete__FPv */ -static int fopKy_Delete(void* i_this) { - kankyo_class* _this = (kankyo_class*)i_this; +static int fopKy_Delete(void* i_ky) { + kankyo_class* i_this = (kankyo_class*)i_ky; - int ret = fpcMtd_Delete(&_this->mSubMtd->mBase, _this); - fopDwTg_DrawQTo(&_this->mDwTg); + int ret = fpcMtd_Delete((process_method_class*)i_this->mSubMtd, i_this); + fopDwTg_DrawQTo(&i_this->mDwTg); return ret; } @@ -62,30 +62,29 @@ static int fopKy_Delete(void* i_this) { static int fopKy_KANKYO_TYPE; /* 8002A5B4-8002A688 .text fopKy_Create__FPv */ -static int fopKy_Create(void* i_this) { - kankyo_class* _this = (kankyo_class*)i_this; +static int fopKy_Create(void* i_ky) { + kankyo_class* i_this = (kankyo_class*)i_ky; - if (fpcM_IsFirstCreating(i_this)) { - kankyo_process_profile_definition* profile = - (kankyo_process_profile_definition*)fpcM_GetProfile(i_this); + if (fpcM_IsFirstCreating(i_ky)) { + kankyo_process_profile_definition* profile = (kankyo_process_profile_definition*)fpcM_GetProfile(i_ky); - _this->mBsType = fpcBs_MakeOfType(&fopKy_KANKYO_TYPE); - _this->mSubMtd = profile->mSubMtd; + i_this->mBsType = fpcBs_MakeOfType(&fopKy_KANKYO_TYPE); + i_this->mSubMtd = profile->mSubMtd; - fopDwTg_Init(&_this->mDwTg, _this); - fopKyM_prm_class* append = (fopKyM_prm_class*)fopKyM_GetAppend(_this); + fopDwTg_Init(&i_this->mDwTg, i_this); + fopKyM_prm_class* append = (fopKyM_prm_class*)fopKyM_GetAppend(i_this); if (append != NULL) { - _this->mPos = append->mPos; - _this->mScale = append->mScale; - _this->mParam = append->mParam; + i_this->mPos = append->mPos; + i_this->mScale = append->mScale; + i_this->mParam = append->mParam; } } - int ret = fpcMtd_Create(&_this->mSubMtd->mBase, _this); + int ret = fpcMtd_Create((process_method_class*)i_this->mSubMtd, i_this); if (ret == cPhs_COMPLEATE_e) { - s32 priority = fpcLf_GetPriority(_this); - fopDwTg_ToDrawQ(&_this->mDwTg, priority); + s32 priority = fpcLf_GetPriority(i_this); + fopDwTg_ToDrawQ(&i_this->mDwTg, priority); } return ret;