Commit Graph
4862 Commits
Author SHA1 Message Date
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
Adrià FranchandClaude 9d1ac9033e fix(libc): report unknown syslog bits with FreeBSD's internal priority
FreeBSD vsyslog logs the complaint with LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID passed as the priority (0x23), not LOG_ERR.

Co-Authored-By: Claude <[email protected]>
2026-10-09 23:23:49 +02:00
john.maiaandClaude Opus 5.5 bcd1b0c2a0 feat(libc): implement syslog and vsyslog
ps5-opengl (PPSA99005) and ProsperoRadio (PPSA99001) import syslog
from libSceLibcInternal. Messages go to stderr with the priority, and
the format follows FreeBSD's vsyslog: %m expansion, masking of unknown
priority bits, LOG_USER as the default facility, errno preserved.

Assisted by Claude Code.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:23:42 +02:00
Adrià d724cad38c Merge pull request #1748 from danielradosa/feat/libkernel-seteuid-setegid
feat(libkernel): implement seteuid and setegid
2026-10-09 23:23:34 +02:00
LeandroLP23andClaude Opus 5.5 a3f0120da2 feat(libkernel): export environ as an empty environment
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:22:58 +02:00
Adrià 5bc7886ab8 Merge pull request #1188 from MathiasDevelopes/feat/kernel-module-info-windows
feat(libkernel): implement sceKernelGetModuleInfoFromAddr on Windows
2026-10-09 23:22:46 +02:00
Adrià 870ac041c5 Merge pull request #1685 from overlordxrz-source/feat/libkernel-sysctl-hw-ncpu
feat(libkernel): implement sysctl and sysctlbyname for hw.ncpu
2026-10-09 23:20:13 +02:00
NumberGuan f9be27619e fix(posix): preserve the socket helper during NID patching 2026-10-09 23:19:03 +02:00
Tomás Ortellado 7a771d2d89 feat(posix): implement mkstemp and isatty 2026-10-09 23:18:58 +02:00
Adrià 2e375a5c84 Merge pull request #1634 from babyhuey/feat/libkernel-getdents
feat(libkernel): implement getdents and getdirentries
2026-10-09 23:18:45 +02:00
Jan ŠléglandClaude Fable 5.1 14cc6497d2 feat(libkernel): implement tcgetattr and tcsetattr
A title's descriptors are taken as never being terminals: a file or
pipe gets ENOTTY with the termios untouched, a socket gets what its
protocol answers a termios ioctl on FreeBSD (EADDRNOTAVAIL for AF_INET,
EOPNOTSUPP otherwise), and a closed or invalid descriptor EBADF.
tcsetattr gives EINVAL for an action other than TCSANOW, TCSADRAIN or
TCSAFLUSH, with or without TCSASOFT, before anything else, and EFAULT
for a null termios before the descriptor is checked; with TCSASOFT a
null termios throws, where FreeBSD's libc faults copying it. What the
console gives a title as descriptors 0 to 2 is unknown, as recorded in
TechnicalDebt.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-09 23:17:12 +02:00
LeandroLP23andClaude Opus 5.5 c54143dbb9 feat(libkernel): implement sigaltstack
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:16:18 +02:00
Adrià 87b998a99a Merge pull request #1673 from SleglJan/feat/libkernel-mlock
feat(libkernel): implement mlock and munlock
2026-10-09 23:15:19 +02:00
Gjon Gojcevic 04dec3ddbc feat(libSceVideoOut): register the VRR status event and accept the VRR status call
LibwuIonIBw registers video out event id 16, which the host never triggers because its VRR state does not change; kP2L8t3j-aM returns 0 without effect.
2026-10-09 23:12:08 +02:00
Adrià 73ba24aacb Merge pull request #1823 from Mouhand-Kaddo/feat/sce-opus-dec
feat(opus): implement 48 kHz libSceOpusDec
2026-10-09 23:12:02 +02:00
Adrià bbc4438183 Merge pull request #2301 from parl0v/refactor/libc-name-cyber-stubs
refactor(libc): name the 12 Cyberpunk stubs the NID database resolves
2026-10-09 23:07:39 +02:00
Adrià 27cb335be1 Merge pull request #1650 from Pedroj-64/feat/libkernel-uid-gid
feat(libkernel): implement getuid, geteuid, getgid, getegid and issetugid
2026-10-09 23:04:27 +02:00
Adrià 747726c43f Merge pull request #2203 from XairRrR/feat/libscevdecsw
feat(libs): implement libSceVdecsw on top of libSceVideodec2
2026-10-09 23:04:00 +02:00
Adrià 837dbd8568 Merge pull request #2319 from parl0v/refactor/agc-interpolant-mapping-name
refactor(agc): name HV4j+E0MBHE sceAgcCreateInterpolantMapping_0100
2026-10-09 23:01:34 +02:00
Adrià 4c36741929 Merge pull request #1641 from SleglJan/feat/libkernel-sigset
feat(libkernel): implement the sigset functions
2026-10-09 22:58:56 +02:00
Adrià 5694d3fd3e Merge pull request #2344 from mrzacarias/refactor/np-partner-name-ea-access
refactor(libSceNpPartner001): name the EA access exports
2026-10-09 22:49:12 +02:00
Achraf ReyaniandClaude Opus 5.5 e8d4c022ea fix(libc): clear the read-only attribute before the single delete
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 05:23:18 +09:00
popcoder565andClaude Opus 5.5 570e7affdb Merge remote-tracking branch 'origin/main' into fix/kernel-raise-exception-ntcontinue
Keeps this branch's CONTEXT_FULL | CONTEXT_SEGMENTS read, context-first
order and bounded retry in RaiseOn, and adds #1478's ymm save fields to
both deliveries. The test keeps both phase sets; the vectors phase runs
after the continuing, selfing and looping phases and counts their
deliveries. The TechnicalDebt entry about ymm upper halves is dropped,
since #1478 preserves them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 16:04:14 -04:00
marcio-ch baa4b07b1b test(libSceRudp): expect sceRudpGetStatus to return instead of throwing
GuestOfflineImports still expected sceRudpGetStatus to throw not-implemented;
the implementation now returns RUDP_ERROR_NOT_INITIALIZED before init and
zeroes the status buffer after it.
2026-10-09 16:57:52 -03:00
MarcZX100 db3ccb5481 test(SaveData): drop nonportable directory timestamp check 2026-10-09 19:35:48 +00:00
MarcZX100 4e0e55ff45 fix(SaveData): use C++20 file clock conversion 2026-10-09 19:35:48 +00:00
Ruzi 4f16f7c020 feat(libkernel): implement sceKernelAioPollRequests 2026-10-09 23:02:39 +03:30
Hannah Lyons eb20ba1aaa feat(libc): implement __fpclassifyf 2026-10-09 15:30:00 -04:00
Karan Vora 719f003adf perf(shader): compute v_dot2_f32_f16 in f32 outside the special cases
v_dot2_f32_f16 rounded a.x * b.x + a.y * b.y + c once, computed with f64
TwoSums and round-to-odd. GeForce GPUs run f64 at 1/32 or 1/64 of the
f32 rate, which made it cost about 44 v_fma_f32 on an RTX 4060.

