MCPcopy Create free account
hub / github.com/doldecomp/mkdd / open

Method open

libs/JSystem/JKernel/JKRMemArchive.cpp:62–121  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60#endif
61
62bool JKRMemArchive::open(s32 entryNum, JKRArchive::EMountDirection mountDirection)
63{
64 mArcHeader = nullptr;
65 mArcInfoBlock = nullptr;
66 mArchiveData = nullptr;
67 mDirectories = nullptr;
68 mFileEntries = nullptr;
69 mStrTable = nullptr;
70 mIsOpen = false;
71 mMountDirection = mountDirection;
72
73 if (mMountDirection == JKRArchive::MOUNT_DIRECTION_HEAD)
74 {
75 u32 loadedSize;
76 mArcHeader = (SArcHeader *)JKRDvdRipper::loadToMainRAM(
77 entryNum, nullptr, EXPAND_SWITCH_DECOMPRESS, 0, mHeap, JKRDvdRipper::ALLOC_DIR_TOP,
78 0, (int *)&mCompression, &loadedSize);
79 if (mArcHeader)
80 {
81 DCInvalidateRange(mArcHeader, loadedSize);
82 }
83 }
84 else
85 {
86 u32 loadedSize;
87 mArcHeader = (SArcHeader *)JKRDvdRipper::loadToMainRAM(
88 entryNum, nullptr, EXPAND_SWITCH_DECOMPRESS, 0, mHeap,
89 JKRDvdRipper::ALLOC_DIR_BOTTOM, 0, (int *)&mCompression, &loadedSize);
90 if (mArcHeader)
91 {
92 DCInvalidateRange(mArcHeader, loadedSize);
93 }
94 }
95
96 if (!mArcHeader)
97 {
98 mMountMode = UNKNOWN_MOUNT_MODE;
99 }
100 else
101 {
102#line 438
103 JUT_ASSERT(mArcHeader->signature == 'RARC');
104 mArcInfoBlock = (SArcDataInfo *)((u8 *)mArcHeader + mArcHeader->header_length);
105 mDirectories = (SDIDirEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->node_offset);
106 mFileEntries = (SDIFileEntry *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->file_entry_offset);
107 mStrTable = (char *)((u8 *)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset);
108
109 mArchiveData =
110 (u8 *)((u32)mArcHeader + mArcHeader->header_length + mArcHeader->file_data_offset);
111 mIsOpen = true;
112 }
113#if DEBUG
114 // OS Assert?
115 if (mMountMode == UNKNOWN_MOUNT_MODE)
116 {
117 OSReport(":::Cannot alloc memory [%s][%d]\n", __FILE__, 460);
118 }
119#endif

Callers

nothing calls this directly

Calls 2

loadToMainRAMFunction · 0.85
OSReportFunction · 0.85

Tested by

no test coverage detected