Go to file
Foued Attar 5052fae071
feat(np, gui): trophy unlocks, trophy lists and unlock notification (#1089)
* 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>
2026-10-14 00:05:40 +03:00
.github [readme] New screenshots 2026-10-06 19:07:06 +03:00
LICENSES Revert "Ghost of Yōtei and Tsushima in game: rendering, GPU/CPU memory coherence, tessellation" 2026-10-13 03:38:40 +03:00
assets/images [asset] upload transparent logo image 2026-08-03 10:43:43 +03:00
docs Revert "Ghost of Yōtei and Tsushima in game: rendering, GPU/CPU memory coherence, tessellation" 2026-10-13 03:38:40 +03:00
scripts Alpha Rebuild Progress (#887) 2026-09-20 04:09:27 +03:00
src feat(np, gui): trophy unlocks, trophy lists and unlock notification (#1089) 2026-10-14 00:05:40 +03:00
tests [GUI] Added cross-platform playback menu music and title music volume control 2026-10-13 18:11:24 +03:00
tools Revert "Ghost of Yōtei and Tsushima in game: rendering, GPU/CPU memory coherence, tessellation" 2026-10-13 03:38:40 +03:00
.editorconfig [dotnet] configure local nuget package cache 2026-07-04 19:12:18 +03:00
.gitignore [SharpEmu] Add bundled demo game (#1072) 2026-10-09 17:41:17 +03:00
CONTRIBUTING.md Enhance contribution guidelines with PR expectations 2026-07-23 01:40:00 +03:00
Directory.Build.props chore: bump version to 0.0.5-nexus-release.2 (#1070) 2026-10-09 01:53:47 +03:00
Directory.Packages.props Run and pack ZArchive (.zar) game archives (#1085) 2026-10-12 19:26:51 +03:00
LICENSE.txt initial commit 2026-03-11 15:48:28 +03:00
README.md [readme] New screenshots v2 2026-10-06 19:07:24 +03:00
REUSE.toml [GUI] Redesign options page (#699) 2026-07-30 12:58:22 +03:00
SharpEmu.slnx Sdl backend (#670) 2026-07-28 03:33:26 +03:00
global.json [dotnet] remove lock files (#419) 2026-07-19 01:26:01 +03:00
nuget.config [dotnet] configure local nuget package cache 2026-07-04 19:12:18 +03:00

README.md

SharpEmu

An experimental PlayStation 5 emulator for Windows, Linux and macOS.


Join our Discord

Join our official Discord server for development updates, compatibility discussions, support, and community chat.


Support SharpEmu


[!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
DeS screenshot Astro Bot
ASTRO's PLAYROOM Dead Cells
Astro's Playroom Dead Cells
God of War: Sons of Sparta Tomb Raider V Remastered
GoW SOS Tomb Raider V

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

  1. Install the .NET SDK version specified in global.json.
  2. Clone the repository: git clone https://github.com/sharpemu/sharpemu.git
  3. Open the solution file (SharpEmu.slnx) in VSCode.
  4. Build the project: dotnet build or dotnet publish
  5. Build artifacts will be located in the artifacts directory.

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:

CONTRIBUTING.md

The guide covers:

  • Coding style and formatting
  • AI-assisted contributions
  • Pull request expectations
  • Testing guidelines
  • Legal and reverse engineering policy