Commit Graph
7981 Commits
Author SHA1 Message Date
Federico Marras 2e706ed2e1 feat(libSceNgs2.native): map VAG waveform blocks in sceNgs2CalcWaveformBlock 2026-10-21 15:28:54 +02:00
Federico Marras 4fb70223dd fix(libSceNgs2.native): report one ATRAC9 frame as the parsed decoder delay 2026-10-21 15:26:05 +02:00
SimoneandClaude Opus 5.5 c020ce8934 feat(libSceCesCs): implement generic MBCS character, Shift-JIS code and JIS X 0213 helpers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:24:37 +02:00
SimoneandClaude Opus 5.5 f974e91f08 feat(libSceCesCs): convert GBK and EUC-CN through the CP936 table
Add the GBK (CP936) and EUC-CN profiles, their scalar conversions to
and from UTF-8, UTF-16, UTF-32 and UCS-2, and accept both profiles in
the MBCS string conversions.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:24:24 +02:00
SimoneandClaude Opus 5.5 79fe0b903c feat(libSceCesCs): add UTF-16 and UTF-32 forms of the SBC and MBCS string conversions
Implement sceCesSbcTo{Ucs2,Utf16,Utf32}* and their inverses, and the
UTF-16 and UTF-32 MBCS string conversions and length queries, on the
existing single-byte, CP932 and CP51932 profiles.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:23:56 +02:00
simonbronkandClaude Opus 5.5 3990593a19 feat(libSceCesCs): implement Shift-JIS and EUC-JP scalar conversions
Implement the single-character conversions between the CP932 and
CP51932 profiles and UTF-8, UTF-16, UTF-32 and UCS-2 in both
directions, and the Shift-JIS to JIS X 0208 row/cell arithmetic.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:23:34 +02:00
orezraeyandClaude Opus 5.5 c416e3aca3 feat(libkernel): implement shared event flags and sceKernelCloseEventFlag
Measured on firmware 13.60: attribute 0x100 makes a flag openable by
name, and only such flags can be opened. Each open returns a new handle
on the same flag, which sceKernelCloseEventFlag releases. Closing a
creator handle and deleting through an opened one return EPERM. Two live
shared flags cannot share a name, names of 32 or more bytes return
ENAMETOOLONG, and a missing name returns ESRCH. After the creator
deletes the flag, an opened handle polls and waits with EACCES and sets,
clears and cancels with no effect.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 10:17:32 -03:00
1a74a6cdd9 fix(shader): keep a v_writelane lane known across computed-index window stores
fdfawef324 notes that current LLVM spills SGPRs into VGPRs it allocates like any other
register, so one window register can be an ordinary register early in a
program and hold spill lanes later. ReadLaneEliminator only followed a
spilled lane across M0-indexed window stores for slots never used as
ordinary registers, so RESIDENT EVIL 4 (PPSA07411) and LEGO Horizon
Adventures (PPSA14632) kept their reloaded descriptors as run-time
values and stopped. A known lane can only come from a v_writelane chain,
so keep it across a computed-index store instead; a constant-index store
of the slot still ends the spill. This is fdfawef324's suggestion on
#6277.

That such a store misses the spill cannot be proven for these programs,
so it is checked at run time where a replaced read depends on it: a
backward liveness over each slot and lane whose known value a replaced
read used puts a WindowLaneGuard before every computed-index store at
which that lane is live, and the guard records a WindowLaneSpill fault
when the store changes that lane of the slot. The driver reads the fault
buffer back for every program with such a guard and reports the dispatch
or draw as failed, so a broken assumption is no longer silent. This also
covers the pure spill slots main already folds.

