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

Method fetchResource_subroutine

libs/JSystem/JKernel/JKRDvdArchive.cpp:217–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

215}
216
217u32 JKRDvdArchive::fetchResource_subroutine(long entryNum, u32 offset, u32 size, u8 *data, u32 expandSize, int fileCompression, int archiveCompression) {
218 u32 prevAlignedSize, alignedSize;
219
220 alignedSize = ALIGN_NEXT(size, 32);
221 prevAlignedSize = ALIGN_PREV(expandSize, 32);
222 switch (archiveCompression)
223 {
224 case JKRCOMPRESSION_NONE: {
225 switch (fileCompression)
226 {
227 case JKRCOMPRESSION_NONE:
228
229 if (alignedSize > prevAlignedSize)
230 {
231 alignedSize = prevAlignedSize;
232 }
233 JKRDvdToMainRam(entryNum, data, EXPAND_SWITCH_DEFAULT, alignedSize, nullptr, JKRDvdRipper::ALLOC_DIR_TOP, offset, nullptr, nullptr);
234 DCInvalidateRange(data, alignedSize);
235 return alignedSize;
236
237 case JKRCOMPRESSION_YAY0:
238 case JKRCOMPRESSION_YAZ0:
239 u8 buf[64];
240 u8 *bufPtr = (u8 *)ALIGN_NEXT((u32)buf, 32);
241 JKRDvdToMainRam(entryNum, bufPtr, EXPAND_SWITCH_NONE, sizeof(buf) / 2, nullptr, JKRDvdRipper::ALLOC_DIR_TOP, offset, nullptr, nullptr);
242 DCInvalidateRange(bufPtr, sizeof(buf) / 2);
243 u32 expandFileSize = JKRDecompExpandSize(bufPtr);
244 alignedSize = ALIGN_NEXT(expandFileSize, 32);
245 if (alignedSize > prevAlignedSize) {
246 alignedSize = prevAlignedSize;
247 }
248 JKRDvdToMainRam(entryNum, data, EXPAND_SWITCH_DECOMPRESS, alignedSize, nullptr, JKRDvdRipper::ALLOC_DIR_TOP, offset, nullptr, nullptr);
249 DCInvalidateRange(data, alignedSize);
250 return expandFileSize;
251 }
252 }
253 case JKRCOMPRESSION_YAZ0: {
254 if (size > prevAlignedSize)
255 {
256 size = prevAlignedSize;
257 }
258 JKRDvdRipper::loadToMainRAM(entryNum, data, EXPAND_SWITCH_DECOMPRESS, size, nullptr, JKRDvdRipper::ALLOC_DIR_TOP, offset, nullptr, nullptr);
259 DCInvalidateRange(data, size);
260 return size;
261 }
262
263 case JKRCOMPRESSION_YAY0: {
264#line 649
265 JUT_PANIC("Sorry, not applied for SZP archive.\n");
266 }
267
268 default: {
269 JUT_PANIC("??? bad sequence\n");
270 }
271
272 }
273 return 0;
274}

Callers

nothing calls this directly

Calls 4

JKRDvdToMainRamFunction · 0.85
JKRDecompExpandSizeFunction · 0.85
loadToMainRAMFunction · 0.85
JKRAllocFromHeapFunction · 0.85

Tested by

no test coverage detected