mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
6.0 KiB
6.0 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 (returningINVALID_ARGUMENT0x80553402), accepts any request id, and stores nothing: no request reaches a service, assceNpWebApi2SendRequestfails withUNAVAILABLEat 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
sceNpWebApi2PushEventCreatePushContextfails withUNAVAILABLE. 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 idsceNpWebApi2CreateUserContextreturned, the idsceNpWebApi2PushEventCreateFilterreturned just before, the address of one of its functions and a user argument, and treats a negative result as failure - 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, assceNpWebApi2SendRequestfails withUNAVAILABLEat once, so no timeout can expire. shadPS4 returnsLIB_CONTEXT_NOT_FOUND,USER_CONTEXT_NOT_FOUNDorREQUEST_NOT_FOUNDfor an id it does not know; this library keeps no context or request table (sceNpWebApi2CreateRequesthands out counter values, andsceNpWebApi2AbortRequest,sceNpWebApi2AddHttpRequestHeaderandsceNpWebApi2DeleteRequestalso accept any id), so those errors are not reported until the request functions track their ids together
Unknown function info
- sceNpWebApi2AddMultipartPart, sceNpWebApi2IntCreateRequest, sceNpWebApi2IntPushEventCreateCtxIndFilter and sceNpWebApi2SetMultipartContentType (libSceNpWebApi2) - names and NIDs are present in the PS5 3.20 export inventory; no-argument prototypes follow shadPS4's PS4 stubs, not measured on a console. These declarations have no parameters solely to resolve known imports and make no ABI claim.
- sceNpWebApi2InitializeForPresence, sceNpWebApi2IntInitialize and sceNpWebApi2IntInitialize2 (libSceNpWebApi2) - create a library context like
sceNpWebApi2Initialize, as shadPS4 does on the PS4: the argument structures (32 and 40 bytes) and thestruct_sizecheck that returnsSCE_NP_WEBAPI2_ERROR_INVALID_ARGUMENTfollow its declarations. The context type shadPS4 records (2 for the internal initializers, 3 for presence), the context name and the push configuration group are not kept, and the 0x8000 context limit is not applied. Not measured on a PS5 - sceNpWebApi2CreateMultipartRequest and sceNpWebApi2SendMultipartRequest (libSceNpWebApi2) - names and NIDs are present in the PS5 3.20 export inventory. The signatures follow the PS4 implementations in shadPS4 and its multipart sender; opaque struct pointers use
const void*orvoid*to preserve source constness. These prototypes are not measured on a console. - sceNpWebApi2IntPushEventCreateDestPs4CtxIndFilter (libSceNpWebApi2) - no credible prototype was found; it is declared without parameters solely to resolve known imports and makes no ABI claim.
- Push handle lifecycle: PS5 create/delete/abort signatures and invalid-context/invalid-handle errors are confirmed. Handles track ownership, timeout and abort state; deletion and context termination remove them. Network push operations and cancellation of active requests remain unimplemented.
- sceNpWebApi2GetMemoryPoolStats: PS5 confirms the context/statistics arguments and 32-byte output. An invalid context returns
0x80553404without changing output; a valid context with null output succeeds. Allocator accounting remains absent: peak and current usage still report zero instead of native pool allocations. - sceNpWebApi2PushEventSetHandleTimeout: PS5 confirms three 32-bit arguments, ownership validation and storing the entire timeout value without range checks. The stored timeout is not consumed because asynchronous push operations are unimplemented.