The f16 products are exact in f32, and the correctly rounded sum of
three f32 values only needs f32: two TwoSums, a round-to-odd sum of
their errors and a final add (Boldo and Melquiond, "Emulation of FMA and
Correctly Rounded Sums: Proved Algorithms Using Rounding to Odd",
IEEE TC 57(4), 2008), with round-to-odd emulated by stepping an even
rounded sum one ulp toward its error. With finite inputs, c zero or at
least 2^-100 and a result between 2^-100 and 2^127, every value involved
is zero or a multiple of 2^-123, so no driver flush can reach it. Other
inputs, and zero results, take the f64 lowering in a branch.

New test agc_driver_f32_dot2_rounding checks random, cancelling and tie
cases against an exact fixed-point sum, and the NaN, infinity and zero
rules.
2026-10-09 15:29:37 -04:00
Dean 8b393b6e9a Merge pull request #759 from Celegans12/feat/agc-guarded-null-pointers
feat(agc): implement deferred faults for reads through null SRT pointers
2026-10-10 08:06:47 +13:00
Dean d93bc7763c Merge pull request #1004 from Celegans12/perf/agc-staging-pool-reuse
perf(agc): pool device staging buffers by size class
2026-10-10 08:06:32 +13:00
Dean d2612fb586 Merge pull request #1411 from Celegans12/perf/agc-heap-mirror-runs
perf(agc): skip unchanged heap mirror runs and idle mirror sweeps in address-based builds
2026-10-10 08:06:17 +13:00
Dean 05ba7f746a Merge pull request #1410 from Celegans12/perf/agc-imported-heap-mirrors
perf(agc): release a heap mirror once a host import serves its range
2026-10-10 08:06:03 +13:00
Dean 2af96d1863 Merge pull request #1085 from Celegans12/fix/agc-host-heap-budget
fix(agc): throw instead of aborting when a heap mirror cannot be made
2026-10-10 08:05:48 +13:00
Dean 00dbf93742 Merge pull request #1489 from Celegans12/fix/agc-merged-range-past-import
fix(agc): copy an imported range once a merge extends it past its import
2026-10-10 08:05:33 +13:00
Dean 0c8d5356d7 Merge pull request #1480 from awake-devel/fix/cond-wait-recursive-mutex
fix(libkernel): release every level of a recursive mutex during a cond wait
2026-10-10 08:05:19 +13:00
Dean 87e773689e Merge pull request #1478 from awake-devel/fix/guest-signal-delivery
fix(libkernel): keep ymm upper halves across a redirected raise
2026-10-10 08:05:04 +13:00
Dean fffb830363 Merge pull request #1477 from awake-devel/fix/current-cpu-in-guest-mask
fix(libkernel): report the current CPU within the thread's guest affinity
2026-10-10 08:04:50 +13:00
MathiasDevelopesandClaude Opus 5.5 d5721f34b2 feat(libScePsml): build libScePsml from the libScePsml_debug source
Titles that link the release module libScePsml.prx failed to start
because no host library had that name; PPSA25344 links it. libScePsml
and libScePsml_debug are now built from the same source.
scePsmlMfsrGetDispatchMfsrPacket1000, which PPSA25344 imports, is
added without an implementation.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-09 20:25:55 +02:00
Pouare514 998016e789 fix(libs): drop stubs now owned by main after rebase 2026-10-09 20:13:56 +02:00
Pouare514 c67189fdee fix(libs): export host-colliding runtime names via _nid_postfix 2026-10-09 20:12:46 +02:00
Pouare514 eafeecda82 fix(libs): coexist with main's Http impls, drop Net stub owned by Net PR 2026-10-09 20:12:46 +02:00
Pouare514 b6c70b1135 fix(libs): rename loader stubs to recomputed real names, drop clashing ones 2026-10-09 20:12:31 +02:00
Pouare514 e96ec6da7d feat(libs): Deathloop loading support (Ampr, NetCtlApDialog, Party + stubs) 2026-10-09 20:11:35 +02:00
Karan Vora 8a578128b2 perf(shader): convert v_cvt_pkrtz_f16_f32 from the native nearest-even conversion
With the 16-bit RoundingModeRTE, DenormPreserve and
SignedZeroInfNanPreserve guarantees, convert each value to the nearest
half with OpFConvert, convert the half back to f32 and, when it is
further from zero than the source, step its bits one toward zero. That is
the toward-zero half for every finite value, including subnormal results
and 65504 for values from 65520 up; infinities and the quiet NaN with
the high payload bits are kept. Other devices keep the integer
conversion.

