Commit Graph
8546 Commits
Author SHA1 Message Date
Adrià e1ef22e888 Merge pull request #9461 from milescoviello/fix/tsc-calibration-one-cpu
fix(libkernel): measure the TSC frequency on one CPU
2026-10-25 19:48:55 +01:00
orezraeyandClaude Opus 5.5 1a4c3bb09e docs(libSceSystemService): record sceSystemServiceIsBgmPlaying as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:47:19 -03:00
Adrià 58c9977e3b Merge pull request #9562 from milescoviello/feat/uds-trophy-progress
feat(libSceNpTrophy2,libSceNpUniversalDataSystem): unlock progressive trophies through _UpdateTrophyProgress
2026-10-25 19:45:49 +01:00
Ondra97 a476e42188 feat(libSceFreeType): manage multiple size objects 2026-10-25 19:44:44 +01:00
orezraeyandClaude Opus 5.5 258ce3e2e9 docs(libc): record feholdexcept, fegetexcept, setlocale and strcasecmp as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:42:25 -03:00
Bram910andClaude Opus 5.5 df5555a905 docs(shader): move the unreachable-words debt entry next to the control-flow entries
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:40:23 +01:00
Shahul Mubeen AandClaude Opus 5.5 b9d00c5d80 fix(shader): write 1D storage images through 2D-array stores at slice 0
An image_store with DIM 2D_ARRAY through a 1D T# had no runtime image
mode, so the dispatch stopped with "image descriptor is incompatible
with the static runtime image interface". #2348 added a 1D mode for
DIM 2D stores only.

Write-only 2D-array storage images now get the same 1D mode as the 2D
case. On RDNA2 (gfx1036, hardware oracle) such a store writes texel x
and ignores y when the slice is 0, and writes nothing for any other
slice, with DEPTH 0 or 3, so the store is skipped unless the slice is 0.

New execution test agc_driver_image_store_line_through_plane_array.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 00:10:03 +05:30
Bram910 6541c73f49 Merge origin/main into fix/shader-skip-unreachable-words 2026-10-25 19:38:58 +01:00
Adrià a7a2eece49 Merge pull request #9437 from Ondra97/codex/fix-freetype-face-reference-lifetime
fix(libSceFreeType): preserve referenced face lifetimes
2026-10-25 19:35:22 +01:00
Adrià 2cd69d689a Merge pull request #9667 from xXPBSXx/docs/np-sns-debt-undeclared-names
docs(debt): make the NpSns entry and its note agree on three names
2026-10-25 19:35:10 +01:00
Adrià efe89d49c9 Merge pull request #9651 from xXPBSXx/docs/sce-net-connect-unspec-windows-bound-address
docs(debt): record what a Windows datagram socket keeps after sceNetConnect to AF_UNSPEC
2026-10-25 19:31:54 +01:00
orezraeyandClaude Opus 5.5 f0a989a508 docs(libkernel): record the version stubs, kern.boottime and the SoC power block as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:29:10 -03:00
orezraeyandClaude Opus 5.5 fc938dcedb fix(libkernel): throw on PRIO_PGRP and PRIO_USER setpriority until measured
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:27:28 -03:00
Yunus Shaikh 46fe252486 docs(debt): record that sceAjmBatchJobGetStatistics only zero-fills its sideband 2026-10-25 18:25:27 +00:00
Kraken d1a277b7d8 feat(libc): implement sequential bitwise fetch helpers 2026-10-25 19:16:20 +01:00
Bram910andClaude Opus 5.5 e1213fd473 fix(shader): skip undecodable words that only follow s_branch or s_endpgm
The RDNA program decode sweeps linearly up to the last s_endpgm past the
furthest direct branch target, so it also decoded words that no path
reaches and threw on any it could not decode. A word directly after
s_branch, s_endpgm or s_code_end that fails to decode is now skipped;
the decode still throws that word's error when a direct branch or
s_call_b64 targets it, and a failure on a word reachable by fall-through
is unchanged. The control-flow graph starts the block after s_branch and
s_endpgm at the next decoded instruction instead of the next word.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:15:40 +01:00
Adrià 5d48c6233e Merge pull request #9401 from tibzejoker/perf/grow-pipeline-store
perf(agc): size the pipeline store to the title's working set
2026-10-25 19:07:59 +01:00
orezraeyandClaude Opus 5.5 c5dd9f9cbc fix(libSceRtc): check the seconds before the pointer in sceRtcSetTime_t as measured on a PS5
On PS5 firmware 13.60 sceRtcSetTime_t(NULL, -1) returns
SCE_RTC_ERROR_INVALID_VALUE and sceRtcSetTime_t(NULL, 0)
SCE_RTC_ERROR_INVALID_POINTER: negative seconds are rejected before a
null destination under the later SDK rules. The other measured
GetDayOfWeek, SetTime_t and FormatRFC3339 results already matched.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:06:45 -03:00
AlxcBTW 3aa53715ce docs(debt): record the unmeasured Annex K stream function results 2026-10-25 19:04:17 +01:00
Yunus Shaikh d0c945ce86 docs(libkernel): record how poll reports a hung-up stream socket on each host 2026-10-25 19:01:11 +01:00
orezraeyandClaude Opus 5.5 642f6fc7ef docs(libkernel): mark PRIO_PGRP and PRIO_USER setpriority as unverified
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 14:59:05 -03:00
Braxton Atkinson 67c149465e feat(net): store DNS overrides and match firmware argument checks
Apply the firmware 13.42 module-probe report in PR #9506: all four DNS calls check initialization first; getters return EINVAL for null outputs or nonzero flags; setters reject flags before reading guest memory. Keep the checked input copy and document EFAULT as host safety, not firmware behavior. Use the current public Net.hpp declarations in the regression.

