POPS: Multi-disc on every firmware from 5.01, by leaving the descrambling to the emulator

With the converted header's key of zeros, the emulator's descrambling of its disc switching strings only
reverses them, so ours go in backwards and its code is left alone. The tables are found by the code that
indexes them, which is the same from 3.95 on with only the registers differing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-23 19:36:02 +02:00
1 parent 966aab50ec
commit 31fd8e8a1c
4 files changed
+23 -46

No files matched your search

+2 -2
View File
@@ -1108,8 +1108,8 @@ void PS1EbootFileLoader::BuildHeaders() {
if (multiDisc) {
// The fields the emulator reads (pops +1B2F0 in 6.60): the disc offsets, the first disc's ID, and the
// title. The end of the last disc and its +0x2D31 are where a STARTDAT would follow, as in a PSISOIMG.
// The MACs a store game's header has, and the key its disc switching strings are descrambled with,
// stay zero: PopsBoot sees to both.
// The MACs a store game's header has stay zero (PopsBoot passes them), and so does the key its disc
// switching strings are descrambled with, which then only reverses PopsBoot's strings.
u8 *title = pbp + psarOffset_;
memcpy(title, "PSTITLEIMG000000", 16);
*(u32_le *)(title + 0x10) = (u32)end;