An open-source PlayStation 4 emulator, written in C++ for Windows, Linux, and macOS.
RPCS4 is a Qt6-based desktop emulator that provides a familiar game management interface, Vulkan rendering, and high-level emulation of the PS4 operating system. The project aims to preserve the desktop-emulator workflow that PS4 enthusiasts expect while delivering accurate and performant emulation.
You can find more information on our Wiki. For discussion about this emulator, PS4 emulation, and game compatibility reports, please visit our Discord server.
- Qt6 GUI — A desktop-native interface with list and grid game library views, real-time search, and a comprehensive settings dialog
- Vulkan Renderer — GCN ISA decompilation to GLSL/SPIR-V with shader and pipeline caching, texture detiling, and render target management
- HLE OS Emulation — 25+ emulated PS4 system libraries including kernel, filesystem, audio, input, networking, and video output
- Native x86-64 Execution — PS4 binaries run directly on the host CPU with HLE symbol interception
- Game Library Management — Automatic game scanning, per-game custom configurations, and compatibility tracking
- Configuration Persistence — All settings are saved to INI files via QSettings, with global and per-game profiles
- Cross-Platform — Built with CMake for Windows, Linux, and macOS (x86-64)
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 10 (64-bit), Ubuntu 22.04, macOS 12 | Windows 11, Ubuntu 24.04, macOS 14 |
| CPU | x86-64 with AVX support | Modern x86-64 (Zen 2 / 10th Gen Intel+) |
| GPU | Vulkan 1.2 compatible (4 GB VRAM) | Vulkan 1.3 compatible (8 GB+ VRAM) |
| RAM | 8 GB | 16 GB |
| Storage | 100 GB SSD | 500 GB NVMe SSD |
If you want to help the project but do not code, the best way to help out is to test games and make bug reports on our issue tracker.
If you want to contribute as a developer, please take a look at the following:
- BUILDING.md — Environment setup and build instructions
- CONTRIBUTING.md — Contribution guidelines and coding style
- CODE_OF_CONDUCT.md — Community guidelines
You should also contact the developers in our Discord server to learn more about the current state of the emulator.
Use of AI tools for research and reverse engineering purposes is permitted. However, contributors are expected to fully own and understand all code they submit. Any communication with the team — including code, code comments, and GitHub comments — must come from the human contributor, not an AI agent acting autonomously.
We have unfortunately seen a rise in untested and unverified AI-generated slop being submitted to open-source projects. This wastes maintainer time and, in worse cases, such changes get merged and break functionality for all users. Repeated violations will result in a ban from the repository. Please be respectful of everyone's time.
Pull requests opened by AI agents or automated tools must include a disclosure in the PR description stating the scope of AI involvement — which parts were AI-generated and what human testing or review was performed prior to submission. PRs that omit this disclosure may be closed without review.
If you are unsure about your work, open a discussion issue to talk it through with the team, or reach out to a maintainer on Discord.
See BUILDING.md for detailed instructions on setting up a build environment and compiling RPCS4 for Windows, Linux, or macOS.
- Install PS4 firmware through File → Install Firmware in the emulator menu.
- Place your game directories (containing
eboot.binandsce_sys/param.sfo) in the configured game install directory. - Select a game from the library and click Boot, or double-click it.
Make sure your graphics driver is up to date. Windows users should install the Visual C++ Redistributable Packages for Visual Studio 2022.
You can check game compatiblity at RPCS4 Compatiblity List
| Library | Status | Notes |
|---|---|---|
| Kernel (memory, process, modules) | Implemented | Core OS services |
| pthread (threads, mutex, cond, rwlock) | Implemented | Threading primitives |
| SceVideoOut | Implemented | Display output and flip |
| SceGnmDriver | Implemented | Graphics command submission |
| SceAudioOut | Implemented | Audio output via SDL2 |
| ScePad | Implemented | Controller input via SDL2 |
| SceSysmodule | Implemented | Module loading |
| SceSaveData | Implemented | Save data management |
| SceRtc | Implemented | Real-time clock |
| SceNet | Implemented | Networking (RPCN4) |
| SceNpManager | Implemented | PSN management |
| SceNpTrophy | Implemented | Trophy system |
| SceComposite | Implemented | VSH compositor |
| SceZlib | Implemented | Compression |
| SceAppContent | Implemented | App content info |
| SceUserService | Implemented | User account management |
| SceSystemService | Implemented | System information |
| SceRandom | Implemented | Random number generation |
| SceAudio3d | Stubbed | 3D audio |
| SceAjm | Stubbed | Audio/video processing |
| SceVideodec | Stubbed | Video decoding |
| ScePlayGo | Stubbed | Chunk downloading |
| SceRegMgr | Stubbed | Registry manager |
| SceMbus | Stubbed | Internal bus |
RPCS4's emulation core is based on ChonkyStation4. The GUI and build system are original work.
The project makes use of the following open-source libraries:
- Qt6 — GUI framework
- Vulkan — Graphics API
- SDL2 — Audio and input
- glslang — Shader compilation
- VulkanMemoryAllocator — GPU memory management
- ELFIO — ELF parsing
- Zydis — x86 disassembly
- xbyak — JIT assembler
- CLI11 — Command-line parsing
- asio — Async I/O
- miniz — Compression
- And others — see
Dependencies/and individual license headers
Most files are licensed under the terms of the GNU General Public License v3.0 or later; see LICENSE for details. Some files may be licensed differently; check appropriate file headers for details.