Follows firmware 13.42's libSceSocialScreen.sprx, read from its
disassembly and run natively on x86-64: a null pointer returns
0x81440003; otherwise the block gets 1 at offset 0 and zeros in bytes
4 to 31, and it returns 0.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Follows firmware 13.42's libSceGameLiveStreaming.sprx, read from its
disassembly and run natively on x86-64: a null pointer returns
0x80A00002; otherwise the first 68 bytes are cleared and it returns 0,
without needing sceGameLiveStreamingInitialize.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Follows firmware 13.42's libScePadTracker.sprx, read from its disassembly
and run natively on x86-64: a null pointer returns 0x80c40003 without
writing; otherwise both 32-bit outputs receive 0x800000.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Follows firmware 13.42's libSceMoveTracker.sprx, read from its disassembly
and run natively on x86-64: a null pointer returns 0x80ef0003 without
writing; otherwise the outputs receive 0xa00000 and 0x800000.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Follows firmware 13.42's libSceVrHand.sprx, read from its disassembly and
run natively on x86-64: a null pointer, a size word other than 0x20 or a
nonzero byte in parameter offsets 4 to 31 returns 0x8a870006 without
writing; otherwise the output receives 0x3c00000 and 0x10000 followed by
20 zero bytes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
FT_Get_Advance and FT_Get_Advances no longer throw on hosts with a 32-bit
FT_Fixed when a backend fails part way. The native query runs twice into
buffers prefilled with different values; a slot the bundled FreeType wrote
holds the same value in both runs, so exactly those slots reach the guest,
as on an LP64 build. The call throws if the two runs return different
errors. Advances of 32768 pixels or more still overflow the native 32-bit
arithmetic there and differ from LP64, as the debt entry records.
FT_Outline_Get_BBox now ports the bundled FreeType 2.13.3 ftbbox.c to
64-bit arithmetic, including the LP64 FT_MulDiv wrap and the 32-bit
FT_MSB truncation in cubic_peak, and walks the outline through the
existing FT_Outline_Decompose adapter with shift and delta 0, as upstream
does. Coordinates beyond 32 bits and wide curved outlines no longer throw,
partitions that leave trailing points outside every contour are accepted,
and contours are only read when the walk needs them. Inputs the bundled
source leaves undefined throw std::invalid_argument: null nonempty arrays,
signed overflow, FT_MSB of zero and a negative cubic peak that must be
shifted left. FT_Outline_Decompose now also throws for a contour endpoint
at or beyond n_points instead of reading past the point array.
The wide random bounding-box curves are checked against a digest captured
from native FreeType 2.13.3, so they run on every host and do not depend
on the bundled FreeType version.