Files
AnyPS5/docs/dev/debt/libSceNpTus.md
T
Dean 26b06e9923 Merge pull request #9531 from zaryabzip/feat/nptus-tss-title-contexts
feat(libSceNpTus): create TSS title contexts in the TUS context table
2026-10-23 12:59:23 +13:00

7.4 KiB

libSceNpTus technical debt

Unknown function info

Functional

  • sceNpTusCreateNpTitleCtxA (libSceNpTus) - creates a title context without checking sign-in, up to 32 contexts (TOO_MANY_OBJECTS beyond); shadPS4 returns the sceNpGetNpId error instead. Requests are limited to 256, and the limits are not measured on a console.
  • sceNpTssCreateNpTitleCtx and sceNpTssCreateNpTitleCtxA (libSceNpTus) - that TSS title contexts share the TUS context table and its 32-context limit is inferred from shadPS4, which redirects both to the TUS creators, and from TSS requests coming from sceNpTusCreateRequest; nothing is measured on a console. The A form is sceNpTusCreateNpTitleCtxA. The NpId form returns INSUFFICIENT_ARGUMENT for a null npId and INVALID_ARGUMENT for service label 0xFFFFFFFF before the limit, as shadPS4's sceNpTusCreateNpTitleCtx does; the signatures are shadPS4's and fpPS4's, and Orbital's for the A form.
  • sceNpTusPollAsync, sceNpTusWaitAsync (libSceNpTus) - there is no PSN, so every implemented *Async call whose arguments pass the checks starts a request that finishes at once with SCE_NP_ERROR_SIGNED_OUT, which poll and wait report and the blocking calls return; shadPS4 returns SIGNED_OUT from the *Async call itself when no shadNet client is signed in, and RPCS3 returns INVALID_ONLINE_ID while offline, marked there as probable behaviour. An abort stays set, so every later operation on the request, blocking ones included, finishes with ABORTED; in shadPS4 an abort only ends the operation in progress. Until an operation has started, poll returns 1 and wait returns INVALID_ARGUMENT as in shadPS4; RPCS3 blocks until a result is set.