Files
AnyPS5/docs/dev/debt/libSceNpWebApi2.md
T
Dean bb9d95a986 Merge pull request #11955 from kyon-eth/feat/npwebapi2-1360-inventory
feat(libSceNpWebApi2): declare 2 additional exports
2026-11-03 01:28:21 +13:00

9.4 KiB

libSceNpWebApi2 technical debt

Silent stubs

  • sceNpWebApi2AddWebTraceTag (libSceNpWebApi2) - the (request id, value) signature follows shadPS4. A title imports it. It validates that the value pointer is not null (returning INVALID_ARGUMENT 0x80553402), accepts any request id, and stores nothing: no request reaches a service, as sceNpWebApi2SendRequest fails with UNAVAILABLE at once, so trace tags are not transmitted offline
  • sceNpWebApi2PushEventRegisterCallback and sceNpWebApi2PushEventRegisterPushContextCallback (libSceNpWebApi2) - they store no callback and return a new id for any user context and filter, so an unknown context or filter is not rejected and no callback is ever called: no push event reaches a title, as network push operations are unimplemented and sceNpWebApi2PushEventCreatePushContext fails with UNAVAILABLE. The callback's prototype is not identified. The (user context id, filter id, callback, user argument) signature comes from one disassembled title (PPSA21564 01.007.000), not from a console: it calls them at 0x2ba5f0 and 0x2ba9e0 respectively, both with the id sceNpWebApi2CreateUserContext returned, the id sceNpWebApi2PushEventCreateFilter returned just before, the address of one of its functions and a user argument, and treats a negative result as failure
  • sceNpWebApi2DeleteUserContext, sceNpWebApi2PushEventDeleteFilter, sceNpWebApi2PushEventDeletePushContext, sceNpWebApi2PushEventUnregisterCallback, sceNpWebApi2PushEventUnregisterPushContextCallback and sceNpWebApi2PushEventStartPushContextCallback (libSceNpWebApi2) - return 0 for any id. sceNpWebApi2CreateUserContext, sceNpWebApi2PushEventCreateFilter and the callback registrations above hand out fresh ids without storing anything, so there is nothing to delete, unregister or start, and an unknown or already deleted id isn't rejected. Eight titles in my set delete a user context, and Borderlands 4 (PPSA01494), Ghost of Tsushima (PPSA02225), Astro Bot (PPSA21564), MXGP 26 (PPSA30839) and Super Meat Boy 3D (PPSA31162) also tear down filters, push contexts and callbacks.
  • sceNpWebApi2SetRequestTimeout (libSceNpWebApi2) - the (request id, timeout) signature follows shadPS4. Pinball FX (PPSA08755) calls it while its main menu loads. It succeeds for any request id and stores nothing: no request reaches a service, as sceNpWebApi2SendRequest fails with UNAVAILABLE at once, so no timeout can expire. shadPS4 returns LIB_CONTEXT_NOT_FOUND, USER_CONTEXT_NOT_FOUND or REQUEST_NOT_FOUND for an id it does not know; this library keeps no context or request table (sceNpWebApi2CreateRequest hands out counter values, and sceNpWebApi2AbortRequest, sceNpWebApi2AddHttpRequestHeader and sceNpWebApi2DeleteRequest also accept any id), so those errors are not reported until the request functions track their ids together

Unknown function info

  • libSceNpWebApi2 additional exports - these name/NID pairs are present in the inspected export inventory. Parameter lists, return types and behavior are unverified. Parameterless int declarations are import-resolution placeholders, not verified ABI prototypes; every entry throws through NotImplemented_nid_no_patch. No runtime functionality is implemented.

The inventory label is not authenticated retail-firmware provenance. The inspected image contains raw module-parameter words 0x13590001 at +0x10 and 0x13600007 at +0x14. Using the published static ELF membership procedure, its 46 unique function NIDs have sorted-LF SHA-256 c21118be1db21feb9029a685e16abd9ff7d5761c3d31b15d38b742d43c83a330; all 2 entries below are present. This digest identifies the function-NID set, not the whole binary or its ABI. An independent review on this PR corroborated these identities using a separately reported 13.42 reference; that does not establish matching binaries, prototypes or behavior.

Name NID
sceNpWebApi2IntGlobalPush2Initialize xIcy2kpLv6M
sceNpWebApi2IntGlobalPush2Terminate UCOQAasV6gw

Additional callable exports

  • Additional callable exports - 4 entries observed in the 3.20 export inventory and present in the later 13.60-labelled inventory are import-resolution declarations only. The later inventory label does not authenticate a retail firmware version. Parameter lists, return types and behavior are unverified; parameterless int declarations are placeholders, not verified ABI contracts. Every entry throws through NotImplemented_nid_no_patch. Unidentified names use literal NID aliases. No runtime functionality is implemented. Data exports require separate layout and ownership analysis. Identified candidate names match their NIDs in the public symbol database or supplemental catalog.
Name NID
Unknown 4N85o28Ifbk
Unknown A9IoYzANK3M
Unknown lylvdXiq1UE
Unknown qaMcX2+6ZiA