Commit Graph
402 Commits
Author SHA1 Message Date
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
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
roboterspinne 7e896cac7b docs(usage): list --strict-stubs and --strict-providers in the import audit options 2026-11-01 10:48:21 +01:00
Adrià e3642ec3fe Merge pull request #13912 from LeandroLP23/feat/progress-weekly-activity
feat(tools): show library functions implemented per day and in the last week
2026-11-01 09:40:10 +01: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
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 c1a477bfad docs(user): point the vibration section of INPUT_MAPPING at the identification pulse 2026-11-01 00:04:38 +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
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
LeandroLP23andClaude Opus 5.5 b799c1bfe3 feat(tools): show library functions implemented per day and in the last week
The libraries badge divides implemented by declared functions, so it drops
whenever a pull request declares many throwing exports at once, even while
implementations land daily. The history page now draws the daily change in
implemented functions, and a new badge-week.svg reports the gain over the
last 7 days, linked from the README status row.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 13:32:08 +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
MarcZX10 441a3eaef9 Merge remote-tracking branch 'upstream/main' into fix/pad-port0-connected-state 2026-10-31 06:53:56 +00:00
Adrià 2121f2a4c5 Merge pull request #13593 from MarcZX10/docs/user-2
docs(readme): unsupported states throw a C++ exception, usually runtime_error
2026-10-31 07:30:39 +01: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
MarcZX10 7c6e12bd6f docs: say that an empty ANYPS5_FREE_SPACE is unset on Windows 2026-10-30 23:49:25 +00:00
MarcZX10 bad2156d2c docs(user): state when an invalid ANYPS5_FREE_SPACE stops the title 2026-10-30 23:49:17 +00:00
MarcZX10 68a4689e62 Merge remote-tracking branch 'upstream/main' into fix/pad-port0-connected-state 2026-10-30 23:46:32 +00:00
Adrià 93f5331fd7 Merge pull request #13463 from notHaze/feat/configurable-mouse-stick
feat(input): add configurable mouse stick target
2026-10-30 22:50:29 +01:00
MarcZX10 7fd8859608 docs(USAGE): describe the PSN dialog notice
Add a section on ANYPS5_PSN_DIALOGS: which dialogs finish silently without
PlayStation Network, what show displays, how the notice takes input and how
often it appears, and what the other values do.
2026-10-30 18:49:59 +00:00
MarcZX10 731ce62e45 docs(user): explain ANYPS5_FREE_SPACE for save data 2026-10-30 18:48:57 +00:00
Adrià d09e7a46e9 fix(libScePad): resolve the merge with ShowPadStatus in the volume actions 2026-10-30 16:29:56 +01:00
MarcZX10 1b6f64dac9 docs(usage): describe the host volume, mute and focus mute
States that it is a host control and not a console behaviour, the steps and the curve, the bypass at the default, what is and is not covered, the stderr feedback, and the two variables.
2026-10-30 16:29:55 +01:00
MarcZX10 6a7f01c6ec docs(input): say that hotkeys stay out of the pad and that shared keys trigger both
The configuration file does not reject a key bound to two actions, so the volume hotkeys follow the rule of the existing ones.
2026-10-30 16:29:55 +01:00
MarcZX10 0f216bfc97 docs(input): add the volume and mute keys to the default bindings table
F5, F6 and F8 are used by no other default binding.
2026-10-30 16:29:55 +01:00
MarcZX10 b640ca66a3 docs(input): name the volume and mute actions
VolumeDown, VolumeUp and ToggleMute join the supported actions with their default keys and the keyboard-only rule.
2026-10-30 16:29:55 +01:00
Florent Combet 26d36e9645 feat(input): add configurable mouse stick target 2026-10-30 15:41:51 +01:00
MarcZX10 093761c2ec docs(readme): unsupported states throw a C++ exception, usually runtime_error (zh-CN)
Old claim: "Unsupported or unexpected states strictly throw std::runtime_error.
what() is printed to stderr and the process terminates."

What the code does: the code throws several exception types, not only
std::runtime_error. For example the input mapping throws std::invalid_argument
for a stick deadzone out of range, and an unimplemented export throws
std::runtime_error. An exception that nothing catches reaches the libc
terminate handler, which prints the exception's what() and aborts.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/InputMapping.cpp#L272
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1020
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1022
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/exception/Runtime.cpp#L76
2026-10-30 14:10:30 +00:00
MarcZX10 01a228e9d0 docs(readme): unsupported states throw a C++ exception, usually runtime_error (ru)
Old claim: "Unsupported or unexpected states strictly throw std::runtime_error.
what() is printed to stderr and the process terminates."

What the code does: the code throws several exception types, not only
std::runtime_error. For example the input mapping throws std::invalid_argument
for a stick deadzone out of range, and an unimplemented export throws
std::runtime_error. An exception that nothing catches reaches the libc
terminate handler, which prints the exception's what() and aborts.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/InputMapping.cpp#L272
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1020
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1022
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/exception/Runtime.cpp#L76
2026-10-30 14:10:30 +00:00
MarcZX10 69ca5e661f docs(readme): unsupported states throw a C++ exception, usually runtime_error (pt-BR)
Old claim: "Unsupported or unexpected states strictly throw std::runtime_error.
what() is printed to stderr and the process terminates."

