Repository navigation
feat(libSceSystemService): fill the player dialog param as the console does - #8337
Merged
oneandonlydean merged 1 commit intoOct 21, 2026
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
sceSystemServiceInitializePlayerDialogParamnow fills the param the way the console does. Onmainit returns 0 and writes nothing, so a title that initializes the param and then sets only the fields it needs passes uninitialized memory tosceSystemServiceLaunchPlayerDialog.Source of the behaviour. A console measurement in prosper's console oracle (captured 2026-10-08, case). The call got a 256-byte buffer prefilled with
0xaband wrote only its first 0x40 bytes:That is size 0x40 (u64), mode 0, user ID -1, and zeros. The field names and widths after 0x10 (
target_account_id, 40 reserved bytes) and thevoidreturn follow SharpProspero's struct and declaration. The console left0x0000000800693020inrax, which is not an SCE error code, consistent with avoidfunction.On
main, the export checks for null and returns 0. #292 added it for GTA V's Story Mode. PRAGMATA (PPSA02530) also imports it (#8005).What the console does with a null param is not measured, so it now throws instead of returning
0x80A10003; it is recorded as debt.Changes:
SceTypes.hpp:SystemServicePlayerDialogParam(0x40 bytes, with astatic_assert).Export.cpp: the export returnsvoid, throws on null and writes the measured defaults.guest_system_service_tests: the measured bytes, the untouched bytes after 0x40, and the null throw.docs/dev/debt/libSceSystemService.md: a new entry for the null case.Tested
Linux (GitHub Codespace, 4 cores, native build of this branch on
d14a186f4):guest_system_service_tests: 5/5 runs pass.Export.cppfrommain,guest_system_service_testsaborts withSIGABRT(the param is left unwritten); 5/5 pass again after restoring it.Windows (fork CI, run 39403153111, this branch and an unrelated libSceNgs2 branch merged into
mainatd14a186f4): build and the full test suite pass, 1734/1734.Checks:
python3 tools/check_conventions.py --base origin/mainpasses.python3 tools/pr_overlap.py --branch feat/systemservice-player-dialog-param: reports no overlapping change. It could not compare Macos port #7201, feat(libSceAudioOut): implement sceAudioOutGetSystemState #5965, feat: run PS4 games on the AGC driver — Limbo (CUSA01664) in game (integration branch) #6977, fix(libs): share Sony CRT handler and lconv state between libc and libSceAmpr #7081, fix(avplayer): report frame rate and colour info in extended video details #7412 and test: organize library tests and label CTest suites #6044, which conflict withmain; checked by hand: Macos port #7201 (macOS port) changesLoadExeccode in the sameExport.cpp, the fourSceTypes.hppPRs change AudioOut, VideoOut, lconv and AvPlayer structures, and test: organize library tests and label CTest suites #6044 reorganizes tests.tools/progress.py: unchanged (4246/6515 on base and head).Checklist
main(d14a186f4); no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)