Commit Graph
14017 Commits
Author SHA1 Message Date
GalaxyGamingFRandClaude Opus 5.5 813a7f2691 fix(tools): strip .prx suffix from stubgen module name
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 01:43:14 -07:00
Dean Galvin 6b4d3c8ae6 Revert "fix(libSceVideoOut): export unknown Onimusha import NID" (#5608)
The export turned YNw9Xk5iNWo from an unresolved import into a stub that throws. Dreaming Sarah (PPSA02929) calls it during start-up and now aborts with "YNw9Xk5iNWo not implemented" about 2 s in. Reverting until the function is implemented.
2026-10-14 21:40:28 +13:00
Yunus Shaikh d4709592e7 fix(agc): bind a read-only V# over the cached address space through the region that holds it
Since the cached address space keeps a read-only V# that only partly
overlaps its base regions (readsOverBase), a build's own regions can
overlap base regions. UploadPrepare merges overlapping own views, so a
merged region can begin before the base region that holds a view's first
byte. owner() still took whichever candidate began later, so Descriptor
bound such a view through one base region it does not fit:

  guest buffer view 0x1f0494592c+0x1b2190 exceeds its GPU owner
  0x1f04940000-0x1f04950000 (buffer 0, direct 1, mirror 0)

owner() now takes the range's end and prefers the candidate that holds
the whole range. When both or neither do, it keeps the previous rule.
Every caller already knew the end it passes.
2026-10-14 01:40:04 -07:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 c53c349095 fix(tools): count tests registered per configuration as run
Ninja Multi-Config writes one add_test per configuration and a final NOT_AVAILABLE one for the same name. The audit kept only the last, so every test executable was reported as never run.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:37:17 +05:00
mugurc 14e62d45d3 fix(libSceFiber): map fiber host stacks on hosts without MAP_STACK
AllocateHostStack passes MAP_STACK to mmap. The macOS SDK defines
MAP_NORESERVE but not MAP_STACK, so Export.cpp does not compile there.
Build the flags in a local variable and add MAP_STACK only where the
host defines it. Linux keeps the same flags.
2026-10-14 11:32:59 +03:00
Dean Galvin 34cca1b9f5 test(avplayer): give the paused-jump restart test an event callback
TestRestartAfterPausedJumpKeepsClockRunning created the player without events, so auto-start could start the source before the test enabled its streams by hand, and EnableStream then failed. With an event callback the player leaves starting to the test, as in TestUnsyncedVideoKeepsUpWithAudio.
2026-10-14 21:26:11 +13:00
Dean 872f523203 Merge pull request #5730 from oneandonlydean/fix/windows-forgotten-direct-sections
fix(libc): forget a released section's pages even while views remain on Windows
2026-10-14 21:20:25 +13:00
Ondra97 be9fbd5371 fix(release): include the enabled Tracy runtime 2026-10-14 10:12:29 +02:00
ducloc080202 fdf92154be refactor(libSceShare.native): drop duplicated exports 2026-10-14 15:11:42 +07:00
Dean Galvin 8cc20401a2 fix(libc): forget a released section's pages even while views remain on Windows
WindowsMappings keys each physical page's state (moved into the section,
saved bytes of an unmapped resident page) by the section handle value.
sceKernelReleaseDirectMemory frees the backing before it unmaps the views,
so ForgetSection ran while those views still existed and kept their slots.
After the views went, the slots stayed under a handle value that Windows
hands out again, and the next direct allocation whose section got that
value started with the old page state: its first mapping went to the
section instead of private memory, or received the old allocation's bytes.

Views now share ownership of their slot, ForgetSection drops every slot
of the section at once, and JIT shared memory forgets its section before
closing it too.
2026-10-14 21:11:38 +13:00
GalaxyGamingFRandClaude Opus 5.5 05357cbbf9 fix(progress): ignore member and qualified calls to stub wrappers
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 01:10:10 -07:00
Kikoarl 40e2019756 feat(ngs2): support custom submixer rack UserFx module 0x1d
Accept SCE_NGS2_CUSTOM_MODULE_ID_USER_FX (0x1d) on custom submixer racks alongside UserFx2 (0x1f). When configuring a custom rack voice, support voice control parameter SCE_NGS2_CUSTOM_VOICE_PARAM_USER_FX (0x40001d00) to install custom submixer UserFx callbacks with user data. Run legacy UserFx callbacks during custom voice rendering and update sample presence flags accordingly.

