Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià ad80f5f967 Merge pull request #7655 from farosch/main
feat(libkernel): log guest exception context
2026-10-20 02:28:16 +02:00
hamb3r 387be86004 docs(debt): move Dinkumware thread debt entries from libSceAmpr to libc 2026-10-20 03:22:13 +03:00
hamb3r 3845df2f1e test(libc): cover Dinkumware _Pad and _Thrd_join in guest_libc_threads 2026-10-20 03:22:07 +03:00
hamb3r 3524b04740 feat(libc): move Dinkumware thread exports from libSceAmpr to libc 2026-10-20 03:22:00 +03:00
hamb3r 6ce8bc0373 feat(libc, libkernel): register pthread_create and pthread_join callbacks with libc 2026-10-20 03:21:53 +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
Adrià 34b1b77abf Merge pull request #7651 from DavidSamir/fix/relinker-amd-only-branch-targets
fix(relinker): ignore direct branch targets inside an instruction past its prefixes
2026-10-20 02:13:47 +02:00
Adrià fafadca12c Merge pull request #7529 from Aspct3434/feat/swscanf-pointer
feat(libc): scan %p in swscanf and swscanf_s
2026-10-20 02:09:37 +02:00
Adrià 5253446882 Merge pull request #7543 from ionut27001/fix/libkernel-getrlimit-console
fix(libkernel): report the getrlimit values measured on a PS5 for RLIMIT_STACK, RSS, MEMLOCK and NPROC
2026-10-20 02:07:39 +02:00
battleblob1andClaude Opus 5.5 f95471ec6a feat(shader): read domain inputs at a control-point index computed from data
A domain program that picks one of its patch's control points from data
(Onimusha: Way of the Sword, PPSA27836, selects a corner with v_cmp and
v_cndmask before a buffer_load from the off-chip ring) was refused with
"the tessellation ring or LDS address is not affine in the control point
and relative patch". Computed indices were accepted only for hull LDS
reads.

- The address evaluator gives off-chip EvaluationInput reads the same
  dynamic term as hull LDS reads, and a value read from the patch's own
  ring or LDS no longer counts as depending on the relative patch index,
  since the lowered read takes the patch implicitly.
- When the program also uses its relative patch index as data, the
  index is replaced by the grouped patch instead of 0, which left a
  computed read's address pointing into another patch. Such reads now
  subtract their relative patch term, for hull and domain reads alike;
  reads in programs that do not use the index as data keep their address.
- The computed offset must be a whole number of control points, and the
  backend clamps the domain gl_in index to the last output control point
  as it already does for hull reads.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:05:55 +03:00
xXPBSXxandClaude Sonnet 5.5 906b2527b8 fix(libc): convert the character argument of strrchr to char
strrchr passed its int argument to the host strrchr unchanged. On Windows the
host compares it with the signed char bytes of the string, so a byte of 0x80 to
0xFF passed as an unsigned value (0xE9) or a value above 255 (0x12F) was not
found, where FreeBSD converts the argument to char first.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 01:52:52 +02:00
bl4nkTHEBUNKER f57b79ef51 fix(libScePad): report the DualSense touchpad resolution
The controller information reported 1920 by 943, the DualShock 4 height with
the DualSense pixel density, while the host controller's fingers were scaled to
1920 by 942 and the keyboard touch contacts sat on the 942 centre line. A title
that maps touch coordinates through the reported resolution lost the lower part
of the touchpad. The width and height now live beside the pad state and all
three places use them.
2026-10-20 01:52:50 +02:00
Dean 3aa35dc014 Merge pull request #6730 from EagleBearerYS/perf/agc-remember-evicting-refusals
perf(agc): remember an evicting import request's budget refusal until it could succeed
2026-10-20 12:52:11 +13:00
Dean 2d97b2468d Merge pull request #5480 from Nesyth/perf/agc-dma-copy-on-gpu-behind-pending-source
perf(agc): record a DMA copy of up to 64 KiB on the GPU when the GPU still stores into its source
2026-10-20 12:51:57 +13:00
Adrià ef0eed9b31 Merge pull request #6680 from 011010/feat/libSceNgs2-geom-report
feat(libSceNgs2.native): keep a registry of report handlers
2026-10-20 01:50:58 +02:00
Kang, Harry Zixuan 995c10ec6b fix(build): allow static MinGW runtimes in relinker-only tests 2026-10-19 16:50:10 -07:00
Adrià 8038a425fb Merge pull request #7574 from bl4nkTHEBUNKER/feat/system-gesture-primitive-touch
feat(libSceSystemGesture): report primitive touch events from the pad reports
2026-10-20 01:45:51 +02:00
Adrià 25ab3510ca Merge pull request #7623 from thuanquang/fix/subvector-loop-exec-zero
fix(shader): test an empty exec mask in s_subvector_loop_begin with one compare
2026-10-20 01:41:41 +02:00
Celegans12 95c90a54ef test(agc): compare a remapped import with the one alive before the remap
agc_trimmed_import fails on Windows with NVIDIA and AMD drivers at the
1440 KiB unmap case: after the pages are mapped again, the import of the
whole range has the same VkDeviceMemory handle as the first import.

