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_pause.cpp | |
| parent | 87bc0e711b4fb2f990f3c37ca681be1fc027d554 (diff) | |
ported over f_pc
Diffstat (limited to 'src/f_pc/f_pc_pause.cpp')
| -rw-r--r-- | src/f_pc/f_pc_pause.cpp | 86 |
1 files changed, 33 insertions, 53 deletions
diff --git a/src/f_pc/f_pc_pause.cpp b/src/f_pc/f_pc_pause.cpp index 1761eb9ee6..f3c6345f62 100644 --- a/src/f_pc/f_pc_pause.cpp +++ b/src/f_pc/f_pc_pause.cpp @@ -6,78 +6,58 @@ #include "f_pc/f_pc_pause.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct layer_class {}; - -// -// Forward References: -// - -void fpcPause_IsEnable(void*, u8); -void fpcPause_Enable(void*, u8); -void fpcPause_Disable(void*, u8); -void fpcPause_Init(void*); - -extern "C" void fpcPause_IsEnable__FPvUc(); -extern "C" void fpcPause_Enable__FPvUc(); -extern "C" void fpcPause_Disable__FPvUc(); -extern "C" void fpcPause_Init__FPv(); - -// -// External References: -// - -void fpcBs_Is_JustOfType(int, int); -void fpcLyIt_OnlyHere(layer_class*, int (*)(void*, void*), void*); - -extern "C" void fpcBs_Is_JustOfType__Fii(); -extern "C" void fpcLyIt_OnlyHere__FP11layer_classPFPvPv_iPv(); -extern "C" extern u8 g_fpcNd_type[4 + 4 /* padding */]; +#include "f_pc/f_pc_layer_iter.h" // // Declarations: // /* 80023844-80023868 0024+00 s=0 e=3 z=0 None .text fpcPause_IsEnable__FPvUc */ +#ifdef NON_MATCHING +s32 fpcPause_IsEnable(void* pProcess, u8 flag) { + base_process_class* pProc = (base_process_class*)pProcess; + // extra addic/subfe? + return (pProc->mPauseFlag & flag) == flag; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void fpcPause_IsEnable(void* param_0, u8 param_1) { +asm s32 fpcPause_IsEnable(void* param_0, u8 param_1) { nofralloc #include "asm/f_pc/f_pc_pause/fpcPause_IsEnable__FPvUc.s" } #pragma pop +#endif /* 80023868-800238D4 006C+00 s=0 e=1 z=0 None .text fpcPause_Enable__FPvUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fpcPause_Enable(void* param_0, u8 param_1) { - nofralloc -#include "asm/f_pc/f_pc_pause/fpcPause_Enable__FPvUc.s" +s32 fpcPause_Enable(void* pProcess, u8 flag) { + base_process_class* pProc = (base_process_class*)pProcess; + pProc->mPauseFlag |= flag; + + if (fpcBs_Is_JustOfType(g_fpcNd_type, pProc->mSubType)) { + process_node_class* pNode = (process_node_class*)pProc; + fpcLyIt_OnlyHere(&pNode->mLayer, (fpcLyIt_OnlyHereFunc)fpcPause_Enable, + (void*)(flag & 0xFF)); + } + return 1; } -#pragma pop /* 800238D4-80023948 0074+00 s=0 e=1 z=0 None .text fpcPause_Disable__FPvUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fpcPause_Disable(void* param_0, u8 param_1) { - nofralloc -#include "asm/f_pc/f_pc_pause/fpcPause_Disable__FPvUc.s" +s32 fpcPause_Disable(void* pProcess, u8 flag) { + base_process_class* pProc = (base_process_class*)pProcess; + pProc->mPauseFlag &= (0xFF - flag) & 0xFF; + + if (fpcBs_Is_JustOfType(g_fpcNd_type, pProc->mSubType)) { + process_node_class* pNode = (process_node_class*)pProc; + fpcLyIt_OnlyHere(&pNode->mLayer, (fpcLyIt_OnlyHereFunc)fpcPause_Disable, (void*)flag); + } + + return 1; } -#pragma pop /* 80023948-80023954 000C+00 s=0 e=1 z=0 None .text fpcPause_Init__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fpcPause_Init(void* param_0) { - nofralloc -#include "asm/f_pc/f_pc_pause/fpcPause_Init__FPv.s" +void fpcPause_Init(void* pProcess) { + base_process_class* pProc = (base_process_class*)pProcess; + pProc->mPauseFlag = 0; } -#pragma pop |
