Repository navigation
fix(libScePlayGo): accept chunk ids when the dump has no chunk definitions - #3238
Conversation
|
Thank you for your interest in the project! We are sorry, but we cannot accept more PRs while we work through the existing backlog. This PR has been automatically closed and labeled "intake paused". This is not a judgment of the quality of your changes. |
|
Reopened. Two things before merging:
|
|
Linux check with 007 First Light (PPSA11386 v01.018.000), which stops on the same
For the TechnicalDebt entry requested above: three retail PS5 packages I looked at carry the chunk table as the package entry AI-assisted: yes (Claude Code) |
|
Additional platform validation of standalone PR head Windows: passed — Windows 11, WinLibs GCC 15.2.0 UCRT/POSIX/SEH r7; CMake 4.3.1 / Ninja; Release, 1 checks, 0 failures, 0 CTest skips. Built the selected targets and dependencies; this is focused validation, not a full build or full-suite run. Checks: Command after building: No title/gameplay validation. These results cover the standalone head, not a merge with current main. |
|
Thanks. Added the two items @oneandonlydean asked for as a separate commit:
Checked: |
7b50fa9 to
7bc7619
Compare
…tions 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>
… in TechnicalDebt Co-Authored-By: Claude <noreply@anthropic.com>
|
Rebased onto current |
7bc7619 to
db3c429
Compare
|
Data point on this change, from Sifu (PPSA03001, details on #3209): with this merge Sifu stops at start-up ( AI-assisted (Claude Code). |
|
Mechanism for the Sifu stop (details on #3209), measured with a local trace on
A narrower condition that I think satisfies both titles, as a suggestion for discussion, not a tested change: the title of this PR (Guardians of the Galaxy) has a PlayGo package without a visible chunk table (its @Tamalero, @adriadam10: would that file test fit your findings for Guardians? I am not opening a PR for this unless you want one. AI-assisted (Claude Code). |
|
Follow-up trace for Sifu (PPSA03001) after this change: with an undefined chunk table the title enumerates PlayGo ids one per call and never stops while every id is accepted (about 36-39 million calls in 100 s, ids wrapping at 65536). Details and limits (the logging build did not reproduce the OOM, so no count limit was tested): #3209 (comment) AI-assisted (Claude Code). |
|
@xXPBSXx Checked against our dumps:
So the scenario-file condition fits both of our titles. I have not tested it as a change. Tested and written by Claude (AI assistant) on a contributor's machine. |
|
A finding about this change from Sifu (PPSA03001), whose dump has no Question to those who know the Guardians of the Galaxy case (ids 1 to 10 in one AI-assisted (Claude Code). |
What
On PS5 dumps,
scePlayGoGetLocus,scePlayGoGetEta,scePlayGoGetProgress,scePlayGoPrefetchandscePlayGoSetToDoListreturnSCE_PLAYGO_ERROR_BAD_CHUNK_ID(0x80B2000C) for every chunk except 0.Cause:
ValidChunks()reads only/app0/playgo-chunkdefs.xml. PS5 dumps don't have it: the package's chunk table isn't part of the dump, andsce_sys/playgo-scenario.jsonlists no chunks. So the set falls back to{0}.Marvel's Guardians of the Galaxy (PPSA01748 01.006.000) asks for all of its chunks in one
scePlayGoGetLocuscall (ids 1–10 alongside chunk 10). If that call fails, it never marks the chunks as installed. It then puts them on the to-do list and waits forever on the main thread, with no window ever created. With this change it creates its window, mounts its save data and keeps loading.Fix: a chunk table now records whether definitions were found.
LOCAL_FAST.playgo-chunkdefs.xmlpresent: validation is unchanged.scePlayGoGetChunkIdstill reports the known set ({0}without definitions).Tested
Linux (CachyOS), GCC 16, Release, on current
main.guest_playgopasses.0xFFFFto-do case now expects success (no definitions in the test).scePlayGoGetLocus({1, 10})returns 0 with locus 3, andscePlayGoGetChunkIdstill counts 1 chunk.ValidChunks().scePlayGoGetLocuscall:count=2 ids: 1 10returns0x80b2000c, and the main thread waits on the chunk state;tools/check_conventions.pypasses.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code