How to use AnyPS5 on Windows and Linux

AnyPS5 has no graphical interface. You run one command to convert the executable, put three things in one folder, and start the result like any other program.

Checked against the upstream repository on Oct 11, 2026.

Before you start

  • A 64-bit x86 PC running Windows or Linux. ARM machines are not a target, apart from the experimental Rosetta path on Macs.
  • A Vulkan 1.1 GPU driver with graphics and compute queues. AnyPS5 prefers a discrete GPU over an integrated one.
  • The two release files for your OS: the relinker and the matching library archive from v0.1.1. See the download guide.
  • A clean ELF executable of the title, with its bundled modules in sce_module/, sce_modules/ or prx/ next to it. A SELF container is rejected with an error.
input folder
source/
    input.elf
    sce_module/
        <bundled ELF modules>
About game files

AnyPS5 does not include or download games, and this guide does not cover dumping or decrypting them. Use only software you are legally entitled to use. If you just want to see the toolchain work, the official compatibility list includes a public homebrew, DOOM Shareware for PS5.

Command builder

Choose your setup and copy the command. Everything runs in your browser; nothing is uploaded.

Target system
Processor
Extras
PowerShell
Resulting folder

    Windows, step by step

    1. Download the two files

      From the latest release, get relinker-v0.1.1.exe and prx-windows-v0.1.1.zip. Put them in an empty working folder with a plain ASCII path, such as C:\anyps5.

    2. Prepare the input

      Create a source folder inside it containing the clean ELF and its sce_module folder, as shown above.

    3. Run the relinker

      Open PowerShell in the working folder:

      PowerShell
      .\relinker-v0.1.1.exe --windows source\input.elf app.exe

      On an Intel processor, add --to-intel:

      PowerShell · Intel CPU
      .\relinker-v0.1.1.exe --windows --to-intel source\input.elf app.exe

      The relinker prints a Guest module: line for each bundled module it converts, and writes them under app0\. Exit code 0 means success; 2 means the conversion failed and the reason is on stderr.

    4. Unpack the system libraries

      PowerShell
      Expand-Archive prx-windows-v0.1.1.zip -DestinationPath .

      You should now have a libs folder next to app.exe, containing .prx files and three MinGW DLLs.

    5. Add the title's resources and run

      Copy the title's remaining files into app0\, keeping their structure, then start the program:

      PowerShell
      .\app.exe
    Check your page file

    On Windows a title's direct memory, up to 13,824 MiB, is committed in full when it is allocated. If installed RAM plus page file cannot cover it, the program stops with create direct memory backing of 0x… bytes. Enlarge the page file or close other applications.

    Linux, step by step

    1. Download the two files

      Get relinker-v0.1.1 and prx-linux-v0.1.1.zip from the latest release.

    2. Run the relinker

      bash
      chmod +x relinker-v0.1.1
      ./relinker-v0.1.1 source/input.elf app.elf

      Linux ELF is the default output, so no format flag is needed. On an Intel processor:

      bash · Intel CPU
      ./relinker-v0.1.1 --to-intel source/input.elf app.elf
    3. Unpack the system libraries

      bash
      unzip prx-linux-v0.1.1.zip
    4. Give yourself access to udmabuf

      With Mesa and other drivers that import dma-buf memory (not the NVIDIA proprietary driver), shared memory goes through /dev/udmabuf. Many distributions restrict it to the kvm group:

      bash
      sudo usermod -aG kvm $USER   # then log out and back in
    5. Add resources and run

      Copy the title's remaining files into app0/, then:

      bash
      chmod +x app.elf
      ./app.elf

    Upstream currently lists “Linux with a hardware GPU” as not verified in its compatibility notes, so expect rough edges and report what you find.

    macOS (experimental)

    There are no macOS files in release v0.1.1. You can build the relinker yourself (see relinker-only build) and ask it for a Mach-O executable:

    zsh
    ./relinker --macos --to-rosetta source/input.elf eboot   # Apple silicon
    ./relinker --macos --to-intel source/input.elf eboot     # Intel Mac

    The output is x86-64 and runs under Rosetta on Apple silicon. The relinker-only build does not produce the system libraries, and the official compatibility table has no macOS column, so treat this as a path for contributors rather than players.

    Relinker options

    The syntax is relinker [options] <input.elf> <output>. There is no --help; running it with no arguments prints the usage line.

    OptionWhat it does
    --windowsProduce a Windows PE executable. Without it the output is a Linux ELF, whatever the file name.
    --macosProduce an x86-64 Mach-O executable with bundled modules as Mach-O libraries. Cannot be combined with --windows.
    --to-intelConvert supported AMD-only instructions in the executable and bundled modules. Stops with an error on anything it cannot convert.
    --to-rosettaEverything --to-intel does, plus lowering instructions Rosetta lacks. Cannot be combined with --windows.
    --windows-guiUse the Windows GUI subsystem instead of a console window. Needs --windows.
    --windows-diagnosticsInclude start-up dependency diagnostics in the Windows output. Needs --windows.
    unused-filter=0|1|2How aggressively unused imports are filtered. 0 keeps everything (default), 1 filters unused non-PLT imports, 2 is strict and compacts the PLT. Written without leading dashes.
    --registryWrite a <output>.registry.json next to the executable (and one per converted module) for the import audit tool.
    --rpath <path>Where the program looks for system libraries. Default: $ORIGIN/libs, i.e. a libs folder beside the executable.
    --autorunRun the result straight after conversion, print its exit code and wait for Enter.
    --sce-module-path <path>Parent folder that contains sce_module/, sce_modules/ or prx/, if they are not beside the input ELF.
    --module-dir <dir>Also relink ELF modules from another directory under the module parent, for example Unity plugins in Media/Plugins. Repeatable.

    Four older flags, --skip-sce-module, --exclude-sce-module, --skip-syscall-check and --lazy-binding, are deprecated. Upstream warns that programs relinked with them are extremely unstable and that they exist only for debugging.

    Source: docs/user/USAGE.md.

    Environment variables

    Set these before starting the converted program, not the relinker.

    VariableEffect
    ANYPS5_SYSTEM_FONTSFolder with system fonts. Default: anyps5-fonts/ beside the executable.
    ANYPS5_LANGUAGEConsole language number the title is told about. Default: 1 (English, United States).
    ANYPS5_GPUPart of a Vulkan device name, to run on a specific GPU instead of the first suitable one.
    ANYPS5_INPUT_CONFIGPath to an input mapping file, instead of anyps5-input.ini beside the executable.
    APS5_STORE_AT_FLIPSet to 1 to store pending GPU results at every display flip. Works around stale-memory glitches at a performance cost.
    APS5_PAD_INPUT_FILEAbsolute path to a command file for scripted controller presses. Meant for automated test runs.
    APS5_THREAD_PRIORITYoff (default), high or rt. Raises the priority of the graphics driver threads above the title’s threads.

    System fonts

    Titles that open the console's system font sets need font files in anyps5-fonts/. If you do not have the console's own fonts, AnyPS5 accepts openly licensed substitutes when present: NotoSans in Light, Regular, Medium and Bold (plus italics), NotoSansMono, NotoSansThai and NotoSansCJK in the same four weights. Without either, those titles show no text.

    Language codes

    Values accepted by ANYPS5_LANGUAGE. Any other value stops the title at its first language query.

    CodeLanguageCodeLanguage
    0 Japanese 16 Polish
    1 English (United States) 17 Portuguese (Brazil)
    2 French 18 English (United Kingdom)
    3 Spanish 19 Turkish
    4 German 20 Spanish (Latin America)
    5 Italian 21 Arabic
    6 Dutch 22 French (Canada)
    7 Portuguese (Portugal) 23 Czech
    8 Russian 24 Hungarian
    9 Korean 25 Greek
    10 Chinese (Traditional) 26 Romanian
    11 Chinese (Simplified) 27 Thai
    12 Finnish 28 Vietnamese
    13 Swedish 29 Indonesian
    14 Danish 30 Ukrainian
    15 Norwegian

    Choosing a GPU

    At start-up the program prints Physical device candidate lines with the name of each Vulkan device. Set ANYPS5_GPU to any part of the name you want, case-insensitively. If nothing usable matches, start-up fails and the error lists the available names.

    Check a title's imports before launching it

    If you have the repository checked out, tools/import_audit.py tells you which system functions a converted title imports and whether the built libraries provide them. It needs only Python 3.

    bash
    relinker --registry source/input.elf app.elf
    python3 tools/import_audit.py app.registry.json app.*.registry.json --libs build/core/libs/libs --modules source/sce_module

    --registry writes one JSON file for the executable and one per converted module; pass all of them. Each import lands in one class: implemented, stub (the title loads but throws when it calls the function), absent (the loader fails) or module (provided by the title's own library). Exit code 1 means something would block loading.

    Stuck on an error message? Go to errors and fixes. Want a gamepad? See controls.