Commit Graph
6874 Commits
Author SHA1 Message Date
Federico Marras 6750e01384 Merge commit '3ca07d086d5f44fbe3c00370e7f03953ab46ca1b' into feat/ngs2-calc-vag-block 2026-10-22 15:23:02 +02:00
Dean b786b907c8 Merge pull request #8113 from Nixitov/feat/videodec2-init-library
feat(libSceVideodec2): declare sceVideodec2InitLibrary
2026-10-23 02:22:58 +13:00
Dean 830ccd121f Merge pull request #9303 from oneandonlydean/fix/getdents-app0-symlink-type
fix(libkernel): report app0 symlinks as their target type in getdirentries
2026-10-23 02:19:24 +13:00
hypermistandClaude Opus 5.5 d811e7abf0 fix(libc): set strtof ERANGE as the titles' libc.prx does
strtof and wcstof now set ERANGE for a decimal input whose nonzero
subnormal result is inexact, never for a hexadecimal nonzero subnormal,
and keep it for underflow to zero and overflow. This is what the libc.prx
bundled with PPSA08427 (J03547016) and PPSA03671 (J03848509) do when run
side by side with this libc. The earlier commit followed
libSceLibcInternal's _Stof, which leaves errno alone for hexadecimal under-
and overflow, but titles import these NIDs from their own libc.prx.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-23 02:15:34 +13:00
Federico Marras 4746d233b4 Merge remote-tracking branch 'upstream/main' into feat/avplayer-trick-speed-bandwidth-source 2026-10-22 15:14:29 +02:00
hypermist 0139f95bd8 Merge remote-tracking branch 'upstream/main' into fix/libc-strtof-sign-hex-range 2026-10-23 02:04:52 +13:00
LeandroLP23andClaude Opus 5.5 6e1df42286 feat(libkernel): answer kern.proc.env for the calling process
PS5VR (PPSA99177) reads sysctl {CTL_KERN, KERN_PROC, KERN_PROC_ENV, pid}
for its own pid at start-up and stopped on "unsupported MIB 1.14.35.<pid>".
The call now returns the empty start-up environment that environ and
libc's getenv also begin with, and follows FreeBSD 11's
sysctl_kern_proc_env for the errors: EINVAL for a MIB without exactly one
pid, ESRCH for another pid or -1, EPERM for a write.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 14:57:08 +02:00
Yossi Yadgar f6d5447d54 docs(debt): record the libSceGnmDriverForNeoMode default state packets 2026-10-22 15:54:42 +03:00
Yossi Yadgar 26893b36b9 docs(debt): record the sources of the internal module calls 2026-10-22 15:52:25 +03:00
Yossi Yadgar ab22ac3c4e docs(debt): record the libSceVrTracker lifecycle and device calls 2026-10-22 15:52:14 +03:00
Federico Marras 1a0744851c docs(libSceNet): put the sceNetGetSockInfo6 debt entry at a line no open PR changes 2026-10-22 14:38:14 +02:00
Federico Marras 2c6440f83c docs(libSceNet): move the sceNetGetSockInfo6 debt entry after the sceNetInetPton entry 2026-10-22 14:36:46 +02:00
Federico Marras 37cd8e59fd docs(libSceNet): place the sceNetGetSockInfo6 debt entry where no open PR inserts 2026-10-22 14:35:58 +02:00
Federico Marras 4c00bf6a2f docs(libSceNet): move the sceNetGetSockInfo6 debt entry away from #9544's insertion point 2026-10-22 14:34:41 +02:00
JAB-devandClaude Sonnet 5.5 4aaf26e3f3 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 14:24:38 +02:00
hypermist e19cafaed4 Merge remote-tracking branch 'upstream/main' into feat/sp-syscall-wrapper-forwards 2026-10-23 01:12:47 +13:00
hypermist 96c0a5e038 Merge remote-tracking branch 'upstream/main' into fix/psml-base-console 2026-10-23 01:12:29 +13:00
Enrique VandClaude Fable 5.1 c5dd9c1dd6 docs(build): add macOS relinker prerequisites
Name the commands that provide the compiler, CMake and Ninja on macOS
next to the existing mention of AppleClang in the relinker-only section.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-22 05:46:48 -06:00
Dean 8b3a6ba88d Merge pull request #9430 from Get-fix/ps4/gcn-shaders
feat(shader): decode PS4 (GCN) shaders by re-encoding them to RDNA
2026-10-23 00:31:28 +13:00
Savvanis SpyrosandClaude Opus 5.5 7372200418 Merge branch 'main' into feat/gamelivestreaming-enable-live-streaming
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 13:50:50 +03:00
dantdmdarealguy ed8a900caf fix(voice): accept valid worker priorities and affinities in sceVoiceSetThreadsParams
Mode 1 threw for every input since fe4016f61, which stopped Grand Theft Auto V (PPSA04264) right after sceVoiceInit. It now returns 0 for priorities 256-767 with non-zero affinity masks within 0x1fff, the range sceVideoOutOpen accepts for its service thread; no voice worker threads run, so the values reach no host scheduling, and other values still throw.
2026-10-22 05:17:22 -05:00
Adria Espi 63a2666558 feat(libScePad): implement scePadGetControllerType 2026-10-22 12:05:17 +02:00
mugurc 100148f762 fix(tests): expect the SSE traps the host keeps in the floating-point trap checks
The trap checks unmask exceptions with feenableexcept and its relatives
and expect MXCSR to hold the new masks, and the enable and disable
results to report the traps enabled on both units. Under Rosetta 2
MXCSR keeps its six exception masks set, so no SSE trap is ever enabled
and every result reports none. The test now asks the host once whether
it keeps an unmasked MXCSR exception and, where it does not, expects
all six SSE masks set and no trap on both units; on other hosts the
expectations are the same as before. A debt entry records that the
trap functions change only the x87 masks under Rosetta.
2026-10-22 13:00:10 +03:00
mugurc 65ba3a665f fix(tests): compare the floating-point exception masks with the ones the host keeps
Under Rosetta 2 the six MXCSR exception masks always read back set: a
write that unmasks an SSE exception is not kept, while the x87 masks and
the other MXCSR bits are. guest_floating_point unmasked the overflow
exception on both units and then expected MXCSR to equal the value it
wrote, so it failed on macOS although fesetexceptflag and feclearexcept
left the masks alone. The test now compares with the environment read
back after the write, which on other hosts is the value written. The
debt entry for the floating-point functions notes the Rosetta behaviour.
2026-10-22 13:00:10 +03:00
hypermistandClaude Opus 5.5 6116b70b04 feat(libSceFont): build the graphics region and fill descriptors as the console does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 22:57:00 +13:00
Chikimaro 7854d19936 Merge main into feat/libscenetctl-nptoolkit-callbacks
main now starts libSceNetCtl initialized, so GuestNetCtl's checks before
sceNetCtlInit expect argument errors; the NpToolkit register, unregister
and check join them with the errors and result their IPv4 counterparts give.
2026-10-22 09:56:31 +00:00
hypermistandClaude Opus 5.5 6e0c94cada feat(libSceSpSysCallWrapper): forward 45 wrappers to the libkernel and libSceNet calls they jump to
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 22:43:31 +13:00
Yunus Shaikh 030ef8f772 fix(hmd): check the command queries' handle and 2D VR arguments in libSceHmd's order
BunnyFl ran firmware 13.42's libSceHmd exports under an emulator. The
distortion and wide-near correction queries look the handle up before
checking initialization: a handle other than the one sceHmdOpen stored,
which stays 0 without a headset, returns HANDLE_INVALID even before
sceHmdInitialize. sceHmdGet2dVrCommand checks its arguments first:
PARAMETER_NULL for a null descriptor or command buffer or a null
pointer at descriptor offset 0, 8 or 0x20, and PARAMETER_INVALID for a
non-zero field at 0x34 or 0x38.