Rebased onto upstream e7e3e9c198. Ubuntu 24.04, GCC 13.3, Release: actual libc/libkernel/libSceNet libraries and both focused test executables built. guest_sce_net passes. A separate harness linked against those unmodified libraries passes initialization, errno, invalid flags, unreadable-input flag precedence, null clearing and unchanged-output checks. The full guest_net_dns_info test is blocked here: process_vm_readv is denied with EPERM by the execution environment. No full DNS regression pass is claimed. Public-header audit, conventions, test registration and whitespace checks pass.

The resolver still uses host DNS; IPv6 host-server discovery and firmware server-count behavior remain debt. Firmware evidence: https://github.com/boykopovar/AnyPS5/pull/9506#issuecomment-6390574180

AI-assisted: yes
2026-10-25 18:56:14 +01:00
orezraeyandClaude Opus 5.5 2a0604d3e9 fix(libkernel): keep the nice value at 0 after setpriority as measured on a PS5
On PS5 firmware 13.60 setpriority(PRIO_PROCESS, 0, v) returns 0 for -25,
-5, 5 and 25, and getpriority keeps returning 0. setpriority keeps its
target checks and returns 0 without storing the value.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 14:48:57 -03:00
Adrià 19fe176ddc Merge pull request #9456 from mazen320/feat/libc-time-get-vtable
feat(libc): export the time_get facet vtable as data
2026-10-25 18:38:52 +01:00
Adrià FranchandClaude Sonnet 5.5 44ea38fc23 fix(relinker): align the macOS import trace stack and trace only executable segments
Save r12 in the entry walk so TraceImport_nid_no_patch is called with an aligned stack, record only executable Mach-O segments in the module map, and make the test hook check the alignment.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 18:37:39 +01:00
Radu Ursache 66ca5c0442 feat(relinker): trace function imports on macOS
Walk each macOS function import before the guest entry and pass it through TraceImport_nid_no_patch, as Linux and Windows already do. An x86-64 libc build records the call and prints it on SIGABRT.
2026-10-25 18:37:23 +01:00
JaceTheBluandClaude Opus 5.5 e8d6c3fb47 feat(libSceLibreSsl): implement X509_LOOKUP_file and X509_STORE_add_lookup
Both exports threw and were declared without parameters. They follow
LibreSSL 2.5.4, unchanged in 2.7: X509_LOOKUP_file returns the static
80-byte file method, and X509_STORE_add_lookup returns the store's
lookup for a method, or mallocs a 32-byte lookup owned by the store and
pushes it on the store's methods, growing the stack the way sk_insert
does. X509_STORE_free now frees the store's lookups.

