Commit Graph
10630 Commits
Author SHA1 Message Date
Adrià f20dbdd14c Merge pull request #13635 from kyon-eth/feat/bgft-320-legacy
feat(libSceBgft): declare older callable exports
2026-10-31 11:08:52 +01:00
Adrià b7d3fd3c52 Merge pull request #13629 from kyon-eth/feat/videoout-320-legacy-exports
feat(libSceVideoOut): declare older callable exports
2026-10-31 11:03:31 +01:00
Adrià 69c8fc1375 Merge pull request #13626 from kyon-eth/feat/nptcs-320-exports
feat(libSceNpTcs): declare older callable exports
2026-10-31 11:03:23 +01:00
Adrià 4a9b259564 Merge pull request #13622 from MarcZX10/feat/host-free-space
feat(libSceSaveData.native): report the host volume's room to save mounts, opt-in with ANYPS5_FREE_SPACE
2026-10-31 11:03:16 +01:00
Adrià 3a6711d08b Merge pull request #13621 from beardsciences/fix/idle-store-yield
fix(agc): yield the queue-idle storage write-back to new work
2026-10-31 11:03:08 +01:00
Adrià 45f4f82449 Merge pull request #13630 from kyon-eth/feat/npmanager-320-legacy
feat(libSceNpManager): declare older callable exports
2026-10-31 10:59:05 +01:00
Adrià 2db749ef2e Merge pull request #13623 from kyon-eth/feat/custommusic-core-320-exports
feat(libSceCustomMusicCore): declare older callable exports
2026-10-31 10:57:53 +01:00
AdriàandClaude Sonnet 5.5 489db87488 fix(libSceDataTransfer): use the known names of the two older exports
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 10:52:48 +01:00
Kyon ae542cd452 feat(libSceDataTransfer): declare older callable exports 2026-10-31 10:52:35 +01:00
DeveshB-1 dd46d6ada3 fix(libkernel): return EFAULT from sysctlnametomib for invalid memory pointers 2026-10-31 15:02:53 +05:30
Adrià bd9039ca20 Merge pull request #13618 from kyon-eth/feat/abstracttcs-320-exports
feat(libSceAbstractTcs): declare older callable exports
2026-10-31 10:26:55 +01:00
Adrià f78408fe52 Merge pull request #13617 from kyon-eth/feat/custommusic-playready4-320-exports
feat(libSceCustomMusicPlayReady4): declare older exports
2026-10-31 10:26:48 +01:00
zaryabzip 3c478fe2a4 docs(libSceCesCs): keep the surrogate note in the new entry, clear of #13573 2026-10-31 14:25:32 +05:00
zaryabzip ce093095ff fix(libSceNet): refuse resolver timeouts below one second as firmware 13.42 does
sceNetResolverStartNtoa refuses a timeout from 1 to 999999 with EINVAL
before the resolver is looked up, and takes 0 as 1000000, as a run of
firmware 13.42's module shows.
2026-10-31 14:20:43 +05:00
zaryabzip 553f1a82d2 fix(libSceRudp): check the context status arguments first and initialization before the id pointer
sceRudpGetContextStatus refuses a negative id, a null status and a size
outside 1 to 0x30 with 0x80770004 before it looks the id up, and writes
the idle block with 0xFFFFFFFF at bytes 4-7, as firmware 10.71 and 13.42
readings show. sceRudpCreateContext checks initialization before its null
id pointer.
2026-10-31 14:18:54 +05:00
Adrià c5e389a126 Merge pull request #13612 from kyon-eth/feat/jsc-320-legacy-unique
feat(libSceJsc): declare older callable exports
2026-10-31 10:18:36 +01:00
Adrià cff2a0ff46 Merge pull request #13611 from kyon-eth/feat/icu-320-legacy-bulk
feat(libSceIcu): declare older callable exports
2026-10-31 10:18:29 +01:00
Adrià 5d0ca2e685 Merge pull request #13600 from akkadbakkad89/kernel-sema-attr-hi
fix(libkernel): accept semaphore attribute bits 0x100 to 0x102
2026-10-31 10:17:33 +01:00
zaryabzip 5f4b1c401e fix(libSceCesCs): refuse the Cp1254 and Cp1258 holes and UTF-32 surrogates as a PS5 does
Bytes 81 8D 8E 8F 90 9D 9E of Cp1254 and 81 8A 8D 8E 8F 90 9A 9D 9E of
Cp1258 now answer 0x805C0020 both ways instead of mapping to C1 controls,
and sceCesUtf32ToSbc answers 0x805C0015 for a surrogate, as a sweep on a
PS5 measured and a firmware 13.42 run of the module agrees.
2026-10-31 14:16:37 +05:00
Adrià faf4aec285 Merge pull request #13609 from kyon-eth/feat/nkwebkit-320-legacy-exports
feat(libSceNKWebKit): declare older callable exports
2026-10-31 10:14:44 +01:00
JAB-devandClaude Sonnet 5.5 9c009622b5 fix(libSceNgs2): reject sampler racks outside 1 to 32 waveform blocks
A sampler rack or a custom sampler rack whose max_waveform_blocks is 0 or above
32 now returns 0x804A8053 from sceNgs2RackQueryBufferSize, sceNgs2RackCreate
and sceNgs2RackCreateWithAllocator, checked before the peak meter and buffer
count checks as the PS5 module does. Main checked only a custom sampler rack
with 0 and accepted any count for a sampler rack, taking 0 as 1.

