Commit Graph
8814 Commits
Author SHA1 Message Date
Dean 28ed43a567 Merge pull request #10737 from rooklz/fix/cescs-ksx1001-327e
fix(libSceCesCs): decode KS X 1001 cell 0xA2E8 as U+327E as the console does
2026-10-26 05:36:46 +13:00
Adrià 0a77bbf18c Merge pull request #9170 from rooklz/fix/libc-thrd-id
fix(libc): return the calling thread from _Thrd_id as the console's libc.prx does
2026-10-25 17:34:31 +01:00
Dean Galvin cfd525426c Merge branch 'main' into pr9187 2026-10-26 05:32:47 +13:00
Dean Galvin e890f802ed Merge branch 'main' into pr10786 2026-10-26 05:32:41 +13:00
Dean Galvin 96cc55c714 Merge branch 'main' into pr10614 2026-10-26 05:32:09 +13:00
Dean Galvin c932eff258 Merge branch 'main' into pr10451 2026-10-26 05:31:54 +13:00
Dean Galvin b344e3d192 Merge branch 'main' into pr10446 2026-10-26 05:31:38 +13:00
dantdmdarealguy f34bfc4f28 docs(debt): remove the sceVideoRecordingInit and sceVideoRecordingTerm entry now that they return 0 as the firmware does
db2575839 (#8307) made both return 0, following their bodies in the
firmware module libSceVideoRecording.sprx (xor eax, eax; ret), but left
the entry saying they are parameterless stubs that throw. The firmware
body leaves no open gap, so the entry goes. sceVideoRecordingGetStatus
no longer lists sceVideoRecordingInit among the initializers that throw.
2026-10-25 17:28:05 +01:00
AZLisme ef9a48c6ec docs(libSceRudp): record firmware cancellation details 2026-10-26 00:25:54 +08:00
Adrià Franch 6ce060e3ee docs(libSceNpTrophy2): describe max and int32 statistics and property filters in USAGE 2026-10-25 17:24:50 +01:00
milescovielloandClaude Opus 5.5 ca34fdb351 feat(libSceNpTrophy2,libSceNpUniversalDataSystem): unlock progressive trophies through _UpdateTrophyProgress
Titles report a progressive trophy's progress with _UpdateTrophyProgress
events. Their udsNN.ucp rules feed $._trophy_progress into an int32
statistic with the max aggregation, filtered on $._trophy_id, and the
trophy's unlockCondition names that statistic. Those statistics and
rules were skipped and the events were dropped, so such trophies never
reported progress or unlocked (21 of Borderlands 4's 64).

- Read max statistics (largest value posted, from initialValue) and
  int32 statistics (0 to 2147483647).
- Read a rule condition with one == property equal to an unsigned
  integer, and apply the rule only to events whose property matches.
- Post _UpdateTrophyProgress through the statistic rules.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 17:24:43 +01:00
alnsx 7eecb44157 chore: merge main after socket debt corrections 2026-10-25 12:23:32 -04:00
verusferro 1d31901c4b feat(libc): format num_put<char>::do_put as the console's libc does
The num_put facet's eight do_put overloads build the console's printf format from the stream flags, format through snprintf and lay out the result as the SDK libc.prx does: thousands separators from the stream locale's numpunct, its decimal point, fill and width with left, right and internal adjustment, true and false names under boolalpha, and the console's prefix and infinity rules for floating point.
2026-10-25 19:19:16 +03:00
verusferro 3338ffefff feat(libc): format time_put<char>::do_put as the console's libc does
The time_put facet's do_put formats % with the modifier and conversion through strftime and writes the result through the output iterator's stream buffer, following the SDK libc.prx: it stores into the put area while room remains, calls overflow otherwise, and marks the iterator failed when overflow returns eof or the buffer is null.
2026-10-25 19:18:04 +03:00
David a81fcbfacd feat(libkernel): sync each write on a file whose O_FSYNC flag is set
FreeBSD's F_SETFL may change O_FSYNC (FCNTLFLAGS), and vn_write then
writes with IO_SYNC. The flag now lives in the status table, and the
write entry points sync a regular file after the write while it is set.
2026-10-25 17:13:01 +01:00
MarcZX10 6c1ac043c2 docs(build): note that libc is built without floating-point contraction 2026-10-25 16:07:20 +00:00
boykopovar 2e773bff38 Merge pull request #10990 from boykopovar/feat/nid-patcher-exec
feat(nid): executables nid patching functional
2026-10-25 18:56:44 +03:00
pushkarreddyy 9839162494 docs(libkernel): clarify sysctl default assumptions for sysKernel queries 2026-10-25 21:19:57 +05:30
Dean ee856eb7a0 Merge pull request #9931 from Queuse/codex/net-nodelay-short-readback
fix(net): truncate TCP_NODELAY readback
2026-10-26 04:45:18 +13:00
Dean 5e675163f0 Merge pull request #9916 from JJenkx/windows/printf-decimal-console
fix(libc): round and cap %e, %f and %g as titles' libc.prx does
2026-10-26 04:45:09 +13:00
Dean 6b46a5dfdb Merge pull request #10299 from orezraey/fix/libkernel-socket-address-measured-ps5
fix(libkernel): check socket address families and lengths as measured on a PS5
2026-10-26 04:45:05 +13:00
pushkarreddyy 2ba10cd6bb refactor(libkernel): align sysKernel queries with firmware 13.42 disassembly 2026-10-25 21:07:36 +05:30
Himansh Raj fefd2997b7 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-25 21:00:46 +05:30
Yunus Shaikh 684ffde83d feat(libSceBluetoothHid): fill the HID parameter block in sceBluetoothHidParamInitialize 2026-10-25 15:24:49 +00:00
Yunus Shaikh 92d5f20c10 feat(libSceNpWebApi2): validate and answer the multipart request calls 2026-10-25 15:24:49 +00:00
simnJS 4de4eeff2e fix(libSceUsbStorage): keep mapped directories on the device volume
A requested directory such as C:/Windows or C:Windows carries a root name
on Windows, so appending it to the volume root replaced the root and the
map checked a directory outside the device. Join the validated names one
by one and refuse a name with a root path. The fake sysfs of the test no
longer uses colons, so its device cases can run on Windows too.
2026-10-25 15:20:52 +00:00
Dean d2b3ee3bcc Merge pull request #8541 from Ondra97/codex/fix-ssl-context-connections
fix(ssl): release connections when their context terminates
2026-10-26 04:19:32 +13:00
Adrià 18424d6d7f Merge pull request #9384 from Ondra97/codex/feat-freetype-select-size
feat(libSceFreeType): implement FT_Select_Size
2026-10-25 16:16:57 +01:00
Adrià de74cf1deb Merge pull request #9488 from dantdmdarealguy/docs/relinker-converted-module-output
docs: describe the converted module output the relinker prints
2026-10-25 16:16:34 +01:00
Adrià bd0389635d Merge pull request #9471 from EnriqueDev2002/docs/macos-relinker-prerequisites
docs(build): add macOS relinker prerequisites
2026-10-25 16:16:28 +01:00
Emanueleandmugurc 30cc4ea2e6 feat(libkernel): start the guest off the main thread on macOS
AppKit, which SDL uses for windows, Metal surfaces, event pumping and game
controllers, works only on the main thread, and a guest never hands its
thread back. The macOS relinker emits a call to Aps5StartGuest as the
entry of a relinked executable; no library provided it.

- Aps5StartGuest runs the guest entry on a new thread with the stack size
  of the main thread (at least 8 MiB) and serves the main dispatch queue
  from the run loop of the main thread. The guest ends the process with
  exit; a guest entry that returns aborts.
- Aps5RunOnMainThread runs a function on the main thread and waits for it,
  or in place where the main thread is the caller or Aps5StartGuest was
  never called.
- libSceVideoOut sends its SDL calls through OnMainThread, which carries
  the exceptions back to the caller: the initialisation and shutdown of the
  video and game controller subsystems, the window, its Vulkan surface and
  drawable size, the event polling and the pad, mouse and keyboard input,
  which are created and destroyed there. On the other platforms the
  functions run in place.
- The flip test starts its tests through Aps5StartGuest on macOS, as a
  relinked guest does.

Co-authored-by: mugurc <[email protected]>
2026-10-25 16:02:42 +01:00
harisibrar1andClaude Opus 5.5 42a02f54f0 feat(libSceLibreSsl): report ASN1_STRING_to_UTF8 errors through the ASN.1 error queue as LibreSSL 2.5.4 does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 10:58:50 -04:00
simnJS c35855cd98 feat(libSceUsbStorage): pass the host's USB FAT and exFAT volumes through
List the FAT and exFAT volumes the host has mounted from USB mass-storage
devices (Linux mountinfo and sysfs, Windows volume IOCTLs and SetupAPI),
map each to /mnt/usb<id> and report mounts and unmounts to the registered
callbacks from a service thread that rescans the host once a second.
Device info, map requests and getdents scans follow the recovered records
of SharpProspero and shadPS4; unknown answers keep throwing.
2026-10-25 14:56:22 +00:00
Adrià FranchandClaude Sonnet 5.5 949a1e47ab docs(ajm): move the batch bounds debt line inside the Functional section
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 15:53:00 +01:00
JJenkx bd31542d50 fix(ajm): bound private batch job reads before execution 2026-10-25 15:52:55 +01:00
valenciana-nc 37ba4a9d2f fix(libkernel): reject ended threads in pthread_attr_get_np 2026-10-25 15:49:57 +01:00
roboterspinne 727939dd08 fix(relinker): reject an existing directory at any output path before writing
Only the main executable output was checked for being a directory. A
directory at a guest module, extra executable, registry, needed-library,
patch manifest, icon, desktop entry or diagnostics path failed only when
it was opened, in most cases after earlier outputs had been written.
checkOutputInputs now rejects an existing directory for every output
kind it checks, as 286cf28ec7 did for the main executable. Such runs
still exit 2, now before any output is written.
2026-10-25 15:44:18 +01:00
orezraeyandClaude Opus 5.5 b78627d354 fix(libkernel): fail the yield loop setter on a destroyed mutex as measured on a PS5
On PS5 firmware 13.60 pthread_mutex_setyieldloops_np and
scePthreadMutexSetyieldloops return EINVAL on a destroyed mutex, as the
other spin and yield loop calls already did here. The default counts
(2000 spins for an adaptive mutex, 0 otherwise, 0 yields) match.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:41:31 -03:00
orezraeyandClaude Opus 5.5 9925a9e401 fix(libSceAudioOut): fail a repeated sceAudioOut2Initialize and sceAudioOutInit as measured on a PS5
On PS5 firmware 13.60 a second sceAudioOut2Initialize returns 0x80268004,
also after sceAudioOutInit, and a second sceAudioOutInit returns
0x8026000e. sceAudioOutInit after sceAudioOut2Initialize still returns 0.
sceAudioOut2InitializeEx and sceAudioOut2LoInit keep returning 0; their
repeats were not measured.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:36:01 -03:00
Himansh Raj bc7c5c752d Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-25 20:00:48 +05:30
harisibrar1andClaude Opus 5.5 aebd8881d4 fix(libkernel): fail a write to a pipe without a reader with EPIPE on Windows
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 10:27:58 -04:00
orezraeyandClaude Opus 5.5 2d339842eb fix(libkernel): add 0x80020000 to any event fflags in sceKernelGetEventError as measured on a PS5
On PS5 firmware 13.60 sceKernelGetEventError returns 0x80020000 plus the
event's fflags in 32 bits for every non-zero fflags, including values
above 0xFFFF, where it used to throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:25:04 -03:00
Bram910andClaude Opus 5.5 32744645c4 fix(libSceNet): accept MSG_NOSIGNAL in send, sendto and sendmsg
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 15:21:43 +01:00
Maz 4e657b158e feat(libc): export the time_get facet vtable as data
Console libSceLibcInternal exports o4kt51-uO48 as a 104-byte STT_OBJECT;
titles that resolve the symbol as data need a zeroed 13-slot vtable like the
other facet vtables, not a missing import.
2026-10-25 15:20:04 +01:00
orezraeyandClaude Opus 5.5 92448b72f9 fix(libkernel): accept any block size and a null block in the system software version getters as measured on a PS5
On PS5 firmware 13.60 sceKernelGetProsperoSystemSwVersion and
sceKernelGetSystemSwVersion return 0 for every value in the leading size
field, keep it, write the string and the packed version, and return 0
without writing for a null block.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 11:19:52 -03:00
AZLisme 503a0efb3a test(libSceRudp): cover empty poll wait behavior 2026-10-25 22:11:20 +08:00
mantavisualandClaude Opus 5.5 0fd2e0ce9f feat(libSceIcu): implement the invariant character and version helpers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 16:09:56 +02:00
Adrià FranchandClaude Sonnet 5.5 f63b27bdaa feat(libkernel): implement getlogin
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-25 15:07:38 +01:00
Yunus Shaikh fc881b9259 Merge main into fix/libscenet-inet-text-rules
Main's #10706 removes the local declarations at the top of libSceNet's
Export.cpp, where this branch had added __inet_pton and __inet_ntop.
libkernel's Api.hpp, which Export.cpp includes, now declares both, so the
merge takes main's side there.
2026-10-25 07:07:33 -07:00
Yunus Shaikh 8be8dc83af Merge main into fix/libkernel-signal-handler-mask
Main's #10706 moves the declarations of exported functions and their types
into the libraries' public headers, and gives WaitForPendingInSet a
KernelTimespec timeout. The merge keeps this branch's DeliverUnblockedPending
and ChangeBlockedMask with main's KernelTimespec. It takes main's side of
the declarations in GuestSignalSets.cpp, whose setjmp and longjmp this
branch had added and libc's Api.hpp now declares. GuestSignalHandlerMask.cpp
includes the libkernel and libc public headers in place of its own
declarations and GuestSignalSet and GuestSigaction types, as the
public_headers audit requires.
2026-10-25 07:05:46 -07:00