summaryrefslogtreecommitdiff
path: root/src/f_pc/f_pc_manager.cpp
diff options
context:
space:
mode:
authorlepelog <lepelog@users.noreply.github.com>2021-04-01 12:06:29 +0200
committerlepelog <lepelog@users.noreply.github.com>2021-04-01 12:06:29 +0200
commit53c6aa6c8b50d95e89f64db70d0cc08fb4111a93 (patch)
tree20ce5067caef7892c2c9bb043b10918c15dd7868 /src/f_pc/f_pc_manager.cpp
parent87bc0e711b4fb2f990f3c37ca681be1fc027d554 (diff)
ported over f_pc
Diffstat (limited to 'src/f_pc/f_pc_manager.cpp')
-rw-r--r--src/f_pc/f_pc_manager.cpp182
1 files changed, 60 insertions, 122 deletions
diff --git a/src/f_pc/f_pc_manager.cpp b/src/f_pc/f_pc_manager.cpp
index 73898a4515..ec4d3fc12d 100644
--- a/src/f_pc/f_pc_manager.cpp
+++ b/src/f_pc/f_pc_manager.cpp
@@ -6,15 +6,30 @@
#include "f_pc/f_pc_manager.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+#include "f_pc/f_pc_base.h"
+#include "f_pc/f_pc_create_iter.h"
+#include "f_pc/f_pc_creator.h"
+#include "f_pc/f_pc_delete_tag.h"
+#include "f_pc/f_pc_deletor.h"
+#include "f_pc/f_pc_draw.h"
+#include "f_pc/f_pc_executor.h"
+#include "f_pc/f_pc_fstcreate_req.h"
+#include "f_pc/f_pc_layer_iter.h"
+#include "f_pc/f_pc_layer_tag.h"
+#include "f_pc/f_pc_layer.h"
+#include "f_pc/f_pc_line.h"
+#include "f_pc/f_pc_line_iter.h"
+#include "f_pc/f_pc_line_tag.h"
+#include "f_pc/f_pc_method.h"
+#include "f_pc/f_pc_node_req.h"
+#include "f_pc/f_pc_pause.h"
+#include "f_pc/f_pc_priority.h"
+#include "f_pc/f_pc_profile.h"
//
// Types:
//
-struct node_list_class {};
-
-struct layer_class {};
-
struct dShutdownErrorMsg_c {
/* 8009D790 */ void execute();
};
@@ -36,8 +51,6 @@ struct dComIfG_play_c {
/* 8002CAC4 */ void drawSimpleModel();
};
-struct base_process_class {};
-
struct Z2SoundMgr {
/* 802AA6B0 */ void pauseAllGameSound(bool);
};
@@ -52,19 +65,6 @@ struct JUTGamePad {
// Forward References:
//
-void fpcM_Draw(void*);
-static void fpcM_DrawIterater(int (*)(void*, void*));
-void fpcM_Execute(void*);
-void fpcM_Delete(void*);
-void fpcM_IsCreating(unsigned int);
-void fpcM_Management(void (*)(void), void (*)(void));
-void fpcM_Init();
-void fpcM_FastCreate(s16, int (*)(void*), void*, void*);
-void fpcM_IsPause(void*, u8);
-void fpcM_PauseEnable(void*, u8);
-void fpcM_PauseDisable(void*, u8);
-void fpcM_JudgeInLayer(unsigned int, void* (*)(void*, void*), void*);
-
extern "C" void fpcM_Draw__FPv();
extern "C" static void fpcM_DrawIterater__FPFPvPv_i();
extern "C" void fpcM_Execute__FPv();
@@ -82,29 +82,6 @@ extern "C" void fpcM_JudgeInLayer__FUiPFPvPv_PvPv();
// External References:
//
-void fpcCtIt_JudgeInLayer(unsigned int, void* (*)(void*, void*), void*);
-void fpcCt_IsCreatingByID(unsigned int);
-void fpcCt_Handler();
-void fpcDt_Handler();
-void fpcDt_Delete(void*);
-void fpcEx_Execute(base_process_class*);
-void fpcEx_Handler(int (*)(void*, void*));
-void fpcLy_RootLayer();
-void fpcLy_CurrentLayer();
-void fpcLy_Layer(unsigned int);
-void fpcLy_Create(layer_class*, void*, node_list_class*, int);
-void fpcLyIt_OnlyHere(layer_class*, int (*)(void*, void*), void*);
-void fpcLyIt_Judge(layer_class*, void* (*)(void*, void*), void*);
-void fpcLn_Create();
-void fpcPi_Handler();
-void fpcPause_IsEnable(void*, u8);
-void fpcPause_Enable(void*, u8);
-void fpcPause_Disable(void*, u8);
-void fpcDw_Execute(base_process_class*);
-void fpcDw_Handler(int (*)(int (*)(void*, void*)), int (*)(void*, void*));
-void fpcFCtRq_Request(layer_class*, s16, int (*)(void*, void*), void*, void*);
-void cAPIGph_Painter();
-void MtxInit();
extern "C" void fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv();
extern "C" void fpcCt_IsCreatingByID__FUi();
@@ -149,61 +126,40 @@ extern "C" extern u8 data_80450EC4[4];
// Declarations:
//
+/* 80450D38-80450D40 0008+00 s=0 e=1 z=0 None .sbss None */
+u8 struct_80450D38[8];
+
/* 800220A0-800220C0 0020+00 s=1 e=1 z=0 None .text fpcM_Draw__FPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_Draw(void* param_0) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_Draw__FPv.s"
+void fpcM_Draw(void* pProc) {
+ fpcDw_Execute((base_process_class*)pProc);
}
-#pragma pop
/* 800220C0-800220F8 0038+00 s=1 e=0 z=0 None .text fpcM_DrawIterater__FPFPvPv_i */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm static void fpcM_DrawIterater(int (*)(void*, void*)) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_DrawIterater__FPFPvPv_i.s"
+s32 fpcM_DrawIterater(fpcM_DrawIteraterFunc pFunc) {
+ return fpcLyIt_OnlyHere(fpcLy_RootLayer(), (fpcLyIt_OnlyHereFunc)pFunc, NULL);
}
-#pragma pop
/* 800220F8-80022118 0020+00 s=1 e=0 z=1 None .text fpcM_Execute__FPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_Execute(void* param_0) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_Execute__FPv.s"
+void fpcM_Execute(void* pProc) {
+ fpcEx_Execute((base_process_class*)pProc);
}
-#pragma pop
/* 80022118-80022138 0020+00 s=0 e=7 z=0 None .text fpcM_Delete__FPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_Delete(void* param_0) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_Delete__FPv.s"
+s32 fpcM_Delete(void* pProc) {
+ return fpcDt_Delete((base_process_class*)pProc);
}
-#pragma pop
/* 80022138-80022158 0020+00 s=0 e=6 z=43 None .text fpcM_IsCreating__FUi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_IsCreating(unsigned int param_0) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_IsCreating__FUi.s"
+BOOL fpcM_IsCreating(unsigned int pID) {
+ return fpcCt_IsCreatingByID(pID);
}
-#pragma pop
+// TODO, uses a lot of functions outside f_pc/SSystem
/* 80022158-800222B8 0160+00 s=0 e=1 z=0 None .text fpcM_Management__FPFv_vPFv_v */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void fpcM_Management(void (*)(void), void (*)(void)) {
+asm void fpcM_Management(fpcM_ManagementFunc, fpcM_ManagementFunc) {
nofralloc
#include "asm/f_pc/f_pc_manager/fpcM_Management__FPFv_vPFv_v.s"
}
@@ -211,67 +167,49 @@ asm void fpcM_Management(void (*)(void), void (*)(void)) {
/* ############################################################################################## */
/* 803F4DB0-803F4DDC 002C+00 s=1 e=0 z=0 None .bss rootlayer$3716 */
-static u8 rootlayer[44];
+static layer_class rootlayer;
/* 803F4DDC-803F4E58 0078+04 s=1 e=0 z=0 None .bss queue$3717 */
-static u8 queue[120 + 4 /* padding */];
+static node_list_class queue[10];
/* 800222B8-800222F4 003C+00 s=0 e=1 z=0 None .text fpcM_Init__Fv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_Init() {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_Init__Fv.s"
+void fpcM_Init(void) {
+ fpcLy_Create(&rootlayer, NULL, queue, 10);
+ fpcLn_Create();
}
-#pragma pop
/* 800222F4-80022348 0054+00 s=0 e=3 z=0 None .text fpcM_FastCreate__FsPFPv_iPvPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_FastCreate(s16 param_0, int (*)(void*), void* param_2, void* param_3) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_FastCreate__FsPFPv_iPvPv.s"
+base_process_class* fpcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3,
+ void* pData) {
+ return fpcFCtRq_Request(fpcLy_CurrentLayer(), pProcTypeID, (fstCreateFunc)param_2, param_3,
+ pData);
}
-#pragma pop
/* 80022348-8002236C 0024+00 s=0 e=1 z=0 None .text fpcM_IsPause__FPvUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_IsPause(void* param_0, u8 param_1) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_IsPause__FPvUc.s"
+s32 fpcM_IsPause(void* pProc, u8 param_2) {
+ return fpcPause_IsEnable((base_process_class*)pProc, param_2 & 0xFF);
}
-#pragma pop
/* 8002236C-80022390 0024+00 s=0 e=1 z=0 None .text fpcM_PauseEnable__FPvUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_PauseEnable(void* param_0, u8 param_1) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_PauseEnable__FPvUc.s"
+void fpcM_PauseEnable(void* pProc, u8 param_2) {
+ fpcPause_Enable((process_node_class*)pProc, param_2 & 0xFF);
}
-#pragma pop
/* 80022390-800223B4 0024+00 s=0 e=1 z=0 None .text fpcM_PauseDisable__FPvUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_PauseDisable(void* param_0, u8 param_1) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_PauseDisable__FPvUc.s"
+void fpcM_PauseDisable(void* pProc, u8 param_2) {
+ fpcPause_Disable((process_node_class*)pProc, param_2 & 0xFF);
}
-#pragma pop
/* 800223B4-80022428 0074+00 s=0 e=1 z=0 None .text fpcM_JudgeInLayer__FUiPFPvPv_PvPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcM_JudgeInLayer(unsigned int param_0, void* (*)(void*, void*), void* param_2) {
- nofralloc
-#include "asm/f_pc/f_pc_manager/fpcM_JudgeInLayer__FUiPFPvPv_PvPv.s"
+void* fpcM_JudgeInLayer(unsigned int pLayerID, fpcCtIt_JudgeFunc pFunc, void* pUserData) {
+ layer_class* layer = fpcLy_Layer(pLayerID);
+ if (layer != NULL) {
+ void* ret = fpcCtIt_JudgeInLayer(pLayerID, pFunc, pUserData);
+ if (ret == NULL) {
+ ret = fpcLyIt_Judge(layer, pFunc, pUserData);
+ }
+ return ret;
+ } else {
+ return NULL;
+ }
}
-#pragma pop