Skip to content

feat(libScePlayerSelectionDialog): run common-dialog state machine without UI - #6058

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
notaxeltv:feat/libScePlayerSelectionDialog-ppsa34015
Oct 18, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
notaxeltv:feat/libScePlayerSelectionDialog-ppsa34015

Conversation

@notaxeltv

Copy link
Copy Markdown
Contributor

What

PPSA34015 (EA SPORTS FC 27), after LoginService / NpPartner001 / NpManager exports, fails to load libScePlayerSelectionDialog.prx:

FAIL: unresolved ELF import GtF-2gJqsts from libScePlayerSelectionDialog.prx
GetLastError: 127 - The specified procedure could not be found.

The eboot also imports Initialize, Open and UpdateStatus. Only Terminate existed. The four missing exports now follow libSceLoginDialog: initialize, open finishes immediately, GetResult writes USER_CANCELED as the first int32, terminate clears state. Silent stub under docs/dev/debt/libScePlayerSelectionDialog.md. The rest of the result layout (player list) is not filled.

Tested

Windows 10, WinLibs GCC 15.2.0, guest_player_selection_dialog passes. With the patched .prx (stacked on the earlier PPSA34015 libs) the title no longer reports GtF-2gJqsts; the next loader stop is AAMM-Q1X0g0 from libSceVdecsw.prx (separate). tools/check_conventions.py --base upstream/main passes.

Checklist

Made with Cursor

…thout UI

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Progress report (55f82fe → 784cb4d)

📈 System libraries: 89.67% (+0.01%, +4 implemented functions)

✅ 4 implemented
Library Name
libScePlayerSelectionDialog scePlayerSelectionDialogGetResult
libScePlayerSelectionDialog scePlayerSelectionDialogInitialize
libScePlayerSelectionDialog scePlayerSelectionDialogOpen
libScePlayerSelectionDialog scePlayerSelectionDialogUpdateStatus

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 6361 core/libs/prx/libScePlayerSelectionDialog/Export.cpp L1-2, L5, L7-9
docs/dev/debt/libScePlayerSelectionDialog.md
scePlayerSelectionDialogGetResult
scePlayerSelectionDialogInitialize
scePlayerSelectionDialogOpen
scePlayerSelectionDialogUpdateStatus
docs/dev/debt/libScePlayerSelectionDialog.md
PR 6696 core/libs/prx/libScePlayerSelectionDialog/Export.cpp L1-2, L5, L7-9
core/libs/tests/GuestPlayerSelectionDialog.cpp
docs/dev/debt/libScePlayerSelectionDialog.md
scePlayerSelectionDialogGetResult
scePlayerSelectionDialogInitialize
scePlayerSelectionDialogOpen
scePlayerSelectionDialogUpdateStatus
core/libs/tests/GuestPlayerSelectionDialog.cpp
docs/dev/debt/libScePlayerSelectionDialog.md

@coltken95

Copy link
Copy Markdown

Tested on Linux x86-64 (Release build), with 784cb4d merged into main e16b2bc:

  • With the PR: guest_player_selection_dialog passes.
  • With main's libScePlayerSelectionDialog sources (keeping this PR's test and its CMake registration): the test doesn't link (undefined reference to 'scePlayerSelectionDialogInitialize', '...Open', '...UpdateStatus', '...GetResult').

AI-assisted: yes (Claude Code)

@notaxeltv

Copy link
Copy Markdown
Contributor Author

Closing to free intake for PPSA03541 pixel interpolator DEFAULT coverage fix.

@notaxeltv notaxeltv closed this Oct 15, 2026
@hugodearaujo

Copy link
Copy Markdown
Contributor

FC 25 (PPSA20049, 01.000.028) imports the same four exports (DrDfu7uq6JY Initialize, 9Oj3MIJ+Zjk Open, PBmrW72wbPQ UpdateStatus, GtF-2gJqsts GetResult) and doesn't load on current main (66702f1) without them. With this PR merged locally, plus #6343, it loads, and with two local AGC fixes it reaches its title screen. Up to the title screen and pressing Start it never calls any of the five PlayerSelectionDialog functions (gdb dprintf on each), so there only the exports are needed.

Would you reopen it now that #6034, #6049, #6056 and #6062 are merged? If you don't plan to, I can open a PR with only these four exports and FC 25 as the title; tell me which you prefer.

AI-assisted: yes

@klosixgaming-arch

Copy link
Copy Markdown
Contributor

A third title needs these four exports: SWORD ART ONLINE Last Recollection (PPSA06958, 01.021.000, Unreal Engine 4).

On main (66702f1) it stops at load:

FAIL: unresolved ELF import PBmrW72wbPQ from libScePlayerSelectionDialog.prx
FAIL: unresolved ELF import DrDfu7uq6JY from libScePlayerSelectionDialog.prx
FAIL: unresolved ELF import 9Oj3MIJ+Zjk from libScePlayerSelectionDialog.prx
FAIL: unresolved ELF import GtF-2gJqsts from libScePlayerSelectionDialog.prx
GetLastError: 127 - The specified procedure could not be found.

These are scePlayerSelectionDialogUpdateStatus, Initialize, Open and GetResult. With this PR's commit (784cb4d) cherry-picked onto main 66702f1, the title loads, shows its start-up logos and reaches its menu. It then stops with an unrelated crash in FAsyncLoadingThread (illegal instruction at app.exe+0x2027a2c), which this PR does not touch. Windows 11, WinLibs GCC 15.2.0, RTX 5090.

With PPSA34015 and hugodearaujo's PPSA20049 that makes three titles that cannot load without these exports. Could this be reopened? If not, I can open a PR with only the four exports and these titles as the stuck ones; tell me which you prefer.

AI-assisted: yes. Written with AI assistance and reviewed by me.

@oneandonlydean oneandonlydean self-assigned this Oct 17, 2026
@oneandonlydean
oneandonlydean merged commit dfd7ad6 into boykopovar:main Oct 18, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants