summaryrefslogtreecommitdiff
path: root/src/JSystem/JKernel/JKRMemArchive.cpp
diff options
context:
space:
mode:
authorJcw87 <Jcw87@users.noreply.github.com>2026-01-04 17:22:56 -0800
committerGitHub <noreply@github.com>2026-01-04 17:22:56 -0800
commitdeb7bead205cb35ff5f57ee3d466179defde44cb (patch)
tree22809a707a49f0253f05d45659cd142dacc0ca83 /src/JSystem/JKernel/JKRMemArchive.cpp
parent1400687731baedd9419dbf3972c50e3faab0f24e (diff)
JKernel debug (#3012)
Diffstat (limited to 'src/JSystem/JKernel/JKRMemArchive.cpp')
-rw-r--r--src/JSystem/JKernel/JKRMemArchive.cpp39
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;
}