Commit Graph
9104 Commits
Author SHA1 Message Date
Adrià 4b53572a85 Merge pull request #11930 from milescoviello/docs/ajm-module-finalize-stubs
docs(libSceAjm.native): list the module registration, finalize and batch error dump calls as silent stubs
2026-10-28 14:46:44 +01:00
Adrià 10363ed240 Merge pull request #11927 from milescoviello/docs/ampr-buffer-teardown
docs(libSceAmpr): list the command buffer destructors and the AMM constructor as silent stubs
2026-10-28 14:46:38 +01:00
Adrià 355f3bf182 Merge pull request #11924 from milescoviello/docs/npmanager-premium-title-id
docs(libSceNpManager): list the premium-feature, title ID and premium callback calls as silent stubs
2026-10-28 14:46:33 +01:00
Claude 84aec8b0ac fix(libc): read characters outside the BMP as surrogate pairs in fgetwc
fputws and wprintf write a UTF-16 surrogate pair as one four-byte
UTF-8 sequence, but fgetwc decoded that sequence into a single code
point above 0xFFFF, which is not a 16-bit guest wchar_t value, and
fgetws stored it truncated: fputws(u"A\U0001F600\n") read back as
A, U+F600, newline.

fgetwc now returns the high surrogate and keeps the low one in the
stream for the next read, so fgetws stores the pair, also when the
buffer fills between the two halves. A successful seek discards it,
as FreeBSD's fseeko resets the stream's mbstate. Sequences that
decode to an overlong form or above U+10FFFF, and lead bytes F8 to
FF, fail with EILSEQ instead of returning made-up characters; the
three-byte surrogates that fputwc writes for a single unit are still
read back as that unit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QegaHM5QeCynUQ2ZLWHE4b
2026-10-28 14:43:48 +01:00
Adrià 123f7f3b60 fix(shader): keep multi-dword TYPE 2/3 stores throwing and move the failed-capture fixture to TYPE 1 2026-10-28 14:42:32 +01:00
cgrdandClaude Opus 5.5 4620e29426 fix(shader): drop vector stores through TYPE 2/3 and FORMAT 0 buffer V#s as measured
A buffer V# whose TYPE is not 0 threw "buffer descriptor uses an
unsupported type" for every access. Measured on a PS5 (CFI-1115B,
firmware 12.20): through a V# with TYPE 2 or 3 and FORMAT 0 or a valid
format, buffer_store_dword and buffer_store_format_x write nothing and
don't fault, so a buffer a shader only stores to through one is bound as
a null V#. Loads and atomics through those V#s leave the destination VGPR
unchanged, which a null V# can't reproduce, so they still throw. Through
a TYPE 0, FORMAT 0 V#, vector loads return 0 and stores are dropped, and
those buffers are bound as a null V# too. TYPE 1 faults the GPU for every
access measured and keeps throwing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 14:42:23 +01:00
AdriàandClaude Sonnet 5.5 af7d8d38c1 docs(libkernel_sys): move the sceKernelIsNeoMode debt line off the end of Functional
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-28 14:27:20 +01:00
Adrià 0a07101649 docs(libSceConvertKeycode): fix debt entry punctuation 2026-10-28 14:27:12 +01:00
InfinitySpeed b0ed32bd6c feat(libSceConvertKeycode): implement sceConvertKeycodeGetCharacterFromKeyboardData 2026-10-28 14:27:07 +01:00
KianandClaude Opus 5.5 ae305dfd5d feat(agc): APS5_DUMP_SHADERS takes a list of program addresses
A comma-separated list of hex program addresses (optional 0x prefix) now
writes only those programs' requests, so one expensive shader can be
captured without serializing every request a title prepares. Any other
value, such as 1, keeps writing every request. A filtered-out program
returns no name, so diagnostics never point at a file that was not
written, and it stays eligible for a later list.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 23:26:48 +10:00
AdriàandClaude Sonnet 5.5 5782e6d6c1 fix(libScePlayerInvitationDialog): keep Open running until UpdateStatus, check param first, update test and debt
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-28 14:23:48 +01:00
Aniket TuliandClaude Sonnet 5.5 43cae067c5 feat(libScePs2EmuMenuDialog): return the measured firmware 13.42 results
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-28 14:22:17 +01:00
simnJS 9b9e87bd72 feat(libSceNpManager): answer sceNpWaitAsync as sceNpPollAsync does 2026-10-28 14:18:04 +01:00
milescovielloandClaude Opus 5.5 ef9c7a06a5 fix(libkernel): answer vm.loadavg with the host's load averages
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 13:11:49 +00:00
simnJS 215192dd37 feat(libkernel_sys): answer sceKernelIsNeoMode from the param.sfo Neo-mode attribute
A title with param.sfo gets bit 23 (0x00800000) of its ATTRIBUTE key,
the PS4 Pro (Neo) mode support flag, and 0 without the key, as shadPS4
answers on a Neo console; sceKernelHasNeoMode and sceKernelIsAuthenticNeo
already report one. A title with param.json still throws: what a PS5
application gets is unknown. The param.sfo parser now reads ATTRIBUTE and
libkernel exposes it to the other libraries.
2026-10-28 14:10:21 +01:00
MarcZX10 c1e321f26d feat(libSceNet): implement sceNetGetStatisticsInfo
sceNetGetStatisticsInfo threw NotImplemented_nid_no_patch. It now fills
the six 32-bit fields of the statistics block (kernel memory free and
minimum free, packet count, QoS packet count, library memory free and
minimum free) and fails with NET_EFAULT, setting errno, for a null
pointer. The layout and the "plenty free, nothing queued" answer follow
shadPS4's net.cpp and net_types.h; the host has no counter for the
console's network memory, so the values are not measured. The debt file
records this, and the test checks the null pointer, the field
invariants and that the flags argument is ignored.
2026-10-28 13:07:48 +00:00
MarcZX10 d7c13a621e feat(libSceNet): implement the pool-checked Show*WithMemory diagnostics
sceNetShowIfconfigWithMemory, sceNetShowPolicyWithMemory and
sceNetShowRoute6WithMemory threw NotImplemented_nid_no_patch. They now
behave like the existing sceNetShowRouteWithMemory: an unknown memory
pool id fails with NET_EBADF (errno set), a live pool returns success
without printing. The behaviour follows shadPS4's net.cpp, which does
the same for these three. The new silent stubs are listed in the
libSceNet technical debt file, and the tests cover the invalid id, live
pool and destroyed pool cases.
2026-10-28 13:07:48 +00:00
MarcZX10 436769c634 fix(libkernel): recognize Windows anonymous shared memory descriptors 2026-10-28 13:04:38 +00:00
SeaSunPTandClaude Opus 5.5 9f6c3527ed fix(libSceAudioOut): refuse system debug state and chat calls before sceAudioOut2Initialize
#9838 read sceAudioOut2SetSystemDebugState in PS5 firmware 3.20 and 4.03:
it returns 0x80268006 (not initialized) before sceAudioOut2Initialize,
ahead of its pointer, id and size checks. The debt entry for
sceAudioOut2EnableChat and sceAudioOut2DisableChat records the same
0x80268006 before AudioOut2 initialization. Both were left out while
AudioOut2 initialization was not tracked; AudioOut2IsInitialized_nid_no_patch
now tracks it, so all three return 0x80268006 first and change no state.
The two debt entries drop the closed gap.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:56:22 +00:00
PrivacyOnion 098f9a8621 feat(libSceInvitationDialog): implement sceInvitationDialogGetStatus and stub OpenA and GetResultA 2026-10-28 13:55:05 +01:00
PrivacyOnion 634e7eb41f feat(libScePosixForWebKit): implement opendir, closedir, readdir, readdir_r 2026-10-28 13:52:16 +01:00
AdriàandClaude Sonnet 5.5 638996829b docs(libkernel): shorten the kevent on a kqueue debt entry
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-28 13:45:47 +01:00
AdriàandClaude Sonnet 5.5 7cdb7a8780 test(libkernel): shrink the cleared kqueue race, match watched notes by ident, correct the kqueue debt entry
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-28 13:45:37 +01:00
Adrià bd19a7e561 docs(libSceGameLiveStreaming): shorten silent stub entry 2026-10-28 13:45:33 +01:00
Adrià Franch 8c2599562e docs(agc): record the CLEAR_STATE NUM_INTERP value in debt 2026-10-28 13:45:02 +01:00
David 4c77b6ab65 feat(libkernel): support EV_CLEAR on a kqueue watched by another kqueue
FreeBSD re-evaluates a kqueue's EVFILT_READ note from kqueue_wakeup,
which runs whenever the watched kqueue queues a note, so an EV_CLEAR
note fires again only after such an activation. The equeue now counts
activations, and the EV_CLEAR note fires when the count moves while
notes are queued.
2026-10-28 13:44:50 +01:00
AlxcBTW a893c2caa2 feat(libSceGameLiveStreaming): answer offline setting and feedback calls locally 2026-10-28 13:44:47 +01:00
Kyon facacb4684 fix(libkernel_sys): resolve known NID aliases and document identities 2026-10-28 12:40:14 +00:00
AdriàandClaude Sonnet 5.5 7da980327e docs(libSceNpTrophy2): drop literal NID alias claim, none are added
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-28 13:38:17 +01:00
Kyon 5a1bd58d90 feat(libSceNpTrophy2): declare 15 additional callable exports 2026-10-28 13:38:14 +01:00
Dean 750cf6cf48 Merge pull request #11595 from alvaroelpob/fix/libkernel-sys-linkat-symlink-itself
fix(libkernel_sys): link a symbolic link itself in linkat without AT_SYMLINK_FOLLOW
2026-10-29 01:32:29 +13:00
Dean d580b1f552 Merge pull request #11441 from p3n1cillin/claude/kernel-cpumode-game
feat(libkernel_sys): implement sceKernelGetCpumodeGame and sceKernelSetCpumodeGame as measured on a PS5
2026-10-29 01:32:11 +13:00
Adrià bdbe620925 docs(libSceNpSignaling): drop NID alias claim, none are added 2026-10-28 13:31:50 +01:00
Kyon 3c9b201113 feat(libSceNpSignaling): declare 15 additional callable exports 2026-10-28 13:31:50 +01:00
Kyon 369346fa2f feat(libSceMusicFrameworkInterface): declare 20 additional callable exports 2026-10-28 12:23:28 +00:00
Kyon ebadd68da1 feat(libSceResourceArbitrator): declare 14 additional callable exports 2026-10-28 12:23:28 +00:00
Kyon aad11c3de8 feat(libSceHidControl): declare 19 additional callable exports 2026-10-28 12:23:28 +00:00
Kyon e8d2532535 feat(libSceBgft): declare 12 additional callable exports 2026-10-28 12:23:24 +00:00
verusferro 778c4a74ec feat(libc): throw std::filesystem::filesystem_error from _Xfilesystem_error as the console's libc does 2026-10-28 15:10:30 +03:00
Get-fix 0bec339021 feat(libSceAgcDriver): draw PS4 (GCN) command buffers
PS4 color and depth targets, PS4 graphics EOP events, and the PS4 tile
modes (1D/2D thin and display, depth with tile split, PRT, linear
general) on the AGC executor, with a GPU detiler for every mode.
Textures sampled over the padded corner of a render target are GPU block
copies, and the PS4 SDK pattern-fill compute kernel runs as a GPU fill
when it repeats one dword, so render targets and HTILE are cleared
without a CPU drain. Two-dword patterns keep running the kernel: as
fills, Limbo's clears of its 64-bit target made its gameplay advance
about half as far per frame.
Tests cover the tiling equations against addrlib formulas, the GPU
detiler for every mode and element size, and the fill ranges.
2026-10-28 13:01:27 +01:00
David 0e693817d8 docs(debt): list the unnamed ksem calls under Functional 2026-10-28 12:57:05 +01:00
David fd6513d6ff refactor(libkernel): move the unnamed ksem calls into libkernel
The PS5 3.20 export lists have ksem_* in libkernel as well as
libkernel_sys, and on Windows a libkernel import never reaches
libkernel_sys, so titles importing them from libkernel did not find
them. Following pipe1os's review on #9284, also: ENOSPC from
ksem_init when no descriptor is left, the SEM_MAX limit of 30 with
ENOSPC, and dup/dup2 from a ksem id throwing as for a kqueue.
2026-10-28 12:57:04 +01:00
Misjudgments 410e3b8b21 fix(libSceFont): keep horizontal writing on a single baseline
Horizontal writing steps advanced the pen by the glyph's vertical advance on
every character, so text drifted down diagonally (steepest for CJK fonts,
whose vertical advance is roughly the em size). The step's GlyphMetrics
width/height were also overwritten with the pen position, leaving the first
glyph of each run invisible at pen (0, 0).

