AnyPS5/docs/TechnicalDebt.md

4.0 KiB

Project technical debt

Build

  • Building on Windows requires a specific version of mingw - MinGW-w64 GCC 15.2.0 (winlibs-gcc15, x86_64-ucrt-posix-seh)
  • Even compiled prx libraries on Windows require nearby (static linking of these dependencies causes conflicts):
    • libgcc_s_seh-1.dll
    • libstdc++-6.dll
    • libwinpthread-1.dll

Silent stubs

Throughout the project, every function at every stage either does exactly what it's supposed to or throws an exception. Everywhere... except:

Unknown function info

Functional

  • Shader recompilation currently occurs right before it was transferred to Vulkan with caching, but should be moved to the relinker stage. For this purpose, shader/recompiler was written completely independently from libs/prx.
  • The executable file that relinker generates opens the console when launched, which is inconvenient for playability.
  • Relinker doesn't add an icon to the generated executable. This should be done without adding dependencies (only standard).
  • --to-intel does not lower the register form of INSERTQ (F2 0F 79) nor MONITORX/MWAITX/CLZERO/RDPRU/MCOMMIT; the lowering fails the relink instead. SHA-NI is not substituted.
  • The length-changing path of the instruction rewriter is not used by the converter: it does not adjust VEX/0F38/0F3A RIP-relative operands, data-to-code references (relocations, FDEs, jump tables) or segment sizes, so every substitution keeps the instruction length.
  • The Linux placement of the --to-intel stubs in the ELF patcher is covered only by a synthetic test.
  • The libc SSE4a trap emulation on Windows is superseded by --to-intel and remains only until the relinked title has been verified without it.
  • --to-intel lowerings that need a stub section are rejected for sce_module guest modules: the guest module builder does not pass stub sites to the guest module writer.
  • The game can expect its modified prx from the sce_module/sce_modules folder - this support is not implemented.