Commit Graph
372 Commits
Author SHA1 Message Date
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
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
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
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
Adrià e4f5516fd6 Merge pull request #12974 from MarcZX10/feat/host-game-mode
feat(libkernel): opt-in host game mode request (APS5_GAME_MODE)
2026-10-30 06:36:04 +01:00
MarcZX10 2aa11861b9 docs(input): warn that a key shared with ShowPadStatus triggers both
A key bound to two actions triggers both. Since F9 is the built-in key
of ShowPadStatus, someone who moved Screenshot, TogglePerformanceOverlay
or another action to F9 also gets the controller status panel on each
press, and should rebind ShowPadStatus; the web configurator already
warns about shared keys.
2026-10-30 05:55:09 +01:00
MarcZX10 9ae43837fe docs(usage): state what runs while the pad status panel is hidden
The overlay section said the presentation does nothing for a hidden
panel. Each present and each video-out loop pass still takes a lock and
reads the clock to see whether the panel is wanted; with
ANYPS5_PAD_STATUS unset or 0 and no F9 press no controller state is
read, and the panel knows the controllers only from the first F9 press.
2026-10-30 05:55:09 +01:00
MarcZX10 9df2079a1a docs(input): list the ShowPadStatus action and its F9 default
The supported-actions paragraph names ShowPadStatus, links the
controller status panel and adds it to the keyboard-only actions; the
default bindings table gets its F9 row.
2026-10-30 05:55:09 +01:00
MarcZX10 886277c54b docs(usage): describe the controller status panel
The overlay section gains the panel: what a line shows (player slot,
controller type, SDL's battery class), that it is never permanent (4 s
after the last trigger), what triggers it (the ShowPadStatus key, and
with ANYPS5_PAD_STATUS=1 connects, disconnects, replacements and
battery drops), where it sits, that the system keyboard has priority,
and that battery readings depend on SDL, the operating system and the
controller.
2026-10-30 05:55:08 +01:00
Adrià 84e114e4eb Merge pull request #12715 from MarcZX10/feat/log-to-file
feat(libc): copy the runtime log into a file with ANYPS5_LOG_FILE
2026-10-30 05:51:34 +01:00
Adrià 0c9c5db748 Merge pull request #12690 from MarcZX10/feat/host-system-report
feat(agc): host system report and an actionable missing-Vulkan-feature message
2026-10-30 02:52:18 +01:00
milescovielloandClaude Opus 5.5 e2c1c305ff fix(agc): release texture cache entries before a budget-full allocation goes to host memory
DeviceMemoryType placed an image or device buffer in host memory up front
when VK_EXT_memory_budget showed the device-local heap without room, so the
texture-cache release that a driver refusal gets never ran. It now asks the
caches for the allocation plus the heap's overage first and keeps the
device-local type when they release that much, or when the budget read again
has room.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 00:05:44 +00:00
Adrià 7a225bb303 Merge pull request #12686 from MarcZX10/feat/pad-rumble-intensity
feat(libSceVideoOut): add ANYPS5_RUMBLE to scale or turn off host controller vibration
2026-10-29 23:46:17 +01:00
Dean 420b6a064e Merge pull request #12621 from Ragbie/fix/windows-defer-needed-runtime-modules
fix(relinker): defer the runtime modules another deferred module needs on Windows
2026-10-30 08:49:48 +13:00
MarcZX10 6bc9493c8e docs(usage): describe APS5_GAME_MODE
Say that it is off by default, what it asks for on Linux and macOS, that
GameMode's own configuration decides what changes, that Windows needs no
request, and how on, auto and invalid values behave.
2026-10-29 17:15:39 +00:00
Adrià 5454cd2e45 Merge pull request #11130 from imellag/perf/macos-mimalloc
feat(libs): let relinked macOS games opt into mimalloc
2026-10-29 12:58:23 +01:00
Dean 59d7cff571 Merge pull request #12263 from WhiteAssassins/feat/patch-catalog-validator
feat(tools): validate complete patch catalogs offline
2026-10-29 23:52:34 +13:00
Adrià f88c86bf6c Merge pull request #12262 from tkcm01/test/agc-overlay-commit-macos
test(agc): expect no commit charge on macOS
2026-10-29 07:45:08 +01:00
Adrià d9d07db7e5 test(libc): serialise the writers of each stream in the ANYPS5_LOG_FILE concurrency test
A pipe write is atomic only up to PIPE_BUF, 512 bytes on macOS, so three threads writing 3 KB lines into one pipe interleaved before the copy read them.
2026-10-29 05:57:30 +01:00
MarcZX10 a39bd37b21 docs(usage): describe saving the runtime log to a file with ANYPS5_LOG_FILE
State what the file receives and what it does not, that it is appended to
and has no size limit, the startup error for an unopenable path, line
atomicity and the ordering between the two streams, what a crash or kill
leaves, the cost of two threads and two pipes, the child-process and
load-exec cases, and that the Windows path was not run.
2026-10-29 05:57:24 +01:00
dantdmdarealguy df6354b0a8 docs(usage): drop the Linux execute permission sentence from --autorun
The relinker writes every Linux and macOS output with execute permission since ab94ee21d7, as the running section already says, so the --autorun row no longer attributes it to --autorun.
2026-10-28 21:19:30 -05:00
MarcZX10 6079276693 docs(usage): list the Vulkan items a GPU must offer and what the failure message says
Names each required extension and feature, and the one message that a
GPU lacking them gets: the GPU, its driver and Vulkan version, every
missing item, the other devices ANYPS5_GPU can select.
2026-10-29 02:07:11 +00:00
MarcZX10 693451271b docs(usage): say what the host report leaves out
Lists the forms that are replaced (paths, URLs, MAC addresses, the account,
host and home directory names) and warns that the values of the listed
variables are printed as set.
2026-10-29 02:07:11 +00:00
MarcZX10 8b66d79994 docs(usage): describe ANYPS5_HOST_REPORT and the sections of the host report
Says when it prints, that an invalid value stops the start, the order and
content of each section, what unavailable and the CPU check line mean, and
that the shader cache size counts at most 200000 files.
2026-10-29 02:07:11 +00:00
MarcZX10 fd05629af2 docs(input): point to ANYPS5_RUMBLE from the input mapping guide
Vibration is not bound in the mapping file; link the controller vibration strength section so readers of the mapping guide find it.
2026-10-29 02:06:36 +00:00
MarcZX10 c1fbba97ef docs(usage): describe the controller vibration strength setting
Explain ANYPS5_RUMBLE, which vibration paths it covers and which it leaves alone, and that it is a host-side comfort setting with no console counterpart.
2026-10-29 02:06:36 +00:00
Biologisten 315050d000 fix(audio): reject invalid APS5_PAD_SPEAKER_FALLBACK_DB values and read the gain once
A set-but-invalid value, including an empty one, a non-finite number, a
number outside -60 to 0 or trailing text, stops the title with an error
naming the variable and the value instead of silently keeping 0 dB. The
gain is parsed once when the AudioOut2 context is created, kept in the
context and passed to the mix loop, so the audio thread never reads the
environment.

