Commit Graph
11 Commits
Author SHA1 Message Date
boykopovar 35cf8d56cd refactor(sdk): add canonical headers for core libraries 2026-10-24 23:17:37 +03:00
SlugZero 58a1bcc5a3 feat(pad): support up to 4 controllers with dynamic user discovery
- Track up to 4 pad slots in libScePad with per-slot inputs, outputs, sensor fusion, and deadbands
- Support dynamic user login/logout events and multi-user registration in libSceUserService
- Map SDL controllers 0-3 to Players 1-4 in libSceVideoOut while preserving Player 1 keyboard and mouse composition
- Add test coverage for multi-controller pads and multi-user services
2026-10-24 19:21:15 +02:00
boykopovar 5862c362f4 fix(user-service): restore initialization and accessibility signatures 2026-10-21 21:48:00 +03:00
KernelPanicNTandClaude Opus 5.5 1fbbad7c55 fix(libSceUserService): check the thread priority on initialization
sceUserServiceInitialize reads the thread priority from the first int
of its parameters, and sceUserServiceInitialize2 takes it as its
argument. A PS5 returns 0x80960005 for a priority outside 0x100 to
0x2FF, and 0x80960003 when Initialize2 is called on an initialized
service, where this returned success.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 10:37:19 +00:00
hugodearaujoandClaude Opus 5.5 bae9b32ce3 fix(libSceUserService): report initialization the way the console does
Measured on a PS5 (firmware 13.60): before sceUserServiceInitialize and
after sceUserServiceTerminate, the login list, the event poll and
Terminate return NOT_INITIALIZED (0x80960002); a second Initialize
returns ALREADY_INITIALIZED (0x80960003); a new initialization reports
the initial user's login again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 12:10:35 -03:00
Dean 7ea2022227 Merge pull request #4104 from hugodearaujo/fix/username-console
fix(libSceUserService): answer sceUserServiceGetUserName as the console does
2026-10-12 21:40:46 +13:00
hugodearaujoandClaude Opus 5.5 802ec551c2 fix(libSceUserService): answer sceUserServiceGetUserName as the console does
On a PS5 (firmware 13.60) a null name returns INVALID_ARGUMENT first,
then a user id the console does not know returns 0x80960105 whatever
the buffer, and a buffer shorter than 17 bytes is zeroed before
BUFFER_TOO_SHORT is returned. Here an unknown user returned
INVALID_ARGUMENT and a short buffer was left untouched.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 20:12:43 -03:00
hugodearaujoandClaude Opus 5.5 d5f11b156b fix(libSceUserService): report an unrestricted age level
sceUserServiceGetAgeLevel reported 0. On a PS5 (firmware 13.60) the
value is the age of the user's parental restriction (0, 7, 12 and 15
measured) and 0xFFFFFFFF without one, so 0 is a user restricted to age
0. A user who is not logged in returns 0x80960009 (not logged in) with or
without an output, before the null output check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-11 17:07:45 -03:00
PacukaandClaude Opus 5.5 c618f53301 fix(userservice): report invalid arguments as 0x80960005
SCE_USER_SERVICE_ERROR_INVALID_ARGUMENT is 0x80960005; 0x80960002 is
NOT_INITIALIZED (the neighbouring NO_EVENT 0x80960007 and BUFFER_TOO_SHORT
0x8096000A already match the real sequence). The privacy getter returned the
raw value and now uses the constant.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-29 21:31:53 +02:00
Dean GalvinandClaude Opus 5.5 99bdf81364 feat(userservice): user name, user number and accessibility settings of the initial user
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01ButHENCbXXt8h4EZuWUabJ
2026-09-28 14:22:48 +13:00
boykopovar eb3af4e253 feat(libs): libSceuserService partial impl 2026-09-07 11:58:54 +03:00