Commit Graph
378 Commits
Author SHA1 Message Date
Dean 2238042b81 Merge pull request #15705 from oneandonlydean/rr/pr3-gpu
feat(run-report): count milestones, frames, GPU and shader diagnostics
2026-11-05 21:24:14 +13:00
Dean 1fe3ee8d1a Merge pull request #14235 from oneandonlydean/rr/pr2-writer
feat(run-report): write the run report when a game ends
2026-11-05 21:24:09 +13:00
Dean Galvin 0003ec72c7 Merge rr/pr2-writer into rr/pr3-gpu 2026-11-04 20:21:16 +13:00
Dean Galvin b5f5c7fd1f Merge branch 'main' into rr/pr2-writer 2026-11-04 20:19:15 +13:00
Dean Galvin 065c29f6c9 docs(relinker): the deferred sweep is best effort 2026-11-04 03:35:57 +13:00
Dean Galvin 29178b2917 fix(relinker): start the deferred modules others depend on at the first load of any deferred module
A deferred module that only another deferred module names (PSNCommon, needed by
PSNCore) started after the plugins that use it (SPFXUnityPlugin) and crashed
Soul Hackers 2 on Windows. The first title load of any deferred module now starts
every deferred module some module depends on, in dependency order, with that
load's start arguments, and logs the sweep. Boot is unchanged.
2026-11-04 03:29:14 +13:00
Dean Galvin 62aec71ad8 fix(relinker): start what a deferred module the executable needs depends on, and log each deferred start
On Windows a module the executable needs or imports from stays deferred, but its
dependencies were deferred too and started only when the title loads it, so a title
that calls it first ran them uninitialised (Soul Hackers 2, #15370 rerun). They start
at startup again, as on main. The loader prints one line per deferred start.
2026-11-04 02:36:53 +13:00
Dean Galvin f17fd26885 Merge commit '4f41f4c375f5abb487dbd184fbc150f31994d762' into HEAD
# Conflicts:
#	docs/dev/debt/relinker.md
2026-11-03 21:17:37 +13:00
Dean abe492bfea Merge pull request #12793 from Tehshortbus/feat/entitlement-unlisted-label-log
feat(libSceNpEntitlementAccess): name each add-on a title asks for that the entitlements file does not list
2026-11-03 21:10:09 +13:00
Dean 7af9b1c691 Merge pull request #14139 from JJenkx/fix/relinker-absent-unused-dependency
fix(relinker): optionally leave out a module dependency nothing provides or imports from on Linux
2026-11-03 21:08:25 +13:00
Dean bd620b35b5 Merge pull request #15004 from JJenkx/fix/trace-unlabeled-imports-20261102
fix(libc): infer missing call trace library labels
2026-11-03 18:13:10 +13:00
Dean Galvin 2cdb4d40d4 fix(relinker): start a deferred module's deferred dependencies before it on Windows
Since #12621 a Windows runtime module that another runtime module needs is deferred instead of started at boot, but loading a deferred module only started that module. A Unity plugin such as SPFXUnityPlugin that calls into a deferred module it needs (Il2CppUserAssemblies in Media/Modules) ran against code whose initializers had never run, and PPSA03743 crashed about 2.6 s in.

A deferred module's initialization table now lists the deferred modules it depends on (names, after the initializer array, behind a magic number so older output reads as having none). DynamicLoader starts those first, transitively and once each through the existing per-module state, with the start arguments of the load that began it, then starts the module itself. The module start result stays the module's own. Boot still starts no deferred module.

Linux is unchanged: its deferred modules still start only when loaded.
2026-11-03 16:03:33 +13:00
Dean Galvin d63b675177 fix(relinker): reapply the Windows deferral of runtime modules another deferred module needs (#12621)
Reapplies the code, tests and USAGE.md change of 420b6a064e (#12621 by Ragbie), which commit 987ebe9855 (#15360) reverted because Soul Hackers 2 (PPSA03743) crashed on Windows: SPFXUnityPlugin calls into Il2CppUserAssemblies, which #12621 defers, and loading a deferred module did not start the deferred modules it needs. The next commit makes the loader start them, so the deferral and the start come back together.
2026-11-03 16:03:33 +13:00
Dean Galvin 987ebe9855 revert(relinker): defer the runtime modules another deferred module needs on Windows (#12621)
This reverts the code, tests and USAGE.md change of commit 420b6a064e
(#12621). The docs/dev/debt/relinker.md line is left for the follow-up
that brings the deferral back with dependency start, to keep a running
batch that edits the same file valid.

Soul Hackers 2 (PPSA03743) stops about 2.6 s into boot on Windows with an
access violation on UnityGfxDeviceWorker inside SPFXUnityPlugin.prx since
this change. klosixgaming-arch bisected main's merge commits to 420b6a064e
and confirmed that undoing its dependency filter makes the title boot again
(https://github.com/boykopovar/AnyPS5/pull/12621#issuecomment-6587462742).

SPFXUnityPlugin (Media/Plugins) calls into Il2CppUserAssemblies
(Media/Modules). With #12621 that dependency is deferred, and loading a
deferred module does not start the deferred modules it needs, so it is
never started. The revert restores the previous Windows behaviour, where a
module another module needs starts at startup.
2026-11-03 09:51:50 +13:00
Dean aa0ea9f75c Merge pull request #14384 from Serph91P/fix/14322-audit-provider-origin
fix(tools): retain guest provider origin in import audit
2026-11-03 08:49:23 +13:00
Dean Galvin 0436cebf95 Merge commit 'a4eca2a056bf3bbbec98ab42e9d28163e4ea9cb8' into HEAD
# Conflicts:
#	core/libs/prx/libc/CMakeLists.txt
2026-11-03 06:36:13 +13:00
Tehshortbus d84ef9b612 Merge remote-tracking branch 'origin/main' into feat/entitlement-unlisted-label-log 2026-11-02 08:04:16 -08:00
Dean 46622fff7c Merge pull request #12752 from MarcZX10/feat/language-auto
feat(libSceSystemService): take the console language from the host with ANYPS5_LANGUAGE=auto
2026-11-03 02:39:32 +13:00
Dean a2583610de Merge pull request #11899 from edubox/feat/playgo-unlisted-chunk-list
feat(playgo): accept a chunk id list for dumps without metadata
2026-11-03 01:28:11 +13:00
Dean da0f097c78 Merge pull request #11107 from AdnanKhan-ak47/feat/relinker-lower-bzhi-bextr
feat(relinker): lower BZHI and BEXTR under --to-rosetta
2026-11-02 23:26:58 +13:00
Dean 36564b6b4f Merge pull request #10970 from AdnanKhan-ak47/feat/relinker-lower-bls
feat(relinker): lower BLSI, BLSMSK and BLSR under --to-rosetta
2026-11-02 23:26:20 +13:00
JJenkx 851525c96b fix(libc): infer missing call trace library labels 2026-11-02 04:12:56 -05:00
Dean Galvin c0d15de41b Merge commit '88e804b0a7df1f1ac373a9e2f72fb378d925fdd4' into HEAD
# Conflicts:
#	docs/dev/debt/libc.md
2026-11-02 21:07:04 +13:00
Dean f03f724901 Merge pull request #14368 from roboterspinne/docs/usage-import-audit-strict-options
docs(usage): list --strict-stubs and --strict-providers in the import audit options
2026-11-02 11:45:06 +13:00
Dean 8d16af3c57 Merge pull request #11137 from kaiffeetasse/contrib/8624-sdk-syscall6-inline-stub
fix(relinker): trap the inlined SDK __syscall6 stubs
2026-11-02 10:49:26 +13:00
Dean Galvin d6f1eccfe2 revert(agc): keep driver pipeline caches and costly compute pipeline binaries across updates (#13931)
This reverts commit d8b60b46ed, reversing
changes made to d94fad17de.
2026-11-02 08:24:24 +13:00
Serph91P 62ed30d6f1 fix(tools): retain guest provider origin in import audit
Resolve guest providers separately from host exports, require matching
exports and resolution edges, and prefer exact filenames before suffix
fallback. Preserve real host gaps and import reference counts.

Add synthetic CLI regressions and clarify named module classification.

Fixes #14322
2026-11-01 10:59:22 +00:00
liskeeeandClaude Opus 5.5 5c1cac4112 fix(agc): disable pipeline binaries with outdated wrapping layers
Check the enabled layers before querying pipeline binary features. A
validation or gfxreconstruct layer older than Vulkan 1.3.294 wraps
handles but passes the extension's commands to the driver unchanged, so
keep the driver pipeline cache path there and when enumeration fails.
Cover the layer decisions with a fake enumerator.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:56:07 +01:00
liskeeeandClaude Opus 5.5 f1b0dbbf5d fix(agc): retain driver cache fallback after binary capture failures
A costly build whose binaries cannot be extracted or stored, and a
rejected capture build, now leave a capture-failure marker, so later
runs build that recipe through the driver cache instead of repeating a
capture build with a null pipeline cache. Lowering the time threshold
does not retry these markers; a driver change does. Existing
below-threshold markers stay compatible and retryable.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:56:06 +01:00
liskeeeandClaude Opus 5.5 0c572f1c25 feat(agc): persist costly compute pipeline binaries
Capture costly compute builds and restore matching recipes after checking
full recipes, driver fingerprints and Vulkan compatibility keys. Add size
and time thresholds, opt-out, atomic persistence and corruption/rejection
fallback.

Remember below-threshold recipes in separate files so competing decisions
cannot overwrite captured binaries. Prefer saved binaries and retry
capture when the time threshold is lowered.

Cover compatibility, fallback, deterministic competing writers and
cross-process capture, restore and corruption.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:56:06 +01:00
liskeeeandClaude Opus 5.5 8413207b8e fix(agc): preserve driver pipeline caches across source updates
Keep driver blobs outside source-version cleanup and import compatible
legacy caches. Persist equal-size content changes and retry incomplete
snapshots without replacing the previous file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-01 11:56:06 +01:00
Adrià e67cc81869 Merge pull request #13926 from dr-hoseyn/feat/relinker-dry-run
feat(relinker): validate conversions without writing outputs
2026-11-01 11:50:43 +01:00
Dean Galvin 0e3bb2c125 Merge rr/pr2-writer into rr/pr3-gpu
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
#	core/shader/recompiler/Recompiler.cpp
#	docs/dev/debt/libc.md
2026-11-01 22:52:36 +13:00
roboterspinne 7e896cac7b docs(usage): list --strict-stubs and --strict-providers in the import audit options 2026-11-01 10:48:21 +01:00
Dean Galvin a6bb84be17 Merge main into rr/pr2-writer
# Conflicts:
#	docs/dev/debt/libc.md
2026-11-01 21:13:14 +13:00
Dean Galvin fd4f6c74d9 feat(run-report): count milestones, frames, GPU and shader diagnostics
The run report now records how far a run got (loaded, started, first draw,
first present), the frames presented and the average frame rate, the selected
GPU, the number of shaders compiled, failed and served from the cache, the
instructions the shader recompiler could not translate, the guest image
formats looked up or rejected, and the descriptor kinds that shaders bind.
The counters are relaxed atomics and are only touched while a report is being
collected. The window system's request to quit is recorded as the reason a run
ended.
2026-11-01 17:15:09 +13:00
MarcZX10 9f06873420 docs(usage): add the FPS LIMIT line to the overlay's detailed page 2026-11-01 01:49:57 +00:00
MarcZX10 9149a5a426 docs(usage): say how the frame limit meets flip pacing and the present modes
The limit only lowers the rate below the output's refresh, delays no title
that is already slower, does not burst after a stall, sleeps then spins,
handles window events between flips, can show uneven refresh counts under
fifo, and is a host choice.
2026-11-01 01:49:57 +00:00
MarcZX10 52522eabc3 docs(usage): document ANYPS5_FPS_LIMIT
States the accepted range, that the title's flip completes at the limited
rate and that the title is not told, that 0, empty and unset mean no limit,
and that any other value stops the game at its first flip with an error that
names the variable.
2026-11-01 01:49:57 +00:00
Dean Galvin 5769999282 feat(run-report): write the run report when a game ends
A run of a converted game writes anyps5-report.json when it ends through
exit or _exit (or the entry returns): the build revision, the game, the
machine, and the unimplemented functions that were called. It is on by
default; --aps5-report=off or APS5_REPORT=0 turns it off. Every text value is
filtered for user names, host names, addresses and account numbers. Runs that
crash, abort or are killed write no report yet; milestones, frame counts and
shader and image lists are marked as not collected.
2026-11-01 13:55:14 +13:00
Kai Laue 537c76fc9b fix(relinker): trap the inlined SDK __syscall6 stubs
Recognize the inlined __syscall6 wrappers of ps5-payload-dev SDK libc/mount.c (mount, nmount, unmount) under --trap-sdk-syscall-stubs, with the four-byte syscall number immediate masked so an SDK build that renumbers the call still matches. The three wrappers differ in argument preparation, so each sequence is matched separately.

Observed in ftpsrv v0.21.1 (0x709a, 0x70ec, 0x713c) and websrv v0.35 (0xae6a, 0xaebc, 0xaf0c). Related: issue #8624, open draft PR #8729 covers mount only.
2026-11-01 01:17:20 +01:00
MarcZX10 3d4260ea80 docs(user): describe the controller identification pulse in USAGE
Adds the ANYPS5_PAD_IDENTIFY section after the vibration strength
section: the modes, the pattern per player, the quiet window, what
happens when the game rumbles, the ANYPS5_RUMBLE scale, the no-rumble
and keyboard cases, the invalid-value error, and that the pulses are a
host-side choice that has not been measured on hardware.
2026-11-01 00:04:38 +01:00
JJenkxandClaude Opus 5.5 5461bdff9c fix(relinker): match imports by module and leave unavailable dependencies out only on request
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 18:52:32 -04:00
Adrià 0836dfdf4f Merge pull request #13701 from MarcZX10/feat/psn-unavailable-dialogs
feat(libSceIme): show a notice when PSN-only system dialogs open
2026-10-31 21:05:21 +01:00
Adrià 3197f0ad06 Merge pull request #13705 from MarcZX10/fix/pad-port0-connected-state
feat(libScePad): report port 0 as connected only while its controller is present, opt-in with ANYPS5_PAD_PORT0_STATE
2026-10-31 20:50:35 +01:00
dr-hoseyn b2343e91ec feat(relinker): add conversion dry runs 2026-10-31 16:29:20 +03:30
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
MarcZX10 441a3eaef9 Merge remote-tracking branch 'upstream/main' into fix/pad-port0-connected-state 2026-10-31 06:53:56 +00:00
Adrià 3d1330179a Merge pull request #13586 from MarcZX10/docs/user-1
docs(usage): document APS5_OUTPUT_RESOLUTION and three undocumented switches
2026-10-31 05:59:47 +01:00
MarcZX10 5b7ba8484a Merge remote-tracking branch 'upstream/main' into feat/host-free-space
# Conflicts:
#	core/libs/prx/libSceSaveData.native/Export.cpp
2026-10-31 00:26:47 +00:00