diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2026-01-04 17:22:56 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-04 17:22:56 -0800 |
| commit | deb7bead205cb35ff5f57ee3d466179defde44cb (patch) | |
| tree | 22809a707a49f0253f05d45659cd142dacc0ca83 /src/JSystem/JKernel/JKRMemArchive.cpp | |
| parent | 1400687731baedd9419dbf3972c50e3faab0f24e (diff) | |
JKernel debug (#3012)
Diffstat (limited to 'src/JSystem/JKernel/JKRMemArchive.cpp')
| -rw-r--r-- | src/JSystem/JKernel/JKRMemArchive.cpp | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/JSystem/JKernel/JKRMemArchive.cpp b/src/JSystem/JKernel/JKRMemArchive.cpp index 4f75164161..7f2f587774 100644 --- a/src/JSystem/JKernel/JKRMemArchive.cpp +++ b/src/JSystem/JKernel/JKRMemArchive.cpp @@ -20,7 +20,7 @@ JKRMemArchive::JKRMemArchive(s32 entryNum, JKRArchive::EMountDirection mountDire mVolumeType = 'RARC'; mVolumeName = mStringTable + mNodes->name_offset; - getVolumeList().prepend(&mFileLoaderLink); + sVolumeList.prepend(&mFileLoaderLink); mIsMounted = true; } @@ -34,7 +34,7 @@ JKRMemArchive::JKRMemArchive(void* buffer, u32 bufferSize, JKRMemBreakFlag param mVolumeType = 'RARC'; mVolumeName = mStringTable + mNodes->name_offset; - getVolumeList().prepend(&mFileLoaderLink); + sVolumeList.prepend(&mFileLoaderLink); mIsMounted = true; } @@ -45,11 +45,17 @@ JKRMemArchive::~JKRMemArchive() { JKRFreeToHeap(mHeap, mArcHeader); } - getVolumeList().remove(&mFileLoaderLink); + sVolumeList.remove(&mFileLoaderLink); mIsMounted = false; } } +static void dummy() { + OS_REPORT(__FILE__); + OS_REPORT("isMounted()"); + OS_REPORT("mMountCount == 1"); +} + bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirection) { mArcHeader = NULL; mArcInfoBlock = NULL; @@ -83,7 +89,7 @@ bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirectio mMountMode = UNKNOWN_MOUNT_MODE; } else { - JUT_ASSERT(438, mArcHeader->signature =='RARC'); + JUT_ASSERT(438, mArcHeader->signature == 'RARC'); mArcInfoBlock = (SArcDataInfo *)((u8 *)mArcHeader + mArcHeader->header_length); mNodes = (SDIDirEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->node_offset); mFiles = (SDIFileEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->file_entry_offset); @@ -105,7 +111,7 @@ bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirectio bool JKRMemArchive::open(void* buffer, u32 bufferSize, JKRMemBreakFlag flag) { mArcHeader = (SArcHeader *)buffer; - JUT_ASSERT(491, mArcHeader->signature =='RARC'); + JUT_ASSERT(491, mArcHeader->signature == 'RARC'); mArcInfoBlock = (SArcDataInfo *)((u8 *)mArcHeader + mArcHeader->header_length); mNodes = (SDIDirEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->node_offset); mFiles = (SDIFileEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->file_entry_offset); @@ -141,10 +147,10 @@ void* JKRMemArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* f if (fileEntry->data != NULL) { memcpy(buffer, fileEntry->data, srcLength); } else { - JKRCompression compression = JKRConvertAttrToCompressionType(fileEntry->getAttr()); - void* data = mArchiveData + fileEntry->data_offset; + u8 flags = fileEntry->type_flags_and_name_offset >> 24; + JKRCompression compression = JKRConvertAttrToCompressionType(flags); srcLength = - fetchResource_subroutine((u8*)data, srcLength, (u8*)buffer, bufferSize, compression); + fetchResource_subroutine(mArchiveData + fileEntry->data_offset, srcLength, (u8*)buffer, bufferSize, compression); } if (resourceSize) { @@ -170,6 +176,7 @@ void JKRMemArchive::removeResourceAll(void) { fileEntry->data = NULL; } } + fileEntry++; } bool JKRMemArchive::removeResource(void* resource) { @@ -197,15 +204,12 @@ u32 JKRMemArchive::fetchResource_subroutine(u8* src, u32 srcLength, u8* dst, u32 case COMPRESSION_YAY0: case COMPRESSION_YAZ0: { u32 expendedSize = JKRDecompExpandSize(src); - #if VERSION != VERSION_SHIELD_DEBUG - srcLength = expendedSize; - #endif if (expendedSize > dstLength) { - srcLength = dstLength; + expendedSize = dstLength; } - JKRDecompress(src, dst, srcLength, 0); - return srcLength; + JKRDecompress(src, dst, expendedSize, 0); + return expendedSize; } default: { @@ -221,9 +225,10 @@ u32 JKRMemArchive::getExpandedResSize(const void* resource) const { if (fileEntry == NULL) return -1; - if (fileEntry->isCompressed() == false) { + u8 flags = fileEntry->type_flags_and_name_offset >> 24; + if ((flags & 4) == false) { return getResSize(resource); - } else { - return JKRDecompExpandSize((u8*)resource); } + u32 expandSize = JKRDecompExpandSize((u8*)resource); + return expandSize; } |