The one-read rule is pinned end to end: a play that changes the variable
to a value that would stop the title after the context was created keeps
the parsed fold and never re-reads the environment.
2026-10-29 00:16:16 +01:00
Biologisten 84b5542fdc feat(audio): add controller speaker fallback override
Add APS5_PAD_SPEAKER_FALLBACK_DB for AudioOut2 controller-speaker ports
folded into the main mix when no controller speaker is present. The
default 0 dB keeps the existing unity mix; mute removes the fallback
copy so a title's own main-port copy is heard instead.
2026-10-29 00:16:16 +01:00
Evrim Cicek 74abb8ce1c fix(relinker): defer the runtime modules another deferred module needs on Windows 2026-10-29 02:09:01 +03:00
Dean d0e4b8a9dc Merge pull request #11623 from dantdmdarealguy/docs/usage-windows-base-0x400000
docs(usage): give 0x400000 as the Windows executable's preferred base
2026-10-29 12:07:48 +13:00
WhiteAssassins c6c35d1a53 fix(tools): reject duplicate catalog keys and nested patches 2026-10-28 12:54:06 -04:00
Emanuele 4c75091972 feat(libs): let relinked macOS games opt into mimalloc 2026-10-28 14:50:31 +01:00
Adrià 3b24c4739e Merge pull request #12092 from MarcZX10/docs/usage-macos-crash-report-import-audit
docs: correct the macOS modules, crash report threads and import_audit module statements in the usage guide
2026-10-28 14:47:27 +01:00
WhiteAssassins 1d7bdd81ca fix(tools): gate catalog validator test on Python 3.11 2026-10-28 02:18:26 -04:00