Commit Graph
384 Commits
Author SHA1 Message Date
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
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
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