dolphin/Source/Core/DiscIO
naari3 e013d95053 DirectoryBlob: fix data alignment for GC/Triforce and skip Triforce DIMM memory range
The 0x8000 alignment in DirectoryBlob is needed for Wii disc group encryption,
but for GC/Triforce it inflates file offsets unnecessarily. Use 0x20 alignment
for Triforce (matching original disc layout) while keeping 0x8000 for GC due
to DTK audio streaming requirements.

On Triforce games with many files, the inflated offsets can land in the
AMMediaboard DIMM memory range (0x1F000000-0x1F800000). Reads from that
region return SRAM data instead of disc data, causing the game to hang.

Skip the DIMM range when assigning per-file data offsets if any portion of
the file would overlap [0x1F000000, 0x1F800000).
2026-04-25 19:48:00 +09:00
..
Blob.cpp DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
Blob.h DiscIO: Add IsCached virtual function to BlobReader. 2026-02-15 20:14:15 -06:00
CachedBlob.cpp DiscIO: Add IsCached virtual function to BlobReader. 2026-02-15 20:14:15 -06:00
CachedBlob.h DiscIO: Add CachedBlobReader which takes another BlobReader and reads it into memory in the background. 2025-11-23 05:17:22 -06:00
CISOBlob.cpp DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
CISOBlob.h DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
CMakeLists.txt Merge pull request #14174 from JoshuaVandaele/minizips-cmake 2025-12-22 13:36:52 -05:00
CompressedBlob.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
CompressedBlob.h DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
DirectoryBlob.cpp DirectoryBlob: fix data alignment for GC/Triforce and skip Triforce DIMM memory range 2026-04-25 19:48:00 +09:00
DirectoryBlob.h DirectoryBlob: fix data alignment for GC/Triforce and skip Triforce DIMM memory range 2026-04-25 19:48:00 +09:00
DiscExtractor.cpp Remove NKit data when extracting a GCN/Wii disc volume 2023-06-02 01:11:50 -05:00
DiscExtractor.h Remove unused imports 2026-01-25 16:12:15 +01:00
DiscScrubber.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
DiscScrubber.h Remove unused imports 2026-01-25 16:12:15 +01:00
DiscUtils.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
DiscUtils.h Use more std::span arguments 2026-03-23 23:55:09 +01:00
Enums.cpp Enums: Unhandled switch statement 2026-02-15 20:14:15 -06:00
Enums.h Added Triforce support 2026-02-15 20:14:14 -06:00
FileBlob.cpp DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
FileBlob.h DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
Filesystem.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Filesystem.h Remove unused imports 2026-01-25 16:12:15 +01:00
FileSystemGCWii.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
FileSystemGCWii.h Remove unused imports 2026-01-25 16:12:15 +01:00
GameModDescriptor.cpp DiscIO: Remove redundant qualifiers 2025-04-22 13:54:10 +02:00
GameModDescriptor.h Core: Add a Maker field for GameModDescriptors. 2022-01-02 06:06:53 +01:00
LaggedFibonacciGenerator.cpp Simplify std::copy with std::copy_n 2024-10-07 15:34:56 -07:00
LaggedFibonacciGenerator.h Fix all uninitialized variable warnings (C26495) 2021-10-13 12:32:16 -07:00
MultithreadedCompressor.h Common: Replace Result with C++23's std::expected. 2026-01-17 16:58:45 -06:00
NANDImporter.cpp Improve NAND import progress dialog 2026-04-04 22:02:45 +01:00
NANDImporter.h Improve NAND import progress dialog 2026-04-04 22:02:45 +01:00
NFSBlob.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
NFSBlob.h Use more std::span arguments 2026-03-23 23:55:09 +01:00
RiivolutionParser.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
RiivolutionParser.h DiscIO: Pass parameters by constant reference 2025-04-20 08:26:09 +02:00
RiivolutionPatcher.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
RiivolutionPatcher.h DiscIO: Make functions constant 2025-05-16 19:11:39 +02:00
ScrubbedBlob.cpp Added CopyReader to BlobReader and all subclasses 2023-10-01 09:04:06 -04:00
ScrubbedBlob.h DiscIO: Make classes final 2025-04-19 09:05:22 +02:00
SplitFileBlob.cpp DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
SplitFileBlob.h DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
TGCBlob.cpp DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
TGCBlob.h DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
Volume.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
Volume.h Use more std::span arguments 2026-03-23 23:55:09 +01:00
VolumeDisc.cpp Triforce: Check only first byte in region flag. 2026-03-15 18:43:00 +00:00
VolumeDisc.h Triforce: Code cleanups. 2026-02-15 20:14:14 -06:00
VolumeFileBlobReader.cpp VolumeFileBlobReader: Define default destructor in source file 2026-01-04 17:56:08 -08:00
VolumeFileBlobReader.h VolumeFileBlobReader: Define default destructor in source file 2026-01-04 17:56:08 -08:00
VolumeGC.cpp Triforce: Check only first byte in region flag. 2026-03-15 18:43:00 +00:00
VolumeGC.h Added Triforce support 2026-02-15 20:14:14 -06:00
VolumeVerifier.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
VolumeVerifier.h Use more std::span arguments 2026-03-23 23:55:09 +01:00
VolumeWad.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
VolumeWad.h Use more std::span arguments 2026-03-23 23:55:09 +01:00
VolumeWii.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
VolumeWii.h Make overriding explicit and remove redundant virtual specifiers on overriding destructors - Core & UnitTests 2025-05-01 15:00:37 +02:00
WbfsBlob.cpp DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
WbfsBlob.h DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00
WIABlob.cpp Use more std::span arguments 2026-03-23 23:55:09 +01:00
WIABlob.h Use more std::span arguments 2026-03-23 23:55:09 +01:00
WIACompression.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
WIACompression.h Make overriding explicit and remove redundant virtual specifiers on overriding destructors - Core & UnitTests 2025-05-01 15:00:37 +02:00
WiiEncryptionCache.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
WiiEncryptionCache.h Remove unused imports 2026-01-25 16:12:15 +01:00
WiiSaveBanner.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
WiiSaveBanner.h WiiSaveBanner: fall back to $userdir/Load/WiiBanners 2025-07-04 23:15:50 +01:00