Commit Graph
5229 Commits
Author SHA1 Message Date
Dean Galvin fe5c276ec7 Merge main into pr-6457
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-19 21:00:19 +13:00
Werner 4e5eb1c3be fix(libkernel): raise the Windows stdio stream limit to RLIMIT_NOFILE
The C runtime allows 512 stdio streams by default, so after about 509
guest fopen/fdopen streams every further stream failed with EMFILE,
including the std::ifstream APR opens for each read, while getrlimit
reports 8192 open files. Raise the limit to 8192 when libkernel loads,
as the Linux build raises RLIMIT_NOFILE.
2026-10-19 08:00:07 +00:00
john.maiaandClaude Opus 5.5 beba5fad03 feat(libSceVideodec2): output 10-bit pictures as low-bit 16-bit words
A picture deeper than 8 bits threw ("output deeper than 8 bits is not
implemented"), which stops Mortalfin (PPSA99141) as soon as it plays an HEVC
Main10 video (#6640).

A 10-bit picture is now written as 16-bit little-endian words with the sample
in the low 10 bits: Y rows, then interleaved UV rows at framePitchInBytes
times the height. framePitch is in samples and framePitchInBytes in bytes
(twice the width, aligned to 256). QueryDecoderMemoryInfo sizes a frame of an
HEVC or VP9 profile 2 configuration with two bytes per sample.

The layout and sizes follow EVO-PLAYER-PS5, which decodes and presents 1080p
HEVC Main10 on hardware through this path: its 10-bit check
(pitch_bytes >= pitch * 2), its UV offset, its low-bit sampling factor, and
the 1920x1088 Main10 frame buffer its hardware log reports (6128 KB after
rounding to 16 KiB).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 09:58:14 +02:00
Adrià Franch 6a894d4c1c Merge upstream/main into codex/fmask-image-reads 2026-10-19 09:48:51 +02:00
Dean e0a6f31d55 Merge pull request #7760 from MontyMcK/fix/hmd2-no-headset-regression
fix(libSceHmd2): report the PS VR2 runtime as unavailable again
2026-10-19 20:47:29 +13:00
Adrià 13b4f66e12 Merge pull request #6665 from Dellz36/docs/windows-build-setup
docs(build): document Windows Python and Git Bash setup
2026-10-19 09:46:45 +02:00
JJenkx d16e9beed9 fix(ajm): keep batch handles within their creating context 2026-10-19 03:39:00 -04:00
Adrià 9bfbedc562 Merge pull request #6613 from milescoviello/fix/vertex-barrier-before-memory
fix(shader): emit nothing for a vertex s_barrier that precedes every memory access
2026-10-19 09:38:07 +02:00
Adrià 096279ed25 Merge pull request #6610 from JJenkx/fix/linux-sdk-heap-owner
fix(libc): share the guest SDK application allocator
2026-10-19 09:38:02 +02:00
Adrià 58e77bb6e9 Merge pull request #6603 from ymatrix1/feat/net-missing-exports
feat(libSceNet): export missing firmware network interfaces
2026-10-19 09:37:55 +02:00
Adrià a67389debc Merge pull request #6600 from ymatrix1/feat/pad-missing-exports
feat(libScePad): export missing firmware pad interfaces
2026-10-19 09:37:43 +02:00
Adrià 75ec3b5671 Merge pull request #6543 from karanvora2599/fix/agc-radv-fill-memory-hle
fix(agc): take RADV's fill-memory kernel as a buffer fill
2026-10-19 09:37:38 +02:00
Adrià 48335814bc Merge pull request #6592 from LuisAguilarDev/feat/libscenptus
feat(np-tus): add libSceNpTus with offline title user storage
2026-10-19 09:37:33 +02:00
Adrià 3cda671201 Merge pull request #6594 from notaxeltv/fix/ngs2-parallel-listener-orient
fix(libSceNgs2): keep CalcListener basis when front and up are parallel
2026-10-19 09:37:28 +02:00
phoenix-31andClaude Opus 5.5 428132f8ed feat(progress): split history chart into per-measure panels with declared totals
Library functions and shader instructions were drawn on one y-axis with
ambiguous labels and overlapping fills. Each now gets its own panel and
scale, with implemented (solid) against declared (dashed); shaders gain
their declared total from the ISA list. Date labels are horizontal and
every day has a hover tooltip.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 09:30:01 +02:00
xdCloudy 91c931896e fix(prx): retain RegMgr debt and avoid SaveData overlap 2026-10-19 08:29:42 +01:00
xdCloudy 1b5004d77f fix(prx): mark unsupported export prototypes as unknown 2026-10-19 08:28:58 +01:00
T3cm0andClaude Fable 5.1 762410ced4 feat(libSceVideoOut): answer the HMD2 bus open as the console does
sceVideoOutOpen with bus type 0x20, the PS VR2 output PPSA05666 opens as
SCE_VIDEO_OUT_BUS_TYPE_HMD2_MAIN after sceHmd2ReprojectionEnableVrMode, threw
VIDEO_OUT_ERROR_INVALID_VALUE and aborted the title. The console returns that
code to a process that is not a game, with the headset connected and worn or
not, for users 255 and 0 and for a null or zeroed open parameter, so the bus
is answered that way before the other argument checks and the title carries
on with the error as its handle, as it does on the console without a headset.

The debt entry records the sequence the title follows on that handle
(RegisterBuffers2 with category 16 and 4000x2040 descriptors that point at
Hmd2 per-eye textures, ConfigureOutput and IsOutputSupported with 0x2000F, a
GPU wait on buffer 0), which a VR backend will have to model, and the test
covers the bus and the HMD output modes 0x20001 and 0x2000C to 0x20010, which
the console and this implementation answer with VIDEO_OUT_ERROR_UNKNOWN_OUTPUT_MODE
on the TV bus.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-19 02:24:36 -05:00
notaxeltvandCursor 92f11a93ed fix(agc): allow MSAA_ENABLE single-sample rect lists
Filled rectangles (VGT_PRIMITIVE_TYPE 7 and 17) use the same single-sample MSAA_ENABLE path as triangles; PPSA03541 stops on a rect-list draw otherwise.

Co-authored-by: Cursor <[email protected]>
2026-10-19 09:23:53 +02:00
fogydes fa94b2cfc8 feat(libSceNpGameIntent): export missing firmware game intent interfaces 2026-10-19 09:22:26 +02:00
Dean Galvin 23fc286e4c Merge main into pr-6451
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-19 20:08:05 +13:00
Anton Ermolaev 4450bafec8 fix(libSceHttp): add authentication and cookie cache flush exports 2026-10-19 12:07:02 +05:00
Savvanis Spyros 504c41a9ad Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into fix/sce-code-gaps
# Conflicts:
#	core/relinker/relinker/src/pipeline/RelinkerPipeline.cpp
2026-10-19 10:06:58 +03:00
Dean Galvin 33bbd084b9 Merge main into pr-6457
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
2026-10-19 20:05:31 +13:00
Adrià 72aba1dff5 Merge pull request #6571 from klosixgaming-arch/fix/agc-cb-resolve-msaa-disabled
fix(agc): compare a CB resolve's sample count with the rasterizer onl…
2026-10-19 08:58:54 +02:00
Adrià 50a5b435f1 Merge pull request #6596 from ymatrix1/feat/rtc-missing
feat(libSceRtc): implement the remaining firmware exports
2026-10-19 08:57:02 +02:00
Emanuele b687368fac docs(libc): order the macOS unmappable range by macOS version
The range starts at 0x10_0000_0000 on macOS 26.5 and at 0xF_C000_0000 on
macOS 27. The M2 Max on macOS 27.2 shows the same start as the M4 Pro on
27.0.1, so the line lists the macOS version first and the chips only as
the machines it was measured on.
2026-10-19 08:55:20 +02:00
Adrià 64a9caa62d Merge pull request #6499 from parl0v/perf/keep-import-across-split
perf(agc): keep a host import across a split of its guest range
2026-10-19 08:54:36 +02:00
Dean ea5b811341 Merge pull request #7489 from AlxcBTW/pr/barrier-batch
perf(agc): skip the staging, write-back and label-run leading barriers a covering barrier already orders
2026-10-19 19:51:53 +13:00
JJenkx c8d7e37f4c fix(agc): initialize point size and limits from SDK defaults 2026-10-19 02:48:17 -04:00
Yuri Olive 4d6942f1e6 feat(libSceNet): export missing firmware network interfaces 2026-10-19 08:42:01 +02:00
ShinMalphur fed4344c72 docs(libc): record secure string size assumptions 2026-10-19 13:11:36 +06:30
Adrià 05b5d192fb Merge pull request #6309 from fogydes/feat/voicechat-firmware-exports
feat(libSceVoiceChat): export missing firmware voice chat interfaces
2026-10-19 08:38:57 +02:00
Adrià fcde2cf95c Merge pull request #6529 from al3w0f205/feat/agcdriver-quadlist-primitive
feat(libSceAgcDriver): support quad-list primitive type
2026-10-19 08:38:11 +02:00
Adrià dc54701e49 Merge pull request #6541 from wachi35676/fix/libc-fopen-random-device
fix(libc): read /dev/random and /dev/urandom through fopen
2026-10-19 08:38:06 +02:00
Adrià 22e59888ce Merge pull request #6467 from fogydes/feat/agc-driver-command-buffer-submit
feat(libSceAgcDriver): implement command buffer submission
2026-10-19 08:37:37 +02:00
Adrià 22410061d5 Merge pull request #6542 from wachi35676/fix/libkernel-windows-shared-file-mmap
feat(libkernel): map regular files with mmap on Windows
2026-10-19 08:37:27 +02:00
notaxeltvandCursor 07d9f409a4 fix(libSceNgs2): keep CalcListener basis when front and up are parallel
PPSA15552 passes matching front/up after a listener move; pick a perpendicular up hint instead of throwing so Dead Cells can keep running.

Co-authored-by: Cursor <[email protected]>
2026-10-19 08:29:47 +02:00
Adrià Franch 6093e8c49e docs(np-tus): add technical debt for libSceNpTus 2026-10-19 08:27:08 +02:00
MontyMcK b378541e79 fix(libSceHmd2): report the PS VR2 runtime as unavailable again
Since #7323 sceHmd2Initialize succeeds and sceHmd2Open returns a handle,
so PPSA01317 runs its PS VR2 set-up and aborts on
sceHmd2ReprojectionQueryBufferSizeAlign, which is not implemented
(reported in #6350). AnyPS5 has no PS VR2 or PC VR support, so
initialization returns libSceHmd's UNSUPPORTED_FEATURE (0x81110016)
again, as before #7323, and titles skip their VR set-up. sceHmd2Open
then returns NotInitialized. The reprojection size queries stay
unimplemented.

Refs #6350
2026-10-19 19:25:30 +13:00
Karan Vora 2907ca6cac fix(agc): take RADV's fill-memory kernel as a buffer fill
RADV initializes and fast-clears DCC keys with its fill_memory compute
kernel, which stores through a global address. Run as an ordinary
dispatch, its stores name no range. The DCC key tracking therefore saw
a key fill only once it had landed in guest memory, which could be
after later writes to the surface had already been recorded.

vkQuake (PPSA99010) hits this on every item pickup:
- the scene renders into a second color buffer;
- RADV's UNDEFINED -> GENERAL barrier fills color buffer 0's keys with
  DCC_CLEAR_0000;
- a screen-effects compute pass writes color buffer 0;
- the UI pass draws on color buffer 0.
The keys landed while the UI pass was being recorded. The refresh took
them for a clear made after the compute pass, dropped its results and
cleared the image to black. For the length of the pickup flash the
scene was black, with only the HUD drawn.

The fill HLE now matches the 16-byte variant of the kernel as a fill of
min(threads * 16, user[4] + 16) bytes. The kernel takes its address in
user[2..3], its largest store offset in user[4] and its value in
user[5]. A key fill through it is handled where it is in the command
stream.
2026-10-19 08:21:36 +02:00
ionut27001andClaude Opus 5.5 ae662c873d fix(libc): parse NaN payloads in strtod as measured on a PS5
In a payload process on a PS5 (firmware 12.70), the strtod and wcstod
of libSceLibcInternal.sprx keep the payload of a NAN(...) sequence,
read as FreeBSD 11's gdtoa hexnan reads it, under the quiet bit and
with the sign. strtof, wcstof, strtold and wcstold return the positive
default quiet NaN whatever the sign and the sequence, and consume a
sequence of letters, digits and underscores up to its closing
parenthesis. Here every NaN lost its payload, and strtof and strtold
kept the sign.

The model reproduces the 64 NaN inputs that p11, p14, p27 and p33
measured, including blanks and other characters inside the parentheses
and unterminated sequences, and the test now pins them. It also pins
two p71 cases measured through strtod: nan(1 2), and "nan( " followed
by NUL and ")". In hexnan, a blank after a payload digit, while a
32-bit word of the payload is still free, starts a blank skip that has
no NUL check, so when only blanks follow up to the terminating NUL the
console reads past it (p71); that case throws here. A blank right after
"nan(" is skipped with a NUL check, and the console stopped at the NUL
there.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 09:20:41 +03:00
Adrià 06a750df70 Merge pull request #6293 from fogydes/feat/video-recording-firmware-320-exports
feat(libSceVideoRecordingP): export missing firmware 3.20 video recording interfaces
2026-10-19 08:19:41 +02:00
Adam Franke 2798e6a6fd fix(libSceSsl): follow the codes and defaults measured on a PS5 (13.40)
Every unverified point of the libSceSsl debt entry was measured on a PS5 on
system software 13.40 with a ps5-payload-dev payload against a TLS 1.2 test
server presenting leaves issued by the test fixture root. The code follows the
console where it differed: initial verify options 0x25 with the date checks
off, bits outside 0x3F rejected, the verify callback called with the context
id and the bitmask of failed checks and re-run from every later call after a
negative return, sceSslRead flags 0 reading until the requested length,
streams that end without close_notify reading as 0, resets reported with the
libSceNet codes, receive timeouts as SSL_ERROR_WANT_POLLIN, a fatal alert
ending the transport, sceSslClose as a repeatable no-op before the handshake,
read and write before connect running the handshake, SSL_ERROR_INVALID_ID for
unknown or deleted handles and terminated contexts, sceSslSetMinSslVersion
accepting 2 to 5, an empty ALPN list rejected, long attribute names from
sceSslGetNameEntryInfo and sceSslGetSerialNumber leaving the caller's length.
The debt entries record the measured values and what stays unmeasured.
2026-10-19 02:12:30 -04:00
fogydes 0f38f0fe58 feat(libSceVoiceChat): export missing firmware voice chat interfaces 2026-10-19 11:39:06 +05:30
Adrià 9817d53cc9 Merge pull request #6345 from hypermoist/feat/libc-exact-math
feat(libc): add exact long double and BSD math exports
2026-10-19 08:06:40 +02:00
Josip Parlov 4c8eb6d369 docs(env): list APS5_NO_CLEAR_HAND_OVER 2026-10-19 08:03:03 +02:00
Josip Parlov df72da5dbf docs(agc): describe trimmed host imports and backing serials 2026-10-19 08:02:13 +02:00
Leonardo 6d95f1e3a0 docs(libSceVoiceQoS): classify packet calls as silent stubs 2026-10-19 08:01:14 +02:00
eth-j17andClaude Opus 5.5 ca4303a155 feat(trace): record host, title and per-frame benchmark data
The summary line names the CPU, its thread count, physical memory and,
with param.json, the title ID, name and content version.

APS5_TRACE_BENCH=1 with APS5_TRACE_SUMMARY_EVERY rewrites
aps5-bench-<commit>-<pid>.json.gz at each interval with the time between
every two presents, so reports can be recomputed and checked from raw
frame times. param.json's contentVersion is read when present.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 01:01:13 -05:00