New test agc_driver_f16_pack_toward_zero checks every half, its f32
neighbours and the midpoints to the next half, with both signs.
2026-10-09 14:11:02 -04:00
MathiasDevelopesandClaude Opus 5.5 7142b6e76f feat(recompiler): convert f32 to f16 natively when the device rounds 16-bit floats to nearest even
The integer emulation of the round-to-nearest-even float-to-half
conversion is exact but costly: a compute shader with about 3600
conversions never finished compiling on NVIDIA. When the device enables
shaderFloat16 and guarantees shaderRoundingModeRTEFloat16,
shaderDenormPreserveFloat16 and shaderSignedZeroInfNanPreserveFloat16,
it advertises Float16, RoundingModeRTE and DenormPreserve, and the
recompiler emits OpFConvert under the 16-bit RoundingModeRTE,
DenormPreserve and SignedZeroInfNanPreserve execution modes instead.
NaNs keep the emulated quiet NaN with the high payload bits. Devices
without these guarantees keep the emulation.

Graphics validation accepts the RoundingModeRTE, DenormPreserve and
SignedZeroInfNanPreserve execution modes for 16-, 32- and 64-bit floats,
so vertex and pixel shaders with a native conversion still draw.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-09 14:11:02 -04:00
Gerard L.andClaude Opus 5.5 b6a9530723 fix(agc): use gfx1013's smaller mip tail limits for 8 and 16 bpp SW_64KB_Z_X
The smallest mip levels of a tiled surface are packed together into one
block, the mip tail. A size limit decides which level is the first to
go into the tail.

For SW_64KB_Z_X, AnyPS5 used the same limit as the other 64 KiB modes.
In addrlib, that is only the case on Navi10. On every other GFX10 chip,
including the PS5's gfx1013, addrlib halves the limit for 8 and 16 bpp
Z_X surfaces: the width at both sizes, and also the height at 8 bpp.
The setting behind this is dsMipmapHtileFix (see HwlConvertChipFamily
and ComputeSurfaceInfoMacroTiled in gfx10addrlib.cpp).

With the larger limit, the tail started too early. For example, a
256x256 R8 surface with 9 levels started its tail at mip 1 instead of
mip 2, and took 131072 bytes instead of 196608. Every level was then
read and written back at the wrong offset.

GetMipTailLayout now halves the limits the same way. Only the level
where the tail starts changes; the tail slot positions stay the same.
This follows addrlib's setting for gfx1013. The console's own layout
has not been measured.

Fixes #1590

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 20:06:51 +02:00