* feat(np): unlock and persist trophies from universal-data-system events A title never calls an unlock function: it posts UDS events, and the console compares the stat each event feeds with the trophy's condition. Hades posts _UnlockTrophy with a _trophy_id; other titles feed stats named by the rules in sce_sys/uds/uds00.ucp. TrophyService loads the title's trophy package and stat rules, applies each posted event (latest-value uint stats compared with the trophy's ge/gt/le/lt target, or _UnlockTrophy by id), unlocks the platinum with the last other trophy, and saves progress to <savedata root>/../trophies/<titleId>/unlocks.json. sceNpTrophy2GetTrophyInfoArray now reports the unlocked flag and time. SHARPEMU_TRACE_UDS=1 traces every posted event. Stat-rule evaluation and package layouts follow KytyPS5's NpTrophy2/UDS code. Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> * feat(gui): trophy list and unlock notification Right-click a game, Trophies…, lists its trophies with icons, grades and the progress the emulator saved, and refreshes while the window is open. When the running game earns a trophy the emulator prints a [TROPHY][UNLOCK] line; the launcher turns it into a themed, non-focus-stealing toast above the game. TrophyCatalog is the public, read-only view of the trophy package and saved progress for the launcher process. Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> * feat(gui): richer trophy list and notification, click to reveal hidden trophies The list gets a hero card with a progress ring and per-grade chips, All/Earned/Locked filters and larger rows with grade accents. Icons are decoded small and off the UI thread, and hidden trophies keep their icon: only the name and description are held back until the row is clicked, like on the console. The notification is larger, with the description, a grade glow and a fade. SHARPEMU_TROPHY_TOAST_TEST=1 shows one notification per grade and =list opens the list, using the first library game that has trophies. Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> * feat(gui): test button for the trophy notification SHARPEMU_TROPHY_TOAST_TEST=1 adds a "Test trophy notification" button to the launcher; each click shows the notification for the next grade using the first library game with trophies. =list still opens the trophy list directly. Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> * feat(gui): console-style trophy overview, hidden trophies stay hidden, test in Environment A trophy button in the launcher toolbar opens an overview laid out like the console's: earned totals per grade at the top, then each game with its completion and earned cups. Picking a game opens its trophy list in the same style, with grades shown as cups. Hidden trophies stay hidden, icon included, until their row is clicked. The notification test moves from an environment variable and floating button to Options > Environment > Trophies, where a game and one of its trophies can be picked and its unlock notification shown; players do not see it unless they open Environment. Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> * feat(gui): animated trophy notification with 3D icon flip, light sweep and sparks The notification slides up on a spring, then flips its icon in around the vertical axis in 3D, sends one band of light across the card and bursts sparks in the grade color, with more sparks for rarer grades. The platinum adds slowly rotating rays behind the icon and stays longer. A thin line shows the time left. The window is click-through and never takes focus. With Windows animations turned off it just fades in and out. List rows fade in one after another when a list first opens. Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> * feat(gui): trophy chime, landing ring and livelier trophy lists The unlock notification now plays a short chime as the icon flips in: a few bell tones rising in an E major arpeggio, more notes for rarer grades. The chime is synthesized in code, so no third-party audio ships, and it plays on its own waveOut device so it never stops the title music. A ring leaves the icon as it lands, and the text lines slide in one after another. The trophy list counts its completion up, fades a hidden trophy over to its other face instead of redrawing the list, outlines earned icons in their grade color and lights up a trophy earned while the list is open. The overview counts its total up and fills each game's bar. Rows fade on hover in both. Options > Environment > Trophies gets a toggle for the sound. * feat(gui): redesign the trophy notification, lists and sound The notification is now a glass card tinted in the grade's metal, with light drifting across it, that swings in from the top right in 3D. A drawn medal spins like a tossed coin and lands on the sound's impact: a ring goes out, confetti tumbles away, a glint crosses the medal and the game's progress bar moves up to count the new trophy. Rarer grades get more confetti; gold and platinum get rays, and the platinum an iridescent edge and a second burst. The sound is rebuilt: a filtered whoosh rises while the medal spins, then a soft thump and an E major chord struck like mallets, with sparkles and a small stereo room; rarer grades get a fuller chord. It is still synthesized in code. The game's list sits on its blurred key art under an indigo wash, with the cover, grade chips with medals, a completion ring and filters; trophies are rounded cards tinted in their grade, with a padlock or question mark badge, and a hidden one turns over when revealed. The collection view gets a medal, library totals and a completion ring, and one card per game. * fix(gui): colored medals, a four-second toast and confetti that stays on screen Medals keep their grade color everywhere and are only dimmed while nothing of that grade is earned. The notification stays about four seconds (a little longer for the platinum). Confetti bursts left and down instead of up, where the card leaves no room, inside a larger window, and fades out before it can reach an edge. * feat(gui): trophy glints instead of falling confetti When the medal lands, four-pointed glints and a few dots burst from it all round, twinkle and go out within a second, close to the card, instead of confetti falling down the screen. Rarer grades get more and larger glints; the platinum a second, smaller burst. The window shrinks back around the card. * feat(gui): trophies page next to the library, trophy art on the medal, springy notification The trophy collection and each game's list are a Trophies tab between Library and Options instead of two windows: picking a game slides its list in, and the back button, Escape or the mouse's back button slide it out. The unlock notification is a pill that stretches into the card on springs and folds back into it, the medal shows the trophy's own art, and the collection can be sorted and glows with the hovered game's art. Comments are removed from the trophy code. * feat(gui): translate the trophy strings in every language * feat(gui): search the games in the trophies page * feat(gui): pill-shaped search in the trophies page, drop the card tooltip and unused strings * chore(np, gui): drop the unused unlock event and locked medal state --------- Co-authored-by: Felipe <54341095+Pipe530@users.noreply.github.com> Co-authored-by: nmzik <Nmzik@mail.ru> |
||
|---|---|---|
| .github | ||
| LICENSES | ||
| assets/images | ||
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| tools | ||
| .editorconfig | ||
| .gitignore | ||
| CONTRIBUTING.md | ||
| Directory.Build.props | ||
| Directory.Packages.props | ||
| LICENSE.txt | ||
| README.md | ||
| REUSE.toml | ||
| SharpEmu.slnx | ||
| global.json | ||
| nuget.config | ||
README.md
SharpEmu
An experimental PlayStation 5 emulator for Windows, Linux and macOS.
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.
[!NOTE]
SharpEmu supports Windows x64, Linux x64, and macOS x64. Apple Silicon Macs can run the macOS x64 build through Rosetta 2, and Windows on ARM devices (e.g. Snapdragon) can run the Windows x64 build through Windows' built-in x64 emulation.
[!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.
Info
SharpEmu is an emulator project currently in its early stages of development.
This project is developed purely for research and educational purposes. There are no commercial goals associated with it. We enjoy learning about system architecture and reverse engineering.
SharpEmu focuses exclusively on the PlayStation 5.
Our goal is not to emulate PS4 games, as there is already an excellent emulator dedicated to that platform: ShadPS4.
Games Tested
| Demon's Souls Remake | ASTRO BOT |
|---|---|
![]() |
![]() |
| ASTRO's PLAYROOM | Dead Cells |
|---|---|
![]() |
![]() |
| God of War: Sons of Sparta | Tomb Raider V Remastered |
|---|---|
![]() |
![]() |
Status
The emulator can currently load the eboot.bin of real games, execute native CPU instructions, and partially handle gpu-related functionality. Included 3D games.
SharpEmu supports Windows, Linux, and macOS hosts. Video output uses Vulkan on Windows and Linux, and MoltenVK on macOS. Platform support is still experimental, so compatibility and performance vary by game, operating system, and GPU driver.
Using
Download the release archive for your operating system, extract it, and launch
SharpEmu with the path to a legally obtained game's eboot.bin.
Or command line;
Windows PowerShell:
.\SharpEmu.exe "C:\path\to\game\eboot.bin" --log-to-file
Linux and macOS:
chmod +x ./SharpEmu
./SharpEmu "/path/to/game/eboot.bin" --log-to-file
SharpEmu supports environment variables that can be configured from the GUI. Undocumented variables are listed here: docs/sharpemu-gui-undocumented-env-vars.md
You can set them per game or globally in the GUI, or pass them directly through the CLI.
A Vulkan-capable GPU and current graphics driver are required. The macOS release includes the MoltenVK Vulkan implementation.
[!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.
Build
- Install the .NET SDK version specified in
global.json. - Clone the repository:
git clone https://github.com/sharpemu/sharpemu.git - Open the solution file (
SharpEmu.slnx) in VSCode. - Build the project:
dotnet buildordotnet publish - Build artifacts will be located in the
artifactsdirectory.
Disclaimer
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.
Special Thanks
The following projects were extremely helpful during development:
-
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.
License
Support
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.
ETH/USDT
0xF315F5d986c790bB3A58DbE60F1B2760997dEd82
BTC
bc1qmr9k8899njys5ny63xsues4jgmkk96erslrkmv
Contributing
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