The PS4 build keeps main's behaviour: no limit for sampler racks, and 0x804A8053
for a custom sampler rack with 0. PS4 11.00 takes 1 to 16 on sampler racks and
returns 0x804A0106, but the PS4 library reads the PS5 rack option layout, so it
cannot apply that.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 11:08:00 +02:00
DariusandClaude Opus 5.5 cb7d399f4e feat(libSceRegMgr): name sceRegMgrLogStart from its NID
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 11:01:52 +02:00
xXPBSXxandClaude Sonnet 5.5 d7ce0daa23 docs(libkernel): name what FreeBSD and the emulators do for an unaligned sceKernelMunmap length
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 09:54:16 +01:00
Adrià 809c7fa2df Merge pull request #13607 from BunnyFl/feat/libsceaudio3d-firmware-ports
feat(libSceAudio3d): follow firmware 13.42 for the port, report and audio out calls
2026-10-31 09:53:30 +01:00
akkadbakkad89 74948cef4c fix(libSceFont): guard drawup pool scan index and size test descriptor 2026-10-31 14:21:02 +05:30
AdriàandClaude Sonnet 5.5 e5f5e36f09 docs(libkernel): restore unrelated debt entries dropped by a stale branch
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 09:47:05 +01:00
akkadbakkad89andDevin 58295ef071 fix(libkernel): accept semaphore attribute bits 0x100 to 0x102
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-31 09:47:05 +01:00
DariusandClaude Opus 5.5 b5448bdca1 feat(libSceLibreSsl3): name 119 unknown additional exports from their NIDs
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 10:40:43 +02:00
Adrià 45e39c7ad1 Merge pull request #13605 from kyon-eth/feat/userservice-320-legacy-exports
feat(libSceUserService): declare older settings exports
2026-10-31 09:39:52 +01:00
Adrià 4cb7d71c47 Merge pull request #13604 from kyon-eth/feat/icu-320-dispatch-exports
feat(libSceIcu): declare older dispatch exports
2026-10-31 09:37:46 +01:00
zaryabzip 0a5c3be283 fix(libkernel): return ESRCH from signalto for a handle that is not a thread
scePthreadCondSignalto and pthread_cond_signalto_np answered EPERM for a
handle that is not a live thread, where a PS5 on firmware 13.60 returns
ESRCH. The check sits between the null-thread and not-waiting checks, as
that console orders them.
2026-10-31 13:37:23 +05:00
BunnyFlandClaude Opus 5.5 f4d2d44466 fix(libSceAudio3d): let open ex check like open in a PS4 process
In firmware 13.42 sceAudio3dPortOpenEx only sets the flag that skips
the PS4-process AudioOut2 advances, which this library never makes, so
it now opens like sceAudio3dPortOpen. A PS4-process open reports an
open port before an unsupported buffer mode or bed count, as the
firmware does, and the debt entry records the advances after an open
and a push for a PS4 SDK of 0x11000000 or later.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
BunnyFlandClaude Opus 5.5 96aa06c34f fix(libSceAudio3d): follow the firmware's PS4-process branch
Store sceKernelIsPs4Process at sceAudio3dInitialize as firmware 13.42
does and follow its PS4-process answers: bed write2 rejects route 1 on a
2-bed port, audio out open rejects port type 3 with param bit 17 and
checks like a PS5 process otherwise, and a repeated initialize returns
NOT_READY before the reserved check. Formats 6 and 7 throw for a PS4
process because the firmware rewrites them by PS4 SDK version, which
this project cannot read yet. Test the outputs loop and its reports.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
BunnyFlandClaude Opus 5.5 7f45264713 fix(libSceAudio3d): keep PS4-process answers and read the port id only for reports
Choose the firmware 13.42 PS5 rules or the earlier answers by
sceKernelIsPs4Process for the port open, open ex, create and bed write2
route checks, read the port id for a call report only when a call
handler is registered, as the firmware does, and report a null
parameter pointer from sceAudio3dAudioOutOutputs without pointer
arithmetic on null.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
BunnyFlandClaude Opus 5.5 5f25ef8a97 feat(libSceAudio3d): follow firmware 13.42 for the port, report and audio out calls
sceAudio3dPortOpenEx, sceAudio3dPortDestroy, sceAudio3dPortGetStatus,
sceAudio3dReportRegisterHandler and sceAudio3dReportUnregisterHandler are
implemented, and sceAudio3dPortOpen, sceAudio3dPortCreate, the object
and audio out calls and the port close follow the checks of firmware
13.42's libSceAudio3d.sprx for a PS5 process.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 09:30:55 +01:00
frankea 32a6bdb6d3 fix(shader): reject request serialization version 50 and record unchecked lane selectors
Version 50 is skipped, so a request with that number is refused instead
of being read in the version 49 layout.