Fixes runtime abort in Void Terrarium (PPSA03061):
  terminate called after throwing an instance of 'std::runtime_error'
    what(): NGS2: custom module id 0x1d is not implemented
  FATAL: abort() (SIGABRT)

Closes #5055
2026-10-14 10:04:34 +02:00
Ondra97 f6b9938d73 fix(tools): retain summaries for decompressed traces 2026-10-14 09:58:57 +02:00
Claude f5d856d85e test(libkernel): take the summer time amount from the C runtime on Windows
A TZ variable does not set the UCRT's _dstbias, so after the system zone
of a CI runner without daylight saving it stays 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017iLxaSz4qjmirfqKZdhVQk
2026-10-14 07:56:03 +00:00
GalaxyGamingFRandClaude Opus 5.5 8e498e3f76 fix(ci): clear the stale label once a PR is rebased
Stale conflicts runs actions/stale with only-pr-labels: needs rebase.
actions/stale skips any PR without all only-labels before it looks at
remove-pr-stale-when-updated, so after a rebase removes needs rebase the
PR is never processed again and keeps its stale label for good. A step
before actions/stale now removes stale from open PRs that no longer
carry needs rebase.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 00:55:49 -07:00
GalaxyGamingFRandClaude Opus 5.5 62b2c30baa fix(ci): count only earlier open PRs in the intake limit
pr-intake runs once per opened PR, and each run lists every open PR by
the author. When an author opens several PRs within seconds, every run
sees all of them and closes its own, so a newcomer opening two PRs at
once loses both, and an author with one merge opening 21 loses all 21.
On opened events the limit now counts only lower-numbered PRs, so the
earliest ones stay open and only the PRs over the limit are closed.
Reopened events still count every open PR, as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 00:54:37 -07:00
boykopovar 31bfc4e869 Merge pull request #5717 from boykopovar/ci/truncate-long-release-notes
feat(ci): truncate long release commits list
2026-10-14 10:53:06 +03:00
AhmadandClaude Opus 5.5 cc3d25d636 feat(libkernel): implement sysctlnametomib for the sysctl names AnyPS5 serves
Map hw.model, hw.ncpu, hw.physmem, hw.realmem, kern.arandom and
kern.proc.pathname to their FreeBSD MIBs with the size handling of
FreeBSD's libc wrapper over name2oid, fail with ENOENT and ENAMETOOLONG
as name2oid does, and throw for null pointers, which FreeBSD's wrapper
dereferences, and for names sysctl does not serve.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:53:04 +03:00
boykopovar a48c00660e refactor(ci): refactor release notes prepare py v0.1.2 2026-10-14 10:52:14 +03:00
GalaxyGamingFRandClaude Opus 5.5 e052811006 fix(conventions): ignore code blocks when checking doc links
The doc-link check matched C++ lambdas such as `[](int a)` inside fenced
code blocks and inline code, reporting bogus missing targets. Links now
require non-empty link text, and links() strips fenced blocks and inline
code spans first. docs() also skips added lines that sit inside a fence
of the full file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 00:49:22 -07:00
p3nicillinandClaude Opus 5.5 435be9905d feat(libSceIme): open a panel-less IME fed by the host keyboard
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 08:49:04 +01:00
boykopovar 6d35b92ba6 feat(ci): truncate long release commits list 2026-10-14 10:48:45 +03:00
fdfawef324andCodex ca73d0fb32 test(agc): keep watched settle coverage when direct imports are unavailable
Co-Authored-By: Codex <[email protected]>
2026-10-14 03:48:28 -04:00
Dean 1209d37072 Merge pull request #5705 from oneandonlydean/feat/host-cpu-check
feat(libkernel): stop at start-up on a host CPU without the PS5's extensions
2026-10-14 20:47:35 +13:00
Nithishvelan M a648b55884 fix(libSceWebBrowserDialog): return error codes instead of throwing in initialize and terminate 2026-10-14 13:17:01 +05:30
Dean 327249d4e9 Merge pull request #5028 from nikowolf123/perf/structurizer-attempt-budget
perf(recompiler): iterate structurizer fixpoints in post-order and bound shared merge splitting growth
2026-10-14 20:45:02 +13:00
Ondra97 fd3c679604 fix(tools): retain source commit when Git status fails 2026-10-14 09:44:33 +02:00
Dean eac1e26e29 Merge pull request #4926 from nikowolf123/feat/structurizer-complete-fallback
feat(recompiler): structure every control-flow graph the structurizer refuses
2026-10-14 20:44:09 +13:00
Dean b27d18c3e4 Merge pull request #5457 from EagleBearerYS/fix/shader-hull-single-control-point-on-4222
fix(shader): lower hulls with one input or one output control point
2026-10-14 20:40:26 +13:00
Dean c698dae581 Merge pull request #4222 from Celegans12/fix/agc-tessellation-hull-bda-faults
fix(shader): record BDA faults in hull programs instead of refusing them
2026-10-14 20:39:55 +13:00
Dean 5ee94cf571 Merge pull request #4201 from Celegans12/feat/agc-tessellation-relative-patch-data
feat(agc): rebuild the hull's relative patch index when it is used as data
2026-10-14 20:39:33 +13:00
Maz eb1b9eca96 fix(agc): return 0 for out-of-range sceAgcInit without table lookup
Pointer-shaped calls match the #4808 console probe (success, no writes); selecting table 13 for those values was unsupported.
2026-10-14 11:38:52 +04:00
eljackjoestar-cmd 4a0489a7a9 fix(shader): map shader cache files on Windows 2026-10-14 11:32:10 +04:00
mazen 4832bd825c fix(agc): clamp sceAgcInit versions above 13 inline 2026-10-14 11:30:49 +04:00
mazen 9d412df7b5 fix(agc): fall back out-of-range sceAgcInit versions to table 13
Pointer-shaped NID kW3GLb7QfPg calls from public homebrew succeed on console; returning an error left those titles failing init after #4835.
2026-10-14 11:30:49 +04:00
Dean Galvin 83a268a867 feat(libkernel): stop at start-up on a host CPU without the PS5's extensions
Titles run natively, so a host CPU without an extension that compiled Zen 2 code uses faults with an illegal instruction deep inside a title (#3719: SHLX, BMI2). libkernel now reads CPUID and XCR0 when it loads on Linux and Windows, logs the host CPU's extensions and throws, naming the CPU and the missing extensions, before any title code runs.
2026-10-14 20:29:57 +13:00
Yunus Shaikh 187e5fc0ac fix(libkernel): commit a reserved host stack before protecting it
Guest threads run on host stacks that Windows reserves (0x210000 bytes
by default) and commits on demand. Resident Evil Village protects one
thread's whole host stack with 0xc2 at startup while its lowest 0xd000
bytes are still only reserved, so the Windows mprotect emulation threw.
When such a stack sat inside the arena bounds as a host region, the call
took the arena commit path and failed to split a placeholder that was
never one.

Commit the reserved pages of a host range before protecting it, and only
use the arena commit for ranges the arena owns.
2026-10-14 00:28:23 -07:00
Dean Galvin 3eb19d9f23 fix(agc): keep the saved guest bytes of units a fill or image copy does not cover
A fill turned into an image clear or an image copy invalidated the saved
guest bytes of every unit of each other image over its range. The flush
before it stores only the units it overlaps, so results still pending in
the other units lost their saved bytes, and storing them over memory
outside the write watch threw ("storing storage image results pending
over memory outside the write watch without the guest bytes saved before
them is not implemented").

Only the units over the filled or copied range lose their saved bytes now;
the others are compared with them at their store as before.
2026-10-14 20:27:02 +13:00
Alexej Szpevák c740935455 test(cli): cover RuntimeLayout file tree output
Add a unit test for the layout the relinker prints after a conversion:
the fixed header and library entries, extra executables in order, and
module paths merged into one sorted tree with directories marked and
duplicates collapsed.
2026-10-14 09:23:22 +02:00
p3nicillinandClaude Opus 5.5 f288daf6fe feat(libkernel): select on pipes on Windows
select now checks pipe descriptors on Windows with the readiness test poll
already uses, so a pipe next to a libSceNet socket no longer throws.
RetroArch (PPSA99169) selects on libmicrohttpd's wake-up pipe beside its
listening socket. guest_select now runs on Windows too.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 08:19:48 +01:00
Dean a3aeaf884b Merge pull request #5608 from hossiendehghan989/fix/videoout-unknown-nid-ynw9xk5inwo
fix(libSceVideoOut): export unknown Onimusha import NID
2026-10-14 20:17:13 +13:00
Dean 6f2ffb483a Merge pull request #4626 from mugurc/build/macos-rosetta-configure
build(macos): configure the full build for x86-64 under Rosetta
2026-10-14 20:16:53 +13:00
milescovielloandClaude Opus 5.5 71fd1c0e53 perf(agc): copy only nonzero pages before a watched import
An import that leaves its range watched copies the whole range first, so
that each page the import resolves can be compared with its bytes when
the window closes (#3874). Ghost of Tsushima (PPSA02225) maps and
imports 4.9 GB of direct memory at start-up, and that copy is the
largest allocation the title makes.

Pages that are all zero are no longer copied. Each page of the range
gets a slot, the index of its copy, or none for a page that was all
zero, and such a page is compared with a zero page. Every page is
compared with the same bytes as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 07:16:19 +00:00
p3nicillinandClaude Opus 5.5 1aaec9728d feat(libkernel): report RLIMIT_NOFILE through getrlimit
XPSemu (PPSA97358) queries RLIMIT_NOFILE at start-up in QEMU's
os_setup_limits and stopped on the unsupported resource. It reports the
descriptor count after which AnyPS5 fails with EMFILE: the C runtime's
8192 low-level descriptors on Windows and the host limit on Linux.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 08:12:33 +01:00
Dean 3152609030 Merge pull request #5454 from mohammad-alosta/feat/libc-swprintf-s
feat(libc): implement swprintf_s
2026-10-14 20:12:15 +13:00
TideOPL f37b02efcc perf(agc): store a DMA_DATA data fill larger than 64 KiB as a buffer fill
A DMA_DATA fill with an immediate value is resolved as a packet store,
which is limited to 64 KiB. A larger fill was refused there, so the
queue worker drained the device and Execute filled the memory on the
CPU. Such a fill now goes through the fill kernels' store path
(Driver::storeBufferFill, moved unchanged out of Driver::fillBuffer):
FillBuffer into the host import, with the same CPU fallback.
2026-10-14 08:05:02 +01:00
hossiendehghan989 5dc7111924 fix(libSceVideoOut): export unknown Onimusha import NID 2026-10-14 20:04:08 +13:00
Dean 78f1aea706 Merge pull request #5552 from Sam-mon7/fix/shader-cache-read-share-delete
fix(shader): share delete access when reading cache entries on Windows
2026-10-14 20:03:26 +13:00
ArjenS-LA 69375305f5 fix(relinker): reject collisions between generated outputs 2026-10-13 23:59:02 -07:00
Gjon Gojcevic c9ba43bfb7 feat(videoout): present PQ display buffers through an HDR10 swapchain
Detect HDR output on the host: on Windows the monitor showing the window
must run in HDR10 (DXGI IDXGIOutput6), and on every host the window's
Vulkan surface must offer a 10-bit VK_COLOR_SPACE_HDR10_ST2084_EXT
swapchain with VK_EXT_swapchain_colorspace and VK_EXT_hdr_metadata. The
monitor's luminance comes from DXGI; hosts that report none get 1000
nits peak and full frame, 0 nits black.

While HDR output is available, sceVideoOutGetOutputStatus reports
dynamic range 2 and flag bit 0, sceSystemServiceGetHdrToneMapLuminance
reports the monitor's luminance, and every open port's output mode
event fires when that changes. PQ display buffers are presented
unchanged through an HDR10 swapchain with HDR metadata; any other
display buffer switches back to the SDR swapchain. Without HDR output
the PQ to SDR conversion uses the peak the title was last told as its
white level.

AI-assisted: yes
2026-10-14 02:55:21 -04:00