Every supported writing form (0x10/0x11/0x12) is horizontal, so the pen must
advance only along X and the step reports the real glyph width/height.
2026-10-28 12:50:41 +01:00
Alexandre Figueiredo 2b21d42b76 feat(libc): export the remaining aligned and array operator new and delete overloads 2026-10-28 11:50:06 +00:00
Dean 2227f13661 Merge pull request #11516 from Lindamea1/fix/videoout-event-getters-invalid-event
fix(libSceVideoOut): return INVALID_EVENT from the event getters for an event of another filter
2026-10-29 00:35:41 +13:00
Dean 0c4d871f18 Merge pull request #12253 from Michael-KD/fix/fma-f32-denormal-modes
fix(shader): translate the fused f32 fma forms in f32 denormal mode 2
2026-10-29 00:32:38 +13:00
Dean 7d223dd6da Merge pull request #12252 from Michael-KD/fix/f32-rounding-frexp-denormal-modes
fix(shader): translate f32 fract, floor, ceil and frexp_mant in f32 denormal modes 1 and 2
2026-10-29 00:32:22 +13:00
Dean 0b9da0027d Merge pull request #12294 from Ninot1Quyi/feat/icu-cstring-helpers
feat(libSceIcu): implement C string conversion helpers
2026-10-29 00:31:48 +13:00
Dean 448450275f Merge pull request #11071 from slopgobblercobbler/fix/userservice-platform-privacy-validation
fix(libSceUserService): validate user in sceUserServiceGetPlatformPrivacyWs1
2026-10-29 00:26:58 +13:00
Kyon d7e647cbc2 Merge remote-tracking branch 'origin/main' into feat/kernel-sys-1360-inventory 2026-10-28 11:14:02 +00:00