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_load.cpp | |
| parent | 87bc0e711b4fb2f990f3c37ca681be1fc027d554 (diff) | |
ported over f_pc
Diffstat (limited to 'src/f_pc/f_pc_load.cpp')
| -rw-r--r-- | src/f_pc/f_pc_load.cpp | 76 |
1 files changed, 23 insertions, 53 deletions
diff --git a/src/f_pc/f_pc_load.cpp b/src/f_pc/f_pc_load.cpp index 954dbb9028..458cacaba3 100644 --- a/src/f_pc/f_pc_load.cpp +++ b/src/f_pc/f_pc_load.cpp @@ -6,73 +6,43 @@ #include "f_pc/f_pc_load.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "SSystem/SComponent/c_phase.h" -// -// Forward References: -// - -void fpcLd_Use(s16); -static void fpcLd_IsLoaded(s16); -void fpcLd_Free(s16); -void fpcLd_Load(s16); - -extern "C" void fpcLd_Use__Fs(); -extern "C" static void fpcLd_IsLoaded__Fs(); -extern "C" void fpcLd_Free__Fs(); -extern "C" void fpcLd_Load__Fs(); - -// -// External References: -// - -void cDyl_IsLinked(s16); -void cDyl_Unlink(s16); -void cDyl_LinkASync(s16); - -extern "C" void cDyl_IsLinked__Fs(); -extern "C" void cDyl_Unlink__Fs(); -extern "C" void cDyl_LinkASync__Fs(); +extern s32 cDyl_IsLinked(s16 procName); +extern s32 cDyl_Unlink(s16 procName); +extern s32 cDyl_LinkASync(s16 procName); // // Declarations: // /* 80021FB8-80022008 0050+00 s=0 e=1 z=0 None .text fpcLd_Use__Fs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fpcLd_Use(s16 param_0) { - nofralloc -#include "asm/f_pc/f_pc_load/fpcLd_Use__Fs.s" +BOOL fpcLd_Use(s16 procName) { + if (fpcLd_IsLoaded(procName) == TRUE && fpcLd_Load(procName) == cPhs_COMPLEATE_e) + return TRUE; + return FALSE; } -#pragma pop /* 80022008-8002202C 0024+00 s=1 e=0 z=0 None .text fpcLd_IsLoaded__Fs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm static void fpcLd_IsLoaded(s16 param_0) { - nofralloc -#include "asm/f_pc/f_pc_load/fpcLd_IsLoaded__Fs.s" +s32 fpcLd_IsLoaded(s16 procName) { + return cDyl_IsLinked((int)procName); } -#pragma pop /* 8002202C-80022050 0024+00 s=0 e=2 z=0 None .text fpcLd_Free__Fs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fpcLd_Free(s16 param_0) { - nofralloc -#include "asm/f_pc/f_pc_load/fpcLd_Free__Fs.s" +void fpcLd_Free(s16 procName) { + cDyl_Unlink((int)procName); } -#pragma pop /* 80022050-800220A0 0050+00 s=1 e=1 z=0 None .text fpcLd_Load__Fs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fpcLd_Load(s16 param_0) { - nofralloc -#include "asm/f_pc/f_pc_load/fpcLd_Load__Fs.s" +s32 fpcLd_Load(s16 procName) { + s32 phase = cDyl_LinkASync((int)procName); + + switch (phase) { + case cPhs_COMPLEATE_e: + return cPhs_COMPLEATE_e; + case 0: + return 0; + default: + return cPhs_ERROR_e; + } } -#pragma pop |
