Commit Graph
105 Commits
Author SHA1 Message Date
boykopovar b167045830 fix(systemservice): recover activation handles and device argument types 2026-10-21 21:49:56 +03:00
boykopovar 50c8103af2 fix(systemservice): recover launch and process status structures 2026-10-21 21:49:56 +03:00
boykopovar 67ff7609c2 fix(systemservice): define application message payload layout 2026-10-21 21:49:55 +03:00
boykopovar 1db52e3e40 fix(systemservice): reject unsupported integer parameters 2026-10-21 21:49:54 +03:00
boykopovar 9e94b0cb71 fix(systemservice): define launch and microphone status layouts 2026-10-21 21:49:54 +03:00
boykopovar a8cb8345cd fix(systemservice): validate system name buffers and termination 2026-10-21 21:49:53 +03:00
boykopovar 28fdabd59c fix(systemservice): restore float progress returns and clock arguments 2026-10-21 21:49:53 +03:00
boykopovar 9b8c8e51d5 fix(usbstorage): restore mapping callbacks and system service aliases 2026-10-21 21:49:52 +03:00
boykopovar 4e9520a9db fix(systemservice): restore state manager and modal arguments 2026-10-21 21:49:52 +03:00
boykopovar 32b7c50240 fix(systemservice): restore process control and telemetry arguments 2026-10-21 21:49:51 +03:00
boykopovar d4f2911b74 fix(systemservice): restore collapsed launcher dispatch arguments 2026-10-21 21:49:51 +03:00
boykopovar c9c8675b1d fix(systemservice): restore assembly alias signatures 2026-10-21 21:49:50 +03:00
boykopovar 46e9270dc4 fix(systemservice): restore public query payload signatures 2026-10-21 21:49:50 +03:00
boykopovar 2386ab8e84 fix(systemservice): restore activation handles and process signatures 2026-10-21 21:49:49 +03:00
boykopovar 797fb303c5 fix(systemservice): restore error dialog layout and event arguments 2026-10-21 21:49:45 +03:00
boykopovar a1e95b92ed fix(systemservice): restore shell state setter arguments 2026-10-21 21:49:44 +03:00
boykopovar c1843d1350 fix(systemservice): restore notification and error report arguments 2026-10-21 21:49:44 +03:00
boykopovar 315c4b65a1 fix(systemservice): restore shell navigation and mount arguments 2026-10-21 21:49:43 +03:00
boykopovar d34675bb21 fix(systemservice): restore telemetry and user query signatures 2026-10-21 21:49:42 +03:00
boykopovar 8b48df0b92 fix(systemservice): restore account and display query arguments 2026-10-21 21:49:41 +03:00
boykopovar 0d911b3aec fix(systemservice): restore storage and hid query signatures 2026-10-21 21:49:41 +03:00
boykopovar c13664d573 fix(systemservice): restore shell query outputs and string buffers 2026-10-21 21:49:40 +03:00
boykopovar 0cdc168bc3 fix(systemservice): restore shell application data signatures 2026-10-21 21:49:39 +03:00
boykopovar bad5fb14a2 fix(systemservice): restore launcher lifecycle arguments 2026-10-21 21:49:39 +03:00
boykopovar 85b972ee40 fix(systemservice): restore launcher query output types 2026-10-21 21:49:38 +03:00
boykopovar 1c2ed0446c fix(systemservice): restore launcher process and status signatures 2026-10-21 21:49:38 +03:00
boykopovar ef071a8a63 fix(systemservice): restore app messaging signatures 2026-10-21 21:49:37 +03:00
Dean 71401e331c Merge pull request #8303 from hypermoist/fix/systemservice-console-results
fix(libSceSystemService): return what the firmware returns from 26 calls it does not implement
2026-10-21 20:41:03 +13:00
Dean 2d5b705331 Merge pull request #8734 from orezraey/fix/systemservice-param-string-measured-ps5
fix(libSceSystemService): answer sceSystemServiceParamGetString's errors and padding as measured on a PS5
2026-10-21 19:52:41 +13:00
Dean 0aa55ef293 Merge pull request #8430 from shanu337/fix/systemservice-tournament-stub
fix(libSceSystemService): stub sceSystemServiceOpenTournamentOccurrence
2026-10-21 19:25:03 +13:00
Dean GalvinandFederico Marras 7924d09f00 Merge origin/main into PR 8524
Co-authored-by: Federico Marras <[email protected]>
2026-10-21 16:34:11 +13:00
Dean 31f0e34cb5 Merge pull request #8337 from KernelPanicNT/feat/systemservice-player-dialog-param
feat(libSceSystemService): fill the player dialog param as the console does
2026-10-21 16:33:32 +13:00
Dean a683688fe0 Merge pull request #8335 from ymatrix1/feat/systemservice-missing-exports
feat(libSceSystemService): export missing firmware system service interfaces
2026-10-21 16:07:01 +13:00
orezraeyandClaude Opus 5.5 4b8f05e3e1 fix(libSceSystemService): answer sceSystemServiceParamGetString's errors and padding as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 19:41:19 -03:00
Dean 466ce3ac45 Merge pull request #7474 from Dripl1x/codex/ui-lab-immediate-exit-cache
fix(agc): preserve pipeline caches on immediate guest exit
2026-10-21 11:23:40 +13:00
Federico Marras 0bc9d64443 feat(libSceSystemService): end the running title through sceLncUtilKillApp and sceLncUtilKillAppWithReason 2026-10-20 17:06:08 +02:00
shanu337 df9b2fcdcc fix(libSceSystemService): stub sceSystemServiceOpenTournamentOccurrence 2026-10-20 18:13:31 +05:30
Yuri Olive 4721791b9c feat(libSceSystemService): export missing firmware interfaces 2026-10-20 07:10:56 -03:00
KernelPanicNT fe04a3c299 feat(libSceSystemService): fill the player dialog param as the console does 2026-10-20 09:44:57 +00:00
hypermistandClaude Opus 5.5 4506a0b7e7 fix(libSceSystemService): return what the firmware returns from 26 calls it does not implement
The clock, GPU CU count, activation and VR play zone calls return 0;
AcquireFb0, ReleaseFb0, the party voice and voice recognition calls and
LoadExecVideoServiceWebApp return 0x80A10002; LaunchUdsApp and
RequestToChangeRenderingMode return 0x80A10005. The firmware bodies of
these exports are a single return of that value.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-20 22:35:24 +13:00
alosta 2dc56f37c3 feat(libs): add unimplemented PS5 system library stubs and debt docs
Add boilerplate stubs for libSceAt9Enc, libSceAudiodecCpu, libSceAudiodecCpuHevag,
libSceM4aacEnc, libSceSulpha, libSceCamera, and libSceDepth2, each exporting its
known NIDs via NotImplemented_nid_no_patch. Include debt documentation with
sysmodule IDs and (where available) orbital-derived signatures.

