Commit Graph
5577 Commits
Author SHA1 Message Date
Adrià aad16d0577 Merge pull request #1848 from LeandroLP23/feat/libc-inet-aton
feat(libc): implement __inet_aton
2026-10-09 23:53:56 +02:00
Adrià cb4f41c1e8 Merge pull request #1978 from LuisBiceps/feat/agc-get-tf-ring
feat(agc): implement sceAgcDriverGetTFRing
2026-10-09 23:53:52 +02:00
Adrià e2713aad70 Merge pull request #1987 from babyhuey/feat/libc-fpclassifyf
feat(libc): implement __fpclassifyf
2026-10-09 23:53:48 +02:00
Gjon Gojcevic 21f94288ac fix(shader): mark the vertex position output invariant
Two different vertex programs that compute the same position give
bit-identical depth on the GPU, which a depth pre-pass followed by an
equal-or-greater redraw relies on. Without Invariant, a Vulkan driver may
compile the same position arithmetic differently in each shader (for
example contracting into an FMA in only one), so the redraw fails the
depth test.

Decorate the gl_PerVertex Position member and the mesh shader's Position
output Invariant, and check both in a new recompiler test.

AI-assisted: yes
2026-10-09 17:53:07 -04:00
Adrià 8d47cfba88 Merge pull request #1807 from SleglJan/feat/libkernel-sandbox-random-word
feat(libkernel): implement sceKernelGetFsSandboxRandomWord
2026-10-09 23:52:40 +02:00
Adrià 5d0b955642 Merge pull request #1627 from babyhuey/feat/libkernel_sys-readlink
feat(libkernel_sys): implement readlink
2026-10-09 23:52:37 +02:00
Adrià 72cf6c3c5a Merge pull request #1624 from babyhuey/feat/libkernel-lstat
feat(libkernel): implement lstat
2026-10-09 23:52:02 +02:00
Adrià 2dbc137693 Merge pull request #1798 from hugodearaujo/feat/libkernel-pthread-getname-np
feat(libkernel): implement pthread_getname_np
2026-10-09 23:51:56 +02:00
Adrià 4b112364b5 Merge pull request #1339 from gjonn/feat/videoout-vrr-status-event
feat(libSceVideoOut): register the VRR status event and accept the VRR status call
2026-10-09 23:51:35 +02:00
Adrià 830130aa00 Merge pull request #1620 from babyhuey/feat/libkernel-fdatasync
feat(libkernel): implement fdatasync
2026-10-09 23:50:45 +02:00
Dean 330cfae722 Merge pull request #2176 from oneandonlydean/up639/adjusted-regions
perf(agc): bind misaligned draw buffer regions in place through the view adjustment
2026-10-10 10:49:12 +13:00
Adrià 3d19932caf Merge pull request #1738 from SleglJan/feat/libkernel-termios
feat(libkernel): implement tcgetattr and tcsetattr
2026-10-09 23:48:53 +02:00
Adrià 64c6b11420 Merge pull request #1729 from johnmaia/feat/libc-syslog
feat(libc): implement syslog and vsyslog
2026-10-09 23:48:32 +02:00
Dean 19a0daa786 Merge pull request #2295 from parl0v/test/sce-net-reset-on-unread-close
test(net): reset the closed peer with unread data so the send fails at once
2026-10-10 10:47:13 +13:00
Dean 6cc3c9c5e2 Merge pull request #2286 from eljackjoestar-cmd/codex/pr-rtc-timezone-bounds
fix(rtc): validate ticks before timezone conversion
2026-10-10 10:47:03 +13:00
Dean dcb3180691 Merge pull request #2251 from zmeizy/claude/sce-net-without-ipv6
test(net): skip only the IPv6 socket checks on a host without IPv6
2026-10-10 10:46:43 +13:00
Dean 0d3b7118a1 Merge pull request #2240 from orbz22/fix/patched-libraries-no-error-dialog
test(libs): report patched libraries that fail to load instead of a loader dialog
2026-10-10 10:46:22 +13:00
Dean 131a784c07 Merge pull request #2194 from AchrafReyani/build/guard-nominmax-kernel-sync
build(windows): guard NOMINMAX in the kernel sync test
2026-10-10 10:45:51 +13:00
Dean 31cf52d587 Merge pull request #2027 from kali113/fix/storage-cache-test-runtime
test(agc): bound the storage cache budget regression workload
2026-10-10 10:45:22 +13:00
Dean f67c9e4084 Merge pull request #1358 from MarcZX100/test/register-guest-hmd
test(hmd): register disconnected-device tests
2026-10-10 10:45:11 +13:00
Dean 80cc71419b Merge pull request #1355 from MarcZX100/test/register-pthread-start
test(libkernel): register and bound pthread start test
2026-10-10 10:45:00 +13:00
Dean 75994ad8ec Merge pull request #2337 from JAB-dev/fix/ngs2-matrix-level-clamp
fix(libSceNgs2.native): clamp matrix levels to -4..4 as the PS4 libSceNgs2 does
2026-10-10 10:44:24 +13:00
Dean 0856926cc3 Merge pull request #2299 from popcoder565/test/agc-unit-shadow-import-retire
test(agc-driver): retire the unit shadow block's import before releasing it
2026-10-10 10:44:14 +13:00
Dean 6918141ebe Merge pull request #2249 from zmeizy/claude/llvmpipe-shader-clock-wrap
test(agc): compare llvmpipe shader clocks modulo 2^32
2026-10-10 10:44:04 +13:00
Dean 05963a68b8 Merge pull request #2175 from oneandonlydean/up639/pipeline-cache-bound
perf(agc): keep up to 1024 cached pipelines
2026-10-10 10:43:53 +13:00
Dean 8d73b5d49f Merge pull request #2163 from Zheorgyan/fix/ajm-at9-synthetic-fill
test(ajm): use a synthetic AT9 block that stays inside the gradient table
2026-10-10 10:43:43 +13:00
Dean cb86a0f269 Merge pull request #2159 from Angel21PC/fix/avplayer-ps5-init-data-ex
fix(avplayer): read the PS5 SceAvPlayerInitDataEx layout
2026-10-10 10:43:32 +13:00
Dean 8d946685b5 Merge pull request #2131 from authurtabo-byte/fix/save-memory-32-mib
fix(libSceSaveData): accept 32 MiB save memory
2026-10-10 10:43:21 +13:00
Dean 2290e1ab83 Merge pull request #2130 from authurtabo-byte/fix/audio-out-state-query-waits
fix(libSceAudioOut): allow state queries during output waits
2026-10-10 10:43:10 +13:00
Dean 4324dcd9a5 Merge pull request #2122 from Negesin/fix/buffer-unaligned-int64-skip
test(agc): skip unsupported int64 atomic subcase
2026-10-10 10:43:00 +13:00
Dean 51b1c56057 Merge pull request #2065 from LuisBiceps/feat/system-service-web-browser-unavailable
feat(libSceSystemService): report the web browser as unavailable
2026-10-10 10:42:50 +13:00
Dean da122c90ff Merge pull request #1986 from kali113/fix/shader-cache-test-cleanup
test(agc): flush shader cache writes before removing test files
2026-10-10 10:42:39 +13:00
hikazeyandClaude Opus 5.5 0bff6da3d3 feat(libkernel): implement msync
msync follows FreeBSD 11's kern_msync and vm_map_sync over the guest's
mappings as sceKernelVirtualQuery reports them: the address is rounded
down to the page, a range that wraps and MS_ASYNC with MS_INVALIDATE are
EINVAL, an unmapped start or page is ENOMEM, and length 0 checks the
mapping that holds the address. The guest has no file mappings, so a
successful call has nothing to write back. MS_INVALIDATE on a mapped
range throws, since FreeBSD's EBUSY for mlocked pages needs lock state
that is not tracked.

