The PS5 libSceNgs2.native module (firmware 3.20 and 4.03) fails a play event on a voice with no setup with 0x804A8351 on every rack I tried and leaves it idle, so the guard now covers every rack and returns that code.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
With two users logged in on a PS4 Pro (firmware 10.71) each user's
special port handle, ALREADY_OPENED on its second open and close are
independent of the other user's, as the branch already models.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
The second half of a pipelined draw (stage materialization, cache insert,
enqueue) runs on a finisher thread, overlapping the next draw's packet
work; draws whose stages could write memory are held back. Commits skip
work whose inputs did not change since the last commit, color metadata
passes are ordered through the pipeline, resource and storage-image proofs
are reused within one collect epoch until a write breaks them, and a shape
entry is refreshed in place at the second sight of the same read user words.
APS5_VERIFY_DRAW_PIPELINE checks reused proofs against a full check.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A sampler voice with no setup used to enter the playing state and never finish, so a title that frees its sound slots by polling sceNgs2VoiceGetStateFlags ran out of slots. The PS4 firmware 11.00 library fails the event and keeps the voice idle.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
HostImportFor walks the import map under the import mutex for every
in-place vertex input, index buffer and label it serves, most of them
for the same few buffers. It now first checks the last four imports a
lookup found, while the map is the one they came from: the imports epoch
moves with every retire and trim and the map's size with every insert.
Imports in the map never overlap, so the one that contains the range is
the map's answer. A hit counts its use as a map lookup does, so imports
age out of their eviction protection after as many lookups as before.
APS5_NO_RECENT_IMPORTS looks every import up in the map.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
FreeBSD keeps every character device on devfs, whose devfs_statfs reports
512-byte blocks, 2 blocks and nothing free. Windows threw for any console,
NUL or the guest random device, and Linux described the host's /dev mount.
A kqueue now returns EINVAL, as getvnode does.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The context calls, the callback registrations and
SetDefaultRequestOptParam threw. They now follow shadPS4's checks and
context ids, ContextStart returns SCE_NET_ERROR_RESOLVER_ETIMEDOUT, the
answer shadPS4 records for a console without internet access, and
Terminate releases the contexts.
The 15 exports threw. They now keep title contexts and requests, run
shadPS4's argument checks in its order, and answer the record, ranking
and board calls with SCE_NP_ERROR_SIGNED_OUT, which also finishes the
request, as shadPS4 does for a user with no connection.