diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2023-08-06 06:12:26 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-05 21:12:26 -0600 |
| commit | dc985026fa6545bede38d841b7100eceb34e97e4 (patch) | |
| tree | 2cc4ea27185775862f14ca64a5e99d401046f40f /libs/JSystem/JUtility/JUTResource.cpp | |
| parent | 8b34c0210f686db96979c9a36aea45e6dda7169a (diff) | |
Jsystem work (#399)
* Almost match JASBasicInst
* JASDrumSet OK
* Some JAudio2 struct adjustment
* Match JKRHeap::callAllDisposer
* JAISe OK
* Fix setAutoDelete
* JAISound OK
* Match a few functions in linklist
* Few matches in d_a_e_ym
* JUTTexture OK
* Work on JUTGamePad
* Import JUTResource
* Work on JUTResFont::getFontCode
Diffstat (limited to 'libs/JSystem/JUtility/JUTResource.cpp')
| -rw-r--r-- | libs/JSystem/JUtility/JUTResource.cpp | 81 |
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 |
