Commit Graph
68 Commits
Author SHA1 Message Date
Dean 183b3ce70a Merge pull request #15251 from BunnyFl/fix/libscenpmanager-sandbox-info
feat(libSceNpManager): answer sceNpGetSandboxInfo as firmware 13.42 does in the production environment
2026-11-04 08:12:06 +13:00
Dean 3f0b20b863 Merge pull request #15201 from MarrasFederico/feat/np-set-game-presence-online-a
feat(libSceNpManager): answer sceNpSetGamePresenceOnlineA for a signed-out user
2026-11-03 21:12:13 +13:00
BunnyFlandClaude Opus 5.5 6f24690b78 feat(libSceNpManager): answer sceNpGetSandboxInfo as firmware 13.42 does in the production environment
Firmware 13.42's libSceNpManager.sprx returns 0x80550003 for a null
buffer, clears the 0x50-byte block, and in the production NP environment
("np" or "e1-np") writes RETAIL at 0x00 and LIVE at 0x28. AnyPS5 now
gives that answer instead of throwing, so PPSA28416 gets past its first
call. The branch chosen by an unidentified import and the module's
not-initialised result are listed in the debt entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 23:15:15 +01:00
Federico Marras 72ccb10bd9 feat(libSceNpManager): answer sceNpSetGamePresenceOnlineA for a signed-out user
sceNpSetGamePresenceOnlineA in PendingExports.cpp threw NotImplemented_nid_no_patch. In shadPS4 (2183807e59, np_manager.cpp L1092-L1119) it takes (reqId, userId, presence), rejects USER_SERVICE_USER_ID_INVALID and reqId 0 with SCE_NP_ERROR_INVALID_ARGUMENT, and returns SCE_NP_ERROR_REQUEST_NOT_FOUND for an unknown or deleted request. Validate those cases in that order and return SCE_NP_ERROR_SIGNED_OUT for a live request, matching sceNpSetGamePresenceOnline on main.
2026-11-02 21:13:50 +01:00
Noxy-HNR 158b662f7e fix(libSceNpManager): keep in-game message preparation throwing and bound the ids 2026-11-02 16:29:04 +00:00
Noxy-HNR aef0e4aeef test(libSceNpManager): check that in-game message handles get distinct ids 2026-11-02 16:28:54 +00:00
Noxy-HNR 7fa4db97f5 feat(libSceNpManager): add the in-game message context and handle lifecycle
Implement sceNpInGameMessageInitialize, Terminate, CreateHandle, DeleteHandle, AbortHandle, PrepareA and SendDataA for a console with no signed-in user.
2026-11-02 16:28:45 +00:00
Dean 4e09599a75 Merge pull request #10617 from nozzzd/feat/npmanager-ps5-class-exports
feat(libSceNpManager): declare 189 PS5 pending exports
2026-11-02 23:23:23 +13:00
Dean 33aa4c3df7 Merge pull request #12330 from fishingpvalues/feat/libscenpmanager-getsandboxinfo
docs(debt): name PPSA28416 by its ID in the sandbox info entry
2026-11-02 12:03:18 +13:00
Dean d90e2c16f7 Merge pull request #14234 from xXPBSXx/fu/q6-np-signedup-debt
docs(debt): name what the emulators answer for sceNpHasSignedUp and sceNpCheckNpReachability
2026-11-01 19:25:39 +13:00
Dean cbcb37b314 Merge pull request #12367 from kyon-eth/feat/npmanager-1360-inventory
feat(libSceNpManager): declare 148 missing callable exports
2026-11-01 13:22:26 +13:00
xXPBSXxandClaude Sonnet 5.5 d39143c13c docs(debt): name what the emulators answer for sceNpHasSignedUp and sceNpCheckNpReachability
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 21:09:31 +01:00
Kyon 466624611b refactor(libSceNpManager): avoid inventory PR conflicts 2026-10-30 20:25:44 +00:00
Kyon 056dd33add feat(libSceNpManager): declare older callable exports 2026-10-30 20:25:44 +00:00
Kyon e56849efdc Merge remote-tracking branch 'origin/main' into feat/npmanager-1360-inventory
# Conflicts:
#	docs/dev/debt/libSceNpManager.md
2026-10-30 01:55:25 +00:00
dfischer-mw b4986cbd58 docs(debt): name PPSA28416 by its ID in the sandbox info entry
Per the reviews of PR #12330: the throwing stub and the Unknown function info
entry stay as main has them, and the try/catch test asserting the stub's throw
is removed as the maintainer requested. The entry names the title by its ID
only, without the game's name.
2026-10-29 15:05:21 +01:00
Dean Galvin ab1a5fb8ea Merge branch 'main' into feat/npmanager-ps5-class-exports 2026-10-30 00:59:34 +13:00
Adrià b462d3b58a Merge pull request #12429 from simnJS/feat/npmanager-wait-async
feat(libSceNpManager): answer sceNpWaitAsync as sceNpPollAsync does
2026-10-29 11:18:51 +01:00
Dean ec2bc32a07 Merge pull request #11530 from milescoviello/docs/np-user-id-by-account-id-call-sites
docs(libSceNpManager): note how two titles call sceNpGetUserIdByAccountId
2026-10-29 07:20:59 +13:00
Kyon 036b8889d7 fix(libSceNpManager): clarify export identities and verifiable membership 2026-10-28 13:54:00 +00:00
simnJS 9b9e87bd72 feat(libSceNpManager): answer sceNpWaitAsync as sceNpPollAsync does 2026-10-28 14:18:04 +01:00
Kyon 03bd57b62d docs(libSceNpManager): record firmware scope and public identity evidence 2026-10-28 12:40:14 +00:00
Kyon 996252df8e feat(npmanager): complete unclaimed callable export inventory 2026-10-27 19:12:25 +00:00
Kyon e483f7d073 feat(libSceNpManager): declare 6 additional exports 2026-10-27 17:08:28 +00:00
milescovielloandClaude Opus 5.5 af244a7748 docs(libSceNpManager): record the null-callback check in the premium callback entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 12:47:26 +00:00
milescovielloandClaude Opus 5.5 7fa9550799 docs(libSceNpManager): list the premium-feature, title ID and premium callback calls as silent stubs
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 12:42:34 +00:00
Dean 27310a12eb Merge pull request #9282 from MarcZX10/codex/npmanager-waitasync-unimplemented
feat(libSceNpManager): add explicit sceNpWaitAsync stub
2026-10-27 18:19:42 +13:00
milescovielloandClaude Opus 5.5 99962d0776 docs(libSceNpManager): note how two titles call sceNpGetUserIdByAccountId
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 18:07:41 +00:00
Yunus Shaikh 350d27a531 Merge branch 'feat/npmanager-idmapper-requests' into feat/npmanager-int-getters 2026-10-25 16:00:59 -07:00
Yunus Shaikh c65fa57993 Merge main into feat/npmanager-idmapper-requests 2026-10-25 15:59:53 -07:00
Adrià 49d1f9b07e Merge pull request #9726 from KernelPanicNT/fix/npmanager-state-callback-id-error
fix(libSceNpManager): return the module error for an out-of-range state callback id
2026-10-25 23:49:10 +01:00
Yunus Shaikh 3eceb81ad0 fix(libSceNpManager): follow the measured NpManagerInt getter checks
BunnyFl measured firmware 13.42 libSceNpManager.sprx for the eleven
NpManagerInt getters. They now take the measured arguments and refuse
as measured: user id -1 or a null required pointer gives
INVALID_ARGUMENT, the authorization calls also refuse their value and
mode ranges (0x80550004 for the mode), and the PSNO URI form refuses
its size (0x80550011) and a URI of 0x2000 bytes or more (0x80550005).
Past the checks they keep main's offline signed-out answer for any
request id, and the tests take their request ids from the NpManagerInt
request table.
2026-10-25 12:20:58 +00:00
Yunus Shaikh 4e9ad120a8 Merge branch 'fix/npmanager-idmapper-measured-v2' into fix/npmanager-int-getters-measured
# Conflicts:
#	core/libs/tests/GuestNpManager.cpp
2026-10-25 12:20:58 +00:00
Yunus Shaikh 9345b1fe88 fix(libSceNpManager): follow the measured IdMapper checks and NpManagerInt request table
BunnyFl measured firmware 13.42 libSceNpManager.sprx. The IdMapper
account-id lookups take seven arguments: a request id of 0 or less
gives 0x80553085, then user id -1, a null pointer or a value outside
1 to 1000 gives 0x80553083, and past the checks they answer signed out
as main's offline model does. IdMapper abort and delete refuse a
request id of 0 or less with 0x80553085, and IdMapper requests get a
counter of their own instead of the sceNpCreateRequest pool.

