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

6.9 KiB

libSceNpMatching2 technical debt

Unknown function info

Functional

  • sceNpMatching2Initialize, sceNpMatching2Terminate (libSceNpMatching2) - only the library state is kept: initialization checks the parameter's size field (0x28, or 0x30 with an SSL pool) as shadPS4 does and starts no thread; a second initialization returns ALREADY_INITIALIZED and a termination without one NOT_INITIALIZED. The pool, thread and SSL settings are not used: no matching server is reached. Not measured on a console
  • sceNpMatching2CreateContext and the context calls (libSceNpMatching2) - offline only, not measured on a PS5: the checks follow shadPS4 and its context manager (a 0x28-byte parameter, ten ids handed out round-robin). sceNpMatching2ContextStart returns 0x804101E2 (SCE_NET_ERROR_RESOLVER_ETIMEDOUT), which shadPS4 says was confirmed on a console disconnected from the internet, so no context starts and sceNpMatching2ContextStop answers CONTEXT_NOT_STARTED. Callbacks and the default request option are checked but never used. The room, user, world, server-id and signaling-info calls still throw
  • sceNpMatching2CreateContextA (libSceNpMatching2) - offline only: the A parameter (user id, service label, then a size of 0x10) and its checks follow a later shadPS4, and the user id is unused. The context takes the next of the same ten slots with 0x100 added: firmware 13.42, run natively, gave context 1 to sceNpMatching2CreateContext and 258 (0x0102) to the sceNpMatching2CreateContextA after it. That the 0x100 marks A contexts, and that slot 2 alone does not name the A context, are read from that single pair
  • sceNpMatching2RegisterLobbyEventCallback, sceNpMatching2RegisterLobbyMessageCallback (libSceNpMatching2) - offline only, not measured on a PS5: checked like the room callbacks, as shadPS4 does (event, message), and never called: no lobby is joined offline
  • sceNpMatching2SignalingGetConnectionStatus, sceNpMatching2AbortContextStart (libSceNpMatching2) - not measured on a console. With no room joined offline, the status call writes 0 (inactive) and returns 0 for a known context, as shadPS4 does; the PS3 module in RPCS3 also writes inactive but returns INVALID_ROOM_ID. A null status pointer throws (shadPS4 skips the write, RPCS3 returns INVALID_ARGUMENT); peer address and port are never written. The abort returns NOT_INITIALIZED before initialization, as RPCS3 does, and 0 for any context id, as both do