Commit Graph
7963 Commits
Author SHA1 Message Date
Adrià 51f5c57dd9 Merge pull request #10097 from xXPBSXx/docs/debt-net-getsockopt-title
docs(debt): note how a title uses the sceNetGetsockopt error value
2026-10-26 15:08:20 +01:00
orezraeyandClaude Opus 5.5 60b9e7f43f Merge main into fix/libkernel-posix-thread-attr-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 11:07:59 -03:00
StoneDC 3198588572 fix(libSceUlt): validate status outputs against firmware observations 2026-10-26 22:06:56 +08:00
StoneDC 08fd4fe766 fix(libSceUlt): separate blocked queue pushers from poppers
sceUltGetQueueInfo reported every blocked queue thread as a waiting popper because both directions incremented one counter. Track the two wait classes in separate fields and fill both query outputs, copy one waiter record per blocked thread, and cover full-queue and empty-queue waits with a new queue-waiters test. sceUltGetUlthreadRuntimeInfo now throws when a caller asks for worker thread handles, since this runtime starts no worker threads, and the debt entry records the remaining limitations.
2026-10-26 22:06:56 +08:00
StoneDC 3003984952 feat(libSceUlt): implement status query exports 2026-10-26 22:06:56 +08:00
Adrià 99b8446cbc Merge pull request #10095 from xXPBSXx/docs/debt-savedata-dirnamesearch2-title
docs(debt): note the result structure a title passes to sceSaveDataDirNameSearch2
2026-10-26 15:06:16 +01:00
Adrià 84e91df418 Merge pull request #10093 from xXPBSXx/docs/debt-audioin-asyncopen-title
docs(debt): note the arguments a title passes to sceAudioInAsyncOpen
2026-10-26 15:04:10 +01:00
Adrià 7bcd4b92a1 Merge pull request #10091 from xXPBSXx/docs/debt-videodec2-createdecoder-title
docs(debt): note how a title calls sceVideodec2CreateDecoder
2026-10-26 15:02:45 +01:00
Adrià 7124e8f80d Merge pull request #9745 from KernelPanicNT/feat/libressl-ssleay-version
feat(libSceLibreSsl): return the measured version from SSLeay
2026-10-26 15:02:23 +01:00
Adrià 32b7331c44 Merge pull request #10089 from xXPBSXx/docs/debt-coredump-getstopinfocpu-title
docs(debt): note how a title calls the sceCoredump stop-info, attach and user-data functions
2026-10-26 15:01:18 +01:00
Adrià 263fbcd2d3 Merge pull request #10087 from xXPBSXx/docs/debt-npauth-title-counts
docs(debt): correct the poll and buffer counts in the sceNpAuth title notes
2026-10-26 15:00:05 +01:00
Adrià 1992ec073f Merge pull request #10037 from xXPBSXx/docs/debt-ngs2-rackgetinfo-title
docs(debt): note the buffer size a title passes to sceNgs2RackGetInfo
2026-10-26 14:59:58 +01:00
Adrià 4c394fdc00 Merge pull request #10066 from xXPBSXx/docs-agc-label-wait-amd-data
docs(agc): add AMD data to the queue 0x20 label wait entry
2026-10-26 14:57:54 +01:00
Adrià 3ead2d7251 Merge pull request #9976 from StoneDC/feat/discid-validation
feat(libSceDiscId): throw for unsupported exports
2026-10-26 14:55:48 +01:00
harisibrar1 c51456ab71 Merge remote-tracking branch 'origin/main' into feat/libressl-asn1-string-to-utf8
# Conflicts:
#	docs/dev/debt/libSceLibreSsl.md
2026-10-26 09:53:00 -04:00
KernelPanicNT 601226da9c feat(libSceLibreSsl): return the measured version from SSLeay
SSLeay() returns 0x20000000, the value measured on a PS5 with firmware
13.40 and the SSLEAY_VERSION_NUMBER of LibreSSL 2.5.4, which the module
is. The guest_libressl_version test checks it.
2026-10-26 14:46:30 +01:00
Adrià 9656d366be Merge pull request #9962 from kallmek3nny/feat/libkernel-pthread-cond-setname-np
feat(libkernel): add pthread_cond_setname_np
2026-10-26 14:42:29 +01:00
StoneDC 2d662ce6fd fix(libSceDiscId): keep unsupported exports explicit
CONTRIBUTING.md permits silent stubs only when unblocking a title UI path and when backed by title evidence. Since no title ID evidence demonstrates that a constant no-disc return unblocks a UI path, throw NotImplemented_nid_no_patch from sceDiscIdGet and sceDiscIdGet2 without touching caller memory. Tests assert both calls throw on null and non-null outputs and across flags values while leaving caller buffers untouched, and the debt entry records the unresolved hardware contract.
2026-10-26 14:35:14 +01:00
StoneDC 85d158234c fix(libSceDiscId): report no disc without assuming an argument contract
The previous revision rejected a null output with 0x80D50001 and any nonzero flag with 0x80D50002, but no SDK or console evidence establishes those validation rules, the error codes or their precedence, and the flag argument may be a bitfield. Report SCE_DISC_ID_ERROR_NO_DISC for every pointer and flag value without touching the output, and record the unverified contract in the debt entry.
2026-10-26 14:35:14 +01:00
StoneDC 2f02e519c3 feat(libSceDiscId): validate arguments and return no disc 2026-10-26 14:35:13 +01:00
JJenkx c48ed84d47 fix(libc): preserve modf decomposition and floating-point status 2026-10-26 09:34:58 -04:00
Dean bf77a9e9cb Merge pull request #10742 from 00xDisaster/feat/libc-lcosh
feat(libc): implement _LCosh and _LSinh
2026-10-27 02:28:15 +13:00
Adrià 0e5d5a5409 Merge pull request #9543 from Queuse/codex/net-oob-inline
feat(libSceNet): receive urgent TCP data inline
2026-10-26 14:25:46 +01:00
Adrià 1061954c7e Merge pull request #8520 from qpavyros/codex/app-archive-directories
feat(libkernel): enumerate archived app directories
2026-10-26 14:23:39 +01:00
akkadbakkad89 f9afa3ad73 feat(prx): declare exports for 3 inventory-covered NP libraries 2026-10-26 13:15:02 +00:00
review 044e52a2f0 Merge commit 'refs/review/9669/head' into HEAD 2026-10-26 14:10:41 +01:00
Queuze eebedb6427 feat(libSceNet): receive urgent TCP data inline 2026-10-26 14:03:15 +01:00
JJenkxandClaude Opus 5.5 afa58432f3 fix(libc): format %La like titles' libc.prx does
A long double %La went to the host, which on Windows (MinGW) prints the
64-bit significand with its integer bit as the leading digit:
0xc.ccccccccccccccdp-7 for 0.1L. The libc.prx that titles ship
normalises it like a double, with a leading 1 and the remaining 63 bits
as 16 hexadecimal digits, 0x1.999999999999999ap-4, and rounds a shorter
precision half up with the carry kept in the leading digit. Share
HexFloat's digit and rounding code between double and long double and
use it for finite long double %a and %A in the narrow and wide families.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 08:52:35 -04:00
Adrià 035ac96edd Merge pull request #9940 from EagleBearerYS/fix/agc-compared-import-initial-dcc
fix(agc): accept a compared host import for an initial multisampled DCC import
2026-10-26 13:51:02 +01:00
Adrià 7992f03293 Merge pull request #9703 from frankea/perf/structurizer-construct-walk
refactor(shader): walk each construct when checking the structured constructs
2026-10-26 13:48:49 +01:00
Yunus Shaikh a5128c9be7 fix(libScePad): follow the module's light bar resets, handle checks and forced vibration
BunnyFl ran firmware 13.42's libScePad natively over a slot table he
wrote, and oneandonlydean asked for the four calls to follow it.

