Step by step

  1. Download and verify the official files

    From the v0.1.1 release on GitHub, download relinker-v0.1.1.exe (the converter) and prx-windows-v0.1.1.zip (the system libraries). Then open PowerShell in your download folder and check both hashes against our download page:

    PowerShell
    Get-FileHash .\relinker-v0.1.1.exe -Algorithm SHA256
    Get-FileHash .\prx-windows-v0.1.1.zip -Algorithm SHA256
  2. Create a working folder

    Make a folder such as C:\anyps5, move both downloads into it, and create a source folder for the game's executable and modules:

    Folder layout before conversion
    C:\anyps5\
    ├── relinker-v0.1.1.exe
    ├── prx-windows-v0.1.1.zip
    └── source\
        ├── eboot.elf        <- the game's main executable (plain ELF)
        └── sce_module\      <- the modules that ship with the game (plain ELF)

    The executable's file name does not matter. v0.1.1 looks for the bundled modules in a folder named sce_module or sce_modules next to the executable, so use one of those names. Files still inside a SELF container are rejected: the relinker only accepts plain ELF files.

  3. Convert the executable

    Open PowerShell in C:\anyps5, create an output folder and run the relinker:

    AMD processor
    mkdir game
    .\relinker-v0.1.1.exe --windows source\eboot.elf game\app.exe
    Intel processor
    mkdir game
    .\relinker-v0.1.1.exe --windows --to-intel source\eboot.elf game\app.exe

    Do not leave out --windows: without it the result is a Linux program even if you name it app.exe, and v0.1.1 only prints a warning about it. --to-intel rewrites the AMD-only instructions it finds in the files; it cannot fix code a game generates while running, so some games only work on AMD processors.

    The relinker also converts the bundled modules and prints each one as a Guest module: line. They are written under game\app0\; keep them where they are. Exit code 0 means success, 1 means invalid arguments, and 2 means the conversion failed; the reason is printed after FAIL:.

  4. Add the AnyPS5 system libraries

    Extract the library archive into the output folder so that a libs folder appears next to app.exe:

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

    game\libs should now contain the AnyPS5 .prx libraries plus libgcc_s_seh-1.dll, libstdc++-6.dll and libwinpthread-1.dll. Only AnyPS5's libraries belong in libs, never the game's original modules.

  5. Add the game's data

    Copy the game's data files into game\app0\, next to the converted sce_module folder. The finished folder looks like this:

    Runtime folder
    C:\anyps5\game\
    ├── app.exe
    ├── libs\              <- from prx-windows-v0.1.1.zip: *.prx and 3 MinGW DLLs
    └── app0\
        ├── sce_module\     <- converted modules ("Guest module:" lines)
        └── ...             <- the game's data files
  6. Run it

    PowerShell
    cd game
    .\app.exe

    Keep the console open. When a game reaches something AnyPS5 has not implemented yet, it stops and prints an error that names it. That is expected for most games today; check the games list to see how far yours has been reported to get.

Controls

Xbox-style and PlayStation controllers recognised by SDL work automatically. For keyboard and mouse, the built-in bindings apply until you create anyps5-input.ini next to app.exe. See the controls section for the file format.

Troubleshooting on Windows

Error 193: "not a valid Win32 application"

Windows tried to load something that is not a Windows program or library. Usually an original PS5 module ended up in libs: remove it, because libs is only for AnyPS5's own libraries. The same error appears when the game was converted without --windows; convert it again with the option.

Error 126: "the specified module could not be found"

A library in libs is missing one of its own dependencies. Extract the whole archive so that the three MinGW DLLs sit in libs. AnyPS5 does not look for them on the system PATH, so copies elsewhere do not help.

"create direct memory backing of … bytes"

On Windows, the direct memory a game allocates (up to 13,824 MiB per title) is committed in full immediately. If installed RAM plus the page file cannot cover it on top of everything else that is running, the allocation fails. Enlarge the page file or close other applications.

A crash while Vulkan devices are listed

The "OpenCL, OpenGL, and Vulkan Compatibility Pack" can install Mesa Dozen, and some drivers crash while it is being enumerated. If your PC has another Vulkan driver, disable Dozen for the current PowerShell session before starting the game. Do not do this if Dozen is your only Vulkan driver.

PowerShell
$env:VK_LOADER_DRIVERS_DISABLE = '*dzn*'
.\app.exe

The wrong graphics card is used

Current builds run on the first suitable Vulkan device and prefer a dedicated card. The project's documentation for the main branch adds ANYPS5_GPU to pick another one by part of its name; the names are printed at start-up. This variable may not exist in v0.1.1.

PowerShell
$env:ANYPS5_GPU = 'RTX'
.\app.exe

The game stops with an error about a function

That function is not implemented in AnyPS5 yet, and there is nothing to fix on your side. Look up the game on our games list, search the issues, and share the exact message in Game bring-up if nobody has reported it.

Sources: USAGE.md, INPUT_MAPPING.md, v0.1.1 argument parser and the release files.