NpManagerInt requests sit in a 64-slot table of their own: the 65th
live request gives 0x80559D05, delete gives 0x80559D0A for an id the
table does not hold, and abort answers from the offline service.
2026-10-25 12:13:08 +00:00
Yunus Shaikh bad1a7994d docs(libSceNpManager): note the NpManagerInt account-id getters waiting on the offline model 2026-10-25 05:42:38 +00:00
Yunus Shaikh 3fbd8a1453 feat(libSceNpManager): report the NpManagerInt authorization calls as signed out
sceNpManagerIntAuthGetAuthorizationCode, AuthGetIdToken,
GetAuthorizationCode and GetAuthorizationCodeWithPsnoUri return
SCE_NP_ERROR_SIGNED_OUT. That is the answer libSceNpAuth's
authorization-code and ID-token calls give for a live request while NP
is signed out. Their signatures are unknown, so they read no argument.
2026-10-25 05:42:22 +00:00
Yunus Shaikh fe2f380636 feat(libSceNpManager): report the NpManagerInt user lookups as signed out
sceNpManagerIntGetUserIdByOnlineId and GetUserIdByNpId return
SCE_NP_ERROR_SIGNED_OUT, as sceNpGetUserIdByOnlineId does while NP is
signed out. An NpId carries the online ID, so the NpId form is the same
lookup. Neither reads an argument.
2026-10-25 05:41:50 +00:00
Yunus Shaikh c4363b0415 feat(libSceNpManager): report the NpManagerInt profile getters as signed out
sceNpManagerIntGetAccountAge, GetAccountCountryA, GetAccountLanguageA,
GetNpId and GetOnlineId return SCE_NP_ERROR_SIGNED_OUT, as their public
twins do while NP is signed out. Their signatures are unknown, so they
read no argument and write nothing.
2026-10-25 05:41:13 +00:00
Yunus Shaikh 5997af6c13 feat(libSceNpManager): report the IdMapper account-id lookups as signed out 2026-10-25 02:35:28 +00:00
Yunus Shaikh b1f6cc6a91 feat(libSceNpManager): implement the NpManagerInt request lifecycle 2026-10-25 02:34:28 +00:00
Yunus Shaikh 5d9f8168db feat(libSceNpManager): implement the IdMapper request lifecycle 2026-10-25 02:33:34 +00:00
MarcZX10 14b028afd6 feat(libSceNpManager): add explicit sceNpWaitAsync stub 2026-10-25 01:13:46 +00:00
nozzzd 33fad67fd9 docs(libSceNpManager): list the pending declarations after the existing entries 2026-10-24 13:29:18 +00:00
nozzzd 98a12e2aa5 feat(libSceNpManager): declare 189 PS5 pending exports 2026-10-24 12:22:55 +00:00
sivasdeadknight 71932c0a56 fix(libSceNpManager): validate request ids for abort, delete and poll
sceNpAbortRequest and sceNpDeleteRequest return SCE_NP_ERROR_REQUEST_NOT_FOUND
for an id that was never created or was deleted; sceNpPollAsync does too and
additionally rejects a null result pointer with SCE_NP_ERROR_INVALID_ARGUMENT
before reading the id, without writing the caller's result. A live request
keeps its signed-out completion. This pins the validation half of shadPS4's
np_manager model that issue #9277 reports; the kind, completion state and
WaitAsync publication half stays open, documented in the debt entry, and the
sceNpWaitAsync export itself stays with PR #9282.

