Files
AnyPS5/docs/dev/debt/libSceNpParty.md
T
Eduardo Ruiz 7d2a2f731a feat(libSceNpParty): report the voice-chat priority and register the private handler
Recover the four signatures from the 11.00 wrappers. GetVoiceChatPriority and
SetVoiceChatPriority validate their output and priority (1 or 2) and answer
NOT_IN_PARTY, since the local member is never in a party. The private handler is
stored after the public handler callback is recorded, and both handler state
errors use the wrapper's 0x80552511.
2026-11-02 01:39:50 +01:00

5.1 KiB

libSceNpParty technical debt

Unknown function info

Functional

  • sceNpPartyGetVoiceChatPriority and sceNpPartySetVoiceChatPriority (libSceNpParty) - the 11.00 wrapper confirms the out-pointer check in Get and, in Set, a 32-bit priority accepted only when priority - 1 is 0 or 1, with INVALID_ARGUMENT for every other value. The priority belongs to the local party member, so both return NOT_IN_PARTY (0x80552506) and write nothing because no party ever exists; this matches the PS4 reimplementation in PS4Recomp. The console's result for a valid priority after initialization is not measured
  • sceNpPartyRegisterPrivateHandler and sceNpPartyUnregisterPrivateHandler (libSceNpParty) - the 11.00 wrappers show that private registration requires the public handler callback recorded from offset 8 of the block passed to sceNpPartyRegisterHandler/RegisterHandlerA, returning 0x80552511 while it is absent; both accept any private-handler pointer, including null, store or clear it and return 0, and the handler is never invoked. Unregister returns 0x80552511 when no non-null private handler is registered. The name and exact meaning of 0x80552511 are inferred
  • sceNpPartyRegisterHandler and sceNpPartyRegisterHandlerA (libSceNpParty) - both record the callback at offset 8 of the handler block so that private registration can check it; RegisterHandlerA returns 0x80552511 on a second registration while RegisterHandler accepts and replaces it, as the 11.00 wrappers do. The block's version field at offset 4 is not inspected, unlike the wrapper, and no callback is ever invoked. The rest of the block stays opaque and is not copied