>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
C-sharp

PlayStation 5 in C#: Wie Enthusiasten den SharpEmu-Emulator schreiben

Ein Emulator für eine moderne Konsole – das ist für viele gleichbedeutend mit endlosen Zeilen reinem C++ und Low-Level-Magie. Die Entwickler des SharpEmu-Projekts haben sich jedoch für einen anderen Weg entschieden und .NET gewählt. Das klingt ehrgeizig, wenn man bedenkt, dass es um die PlayStation 5 geht – ein äußerst komplexes System mit x86-64-Architektur und einer spezifischen Grafik-API.

Warum braucht ein Programmierer noch einen Emulator

Wer die Szene verfolgt, hat wahrscheinlich schon von ShadPS4 gehört. Dieses Projekt macht bereits große Fortschritte bei der Ausführung von Bloodborne und anderen PS4-Hits. Die SharpEmu-Entwickler stellen sofort klar: Sie versuchen nicht, mit irgendjemandem zu konkurrieren oder die Arbeit anderer zu duplizieren. Ihr Ziel ist ausschließlich die PS5.

SharpEmu ist ein experimentelles Projekt. Es wird von Grund auf für Bildungszwecke und Forschung entwickelt. Die Entwickler beschäftigen sich einfach gerne mit Systemarchitektur und Reverse Engineering. Für uns ist dies eine seltene Gelegenheit zu sehen, wie eine moderne Konsole „unter der Haube" funktioniert – mit einem vertrauten .NET-Technologie-Stack.

Was das Projekt heute kann

Das Projekt befindet sich in einem frühen Stadium. Erwarten Sie nicht, eine Binary herunterzuladen und God of War Ragnarök in 4K zu spielen. Der Fokus des Teams liegt auf Infrastruktur und Emulationsgenauigkeit, nicht auf der Ausführung bestimmter Spiele.

Dennoch gibt es bereits Ergebnisse:

  • Laden von eboot.bin- und .elf-Dateien. Der Emulator analysiert die Struktur von Konsolen-Executables korrekt.
  • Ausführung nativer CPU-Anweisungen.
  • Auslesen von Metadaten: Spielnamen, Versionen und andere Dienstinformationen.
  • Arbeit mit Systemmodulen (PRX) und partielle Kernel-Funktionsunterstützung.
  • Erste PlayGo-Szenario- und Videoausgabe-Unterstützung.

Interessanterweise erreichen einige Spiele bereits das AGC-Initialisierungsstadium (Grafik-Shader-Engine) und rufen sceVideoOut auf. Bei Demon's Souls Remake hat der Emulator beispielsweise bereits Shader vorbereitet, die die Entwickler für das Rendering über Vulkan in SPIR-V konvertieren möchten.

Technologie-Stack und Inspirationsquellen

Die Wahl von C# für ein solches Projekt ist eine interessante Entscheidung. Modernes .NET (Version 8 und höher) bietet hervorragende Leistung, und die Arbeit mit Speicher und Datenstrukturen ist oft angenehmer als in C++.

Die SharpEmu-Autoren verbergen nicht, dass sie auf der Erfahrung von Kollegen aufbauen. Mehrere bekannte Projekte haben ihren Code und ihre Architektur beeinflusst:

  1. Ryujinx: Von hier haben sie Muster für die Implementierung von Low-Level-Operationen in C# und Dateisystem-Handling übernommen.
  2. Kyty: Einer der frühen PS5-Emulatoren, der als Lehrbuch für die Ausführung von nativem Code diente.
  3. ShadPS4: Hat geholfen, die allgemeinen Prinzipien der Sony-Konsolenarchitektur für aktuelle und vorherige Generationen zu verstehen.

Derzeit ist Windows die primäre Zielplattform. Dies vereinfacht das Debugging in der frühen Phase. Support für Linux und macOS ist für später geplant, sobald die Codebasis stabiler wird.

Wie man es ausprobieren kann

Wenn Sie einen Blick hineinwerfen oder sogar zum Projekt mit Code beitragen möchten, ist der Build-Prozess nicht schwierig. Sie benötigen das neueste .NET SDK.

Klonen Sie das Repository:

git clone https://github.com/par274/sharpemu.git

Erstellen Sie das Projekt:

dotnet build

Um ein Spiel-Image über die Kommandozeile auszuführen, verwenden Sie PowerShell:

.\SharpEmu "путь_к_eboot.bin" 2>&1 | Tee-Object -FilePath "log.txt"

Für wen dieses Projekt gedacht ist

SharpEmu wird in den nächsten Jahren kaum Ihr primärer Gaming-Client werden. Aber es ist ideal für diejenigen, die lernen möchten:

  • Systems-Programmierung in C#.
  • Wie JIT-Compiler und Anweisungsübersetzung funktionieren.
  • Reverse Engineering geschlossener Plattformen.

Das Projekt wirkt „sauber" und akademisch. Es enthält keine proprietären Dateien oder Schlüssel; alle Tests werden mit Dumps der persönlichen Konsolen der Autoren durchgeführt.

*Dreaming Sarah schafft es bereits, Texturen zu rendern.*

SharpEmu ist ein cooles Beispiel dafür, wie komplexe Aufgaben wie Hardware-Emulation mit modernen Hochsprachen gelöst werden. Für jetzt ist das Projekt eher eine „Sandbox" für Ingenieure. Wenn Sie daran interessiert sind, wie GPU-Befehle in der PS5 gesendet werden oder wie der Task-Scheduler in ihrem Kernel funktioniert, werfen Sie einen Blick in den Quellcode. C#-Code zu lesen ist deutlich einfacher als sich durch C++-Template-Komplexitäten zu kämpfen.

Sie können Updates in ihrer Discord-Community verfolgen, ein Link dazu befindet sich im Repository. Dort teilen Entwickler häufig Logs und Erfolge beim Durchlaufen der nächsten Ladephase schwerer Spiele.

Ähnliche Projekte