The file method's ctrl, which loads PEM files, throws: there is no
certificate model yet. Callbacks of guest-supplied methods throw
instead of being called.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 17:37:22 +00:00
JaceTheBluandClaude Opus 5.5 2bafc417cc feat(libSceLibreSsl): implement X509_VERIFY_PARAM_set_hostflags and X509_VERIFY_PARAM_set1_ip_asc
Both exports threw and were declared without parameters. They follow
LibreSSL 2.5.4, unchanged in 2.7: set_hostflags stores the host
matching flags in the verify parameters' identity, and set1_ip_asc
parses an IPv4 or IPv6 address the way a2i_ipadd does, copies the 4 or
16 bytes into a guest malloc block that replaces the previous address,
and returns 0 without touching it for text the parser rejects. IPv4
parts are read with the guest sscanf, as the module would.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 17:37:05 +00:00
JaceTheBluandClaude Opus 5.5 a2d4d38a15 feat(libSceLibreSsl): implement X509_STORE_new, X509_STORE_free and X509_STORE_set_flags
The three exports threw and were declared without parameters. They now
follow LibreSSL 2.5.4, the version the firmware 13.40 measurements
identify: X509_STORE_new allocates the 136-byte store with an empty
object cache, an empty lookup method stack and 64-byte verify
parameters at depth -1, X509_STORE_free drops a reference and frees the
store with its stacks, verify parameters and their host names, peer
name, email and IP, and X509_STORE_set_flags ORs the flags into the
verify parameters and adds the policy check for any policy flag.

No export adds certificates, CRLs or lookup methods yet, so freeing a
store that holds them, or verify parameters holding policy objects,
throws instead of freeing objects with no model.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 17:37:05 +00:00
Adrià ac65cf490e Merge pull request #9613 from JJenkx/windows/libc-debt-bundled-readings
docs(debt): cite the bundled libc.prx for _Mtx_trylock, strdup and strndup
2026-10-25 18:36:43 +01:00
Eduardo Ruiz 1adc418e6e feat(libc): forward pthread attributes in _Pad::_Launch 2026-10-25 18:34:18 +01:00
mantavisualandClaude Opus 5.5 37d5137ea0 docs(libSceIcu): record the ICU version firmware 13.42 reports
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:28:38 +02:00
Adnan Khan 0d14468ccc fix(libSceAmpr): zero the padding of a constructed Nop payload 2026-10-25 22:56:04 +05:30
Adrià f50caac5c2 Merge pull request #9494 from EagleBearerYS/fix/libscenet-inet-text-rules
fix(libSceNet): follow FreeBSD inet text rules for IPv6
2026-10-25 18:23:21 +01:00
slopgobblercobbler dbfde882dd fix(agc): validate multi-submit count overflow and null command buffers 2026-10-25 18:20:45 +01:00
Queuze ec47c9aa87 fix(net): preserve truncated option reads on sync 2026-10-25 14:18:39 -03:00
Queuze ea7109554c fix(net): retain protocol and socket state reads 2026-10-25 14:18:22 -03:00
Queuze 01b7dbaa7f fix(net): preserve short readback on main sync 2026-10-25 14:17:53 -03:00
Adnan Khan ada5ad0990 fix(libSceAmpr): write the console's Nop header word and report a null base first 2026-10-25 22:46:51 +05:30
Adrià 7e4f6e0440 Merge pull request #9482 from valenciana-nc/fix/pthread-attr-ended-thread
fix(libkernel): reject ended threads in pthread_attr_get_np
2026-10-25 18:14:22 +01:00
Dean 59bf9480f7 Merge pull request #10432 from JAB-dev/fix/ngs2-pan-ps5
fix(libSceNgs2): return the PS5 pan codes and accept NaN pan inputs
2026-10-26 06:14:03 +13:00
Davi Azevedo b166232c72 fix(agc): refresh DCC sampled array windows 2026-10-25 14:13:27 -03:00
orezraeyandClaude Opus 5.5 83780cc1a0 Merge main into fix/libkernel-sw-version-block-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 14:11:20 -03:00
ntamas94andClaude Opus 5.5 43c82acb0f docs(libSceAjm): say the empty PS4 batch contract needs a non-null address
A null batch address is refused whatever the size, so the accepted batch
of zero bytes is one at a real address, which is what TestConsoleEmptyBatch
starts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:10:39 +01:00
ntamas94andClaude Opus 5.5 8c9c50b0b2 fix(libSceAjm): decode one ATRAC9 frame per PS4 run job without RUN_MULTIPLE_FRAMES
A probe on a PS4 decoded exactly one frame and reported 0 for an ATRAC9
run job without RUN_MULTIPLE_FRAMES. Jobs read from a PS4 batch buffer
now do the same. Jobs from the PS5 builders keep decoding their whole
input, which FMOD in PPSA29141 relies on.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:10:39 +01:00
ntamas94andClaude Fable 5.1 414985e073 docs(libSceAjm): say the null batch probe froze the console
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-25 18:10:39 +01:00
ntamas94andClaude Fable 5.1 46f0e90b92 fix(libSceAjm): reject a null PS4 batch address
sceAjmBatchStartBuffer let a null batch of zero bytes through its
parameter check and formed the end pointer from it. A null batch now
returns INVALID_PARAMETER whatever the size, as the PS5 builders'
sceAjmBatchInitialize does; a batch of zero bytes still starts, runs
nothing and completes at once. A test covers both; neither was measured
on a console, which the debt entry says.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-25 18:10:39 +01:00
ntamas94andClaude Fable 5.1 e3917fa218 docs(libSceAjm): align the gapless and libSceAjmi debt entries with the PS4 probe
The gapless entry no longer says the one-frame behaviour is unverified,
since the probe measured it, and the libSceAjmi entry names the two
exports its file declares.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-25 18:10:39 +01:00
ntamas94andClaude Fable 5.1 6559a413b0 fix(libSceAjm): keep the libSceAjmi stub and refuse null batch buffers as a PS4 does
Review of the PS4 batch buffer change. The libSceAjmi stub of
sceAjmBatchJobRunBufferRa stays, declared with the _nid_disambig1 suffix
so that both libraries export the NID without defining one name.