The queries and their sceHmdDistortion* aliases now answer in that
order. What handle 0 gets after initialization isn't measured, so it
throws NotImplemented_nid_no_patch instead of returning HANDLE_INVALID.
2026-10-22 02:38:45 -07:00
hypermistandClaude Opus 5.5 e699e57ddb fix(libScePsml): answer the MFSR2 calls as a console without PSSR does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 22:37:28 +13:00
Get-fix 4b717912d7 feat(shader): decode PS4 (GCN) shaders by re-encoding them to RDNA
Each GCN instruction is re-encoded to its RDNA form and decoded by the
existing RDNA decoder, so the PS4 path shares the recompiler. Covers the
legacy VS stage (program at the VS slot, user SGPRs from s0, vertex and
instance index in v0-v3), fetch shaders linked as user-data calls, MIMG
(image_sample and friends), PS4 buffer descriptors (GCN DATA_FORMAT /
NUM_FORMAT, 44-bit base) and T# image descriptors (GCN tiling in word 7).
The GCN switch is keyed into the shader disk cache. PS5 behaviour is
unchanged: every PS4-only rule is gated on GcnGuestShaders().
2026-10-22 12:17:44 +03:00
frankea e0c67af31f fix(agc): accept DB_EQAA INTERPOLATE_COMP_Z for a one-sample depth target without MSAA_ENABLE
A one-sample depth target under a multisampled rasterizer without MSAA_ENABLE is drawn as one sample at the pixel center, but DB_EQAA INTERPOLATE_COMP_Z threw on it. Gran Turismo 7 (PPSA01317) draws its 3840x2160 main pass this way after its EQAA pass (PA_SC_AA_CONFIG 0x0020c002, PA_SC_MODE_CNTL_0 0x2, DB_EQAA 0x00050000, a Z_32_FLOAT depth target with one sample) and stops on it.

