summaryrefslogtreecommitdiff
path: root/libs/JSystem/JKernel/JKRFile.cpp
diff options
context:
space:
mode:
authorlepelog <lepelog@users.noreply.github.com>2021-05-03 02:03:24 +0200
committerGitHub <noreply@github.com>2021-05-02 20:03:24 -0400
commit8fd9f2ab5d5ba4d3fe983c77795d69e22c9fa610 (patch)
tree01e9323e07688462a8bec633ed50006ddeaa478f /libs/JSystem/JKernel/JKRFile.cpp
parent3b7364d481f9951ae227017eca997377efd0d820 (diff)
Copy JKernel (#126)
* start JSystem * JKRAram and JUTGamePad * started heap and thread * more JKernel * mostly finished JKernel * delete unused asm * JKRFileFinder * delete unused asm and match findNextFile * format * fix mtx_vec
Diffstat (limited to 'libs/JSystem/JKernel/JKRFile.cpp')
-rw-r--r--libs/JSystem/JKernel/JKRFile.cpp38
1 files changed, 9 insertions, 29 deletions
diff --git a/libs/JSystem/JKernel/JKRFile.cpp b/libs/JSystem/JKernel/JKRFile.cpp
index 9b7dfec632..5b492c7fef 100644
--- a/libs/JSystem/JKernel/JKRFile.cpp
+++ b/libs/JSystem/JKernel/JKRFile.cpp
@@ -6,39 +6,19 @@
#include "JSystem/JKernel/JKRFile.h"
#include "dol2asm.h"
#include "dolphin/types.h"
-
-//
-// Types:
-//
-
-struct JKRFile {
- /* 802D9518 */ void read(void*, s32, s32);
-};
-
-//
-// Forward References:
-//
-
-extern "C" void read__7JKRFileFPvll();
-
-//
-// External References:
-//
-
-extern "C" void VIWaitForRetrace();
-extern "C" void _savegpr_28();
-extern "C" void _restgpr_28();
+#include "dolphin/vi/vi.h"
//
// Declarations:
//
/* 802D9518-802D9584 2D3E58 006C+00 0/0 2/2 0/0 .text read__7JKRFileFPvll */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JKRFile::read(void* param_0, s32 param_1, s32 param_2) {
- nofralloc
-#include "asm/JSystem/JKernel/JKRFile/read__7JKRFileFPvll.s"
+s32 JKRFile::read(void* data, s32 size, long offset) {
+ while (true) {
+ s32 result = readData(data, size, offset);
+ if (size != result)
+ VIWaitForRetrace();
+ else
+ return result;
+ }
}
-#pragma pop