EVO-PLAYER PPSA99039 v0.11.0 imports it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:38:58 +02:00
Adrià e603f3f560 Merge pull request #1613 from NumberGuan/codex/posix-temp-files
feat(posix): implement mkstemp and isatty
2026-10-09 23:37:02 +02:00
MathiasDevelopesandClaude Opus 5.5 e21d8bd12f feat(libSceIme): implement sceImeGetPanelPositionAndForm
The IME panel cannot be open while sceImeOpen is unimplemented, so the
query returns SCE_IME_ERROR_NOT_OPENED and leaves the output untouched,
like sceImeSetCaret, sceImeSetText and sceImeSetTextGeometry. As with
sceImeSetCaret, the closed panel is reported before a null output.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-09 23:36:28 +02:00
Adrià 00159cffb5 Merge pull request #1544 from arvindfroi/feat/share-remaining-calls
feat(share): answer sceShareSetContentParamForApplicationTitle
2026-10-09 23:34:10 +02:00
Claude 2243e17f34 fix(libc): return a 64-bit unsigned long from _Stoul on Windows
The guest's unsigned long is 64 bits. _Stoul was declared with the
host's unsigned long and returned std::strtoul, which are 32 bits on
Windows (LLP64): "4294967296" clamped to 4294967295 with ERANGE and
"-1" gave 0xffffffff, so a guest std::stoul threw out_of_range on values
the console accepts. It now returns std::uint64_t from std::strtoull,
as strtoul_nid_postfix and _Stoull already do; on Linux nothing changes.
The binary-prefix check stays in front of the host call.