Add sceSystemServiceShowDisplaySafeAreaSettings as a silent success stub and
document it under Silent stubs.

AI-assisted: yes
2026-10-20 03:21:07 +01:00
Adrià ad61cafde0 Merge pull request #7821 from xdCloudy/feat/ps5-system-services-exports
feat(libs): declare system service import stubs for OS 3.20 compatibility
2026-10-20 04:12:34 +02:00
Adrià ebb478c055 Merge pull request #6939 from milescoviello/fix/systemservice-psmkit-exports
fix(libSceSystemService): declare the PsmKit local process exports
2026-10-19 16:05:00 +02:00
xdCloudy 86083c6267 feat(libs): declare PS5 system service firmware exports 2026-10-19 09:56:57 +01:00
Evgeniy Kazarin 529dbb0480 fix(agc): preserve pipeline caches on immediate guest exit 2026-10-18 14:25:38 -04:00
mugurc f347461351 feat(libSceSystemService): LoadExec on macOS hosts
sceSystemServiceLoadExec found its own executable through /proc/self/exe
and replaced the process with fexecve after close_range, none of which
macOS has, so on macOS every call except "exit" threw. On macOS:

- the running executable's path comes from _NSGetExecutablePath, resolved
  with std::filesystem::canonical, as libSceNpEntitlementAccess and
  libSceFont already do;
