summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2022-12-30 16:43:15 -0800
committerJasper St. Pierre <jstpierre@mecheye.net>2022-12-30 16:43:48 -0800
commit00e2711fc9577251fa228e47154b94ff54a0048f (patch)
treefb2c0a5f424b5983ff3517a92e8e88840e03b3fb /src
parent6fec278add8d2014c08532075a2fe8ca45192e70 (diff)
Match f_op_scene, fix profile structs
Diffstat (limited to 'src')
-rw-r--r--src/d/meter/d_meter2.cpp5
-rw-r--r--src/d/s/d_s_name.cpp1
-rw-r--r--src/f_op/f_op_actor.cpp2
-rw-r--r--src/f_op/f_op_camera.cpp5
-rw-r--r--src/f_op/f_op_msg.cpp3
-rw-r--r--src/f_op/f_op_scene.cpp76
-rw-r--r--src/f_op/f_op_scene_pause.cpp2
-rw-r--r--src/f_op/f_op_scene_req.cpp2
-rw-r--r--src/f_pc/f_pc_base.cpp2
-rw-r--r--src/f_pc/f_pc_draw.cpp4
-rw-r--r--src/f_pc/f_pc_leaf.cpp6
-rw-r--r--src/f_pc/f_pc_node.cpp4
12 files changed, 46 insertions, 66 deletions
diff --git a/src/d/meter/d_meter2.cpp b/src/d/meter/d_meter2.cpp
index aa60e21eb6..869e615b7f 100644
--- a/src/d/meter/d_meter2.cpp
+++ b/src/d/meter/d_meter2.cpp
@@ -1426,13 +1426,14 @@ SECTION_DATA static leafdraw_method_class l_dMeter2_Method = {
};
/* 803BFA68-803BFA90 -00001 0028+00 0/0 0/0 1/0 .data g_profile_METER2 */
-SECTION_DATA extern process_profile_definition g_profile_METER2 = {
+SECTION_DATA extern msg_process_profile_definition g_profile_METER2 = {
-3, 12,
-3, 0x0316,
0, (process_method_class*)&g_fpcLf_Method,
0x4C0, 0,
0, &g_fopMsg_Method,
0x0301, 0,
- 0, &l_dMeter2_Method};
+ 0, &l_dMeter2_Method
+};
/* 80399338-80399338 025998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/s/d_s_name.cpp b/src/d/s/d_s_name.cpp
index 607115dfac..375268dfd7 100644
--- a/src/d/s/d_s_name.cpp
+++ b/src/d/s/d_s_name.cpp
@@ -91,6 +91,7 @@ public:
/* 802590F8 */ void changeGameScene();
private:
+ /* 0x1C4 */ request_of_phase_process_class field_0x1c4;
/* 0x1CC */ JKRExpHeap* mHeap;
/* 0x1D0 */ JKRExpHeap* field_0x1d0;
/* 0x1D4 */ dScnName_camera_c mCamera;
diff --git a/src/f_op/f_op_actor.cpp b/src/f_op/f_op_actor.cpp
index 98adcda8ff..a59b23cee3 100644
--- a/src/f_op/f_op_actor.cpp
+++ b/src/f_op/f_op_actor.cpp
@@ -271,7 +271,7 @@ static int fopAc_Create(void* actor) {
fopAc_ac_c* ac = (fopAc_ac_c*)actor;
if (fpcM_IsFirstCreating(actor)) {
- leaf_process_profile_definition* profile = (leaf_process_profile_definition*) fpcM_GetProfile(actor);
+ actor_process_profile_definition* profile = (actor_process_profile_definition*) fpcM_GetProfile(actor);
ac->mAcType = fpcBs_MakeOfType(&g_fopAc_type);
ac->mSubMtd = (profile_method_class*)profile->mBase.mMethods;
diff --git a/src/f_op/f_op_camera.cpp b/src/f_op/f_op_camera.cpp
index 113c4b563d..d852451c37 100644
--- a/src/f_op/f_op_camera.cpp
+++ b/src/f_op/f_op_camera.cpp
@@ -9,6 +9,7 @@
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_draw_tag.h"
+#include "f_op/f_op_msg_mng.h"
#include "f_pc/f_pc_leaf.h"
/* 8001E140-8001E180 018A80 0040+00 1/0 0/0 0/0 .text fopCam_Draw__FP12camera_class */
@@ -59,8 +60,8 @@ static int fopCam_Create(void* i_actorP) {
if (fpcM_IsFirstCreating(i_actorP)) {
// TODO: This should be camera_process_profile_definition
- leaf_process_profile_definition* profile = (leaf_process_profile_definition*) fpcM_GetProfile(i_actorP);
- camera->mpMtd = profile->mMethods;
+ camera_process_profile_definition* profile = (camera_process_profile_definition*) fpcM_GetProfile(i_actorP);
+ camera->mpMtd = profile->mSubMtd;
fopDwTg_Init(&camera->mCreateTag, camera);
u32* append = (u32*)fpcM_GetAppend(camera);
diff --git a/src/f_op/f_op_msg.cpp b/src/f_op/f_op_msg.cpp
index 0214a04dc0..ddef7fcd09 100644
--- a/src/f_op/f_op_msg.cpp
+++ b/src/f_op/f_op_msg.cpp
@@ -91,8 +91,7 @@ int fopMsg_Create(void* data) {
msg_class *msg = (msg_class*)data;
if (fpcM_IsFirstCreating(msg)) {
- // TODO: This should be msg_process_profile_definition
- leaf_process_profile_definition* profile = (leaf_process_profile_definition*) fpcM_GetProfile(msg);
+ msg_process_profile_definition* profile = (msg_process_profile_definition*) fpcM_GetProfile(msg);
msg->mMsgType = fpcBs_MakeOfType(&fopMsg_MSG_TYPE);
msg->mSubMtd = profile->mMethods;
fopDwTg_Init(&msg->mDwTg, msg);
diff --git a/src/f_op/f_op_scene.cpp b/src/f_op/f_op_scene.cpp
index 15dd2ed762..51969b82d2 100644
--- a/src/f_op/f_op_scene.cpp
+++ b/src/f_op/f_op_scene.cpp
@@ -4,80 +4,58 @@
//
#include "f_op/f_op_scene.h"
+#include "f_op/f_op_scene_tag.h"
+#include "f_pc/f_pc_manager.h"
#include "dol2asm.h"
#include "dolphin/types.h"
-//
-// Forward References:
-//
-
-extern "C" static void fopScn_Draw__FP11scene_class();
-extern "C" static void fopScn_Execute__FP11scene_class();
-extern "C" static void fopScn_IsDelete__FPv();
-extern "C" static void fopScn_Delete__FPv();
-extern "C" static void fopScn_Create__FPv();
-extern "C" extern void* g_fopScn_Method[5 + 1 /* padding */];
-
-//
-// External References:
-//
-
-extern "C" void fopScnTg_QueueTo__FP15scene_tag_class();
-extern "C" void fopScnTg_ToQueue__FP15scene_tag_class();
-extern "C" void fopScnTg_Init__FP15scene_tag_classPv();
-extern "C" void fpcMtd_Execute__FP20process_method_classPv();
-extern "C" void fpcMtd_IsDelete__FP20process_method_classPv();
-extern "C" void fpcMtd_Delete__FP20process_method_classPv();
-extern "C" void fpcMtd_Create__FP20process_method_classPv();
-extern "C" void fpcNd_DrawMethod__FP21nodedraw_method_classPv();
-
-//
-// Declarations:
-//
-
/* 8001EB34-8001EB5C 019474 0028+00 1/0 0/0 0/0 .text fopScn_Draw__FP11scene_class */
static void fopScn_Draw(scene_class* pScene) {
- fpcNd_DrawMethod((nodedraw_method_class*)pScene->mpProcessMtd, pScene);
+ fpcNd_DrawMethod((nodedraw_method_class*)pScene->mpMtd, pScene);
}
/* 8001EB5C-8001EB84 01949C 0028+00 1/0 0/0 0/0 .text fopScn_Execute__FP11scene_class */
static void fopScn_Execute(scene_class* pScene) {
- fpcMtd_Execute(pScene->mpProcessMtd, pScene);
+ fpcMtd_Execute(pScene->mpMtd, pScene);
}
/* 8001EB84-8001EBAC 0194C4 0028+00 1/0 0/0 0/0 .text fopScn_IsDelete__FPv */
-static s32 fopScn_IsDelete(void* param_1) {
- return fpcMtd_IsDelete(((scene_class*)param_1)->mpProcessMtd, param_1);
+static s32 fopScn_IsDelete(scene_class* pScene) {
+ return fpcMtd_IsDelete(pScene->mpMtd, pScene);
}
/* 8001EBAC-8001EC00 0194EC 0054+00 1/0 0/0 0/0 .text fopScn_Delete__FPv */
static s32 fopScn_Delete(void* param_1) {
scene_class* pScene = (scene_class*)param_1;
- s32 ret = fpcMtd_Delete(pScene->mpProcessMtd, pScene);
+ s32 ret = fpcMtd_Delete(pScene->mpMtd, pScene);
if (ret == 1) {
- fopScnTg_QueueTo(&pScene->field_0x1b0);
+ fopScnTg_QueueTo(&pScene->mScnTg);
}
return ret;
}
/* 8001EC00-8001EC74 019540 0074+00 1/0 0/0 0/0 .text fopScn_Create__FPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void fopScn_Create(void* param_0) {
- nofralloc
-#include "asm/f_op/f_op_scene/fopScn_Create__FPv.s"
+static s32 fopScn_Create(scene_class * pScene) {
+ if (fpcM_IsFirstCreating(pScene)) {
+ scene_process_profile_definition* profile = (scene_process_profile_definition*) fpcM_GetProfile(pScene);
+ pScene->mpMtd = profile->mpMtd;
+ fopScnTg_Init(&pScene->mScnTg, pScene);
+ fopScnTg_ToQueue(&pScene->mScnTg);
+
+ if (pScene->mBase.mBase.mpUserData != NULL) {
+ pScene->mBase.mBase.mParameters = *(u32*)pScene->mBase.mBase.mpUserData;
+ }
+ }
+
+ return fpcMtd_Create(pScene->mpMtd, pScene);
}
-#pragma pop
/* ############################################################################################## */
/* 803A38B0-803A38C8 -00001 0014+04 0/0 9/0 0/0 .data g_fopScn_Method */
-SECTION_DATA extern void* g_fopScn_Method[5 + 1 /* padding */] = {
- (void*)fopScn_Create,
- (void*)fopScn_Delete,
- (void*)fopScn_Execute,
- (void*)fopScn_IsDelete,
- (void*)fopScn_Draw,
- /* padding */
- NULL,
+nodedraw_method_class g_fopScn_Method = {
+ (process_method_func)fopScn_Create,
+ (process_method_func)fopScn_Delete,
+ (process_method_func)fopScn_Execute,
+ (process_method_func)fopScn_IsDelete,
+ (process_method_func)fopScn_Draw,
};
diff --git a/src/f_op/f_op_scene_pause.cpp b/src/f_op/f_op_scene_pause.cpp
index fac70803aa..e04a465278 100644
--- a/src/f_op/f_op_scene_pause.cpp
+++ b/src/f_op/f_op_scene_pause.cpp
@@ -27,7 +27,7 @@ int fopScnPause_Enable(scene_class* pScene) {
/* 80020594-8002064C 01AED4 00B8+00 0/0 2/2 0/0 .text fopScnPause_Disable__FP11scene_class */
int fopScnPause_Disable(scene_class* pScene) {
if (pScene) {
- void* tmp = (void*)pScene->field_0x0.mLyTg.mpLayer->mpPcNode;
+ void* tmp = (void*)pScene->mBase.mBase.mLyTg.mpLayer->mpPcNode;
if (!tmp) {
fpcM_PauseDisable(pScene, 1);
diff --git a/src/f_op/f_op_scene_req.cpp b/src/f_op/f_op_scene_req.cpp
index 62ec8f8a3c..ce1c9e546e 100644
--- a/src/f_op/f_op_scene_req.cpp
+++ b/src/f_op/f_op_scene_req.cpp
@@ -78,7 +78,7 @@ static void fopScnRq_Execute(scene_request_class* pScnRq) {
static int fopScnRq_PostMethod(void* param_1, scene_request_class* pScnRq) {
if (pScnRq->mFadeRequest) {
fopScnPause_Enable((scene_class*)param_1);
- fopOvlpM_ToldAboutID(((scene_class*)param_1)->field_0x0.mBsPcId);
+ fopOvlpM_ToldAboutID(((scene_class*)param_1)->mBase.mBase.mBsPcId);
}
return 1;
}
diff --git a/src/f_pc/f_pc_base.cpp b/src/f_pc/f_pc_base.cpp
index c259ab51f9..155d6b2be1 100644
--- a/src/f_pc/f_pc_base.cpp
+++ b/src/f_pc/f_pc_base.cpp
@@ -104,7 +104,7 @@ base_process_class* fpcBs_Create(s16 pProcTypeID, unsigned int pProcID, void* pD
procClass->mBsType = fpcBs_MakeOfType(&g_fpcBs_type);
procClass->mProcName = procProfDef->mProcName;
fpcPause_Init(procClass);
- procClass->mpPcMtd = procProfDef->mpPcMtd;
+ procClass->mpPcMtd = procProfDef->mSubMtd;
procClass->mpProf = procProfDef;
procClass->mpUserData = pData;
procClass->mParameters = procProfDef->mParameters;
diff --git a/src/f_pc/f_pc_draw.cpp b/src/f_pc/f_pc_draw.cpp
index 4db4ff3bb2..4ce1ebbebb 100644
--- a/src/f_pc/f_pc_draw.cpp
+++ b/src/f_pc/f_pc_draw.cpp
@@ -22,9 +22,9 @@ s32 fpcDw_Execute(base_process_class* pProc) {
process_method_func func;
curLay = fpcLy_CurrentLayer();
if (fpcBs_Is_JustOfType(g_fpcLf_type, pProc->mSubType)) {
- func = ((nodedraw_method_class*)pProc->mpPcMtd)->mNodedrawFunc;
+ func = ((leafdraw_method_class*)pProc->mpPcMtd)->mpDrawFunc;
} else {
- func = ((nodedraw_method_class*)pProc->mpPcMtd)->mNodedrawFunc;
+ func = ((nodedraw_method_class*)pProc->mpPcMtd)->mpDrawFunc;
}
fpcLy_SetCurrentLayer(pProc->mLyTg.mpLayer);
ret = func(pProc);
diff --git a/src/f_pc/f_pc_leaf.cpp b/src/f_pc/f_pc_leaf.cpp
index 2602f0084c..6da1588191 100644
--- a/src/f_pc/f_pc_leaf.cpp
+++ b/src/f_pc/f_pc_leaf.cpp
@@ -55,10 +55,10 @@ int g_fpcLf_type;
/* 80021B14-80021B88 0074+00 s=1 e=0 z=0 None .text fpcLf_Create__FP14leafdraw_class */
s32 fpcLf_Create(leafdraw_class* pLeaf) {
- process_profile_definition* profDef;
+ leaf_process_profile_definition* profDef;
if (pLeaf->mBase.mInitState == 0) {
- profDef = (process_profile_definition*)pLeaf->mBase.mpProf;
- pLeaf->mpDrawMtd = profDef->mLfDrwMth;
+ profDef = (leaf_process_profile_definition*)pLeaf->mBase.mpProf;
+ pLeaf->mpDrawMtd = profDef->mSubMtd;
pLeaf->mBase.mSubType = fpcBs_MakeOfType(&g_fpcLf_type);
fpcDwPi_Init(&pLeaf->mDwPi, profDef->mPriority);
pLeaf->mbUnk0 = 0;
diff --git a/src/f_pc/f_pc_node.cpp b/src/f_pc/f_pc_node.cpp
index 2552c9fc19..ffcfe0e489 100644
--- a/src/f_pc/f_pc_node.cpp
+++ b/src/f_pc/f_pc_node.cpp
@@ -15,7 +15,7 @@
/* 800224F0-80022514 0024+00 s=1 e=1 z=0 None .text fpcNd_DrawMethod__FP21nodedraw_method_classPv
*/
s32 fpcNd_DrawMethod(nodedraw_method_class* pNodeMethod, void* pData) {
- return fpcMtd_Method(pNodeMethod->mNodedrawFunc, pData);
+ return fpcMtd_Method(pNodeMethod->mpDrawFunc, pData);
}
/* 80022514-80022580 006C+00 s=1 e=0 z=0 None .text fpcNd_Draw__FP18process_node_class */
@@ -104,7 +104,7 @@ s32 fpcNd_Create(process_node_class* pProcNode1) {
node_process_profile_definition* pProcProfileDef =
(node_process_profile_definition*)pProcNode->mBase.mpProf;
pProcNode->mBase.mSubType = fpcBs_MakeOfType(&g_fpcNd_type);
- pProcNode->mpNodeMtd = (nodedraw_method_class*)pProcProfileDef->mBase.mLfDrwMth;
+ pProcNode->mpNodeMtd = (nodedraw_method_class*)pProcProfileDef->mSubMtd;
fpcLy_Create(&pProcNode->mLayer, pProcNode, pProcNode->mLayerNodeLists, 0x10);
pProcNode->mUnk0 = 0;
}