3.9 KiB
Phase 1.0R: SDL2main and packaging analysis
Status: SOURCE_BOUND_NEGATIVE_RESULT
SDL2main
Pinned source: ps5-payload-dev/SDL commit
0baf4ac49382b537ba449901b5b6d0d189bb1fbb, file
src/main/ps5/SDL_ps5_main.c, 438 bytes, SHA-256
55953065bb81ec6f00224d54c19f667336936e55a6805e08b60f6dda126d6648.
| Source location | Operation | Timing | Launch-context conclusion |
|---|---|---|---|
| lines 14-16 | normal main, splash hide |
before SDL_main |
duplicate of an action also performed by PS5 VideoInit; no registration |
| line 17 | call SDL_main(argc, argv) |
application entry | C entry-wrapper convention only |
| line 18 | sceSystemServiceLoadExec("exit", 0) |
after application return | cannot affect first VideoOut submit |
No application ID, title ID, LNC function, process creation, VideoOut export, module load, or persistent state appears in this file.
Pinned PS5 video source: src/video/ps5/SDL_ps5video.c, 12,162 bytes,
SHA-256
44124546da132ea6e12b1f06a1808d61690c73460a65c3161e8453e8108684b6.
PS5_VideoInit() hides the splash at line 225 and opens VideoOut at line 226.
It creates the event queue, adds the flip event, sets the flip rate, sets the
opaque buffer attributes, and registers buffers. The update path submits
(handle, idx, 1, frame_id) at line 145. No source-proven app registration or
flip-owner acquisition precedes it.
Exact RetroArch linkage
The artifact source is RetroArch commit
12cf1d783c41eb303987e49a5a920805a59ef7a4. Makefile.ps5 is 16,122 bytes,
SHA-256
6d248aa2b77d5ccea3a8d1de02e939946b7e7764e5b012ef513c1eed4dcc6e27.
It links static libSDL2.a plus SceSystemService; it does not link
libSDL2main.a.
The exact M evidence identities remain:
| Evidence | Size | SHA-256 |
|---|---|---|
retroarch_ps5_write_diag.elf |
1,845,208 | c99a0856309a357ad2667d89b4924e4063ad214cae09c8a419457b0732f583cd |
| linker map | 637,728 | 6768ffc7267b9b362c3b953571e5dfeed1e70004a3e19f41ef500c3f26272719 |
The map binds _start to SDK crt1.o and binds the PS5 video functions to
libSDL2.a(SDL_ps5video.c.o). Searches for SDL_ps5_main, libSDL2main, and
sceSystemServiceLoadExec are empty. Thus the tested artifact omitted the
wrapper but not SDL's pre-VideoOut splash-hide call.
PacBrew and official port packaging
PacBrew commit c2abcfcb60f569128abd0e8e70ad03a67bee5ea7 builds and installs
libraries and ordinary executables. Its SDL2 recipe fetches the same SDL fork
without a pinned source checksum and installs the resulting SDK files.
PacBrew recipes do not create PS5 application IDs or define the process that
runs an installed executable. PacBrew is therefore PACKAGE_METADATA_ONLY,
not a launch-context implementation.
The bounded official source set gives these results:
| Project | Relevant observation | Classification |
|---|---|---|
| LakeSnes | links SDL2main; homebrew.js returns path/args; README uses hbldr via shsrv |
SDL2MAIN_USER_LAUNCHER_PARTIAL_UNBOUND |
| pemu | PS5 packages use homebrew.js; its explicit LoadExec("exit") is guarded for PS4 only |
SDL_USER_LAUNCHER_PARTIAL_UNBOUND |
| FBNeo, Mednafen, DevilutionX, EDuke32 | PacBrew builds/install ordinary SDL executables | PACKAGE_METADATA_ONLY |
| yquake2 | SDL consumer; no exact PS5 launched artifact/process contract | SDL_CONSUMER_LAUNCH_CONTEXT_UNPROVEN |
A homebrew.js object that returns path and args is not application
registration. A README command naming hbldr is not source proof of how
hbldr creates a process or which active-app/display state exists. No
official-port success claim is used as firmware-9.60 hardware evidence.
Fail-closed outcome
The exact pre-submit effect contributed by SDL2main is
EARLIER_HIDE_SPLASH_ONLY. The exact post-return effect is
LOAD_EXEC_EXIT. Neither is a source-proven correction for the observed
submit failure. The launcher and active-app hypotheses remain unproven until
the exact hbldr/shsrv implementation and launch provenance are bound in a
separate offline phase.