13 Commits
Author SHA1 Message Date
boykopovar 25b3a519b0 fix(playgo): enforce optional chunk types and query limits 2026-10-21 21:52:54 +03:00
Adrià 145223c440 Merge pull request #8488 from orezraey/feat/playgo-set-language-mask
feat(libScePlayGo): store the language mask scePlayGoSetLanguageMask sets
2026-10-21 15:52:50 +02:00
Dean 5ed381bac2 Merge pull request #8079 from savvaniss/fix/playgo-ps4-chunk-table
fix(libScePlayGo): read the chunk count of a PS4 plgo chunk table
2026-10-21 17:48:01 +13:00
orezraeyandClaude Opus 5.5 1dbf3b4ac2 feat(libScePlayGo): store the language mask scePlayGoSetLanguageMask sets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 10:35:28 -03:00
Savvanis SpyrosandClaude Opus 5.5 9761125226 fix(libScePlayGo): read the chunk count of a PS4 plgo chunk table
A PS4 package's sce_sys/playgo-chunk.dat starts with the magic "plgo"
instead of the PS5 "plgx", so scePlayGo threw on every PS4 title that
ships one. Up to the chunk count the two headers have the same layout: a
32-bit magic, then 16-bit version major, version minor, image count and
chunk count, so the count is the little-endian 16-bit word at 0x0A in
both. The table is now read for either magic; a zero count is still
rejected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 23:04:00 +03:00
milescovielloandClaude Opus 5.5 42f4382bcf fix(libScePlayGo): list chunks 0 to 999 when only a scenario file is present
A dump with sce_sys/playgo-scenario.json and no chunk table already answers
every chunk id as installed, but scePlayGoGetChunkId listed only chunk 0.
Ghost of Tsushima (PPSA02225) builds its set of installed chunks from that
list and never reads its English audio, two of its music archives or its
opening movie. scePlayGoGetChunkId now lists ids 0 to 999, the room that
title passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:27:00 +00:00
fogydes e088fd8741 fix(libScePlayGo): let users answer unlisted chunks 2026-10-15 11:48:51 +05:30
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
MarcZX100 a44689c480 fix(libScePlayGo): report missing chunk metadata 2026-10-14 12:33:51 +00:00
xXPBSXxandClaude Sonnet 5.5 51c7206fd0 fix(libScePlayGo): answer chunk ids from the package layout
A package with no playgo-* file in sce_sys has no PlayGo data, so only chunk 0
is valid and any other id returns SCE_PLAYGO_ERROR_BAD_CHUNK_ID. A package with
playgo-scenario.json but no chunk table (PPSA01748) keeps accepting every id.
A chunk table (playgo-chunk.dat or playgo-chunkdefs.xml) still decides when it
exists. A sce_sys that holds other playgo-* files without a chunk table or a
scenario file, or a playgo-chunk.dat that is not a plgx table with a nonzero
count, throws naming the file, since no such dump is known.

Without this a title that walks the ids until the first error (Sifu PPSA03001)
never gets the error.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 11:26:43 +02:00
alfalfa-starandClaude Opus 5.5 3ef8556ada test(libScePlayGo): take the chunk set from a package chunk table
A child process runs from a root whose app0/sce_sys/playgo-chunk.dat
declares 3 chunks: ids 0-2 are local, id 3 is rejected with
SCE_PLAYGO_ERROR_BAD_CHUNK_ID and scePlayGoGetChunkId counts 3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 12:30:52 +02:00
Cesar RodriguezandClaude Opus 5.5 082177e1b7 fix(libScePlayGo): accept chunk ids when the dump has no chunk definitions
PS5 dumps carry no playgo-chunkdefs.xml (only sce_sys/playgo-scenario.json, which
lists no chunks), so the valid set fell back to chunk 0 and every query for another
chunk returned SCE_PLAYGO_ERROR_BAD_CHUNK_ID. A title that asks for all of its chunks
in one scePlayGoGetLocus call then never sees them as installed and waits forever.

Without definitions the chunk table is unknown and a dump is fully installed, so any
chunk id is accepted and reported as local. With playgo-chunkdefs.xml present,
validation is unchanged. scePlayGoGetChunkId still reports the known set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:44:13 +02:00
Adrià FranchandClaude 2b36dc2408 feat(libScePlayGo): implement the language mask and to-do list
The title is fully installed, so scePlayGoGetLanguageMask reports every
language. scePlayGoSetToDoList validates the handle, entries, chunk IDs
and loci; nothing is pending, so the list is not kept.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-01 19:50:33 +02:00