Commit Graph
20967 Commits
Author SHA1 Message Date
Th3EvilGod 154ca3754e chore(ngs2): update Gain prerequisite to current main 2026-10-23 01:11:51 +04:00
JAB-devandClaude Sonnet 5.5 4287ca1cf1 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/agc-4-4-4-4-partial-writes
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-22 23:09:07 +02:00
Dom3005andClaude Opus 5.5 d426d2f9ef docs(debt): keep the fstatfs entry under the debt length limit
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 23:06:03 +02:00
Dom3005andClaude Opus 5.5 93ab8d3514 fix(libkernel): answer fstatfs on a character device as devfs does
FreeBSD keeps every character device on devfs, whose devfs_statfs reports
512-byte blocks, 2 blocks and nothing free. Windows threw for any console,
NUL or the guest random device, and Linux described the host's /dev mount.
A kqueue now returns EINVAL, as getvnode does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 23:06:03 +02:00
MarcZX10 e16e59a109 test(libkernel): allow Windows raise exception timing variance 2026-10-22 21:01:53 +00:00
Adrià 1a745ae38e Merge pull request #9866 from fisherjoey/fix/idle-publish-wait-radv
test(agc): collect the idle publish test block before the label retile
2026-10-22 23:00:36 +02:00
Federico Marras 5090249228 Merge remote-tracking branch 'upstream/main' into feat/np-score-ranking-offline 2026-10-22 22:59:53 +02:00
Federico Marras 8802bec184 Merge remote-tracking branch 'upstream/main' into feat/np-utility-offline 2026-10-22 22:59:46 +02:00
Federico Marras 99356384a2 docs(debt): say that libSceNpSignaling checks online IDs as ASCII 2026-10-22 22:59:24 +02:00
Federico Marras 9f58485aad fix(libSceNpSignaling): check online IDs as ASCII whatever the locale 2026-10-22 22:59:08 +02:00
Federico Marras 071b098aba Merge remote-tracking branch 'upstream/main' into feat/np-signaling-offline 2026-10-22 22:58:50 +02:00
Federico Marras 4bb91851bb feat(libSceNpMatching2): model contexts offline
The context calls, the callback registrations and
SetDefaultRequestOptParam threw. They now follow shadPS4's checks and
context ids, ContextStart returns SCE_NET_ERROR_RESOLVER_ETIMEDOUT, the
answer shadPS4 records for a console without internet access, and
Terminate releases the contexts.
2026-10-22 22:55:51 +02:00
JJenkx 8ee44075d8 test(agc): explain native clear write-watch skips 2026-10-22 16:54:40 -04:00
JJenkx 60b379a65f test(agc): share native depth fixture backing on Linux 2026-10-22 16:54:40 -04:00
Dean 9e568a389b Merge pull request #8376 from hypermoist/feat/libc-dinkumware-dispatchers
feat(libc): implement the Dinkumware _Stod, _Stoll, _Sin and _Log helpers
2026-10-23 09:51:54 +13:00
Yunus Shaikh 7b6c3aae83 Merge main into feat/libkernel-sys-libthr-names
# Conflicts:
#	docs/dev/debt/libkernel.md
2026-10-22 13:51:29 -07:00
Federico Marras 6710ba6702 feat(libSceNpScoreRanking): model the score requests offline
The 15 exports threw. They now keep title contexts and requests, run
shadPS4's argument checks in its order, and answer the record, ranking
and board calls with SCE_NP_ERROR_SIGNED_OUT, which also finishes the
request, as shadPS4 does for a user with no connection.
2026-10-22 22:49:04 +02:00
Savvanis SpyrosandClaude Opus 5.5 26469c711a feat(libSceNpTrophy): answer game, base group and trophy info from the trophy package
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 23:45:54 +03:00
Savvanis SpyrosandClaude Opus 5.5 7140ec1591 feat(np): answer and declare the PS4 NP imports of CUSA03312
NpMatching2 keeps its initialized state. sceNpSignalingDeactivateConnection
and sceInvitationDialogClose, which these titles also import, are declared
and throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 23:45:32 +03:00
ntamas94andClaude Fable 5.1 7678df544f fix(libScePad): answer a 17th special-port user with the unknown-user code
The special port table had four slots and threw for a fifth user, which
the progress report counted as scePadOpen going back to a stub. A PS4
holds at most 16 accounts, so the table now has 16 slots and a 17th
distinct user id gets 0x809b0081, the code the console returned for an
unknown user id in the libScePad survey (PS4 Pro, firmware 10.71).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-22 22:45:14 +02:00
Dean a145c6a468 Merge pull request #9299 from MarrasFederico/feat/ngs2-system-reset-option
fix(libSceNgs2.native): reset the system option to the module's defaults, 8 voice channels included
2026-10-23 09:44:24 +13:00
Dean e2fa8798c7 Merge pull request #9115 from thuanquang/fix/trophy2-unknown-id-error
fix(libSceNpTrophy2): return INVALID_TROPHY_ID for a trophy that is not in the title's data
2026-10-23 09:43:58 +13:00
Dean 5f83572bfb Merge pull request #9032 from hypermoist/fix/audioout2-lo-terminate
fix(libSceAudioOut): return 0 from sceAudioOut2LoTerminate and forward sceAudioOut2InitializeEx
2026-10-23 09:43:36 +13:00
Joey Fisher 1499ae961d test(agc): collect the idle publish test block before the label retile
agc_idle_publish_wait fails on RADV (RX 570, Steam Deck, #9781) at the label
flush check: the publish was not waited, it was dropped as stale. The idle
flush's submission is the first to reference the test block's host import,
and amdgpu validates a user pointer's pages with write faults at every
submission, which clears the asynchronous userfaultfd write protection of the
whole import. The test forces APS5_WRITE_WATCH_IMPORTS=watch (the probe in
decideImportWatch would leave such imports compared), so the next collect
reads every unit as stored by the CPU. The test retiled unit 5 without
collecting first, so the label publish's own collect stamped the unit newer
than the retile's generation and publishUnits dropped it; no copy was
recorded and PendingWriteOverlaps was false.

The test now collects before that retile, as it already did before the idle
ones, and models the condition on every driver with an uncollected store
older than the retile. The checks run in an order that names the dropped
publish before the wait.
2026-10-22 14:42:00 -06:00
ntamas94andClaude Fable 5.1 7be1132713 fix(libScePad): make the special port handle behave as the PS4 measured
The ps4probe libScePad survey (PS4 Pro, firmware 10.71) measured the
special port with one user: a second scePadOpen returns ALREADY_OPENED
(0x80920004); scePadRead and scePadReadState give the rest record
(sticks 0x80, orientation w 1, acceleration y 1, connected 0);
scePadGetControllerInformation is zeroed;
scePadDeviceClassGetExtendedInformation reports device class -1; and
scePadSetVibration, scePadSetLightBar, scePadResetLightBar,
scePadSetMotionSensorState and scePadResetOrientation return 0.

The special handle is now accepted by every pad call: setters succeed
without touching the emulated pad, getters return the measured records.
Calls not covered by the survey follow the same rule and the debt entry
lists them.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-22 22:41:36 +02:00
orezraeyandClaude Opus 5.5 36f66c5039 Merge main into fix/libkernel-aio-limits-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 17:41:34 -03:00
Federico Marras fd7d181074 feat(libSceNpUtility): model the lookup and word filter requests offline
The 14 lookup and word filter exports threw. They now run shadPS4's
argument checks in its order over local title contexts and requests,
and the lookup, censor and sanitize calls finish with
SCE_NP_ERROR_SIGNED_OUT without writing an NpId or a comment.
2026-10-22 22:41:30 +02:00
Dean fe8b9b5ddd Merge pull request #8906 from hypermoist/fix/coredump-set-user-data-type
fix(libkernel): give sceCoredumpSetUserDataType its signature and result
2026-10-23 09:41:20 +13:00
Dean b719e83cdd Merge pull request #9119 from al3w0f205/test/rtc-init-end-and-conf-coverage
test(libSceRtc): cover sceRtcInit and sceRtcEnd lifecycle
2026-10-23 09:40:51 +13:00
Dean 44ce348a74 Merge pull request #9291 from veosett/codex/self-alignment-padding
fix(tools): bound total SELF alignment padding
2026-10-23 09:40:16 +13:00
orezraeyandClaude Opus 5.5 2a9f2b7ac7 Merge main into fix/libkernel-release-flexible-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 17:39:38 -03:00
Federico Marras 7e97092226 feat(libSceNpSignaling): model contexts and connections offline
The eight exports threw. They now run shadPS4's argument checks in its
order, keep up to eight contexts with ids allocated as shadPS4 does,
validate NpIds with the online ID rule, and answer a connection request
with SCE_NP_ERROR_SIGNED_OUT without creating a connection.
2026-10-22 22:35:54 +02:00
Adrià 7c900bbc21 Merge pull request #6645 from DangerChamp/codex/fix-completed-pixel-lane-proofs
fix(shader): reuse completed pixel lane proofs
2026-10-22 22:34:50 +02:00
ntamas94andClaude Fable 5.1 76b318a75c fix(libScePad): keep special port state per user
A single flag and one handle served every user's special port, so a
second user's scePadClose dropped the first user's handle from
scePadGetHandle. Each user now gets a handle of its own
(PAD_SPECIAL_HANDLE + slot, four slots), a repeated open returns it
again, and close frees only that slot. Whether the console shares or
separates the handles is not measured yet; the debt entry says so.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-22 22:30:59 +02:00
Santhosh Kumar 1ec05748ff chore: sync current main for LibreSSL protocol selection 2026-10-23 01:58:04 +05:30
Santhosh Kumar ef05248c92 chore: refresh FreeType bounds validation on main 2026-10-23 01:57:17 +05:30
JJenkxandClaude Opus 5.5 ac92cc6281 fix(libc): compute cbrtf with FreeBSD msun's algorithm, as titles' libc.prx does
cbrtf returned the host cbrt, so its result depended on the host: on
Windows it differs from the libc.prx that titles ship on 1,303,357,444 of
the 2^32 floats. That libc.prx is msun's s_cbrtf.c, which gives the same
bits as PPSA07923's, PPSA05916's and PPSA13934's copies for every argument.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 16:22:49 -04:00
JJenkxandClaude Opus 5.5 e601dbd7a4 fix(libc): compute sinf, cosf, tanf and sincosf with FreeBSD msun's algorithms, as titles' libc.prx does
They returned the host sin, cos and tan, so their last bit and errno
depended on the host: on Windows sinf differs from the libc.prx that titles
ship on 3,349,410 of the 2^32 floats, cosf on 3,382,210 and tanf on
303,874,018. That libc.prx is msun's s_sinf.c, s_cosf.c and s_tanf.c over
the double-precision kernels and e_rem_pio2f.c with k_rem_pio2.c; its
sincosf returns the same pair, and only an infinite argument sets EDOM.
The ports give the same bits and errno as PPSA07923's, PPSA05916's and
PPSA13934's copies for every argument.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 16:22:31 -04:00
SwagandClaude Opus 5.5 ff4974658d Merge upstream/main into feat/libressl-error-queue
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 16:22:30 -04:00
Dean 1da03c6f34 Merge pull request #9076 from orezraey/fix/net-utilities-measured-ps5
fix(libSceNet): accept every sceNetMemoryAllocate flag as measured on a PS5
2026-10-23 09:22:21 +13:00
Dean 9366a29432 Merge pull request #9697 from EagleBearerYS/fix/agc-pipelined-fill-blocker-lifetime
test(agc): share the pipelined fill blocker with its lambda and end each case on an empty pipeline
2026-10-23 09:22:17 +13:00
Dean 5d40eb3fdc Merge pull request #9106 from Retr0G28/fix/scenet-stream-recv-timeout-eagain
fix(libSceNet): report EAGAIN when a stream receive times out on Windows
2026-10-23 09:22:12 +13:00
Dean 60b8e8cad7 Merge pull request #9259 from emirplus/fix/select-tests-utf8-bom
fix(tools): read CMakeCache, graph and changed list with utf-8-sig in select_tests
2026-10-23 09:22:08 +13:00
Dean c3362ee446 Merge pull request #9262 from emirplus/fix/configure-seed-error-handling
fix(tools): handle unwritable seed output and reconfigure streams in configure_seed
2026-10-23 09:22:04 +13:00
JJenkxandClaude Opus 5.5 a22e959cd8 fix(libc): compute logf with FreeBSD msun's algorithm, as titles' libc.prx does
logf returned the host log, so its last bit and errno depended on the host:
on Windows the bits differ from the libc.prx that titles ship on 13,225,175
of the 2^32 floats. That libc.prx is msun's e_logf.c, setting ERANGE for
+-0 and EDOM for every argument with the sign bit set. The port gives the
same bits and errno as PPSA07923's and PPSA05916's copies for every
argument; the FMA-contracted copy of PPSA13934 differs by 1 ulp on 961,881.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 16:21:35 -04:00
JJenkxandClaude Opus 5.5 5e03230c28 fix(libc): compute atanf with FreeBSD msun's algorithm, as titles' libc.prx does
atanf returned the host atan, so its last bit depended on the host: on
Windows it differs from the libc.prx that titles ship on 6,481,820 of the
2^32 floats. That libc.prx is msun's s_atanf.c, which gives the same bits
as PPSA07923's, PPSA05916's and PPSA13934's copies for every argument.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 16:20:38 -04:00
JJenkxandClaude Opus 5.5 ea6aa0a809 fix(libc): follow the console fgetws for short buffers and read errors
The fgetws in the libc.prx that titles ship (the same 133 bytes in the
copies of PPSA13934, PPSA07923 and PPSA05916, read from disassembly)
differs from this one in two cases:

- A size below 2 returns null at once, without writing the buffer,
  errno or the stream (cmp $0x2,%esi; jge, else the null result). Here a
  size of 1 stored a NUL and returned the buffer, and a size of 0 or less
  set the stream error and errno 22.
- When fgetwc returns -1 after characters were stored, the console
  null-terminates and returns the buffer; it returns null only when
  nothing was stored, and never checks ferror. Here a read error after
  some characters returned null.

The rest already matches: each fgetwc result is stored as its low 16 bits
(mov %ax,(%rbx)), and the newline test compares all 32 bits. A null buffer
or stream, which the console dereferences, keeps failing with errno 22.

guest_standard_streams now expects the console results for sizes 1, 0
and -1 and for an invalid byte after a stored character; its fgetwc error
indicator check is unchanged. The libc debt entry cites the reading and
what it leaves unverified.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 16:19:24 -04:00
Savvanis SpyrosandClaude Opus 5.5 50e9cc4021 perf(recompiler): translate GCN buffer formats without a private table
Registration modules read a GCN V#'s word 3 in the shader, and gcnWord3
mapped its DATA_FORMAT and NUM_FORMAT through a 128-entry Private array
that every buffer access stored again before indexing it. Drivers keep
that array in per-invocation scratch: on the RX 9070 XT each pixel shader
of Monopoly Plus's language screen used 528 bytes of scratch and wrote
the table up to 60 times per invocation.

The lookup is now a helper function that packs the table four entries
to a word and picks the word with a select tree, so it stays in
registers and each access calls it once.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 23:19:02 +03:00
Dean Galvin 58cc9a68e3 Merge main into feat/audio-propagation-path-slots 2026-10-23 09:17:07 +13:00
Dean Galvin 3e00103497 Merge main into feat/ngs2-custom-gain 2026-10-23 09:17:07 +13:00