Commit Graph
26 Commits
Author SHA1 Message Date
Dean ad29cabe9e Merge pull request #11533 from milescoviello/test/playgo-progress-and-install-chunks
test(libScePlayGo): cover scePlayGoGetProgress's checks and scePlayGoGetInstallChunkId on a chunk table
2026-10-27 19:04:44 +13:00
Dean c8e7e1fdb4 Merge pull request #11514 from milescoviello/test/playgo-set-install-speed
test(libScePlayGo): cover scePlayGoSetInstallSpeed's handle check and the speed it stores
2026-10-27 19:02:06 +13:00
milescovielloandClaude Opus 5.5 da532f7a4a test(libScePlayGo): cover scePlayGoGetProgress's checks and scePlayGoGetInstallChunkId on a chunk table
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:55:03 +00:00
milescovielloandClaude Opus 5.5 ff1a5f363b test(libScePlayGo): cover scePlayGoSetInstallSpeed's handle check and the speed it stores
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 17:48:17 +00:00
PrivacyOnion 290ead1507 test(libScePlayGo): cover progress query and install speed argument validation in GuestPlayGo 2026-10-26 12:22:56 +01:00
Dean be9effaeb0 Merge pull request #10278 from al3w0f205/test/playgo-speed-eta-handle-validation
test(libScePlayGo): cover install speed, eta, and prefetch handle validation
2026-10-26 16:31:04 +13:00
Dean 0161550de3 Merge pull request #8621 from JJenkx/fix/playgo-scenario-unlisted
fix(libScePlayGo): answer ids past the listed scenario chunks as unlisted
2026-10-26 11:05:05 +13:00
Dean Galvin 31a6954205 test(playgo): initialize and open PlayGo for the valid-handle checks
The speed, ETA and prefetch checks now take their valid handle from scePlayGoInitialize and scePlayGoOpen in the same process and close it afterwards, instead of assuming handle 1.
2026-10-26 05:39:51 +13:00
Dean Galvin 814aea6f50 test(playgo): use the valid handle and the pinned error codes for the speed, ETA and prefetch checks
The implementation checks the handle first and reports BAD_HANDLE (0x80B20009) or BAD_POINTER (0x80B2000A); handle 1 is the valid one, so the pointer and speed cases use it and the invalid-handle cases expect BAD_HANDLE.
2026-10-26 05:18:43 +13:00
Dean Galvin c13db51bb9 Merge branch 'main' into test/playgo-speed-eta-handle-validation 2026-10-26 05:18:24 +13:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
al3w0f205 7618d0335f test(libScePlayGo): cover install speed, eta, and prefetch handle validation 2026-10-23 11:30:51 -05:00
JJenkxandClaude Opus 5.5 0bf6a77e8f fix(libScePlayGo): answer ids past the listed scenario chunks as unlisted
A dump with sce_sys/playgo-scenario.json and no chunk table lists chunks 0
to 999 through scePlayGoGetChunkId, but every other id was still reported as
installed. Destruction AllStars (PPSA02630) asks for chunk ids from 0 up until
one is rejected; because no id ever was, the walk wrapped the 16-bit id and
grew an array of 16-byte entries until a 5.18 GiB allocation failed about one
second into startup ("Ran out of memory allocating 5565054976 bytes").

An id outside the listed 0 to 999 is now answered like an unlisted id of a
dump without any playgo file: APS5_PLAYGO_UNLISTED_CHUNKS=installed or
=absent answers it, and without an answer the call throws naming the missing
chunk table.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 18:26:40 -04:00
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
2026-10-01 19:50:33 +02:00