In that case the first import is not kept: its kept side has a new backing
serial, so the trimmed memory is released and freed by the recorder syncs
of the checks that follow. The driver then hands the freed handle value to
the new import of the whole range, so the comparison with the first
import's handle fails even though that memory no longer exists.

Compare the remapped import with the kept side's import instead, which is
still alive or held by the recorder when the whole range is imported
again. In the cases that keep the trimmed import this is the first import,
as before.

AI-assisted: yes
2026-10-20 01:41:16 +02:00
Adrià 5907b297a3 Merge pull request #7572 from Delciob/fix/commondialog-already-initialized-error-code
fix(libSceCommonDialog): ALREADY_INITIALIZED is 0x80B80004
2026-10-20 01:38:37 +02:00
Adrià ea40a70edb Merge pull request #7628 from milescoviello/test/hex-failure-values
test(agc): print hex values of failing checks in hex
2026-10-20 01:37:32 +02:00
Retr0 04c16c74f9 fix(libkernel): mark both socketpair ends close-on-exec for SOCK_CLOEXEC
socketpair accepted SOCK_CLOEXEC but left both descriptors out of the
close-on-exec set, so F_GETFD read 0 on them. FreeBSD 11's
kern_socketpair opens both files with O_CLOEXEC when the type carries
SOCK_CLOEXEC, as socket already does here.
2026-10-20 02:26:15 +03:00
Adrià eb7500680f Merge pull request #7540 from EliasTech01/clarify-release-json-404
fix(web): explain missing release.json when serving demo/web directly
2026-10-20 01:23:18 +02:00
Adrià 88fb5592c6 Merge pull request #7611 from Lindamea1/fix/kernel-pthread-attr-sched-getters
feat(libkernel): implement scePthreadAttrGetschedpolicy and scePthreadAttrGetinheritsched
2026-10-20 01:23:13 +02:00
Th3EvilGod 81b28cef61 fix(libc): use precise Windows thread sleep 2026-10-20 03:21:28 +04:00
Adrià 606ebafd20 Merge pull request #7612 from Lindamea1/fix/netctl-getinfov6-export
feat(libSceNetCtl): declare sceNetCtlGetInfoV6
2026-10-20 01:20:06 +02:00
Adrià 5158970e85 Merge pull request #7521 from Myrarc/fix/sigtimedwait-deadline
fix(libkernel): preserve sigtimedwait deadline across wakeups
2026-10-20 01:17:59 +02:00
xXPBSXxandClaude Sonnet 5.5 e827ddf45e fix(tools): name the unreadable snapshot in progress --compare
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 01:17:14 +02:00
Adrià 1a2d485032 Merge pull request #7597 from voidlakhan/fix/np-null-pointer-checks
fix(npmanager): validate null output pointers
2026-10-20 01:15:52 +02:00
xXPBSXxandClaude Sonnet 5.5 3f18855d3e fix(tools): report an unusable build directory in check_test_registration
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 01:15:06 +02:00
Adrià 1292e251c4 Merge pull request #7591 from mrfelek/fix/recompiler-offset-sgpr-reuse
fix(recompiler): fold draw offsets that the shader only reloads after the fetch add
2026-10-20 01:13:50 +02:00
erickerxhalliandClaude Opus 5.5 0afb0c58dd test(libSceMove): register guest_move away from the netctl tests
Move the guest_move registration in core/libs/CMakeLists.txt next to the
voice tests so it no longer shares lines with the netctl access point
tests that another open pull request adds.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Arbzg9c2DA4DEFKVSvRgYv
2026-10-19 23:07:47 +00:00
Adrià 7c2334d208 Merge pull request #7477 from SwetabhSingh17/feat/json2-value-operator-bool
feat(libSceJson2): implement Value, Object, Array, and String methods
2026-10-20 01:02:24 +02:00
Adrià 9f9cf38bb0 Merge pull request #7493 from Lindamea1/fix/scenet-tcp-nodelay
fix(libSceNet): support TCP_NODELAY in sceNetSetsockopt and sceNetGetsockopt
2026-10-20 01:01:26 +02:00
JAB-devandClaude Sonnet 5.5 5f6dee64c4 fix(libSceRtc): make sceRtcTickAdd* wrap and ignore range like the console
The seven fixed-unit additions (Ticks, Microseconds, Seconds, Minutes,
Hours, Days, Weeks) now only check the two pointers and store the source
plus the amount modulo 2^64; they no longer return 0x80B50003 for a source
above 9999-12-31 or a result outside the tick range.

