| 215 | } |
| 216 | |
| 217 | u32 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 | } |
nothing calls this directly
no test coverage detected