The one-lane tessellation evaluation debt entry now states that only a
v_readlane_b32 of a constant lane throws: a lane selector held in a
register is not checked and reads the invocation's own value, as on the
vertex path.
2026-10-31 04:14:54 -04:00
zaryabzip 520a8249a3 feat(libSceSysUtil): send text notifications as firmware 13.42 does
sceSysUtilSendSystemNotificationWithText builds the 0xc30-byte request
the 13.42 library builds (kind 5, the type at +0xc, at most 179
characters of text at +0x2d, an empty text for a null message) and
returns what sceKernelSendNotificationRequest returns. That call now
prints kind 5 requests as it prints kind 0 ones.

Replaces #9081 by @shanu337.
2026-10-31 13:13:56 +05:00
Qu Yi 592aca8e11 fix(libSceLibreSsl): preserve SHA-512 initialization buffers 2026-10-31 15:51:23 +08:00
Qu Yi 4c41442276 fix(libc): match nearbyint inexact flags to guest libc 2026-10-31 15:51:17 +08:00
JAB-devandClaude Sonnet 5.5 97a16f9a09 fix(libSceNgs2): read the PS4 sampler filter param in shadPS4's layout
Under APS5_NGS2_PS4_LIBRARY the sampler filter param 0x1000000a is parsed as
shadPS4's OrbisNgs2SamplerVoiceFilterParam (index 0x8, location 0xC, type
0x10, 32-bit channel mask 0x14, fc, q and level from 0x18, size 0x30), the
way the custom param 0x40001300 already is, and goes through the new filter
code. main read KytyPS5's layout (type 0x10, 64-bit mask 0x18); neither is
measured on PS4 11.00. Types 0 and 1 at location 1 are accepted, anything
else throws as on main. Raw-byte tests in ngs2_core_render cover the layout.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 09:50:43 +02:00
xXPBSXxandClaude Sonnet 5.5 ac48f9913e docs(debt): list sceVideodec2ReleaseComputeQueue as a silent stub
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 08:47:15 +01:00
JAB-devandClaude Sonnet 5.5 f8ce8aade3 fix(libSceNgs2): keep the PS4 sampler filter layout and name the measurement source
Under APS5_NGS2_PS4_LIBRARY the sampler filter param 0x1000000a is parsed in
the layout main used (type at 0x10, 64-bit mask at 0x18, fc at 0x20) instead
of the PS5 layout, as the custom param 0x40001300 already is, and goes
through the new filter code. Raw-byte tests in ngs2_core_render cover it.

