Commit Graph
55 Commits
Author SHA1 Message Date
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
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
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
Yossi Yadgar 3cf57aa463 docs(debt): record the libSceNpManager Plus membership and content restriction calls 2026-10-21 18:33:39 +03:00
Dean 74bdc3a3a7 Merge pull request #8110 from savvaniss/feat/np-account-signed-out
feat(libSceNpManager): answer the PS4 account and presence queries for a signed-out user
2026-10-22 01:54:31 +13:00
Yossi Yadgar fcc7f2aba9 docs(debt): note where sceNpCheckCallbackForLib comes from 2026-10-21 14:59:31 +03:00
Savvanis SpyrosandClaude Opus 5.5 79a5d6b65a fix(libSceNpManager): refuse an unknown request in sceNpSetGamePresenceOnline
After the argument checks, shadPS4 looks the request up and returns
REQUEST_NOT_FOUND for one that was never created or was deleted. The
library already tracks live requests for sceNpSetTimeout.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 14:13:04 +03:00
Dean 9a8c2a1a05 Merge pull request #9003 from xdCloudy/feat/libSceNpManager-150-exports
feat(libSceNpManager): declare 150 pending exports
2026-10-21 23:32:40 +13:00
xdCloudy 2ae6cd18bf feat(libSceNpManager): declare 150 pending exports 2026-10-21 10:09:38 +01:00
Savvanis SpyrosandClaude Opus 5.5 44dfebb524 fix(libSceNpManager): take the request id and online id in sceNpSetGamePresenceOnline
shadPS4 declares sceNpSetGamePresenceOnline(req_id, online_id, presence)
and returns INVALID_ARGUMENT for request id 0 or a null online id. The
export took (user id, timeout), so a caller's arguments landed in the
wrong registers.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 10:06:06 +03:00
xdCloudy 11a097be24 feat(libSceNpManager): declare pending PS5 exports 2026-10-21 08:01:06 +01:00
orezraeyandClaude Opus 5.5 2a0f252396 feat(libSceNpManager): accept game presence callbacks while signed out
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 10:43:48 -03:00
Savvanis SpyrosandClaude Opus 5.5 dc642205a5 docs(libSceNpManager): list sceNpUnregisterPlusEventCallback under Silent stubs
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 15:19:42 +03:00
Savvanis SpyrosandClaude Opus 5.5 6e4c01f91c feat(libSceNpManager): answer the PS4 account id and presence queries for a signed-out user
sceNpGetAccountId and sceNpSetGamePresenceOnline report NP as signed
out, and sceNpUnregisterPlusEventCallback returns 0 like the premium
form.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:19:49 +03:00
Savvanis SpyrosandClaude Opus 5.5 d42fb3130d feat(libSceNpManager): answer the PS4 account queries for a signed-out user
sceNpGetAccountCountry, sceNpGetAccountDateOfBirth, sceNpGetAccountLanguage
and sceNpGetParentalControlInfo take an online id that matches no user,
sceNpGetUserIdByOnlineId and sceNpCheckPlus report NP as signed out, and
sceNpNotifyPlusFeature is declared and throws.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 01:04:01 +03:00
Adrià b5ab10185b Merge pull request #6121 from fdfawef324/claude/mc-np-state-callbacks
feat(libSceNpManager): register NP state callbacks and report signed-out from sceNpCheckCallback
2026-10-18 18:57:53 +02:00