JKernel debug (#3012)

This commit is contained in:
Jcw87
2026-01-04 17:22:56 -08:00
committed by GitHub
parent 1400687731
commit deb7bead20
51 changed files with 1169 additions and 971 deletions
+19 -17
View File
@@ -19,7 +19,7 @@ JKRDvdArchive::JKRDvdArchive(s32 entryNum, JKRArchive::EMountDirection mountDire
mVolumeType = 'RARC';
mVolumeName = mStringTable + mNodes->name_offset;
getVolumeList().prepend(&mFileLoaderLink);
sVolumeList.prepend(&mFileLoaderLink);
mIsMounted = true;
}
@@ -28,10 +28,11 @@ JKRDvdArchive::~JKRDvdArchive() {
if (mArcInfoBlock) {
SDIFileEntry* fileEntry = mFiles;
int i = 0;
for (; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) {
for (; i < mArcInfoBlock->num_file_entries; i++) {
if (fileEntry->data) {
JKRFreeToHeap(mHeap, fileEntry->data);
}
fileEntry++;
}
JKRFreeToHeap(mHeap, mArcInfoBlock);
@@ -47,7 +48,7 @@ JKRDvdArchive::~JKRDvdArchive() {
delete mDvdFile;
}
getVolumeList().remove(&mFileLoaderLink);
sVolumeList.remove(&mFileLoaderLink);
mIsMounted = false;
}
}
@@ -65,7 +66,8 @@ bool JKRDvdArchive::open(s32 entryNum) {
return false;
}
SArcHeader* arcHeader = (SArcHeader*)JKRAllocFromSysHeap(sizeof(SArcHeader), 0x20);
SArcHeader* arcHeader = NULL;
arcHeader = (SArcHeader*)JKRAllocFromSysHeap(sizeof(SArcHeader), 0x20);
if (!arcHeader) {
mMountMode = UNKNOWN_MOUNT_MODE;
goto cleanup;
@@ -98,9 +100,10 @@ bool JKRDvdArchive::open(s32 entryNum) {
useCompression = 0;
SDIFileEntry* fileEntry;
fileEntry = mFiles;
for (u32 i = 0; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) {
if (fileEntry->isUnknownFlag1()) {
useCompression |= fileEntry->getCompressFlag();
for (u32 i = 0; i < mArcInfoBlock->num_file_entries; i++, fileEntry++) {
u8 flags = fileEntry->type_flags_and_name_offset >> 24;
if (flags & 1) {
useCompression |= u8(flags & 4);
}
}
@@ -144,7 +147,7 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) {
returnSize = &tempReturnSize;
}
JKRCompression fileCompression = JKRConvertAttrToCompressionType(fileEntry->getAttr());
JKRCompression fileCompression = JKRConvertAttrToCompressionType(u8(fileEntry->type_flags_and_name_offset >> 24));
if (!fileEntry->data) {
u8* resourcePtr;
u32 resourceSize = fetchResource_subroutine(
@@ -161,8 +164,7 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) {
}
} else {
if (fileCompression == COMPRESSION_YAZ0) {
u32 resourceSize = getExpandSize(fileEntry);
*returnSize = resourceSize;
*returnSize = getExpandSize(fileEntry);
} else {
*returnSize = fileEntry->data_size;
}
@@ -174,9 +176,8 @@ void* JKRDvdArchive::fetchResource(SDIFileEntry* fileEntry, u32* returnSize) {
void* JKRDvdArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* fileEntry,
u32* returnSize) {
JUT_ASSERT(504, isMounted());
u32 expandSize;
u32 size = fileEntry->data_size;
JKRCompression fileCompression = JKRConvertAttrToCompressionType(fileEntry->getAttr());
JKRCompression fileCompression = JKRConvertAttrToCompressionType(u8(fileEntry->type_flags_and_name_offset >> 24));
if (!fileEntry->data) {
bufferSize = (s32)ALIGN_PREV(bufferSize, 0x20);
@@ -185,7 +186,7 @@ void* JKRDvdArchive::fetchResource(void* buffer, u32 bufferSize, SDIFileEntry* f
mCompression);
} else {
if (fileCompression == COMPRESSION_YAZ0) {
expandSize = getExpandSize(fileEntry);
u32 expandSize = getExpandSize(fileEntry);
if (expandSize) {
size = expandSize;
}
@@ -343,7 +344,8 @@ u32 JKRDvdArchive::getExpandedResSize(const void* resource) const {
return -1;
}
if (!fileEntry->isCompressed()) {
u8 flags = fileEntry->type_flags_and_name_offset >> 24;
if ((flags & 4) == 0) {
return getResSize(resource);
}
@@ -361,9 +363,9 @@ u32 JKRDvdArchive::getExpandedResSize(const void* resource) const {
mDataOffset + fileEntry->data_offset, NULL, NULL);
DCInvalidateRange(arcHeader, sizeof(SArcHeader));
resourceSize = JKRDecompExpandSize(arcHeader);
u32 expandSize = JKRDecompExpandSize(arcHeader);
// ???
((JKRDvdArchive*)this)->setExpandSize(fileEntry, resourceSize);
((JKRDvdArchive*)this)->setExpandSize(fileEntry, expandSize);
return resourceSize;
return expandSize;
}