scePadIsValidHandle matches the handle's open port type against the
argument, and answers false before scePadInit.
scePadResetLightBarAllByPortType returns INVALID_ARG for any type but 0,
1 and 2 before the initialisation check, and otherwise resets each open
handle of that type as scePadResetLightBar resets it;
scePadResetLightBarAll is type 0. So a standard port with no open handle
keeps its light bar, and types 3, 4 and 16 no longer throw.

scePadSetVibrationForce returns NOT_INITIALIZED before scePadInit, then
INVALID_ARG for a null parameter, without looking the handle up. There
is no pad driver here: a special handle returns PAD_OK and a standard
handle sets its port's motors, open or not. A handle with no pad port
throws, as the driver's answer for it is not measured.

The tests drop the closed and unknown handle checks that no longer hold
and check the measured answers; the debt entries cite the run and say
which parts are this model's.
2026-10-26 05:46:40 -07:00
0xcrstnandClaude Opus 5.5 ec06ba2973 fix(agc): read back descriptor faults of shaders that also use image tables
A shader with an image table map read its fault buffer back only when a
table record was poisoned, an SRT read was poisoned, it had window lane
guards or the loop guard was on. A DescriptorFault only set the fault
buffer, so with a valid table and no copied write nothing ran the fault
check, and a lane that took a folded descriptor web path or selected an
undefined arm read arm 0 or zeros with no report.

