aarvsn / Ryty
git clone https://github.com/aarvsn/Ryty.git
v1.0.6 · 3d ago
Tool for porting PlayStation 4 & 5 executables to Windows, MacOS and Linux
—
stars, 24h
—
stars, 7 days
+114
stars, 30 days · #2,022
114
★ total
24
forks · 1 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageC++
LicenseGPL-2.0
Created2026-10-03 (17d ago)
Last pushtoday
Watchers1
OwnerUser
GitHub topics
Links
- GitHub: github.com/aarvsn/Ryty
- Homepage: https://discord.gg/GPMuk2Tt98
- Releases · Issues · Hacker News mentions
README excerpt
# Ryty Automatic porting of PlayStation 5 and PlayStation 4 executables to native Linux, Windows, and experimental macOS binaries. Ryty includes a relinker that converts the executable to the target system's native format and implementations of system PRX libraries suitable for dynamic linking. No emulation, no separate runtime process: guest code runs as host code. Ryty is a fork of AnyPS5 - see authors and acknowledgments. ## Highlights * **Full AMD SHA extension lowering** - all seven SHA-NI instructions (SHA1RNDS4, SHA1NEXTE, SHA1MSG1/2, SHA256RNDS2, SHA256MSG1/2) are lowered to SSE2-only stubs, hardware-verified by a 360,360-assertion suite. * **AMD-only instruction coverage** - RDPRU, MCOMMIT, RDPID (with REX.B), PREFETCHW, FEMMS, MONITORX/MWAITX, CLZERO, EXTRQ/INSERTQ and MOVNTSS/SD are lowered in place or through out-of-line stubs; short sites absorb neighbouring instructions. * **PlayStation 4 and PlayStation 5 Support** - Auto-detection and explicit console selection (`--ps4`, `--ps5`, `--console auto|ps4|ps5`) to port both PS4 and PS5 executables. * **Experimental macOS Target with Metal** - `--macos` target support with Objective-C / Objective-C++ Metal API graphics rendering bridge. * **Qt6 GUI** (`ryty-gui`) on Linux, Windows, and macOS, shipped with the Qt6 runtime bundled (self-contained AppImage on Linux, windeployqt DLL set on Windows). * **JSON porting report** (`--report`) with per-site substitutions, summary counters and warnings. * **Hardened parsing** - `DT_STRSZ`-bounded strings, 8-byte GOT slot alignment checks, and a resilient level-1 NID filter that keeps every reference when CFG analysis cannot run. Unsupported or unexpected states strictly throw `std::runtime_error`; `what()` is printed to stderr and the process terminates. ## Build The relinker CLI uses only the C++20 standard library. [code] Qt6 is optional and enables the GUI; without it the build skips the GUI gracefully (the `linux-release-cli` preset builds and tests exactly that configuration). Full dependency and toolchain notes, including the Windows MinGW requirement for the runtime libraries, are in docs/user/BUILDING.md. On Intel hosts, pass `--to-intel` to the relinker to lower supported AMD-only instructions in the executable and bundled `sce_module`/`sce_modules` PRX files. Unsupported instructions or stub jumps outside the x86-64 relative branch range produce an error. ## GUI `ryty-gui` wraps the CLI: pick input/output, choose the target system, set the porting options, watch the colored log and optionally emit the JSON report. It launches the `ryty` binary from its own directory. Downloads from CI ship the GUI with every Qt6 file it needs. ## Continuous integration A single workflow (`.github/workflows/CI.yml`) builds and tests Linux and Windows, packages the GUI with its runtime, and attaches both zips to GitHub releases for `v*` tags. Details: docs/dev/CI.md. ## Documentation * Documentation index * Building and usage * Porting pipeline