summaryrefslogtreecommitdiff
path: root/src/f_pc/f_pc_load.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_load.cpp
parent87bc0e711b4fb2f990f3c37ca681be1fc027d554 (diff)
ported over f_pc
Diffstat (limited to 'src/f_pc/f_pc_load.cpp')
-rw-r--r--src/f_pc/f_pc_load.cpp76
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