The compiled artifact now counts its DescriptorFault instructions
(descriptorFaults, stored in the shader disk cache, format 48), and the
readback gate requests the fault check when it is nonzero. The result a
capture materializes copies the count, and also windowLaneGuards, which
that copy had dropped, so the gate's window lane guard condition never
saw it. sizeof(CompiledShaderArtifact) is 288 and sizeof(RecompileResult)
552 with the new field.

agc_driver_descriptor_web_faults adds a wave32 shader that reads an image
table and then the descriptor web, storing only to LDS so no copied write
forces completion: it binds an image table and no BDA address table, a
valid arm and an unselected undefined arm stay clean, the folded path and
a selected undefined arm fault at the read, and nothing faults with EXEC
empty. Without the gate change the folded case does not fault.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 14:46:11 +02:00
Maz e8aef0f1d8 fix(libc): size the num_put facet vtable to 112 bytes
Titles that import the vtable as data expect fourteen slots (st_size 112 on
PPSA16833 libc.prx); twelve left the object short.
2026-10-26 16:42:42 +04:00
Federico Marras 735b905120 Merge remote-tracking branch 'origin/main' into feat/ngs2-parse-format-codes 2026-10-26 13:40:23 +01:00
Adrià 7b415520b6 Merge pull request #9871 from ntamas94/fix/ps4-nptrophy-abort-handle
feat(libSceNpTrophy): add sceNpTrophyAbortHandle
2026-10-26 13:38:34 +01:00
Yunus Shaikh 56047ebb97 fix(libSceBluetoothHid): refuse a null parameter block as the module does
BunnyFl ran firmware 13.42's libSceBluetoothHid natively. A null block
given to sceBluetoothHidParamInitialize returns 0x81540001, so it now
returns InvalidArgument instead of throwing, and the test checks that
answer. The run also shows sceBluetoothHidRegisterCallback reading the
event thread's priority and affinity through the stored value, which
makes it the BluetoothHidThreadParam pointer the signature declares;
the debt entry cites the run and its limits.
2026-10-26 05:35:55 -07:00
UnhealthyKraken 88b16f216d fix(libSceJxr): clear successful lookup record padding 2026-10-26 13:34:58 +01:00
Kraken 5aa1f6fd44 feat(libSceJxr): implement pixel format lookup 2026-10-26 13:34:43 +01:00
Adrià 2cce8bc51d Merge pull request #9927 from JJenkx/windows/wprintf-float-console
fix(libc): format wide %a, %e, %f and %g with the narrow console rules
2026-10-26 13:25:22 +01:00
JJenkx f5f4f7fbf8 fix(libc): preserve nextafter floating-point environment behavior 2026-10-26 08:24:29 -04:00
Adrià 2db37cf1de Merge pull request #9468 from mazen320/feat/libc-num-get-w-vtable
feat(libc): export the wide num_get facet vtable as data
2026-10-26 13:21:19 +01:00
orezraeyandClaude Opus 5.5 db07b6737d Merge main into fix/libkernel-sysctl-system-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 09:20:00 -03:00
xXPBSXx 10624a6ad1 Merge main (5e90e7569d) into docs/debt-net-getsockopt-title 2026-10-26 13:18:13 +01:00
Yunus Shaikh 33851346ad Merge main into docs/debt-gaps-bf208 2026-10-26 05:16:02 -07:00
0xcrstnandClaude Opus 5.5 ac0c125999 Merge upstream main into ufc6/descriptor-web-fold
Resolve the overlap with main's WindowLaneGuard and image-resource changes
by keeping both sides: DescriptorFault sits next to WindowLaneGuard in the
opcode list, metadata and side-effect switch, and its emitter next to
EmitWindowLaneGuard; optionalDescriptor is serialized after
remappedDepth1D; undefinedImageWords follows the new image helpers; the
descriptor web debt entry follows main's new entries.

