Fix process profile definitions

This commit is contained in:
LagoLunatic 2025-12-23 16:44:19 -05:00
parent cd249ad2df
commit 2fa6dd7003
11 changed files with 69 additions and 50 deletions

View File

@ -2,20 +2,25 @@
#define F_F_OP_SCENE_H_
#include "f_op/f_op_scene_tag.h"
#include "f_pc/f_pc_leaf.h"
struct request_of_phase_process_class;
class mDoDvdThd_command_c;
struct scene_method_class {
/* 0x00 */ leafdraw_method_class base;
};
typedef struct scene_process_profile_definition {
/* 0x00 */ node_process_profile_definition nase;
/* 0x20 */ process_method_class* submethod; // Subclass methods
/* 0x20 */ scene_method_class* submethod; // Subclass methods
/* 0x24 */ u32 unk_0x24; // padding?
} scene_process_profile_definition;
class scene_class {
public:
/* 0x000 */ process_node_class base;
/* 0x1AC */ process_method_class* submethod;
/* 0x1AC */ scene_method_class* submethod;
/* 0x1B0 */ scene_tag_class scene_tag;
};

View File

@ -263,19 +263,27 @@ static int daTag_KMsg_IsDelete(void* param_0) {
return 1;
}
static void* daTag_KMsg_MethodTable[8] = {
(void*)daTag_KMsg_Create,
(void*)daTag_KMsg_Delete,
(void*)daTag_KMsg_Execute,
(void*)daTag_KMsg_IsDelete,
(void*)daTag_KMsg_Draw,
static actor_method_class daTag_KMsg_MethodTable = {
(process_method_func)daTag_KMsg_Create,
(process_method_func)daTag_KMsg_Delete,
(process_method_func)daTag_KMsg_Execute,
(process_method_func)daTag_KMsg_IsDelete,
(process_method_func)daTag_KMsg_Draw,
};
void* g_profile_TAG_KMSG[12] = {
(void*)0xFFFFFFFD, (void*)0x0008FFFD,
(void*)0x02EB0000, (void*)&g_fpcLf_Method,
(void*)0x000005CC, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x01220000, (void*)&daTag_KMsg_MethodTable,
(void*)0x00044000, (void*)0x000E0000,
actor_process_profile_definition g_profile_TAG_KMSG = {
fpcLy_CURRENT_e,
8,
fpcPi_CURRENT_e,
PROC_TAG_KMSG,
&g_fpcLf_Method.base,
sizeof(daTag_KMsg_c),
0,
0,
&g_fopAc_Method.base,
0x122,
&daTag_KMsg_MethodTable,
0x44000,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};

View File

@ -489,18 +489,24 @@ bool d_GameOver_Delete(fpc_ProcID& i_id) {
return false;
}
static void* l_dGameover_Method[5] = {
(void*)dGameover_Create,
(void*)dGameover_Delete,
(void*)dGameover_Execute,
(void*)dGameover_IsDelete,
(void*)dGameover_Draw,
static leafdraw_method_class l_dGameover_Method = {
(process_method_func)dGameover_Create,
(process_method_func)dGameover_Delete,
(process_method_func)dGameover_Execute,
(process_method_func)dGameover_IsDelete,
(process_method_func)dGameover_Draw,
};
void* g_profile_GAMEOVER[10] = {
(void*)0xFFFFFFFD, (void*)0x000CFFFD,
(void*)0x03170000, (void*)&g_fpcLf_Method,
(void*)0x0000011C, (void*)NULL,
(void*)NULL, (void*)&g_fopMsg_Method,
(void*)0x03030000, (void*)&l_dGameover_Method,
msg_process_profile_definition g_profile_GAMEOVER = {
fpcLy_CURRENT_e,
0x0C,
fpcPi_CURRENT_e,
PROC_GAMEOVER,
&g_fpcLf_Method.base,
sizeof(dGameover_c),
0,
0,
&g_fopMsg_Method,
0x303,
&l_dGameover_Method,
};

View File

@ -3092,7 +3092,7 @@ msg_process_profile_definition g_profile_METER2 = {
12,
fpcPi_CURRENT_e,
PROC_METER2,
(process_method_class*)&g_fpcLf_Method,
&g_fpcLf_Method.base,
sizeof(dMeter2_c),
0,
0,

View File

@ -935,12 +935,12 @@ void dScnLogo_c::setRenderMode() {
dLog_HIO_c::~dLog_HIO_c() {}
static dScnLogo_Method l_dScnLogo_Method[5] = {
(dScnLogo_Method)dScnLogo_Create,
dScnLogo_Delete,
dScnLogo_Execute,
dScnLogo_IsDelete,
dScnLogo_Draw,
static scene_method_class l_dScnLogo_Method = {
(process_method_func)dScnLogo_Create,
(process_method_func)dScnLogo_Delete,
(process_method_func)dScnLogo_Execute,
(process_method_func)dScnLogo_IsDelete,
(process_method_func)dScnLogo_Draw,
};
scene_process_profile_definition g_profile_LOGO_SCENE = {
@ -953,6 +953,6 @@ scene_process_profile_definition g_profile_LOGO_SCENE = {
0,
0,
&g_fopScn_Method.base,
(process_method_class*)&l_dScnLogo_Method,
&l_dScnLogo_Method,
NULL,
};

View File

@ -1997,7 +1997,7 @@ f32 myFontClass::drawChar_scale(f32 param_0, f32 param_1, f32 param_2, f32 param
}
}
static leafdraw_method_class l_dScnMenu_Method = {
static scene_method_class l_dScnMenu_Method = {
(process_method_func)dScnMenu_Create, (process_method_func)dScnMenu_Delete,
(process_method_func)dScnMenu_Execute, (process_method_func)dScnMenu_IsDelete,
(process_method_func)dScnMenu_Draw,
@ -2013,7 +2013,7 @@ scene_process_profile_definition g_profile_MENU_SCENE = {
0, // mSizeOther
0, // mParameters
&g_fopScn_Method.base, // sub_method
(process_method_class*)&l_dScnMenu_Method, // mpMtd
&l_dScnMenu_Method, // mpMtd
};
#else
scene_process_profile_definition g_profile_MENU_SCENE = {

View File

@ -322,7 +322,7 @@ static int dScnName_Create(scene_class* i_this) {
return static_cast<dScnName_c*>(i_this)->create();
}
static leafdraw_method_class l_dScnName_Method = {
static scene_method_class l_dScnName_Method = {
(process_method_func)dScnName_Create, (process_method_func)dScnName_Delete,
(process_method_func)dScnName_Execute, (process_method_func)dScnName_IsDelete,
(process_method_func)dScnName_Draw,
@ -338,7 +338,7 @@ scene_process_profile_definition g_profile_NAME_SCENE = {
0,
0,
&g_fopScn_Method.base,
(process_method_class*)&l_dScnName_Method,
&l_dScnName_Method,
NULL,
};
@ -352,6 +352,6 @@ scene_process_profile_definition g_profile_NAMEEX_SCENE = {
0,
0,
&g_fopScn_Method.base,
(process_method_class*)&l_dScnName_Method,
&l_dScnName_Method,
NULL,
};

View File

@ -732,7 +732,7 @@ static void dScnPly_Create(scene_class* i_this) {
dComLbG_PhaseHandler(&static_cast<dScnPly_c*>(i_this)->field_0x1c4, l_method, i_this);
}
static leafdraw_method_class l_dScnPly_Method = {
static scene_method_class l_dScnPly_Method = {
(process_method_func)dScnPly_Create, (process_method_func)dScnPly_Delete,
(process_method_func)dScnPly_Execute, (process_method_func)dScnPly_IsDelete,
(process_method_func)dScnPly_Draw,
@ -748,7 +748,7 @@ scene_process_profile_definition g_profile_PLAY_SCENE = {
0, // mSizeOther
0, // mParameters
&g_fopScn_Method.base, // sub_method
(process_method_class*)&l_dScnPly_Method, // mpMtd
&l_dScnPly_Method, // mpMtd
};
scene_process_profile_definition g_profile_OPENING_SCENE = {
@ -761,5 +761,5 @@ scene_process_profile_definition g_profile_OPENING_SCENE = {
0, // mSizeOther
0, // mParameters
&g_fopScn_Method.base, // sub_method
(process_method_class*)&l_dScnPly_Method, // mpMtd
&l_dScnPly_Method, // mpMtd
};

View File

@ -417,7 +417,7 @@ static int dScnRoom_Create(scene_class* i_this) {
return dComLbG_PhaseHandler(&room->field_0x1c4, l_method, i_this);
}
static leafdraw_method_class l_dScnRoom_Method = {
static scene_method_class l_dScnRoom_Method = {
(process_method_func)dScnRoom_Create, (process_method_func)dScnRoom_Delete,
(process_method_func)dScnRoom_Execute, (process_method_func)dScnRoom_IsDelete,
(process_method_func)dScnRoom_Draw,
@ -433,5 +433,5 @@ scene_process_profile_definition g_profile_ROOM_SCENE = {
0, // mSizeOther
0, // mParameters
&g_fopScn_Method.base, // sub_method
(process_method_class*)&l_dScnRoom_Method, // mpMtd
&l_dScnRoom_Method, // mpMtd
};

View File

@ -1637,7 +1637,7 @@ msg_process_profile_definition g_profile_TIMER = {
12,
fpcPi_CURRENT_e,
PROC_TIMER,
(process_method_class*)&g_fpcLf_Method,
&g_fpcLf_Method.base,
sizeof(dTimer_c),
0,
0,

View File

@ -11,16 +11,16 @@ static int fopScn_Draw(scene_class* i_this) {
}
static int fopScn_Execute(scene_class* i_this) {
return fpcMtd_Execute(i_this->submethod, i_this);
return fpcMtd_Execute((process_method_class*)i_this->submethod, i_this);
}
static int fopScn_IsDelete(void* i_this) {
return fpcMtd_IsDelete(static_cast<scene_class*>(i_this)->submethod, i_this);
return fpcMtd_IsDelete((process_method_class*)static_cast<scene_class*>(i_this)->submethod, i_this);
}
static int fopScn_Delete(void* i_this) {
scene_class* scene = (scene_class*)i_this;
int ret = fpcMtd_Delete(scene->submethod, scene);
int ret = fpcMtd_Delete((process_method_class*)scene->submethod, scene);
if (ret == 1) {
fopScnTg_QueueTo(&scene->scene_tag);
}
@ -42,7 +42,7 @@ static int fopScn_Create(void* i_this) {
}
}
return fpcMtd_Create(scene->submethod, i_this);
return fpcMtd_Create((process_method_class*)scene->submethod, i_this);
}
leafdraw_method_class g_fopScn_Method = {