diff options
| author | lepelog <lepelog@users.noreply.github.com> | 2021-04-01 12:06:29 +0200 |
|---|---|---|
| committer | lepelog <lepelog@users.noreply.github.com> | 2021-04-01 12:06:29 +0200 |
| commit | 53c6aa6c8b50d95e89f64db70d0cc08fb4111a93 (patch) | |
| tree | 20ce5067caef7892c2c9bb043b10918c15dd7868 /src/f_pc/f_pc_manager.cpp | |
| parent | 87bc0e711b4fb2f990f3c37ca681be1fc027d554 (diff) | |
ported over f_pc
Diffstat (limited to 'src/f_pc/f_pc_manager.cpp')
| -rw-r--r-- | src/f_pc/f_pc_manager.cpp | 182 |
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 |
