mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 08:33:12 -05:00
AnyPS5 resolves a title's imports by NID, so a title that imports a system function that no AnyPS5 library provides fails to load with an unresolved import. This declares 222 such exports across 11 PS5 system libraries that AnyPS5 implements but does not provide. Each declaration calls NotImplemented_nid_no_patch and returns 0; none of them implements the function. A declaration with a credible prototype uses it and cites the source with a pinned commit; the rest are declared without parameters, which resolves the import without making an ABI claim. The technical-debt files record the limitation per library. The list is the intersection of the export table of the console's library (function symbols only), the pinned aerolib names and the functions not yet defined anywhere in the repo. Every name recomputes to its NID with tools/nid_names.py. libSceAudio3d and libSceVoice are left out because #8331 declares them.
5.8 KiB
5.8 KiB
libSceHttp2 technical debt
Silent stubs
- libSceHttp2 - no request reaches the network, so
sceHttp2SetMinSslVersionhas no TLS connection to restrict and its value is ignored, as forsceHttp2SslEnableOptionandsceHttp2SslDisableOption. The three setters validateidagainst the live handle registry and returnSCE_HTTP2_ERROR_INVALID_ID(0x817B1100) for a handle that was never allocated, was deleted, or belonged to a terminated context, following prosper. Whether the console restricts the object kind these setters accept, and what it does with an id from a previous init/term cycle, is unverified, so any live handle kind is accepted and ids are never reused.sceHttp2Term,sceHttp2DeleteTemplate,sceHttp2DeleteRequest,sceHttp2CreateTemplate,sceHttp2CreateRequestWithURL,sceHttp2CreateCookieBoxandsceHttp2SendRequestAsyncalso return the invalid-id error for a handle of the wrong kind or no longer live, following prosper (not measured on a console)
Unknown function info
- sceHttp2WebSocketSetPingInterval (libSceHttp2, NID
YfaXPnc8PJE) - imported bylibdiscord_partner_sdk.prxof PPSA23126 (issue 2648). The parameters, the unit of the interval and the console errors are unknown. Every call throws. - sceHttp2WebSocketSetPingTimeout (libSceHttp2, NID
-MU9L6S3Fj4) - imported by Onimusha: Way of the Sword (PPSA27836 01.000.001), whose loader stopped on the missing export; not called during its start-up. The parameters and the console errors are unknown. Every call throws. - sceHttp2DeleteCookieBox (libSceHttp2) - imported by PPSA35943's Unity player. The
(int cookieBoxId)signature follows SharpProspero. A boxsceHttp2CreateCookieBoxreturned is discarded; an unknown or already deleted id returns the library's invalid-id error (0x817B1100), as prosper does; not measured on a console - sceHttp2SetResolveRetry (libSceHttp2) - signature
(int id, int32_t retry)from libSceHttp'ssceHttpSetResolveRetry; the value is accepted and ignored like the other Http2 settings, since no request reaches the network - sceHttp2WebSocketCreateRequest, sceHttp2WebSocketCloseAsync, sceHttp2WebSocketSendTextMessageAsync, sceHttp2WebSocketSendDataMessageAsync (libSceHttp2) - imported by PPSA16064 and not called during its start-up; unknown signatures
- libSceHttp2 cookie boxes (libSceHttp2) -
sceHttp2CreateCookieBoxis taken to take the library context id first, as in the prosper reimplementation; further arguments are unknown and ignored.sceHttp2SetRequestNoContentLengthis assumed to take only the request id. Cookies are never stored, sosceHttp2CookieFlushhas nothing to discard - sceHttp2AddCookie, sceHttp2AuthCacheFlush, sceHttp2CookieExport, sceHttp2CookieImport, sceHttp2GetCookie, sceHttp2GetCookieStats, sceHttp2RedirectCacheFlush, sceHttp2RemoveRequestHeader, sceHttp2SetAuthInfoCallback, sceHttp2SetCookieMaxNum, sceHttp2SetCookieMaxNumPerDomain, sceHttp2SetCookieMaxSize, sceHttp2SetCookieRecvCallback, sceHttp2SetCookieSendCallback (libSceHttp2) - signatures follow SharpProspero's HTTP2 bindings, but are not measured on a console; each call throws
- sceHttp2GetAuthEnabled, sceHttp2GetAutoRedirect, sceHttp2GetCookieBox, sceHttp2SetPreSendCallback (libSceHttp2) - names and NIDs are present in the PS5 3.20 export inventory and the verified NID name database, but no credible prototypes were found. They are declared without parameters solely to resolve known imports; this is not an ABI claim and callers must not call them until signatures are verified.
Functional
- libSceHttp2 asynchronous requests (libSceHttp2) never reach the network:
sceHttp2SendRequestAsyncaccepts the request, queues a completion whose result is the library's network error and triggers the user event named by the kqueue option (equeue at offset 0, event id at 8, user data at 16, layout inferred from PPSA17221);sceHttp2WaitAsyncreturns that completion. The completion'sevent_typevalue is unknown and left 0. PPSA17221 completes its request object only aftersceHttp2SendRequestAsyncreturns, and its handler for a synchronous failure callsshared_from_thisbefore that, so a send must not fail synchronously. PPSA15508 passes null kqueue and extra options at original VA 0xb63931, then callssceHttp2WaitAsyncwith a 24-byte result and a 2,000,000 timeout, and checks the result at offset 8. A null kqueue option therefore retains the same offline completion for direct waiting without an event notification. The timeout is not used because the offline result is already complete. This path follows the original title call and caller control flow, not a console measurement. A supplied kqueue with a missing user event, an extra option, and a wait with no completed operation still throw