Commit Graph
7 Commits
Author SHA1 Message Date
Yunus Shaikh 2bc794c94f test(libSceSystemService): stop asserting that unmeasured cases throw
sceLncUtilBlockAppSuspend(nullptr), sceLncUtilUnblockAppSuspend(nullptr)
while a block is held, the null outputs of
sceShellCoreUtilGetSocialScreenStatus and
sceShellCoreUtilIsEyeToEyeDistanceAdjusted, and the eye-to-eye queries
for users other than the logged-in one are unmeasured; tests no longer
pin them as throws. The answered cases and the measured null-output
error codes stay.
2026-10-27 20:27:56 -07:00
Yunus Shaikh d64a74d8e9 fix(libSceSystemService): answer the measured null-output and unblock cases
BunnyFl measured these cases against firmware 13.42's libSceSystemService
in the PR thread (behaviour only), so they no longer throw:

- sceShellCoreUtilGetRemotePlayStatus, GetSharePlayStatus and
  GetGameLiveStreamingStatus return 0x80e30003 for a null output and
  write nothing.
- sceSystemServiceGetRemoteplayStatus has no null check of its own: it
  forwards, so a null output returns the ShellCoreUtil error, not
  SYSTEM_SERVICE_ERROR_PARAMETER.
- sceLncUtilIsPs2Emu returns 0x80940005 for a null output.
- sceLncUtilUnblockAppSuspend with no block left returns
  SCE_KERNEL_ERROR_EBUSY and changes nothing, before reading the reason.

A null reason in sceLncUtilBlockAppSuspend, a null reason in an unblock
while a block is held, sceShellCoreUtilGetSocialScreenStatus with a null
output and the service-answered eye-to-eye cases still throw, and the
debt entries say why.
2026-10-23 03:43:52 -07:00
Yunus Shaikh f51064dbee fix(libSceSystemService): leave unmeasured suspend blocks and other users unimplemented
A null reason, an unblock with no block left and an eye-to-eye query for a user other than the logged-in one now go through NotImplemented_nid_no_patch instead of throwing invented errors, since the console's answers to them are not measured.
2026-10-21 20:53:37 -07:00
Yunus Shaikh 4a815a8bf5 feat(libSceSystemService): report no disc drive, USB storage, app move or PS2 emulator
AnyPS5 runs the title from its folder as /app0 and models none of these:
libSceDiscId and sceKernelHwGetBdDriveInfo throw, every libSceUsbStorage
device call throws, sceShellCoreUtilDeclareBeginOfExternalStorageAppMove
throws, and sceSystemServiceAddLocalProcessForPs2Emu throws, so the
running process is always the title's own PS5 executable.

sceSystemStateMgrIsBdDriveReady, sceShellCoreUtilIsUsbMassStorageMounted
and sceShellCoreUtilIsExternalStorageAppMoveInProgress return false, and
sceLncUtilIsPs2Emu writes false. A null output to sceLncUtilIsPs2Emu
throws, since no sceLncUtil function in the tree answers one.
2026-10-22 02:38:17 +00:00
Yunus Shaikh 81fd4e5dda feat(libSceSystemService): report the absent shell UI and PS VR
AnyPS5 has no shell UI: sceSystemServiceGetStatus never reports a system
UI overlay or background execution, and the host has no auto power-off
timer. The shell UI therefore never takes the foreground, overlays the
impose screen, runs a screen saver or shuts down, and those queries
return false.

libSceHmd detects no headset, so there is no PS VR social screen and the
logged-in user's eye-to-eye distance was never adjusted. Another user ID
throws, since the console's error for it is not measured.

The sceSystemService twins forward to their sceShellCoreUtil and
sceLncUtil targets. sceSystemServiceIsEyeToEyeDistanceAdjusted returns
SYSTEM_SERVICE_ERROR_PARAMETER for a null output before forwarding, as
its neighbours do, and the sceShellCoreUtil forms throw for one.
2026-10-22 02:38:17 +00:00
Yunus Shaikh a2e9ffd89c feat(libSceSystemService): report no Remote Play, Share Play or broadcast
The status queries answer from what the tree already reports for these
services: libSceRemoteplay's connection status is DISCONNECT,
libSceSharePlay has neither a host nor a visitor, and
libSceGameLiveStreaming's status has isOnAir false. The ShellCore
setters that would change these answers throw.

sceSystemServiceGetRemoteplayStatus and
sceSystemServiceIsGameLiveStreamingOnAir forward to their
sceShellCoreUtil twins. sceSystemServiceGetRemoteplayStatus returns
SYSTEM_SERVICE_ERROR_PARAMETER for a null output before forwarding, as
sceSystemServiceGetNoticeScreenSkipFlag does. No sceShellCoreUtil
function in the tree answers a null output, so the sceShellCoreUtil
forms throw for one.
2026-10-22 02:38:17 +00:00
Yunus Shaikh 2cfa852a40 feat(libSceSystemService): answer suspend blocks and notifications
AnyPS5 never suspends the running title: sceSystemServiceGetStatus never
reports background execution and sceSystemServiceReceiveEvent has no
event to deliver. Enabling or disabling the suspend notification, and
blocking or unblocking a suspend, therefore change nothing and return
success. The sceSystemService notification calls forward to their
sceLncUtil twins.

A null reason and an unblock with no block left throw, since the
console's answers to them are not measured.

The new guest_system_service_status tests check each answer.
2026-10-22 01:37:59 +00:00