On this path every sample is taken to be at the pixel center, so Z interpolated to any sample position is the center's Z, which the one-sample draw already tests and writes. INTERPOLATE_COMP_Z is now accepted there. INTERPOLATE_SRC_Z and overrasterization still throw. Neither PAL nor radeonsi sets the bit and its meaning is not documented, so the debt entry records this as the same inference.
2026-10-22 05:13:05 -04:00
hypermistandClaude Opus 5.5 a37f8c630a docs(libc): record the bundled libc.prx UTF-8 default for the multibyte debt
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 22:09:31 +13:00
hypermist 62feb8bfcc Merge remote-tracking branch 'upstream/main' into fix/libc-utf8-multibyte 2026-10-22 22:08:17 +13:00
SebastianandClaude Opus 5.5 f2766b2447 docs(debt): drop the unmodelled O_EXCL reopen from the named semaphore entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QnkpF2oEMofseVz9Z7WEAC
2026-10-22 08:29:03 +00:00
Federico Marras 0bfda65256 docs(libSceAvPlayer): record the unmeasured order of the trick speed checks after the source check 2026-10-22 10:28:32 +02:00
hypermist b98f2f82e1 Merge remote-tracking branch 'upstream/main' into feat/npcommon-runtime
# Conflicts:
#	core/libs/prx/libSceNpCommon/PendingExports.cpp
2026-10-22 21:27:04 +13:00
Lindamea1andClaude Opus 5.5 93170e6049 fix(libSceCommonDialog): return ALREADY_SYSTEM_INITIALIZED from a second sceCommonDialogInitialize
A second sceCommonDialogInitialize returned 0x80B80004
(ALREADY_INITIALIZED), the code each dialog's own Initialize returns.
The common-dialog system initializer returns 0x80B80002
(ALREADY_SYSTEM_INITIALIZED), as shadPS4 and the SDK error names have
it, so callers that accept only SCE_OK or ALREADY_SYSTEM_INITIALIZED
treated a second call as a failure. The header keeps
ALREADY_INITIALIZED for the dialog libraries that return it. The test
pins the literal instead of the header constant, and the debt entry
records that a repeated call's value is not measured on a console.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 09:24:22 +01:00
seven f83abf796a perf(agc): stage written buffer elements up to 8 MiB on discrete GPUs 2026-10-22 13:46:52 +05:30
Kyon 785e715651 feat(libSceJemspace): declare purge and statistics printing exports 2026-10-22 09:09:06 +01:00
zaryabzip b9e5dc160f feat(libScePosixForWebKit): forward the --wrap exports with implemented targets
__wrap_access, __wrap_getcwd and __wrap_getenv forward to libc;
__wrap_clock_gettime, __wrap_lstat and __wrap_mmap forward to libkernel.
2026-10-22 13:03:12 +05:00
Simone ebd1a14e30 Merge main into codex/json-numeric-locale
# Conflicts:
#	core/libs/prx/libSceJson2/Export.cpp
#	docs/dev/debt/libSceJson2.md
2026-10-22 10:02:59 +02:00
simonbronkandClaude Opus 5.5 bf0806ecd6 fix(agc): retire an unwritten native multisample depth surface on guest access
A guest read over the depth or HTILE range of a native multisample depth
surface threw even when the host had not written the surface since its
import. Its samples are then still the clear value the import took from
the guest HTILE, so the guest bytes already describe it. Retire such a
surface and its guards instead, and keep the refusal for a surface the
host wrote: draws with depth or stencil writes, depth/stencil copies and
storage write-back.