Tests: guest_np_manager tests the four absent/deleted probes (0, -1, 0x7fffffff,
a deleted id) for all three calls, output preservation, null-result precedence
and the live-id paths; guest_np_reachability unchanged. Both pass on Linux; the
new asserts failed on unpatched exports first.
2026-10-23 03:28:13 +02:00
KernelPanicNT 8029493488 fix(libSceNpManager): return the module error for an out-of-range state callback id
sceNpUnregisterStateCallbackA returns 0x80550015 for a callback id
outside 1..8, compared unsigned so 0, negative ids and INT_MIN are
included, as libSceNpManager.sprx does at RVA 0x15b10 in prosper's
reading. An empty slot still returns 0x80550009.
2026-10-22 18:24:56 +00:00
Rookie f0e63df885 feat(libSceNpManager): answer the user ID account queries for a signed-out user
sceNpCheckNpAvailabilityA, sceNpGetAccountLanguageA,
sceNpGetParentalControlInfoA and sceNpGetAccountDateOfBirthA return
SIGNED_OUT without writing, like sceNpGetAccountCountryA. The game
presence queries report OFFLINE. A null pointer or user id -1 is
INVALID_ARGUMENT, and the request forms refuse request id 0 and an
unknown request as sceNpSetGamePresenceOnline does. Signatures and
checks follow shadPS4 and Orbital; sceNpIsPlusMember keeps throwing.
2026-10-22 14:33:49 +01:00
Dean a16664584e Merge pull request #9225 from YossiYad/feat/npmanager-plus-content-restriction
feat(libSceNpManager): implement sceNpIsPlusMember and sceNpSetContentRestriction
2026-10-22 19:09:14 +13:00
Dean b27924d851 Merge pull request #9085 from YossiYad/feat/npmanager-check-callback-for-lib
feat(libSceNpManager): implement sceNpCheckCallbackForLib
2026-10-22 18:53:46 +13:00
boykopovar 6aa2dd97b7 fix(npmanager): restore availability output and online id input 2026-10-21 21:53:57 +03:00