JKRDvdArchive, JKRAramArchive match

This commit is contained in:
LagoLunatic
2023-10-30 02:47:56 -04:00
parent 52d40a9ce7
commit 5c69e690b8
4 changed files with 21 additions and 24 deletions
+2 -2
View File
@@ -781,8 +781,8 @@ config.libs = [
Object(Matching, "JSystem/JKernel/JKRArchivePub.cpp"),
Object(Matching, "JSystem/JKernel/JKRArchivePri.cpp"),
Object(Matching, "JSystem/JKernel/JKRMemArchive.cpp"),
Object(NonMatching, "JSystem/JKernel/JKRAramArchive.cpp"),
Object(NonMatching, "JSystem/JKernel/JKRDvdArchive.cpp"),
Object(Matching, "JSystem/JKernel/JKRAramArchive.cpp"),
Object(Matching, "JSystem/JKernel/JKRDvdArchive.cpp"),
Object(Matching, "JSystem/JKernel/JKRCompArchive.cpp"),
Object(Matching, "JSystem/JKernel/JKRFile.cpp"),
Object(Matching, "JSystem/JKernel/JKRDvdFile.cpp"),
+2 -2
View File
@@ -5,7 +5,7 @@
#include "dolphin/types.h"
class JKRAramBlock;
class JKRDvdFile;
class JKRFile;
class JKRAramArchive : public JKRArchive {
public:
@@ -28,7 +28,7 @@ private:
/* 0x00 */ // vtable
/* 0x04 */ // JKRArchive
/* 0x64 */ JKRAramBlock* mBlock;
/* 0x68 */ JKRDvdFile* mDvdFile;
/* 0x68 */ JKRFile* mDvdFile;
}; // Size = 0x6C
#endif /* JKRARAMARCHIVE_H */
+9 -11
View File
@@ -147,7 +147,7 @@ cleanup:
JKRFreeToSysHeap(mem);
}
if (mMountMode == 0) {
OSReport(":::[%s: %d] Cannot alloc memory\n", __FILE__, 400);
OSReport(":::[%s: %d] Cannot alloc memory\n", __FILE__, VERSION_SELECT(407, 400, 400));
if (mDvdFile != NULL) {
delete mDvdFile;
}
@@ -158,7 +158,7 @@ cleanup:
/* 802BA4EC-802BA640 .text fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl */
void* JKRAramArchive::fetchResource(SDIFileEntry* pEntry, u32* pOutSize) {
JUT_ASSERT(427, isMounted());
JUT_ASSERT(VERSION_SELECT(434, 427, 427), isMounted());
u32 outSize;
u8* outBuf;
if (pOutSize == NULL) {
@@ -193,16 +193,14 @@ void* JKRAramArchive::fetchResource(SDIFileEntry* pEntry, u32* pOutSize) {
/* 802BA640-802BA788 .text fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl */
void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* pEntry, u32* resourceSize) {
/* Nonmatching */
JUT_ASSERT(500, isMounted());
JUT_ASSERT(VERSION_SELECT(514, 500, 500), isMounted());
u32 size = pEntry->data_size;
if (size > bufferSize) {
size = bufferSize;
}
JKRCompression compression = JKRConvertAttrToCompressionType(pEntry->getFlags());
if (pEntry->data == NULL) {
// can't get it to store the result in r28
bufferSize &= ~(0x20 - 1);
bufferSize = (s32)ALIGN_PREV(bufferSize, 0x20);
size = JKRAramArchive::fetchResource_subroutine(pEntry->data_offset + mBlock->getAddress(),
size, (u8*)buffer, bufferSize, compression);
} else {
@@ -225,7 +223,7 @@ void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry*
/* 802BA788-802BA894 .text fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli */
u32 JKRAramArchive::fetchResource_subroutine(u32 srcAram, u32 srcLength, u8* dst, u32 dstLength, int compression) {
JUT_ASSERT(613, ( srcAram & 0x1f ) == 0);
JUT_ASSERT(VERSION_SELECT(627, 613, 613), ( srcAram & 0x1f ) == 0);
u32 outLen;
u32 srcSize = ALIGN_NEXT(srcLength, 0x20);
u32 dstSize = ALIGN_PREV(dstLength, 0x20);
@@ -242,7 +240,7 @@ u32 JKRAramArchive::fetchResource_subroutine(u32 srcAram, u32 srcLength, u8* dst
JKRAramToMainRam(srcAram, dst, srcSize, EXPAND_SWITCH_UNKNOWN1, dstSize, NULL, -1, &outLen);
return outLen;
default:
OSPanic(__FILE__, 640, ":::??? bad sequence\n");
OSPanic(__FILE__, VERSION_SELECT(654, 640, 640), ":::??? bad sequence\n");
return 0;
}
}
@@ -256,7 +254,7 @@ u32 JKRAramArchive::fetchResource_subroutine(u32 entryNum, u32 length, JKRHeap*
case COMPRESSION_NONE:
{
buffer = (u8*)(JKRAllocFromHeap(pHeap, alignedLen, 0x20));
JUT_ASSERT(662, buffer != 0);
JUT_ASSERT(VERSION_SELECT(676, 662, 662), buffer != 0);
JKRAramToMainRam(entryNum, buffer, alignedLen, EXPAND_SWITCH_UNKNOWN0, alignedLen, NULL, -1, NULL);
*out = buffer;
return length;
@@ -269,14 +267,14 @@ u32 JKRAramArchive::fetchResource_subroutine(u32 entryNum, u32 length, JKRHeap*
JKRAramToMainRam(entryNum, alignHeader, sizeof(SArcHeader), EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL);
u32 decompressedLen = ALIGN_NEXT(JKRDecompExpandSize(alignHeader), sizeof(SArcHeader));
buffer = (u8*)(JKRAllocFromHeap(pHeap, decompressedLen, sizeof(SArcHeader)));
JUT_ASSERT(688, buffer);
JUT_ASSERT(VERSION_SELECT(709, 688, 688), buffer);
u32 readLen;
JKRAramToMainRam(entryNum, buffer, alignedLen, EXPAND_SWITCH_UNKNOWN1, decompressedLen, pHeap, -1, &readLen);
*out = buffer;
return readLen;
}
default:
OSPanic(__FILE__, 698, ":::??? bad sequence\n");
OSPanic(__FILE__, VERSION_SELECT(719, 698, 698), ":::??? bad sequence\n");
return 0;
}
}
+8 -9
View File
@@ -180,14 +180,13 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) {
/* 802BB17C-802BB2BC .text fetchResource__13JKRDvdArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl */
void* JKRDvdArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* fileEntry, u32* returnSize) {
/* Nonmatching */
JUT_ASSERT(489, isMounted());
u32 expandSize;
u32 size = fileEntry->data_size;
JKRCompression fileCompression = JKRConvertAttrToCompressionType(fileEntry->getAttr());
if (!fileEntry->data) {
bufferSize = ALIGN_PREV(bufferSize, 0x20);
bufferSize = (s32)ALIGN_PREV(bufferSize, 0x20);
size = fetchResource_subroutine(mEntryNum, mDataOffset + fileEntry->data_offset,
fileEntry->data_size, (u8*)buffer, bufferSize, fileCompression,
mCompression);
@@ -261,12 +260,12 @@ u32 JKRDvdArchive::fetchResource_subroutine(s32 entryNum, u32 offset, u32 size,
}
case COMPRESSION_YAY0: {
OSPanic(__FILE__, 603, "Sorry, not prepared for SZP archive.\n");
OSPanic(__FILE__, VERSION_SELECT(610, 603, 603), "Sorry, not prepared for SZP archive.\n");
return 0;
}
default: {
OSPanic(__FILE__, 609, ":::??? bad sequence\n");
OSPanic(__FILE__, VERSION_SELECT(616, 609, 609), ":::??? bad sequence\n");
return 0;
}
}
@@ -282,7 +281,7 @@ u32 JKRDvdArchive::fetchResource_subroutine(s32 entryNum, u32 offset, u32 size,
switch (fileCompression) {
case COMPRESSION_NONE:
buffer = (u8*)JKRAllocFromHeap(heap, alignedSize, sizeof(SArcHeader));
JUT_ASSERT(631, buffer != 0);
JUT_ASSERT(VERSION_SELECT(638, 631, 631), buffer != 0);
JKRDvdToMainRam(entryNum, buffer, EXPAND_SWITCH_UNKNOWN0, alignedSize, NULL,
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, offset, NULL);
@@ -301,7 +300,7 @@ u32 JKRDvdArchive::fetchResource_subroutine(s32 entryNum, u32 offset, u32 size,
alignedSize = JKRDecompExpandSize(arcHeader);
buffer = (u8*)JKRAllocFromHeap(heap, alignedSize, sizeof(SArcHeader));
JUT_ASSERT(660, buffer);
JUT_ASSERT(VERSION_SELECT(674, 660, 660), buffer);
JKRDvdToMainRam(entryNum, buffer, EXPAND_SWITCH_UNKNOWN1, alignedSize, NULL,
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, offset, NULL);
@@ -312,7 +311,7 @@ u32 JKRDvdArchive::fetchResource_subroutine(s32 entryNum, u32 offset, u32 size,
case COMPRESSION_YAZ0: {
buffer = (u8*)JKRAllocFromHeap(heap, alignedSize, sizeof(SArcHeader));
JUT_ASSERT(672, buffer);
JUT_ASSERT(VERSION_SELECT(686, 672, 672), buffer);
JKRDvdToMainRam(entryNum, buffer, EXPAND_SWITCH_UNKNOWN1, size, NULL,
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, offset, NULL);
@@ -322,12 +321,12 @@ u32 JKRDvdArchive::fetchResource_subroutine(s32 entryNum, u32 offset, u32 size,
}
case COMPRESSION_YAY0: {
OSPanic(__FILE__, 683, "Sorry, not prepared for SZP archive.\n");
OSPanic(__FILE__, VERSION_SELECT(697, 683, 683), "Sorry, not prepared for SZP archive.\n");
return 0;
}
default: {
OSPanic(__FILE__, 688, ":::??? bad sequence\n");
OSPanic(__FILE__, VERSION_SELECT(702, 688, 688), ":::??? bad sequence\n");
return 0;
}
}