Onimusha: Way of the Sword (PPSA27836) imports a 4-sample D32 target,
draws into it once with depth tests only and no color target, then reads
the memory back as a structured buffer in a compute dispatch.

Unblocks PPSA27836.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 10:02:25 +02:00
SimoneandClaude Opus 5.5 106e73669d feat(libkernel_sys): implement the scePthreadBarrier, cpuclockid, concurrency and msync forms
Forward scePthreadBarrier*, scePthreadBarrierattr*, scePthreadGetcpuclockid,
scePthreadGetconcurrency and sceKernelMsync to libkernel's POSIX
implementations and return POSIX errors as SCE kernel errors.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 10:01:06 +02:00
SimoneandClaude Opus 5.5 5177cdb9ac feat(libSceVoice): implement mute-all, bitrate and port update
Implement sceVoiceSetMuteFlagAll, sceVoiceSetBitRate and
sceVoiceUpdatePort on main's port model. They return the
not-initialized, port-range and missing-port codes of the other port
calls, validate bitrates against the table sceVoiceCreatePort uses and
throw where the console's code is unknown.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 10:00:23 +02:00
Kyon ac1dfaf7ef feat(libSceJemspace): declare eleven pending exports 2026-10-22 08:57:25 +01:00
Santhosh Kumar 6133773304 docs(libSceFreeType): follow requested bitmap debt placement 2026-10-22 13:23:42 +05:30
primesoul-web 4d98d9a2cd Merge upstream/main: adopt the restored UsbStorage ABI over the no-device path
Take main's restored signatures (the firmware-database sweep of 2026-10-21):
the typed UsbStorageCallback across the register/unregister family, the
UsbStorageDeviceInfo-typed device-info query, IsExist's three-argument bool
form (succeeds and reports non-existence with no device attached), and
RequestMap's six parameters with the trailing reserved pair dropped. The
no-device answers and the argument validation are unchanged; the guest test
passes an APS5_VABI callback and pins the exists out-parameter.
2026-10-22 07:49:05 +00:00
xXPBSXxandClaude Sonnet 5.5 02eee49df4 docs(debt): make the NpSns entry and its note agree on three names
The first entry in the libSceNpSns debt file lists 24 names, but Export.cpp declares 21. The note two entries below says that sceNpSnsFacebookCreateRequest, sceNpSnsFacebookDeleteRequest and sceNpSnsFacebookGetAccessToken are omitted from this module because another module declares them. They are declared in libSceNpManager (Export.cpp, since f04d16d702), not in libSceNpSnsFacebookDialog by #6977 as the note still says. The three names are removed from the entry so that it names exactly the 21 declared functions, and the note now names libSceNpManager. No code changes.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-22 09:27:23 +02:00
EdouardSenceandClaude Opus 5.5 8f6f1eac86 fix(libSceNgs2): throw for a custom Gain module with an option
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 09:11:01 +02:00
krishalivaibhavandClaude Opus 5.5 81ae747acd feat(libScePad): answer the tracker DualShock 4, Blaster and Move queries
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 12:38:04 +05:30