mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
A game that is visible but unreadable is the failure mode that costs the most time, because nothing about it looks like a permissions problem. The core opens games with ordinary file IO. Without All files access the scanner falls back to SAF document trees, and a title found that way has no filesystem path to open -- but it is still listed, still launches, and then sits on its first loading screen when the reads never arrive. The same shape appears when the grant is revoked after a folder was added, or when a disc sits on storage the app was never given. Moving the same files into the emulator's own games directory fixes all of it at once, which is what makes the cause so hard to see: the game works or does not depending only on where it lives. Boot now proves the content is readable first, at two offsets. Size alone proves nothing -- an entry can be listed with its real size and still refuse to deliver bytes -- so it reads byte 0 and byte 32769, the ISO descriptor, the first place any disc is read for real. Failure returns invalid_file_or_folder with a message naming the two fixes, rather than handing the core content it cannot read. The scanner says the same thing at the point it falls back, distinguishing "All files access is not granted" from "this tree has no filesystem path", because they need different fixes. Read-only probe, and directory-installed titles skip it: fs::is_file is false for them and they were never affected. Reported by a tester whose whole library started working after moving the ISOs into ARMSX3/config/games -- cover art, launching, and Prototype no longer locking up, all from the move alone.