summaryrefslogtreecommitdiff
path: root/libs/JSystem/JUtility/JUTResource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/JSystem/JUtility/JUTResource.cpp')
-rw-r--r--libs/JSystem/JUtility/JUTResource.cpp81
1 files changed, 45 insertions, 36 deletions
diff --git a/libs/JSystem/JUtility/JUTResource.cpp b/libs/JSystem/JUtility/JUTResource.cpp
index 8748ee49c6..b8ab260551 100644
--- a/libs/JSystem/JUtility/JUTResource.cpp
+++ b/libs/JSystem/JUtility/JUTResource.cpp
@@ -5,7 +5,9 @@
#include "JSystem/JUtility/JUTResource.h"
#include "JSystem/JKernel/JKRFileLoader.h"
-#include "dol2asm.h"
+#include "JSystem/JKernel/JKRArchive.h"
+#include "JSystem/JSupport/JSUInputStream.h"
+#include "MSL_C/MSL_Common/Src/string.h"
#include "dolphin/types.h"
//
@@ -16,57 +18,64 @@
// Forward References:
//
-extern "C" void getResource__15JUTResReferenceFP14JSUInputStreamUlP10JKRArchive();
-extern "C" void getResource__15JUTResReferenceFPCvUlP10JKRArchive();
-extern "C" void getResource__15JUTResReferenceFUlP10JKRArchive();
-
//
// External References:
//
-SECTION_INIT void memcpy();
-extern "C" void getGlbResource__13JKRFileLoaderFPCc();
-extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader();
-extern "C" void getGlbResource__10JKRArchiveFUlPCcP10JKRArchive();
-extern "C" void read__14JSUInputStreamFPvl();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-
//
// Declarations:
//
/* 802DE078-802DE120 2D89B8 00A8+00 0/0 1/1 0/0 .text
* getResource__15JUTResReferenceFP14JSUInputStreamUlP10JKRArchive */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void* JUTResReference::getResource(JSUInputStream* param_0, u32 param_1, JKRArchive* param_2) {
- nofralloc
-#include "asm/JSystem/JUtility/JUTResource/getResource__15JUTResReferenceFP14JSUInputStreamUlP10JKRArchive.s"
+void *JUTResReference::getResource(JSUInputStream *stream, u32 resType, JKRArchive *archive) {
+ stream->read(&mType, 1);
+ stream->read(&mNameLength, 1);
+ stream->read(&mName, mNameLength);
+
+ if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4)
+ {
+ mName[mNameLength] = 0;
+ }
+
+ return getResource(resType, archive);
}
-#pragma pop
/* 802DE120-802DE1BC 2D8A60 009C+00 0/0 2/2 0/0 .text
* getResource__15JUTResReferenceFPCvUlP10JKRArchive */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void* JUTResReference::getResource(void const* param_0, u32 param_1, JKRArchive* param_2) {
- nofralloc
-#include "asm/JSystem/JUtility/JUTResource/getResource__15JUTResReferenceFPCvUlP10JKRArchive.s"
+
+void *JUTResReference::getResource(const void *data, u32 resType, JKRArchive *archive) {
+ mType = *(u8*)data;
+ mNameLength = *((u8*)data + 1);
+
+ if (mNameLength != 0) {
+ memcpy(&mName, &((u8 *)data)[2], mNameLength);
+ }
+
+ if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) {
+ mName[mNameLength] = 0;
+ }
+
+ return getResource(resType, archive);
}
-#pragma pop
/* 802DE1BC-802DE234 2D8AFC 0078+00 2/2 0/0 0/0 .text
* getResource__15JUTResReferenceFUlP10JKRArchive */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void* JUTResReference::getResource(u32 param_0, JKRArchive* param_1) {
- nofralloc
-#include "asm/JSystem/JUtility/JUTResource/getResource__15JUTResReferenceFUlP10JKRArchive.s"
+void *JUTResReference::getResource(u32 resType, JKRArchive *archive) {
+ void *res = NULL;
+ switch (mType) {
+ case RESTYPE_Unk1:
+ break;
+ case RESTYPE_Unk2:
+ res = JKRArchive::getGlbResource(resType, mName, archive);
+ break;
+ case RESTYPE_Unk3:
+ res = JKRFileLoader::getGlbResource(mName, archive);
+ break;
+ case RESTYPE_Unk4:
+ res = JKRFileLoader::getGlbResource(mName);
+ break;
+ }
+
+ return res;
}
-#pragma pop