NpTrophy reads the trophy count and icons from the title's trophy
package (names are encrypted and stay not implemented), PS4 v1 save data
calls wrap the native v2/v3 ones, and NpWebApi library contexts, handles
and push event filters work offline (service filters fail without a
signed-in user). libSceAjm is built from the libSceAjm.native sources
for PS4 titles. Limbo's (CUSA01664) remaining PS4 imports, including the
synchronous PS4 TUS calls and the Facebook dialog calls next to the
existing libraries, are exported as not implemented.
The PS5 3.20 export lists have pselect in libkernel as well as
libkernel_sys, and on Windows a libkernel import never reaches
libkernel_sys. The implementation moves unchanged to
libkernel/Socket/src/Pselect.cpp, beside select.
The PS5 3.20 export lists have ktimer_* in libkernel as well as
libkernel_sys, and on Windows a libkernel import never reaches
libkernel_sys. The implementation moves unchanged to
libkernel/Time/Ktimer.cpp.
A 16_16_16_16, 8_8_8_8 or 32_32_32_32 attribute that the shader reads
with fewer components is bound with the narrower Vulkan format, such as
R16G16B16_SFLOAT for three components of 16_16_16_16_FLOAT. A device
without vertex buffer support for that format (MADiSON on an RX 5600 XT
stops with "device does not support vertex format 90") now gets the next
wider form of the same buffer format it supports, up to the element's
own width: the shader input is unchanged and Vulkan discards the extra
components. The vertex copy and the zero buffer grow by the widened
bytes so the last vertex's read stays inside them.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
mazen320 read KfcTPbeaOqg from the console's libSceLibcInternal.sprx
symbol table: an object of 136 bytes, 17 pointer slots. Export that
size instead of the 15 derived from Dinkumware's crt.vc12 xlocnum, and
say in the debt entry that which two virtual functions are added is
not known.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
RunOneKeyReadPerLookup compared the process-wide KeyWaitCounts().calls
around a dispatch. The repeated lookup sometimes refreshes the surface's
storage image, and its upload and ProvedKeys read the keys three more
times on the same thread, so the test failed in about one run of four.
cachedTexture now counts the key scans it makes on the calling thread
(SampledLookupKeyScans()), and the test compares that count.
cachedTexture read the keys of one range up to three times in a lookup
with nothing written in between: the ClearSingle check over a pending
image dropped its scan, the staged-clear test scanned even without a
pending image and kept nothing, and the final read scanned again. On
Windows the key ranges sit in compared host imports, so no proof stands
in for these scans; in PPSA31327's gameplay they took 12 % of the draw
committer's samples (#8068).
The lookup now keeps the keys it read until it does something that can
change them: the storage source it looks up and may refresh, the pending
source's Refresh, or a pending flush, which can publish unit shadows
over the surface even when it flushes no image. The staged-clear test
reads the keys only with a pending source. Which keys a lookup acts on
is unchanged; only repeated reads with nothing between them are gone.
DccKeyPresync checks that a dispatch's lookup with no key writer reads
the keys at most once under the GPU mutex; main reads them twice.
The agcTest loop already registers a no-argument ctest entry for every
executable built from tests/execution/*.cpp, and the no-argument path of
StencilRefExportUnused.cpp runs IndependentReference(false) and
IndependentReference(true), which is what --case keep and --case invert run.
A registration for either of them would only repeat an existing run.
The overlap tool compares by NID and found fifteen libSceNpUtility exports
that the open pull request already declares; a text search for the library
name does not find it, because that pull request's title does not mention
the library.
AnyPS5 resolves a title's imports by NID, so a title that imports a system
function that no AnyPS5 library provides fails to load with an unresolved
import. This declares 266 such exports across 4 PS5 system libraries that
AnyPS5 implements but does not provide.
Each declaration calls NotImplemented_nid_no_patch and returns 0; none of
them implements the function. The signatures are unknown for all of them, so
they are declared without parameters, which resolves the import without
making an ABI claim. The technical-debt files record the limitation per
library.
The list is the intersection of the export table of the console's library
(function symbols only), the pinned aerolib names and the functions not yet
defined anywhere in the repo. Every name recomputes to its NID with
tools/nid_names.py.
Resolves the conflict with #8867 in EntryStubTests.cpp: keep its two
kernel-variant tests and the BufferUtils include, and this branch's
libSceAmpr-to-libc fallback test, with all three called from main.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Wrap test_web entrypoint in main(argv=None) with UTF-8 stream
reconfiguration using backslashreplace error handling.
Check existence of the archive module before reading, decode with
utf-8-sig to tolerate leading BOMs, validate the zip library URL match,
and catch subprocess and network errors cleanly via parser.error.
Resolves the conflict with #8522 in link_nid_postfix: keep its ENOTDIR
return for a destination below a regular file and the Windows
symbolic-link follow after it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>