Co-authored-by: fdfawef324 <[email protected]>
Co-Authored-By: Claude <[email protected]>
2026-10-21 20:17:08 +07:00
JJenkx 4f76eb75ce feat(agc): apply register and exported sizes to mesh points 2026-10-21 09:13:32 -04:00
milescovielloandClaude Opus 5.5 f71ead79e9 docs(agc): put the vertex point list entry's gaps first and shorten it
The entry was twice the 1000-character limit, led with the behaviour
rather than the gaps, and named a title. It now lists what throws and
what is inferred first, and names no title.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:13:32 -04:00
milescovielloandClaude Opus 5.5 f3433b0a11 fix(agc): keep the written point size above zero
Vulkan needs PointSize above zero. A PA_SU_POINT_SIZE of 0 without
USE_VTX_POINT_SIZE, and a PA_SU_POINT_MINMAX maximum of 0 with it, now
throw. With USE_VTX_POINT_SIZE the clamp's lower bound is at least the
smallest positive float, so an exported size of 0 or less, which a
clamp minimum of 0 lets through, is written as a positive value.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:13:31 -04:00
milescovielloandClaude Opus 5.5 e7ea490325 feat(agc): draw point lists on the vertex path with their point size
A point list routed through the vertex path was refused, and so was
PA_CL_VS_OUT_CNTL.USE_VTX_POINT_SIZE on it. OliSe Player (PPSA01153)
stops on the latter with two of its MilkDrop presets.

