Firmware 13.60 subtracts Expires minus Date and Date minus Last-Modified
on unsigned ticks without comparing them, so either order wraps to a
lifetime that never runs out. Keep that behaviour, state it in the debt
doc, and cover both cases next to their in-order counterparts.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
sceNgs2PanGetVolumeMatrix now returns the PS5 error codes in the PS5 check order instead of throwing, and lets NaN angles and distances through as the PS5 module does. sceNgs2PanInit gives the 7-speaker degree defaults for 0 speakers without angles, stores NaN speaker angles and leaves unused slots untouched. Inputs on which the PS5 library never returns still throw.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
joinedRun joined a run of adjacent registered ranges that has one no
larger than the import window only for a binding exactly over the run.
Echoes of the End (PPSA25636) binds a 24 MiB buffer from the start of
three such ranges that ends inside the last one, so every use of it was
copied on the CPU: 16,680 copies in one 480 s run.
A binding that starts at the first crossed range now joins the ranges it
crosses. One that starts inside the first range still stays apart, and
a range registered after the run is outside the ranges a binding into
the run crosses, so growth beside a joined import does not re-import it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On macOS the host-pointer import is copied into a Metal buffer when it
is imported, and the HostWrite window around it is what marks those
pages written so the driver re-syncs them. Without it the depth plane a
draw writes back into guest memory is never re-synced, and
agc_driver_depth_plane_buffer_memory reads stale data. Only the dma-buf
import keeps the watch armed, which is all agc_write_tracking needs.
Tested on an Apple M2 Pro (x86_64 under Rosetta 2, MoltenVK 1.4.2):
agc_write_tracking and agc_driver_depth_plane_buffer_memory both pass.
Drop the checks that the shared-store, quota, tag and null-URL paths
throw; they pinned unimplemented behaviour. The sharing-disabled and
shared-user cases and the store, hit, revalidation and error coverage
stay.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Brings in main with #9210. The MBCS string forms keep convertString
and now encode UTF-16 with encodeUtf16, so GB 18030 supplementary
characters become surrogate pairs and UCS-2 answers UNASSIGNED_CODE.
The GB 18030 string test checks the short-buffer error in its own
buffer, since a failed conversion now terminates the output.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The PS5 libSceNgs2.native (firmware 3.20 and 4.03) accepts every value of the mastering gain param 0x30000004 with return code 0, clamps each level to [-32, 32] (so +-inf gives +-32) and keeps NaN, which then gives NaN samples. Ours threw on NaN and inf and did not clamp. A NaN sample in a PCM_I16L render buffer now throws, since the PS5 conversion was only measured into float buffers.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
The strict JIS X 0208 EUC-JP profiles from main keep their decodeMbcs
path in sceCesEucJpToUcs2 and sceCesEucJpToUtf8; the measured scalar
decoder applies to the CP51932 profile it was measured with.
Co-Authored-By: Claude Opus 5.5 <[email protected]>