sceAjmBatchStartBuffer reads the whole batch before running any job, as
probe batches on a PS4 showed: a buffer chunk of size zero is dropped
whatever its address, and a null address with a nonzero size refuses
the batch with INVALID_ADDRESS in the error record together with the job
chunk, the chunk's offset in the job and the job's return address, with
nothing of the batch run. Inputs and outputs share that rule. The
console-measured result flags move from test comments to the debt
entries.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-25 18:10:25 +01:00
ntamas94andClaude Opus 5.5 e2096fa49a feat(libSceAjm): run PS4 batch buffer jobs in the console's chunk layout
PS4 titles build AJM batches with the SDK's inline helpers, which call
sceAjmBatchJobControlBufferRa, sceAjmBatchJobRunBufferRa and
sceAjmBatchJobRunSplitBufferRa and start the buffer with
sceAjmBatchStartBuffer. The buffer belongs to the title, so it has to use
the console's chunk layout rather than this library's private records.

The builders write console jobs (job, return address, buffer and flags
chunks) and return the position after them. StartBuffer checks the
context, walks the chunks, skips inline data and runs each job as the
library's existing control, run or statistics job. Chunk headers are read
as the console's builders write them: bits 0-3 the kind, bit 4 a buffer's
output direction, bits 6-25 the payload; the other bits keep a reused
buffer's old bytes on a PS4. Malformed batches return MALFORMED_BATCH,
unknown chunk kinds and unimplemented control flags throw.

An ATRAC9 run with RUN_MULTIPLE_FRAMES reports which side ran out as a
PS4 does (0x8 input, 0x10 room, 0x18 both), and the ATRAC9 format reports
the frame's bitrate; both were measured on a PS4 with Knowledge is Power:
Decades (Wwise) batch dumps and probe runs. The vibration test's exact-fit
run expects 0x18 accordingly.

The throwing stubs in libSceAjm and the libSceAjmi copy of
sceAjmBatchJobRunBufferRa are dropped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-25 18:10:24 +01:00