What the code does: the code throws several exception types, not only
std::runtime_error. For example the input mapping throws std::invalid_argument
for a stick deadzone out of range, and an unimplemented export throws
std::runtime_error. An exception that nothing catches reaches the libc
terminate handler, which prints the exception's what() and aborts.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/InputMapping.cpp#L272
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1020
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1022
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/exception/Runtime.cpp#L76
2026-10-30 14:10:28 +00:00
MarcZX10 686c2f8aab docs(readme): unsupported states throw a C++ exception, usually runtime_error (es)
Old claim: "Unsupported or unexpected states strictly throw std::runtime_error.
what() is printed to stderr and the process terminates."

What the code does: the code throws several exception types, not only
std::runtime_error. For example the input mapping throws std::invalid_argument
for a stick deadzone out of range, and an unimplemented export throws
std::runtime_error. An exception that nothing catches reaches the libc
terminate handler, which prints the exception's what() and aborts.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/InputMapping.cpp#L272
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1020
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/General.cpp#L1022
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libc/src/exception/Runtime.cpp#L76
2026-10-30 14:10:27 +00:00
MarcZX10 ad071aa08f docs(usage): document APS5_NO_WGI for Windows controllers
Old claim: none; the variable was not documented in USAGE.md.

What the code does: in the VideoOutDriver constructor, on Windows only, the
DirectInput hint is always set to "0" and, when APS5_NO_WGI is present (an
empty value counts), SDL_HINT_JOYSTICK_WGI is set to "0" as well. Other
platforms do not read the variable.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp#L303
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp#L307
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp#L308
2026-10-30 14:09:30 +00:00
MarcZX10 b6655a0650 docs(usage): document APS5_NO_PAD_INPUT, which ignores keyboard and mouse
Old claim: none; the variable was not documented in USAGE.md.

What the code does: PadInput reads the variable (presence only, so an
empty value counts) and returns before any keyboard or mouse event is
handled. Keyboard and mouse bindings, the mouse stick and the window requests
(F11 fullscreen, F12 screenshot, F10 overlay) are all taken after that return,
so they stop too. Controller input and APS5_PAD_INPUT_FILE commands are not
on this path.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/PadInput.cpp#L318
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/PadInput.cpp#L321
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/PadInput.cpp#L326
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/PadInput.cpp#L328
2026-10-30 14:09:28 +00:00
MarcZX10 58b18a971e docs(usage): document ANYPS5_DISPLAY_INDEX for the window's display
Old claim: none; the variable was not documented in USAGE.md.

What the code does: initialDisplayIndex() returns 0 when the variable is
unset and otherwise parses it with strtol; the value must be the index of a
connected display (SDL_GetNumVideoDisplays()), and an empty value fails the
same check. The window is created with SDL_WINDOWPOS_CENTERED_DISPLAY of that
index. The error is "DisplayWindow: ANYPS5_DISPLAY_INDEX is not a connected
display index".

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/DisplayWindow.cpp#L28
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/DisplayWindow.cpp#L79
2026-10-30 14:09:27 +00:00
MarcZX10 eeb8b8b50a docs(usage): APS5_OUTPUT_RESOLUTION is the only host resolution override
Old claim: "AnyPS5 does not currently provide a global render-resolution
override", and APS5_OUTPUT_RESOLUTION was not documented.

What the code does: when APS5_OUTPUT_RESOLUTION is set to <width>x<height>,
configuredResolution() maps it to the 1080p class (width below 3840 and
height below 2160) or the 2160p class, and GetDisplayResolution() returns that
instead of the class of the display's current mode. outputStatus() reports
that value as the resolution of the video output status. An empty value is
unset; any other value that is not two positive integers joined by x or X
throws an error that names the variable.

Permalinks at b1b5353cfc:
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp#L54
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp#L526
https://github.com/boykopovar/AnyPS5/blob/b1b5353cfcee098ed17e3ba8a6e616bee97c9215/core/libs/prx/libSceVideoOut/src/Output.cpp#L24
2026-10-30 14:09:27 +00:00
MarcZX10 bfc7bbea94 docs(input): say that keyboard and mouse need a controller in controller mode
Points from the input mapping page to the controller connection section for
the rule that keyboard and mouse input reaches Player 1 only while a
controller is bound there under ANYPS5_PAD_PORT0_STATE=controller.
2026-10-30 14:03:09 +00:00
MarcZX10 fbbbeae15e docs(usage): describe ANYPS5_PAD_PORT0_STATE and the controller connection
Adds a section on the default behaviour, the controller mode and its 500 ms
hold, the rule for keyboard and mouse, the values accepted, and that only
port 0 and user 0 follow the controller.
2026-10-30 14:03:09 +00:00
Adrià cc7b82ac6f Merge pull request #12702 from MarcZX10/feat/overlay-pad-status
feat(overlay): show controller status on demand or on connect, disconnect and battery drop
2026-10-30 13:05:28 +01:00
Dean dad4f21493 Merge pull request #13064 from milescoviello/fix/agc-reclaim-before-budget-host
fix(agc): release texture cache entries before a budget-full allocation goes to host memory
2026-10-30 22:19:50 +13:00
Adrià a36ff7f47e Merge pull request #12584 from Biologisten/fix/audio-pad-speaker-mute
feat(audio): add controller speaker fallback override
2026-10-30 07:12:28 +01:00