Files
AnyPS5/docs/dev/debt/libSceNpManager.md
T

3.8 KiB

libSceNpManager technical debt

Unknown function info

  • sceNpGetSandboxInfo (libSceNpManager, NID ZVZ++68nNI8) - the name hashes to the imported NID (found with nidhunt, confirmed with tools/nid_names.py). STAR WARS: Galactic Racer (PPSA28416) imports it; its OnlineSubsystemPS5 calls it with one pointer to a 0x50-byte stack buffer and reads the buffer as a string (discussions/3086). The returned string, the exact parameter struct and console errors are unknown, so every call throws without reading or writing caller memory. A working implementation belongs with that title's bring-up.
  • sceNpUnknown_8weiQyIdI3A (libSceNpManager, NID 8weiQyIdI3A) - the name is not in aerolib. EA SPORTS FC 27 (PPSA34015) fails to load libSceNpManager.prx without it (unresolved ELF import / GetLastError: 127). Its only call is mov edi, r14d (a user id) and lea rsi, [rbp-0x40] after a 17-byte copy into that buffer (mov edx, 0x11); test eax, eax follows. The C name, the type of the 17-byte object and the console return are unknown, so every call throws without reading or writing caller memory.
  • sceNpUnknown_WxLcN76q19o (libSceNpManager, NID WxLcN76q19o) - the name is not in aerolib. PPSA34015 imports it from libSceNpManager.prx as a strong JUMP_SLOT with no call found in the eboot; the loader still requires the export. Arguments, result and console errors are unknown, so every call throws.
  • sceNpSetTimeout (libSceNpManager) - the signature follows orbital, shadPS4 and SharpProspero; the rejected values (all five 0, negative retries, a resolve timeout under 1 s or another timeout under 10 s, 0 meaning the default) are shadPS4's, not checked on a console. An id that was never created or was deleted returns REQUEST_NOT_FOUND, as in shadPS4; there is no network, so the timeouts are not stored
  • sceNpGetUserIdByAccountId - the (account id, user id output) signature and its errors follow shadPS4: account id 0 or a null output returns SCE_NP_ERROR_INVALID_ARGUMENT, and a signed-out NP returns SCE_NP_ERROR_SIGNED_OUT without writing the output. NP is always signed out here, so no account id resolves to a user

Functional

  • NP reachability callbacks retain one callback and its user data; duplicate registration and unregistering an absent callback return the errors used by shadPS4. No callback is delivered because the existing NP model remains signed out with reachability unavailable.
  • sceNpCheckNpAvailability (libSceNpManager) - the (req_id, online_id) signature and the errors follow shadPS4 with no user signed in to PSN: a null online id is SCE_NP_ERROR_INVALID_ARGUMENT, and any other online id matches no user, SCE_NP_ERROR_USER_NOT_FOUND; the request id is not checked, as in the other NpManager requests