An experimental PlayStation 5 emulator for macOS, rendering natively with Metal.
Join our official Discord server for development updates, compatibility discussions, support, and community chat.
Important
Official channels: Only sharpemu.app and the links listed in this GitHub repository are affiliated with SharpEmu. Any other websites, accounts, or donation pages are unofficial and unauthorized.
Warning
SharpEmu is an experimental PS5 emulator developed from scratch in C#. The current focus is on accuracy and infrastructure setup rather than game-specific compatibility. Compatibility and performance vary by game and by Mac.
SharpEmu-mac is the macOS edition of SharpEmu, an experimental
PlayStation 5 emulator written in C#. It runs on macOS with a native Metal
renderer ("Metal V2", in src/graphics/SharpEmu.Gpu.Metal/V2) that translates
the console's GPU work to Metal directly, with no MoltenVK and no Vulkan on the
macOS path. Guest x86-64 code runs directly on the host CPU, which is why the
shipped build is osx-x64 and runs under Rosetta 2 on Apple Silicon.
SharpEmu is developed purely for research and educational purposes, with no commercial goals. It focuses exclusively on the PlayStation 5; for PS4 games, see ShadPS4.
This fork tracks upstream SharpEmu, which targets Windows and Linux with Vulkan. All credit for the emulator core belongs to the upstream project and its contributors.
- macOS 15 or later.
- An Apple Silicon Mac with Rosetta 2, or an Intel Mac. The CPU backend runs the
guest's x86-64 code natively, so the host process must be x86-64;
osx-x64is the only macOS build, andosx-arm64is not supported. - A GPU that supports Metal. Games that draw with primitive (NGG) shaders need a Metal 3 device, because the backend runs them as Metal mesh pipelines.
- Game dumps from a console you own. Titles can use a lot of memory, so a Mac with little free memory may page heavily.
On Apple Silicon, install Rosetta 2 once if you have not already:
softwareupdate --install-rosetta
See Building on macOS for the details behind these requirements.
Download a build from the Releases page.
Each release publishes two assets, both for osx-x64:
| Asset | Contents |
|---|---|
sharpemu-<version>-osx-x64-app.zip |
SharpEmu.app, the macOS app bundle. This is the one to use for the GUI. |
sharpemu-<version>-osx-x64.tar.gz |
The plain self-contained directory with the SharpEmu executable, for command-line use. |
Unzip the app, move SharpEmu.app where you like (for example /Applications)
and open it.
First launch and Gatekeeper. Release bundles are ad-hoc signed and are not notarized, so macOS may refuse to open a downloaded copy. Either allow it in System Settings, Privacy and Security, or remove the quarantine attribute:
xattr -dr com.apple.quarantine SharpEmu.app
The app cannot update itself in place. The GUI reports new releases and opens the releases page. If something does not start, see macOS troubleshooting.
Important
This project does not support or condone piracy. All games used during development and testing are dumped from consoles that we personally own. Users are expected to use legally obtained copies of their games.
GUI. Open SharpEmu.app (or run the SharpEmu executable with no
arguments), add your game folders in the library settings, select a game and
press Play. Environment variables can be set globally or per game in the GUI.
Command line. Pass the game's eboot.bin (or a .zar archive):
SharpEmu.app/Contents/MacOS/SharpEmu "/path/to/game/eboot.bin" --log-fileSupported game formats:
- A dumped application folder: the folder that contains
eboot.bin, normally withsce_sys/param.jsonand the game's data and modules beside it. - A
.zararchive of a whole game folder, witheboot.binat its root. The GUI can pack a game folder into a.zar.
Settings, save data and shader caches live under one data root. Inside
SharpEmu.app that is ~/Library/Application Support/SharpEmu. Every log,
trace, crash dump and shader or frame dump goes under user/logs/ in that data
root; SHARPEMU_LOG_DIR moves it. See
Running games on macOS for the full usage line,
the data folder, controls, and the performance display. Game patches are described in
Game patches, and environment variables in
macOS configuration.
The first run of a game compiles its shaders, so it starts slowly; later runs reuse the caches.
Captured on SharpEmu-mac with the Metal backend.
| Black Myth: Wukong | Grand Theft Auto V |
|---|---|
![]() |
![]() |
| Demon's Souls | SILENT HILL: The Short Message |
|---|---|
![]() |
![]() |
| Superliminal | Poppy Playtime Chapter 1 |
|---|---|
![]() |
![]() |
| Quake | The Oregon Trail |
|---|---|
![]() |
![]() |
| void tRrLM(); //Void Terrarium++ | Dreaming Sarah |
|---|---|
![]() |
![]() |
You need the .NET SDK named in global.json, the Xcode command
line tools (xcode-select --install) and Python 3. Full Xcode is not required.
git clone https://github.com/sharpemu/sharpemu-mac.git cd sharpemu-mac dotnet build SharpEmu.slnx -c Release dotnet test SharpEmu.slnx -c Release scripts/macos/build-app.sh # -> artifacts/macos/SharpEmu.app and a .zip
build-app.sh publishes osx-x64, assembles and ad-hoc signs SharpEmu.app,
and verifies it. Signing with a Developer ID and notarization are optional. See
Building on macOS for requirements, build options,
signing and entitlements.
- Documentation index
- macOS guides: Building, Running games, Configuration, Metal backend, Testing, Troubleshooting
Before opening an issue or pull request, please read our contribution guidelines:
The guide covers:
- Coding style and formatting
- AI-assisted contributions
- Pull request expectations
- Testing guidelines
- Legal and reverse engineering policy
This repository is a fork of sharpemu/sharpemu.
Upstream changes arrive in main through merge pull requests from a pristine
upstream mirror branch, never by rewriting history. A scheduled workflow
(.github/workflows/upstream-sync.yml) keeps that mirror current and opens the
pull request; scripts/mac/sync-upstream.sh does the same by hand when a merge
has conflicts. The workflow needs the repository secret UPSTREAM_SYNC_TOKEN
whenever upstream changes a workflow file; the comment at the top of the workflow
says which permissions the token needs.
SharpEmu is an experimental emulator intended for research and educational purposes.
This project does not contain any copyrighted system firmware, game data, or proprietary PlayStation assets.
The following projects were extremely helpful during development of SharpEmu:
-
ShadPS4 Helped with understanding the basic architecture of the PlayStation 4.
-
Kyty One of the few PS5 emulator projects available and very useful for studying native code execution.
-
Ryujinx Provided valuable references for filesystem handling and low-level C# implementation patterns.
-
OpenGNM Used as a reference for the general GCN architecture.
SharpEmu is licensed under the GPL-2.0-or-later license; see
the LICENSES folder for the license texts of bundled components.
Support SharpEmu via GitHub Sponsors or cryptocurrency. Every contribution helps fund ongoing development and long-term maintenance. GitHub Sponsors is the preferred way to support the project, but cryptocurrency donations are also appreciated.
0xF315F5d986c790bB3A58DbE60F1B2760997dEd82
bc1qmr9k8899njys5ny63xsues4jgmkk96erslrkmv










