Files
AnyPS5/docs/dev/debt/libSceNpUtility.md
T
Dean ae5c5145db Merge pull request #10900 from EagleBearerYS/feat/netctl-ipcint-twins-v2
feat(libSceNetCtl): answer the IpcInt calls as their public twins, plus NpUtility's bandwidth test and Http's registered ids
2026-10-27 00:58:28 +13:00

15 KiB

libSceNpUtility technical debt

Unknown function info

Functional

  • sceNpBandwidthTestInitStart, sceNpBandwidthTestShutdownWithDetailedInfo (libSceNpUtility) - offline answers, not measured on a PS5: InitStart returns SCE_NP_ERROR_SIGNED_OUT as sceNpBandwidthTestInitStartDownload and InitStartUpload do, so no test is ever started, and ShutdownWithDetailedInfo returns SCE_NP_ERROR_INVALID_ARGUMENT and writes nothing, as sceNpBandwidthTestShutdown does. Neither reads an argument, so their parameterless declarations stand; their prototypes are still unknown
  • NpLookup and NpWordFilter (libSceNpUtility) - offline only, not measured on a PS5: the argument checks and their order, the limit of 32 title contexts and 32 requests, the word filter id bases 0x01000001 and 0x02000001, the 0x400-byte comment limit and single-use requests (INVALID_TYPE) follow shadPS4's lookup and word filter calls. sceNpLookupNpId, sceNpWordFilterCensorComment and sceNpWordFilterSanitizeComment then finish with SCE_NP_ERROR_SIGNED_OUT and write no NpId or comment; shadPS4's word filter accepts every comment as a stand-in for the server, so its result is not used
  • NpLookup and NpWordFilter waits and timeouts (libSceNpUtility) - IDs here carry no service: on the console, measured on firmware 13.42's module in an emulator (#10640), each ID holds its service in its high bits (Lookup requests 0x2xxxxxxx and title contexts 0x4xxxxxxx, word filter 0x02xxxxxx and 0x04xxxxxx), and SetTimeout, AbortRequest, PollAsync and WaitAsync find the object by those bits whichever service's call is made; here each call finds only its own service's IDs, which keep the ranges above. The timeouts are checked as measured and then have no effect, since no request reaches a server; the console stores them. A wait on a request deleted meanwhile returns INVALID_ID, unmeasured. The measured checks are followed: a null result first (0x80550704), a synchronous request (0x80550307 for Lookup, INVALID_ID for the word filter), the timeout bounds and the 0x18-byte async parameter