sceRtcTickAddMonths and sceRtcTickAddYears no longer reject a source tick
above the 9999 limit. They split the tick into a 16-bit year, add the months
in 32 bits and divide by 12 truncating toward zero. They return 0 without
writing when the 16-bit target year is outside 1 to 9999 or the month sum is
negative and not a multiple of 12; otherwise they write the result.

Observed by executing the code of libSceRtc.sprx from PS5 firmware 3.20 and
4.03 in an emulator with its imports mocked (entry points 0x32c0-0x3440,
0x3470, 0x37f0 on 3.20; 0x3370-0x34f0, 0x3520, 0x3890 on 4.03), not on a
console. Both firmwares give identical results on the same inputs. Current
firmware was not checked.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 00:55:55 +02:00
Dean 0393728fd3 Merge pull request #7005 from TheSovietWaffle/fix/videoout-disable-sdl-wgi
fix(libSceVideoOut): add APS5_NO_WGI to turn off SDL's Windows.Gaming.Input backend
2026-10-20 11:53:01 +13:00
Dean 053034f41b Merge pull request #7579 from LeoFeitosa/fix/dcc-mip-block-units
fix(agc): track DCC storage images with more than one mip as one unit
2026-10-20 11:52:35 +13:00
Adrià f3fe95b4b9 Merge pull request #7488 from mantavisual/fix/check-skips-windows-no-vulkan-device
fix: accept "no usable Vulkan device" skips in the Windows check_skip…
2026-10-20 00:52:06 +02:00
Dean 2178eb99aa Merge pull request #7042 from thuanquang/fix/f64-add-mul-denormal-flush
fix(shader): flush v_add_f64 and v_mul_f64 denormals by the f64 field
2026-10-20 11:52:04 +13:00
Dean 89369fdc6a Merge pull request #6557 from simonbronk/fix/native-msaa-depth-iterate256
fix(agc): import native multisample depth whose HTILE is not ITERATE_256
2026-10-20 11:51:50 +13:00
Adrià 8b20da70a1 Merge pull request #7546 from ionut27001/fix/libc-rand48-zero-extend
fix(libc): return jrand48 and mrand48 zero-extended as measured on a PS5
2026-10-20 00:51:07 +02:00
Adrià 309ab11eaf Merge pull request #7539 from ionut27001/fix/libkernel-inet-ntop-pad
fix(libkernel): match inet_ntop and inet_pton padding and null pointers as measured on a PS5
2026-10-20 00:51:02 +02:00
Yossi Yadgar f4de10a73f docs(debt): note where the empty access unit codes come from 2026-10-20 01:47:24 +03:00
Adrià f29546ac4e Merge pull request #7538 from milescoviello/perf/spirv-specialization-arena
perf(shader): keep a specialized module's instructions in one arena
2026-10-20 00:44:44 +02:00
Yossi Yadgar 4c8bdfc8bf test(libSceVideodec2): refuse a null and an empty access unit mid-stream 2026-10-20 01:39:53 +03:00
Yossi Yadgar 9664503056 fix(libSceVideodec2): return access unit errors for a null or empty access unit
sceVideodec2Decode threw for these, which ended the title. Media Player Classic PS5 submits an empty unit when its own converter misreads a length prefix as a start code, and it counts the error and keeps playing on a console.
2026-10-20 01:39:53 +03:00
Adrià 567c5fd630 Merge pull request #7528 from milescoviello/perf/spirv-declaration-cache-probes
perf(shader): probe at most eight declaration cache slots
2026-10-20 00:37:31 +02:00
Adrià e5b65a911a Merge pull request #7518 from milescoviello/perf/ir-reserve-arguments
perf(shader): reserve an IR value's arguments for its opcode at creation
2026-10-20 00:36:26 +02:00
Adrià cb89266437 Merge pull request #7519 from Destroyers212x/test/macos-load-under-rosetta
test(relinker): run the macOS guest module argument check under Rosetta
2026-10-20 00:35:22 +02:00
erickerxhalliandClaude Opus 5.5 95ea06e80b fix(libSceMove): throw when opening for another user or an open slot
sceMoveOpen returned a new handle for any user, type and index, although
the console's result for a user other than the initial user and for a
type and index that are already open is not known. Both now throw, as
libSceHmd2 does for another user. Record which shadPS4 behaviour the
handle and open checks add to.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Arbzg9c2DA4DEFKVSvRgYv
2026-10-19 22:31:58 +00:00