Step by step
Setup guides
How to use AnyPS5
AnyPS5 is a command-line tool. You convert a game's executable once, put AnyPS5's system libraries next to it, and start the result like any other program. This page explains the whole workflow; the platform guides walk through every command.
The AnyPS5 workflow at a glance
-
Download a matching pair
The relinker and the system-library archive for your operating system, both from the same release.
-
Arrange the input
Put the game's executable in a folder and its bundled modules in a
sce_module(orsce_modules) folder beside it. -
Convert
Run the relinker: add
--windowsfor a Windows program and--to-intelon an Intel processor. It also converts the bundled modules. -
Build the runtime folder
Next to the new program: a
libsfolder with AnyPS5's libraries and anapp0folder with the converted modules and the game's data. -
Run and read the first error
AnyPS5 stops with a clear message when a game needs something that is not implemented yet. That message is what developers need in a report.
Choose your platform
Step by step
AnyPS5 on Linux
/dev/udmabuf permissions and the v0.1.1 audio issue.
System requirements
| Processor |
x86-64. AMD processors run the game code as it is. Intel processors need --to-intel, which
cannot rewrite instructions a game generates while running, so some games need an AMD processor.
|
|---|---|
| Graphics | A Vulkan 1.1 device with graphics and compute queues and display output. A dedicated card is preferred over integrated graphics when both exist. |
| Operating system | Windows or Linux, x86-64. The project's own tests use Windows 11 and several Linux distributions; Linux with Intel graphics has not been verified yet. |
| Memory | On Windows, the direct memory a game allocates (up to 13,824 MiB per title) is committed in full right away, so installed RAM plus the page file must cover it. |
| Reference result | Dreaming Sarah runs at 60 FPS on a GTX 1050 Ti with an i5-7500, and at 36 FPS on Intel HD Graphics 620 with an i5-7200, both on Windows. |
Source: USAGE.md and COMPATIBILITY.md.
Relinker options: v0.1.1 vs the main branch
The project's USAGE.md documents the main branch, which already has options that the v0.1.1 release does not. This table shows which ones the release understands, checked against its argument parser. Invoking the relinker without arguments prints its usage line.
| Option | What it does | In v0.1.1 |
|---|---|---|
--windows | Produce a Windows PE executable. Without it the output is always a Linux ELF. | Yes |
--to-intel | Rewrite supported AMD-only CPU instructions so the program runs on Intel processors. | Yes |
--windows-gui | Use the Windows GUI subsystem instead of a console window. Requires --windows. | Yes |
--windows-diagnostics | Add startup dependency diagnostics. Requires --windows. | Yes |
unused-filter=0|1|2 | How aggressively unused system imports are filtered. Default 0 keeps all of them. | Yes |
--registry | Write a .registry.json file per converted file, used by the import audit tool. | Yes |
--rpath <path> | Where the program looks for the system libraries. Default: '$ORIGIN/libs'. | Yes |
--autorun | Run the program right after conversion and print its exit code. | Yes |
--macos | Produce an x86-64 macOS program (runs under Rosetta on Apple silicon). | No, main branch only |
--to-rosetta | Like --to-intel, plus fixes for instructions Rosetta lacks. | No, main branch only |
--sce-module-path <path> | Read the bundled modules from another parent folder. | No, main branch only |
--module-dir <dir> | Also convert modules from an extra folder, such as Unity plugins. | No, main branch only |
Debugging flags such as --skip-sce-module, --skip-syscall-check and
--lazy-binding are deprecated; the documentation warns that programs converted with them are extremely
unstable.
Building AnyPS5 from source (advanced)
You only need this to test changes that are not in a release yet, such as the Linux audio fix. The relinker alone needs CMake, Ninja and a C++20 compiler, and builds on Linux, Windows and macOS:
cmake -S . -B build-relinker -G Ninja -DCMAKE_BUILD_TYPE=Release -DANYPS5_RELINKER_ONLY=ON
cmake --build build-relinker --parallel The full build, which also produces the system libraries, needs the git submodules, CMake 3.22.1 or newer and GCC. On Windows only MinGW-w64 GCC 15.2.0 (WinLibs, x86_64-ucrt-posix-seh) is supported. On Linux, SDL needs the PipeWire, PulseAudio or ALSA development packages, otherwise configuration fails.
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
cmake --build build --parallel
cmake --build build --target libs --parallel
The libraries end up in build/core/libs/libs. A self-built Windows libs folder also needs
libgcc_s_seh-1.dll, libstdc++-6.dll and libwinpthread-1.dll from the
toolchain's mingw64\bin. Full details: BUILD.md.
Controllers, keyboard and mouse
Controllers that SDL recognises work out of the box, including Xbox-style and PlayStation pads with analog sticks and triggers. On an Xbox layout, A/B/X/Y act as Cross/Circle/Square/Triangle. The first recognised controller is used.
Keyboard and mouse have built-in bindings. To change them, create anyps5-input.ini next to the converted
program, one Action = Type:Value per line:
Cross = KEY:Space
Square = MOUSE:Left
R2 = MOUSE:Right
LeftStickUp = KEY:W
LeftStickDown = KEY:S
LeftStickLeft = KEY:A
LeftStickRight = KEY:D
ToggleFullscreen = KEY:F11 Actions you do not list keep their built-in bindings. The full list of actions is in INPUT_MAPPING.md.