📈 GH Trending Explorer 🎲 Surprise me

← all repos

ymatrix1 / PortPS5

git clone https://github.com/ymatrix1/PortPS5.git

Converts decrypted PS5 game dumps into native Windows executables via binary relinking, replacement system libraries, and Vulkan. No CPU emulation.

—
stars, 24h
—
stars, 7 days
+399
stars, 30 days · #678
399
★ total
34
forks · 1 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageC++
LicenseGPL-2.0
Created2026-09-27 (23d ago)
Last push19d ago
Watchers2
OwnerUser

GitHub topics

Links

README excerpt
# PortPS5
Native Windows execution of decrypted PS5 game dumps.
PortPS5 converts **user-supplied, already-decrypted PS5 game dumps** into native Windows executables plus replacement system libraries. It executes the game's x86-64 code directly on the host CPU without emulation, relinks guest ELFs into PE images, implements PS5 system libraries (`.prx`), and translates the GPU workload to Vulkan.
PortPS5 is a GPL-2.0-only hard fork of AnyPS5 by boykopovar. Hard fork means an independent product direction, not isolation: improvements flow from upstream continuously, but each one is adopted selectively and adapted to fork policy — never taken as-is, and never depended on. Full upstream tracking is revisited only after Milestone 3 (see PRD §5).
## Why a hard fork
Upstream optimizes for title-by-title progress, including game-specific mechanisms and environment switches for tuning and tracing. PortPS5 optimizes for a shippable, Windows-first product boundary instead: generic mechanisms only, enforced by CI; typed config instead of switches; return codes instead of throws; and a measured 1.0 bar (sections below). Upstream currently shows more public real-game evidence; the fork's arrives as results JSON from M2 onward.
## Product decisions
- **No title-specific code in `core/`.** Every title runs the same code. Per-title behaviour lives only in `config/games/ .toml` under `[workarounds]`, where the key names the mechanism (never the game) and is registered in docs/workarounds.md. The `policy` step of the hosted `build_and_test` CI job enforces both directions.
- **No behaviour-changing environment variables.** The `APS5_*` switches are removed. Tracing, dumps and profiling survive only as a typed `[debug]` config section.
- **General mechanisms over game-specific fixes.** A fix that happens to help one title first (e.g. a uniform-fill or linear-copy IR pattern, GPU-side resource resolution, general block-generation write tracking) is adopted; a branch on a title ID, executable hash or shader hash is not. If a title cannot progress without a hack, work stops and the root cause goes into the subsystem spec's Open questions.
- **Honest errors.** Real POSIX/SCE conditions return codes. Only genuinely unsupported states abort, through the logging abort path. Nothing throws across the `APS5_VABI` boundary; every host function reachable from guest code is `APS5_VABI` (System V ABI).
- **Concurrency without global locks.** Guest synchronization uses in-place futex words on `WaitOnAddress`, not heap `std::` mutexes and no process-global lock on hot paths.
- **GPU work resolved on the GPU.** Indirect draws, buffer resolves at submit time, and write tracking run on GPU-side paths — never by reading records back on the CPU or satisfying a wait from an unexecuted label a capture depends on.
- **Verification splits by machine.** Hosted CI (`build_and_test` with its unit, recompiler-golden and `policy` steps, `driver-lavapipe` on Mesa lavapipe, python-quality — full