Main limits the standard port to logged-in users, so scePadOpen now checks the port type alone first, then the user and index, and leaves the standard port's user lookup to PortForUser.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
v_cvt_f32_ubyte0 to v_cvt_f32_ubyte3 take byte N of source 0 after
SRC0_SEL and SRC0_SEXT select and extend it, as measured with the
hardware oracle on RDNA2 (gfx1036) for all seven source selects with
and without SRC0_SEXT. The test checked four combinations derived from
the ISA guide; it now checks every combination against the measured
results, and the debt entry keeps only what is not measured: gfx1013.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
TakeStorage copies a pending or live storage image over the whole depth
plane of a new single-sample surface, after the creation clear. On AMD's
Windows driver 32.0.31041.1004 (RX 7800 XT), one or two 8x8 blocks of a
D16 surface then tested as the clear value in about 1 of 10 runs of
agc_driver_depth_surface_from_storage, although a copy back of the image
read the copied values (#6630).
Without a stencil plane the copy now goes through an UNDEFINED to
TRANSFER_DST_OPTIMAL barrier on the depth aspect and back to GENERAL, so
the clear's state is discarded before the copy writes every texel. A
surface with a stencil plane keeps the previous path.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
strtoull took the valid hex prefix of a token and ignored the rest, so a
malformed token such as "123garbage" selected program 0x123, and an
overflowing token was not detected. A token now has to be a whole 64-bit
hex number (with an optional 0x prefix); any other token is reported and
ignored. The test adds a list with a malformed token whose prefix is the
first program's address and an overflowing token.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
APS5_SKIP_SHADER_FILE names a file of hex program addresses (whitespace
separated, # starts a comment). Draws and dispatches that use a listed
program are dropped as with APS5_SKIP_SHADER. The file is re-read within
500 ms of a change, so passes can be switched off and on while the title
runs.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
`sceAudioOut2MasteringInit` still does not return the `0x80268006` the console returns before `sceAudioOut2Initialize`, and the entry no longer justifies that with the initialization being untracked, which this change makes untrue. The new repeat entry links `AudioOut.cpp`, where both initializers are defined.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
- Track up to 4 pad slots in libScePad with per-slot inputs, outputs, sensor fusion, and deadbands
- Support dynamic user login/logout events and multi-user registration in libSceUserService
- Map SDL controllers 0-3 to Players 1-4 in libSceVideoOut while preserving Player 1 keyboard and mouse composition
- Add test coverage for multi-controller pads and multi-user services
A nonzero subnormal result from _Stodx, _Stofx or _Stoldx sets neither
errno nor the error argument; only underflow to zero and overflow do.
_Stofx used to keep the ERANGE that strtof sets for an inexact
subnormal. Measured by running firmware 13.60's libSceLibcInternal.sprx
in a Linux host process, not on a console.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Keep #3987's q, D, O, U, width, '-' and trailing '%' handling for
unknown conversions and fold it into this branch's measured path:
'#' and precision are ignored as measured, '+', space, apostrophe
and '0' with a width still throw.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
`sceAudioOutInit` now initializes AudioOut2, so the extra `sceAudioOut2Initialize()` in the speaker-info test after a legacy init pinned a repeated direct-init result that no run on the console covered; the test keeps the legacy-init to speaker-info success check. The debt file records that a repeated `sceAudioOutInit` returns 0 here against `0x8026000e` on the firmware and that a repeated `sceAudioOut2Initialize` is unmeasured, describes the flag-1 selector as the unidentified per-process libkernel value with BunnyFl's `0x14FFFFF` boundary, and splits the speaker-info entry so no entry passes the length limit.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
The entry spliced the facet-lifetime sentence into the zeroed-storage claim; restore both, note that the new _Getcat entries ignore the locale name and always build the C facet, and mention std::wclog alongside std::clog.