Reported in #2424 by AchrafReyani; the same change was proposed in #2442
by SurajKhanna, whose two guest_math cases are taken here. Folded in at
MarcZX100's suggestion on #1459.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-09 21:33:08 +00:00
authurtabo-byte 57bc8b1661 feat(libSceAudio3d): implement sceAudio3dObjectSetAttributes and sceAudio3dPortFlush
Both exports are imported by titles that link libSceAudio3d; without them the loader fails with an unresolved import before the title runs. Following the offline model, object attributes are validated but produce no audio and PortFlush drops the frames queued by sceAudio3dPortAdvance.
2026-10-09 23:32:52 +02:00
EdouardSenceandClaude Opus 5.5 04dda44d3d feat(libSceUlt): implement sceUltUlthreadTryJoin, sceUltUlthreadRuntimeDestroy and the underscore ulthread exports
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:31:01 +02:00
Hannah Lyons d024717ebe feat(libkernel_sys): implement readlink 2026-10-09 17:30:55 -04:00
Hannah Lyons 903f50a3b4 feat(libkernel): implement lstat 2026-10-09 17:30:43 -04:00
Hannah Lyons 6768210713 feat(libkernel): implement fdatasync 2026-10-09 17:30:24 -04:00
LexroidandClaude Opus 5.5 0745d803e5 fix(relinker): fold case when matching needed module stems on Windows
Palworld's eboot needs EOSSDK-PS5-Shipping.debug_prx while the dump ships
prx/eossdk-ps5-shipping.prx. On Windows, compare module stems without
ASCII case, and let a name that already resolves to a guest image (exact
or case-folded filename, or soname) win over a stem alias.

Reported and diagnosed by @Rohan03x in #1830.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 00:29:45 +03:00
JAB-devandClaude Opus 5.5 00e13ecfa7 feat(libSceNgs2.native): implement sceNgs2PanInit and sceNgs2PanGetVolumeMatrix
Pan follows the PS4 firmware 11.00 libSceNgs2.sprx: the speaker layout
from the init angles, then each param's angle and distance into a
volume matrix for the voice. Every param is checked before anything is
written, and angles too large to wrap throw. The pan functions are
exported from the existing Voice.cpp export block.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:26:24 +02:00
Claude 8c714f76af fix(libc): stop the wcstol family at a binary prefix on Linux
wcstol, wcstoll, wcstoul and wcstoull parse the ASCII prefix of the
guest's UTF-16 text with std::strtoll and std::strtoull, which glibc 2.38
and later bind to the C23 __isoc23_* functions: wcstol(u"0b101", &end, 0)
returned 5 with the end pointer after the whole string. They now check
StopAtBinaryPrefix_nid_no_patch first, like the narrow functions, and the
end pointer maps back through ParseAsciiPrefix as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 21:26:13 +00:00
Claude b5c9945e1f fix(libc): stop the strtol family at a binary prefix on Linux
C17 has no binary prefix: with base 0 or 2, strtol("0b101", &end, base)
reads the subject "0", returns 0 and leaves end at the 'b'. With glibc
2.38 or later, g++ (which defines _GNU_SOURCE) binds std::strtoll,
strtoull, strtoul, strtoimax and strtoumax to the C23 __isoc23_*
functions, which accept 0b/0B: the Linux exports returned 5 and
consumed the whole string. The Windows UCRT already follows C17, so the
same guest call gave different results on the two hosts.

strtol, strtoul, strtoll, strtoull, _Stoull, strtoimax, strtoumax and
_Stoul now return 0 with the end pointer after the '0' when, after
white space and an optional sign, the text starts with 0b or 0B and a
binary digit, in base 0 or 2. Everything else still goes to the host
function. The scanf family's %i has the same glibc behaviour; it is
recorded in TechnicalDebt.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 21:26:13 +00:00
Adrià 54f28f2d31 Merge pull request #1543 from arvindfroi/feat/np-manager-offline-lookups
feat(libSceNpManager): answer sceNpCheckNpAvailability with no user signed in
2026-10-09 23:26:09 +02:00
JAB-devandClaude Opus 5.5 9af48b5b02 test(libSceNgs2.native): destroy the system after the unsupported default map render
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:25:40 +02:00
JAB-devandClaude Opus 5.5 ed9a70175e fix(libSceNgs2.native): mix ports without set levels through the default channel map
A port without a matrix sent source channel n to destination channel n, so a
mono voice reached only the left channel of a stereo mix. The PS4 firmware
11.00 libSceNgs2.sprx mixes such ports, and ports whose matrix levels were
never set, through a fixed channel map instead: mono reaches both stereo
channels at -3 dB and the centre of 5.1 and 7.1, stereo folds to mono at
-3 dB per side, and wider sources fold down with 0.5 and -3 dB gains. The map
was measured for every source width into 1, 2, 6 and 8 channels.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:25:31 +02:00
JAB-devandClaude Opus 5.5 56d8e5c4df fix(libSceNgs2.native): mix through a selected matrix whose levels were never set
PPSA22520 routes its title music through port matrix 0 without setting the
matrix levels, so the music rendered silent. A matrix without levels now
mixes like a port without a matrix, source channel n to destination channel
n. The console's initial levels are unknown; the assumption is recorded in
TechnicalDebt.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:25:31 +02:00