POPS: Converted PS1 EBOOTs, as CFW's popcorn plugin runs them

EBOOTs made with popstation and similar tools have a plain disc image of
raw DEFLATE blocks, where a store game has a PGD in the emulator's own
format, and no MACs. Like popcorn: the emulator's decoder calls go to its
scePopsMan_0090B2C8 import, which now inflates; its CD audio track index
check always takes the full-length branch, as the converted image adds CD
audio tracks the index doesn't count; and the manager's two MAC checks
pass.

A converted EBOOT is one whose disc image doesn't start with a PGD.
Crash Bandicoot is playable.
This commit is contained in:
Francisco José García García authored and Henrik Rydgård committed 2026-10-21 13:15:30 +02:00
1 parent 0b1e1a9bb3
commit 926bf9d390
4 files changed
+132 -5

No files matched your search

+7 -1
View File
@@ -2252,7 +2252,13 @@ static PSPModule *__KernelLoadELFFromPtr(const u8 *ptr, size_t elfSize, u32 load
}
if (PopsBootActive() && !strcmp(modinfo->name, "pops")) {
__PopsBootPatchEmulator(module->nm.text_addr, module->nm.text_size);
u32 decodeStub = 0;
for (const FuncSymbolImport &func : module->importedFuncs) {
if (func.nid == 0x0090B2C8 && !strncmp(func.moduleName, "scePopsMan", KERNELOBJECT_MAX_NAME_LENGTH)) {
decodeStub = func.stubAddr;
}
}
__PopsBootPatchEmulator(module->nm.text_addr, module->nm.text_size, decodeStub);
}
System_Notify(SystemNotification::SYMBOL_MAP_UPDATED);