Files
AnyPS5/docs/dev/debt/libScePlayGo.md
T
Cesar RodriguezandClaude Opus 5.5 c43af1f372 fix(libScePlayGo): report optional chunks as supported and installed
A dump is fully installed, so scePlayGoGetSupportedOptionalChunk and
scePlayGoGetOptionalChunk report every optional chunk (language pack) like
scePlayGoGetLanguageMask reports every language. They returned an empty
bitmask, so PPSA01748 hid every text language its playgo-scenario.json
lists as a chunk language, English included.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:30:55 +00:00

2.1 KiB

libScePlayGo technical debt

Unknown function info

  • libScePlayGo - the chunk set comes from playgo-chunkdefs.xml (every listed chunk plus chunks 0 through the default chunk), otherwise from sce_sys/playgo-chunk.dat, whose plgx header is read as holding the chunk count as a 16-bit value at offset 0x0A and ids 0 to count - 1 are taken as valid. The field was identified on four dumps, where exactly that many 0x20-byte entries follow from offset 0x100 (RIDE 4 PPSA01599: 35, Persona 5 Royal PPSA05110: 25, LEGO Horizon Adventures PPSA14632 and Kena PPSA01802: 1); the rest of the format is not decoded and ids are assumed to be contiguous. Every listed chunk is reported as installed (LOCAL_FAST). Without either file, a package with sce_sys/playgo-scenario.json (PPSA01748, whose dump lists no chunks) accepts every chunk id as installed while scePlayGoGetChunkId lists only chunk 0. A package with no playgo-* file in sce_sys (PPSA03001, PPSA03490 and PPSA01285 here) accepts chunk 0; querying any other id throws with a message naming the missing playgo-chunk.dat and playgo-scenario.json, since the incomplete dump cannot establish whether that id exists. A sce_sys that holds other playgo-* files (playgo-ficm.dat, playgo-hash-table.dat) without playgo-chunk.dat or playgo-scenario.json, or a playgo-chunk.dat without a plgx header and a nonzero count, throws naming the file, because no such dump is known. These answers are unverified on a console, as is the console's answer for an id outside a package's chunk table.
  • libScePlayGo - scePlayGoGetSupportedOptionalChunk and scePlayGoGetOptionalChunk report every bit set for any type, i.e. every optional chunk (language pack) supported and installed, like scePlayGoGetLanguageMask. The bit layout and the values of type are not known; PPSA01748 calls both with type 0 and hides every text language listed in playgo-scenario.json chunkSupportedLanguages when the bitmask is 0. The console's answer for a package that ships no optional chunks is unverified.