Files
AnyPS5/docs/dev/debt/libSceNpGameIntent.md
T
akkadbakkad89 779a42c119 fix(libSceNpGameIntent): return launcher error family and restore debt entries
sceNpAppLauncherLaunchApp returned the libSceNpGameIntent codes
0x80553802/0x80553804, but the firmware tail remaps the internal
launch library errors into the launcher family, so the export reports
0x80553A02 before initialize and 0x80553A04 on invalid arguments;
the tests now assert those values and the unrelated GameIntent
constants are untouched.

The two assertions that a valid launch call must throw until
implemented are removed; the production throw and its debt entry
stay, and the validation and lifecycle coverage is unchanged. The
debt file keeps the silent-stub, InitParamInit, InfoInit and
remaining unknown-export entries, updating only the launcher parts.
2026-10-26 06:19:12 +00:00

3.9 KiB

libSceNpGameIntent technical debt

Silent stubs

  • sceNpGameIntentVshInitialize, sceNpGameIntentVshTerminate (libSceNpGameIntent) - VSH initialization and termination return 0 without performing shell operations, matching sceNpGameIntentInitialize and sceNpGameIntentTerminate
  • sceNpAppLauncherInitialize, sceNpAppLauncherTerminate (libSceNpGameIntent) - app-launcher lifecycle returns success without performing launch work; sceNpAppLauncherInitialize accepts its init parameter without validation, following the silent-stub precedent of sceNpGameIntentInitialize — a title calls it early in boot, and returning success lets it continue; an atomic flag tracks initialized state so sceNpAppLauncherLaunchApp can reject calls made outside the lifecycle

Unknown function info

  • sceNpGameIntentReceiveIntent, sceNpGameIntentGetPropertyValueString (libSceNpGameIntent) - firmware 13.42 traces report 0x80553802 before sceNpGameIntentInitialize (precedence over argument validity), and 0x80553804 for invalid arguments (null pointer, empty key, or zero buffer size); sceNpGameIntentTerminate resetting initialized state is modeled lifecycle behavior rather than hardware-verified. sceNpGameIntentReceiveIntent reportedly requires info->size == 0x4140 on firmware 13.42, while AnyPS5 NpGameIntentInfo is 0x560 bytes (matching fpPS4) and set by sceNpGameIntentInfoInit, so initialized objects are rejected by the receiver's measured size guard. Complete retail layout, output field offsets, and retail behavior of sceNpGameIntentInfoInit are unverified; expanding the type with unverified reserved bytes is not an evidence-backed solution.
  • sceNpAppLauncherLaunchApp (libSceNpGameIntent, NID GbayQ7DO8jA) - its recovered signature is (int32_t, const char*, const char*): an unhandled first argument, a required non-empty string and an optional string rejected past 0x2000 bytes, returning 0x80553A02 before sceNpAppLauncherInitialize and 0x80553A04 on invalid arguments. The launch itself is not implemented and throws; the firmware tail calls an internal launch through an extra library context and remaps its 0x805538xx errors into 0x80553Axx
  • sceNpGameIntentGetUdsNpComId, sceNpGameIntentLaunchApp, sceNpGameIntentLaunchApp2, sceNpGameIntentNotifyAppLaunched, sceNpSessionServiceGetJoinedPartySession, sceNpSessionServiceGetRunningGamePlayerSession and sceNpSessionServiceSendPlayerSessionInvitations (libSceNpGameIntent) - names and NIDs are present in the PS5 3.20 export inventory. They are declared without parameters solely to resolve known imports and make no ABI claim.
  • sceNpGameIntentInitParamInit (libSceNpGameIntent) - struct layout matches fpPS4 SceNpGameIntentInitParam; setting size, zeroing reserved bytes, and throwing on null pointer follow Sony SDK *ParamInit conventions but are unverified on retail hardware
  • sceNpGameIntentInfoInit (libSceNpGameIntent) - struct layout matches fpPS4 SceNpGameIntentInfo; setting size = 0x560, user_id = -1, zeroing fields, and throwing on null pointer follow fpPS4 defaults, but reported firmware 13.42 behavior requires 0x4140 for sceNpGameIntentReceiveIntent, so the helper's 0x560 size does not match retail receiver defaults; the complete retail structure layout and retail behavior of sceNpGameIntentInfoInit remain unverified