Commit Graph
20967 Commits
Author SHA1 Message Date
Dean Galvin 835c2995ed feat(libSceUserService): report the keyboard type of the system language
sceUserServiceGetKeyboardType now returns the keyboard type of the configured
system language from the repository owner's table (languages 0 to 29), with 20
(US English) for a language outside it. The input variants stay 0, the only
value the table gives for Japanese and Traditional Chinese.

sceConvertKeycodeGetImeKeyboardType takes the PS4 client rule from the title ID
prefix (CUSA is PS4); a missing or custom ID is treated as PS5. Tests walk the
owner's table through both calls and the title ID cases; both debt entries
updated.
2026-10-23 22:40:29 +13:00
Dean Galvin d517eb7cfe Merge main into fix/convertkeycode-ime-keyboard-type 2026-10-23 22:37:15 +13:00
Nuno Silva 25cbaf1c82 Merge remote-tracking branch 'upstream/main' into perf/agc-sampled-snapshot-buffer-reuse
# Conflicts:
#	core/libs/prx/libSceAgcDriver/tests/TextureFormat.cpp
2026-10-23 10:29:56 +01:00
xXPBSXxandClaude Sonnet 5.5 b495f88512 docs(debt): note how a title calls sceKernelFtruncate
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-23 11:29:32 +02:00
xXPBSXxandClaude Sonnet 5.5 1b7ad1d97c docs(debt): note how a title uses sceSysmoduleIsLoaded
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-23 11:28:18 +02:00
xXPBSXxandClaude Sonnet 5.5 c17085cad5 docs(debt): note how a title calls sceJpegDecDecode
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-23 11:27:03 +02:00
Dean b3e42bd1eb Merge pull request #8359 from Ragbie/fix/windows-pwrite-append
fix(libkernel): append positioned writes on an O_APPEND descriptor on Windows
2026-10-23 22:23:57 +13:00
Dean 23cc560021 Merge pull request #9037 from YossiYad/feat/npcommon-utilities
feat(libSceNpCommon): implement the online ID utilities and the mutex, condition and clock wrappers
2026-10-23 22:23:14 +13:00
Dean 4c3cab4f1c Merge pull request #9320 from MarrasFederico/feat/ngs2-render-buffer-codes
fix(libSceNgs2.native): return the module's errors for render buffer counts, types and null buffers
2026-10-23 22:22:51 +13:00
VakzOsandClaude Opus 5.5 3fe7217807 test(libSceLibreSsl): set up the DES test for unwinding on Windows
The DES test catches std::invalid_argument thrown through the library's
sysv_abi frames; like the digest test, it now links libc and calls
configure_windows_unwind.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01FzhWRMauD3ouc8kSxT2NnT
2026-10-23 09:20:18 +00:00
JJenkxandClaude Opus 5.5 860c3aa538 fix(relinker): ignore an unmapped note segment outside a module's file
0c6765e6a6 stopped bounds-checking the SCE comment and library version
segments, which decrypted modules list past the end of the file. Some
decrypted modules also end with an unmapped PT_NOTE (address 0, memory
size 0) right after those two: Hollow Knight: Silksong's
Media/Modules/Il2cppUserAssemblies.prx (PPSA12544) lists one at offset
0x54ad408 in a file of 0x54ad407 bytes, so converting the title failed
with "ELF range exceeds file". The guest writer already drops unmapped
notes (SegmentFilter), and nothing reads their bytes.

