Find your error
Relinker exit codes: 0 success, 1 invalid arguments, 2 conversion failed with the reason on stderr.
Error 193: “not a valid Win32 application”
Symptom. The converted program fails to start and Windows reports error 193 for a .prx file.
Cause. An original PS5 module was copied into libs/. That folder is only for AnyPS5’s own system libraries, which are Windows DLLs with a .prx name. Windows tries to load the PS5 file as a DLL and refuses.
Fix.
- Delete everything in libs/ and unpack the prx-windows archive from the release again.
- For the title’s own bundled modules, use the converted files the relinker printed as “Guest module:”. They live under app0/, not libs/.
Error 126: “the specified module could not be found”
Symptom. A library fails to load with error 126 even though its .prx file is clearly present in libs/.
Cause. The library itself is there, but one of the three MinGW runtime DLLs it depends on is not. They are loaded without searching PATH, so a copy elsewhere on the system does not help.
Fix.
- If you use the release archive, re-extract it: it already contains libgcc_s_seh-1.dll, libstdc++-6.dll and libwinpthread-1.dll.
- If you built the libraries yourself, copy those three DLLs from the mingw64/bin directory of the same toolchain into libs/.
“create direct memory backing of 0x… bytes”
Symptom. The title exits early with a message about creating a direct memory backing, followed by a Windows error.
Cause. On Windows, direct memory (up to 13,824 MiB per title) is committed in full at allocation time. The system commit limit, which is installed RAM plus page file, has to cover it along with everything else that is running.
Fix.
- Close memory-hungry applications and try again.
- Increase the page file size in Windows’ virtual memory settings, or let Windows manage it automatically.
- In Task Manager, the second value of “Committed” on the Memory tab is the limit you are trying to raise.
“open /dev/udmabuf: Permission denied” or “BDA access failed”
Symptom. Start-up prints [gpu] open /dev/udmabuf: Permission denied. Later the GPU side fails with BDA access failed.
Cause. With Vulkan drivers that import dma-buf memory (Mesa; not the NVIDIA proprietary driver), shared direct memory is imported through /dev/udmabuf. Many distributions create that device as root:kvm with mode 0660.
Fix.
- Add your user to the kvm group, then log out and back in.
- For a quick test that lasts until reboot, grant access with an ACL instead.
- Ranges above udmabuf’s size limit (64 MiB by default) are copied rather than imported, which is expected.
sudo usermod -aG kvm $USER # permanent, needs a new login
sudo setfacl -m u:$USER:rw /dev/udmabuf # until the next reboot
The game runs but shows no text
Symptom. Menus and dialogue boxes appear empty.
Cause. Titles that open the console’s system font sets need font files that AnyPS5 does not ship.
Fix.
- Create a folder named anyps5-fonts beside the converted executable.
- Put either the console’s own system fonts in it, or the openly licensed Noto substitutes AnyPS5 recognises: NotoSans, NotoSansMono, NotoSansThai and NotoSansCJK in Light, Regular, Medium and Bold.
- To keep fonts in another location, set ANYPS5_SYSTEM_FONTS to that directory.
Stops at start-up with an error naming ANYPS5_LANGUAGE
Symptom. The title exits at its first language query.
Cause. ANYPS5_LANGUAGE is set to something that is not a console language number.
Fix.
- Unset the variable to get the default, English (United States).
- Or set it to a number from 0 to 30. The full table is in the setup guide.
Wrong GPU is used, or start-up fails listing device names
Symptom. The program runs on the integrated GPU, or fails with an error that lists Vulkan devices.
Cause. AnyPS5 picks the first Vulkan 1.1 device with graphics and compute queues and swapchain presentation, preferring discrete GPUs. If ANYPS5_GPU is set and matches nothing usable, start-up fails.
Fix.
- Look for the “Physical device candidate” lines printed at start-up to see the exact names.
- Set ANYPS5_GPU to part of the name you want. Matching ignores case.
- If no device is listed at all, update the GPU driver so that it exposes Vulkan 1.1.
ANYPS5_GPU=radeon ./app.elf
Relinker error about sce_module, sce_modules or prx
Symptom. Conversion stops before producing output, complaining about module directories.
Cause. The relinker expects exactly one of sce_module/ or sce_modules/ beside the input ELF (prx/ may coexist with either). Having both, or none of the three, is an error.
Fix.
- Check the folder that contains the input ELF and keep the title’s original module directory name.
- If the modules live elsewhere, pass --sce-module-path with the parent folder, not the module folder itself.
Relinker rejects the input file
Symptom. Conversion fails immediately on the executable or on a bundled module.
Cause. The input has to be a clean ELF. An executable or module still inside a SELF container is an error.
Fix.
- Confirm the file is a plain ELF.
- Remember that a module in SELF form fails the same way as the main executable.
--to-intel stops with an unsupported instruction
Symptom. On an Intel CPU, adding --to-intel makes the relinker exit with an error.
Cause. The flag converts the AMD-only instructions it supports. An instruction it cannot convert, or a conversion stub it cannot place, is reported as an error instead of being skipped.
Fix.
- Copy the full message and search the upstream issues for it.
- Try a newer build from main; instruction support is extended regularly.
The .exe file will not run on Windows
Symptom. You named the output app.exe but Windows will not start it.
Cause. The output format is Linux ELF unless --windows is given. The file extension alone does not select Windows.
Fix.
- Run the relinker again with --windows before the input path.
.\relinker-v0.1.1.exe --windows source\input.elf app.exe
The program prints an error and exits
Symptom. A message appears on stderr and the process terminates, sometimes right at start-up.
Cause. This is intended behaviour. AnyPS5 throws on any unsupported or unexpected state rather than guessing, and missing imports fail at start-up with a clear error.
Fix.
- Read the first error line; it normally names the function or feature that is missing.
- Search the upstream issues and the Game bring-up discussions for that text.
- If you build from source, run the import audit described in the setup guide to list missing functions before launching.
First launch is slow or the picture looks different
Symptom. The first run stutters, or presentation differs from later runs.
Cause. Shaders are recompiled on first use and cached on disk. Upstream documents one concrete case with the DOOM homebrew: on a first run without a shader cache it misses its first frame deadline and switches to a CPU scaler, while later runs with the cache stay on the GPU path.
Fix.
- Let the title reach gameplay once, quit, and start it again before judging performance.
Corrupted or stale graphics after a scene change
Symptom. Textures or render targets show old data after the title frees and reuses GPU memory.
Cause. GPU results stay on the GPU until something reads their memory; reusing that memory first can let old results overwrite new data.
Fix.
- Set APS5_STORE_AT_FLIP=1 to store pending results at every display flip. It costs performance, so use it only when needed.
APS5_STORE_AT_FLIP=1 ./app.elf
Still stuck?
Search the upstream issues for the exact error text first. If nothing matches, the Q&A discussions are the place to ask. Include your OS, GPU and driver, the release or commit you used, and the full relinker command. The source for everything above is docs/user/USAGE.md and the compatibility notes.