The two filter debt entries name the module and firmware versions measured,
say the runs were on a PC with host math imports and not on a console, point
to the result records, and keep the PS4 differences gap-first. The title is
left out of the debt text; only the title ID stays.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 09:45:38 +02:00
xdCloudy b6b9998f7d feat(libSceCompanionHttpd): implement verified zero returns 2026-10-31 07:39:05 +00:00
akkadbakkad89 23527403a5 feat(libSceFont): implement drawup texture image/pattern record producers
Firmware 4.03 bodies at 0x20cb0 (image) and 0x20f50 (pattern) recovered:
frame magic/sticky/parameter checks with error store at +4 and hook,
record-pool u16 free-run allocation under the pool mutex, 0x80 record
header (type 0x40/0x50, sequence, payload at +0x80), descriptor memcpy
of mode bytes, and same-sequence queue append bumping frame+0x28.
libSceFont links libkernel for scePthreadMutexLock/Unlock; guest test
covers validation, record bytes, queue order and the allocator.
2026-10-31 13:05:37 +05:30
xXPBSXxandClaude Sonnet 5.5 25f76ae98f docs(debt): list sceKernelIsAddressSanitizerEnabled as a silent stub
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 08:35:06 +01:00
zaryabzip 9c423e59bd test(libSceRudp): leave the unmeasured binds out of the listen test
The two binds whose answers nobody has measured still throw, with their
debt lines, but the test no longer pins that. The debt entries for Bind,
Listen and Accept say the run was under an emulator, and the Accept entry
says which of its arguments were run.
2026-10-31 12:28:57 +05:00
pushkarreddyy b25d10ddf1 docs(libkernel): record unwritable store fallback for sceKernelGetAppInfo 2026-10-31 12:52:31 +05:30
DeveshB-1 13f30a2231 fix(ulobjmgr): return EFAULT from _sceUlobjmgrRegisterObject for an unwritable store 2026-10-31 12:47:31 +05:30
akkadbakkad89 d9a6517b6f fix(libSceFont): correct DrawupFillTexturePatternObject ABI
Firmware 4.03 body at 0x20f50 takes ten integer arguments with the\noutput pointer last - the PPSA20397 libSceFontGsm.prx caller rotates\nsix registers and pushes four stack arguments, no float registers.\nUpdate the declaration, stub and signature assertion, and record the\nverified offsets and record/queue semantics in the debt file.
2026-10-31 12:45:22 +05:30
zaryabzip 11f42d025e feat(libSceRudp): bind, listen and accept as a firmware 13.42 run shows
sceRudpBind takes the socket id, virtual port and mux mode and checks
them; mux mode 2 with vport 0 takes 0x2711 and on from a per-socket
counter. sceRudpSetEventHandler checks initialization and a null
handler, and sceRudpEnd clears the handler. sceRudpListen and
sceRudpAccept follow the run: no peer ever connects here, so accept
returns WOULDBLOCK while non-blocking and otherwise waits until the
context is terminated. Cases the run did not cover throw.
2026-10-31 12:11:58 +05:00