The ImageResource field-count assertion is derived from the merged
structure (44 fields: main's 43 plus optionalDescriptor). sizeof
(ImageResource) stays 96 and sizeof(MemoryInfo) stays 80, so those
assertions are unchanged. The undefined-format test keeps its captured
regions in a variable, as MemoryRegionView no longer binds a temporary.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 14:10:30 +02:00
WallisSkillandClaude Opus 5.5 540364a24f fix(libkernel): queue a raise's APC only for a thread in a libkernel wait
A target in host code got the delivery as an APC as well as through the
return breakpoint and the sampling. An APC runs in any alertable wait,
so host code that waits alertably while holding a lock would have run
the guest handler inside that wait with the lock held. The APC is now
queued only while the target is in a libkernel wait (Pthread waitCount),
the point where the handler already ran before; a target elsewhere in
host code takes the delivery when it returns into guest code.

guest_raise_leaves_host_code adds a target in an alertable
WaitForSingleObjectEx: each raise must return in under 500 ms and the
handler must run in the executable after the wait was released. The
earlier behaviour (an APC for every host-code target) fails it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 19:06:33 +07:00
WallisSkillandClaude Opus 5.5 1b9c5feb30 fix(libkernel): deliver a raised exception at the guest return of a thread in host code
RaiseOn suspended the target and, while it sat in host code, resampled
it until a 50 ms limit and then redirected it into the handler there.
A handler that waits, as Unity's GC thread-stop handler does, then held
whatever host lock the thread had: in Graveyard Keeper 2 a job worker
stopped inside shader specialization kept the shader registration lock,
another worker blocked on that lock never ran its own stop, and the
load froze with 39 of 40 threads acknowledged (about 1 in 15 loads).

A target in host code is never redirected now. The raise queues the
delivery as an APC (taken when the thread waits alertably), arms a
debug register 0 execute breakpoint at the frame's return address into
guest code (found with the image's own .pdata and RtlVirtualUnwind,
stopping at frames that push a machine frame, guarded against faults),
and hands the target to a host deliverer thread that keeps sampling it.
The first of the three to reach the thread delivers, through one taken
flag per delivery. A target in guest code is still redirected at once;
a target inside NtContinue still makes the raise throw after 1 s.

guest_raise_leaves_host_code checks that a handler never runs in host
code, for a target blocked in WaitForSingleObject and one busy in
MultiByteToWideChar, and that each raise of the blocked one returns in
under 500 ms.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 19:06:32 +07:00
Yunus Shaikh 7d86f79ebe fix(libSceFont): follow the module's frame order and leave vertical glyph renders unimplemented
BunnyFl ran firmware 13.42's libSceFont natively against this PR's
checks. With both set, the surface's style frame wins over the argument,
so it is now taken first. A frame that sets no scale, zeroed or only
initialised, is accepted and keeps the glyph's generation scale instead
of returning SCE_FONT_ERROR_INVALID_PARAMETER. A valid
sceFontGlyphRenderImageVertical call, and sceFontGlyphRenderImage on a
vertical font, throw again: the module draws the char call's pixels
there but reports a different advance and stride (40/40 against 90/90
at 40 px), and one case doesn't name the rule.

The test drops the vertical comparison and the non-renderer pointer
check, whose result in the module depends on memory past the pointer,
and checks the frame order and the unscaled frames.
2026-10-26 05:05:24 -07:00
Felipebmaitan 0c3f104067 chore(ngs2): merge current main for audio routing 2026-10-26 09:03:02 -03:00
Dean 1e22d0fdec Merge pull request #11252 from AlexFigas/feat/npcppwebapi-parameter-lifecycle
feat(libSceNpCppWebApi): track the TitleCloudStorage and InGameCatalog parameter lifecycles as the module does
2026-10-27 01:02:59 +13:00