Skip the bounds check for a note with address 0 and memory size 0. A
mapped note outside the file still fails. test_guest_trailing_note
covers both, with an unmapped note inside the file as well.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 05:18:56 -04:00
Dean 1f1acb195e Merge pull request #9322 from zaryabzip/feat/kernel-sys-condattr-getclock
feat(libkernel_sys): implement scePthreadCondattrGetclock
2026-10-23 22:16:46 +13:00
Adrià a7d342efc9 Merge pull request #6948 from alfalfa-star/fix/agc-linear-readback-store
fix(agc): store linear compute writes behind their dispatch
2026-10-23 11:12:44 +02:00
Federico Marras 74c6791861 Merge remote-tracking branch 'upstream/main' into feat/ngs2-system-rate-grain-codes
# Conflicts:
#	docs/dev/debt/libSceNgs2.native.md
2026-10-23 11:08:40 +02:00
Simone 79abbd62db Merge #8976 into feat/libSceCesCs-mbc-sjis-code 2026-10-23 11:08:22 +02:00
Simone cd4bfc33e0 Merge #8972 into feat/libSceCesCs-gbk-euc-cn 2026-10-23 11:08:22 +02:00
Federico Marras 012b87293b Merge remote-tracking branch 'upstream/main' into feat/ngs2-render-buffer-codes
# Conflicts:
#	docs/dev/debt/libSceNgs2.native.md
2026-10-23 11:07:02 +02:00
Dean Galvin 2f741e737f Merge main into feat/libkernel-underscore-socket-signal-entries 2026-10-23 22:00:32 +13:00
Dean 8948f1cec5 Merge pull request #8493 from leorossi2005/fix/cmake-mingw-ranlib-detection
build(libs): locate ranlib adjacent to compiler when CMAKE_RANLIB is unset
2026-10-23 21:54:04 +13:00
Yunus Shaikh 54196438fc test(agc): present behind a pending writer of the display keys without the GPU mutex
A headless device presents a DCC display buffer while a recorded kernel
that copies over its keys is still pending, holding the GPU mutex once as
Driver::Present does. The present must release the mutex for that wait
(the hold serial advances), read the keys the kernel stored and reach the
swapchain; with nothing pending it must keep the mutex. It stops at the
missing swapchain, after the key check.
2026-10-23 08:51:27 +00:00
lakhantheboss ebba433323 fix(libSceSharePlay): return invalid args error for invalid prohibition in sceSharePlayProhibitController
Return SCE_SHARE_PLAY_ERROR_INVALID_ARGS (0x810E0001) instead of throwing APS5_INVALID_ARG_EX when an invalid prohibition value is passed to sceSharePlayProhibitController. Update regression test assertions in GuestSharePlay to verify the error code and record technical debt.
2026-10-23 14:19:28 +05:30
Dean fef15751e6 Merge pull request #8641 from Danigamer05/fix/libkernel-windows-birthtime
fix(libkernel): clamp Windows birth time when setting earlier timestamps
2026-10-23 21:49:21 +13:00
Dean 24331355f7 Merge pull request #9060 from ags-arnab/feat/net-ioctl
feat(libSceNet): implement sceNetIoctl
2026-10-23 21:48:24 +13:00
Dean 6ee38720fc Merge pull request #9327 from MarrasFederico/feat/ngs2-atrac9-module-loops
fix(libSceNgs2.native): parse ATRAC9 smpl loops as the module does
2026-10-23 21:47:55 +13:00
Dean dd5b2a3869 Merge pull request #9736 from LeandroLP23/feat/libkernel-kern-proc-env
feat(libkernel): answer kern.proc.env for the calling process
2026-10-23 21:47:33 +13:00
Dean Galvin cee93db419 Merge main into feat/kernel-sys-thread-queries 2026-10-23 21:45:17 +13:00
Dean Galvin 54a5b24b5f fix(agc): share the empty-indirect skip state between draw and finishDraw
The draw was split into draw and finishDraw, so the skip flag and the per-program
classification cache declared in draw were out of scope where finishDraw records
the classification. Indirect draws never hand off to the finisher, so both
functions run on the same thread; make the cache and the switch file-scope
accessors that both use.
2026-10-23 21:44:50 +13:00
Dean Galvin 8199835b02 Merge main into perf/agc-skip-empty-indirect 2026-10-23 21:43:40 +13:00
Dean b3b9609899 Merge pull request #9152 from rooklz/feat/np-profile-dialog
feat(libSceNpProfileDialog): implement the dialog lifecycle
2026-10-23 21:41:23 +13:00
Dean d339082d2e Merge pull request #9053 from voidlakhan/feat/npcommerce-dialog-initialize-internal
feat(libSceNpCommerce): implement internal dialog initialization
2026-10-23 21:40:45 +13:00
Dean 0dd46f1867 Merge pull request #8547 from Retr0G28/fix/connect-einprogress-windows
test(libkernel): require EINPROGRESS from a nonblocking connect in progress
2026-10-23 21:39:18 +13:00
Yunus Shaikh a3af6b1149 perf(agc): count presents that waited for the display keys' writer unlocked
With APS5_PROFILE_DRAW set, the [present] line now counts the presents
whose sync through the display buffer's DCC keys waited for the GPU
before the key check, outside the GPU mutex, and the milliseconds they
waited: the waits the presenter took under the mutex before.
2026-10-23 08:38:21 +00:00
fablevoid 96bccd4c94 perf(agc): wait for the display keys' writer before a present takes the device lock's time
The presenter checks a display buffer's DCC keys under the device lock.
When the batch of the kernel that writes those keys had not finished,
the check waited for the GPU while holding the lock, and the queue
worker recording the next frame waited behind the presenter.

PresentDisplayBuffer now first syncs through the key range with the
unlocked wait the flush hook uses: the presenter's acquisition is the
outermost on its thread and nothing has been decided yet, so the lock
is released for the GPU wait and retaken for the completions. The key
check that follows finds the batch finished.

Tested on Windows in a title's menu: the presenter's GPU waits under
the lock went from 721 (1.38 s) to 1 (0 ms) per 10 s, and the queue
worker's waits for the lock from 1.47 s to 0.18 s per 10 s.
2026-10-23 08:38:21 +00:00
frankea 56dfc1327e fix(libSceSystemService): answer the registry-backed integer parameters with values measured on a PS5 2026-10-23 04:36:58 -04:00
Adrià 44a59edc3a Merge pull request #6682 from EagleBearerYS/fix/agc-bda-publish-unit-shadow
fix(agc): publish unit-shadow results before an address-based build maps its heaps
2026-10-23 10:34:14 +02:00
JJenkxandClaude Opus 5.5 fcc01c57a6 fix(libkernel): give a raise target time to run between host-code samples
RaiseOn suspends the target, reads its context and, while it is in host
code, resumes it and samples again after SwitchToThread. On a 16-core
Ryzen 9 5950X (Windows 11 22H2) that resampled the writer of
guest_raise_in_host_code about every 10 us before it could run: in the
raise that hung, 4,989 samples over 50 ms all found it in ucrtbase, so
the 50 ms host-code limit ran out and the handler was redirected into
fwrite, where it deadlocked on the stream lock (the test timed out at
30 s on every run). In a passing raise the samples sat at one RIP for
14,695 of 14,703 samples and the raise took 145 ms.