- the target must be an x86-64 Mach-O executable (MH_MAGIC_64,
  CPU_TYPE_X86_64, MH_EXECUTE) that the user may run;
- macOS has no fexecve, so the process is replaced by path with
  posix_spawn and POSIX_SPAWN_SETEXEC; POSIX_SPAWN_CLOEXEC_DEFAULT closes
  every descriptor but the standard streams, as close_range does on Linux;
- before the replacement the exit starts and the shutdown callbacks run
  (LibcStartExit, then LibcRunShutdown), as on Linux, so guest threads
  that call a stopped library wait instead of unwinding;
- descriptor 2 gets the host standard error back before the replacement,
  as on Linux, and guest_system_load_exec_standard_error runs on macOS.

A launch without arguments keeps the Linux execv path, which macOS has.
guest_system_exit finds its own executable the same way on macOS.
2026-10-18 16:05:07 +03:00
Yunus Shaikh 619257798a refactor(libSceSystemService): share the console language setting
SystemServiceConsoleLanguage in SystemService.hpp reads ANYPS5_LANGUAGE
with the same default, range and error as sceSystemServiceParamGetInt,
which now calls it. Other libraries can pick the console language
without linking libSceSystemService.
2026-10-17 23:20:43 +00:00
milescovielloandClaude Opus 5.5 f69e6c0934 fix(libSceSystemService): declare the PsmKit local process exports
Forever Launcher (PPSA99030) imports sceSystemServiceAddLocalProcessForPsmKit
and sceSystemServiceKillLocalProcessForPsmKit and stops at load without
them. AnyPS5 runs one process and starts no other, so both throw without
reading their arguments. The parameters follow the title's own firmware
probes (path, argv and a 0x90-byte parameter block; the kill takes the
returned handle), and the unknown results are recorded as technical debt.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 20:43:32 +00:00
Dean 82cad6b5fc Merge pull request #6237 from milescoviello/fix/loadexec-exit-shutdown
fix(libSceSystemService): park guest threads during LoadExec's shutdown as exit does
2026-10-18 09:41:59 +13:00
milescovielloandClaude Opus 5.5 1c9d9d6bc5 fix(build): run the CPU-side tests in an ANYPS5_ENABLE_ASAN build
Under -DANYPS5_ENABLE_ASAN=ON with ASAN_OPTIONS=detect_leaks=0, 14 of
the 849 tests outside the AGC driver, shader and VideoOut suites failed
on main for reasons that come from the ASan build itself, not from the
code they test:

- libc copies the main executable's file-backed writable pages before
  remapping them anonymously. In an instrumented test executable those
  pages hold ASan's redzones around globals, so the memcpy reported a
  global-buffer-overflow at load (patched_libraries,
  guest_memory_lifetime). The ASan build copies the pages word by word
  without instrumentation.
- Five tests check that a local variable is on the thread's stack.
  With detect_stack_use_after_return, which is on by default on Linux,
  instrumented locals live on ASan's fake stack. These tests now run
  with it off. guest_kernel_is_stack also bounded the worker stack by
  the application area without the ASan build's arena offset.
- The relinker module tests and loadexec_arguments load instrumented
  libraries into a Python process or a relinked guest, so the ASan
  runtime is not first in the initial library list. They now run with
  verify_asan_link_order=0. Preloading libasan instead put its
  __cxa_throw interceptor ahead of libc.prx's and broke the unwind of
  an exception that LoadExec throws and catches.
- guest_allocator_failures limits RLIMIT_DATA to 128 MiB and then
  commits 300 GiB. ASan maps 37.5 GiB of shadow for that commit, which
  the limit refuses, and aborts. The ASan build skips that section.
- fiber checks the address of a local against the fiber's context too,
  so it runs without fake stacks as well. Its CheckActiveContext then
  reads the fiber stack word by word above that local, through the
  redzones of the frames on that stack, and is no longer instrumented.
- agc_multisample_guest_access passed aligned_alloc a size that is not
  a multiple of the alignment, which C11 does not allow and ASan
  rejects. It now rounds the size up.

add_asan_test_options appends to ASAN_OPTIONS for one test in an ASan
build and does nothing otherwise.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 13:55:21 +00:00