Driveclub Native
A native port of Driveclub (PS4, CUSA00003) to macOS and Windows.
| Platform | Game version | Renderer | Where | Maintainer |
|---|---|---|---|---|
| macOS (Intel) | v1.05 | Metal 3 | this repository's src/ |
BlackLineInteractive |
| Windows 10/11 | v1.28 | Vulkan (shadPS4's renderer), FSR 3.1 / FSR 4 / FSR 4.1.1, frame generation | windows/ — ready-to-play builds on the Windows releases |
qnfn |
Windows highlight: DCport 0.3.0 can build AMD's FSR 4.1.1 for Vulkan from your own DirectX 12 DLL, on your PC, in one click (about two minutes), and run it with FSR 3 frame generation. See windows/README.md.
The sections below describe the macOS backend; the Windows backend (DCport) runs on a native PS4 runtime based on Supermedo/bloodborne_pc and is documented in windows/README.md.
Windows (DCport):
This is not a general-purpose emulator. PS4 code is x86-64, so on Intel Macs it executes directly without CPU recompilation. We only replace what is console-specific: Sony system libraries (HLE) and the AMD Liverpool GPU (GCN) - with a custom Metal renderer tailored specifically for this single game.
Repository layout
| Path | Backend | Platform | What it is |
|---|---|---|---|
src/ |
Metal (src/gpu/metal) |
macOS | Our native runtime: ELF loader, HLE libraries, PM4 command processor, GCN → MSL |
windows/ |
Vulkan (DCport) | Windows | Separate native runtime (bloodborne_pc + runtime/driveclub-runtime.patch), launcher, community patches |
src/ and windows/ are independent: each has its own runtime and build, and changes to one do not affect the other. Fixes found on one side are worth checking on the other (both translate the same GCN/PM4 stream).
Architecture
eboot.bin (x86-64, natively executed)
│ imports of 922 functions from 57 libraries
▼
Sony HLE libraries ── libkernel, libc, Pad, AudioOut, VideoOut, Network/PSN -> stubs
│ sceGnmSubmitCommandBuffers / sceGnmDingDong
▼
GPU frontend ── PM4 packet parsing, register state, GCN shaders -> IR
│ src/gpu/renderer.h
└──► Metal 3 (macOS) - src/gpu/metal, IR -> MSL directly
Gnm/Gnmx are embedded directly into eboot: the game writes PM4 packets into the command buffer itself and passes only the finished buffer to the driver (sceGnmDraw* are not imported). Therefore, the GPU layer operates at the PM4 + GCN shader level.
Performance Principles
- Shader IR -> MSL directly, without SPIR-V/SPIRV-Cross; disk cache for compiled pipelines.
- Argument buffers Tier 2 (bindless) - minimal resource binding overhead per draw.
- Up to 3 frames in flight; CPU waits for GPU only when running 3 frames ahead.
- On discrete AMD GPUs, memory is not unified: dirty page tracking and uploading modified ranges only.
- Explicit discrete GPU selection on dual-GPU MacBooks (
DC_GPU=<partial_name>override).
Requirements
macOS
- Intel Mac (x86_64), Metal 3-capable GPU (tested: AMD Radeon Pro 5500M)
- Xcode, CMake >= 3.24, Ninja, SDL3 (
brew install cmake ninja sdl3) - Your own copy of the game as a decrypted dump (fSELF/fPKG)
Windows
- Windows 10/11 64-bit, a CPU with AVX, a Vulkan 1.3 GPU (FSR 4 needs a recent AMD or NVIDIA GPU)
- Your own decrypted dump of Driveclub v1.28; no Python or build tools needed for the release builds
Build
macOS
cmake -S . -B build -G Ninja
cmake --build build
./build/driveclubWindows: download a release build, or build the launcher and runtime from windows/.
Game Files
Game files are not included in the repository and must never be committed (see .gitignore).
Unpacking PKG:
tools/extract.sh <path_to_pkg> extracted
eboot analysis (imports by library):
tools/elfinfo.py extracted/Image0/eboot.bin tools/elfinfo.py extracted/Image0/eboot.bin --lib libSceGnmDriver
Legal Disclaimer
- No Proprietary Game Files: This project does not distribute, host, or link to any copyrighted material, proprietary game assets, PKG dumps, ROMs, executables (
eboot.bin), libraries (.prx), engine archives (.dat), audio, or textures. Users must provide their own legitimately acquired copy of Driveclub (CUSA00003). - Intellectual Property: Driveclub is a registered trademark of Sony Interactive Entertainment LLC. All trademarks, service marks, game titles, and copyrighted assets belong to Sony Interactive Entertainment and Evolution Studios.
- Educational and Preservation Purpose: This repository is an independent reverse-engineering project conducted strictly for interoperability, software preservation, and educational purposes. It is not affiliated with, endorsed by, or sponsored by Sony Interactive Entertainment, Evolution Studios, or any associated entities.
License
This project is licensed under the GNU General Public License v2.0 or later (GPL-2.0-or-later) - see the LICENSE file for details.
Acknowledgments
- shadPS4 - PS4 emulator, the primary source of knowledge on ELF loading, HLE libraries, PM4, and GCN shader recompilation. Its Vulkan renderer is the reference for GCN/PM4 semantics in the Metal backend, and the renderer of the Windows backend.
- OpenGNM - documentation on PS4 Gnm and GCN shaders.
- Windows backend: deadinside28 and Supermedo (native PS4 runtime), FireBurn (FSR-Vulkan, FSR 4 assets), akitaonrails and the patch authors; see
windows/README.md.




