ShadPS4 – PlayStation-4-Emulator
(github.com/shadps4-emu)- shadPS4 ist ein PlayStation-4-Emulator in einem frühen Entwicklungsstadium, der in C++ geschrieben wurde und Windows, Linux und macOS unterstützt
- Das Repository enthält nur den Emulator-Kern und keine GUI; normale Endnutzer müssen daher den separaten QtLauncher herunterladen
- Derzeit können einige Spiele wie Bloodborne, Dark Souls Remastered und Red Dead Redemption ausgeführt werden, es wird jedoch ausdrücklich darauf hingewiesen, dass man wegen des frühen Projektstatus keine vollständige Erfahrung erwarten sollte
- Builds werden über Dokumentationen für Docker, Windows, Linux und macOS beschrieben; für macOS ist macOS 26.0 oder höher erforderlich, und Intel Macs werden nicht unterstützt
- Einige PS4-Firmware-Module müssen in den Ordner
sys_modulesgelegt werden, damit Spiele korrekt funktionieren; diese Module müssen von einer rechtmäßig besessenen PlayStation-4-Konsole gedumpt werden
Charakter und Zielgruppe von shadPS4
- shadPS4 ist ein früher PlayStation-4-Emulator für Windows, Linux und macOS und wurde in C++ geschrieben
- Dieses Repository stellt den Emulator-Kern bereit und enthält keine GUI
- Endnutzer, die eine GUI benötigen, sollten QtLauncher verwenden
- Für Fehlerbehebung oder eine Anleitung zur Nutzung kann die Quickstart-Dokumentation herangezogen werden
- Zur Prüfung der Spielkompatibilität gibt es shadPS4 Game Compatibility
Aktueller Status und Entwicklungsrichtung
- shadPS4 befindet sich in einem frühen Entwicklungsstadium, daher sollte keine perfekte Nutzungserfahrung erwartet werden
- Beispiele für aktuell lauffähige Spiele sind:
- Bloodborne
- Dark Souls Remastered
- Red Dead Redemption
- sowie weitere Spiele
- Das Projekt begann als Spaßprojekt, und wegen begrenzter Freizeit kann es dauern, bis komplexere Spiele lauffähig werden
- Das Entwicklungsteam kündigt an, kleine, regelmäßige Updates fortzusetzen
Build und Plattformbedingungen
- Docker- und VSCode-basierte Container-Builds folgen den Docker Build Instructions
- Es gibt Build-Dokumentationen für die einzelnen Plattformen:
- Um shadPS4 unter macOS auszuführen, ist macOS 26.0 oder höher erforderlich
- Intel Macs werden nicht unterstützt
Ausführung und Eingabe
- Eine Befehlsliste und detaillierte Erläuterungen zu jedem Befehl finden sich in der Ausgabe von
--help - Häufig verwendete Ausführungsmuster sind:
shadPS4 CUSA00001: Sucht den OrdnerCUSA00001in der Liste der Spielinstallationsordner und bootet ihnshadPS4 --fullscreen true --config-clean CUSA00001: Das Spielargument steht standardmäßig am EndeshadPS4 -g CUSA00001 --fullscreen true --config-clean: Mit-gkann das Spielargument direkt angegeben werdenshadPS4 /path/to/game.elf: Bootet eine PS4-ELF-Datei direktshadPS4 CUSA00001 -- -flag1 -flag2: Übergibt Flags anargvder Spiel-Executable
- Für Tests, Debugging und Issue-Reports siehe die Debugging documentation
- Tastaturkürzel unterstützen FPS-Zähler, Video-Debug-Informationen, Vollbild, RenderDoc-Captures und Screenshot-Aufnahmen
- Xbox- und DualShock-Controller funktionieren ohne zusätzliche Konfiguration
- Tastatur- und Mauseingaben können über die Schaltfläche Controller im Einstellungsmenü angepasst werden
- Benutzerdefinierte Bindings werden pro Spiel gespeichert
- Unterstützt werden bis zu 3 Tasten pro Binding, Maustasten, per Mausbewegung gemappte Joystick-Eingaben usw.
Firmware-Dateien und rechtliche Bedingungen
- shadPS4 kann einige PlayStation-4-Firmware-Dateien laden
- Unterstützte Firmware-Module müssen im Ordner
sys_modulesvon shadPS4 abgelegt werden - Zu den unterstützten Modulen gehören
libSceAudiodec.sprx,libSceFont.sprx,libSceJpegDec.sprx,libSceJson.sprx,libSceLibcInternal.sprx,libScePngEnc.sprx,libSceRtc.sprx,libSceXml.sprxusw. - Diese Module sind notwendig, damit Spiele korrekt laufen
- Die Firmware-Module müssen von einer rechtmäßig besessenen PlayStation-4-Konsole gedumpt werden
Beiträge und Referenzprojekte
- Wer beitragen möchte, sollte CONTRIBUTING.md lesen und einen PR eröffnen
- Das Projekt dankt den folgenden Teams und Projekten:
- Panda3DS: half beim Verständnis und bei der Lösung von Problemen, die beim nativen Ausführen von x64-Code aus PS4-Binärdateien auftraten
- fpPS4: half beim Verständnis komplexer Teile des PS4-Betriebssystems und der Bibliotheken
- yuzu: Der Shader-Compiler von shadPS4 orientiert sich am Hades-Compiler von yuzu
- felix86: x86-64-→-RISC-V-Linux-User-Space-Emulator
- emudev.org: Netzwerk von Menschen, die sich für Dokumentation, Emulation, Simulation und Reimplementierung von Hardware interessieren, die beinahe vom Verschwinden bedroht ist
- Die Lizenz ist die GPL-2.0 license
1 Kommentare
Hacker-News-Kommentare
Ich frage mich wirklich: Ist das intern eher ein Emulator wie PCSX2 oder eher eine Kompatibilitätsschicht wie Wine?
Wenn die PS4 im Grunde ein x86-Computer ist, dürften die meisten schwierigen Teile wohl in der Implementierung der System-/Grafik-APIs der PS4 liegen. Oder gibt es zwischen einem x86-PC und der PS4 auch große Hardwareunterschiede, die behandelt werden müssen?
Allein dieser Teil macht schon deutlich mehr, als Wine leistet
Scheint der erste PS4-Emulator zu sein, der bis zum Charakterbildschirm von Bloodborne kommt
https://x.com/shadps4/status/1825669017392107971?s=46
Ich frage mich, wie man einen Emulator entwirft. Gibt es gute Ressourcen zum Lernen?
Bei der ersten schreibt man Code, der wie beim NES die CPU des Zielsystems als Befehlsinterpreter emuliert. Bei der zweiten implementiert man wie Wine die APIs des Zielsystems neu. Wenn das Zielsystem eine andere CPU-Architektur nutzt, braucht man eventuell wie bei der PS3 einen JIT-Compiler
Die meisten modernen Konsolenemulatoren sind eher Letzteres, weil moderne Konsolen in ihrer Funktionsweise PCs ähneln und es einen Betriebssystemkernel sowie User-Mode-Bibliotheken für Anwendungen gibt
Auch Letzteres teilt sich wiederum in zwei Arten. Die eine emuliert die User-Mode-Bibliotheken, die andere implementiert den Konsolenkernel neu und verwendet dabei die Systembibliotheken der Konsole selbst wieder
Ich würde empfehlen, dort in der Sprache deiner Wahl anzufangen
Gibt es Designdokumente oder Ressourcen, die frühere Versuche bzw. Vorarbeiten zeigen und warum dieses Projekt anders ist?
Sieht nach einem interessanten Projekt aus, dem man folgen kann. Angesichts der Tatsache, dass Sony derzeit kaum portable Optionen hat, frage ich mich, wie es auf dem Steam Deck laufen würde
0: https://www.reddit.com/r/SteamDeck/comments/wodw8x/i_tested_...
Bedeutet das, dass sie ein DXVK-Gegenstück für Gnm/Gnmx gebaut haben?[0]
[0] https://en.wikipedia.org/wiki/PlayStation_4_system_software#...
Das ist der aktuelle Fortschritt bei Bloodborne. Das dürfte es sein, worauf die meisten warten:
YouTube dieses Entwicklers: https://www.youtube.com/watch?v=wC6s0avpQRE
Ich verstehe wirklich nicht, warum Sony dieses kulturell bedeutende S-Klasse-Spiel immer noch fast schon böswillig vernachlässigt. Warten sie darauf, es als Launch-Titel für die PS6 zu verwenden?
Manche kann man herunterladen, andere sind aber nur per Streaming verfügbar, sodass man für PS2-Spiele eine gute Internetverbindung braucht. Absurd
Es wird immer Nachfrage danach geben, alte Spiele zu spielen, und deshalb existieren solche Emulatoren
Ich frage mich, ob die Emulationsentwicklung heutzutage einfacher wird, da moderne Konsolen im Grunde zu verkleinerten PC-Systemen geworden sind
Zum Glück wurde die PS4 gehackt, und nahezu alle Dateien und Informationen wurden entschlüsselt und gedumpt. Auch das offizielle PS4-SDK ist geleakt
Jetzt weiß man, wie die Konsole Spiele ausführt, und der nächste Schritt ist, diese Informationen zu nutzen, um Spiele außerhalb der Konsole auszuführen. Das PS4-System ist eine modifizierte Version von FreeBSD und verhält sich daher sehr ähnlich wie ein PC. PS4-Executables sind lediglich Custom-ELF-Dateien
Um PS4-Spiele außerhalb der Konsole auszuführen, muss man also die ausführbare Datei des Spiels direkt mappen und die benötigten Symbole irgendwie bereitstellen, zum Beispiel durch eigene Implementierung oder durch Wiederverwendung von PS4-Bibliotheken
Trotzdem dürfte der Zugang zu Informationen ein großer Faktor sein
Insgesamt hat die Branche auch bei der Binärübersetzung große Fortschritte gemacht. Rosetta 2 ist ein Beispiel. Damit ist es ein weiteres Werkzeug geworden, um Binaries in eine andere Host-Umgebung zu bringen
Mir fällt ein, dass vor ein paar Jahren ein anderer PS4-Emulator namens Spine Aufmerksamkeit bekommen hat. Ich frage mich, was aus dem Projekt geworden ist
https://github.com/devofspine/spine
Es gibt keinen Quellcode, nur Binaries