The vertex path now draws point lists as Vulkan points. The vertex stage
writes PointSize: the misc export's X clamped to PA_SU_POINT_MINMAX when
USE_VTX_POINT_SIZE is set, and the PA_SU_POINT_SIZE height otherwise.
The point state travels in the recompile request (version 31) and the
cache and draw keys. Non-square register sizes, inverted clamps, point
sprite texture coordinates and, without largePoints, sizes other than
one pixel throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:13:09 -04:00
Dean 27bcd6a29e Merge pull request #8162 from savvaniss/fix/windows-runtime-module-start
fix(relinker): start Windows runtime modules the executable needs when the title loads them
2026-10-22 02:10:11 +13:00
Romans Pokrovskis b4fbf24d1e feat(agc): upload individual multisample image samples 2026-10-21 16:06:59 +03:00
Romans Pokrovskis b8297adab9 feat(agc): add fragment-preserving R_X and Z_X layouts 2026-10-21 16:06:32 +03:00
orezraeyandClaude Opus 5.5 b779496315 fix(libkernel): match event flag attributes and error results to PS5
Measured on firmware 13.60: create accepts attribute bits 0x1, 0x2, 0x10,
0x20 and 0x100 and rejects 0x1|0x2; wait and poll ignore mode bits outside
the match and clear fields; EPERM, ECANCELED and EACCES write 0 to the
result pattern.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:56:48 -03:00
Dean 74bdc3a3a7 Merge pull request #8110 from savvaniss/feat/np-account-signed-out
feat(libSceNpManager): answer the PS4 account and presence queries for a signed-out user
2026-10-22 01:54:31 +13:00
Dean fdf22f9546 Merge pull request #7911 from savvaniss/fix/agc-release-mem-system-counter
fix(agc): name the RELEASE_MEM system counter instead of GDS data
2026-10-22 01:54:27 +13:00
xXPBSXxandClaude Sonnet 5.5 9abca4b9f9 docs(debt): say what the socketpair poll note still lacks after the peer closes
On Windows a pair end now reports POLLIN after the peer's shutdown or close.
The console also reports POLLHUP after close; the loopback connection cannot
tell a close from a shutdown.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-21 14:47:07 +02:00
Dean ce7d547175 Merge pull request #8856 from klosixgaming-arch/feat/agc-point-list-geometry-output
feat(agc): draw point-list output of NGG geometry programs as mesh points
2026-10-22 01:46:18 +13:00
Retr0 41709ae50e fix(libkernel): move events reported by sceKernelWaitEqueue behind the waiting ones
FreeBSD 11 kqueue_scan (sys/kern/kern_event.c) re-inserts a reported
knote without EV_CLEAR or EV_DISPATCH at the tail of kq_head, and
knote_enqueue puts a knote that fires again at the tail as well, so the
next scan starts with the events that were not reported yet.
sceKernelWaitEqueue scanned the event list in place, so with num smaller
than the number of ready events the first ones were reported on every
call and the later ones starved. Each reported event that stays
registered now moves to the end of the list, in the order reported.
2026-10-21 15:41:06 +03:00
Retr0 bbfa163722 fix(libkernel): discard a pending signal when sigaction or signal ignores it
FreeBSD 11's kern_sigaction (sys/kern/kern_sig.c) calls
sigqueue_delete_proc, which drops the signal from the process queue and
from every thread's queue, whenever the new handler is SIG_IGN, or
SIG_DFL on a signal whose sigprop has SA_IGNORE (SIGURG, SIGCONT,
SIGCHLD, SIGIO, SIGWINCH, SIGINFO). It does so whether or not the
signal is blocked. sigaction and signal now take the signal off the
pending set in those cases, so a later unblock or wait never sees it.
2026-10-21 15:35:32 +03:00
Adrià 7280a17ec0 Merge pull request #8360 from MarrasFederico/feat/vdecsw-vp9-picture-info
feat(libSceVdecsw): report VP9 picture info in sceVdecswGetVp9PictureInfo
2026-10-21 14:35:16 +02:00
Retr0 f2bc1195f8 fix(libkernel): reject socket addresses longer than sockaddr_in or sockaddr_in6 with EINVAL
FreeBSD 11.4 getsockaddr sets sa_len to the length argument, and
tcp_usr_bind, tcp_usr_connect, in_pcbbind_setup, in_pcbconnect_setup,
in6_pcbbind and in6_pcbladdr answer EINVAL when it is not the size of
the socket family's address. udp6_bind and udp6_connect pass an
IPv4-mapped address to the IPv4 code without that check when
IPV6_V6ONLY is clear, and udp6_send always checks it. bind and connect
on AF_INET and AF_INET6 sockets, and sendto on AF_INET6 datagram
sockets, now fail a longer address with EINVAL.
2026-10-21 15:31:15 +03:00
jacob6769andClaude Opus 5.5 b50e5c7a4d feat(libSceCesCs): implement the EUC-KR, UHC and Big5 scalar conversions
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 21:29:50 +09:00
lakhantheboss 8af8f1d54f docs(libSceAppContent): clarify temporary storage debt 2026-10-21 17:59:48 +05:30
xXPBSXxandClaude Sonnet 5.5 f1c8ae0ccb fix(libkernel): report a stream whose peer closed as readable in poll on Windows
WSAPoll reports POLLHUP alone for a stream socket whose peer has closed, so
poll never returned POLLIN for it and a caller waiting for POLLIN did not see
the end of the stream. sopoll_generic reports a socket that can receive no
more as readable and adds POLLHUP only once it can send no more either.
poll now adds the requested read bit and keeps POLLHUP only after the socket
shut its own sending side. A reset or refused connection keeps WSAPoll's flags.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-21 14:28:15 +02:00
Federico Marras c6a2cf6042 Merge remote-tracking branch 'upstream/main' into feat/ngs2-waveform-frame-info
# Conflicts:
#	core/libs/prx/libSceNgs2.native/tests/Ngs2Atrac9.cpp
2026-10-21 14:27:59 +02:00
Retr0 3509bb528a fix(libSceNet): report EAGAIN when a stream receive times out on Windows
FreeBSD 11.4's soreceive_generic waits in sbwait (sys/kern/uipc_socket.c,
uipc_sockbuf.c), whose msleep_sbt on so_rcv.sb_timeo returns EWOULDBLOCK
(35) for every socket type when SO_RCVTIMEO expires. On Windows the host
socket is non-blocking and native_transfer enforces the timeout itself,
but it reported WSAETIMEDOUT, which only datagram receives turned into
EAGAIN; a stream receive failed with ETIMEDOUT (60). A receive that
reaches the stored timeout now reports WSAEWOULDBLOCK, so every
receive returns EAGAIN, and a host WSAETIMEDOUT still maps to ETIMEDOUT.
2026-10-21 15:26:46 +03:00
Adrià 2f161d4f33 Merge pull request #8345 from MarrasFederico/feat/mbus-device-generation
feat(libSceMbus): report a device set that never changes in sceDeviceServiceGetGeneration
2026-10-21 14:20:48 +02:00
Federico Marras 4a446319ef docs(libSceNgs2.native): shorten the sceNgs2GetWaveformFrameInfo debt entry 2026-10-21 14:20:22 +02:00
Dean 0c83831421 Merge pull request #8975 from milescoviello/rebase/5499-db-depth-copy
feat(agc): run DB depth copies into a single-sample R32 float target
2026-10-22 01:20:22 +13:00
Adrià fce8ecf162 Merge pull request #8330 from ymatrix1/feat/regmgr-missing-exports
feat(libSceRegMgr): export missing firmware registry manager interfaces
2026-10-21 14:18:55 +02:00
Adrià 6cfd7912a6 Merge pull request #8332 from ymatrix1/feat/avsetting-hid-missing-exports
feat(libSceAvSetting): export missing firmware AV setting and HID control interfaces
2026-10-21 14:18:50 +02:00
Adrià 44d01b8f4b Merge pull request #8333 from ymatrix1/feat/gamelivestreaming-missing-exports
feat(libSceGameLiveStreaming): export missing firmware live streaming interfaces
2026-10-21 14:18:44 +02:00
Adrià 94b2b54e8c Merge pull request #8338 from KernelPanicNT/feat/ngs2-calc-waveform-block-pcm
feat(libSceNgs2): map waveform blocks of linear PCM and float types
2026-10-21 14:17:40 +02:00
Retr0 9bd2bb06cc fix(libkernel): return ENOTSOCK from sendfile on a descriptor that is not a socket
FreeBSD 11 sendfile checks the file descriptor first, then looks up the
socket with getsock_cap, which answers ENOTSOCK for an open descriptor
that is not a socket and EBADF for one that is not open
(sys/kern/kern_sendfile.c, sys/kern/uipc_syscalls.c).

