Commit Graph
7981 Commits
Author SHA1 Message Date
Kraken 2a7cd60c89 feat(freetype): implement system outline border queries 2026-10-22 22:43:33 +01:00
Dean d3efe3af99 Merge pull request #8115 from milescoviello/feat/msaa-depth-one-sample-color
feat(agc): draw one-sample color targets beside a multisampled depth target with sample 0's coverage
2026-10-23 10:38:32 +13:00
teepeanandClaude Opus 5.5 5da86019ac perf(agc): find a host import among the last ones found first
HostImportFor walks the import map under the import mutex for every
in-place vertex input, index buffer and label it serves, most of them
for the same few buffers. It now first checks the last four imports a
lookup found, while the map is the one they came from: the imports epoch
moves with every retire and trim and the map's size with every insert.
Imports in the map never overlap, so the one that contains the range is
the map's answer. A hit counts its use as a map lookup does, so imports
age out of their eviction protection after as many lookups as before.
APS5_NO_RECENT_IMPORTS looks every import up in the map.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 00:31:02 +03:00
Th3EvilGod b553950efd fix(ngs2): correct UserFx ids and preserve the Delay compatibility path 2026-10-23 01:17:40 +04:00
xdCloudy fcec4981a5 docs: distinguish known exports from unverified ABI 2026-10-22 22:15:40 +01:00
xdCloudy 718e1755ac docs: distinguish known exports from unverified ABI 2026-10-22 22:15:21 +01:00
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
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 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
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 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
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
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
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 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
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
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
3mro777o e036b873ee fix(libSceVdecsw): report the HEVC picture bit depth
Videodec2 now outputs 10-bit HEVC Main 10 frames, so the HEVC picture info
takes bitDepthLumaMinus8 and bitDepthChromaMinus8 from the decoded frame
instead of leaving them 0. The Main 10 stream moves to HevcFixture.hpp so the
Vdecsw test can decode it.
2026-10-22 22:16:55 +02:00
3mro777o 3aee4b3b09 feat(libSceVdecsw): implement sceVdecswGetHevcPictureInfo
Vdecsw read every decoded picture's info through Videodec2's AVC picture
info, which throws for HEVC, so an HEVC decoder failed on its first
picture. Videodec2 now hands Vdecsw a codec-independent picture header,
records whether an HEVC access unit starts with an IDR slice, and Vdecsw
keeps the AVC or the 0xb8-byte HEVC picture info for each picture.

The HEVC test stream moves to HevcFixture.hpp so the Vdecsw test can
decode it.
2026-10-22 22:16:36 +02:00
Dean 3bbd2321de Merge pull request #8468 from Gabrieljr42/feat/ajm-mp3-frame-metadata
feat(libSceAjm): parse CRC-protected and non-stereo MP3 metadata frames
2026-10-23 09:14:29 +13:00
ntamas94andClaude Fable 5.1 f8233a2738 fix(libScePad): open the special port with a handle that reads as disconnected
scePadOpen returned DEVICE_NOT_CONNECTED (0x80920007) for a special port
(type 2) since #3838, which guessed the console behaviour. A PS4 Pro on
firmware 10.71 with no special controller connected opens the special
port of any valid user and returns a handle: scePadRead on it returns one
record with connected false, scePadGetControllerInformation succeeds, and
scePadRead(-1) is INVALID_HANDLE.

Unity's PS4 input module opens the standard and the special port of a
user and keeps the pad handle only if both opens succeed; otherwise it
calls scePadRead with handle -1 every frame and the title never sees a
button. Knowledge is Power (CUSA09558) and Knowledge is Power: Decades
(CUSA12435) had no controller input for that reason.

The special port now opens PAD_SPECIAL_HANDLE, tracked apart from the
standard handle by scePadClose and scePadGetHandle. scePadRead and
scePadReadState on it return a zeroed record, scePadGetControllerInformation
and scePadDeviceClassParseData zeroed structures, and the other pad calls
reject it with INVALID_HANDLE. The standard handle still reads its own
queue, so the double read of one queue that #3838 fixed does not return.
scePadOpenExt is unchanged. The unmeasured parts are recorded in
docs/dev/debt/libScePad.md.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-22 22:11:04 +02:00
orezraeyandClaude Opus 5.5 c399333e7a docs(libkernel): record that released flexible pages keep their host memory
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 17:09:36 -03:00
orezraeyandClaude Opus 5.5 2f8177d7b4 fix(libkernel): keep the range sceKernelReleaseFlexibleMemory releases mapped
Measured on firmware 13.60: the released range stays mapped with its
protection and contents, and a fixed no-overwrite map over it fails
with ENOMEM; a null or unaligned address, an unaligned length or a
range that wraps returns EINVAL, checked before a zero length, which
returns 0, as does a range with nothing mapped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 17:09:36 -03:00
Santhosh Kumar e592b170f4 chore: sync current main for FreeType curve bounds 2026-10-23 01:37:17 +05:30
Braxton Atkinson 07bec523ad docs(libc): separate byte-case compatibility note 2026-10-22 15:00:23 -05:00