Spin for 20 us before each new host-code sample, so the target gets to
leave host code. With that, guest_raise_in_host_code passes 5 of 5 runs,
no raise is redirected in host code, and the longest raise is 0.46 to
0.53 ms. Other samples keep SwitchToThread.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 04:32:33 -04:00
Mehran 2659ec333e perf(agc): replace winpthreads locks and TLS on the draw path 2026-10-23 11:32:03 +03:00
Dean aef58d4674 Merge pull request #9355 from DavidSamir/feat/libkernel-sys-aio
feat(libkernel_sys): implement the POSIX aio calls
2026-10-23 21:28:48 +13:00
Dean 72fe76ff89 Merge pull request #7920 from hugodearaujo/feat/agc-amd-buffer-marker-checkpoints
feat(agc): record GPU checkpoints through VK_AMD_buffer_marker
2026-10-23 21:20:57 +13:00
Dean 98a732c0be Merge pull request #7919 from Zenodeon/astro-small-resource-fixes
fix(agc): roll back failed snapshot cache insertions
2026-10-23 21:20:17 +13:00
thuanquangandClaude e53f78214a docs(libc): note where the wcsncat_s overlap rule comes from
The debt entry says the rule follows a static reading of the console's
wcsncat_s in libc.prx, that wcscat_s inherits it unread, and that the
narrow strncat_s keeps a wider rule, as asked in review.

Co-Authored-By: Claude <[email protected]>
2026-10-23 15:19:25 +07:00
thuanquangandClaude c1abb7eb4c fix(libc): reject a wcsncat_s copy only when its written and read ranges overlap
Co-Authored-By: Claude <[email protected]>
2026-10-23 15:19:15 +07:00
JJenkxandClaude Opus 5.5 1c026e5fee fix(libkernel_sys): report ELOOP from link through a Windows symbolic link loop
link took the source's std::filesystem::status first, and MinGW-w64's
libstdc++ reports a Windows symbolic link loop as not found (ENOENT), so
it returned ENOENT before FollowLinkPath, which maps the loop's
ERROR_CANT_RESOLVE_FILENAME to ELOOP, was reached. guest_kernel_sys's
loop case failed at that check wherever symbolic links can be created
(Windows 11 22H2: "check failed at line 835 (guest errno 2)").

When the status reports the source missing, ask FollowLinkPath first:
a loop now returns ELOOP and a dangling link still ENOENT; a missing
path is unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 04:18:56 -04:00
Rookie 40970647ca feat(libSceNpProfileDialog): implement the dialog lifecycle
Initialize, Terminate, UpdateStatus, GetStatus, Open, OpenA, Close and
GetResult run the common-dialog state machine. There is no PSN profile
UI, so Open and OpenA finish at once and GetResult reports result 0,
userAction USER_CANCELED and the caller's userData, as shadPS4 does when
its window is dismissed.

Paths where shadPS4 and the other common dialogs here return different
errors throw, and so does a param whose size or mode does not match the
shadPS4 layout. The common-dialog codes the library uses are added to
libSceCommonDialog/CommonDialog.hpp.
2026-10-23 09:18:29 +01:00
Dean 30ecc1b7b3 Merge pull request #8643 from realshinmalphur/fix/gpu-command-validation
fix(agc): validate the exact indirect draw record range
2026-10-23 21:15:35 +13:00
Yossi Yadgar 723a0880d5 feat(libSceNpCppWebApi): destroy the InGameCatalog product and TitleCloudStorage status const iterators
Like the library's other ConstIterator destructors they own nothing and return 0.
2026-10-23 11:12:58 +03:00
Yossi Yadgar 0ec47d9587 feat(libSceNpCppWebApi): construct, copy, release and dereference the InGameCatalog and TitleCloudStorage IntrusivePtr types
The new instantiations use the shared IntrusivePtr helpers with the pointee's reference-count offset: 0x00 for objects, 0x30 for vector bodies.
2026-10-23 11:12:58 +03:00
Yossi Yadgar 42961e1b45 docs(debt): note where the net thread and emulation behaviour comes from 2026-10-23 11:12:45 +03:00
Yossi Yadgar 6394960228 feat(libSceNet): return EOPNOTSUPP from sceNetEmulationGet and sceNetEmulationSet
Network emulation exists only on development units.
2026-10-23 11:12:36 +03:00
Yossi Yadgar b0a7607b75 feat(libSceNet): implement sceNetThreadCreate, sceNetThreadExit and sceNetThreadJoin
The thread runs the entry and argument of the caller's parameter block on a guest thread; a null block fails with EINVAL.
2026-10-23 11:12:36 +03:00