sendfile replaced the errno that Lookup had already set with EBADF. It
now reports the errno Lookup chose, so an open non-socket gives ENOTSOCK
and a closed descriptor still gives EBADF. The sentence about this gap
is cut from the sendfile debt entry and guest_sendfile covers both cases.
2026-10-21 15:16:35 +03:00
David 087c1f40a4 Merge branch 'main' into feat/agc-barycentric-rect-list 2026-10-21 16:15:52 +04:00
Federico Marras e556f153ef Merge remote-tracking branch 'upstream/main' into feat/ngs2-waveform-frame-info
# Conflicts:
#	docs/dev/debt/libSceNgs2.md
2026-10-21 14:15:23 +02:00
Adrià 11bb53a347 Merge pull request #8327 from MarrasFederico/feat/ngs2-voice-owner
feat(libSceNgs2): report the rack and index that own a voice in sceNgs2VoiceGetOwner
2026-10-21 14:12:24 +02:00
Santhosh Kumar 114df6965f feat(libSceFreeType): expose font format and embedding flags 2026-10-21 17:41:11 +05:30
Santhosh Kumar a5b7e4d268 feat(libSceFreeType): reverse and translate guest outlines 2026-10-21 17:41:10 +05:30
Santhosh Kumar 0ed04b266a feat(libSceFreeType): expose charmap metadata 2026-10-21 17:41:10 +05:30
Santhosh Kumar 9544a3e766 feat(libSceFreeType): check outlines and query control bounds 2026-10-21 17:41:09 +05:30
aarushkhaandClaude Opus 5.5 7bff640073 feat(libkernel): answer sceKernelAddReadEvent and sceKernelAddWriteEvent on regular files
Both threw for a regular file. They now follow FreeBSD 11.4's
filt_vfsread and filt_vfswrite: a read event reports the file size less
the descriptor's offset and fires while that is not 0; a write event
always fires with data 0. A wait holding such an event polls it again
every millisecond, as no host call reports every file change. A size
above 1 and other vnode types still throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 17:40:45 +05:30
Santhosh Kumar 091dc1d1b5 feat(libSceFreeType): expose raw SFNT name records 2026-10-21 17:40:35 +05:30
orezraeyandClaude Opus 5.5 6369edbf12 Merge main into fix/http-uri-parse-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 09:10:14 -03:00
Santhosh Kumar 1bf9429135 feat(libSceFreeType): expose font and glyph names 2026-10-21 17:39:26 +05:30
Santhosh Kumar 211dc984b1 docs(libSceFreeType): use the shared debt sections 2026-10-21 17:38:36 +05:30
Santhosh Kumar 69e6ac4438 feat(libSceFreeType): copy and convert guest bitmaps 2026-10-21 17:38:35 +05:30