Files
tp/libs/JSystem/JAudio2/JASResArcLoader.cpp
T

73 lines
2.3 KiB
C++
Raw Normal View History

/**
* JASResArcLoader.cpp
* JAS - Resource Archive Loader
*/
2021-03-28 22:49:05 +02:00
2021-04-01 02:07:58 +02:00
#include "JSystem/JAudio2/JASResArcLoader.h"
#include "JSystem/JAudio2/JASDvdThread.h"
2023-05-12 12:10:14 -07:00
#include "JSystem/JAudio2/JASTaskThread.h"
#include "JSystem/JKernel/JKRArchive.h"
2021-03-28 22:49:05 +02:00
2021-04-06 18:00:35 +02:00
/* 80290BD0-80290C04 28B510 0034+00 0/0 2/2 0/0 .text
2021-04-01 02:07:58 +02:00
* getResSize__15JASResArcLoaderFPC10JKRArchiveUs */
size_t JASResArcLoader::getResSize(JKRArchive const* i_archiveP, u16 i_resourceID) {
JKRArchive::SDIFileEntry* file = i_archiveP->findIdResource(i_resourceID);
if (file == 0) {
return 0;
}
return file->data_size;
2021-03-28 22:49:05 +02:00
}
2021-04-06 18:00:35 +02:00
/* 80290C04-80290C7C 28B544 0078+00 0/0 1/1 0/0 .text
2021-04-01 02:07:58 +02:00
* getResMaxSize__15JASResArcLoaderFPC10JKRArchive */
size_t JASResArcLoader::getResMaxSize(JKRArchive const* i_archiveP) {
u32 maxSize, index;
u32 fileEntries = i_archiveP->countFile();
for (maxSize = 0, index = 0; index < fileEntries; index++) {
JKRArchive::SDIFileEntry* file = i_archiveP->findIdxResource(index);
if (file) {
if (maxSize < file->data_size) {
maxSize = file->data_size;
}
}
}
return maxSize;
2021-03-28 22:49:05 +02:00
}
2021-04-06 18:00:35 +02:00
/* 80290C7C-80290D18 28B5BC 009C+00 1/1 0/0 0/0 .text loadResourceCallback__15JASResArcLoaderFPv
2021-04-01 02:07:58 +02:00
*/
static void JASResArcLoader::loadResourceCallback(void* args) {
CallbackArgs* castedArgs = static_cast<CallbackArgs*>(args);
u32 readResult = castedArgs->mArchive->readResource(castedArgs->mBuffer, castedArgs->mBufferSize, castedArgs->mID);
if (castedArgs->mCallback) {
castedArgs->mCallback(readResult, castedArgs->mCallbackArg);
}
if (readResult == 0) {
if (castedArgs->mQueue) {
OSSendMessage(castedArgs->mQueue, (void*)RESARCMSG_Error, OS_MESSAGE_BLOCK);
}
} else {
if (castedArgs->mQueue) {
OSSendMessage(castedArgs->mQueue, (void*)RESARCMSG_Success, OS_MESSAGE_BLOCK);
}
}
2021-03-28 22:49:05 +02:00
}
2021-04-06 18:00:35 +02:00
/* 80290D18-80290D74 28B658 005C+00 0/0 1/1 0/0 .text
2021-04-01 02:07:58 +02:00
* loadResourceAsync__15JASResArcLoaderFP10JKRArchiveUsPUcUlPFUlUl_vUl */
int JASResArcLoader::loadResourceAsync(JKRArchive* archive, u16 id, u8* buffer, u32 size, LoadCallback callback, u32 cbArg)
{
CallbackArgs args(id, buffer, size, archive);
args.mCallback = callback;
args.mCallbackArg = cbArg;
return JASDvd::getThreadPointer()->sendCmdMsg(&loadResourceCallback, (void*)&args, sizeof(CallbackArgs));
2021-03-28 22:49:05 +02:00
}