The AnyPS5 workflow at a glance

  1. Download a matching pair

    The relinker and the system-library archive for your operating system, both from the same release.

  2. Arrange the input

    Put the game's executable in a folder and its bundled modules in a sce_module (or sce_modules) folder beside it.

  3. Convert

    Run the relinker: add --windows for a Windows program and --to-intel on an Intel processor. It also converts the bundled modules.

  4. Build the runtime folder

    Next to the new program: a libs folder with AnyPS5's libraries and an app0 folder with the converted modules and the game's data.

  5. 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 Windows

PowerShell commands, the runtime folder, and fixes for errors 193 and 126 and for memory errors.

Step by step

AnyPS5 on Linux

Terminal commands, the runtime folder, /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:

Relinker only
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.

Full build with system libraries
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:

anyps5-input.ini
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.