mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-10 19:06:51 -04:00
OS threading, DVD I/O, Endianness fixes, ARAM emulation, GX vertex fix
Major changes: - Implement Big-Endian to Little-Endian byte-swapping for all RARC archive types (JKRCompArchive, JKRMemArchive, JKRDvdArchive, JKRAramArchive) - Implement DVD file I/O via DvdEmu (DVDOpen, DVDFastOpen, DVDReadPrio, DVDReadAsyncPrio, DVDConvertPathToEntrynum) - Fix YAZ0 decompression endianness in JKRDvdRipper, JKRDecomp, JKRAram, and JKRDvdAramRipper (use JKRDecompExpandSize instead of direct header read) - Emulate ARAM with 16MB malloc buffer and synchronous memcpy in ARQPostRequest instead of hardware DMA transfers that hang on PC - Add real OS threading implementation (OSContext, OSThread, OSMutex) using native Windows threads with side-table pattern for GC struct compatibility - Fix font endianness for JUTResFont and JUTCacheFont - Redirect GXVert.h to Aurora's PC implementation to prevent FIFO writes to the GameCube hardware address 0xCC008000 - Add Z-buffer texture format support (GX_TF_Z24X8, GX_TF_Z16, GX_TF_Z8) in Aurora's texture converter
This commit is contained in:
@@ -89,8 +89,10 @@ bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirectio
|
||||
mMountMode = UNKNOWN_MOUNT_MODE;
|
||||
}
|
||||
else {
|
||||
JKRSwapArcHeader(mArcHeader);
|
||||
JUT_ASSERT(438, mArcHeader->signature == 'RARC');
|
||||
mArcInfoBlock = (SArcDataInfo *)((u8 *)mArcHeader + mArcHeader->header_length);
|
||||
JKRSwapArchiveMemory(mArcInfoBlock);
|
||||
mNodes = (SDIDirEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->node_offset);
|
||||
mFiles = (SDIFileEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->file_entry_offset);
|
||||
mStringTable = (char *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset);
|
||||
@@ -111,8 +113,10 @@ bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirectio
|
||||
|
||||
bool JKRMemArchive::open(void* buffer, u32 bufferSize, JKRMemBreakFlag flag) {
|
||||
mArcHeader = (SArcHeader *)buffer;
|
||||
JKRSwapArcHeader(mArcHeader);
|
||||
JUT_ASSERT(491, mArcHeader->signature == 'RARC');
|
||||
mArcInfoBlock = (SArcDataInfo *)((u8 *)mArcHeader + mArcHeader->header_length);
|
||||
JKRSwapArchiveMemory(mArcInfoBlock);
|
||||
mNodes = (SDIDirEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->node_offset);
|
||||
mFiles = (SDIFileEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->file_entry_offset);
|
||||
mStringTable = (char *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset);
|
||||
|
||||
Reference in New Issue
Block a user