PCSX-Redux wuchs vom Emulator zum Debugger fuer PS1-Reverse-Engineering

Zusammenfassung

PCSX-Redux ist ein offener Zweig von PCSX, der das Stecksystem aufgibt und einen Monolithen baut, dazu einen GDB-Dienst, eine Anbindung an Ghidra, eine Lua-Schnittstelle und eine Anzeige des Bildspeichers. Eine Versionsnummer gibt es nicht, die Pakete sind rollende Staende.

Empfehlen
Name
PCSX-Redux
Version
20261021
Preis
Kostenlos
Open Source
Open Source
Betriebssystem
WindowsLinuxmacOS
Aktualisiert
2026-10-21 15:58

An PS1-Emulatoren fehlt es nicht. Was fehlt, ist einer, der die Innereien sehen laesst. PCSX-Redux legt den Werktisch offen: Disassemblierung, Speicher, Bildspeicher, Haltepunkte und Skripte, fuer jeden, der verstehen will, was eine PlayStation tatsaechlich tut.

Es gibt keine Versionsnummer

Zuerst etwas, das in einer Softwarevorstellung selten vorkommt: Dieses Projekt hat keine Versionsnummer, die in einen Titel passte. Das Verzeichnis enthaelt keine Veroeffentlichungen und keine Versionsmarken, und die Pakete fuer Windows, Linux und macOS sind rollende Staende der Entwicklung. Die offizielle Seite nennt fuenf: Windows 64 Bit, eine Fassung fuer die Befehlseingabe unter Windows 64 Bit, zwei Linux-Pakete fuer 64 Bit und arm64 sowie eine Fassung fuer Apple Silicon unter macOS.

Der Preis der rollenden Auslieferung ist, dass es keinen stabilen Stand zum Anlehnen gibt; der Gewinn ist, dass immer aktueller Code ankommt. Wie rege ein solches Projekt laeuft, laesst sich nur am Verlauf der Einsendungen ablesen, und der Hauptzweig bewegt sich fast taeglich.

Es ist ein Zweig von PCSX

Die Selbstbeschreibung ist deutlich: eine Sammlung rund um Entwicklung und Reverse Engineering fuer PS1, mit Werkzeugen, Forschungsmaterial, Hardwareentwuerfen und Bibliotheken, worin das Kernprodukt PCSX-Redux selbst ein weiterer Zweig des klassischen PS1-Emulators PCSX ist.

Das Projekt steht unter Version 2 der allgemeinen oeffentlichen Lizenz von GNU, ist ueberwiegend in C++ geschrieben, traegt rund tausend Markierungen und hundertfuenfzig Abzweigungen und wird seit Ende 2018 gepflegt. Fuer diese Ecke ist das bescheiden, aber es erkauft einen ziemlich vollstaendigen Satz an Werkzeugen zum Fehlersuchen.

Fuenf Ziele, alle auf Lesbarkeit gerichtet

Die Anleitung nennt fuenf Ziele, und beim Durchlesen zeigt sich, dass es Seiten einer Sache sind: den Codebestand auf neuere Standards bringen; das Stecksystem aufgeben, damit alle Teile der Emulation in einem Monolithen liegen; alles auf OpenGL3+ und ImGui stellen, fuer Portabilitaet und Lesbarkeit; die Erfahrung beim Fehlersuchen verbessern; und die Erfahrung beim Zeichnen verbessern.

Ein Stecksystem war in einer frueheren Zeit die gaengige Antwort. Teile liessen sich einzeln tauschen, zum Preis von Zustaenden, die ueber die Grenze hinweg nie zusammenpassten: Ein Grafikmodul sieht die Zeitdetails der Prozessorseite nicht, und ein Fehlersuchwerkzeug, das beide Linien zugleich will, muss sich eine Bruecke bauen. Als Monolith teilen Werkzeug und Kern eine Speichersicht, und ein Haltepunkt stoppt beide Linien zusammen. Das ist hier die tatsaechliche Bedeutung von Lesbarkeit.

Dass Oberflaeche und Zeichnen auf OpenGL3+ und ImGui liegen, erklaert, warum das Ganze weniger wie eine Spielkonsole und mehr wie ein Entwicklungswerkzeug aussieht: Fenster docken beliebig an, mehrere Felder stehen gleichzeitig offen, und Informationen wandern zwischen ihnen.

Felder zum Fehlersuchen

Die Menueleiste ist ein Instrumentenbrett

Das Kapitel ueber das Menue in der offiziellen Dokumentation lohnt Aufmerksamkeit, weil es keinen Zweifel daran laesst, fuer wen dieser Emulator gedacht ist. Die Leiste zeigt dauerhaft vier Zustandsposten: den Prozessormodus, die Kennung des Spiels, den Bildzaehler von ImGui und den Bildzaehler des Gastes, dazu die Groesse des Tonpuffers in Millisekunden und Bildern. Die Dokumentation vermerkt eigens, dass die ImGui-Zahl nicht die Bildrate innerhalb der PlayStation ist, sondern nur die Auffrischung der Oberflaeche selbst.

Interessant ist die Definition der Gast-Bildrate: Sie zaehlt, wie oft pro Sekunde die nachgeahmte Software den Anfang der Anzeige verschiebt, also wie ein Spiel seine Puffer umschaltet. Gegen den nachgeahmten senkrechten Abgleich gemessen liest sie 50 oder 60, je nach Einstellung des Bildes, und sie liest null, wenn ein Puffer auf dem Schirm stehen bleibt, was bei Zeilensprung, Spielen mit einem einzigen Puffer und manchen pausierten Bildern vorkommt. Eine Null ist kein Haenger, und die Dokumentation sagt das ausdruecklich.

Beide Bildzaehler und der Tonpuffer erscheinen nur, waehrend die Nachahmung laeuft; sonst steht in der Leiste ruhend. Eine Oberflaeche, die Ruhe und Lauf so sorgfaeltig trennt, ist offensichtlich nicht fuer jemanden gedacht, der eine Scheibe einlegt und spielt.

Die Linie des Fehlersuchens ist breit angelegt

Die Dokumentationsseite teilt das Fehlersuchen in Stuecke: einen GDB-Dienst, der mit PCSX-Redux zusammenarbeitet, einen Weg, Ghidra einzubinden, Haltepunkte, eingebettete Assemblersprache und das Lesen und Schreiben von Speicher und Registern. Ausgereifte Werkzeuge von aussen koennen sich also direkt anhaengen und das Ganze als eine PlayStation behandeln, an die ein Fehlersuchwerkzeug andocken kann.

Eine Ebene tiefer liegt die Skriptseite. Das Projekt bringt eine Lua-Schnittstelle mit, zu der die Dokumentation ein ganzes Kapitel hat: Bibliotheken laden, die grundlegende Schnittstelle von Redux, Zeichnen, Dateien lesen und schreiben, Scheibenabbilder bauen, PPF-Flicken anwenden, Speicher und Register, Erweiterungskarten, Ereignisse, Haltepunkte, eingebettete Assemblersprache und den Umgang mit PSX-Binaerdateien. Dass Scheibenabbilder und Flicken die Skriptebene erreichen, heisst: Eine Scheibe zu aendern kann ein wiederholbares Skript werden statt manuellen Klickens.

Zwei weitere Stuecke sind sichtbar: eine Anzeige des Bildspeichers und ein Protokoll der Zeichenkarte. Die erste zeigt, was in jenem einen Megabyte Bildspeicher wirklich steht, das zweite haelt Zeichenbefehle fest. Wer herausfinden will, warum ein Bild so aussieht, wie es aussieht, spart damit oft mehr Zeit als mit Haltepunkten.

OpenBIOS und der Ordner fuer Hardware

Zwei weitere Dinge im Verzeichnis verdienen einen eigenen Satz. Das eine ist OpenBIOS, eine Umsetzung des BIOS fuer den MIPS R3000A, die PS1-Software ohne ein gekauftes BIOS starten kann, gedacht fuer Selbstgebautes und Entwicklung. Das andere ist ein Ordner fuer Hardware mit mehreren Entwuerfen, die sich mit einer PlayStation nutzen lassen, daneben ein Ordner fuer ein Wiki mit Forschungsmaterial ohne direkten Bezug zum Emulator.

Zusammen zeigen sie ein Selbstverstaendnis, das weiter reicht als Emulator: Es ist zugleich ein Archiv und ein Versuchstisch zur PlayStation. Fuer Leute, die Selbstgebautes schreiben, ist der Wechsel zwischen echter Hardware und einer Umgebung mit Fehlersuche eine sehr praktische Erleichterung.

Felder zum Fehlersuchen

Fuer wen es taugt

Wer es als gewoehnlichen Emulator nutzt, findet einen Haufen Felder vor, die nie gebraucht werden. Umgekehrt ist es fuer die Frage, was ein Stueck PS1-Code tut, wie eine Textur zusammengesetzt wurde oder warum ein Bild flimmert, nahezu eine fertige Umgebung. Kostenlos, offen und auf drei Systemen, was es zu einem niedrigen Eingang fuer Lernen und Forschung macht.

Eine Warnung gehoert dazu: Der Emulator liefert nur die Laufzeit. Spielabbilder und ein gekauftes BIOS zu beschaffen, sollte nach oertlichem Recht und Urheberrecht geschehen. Das Projekt ist auf Entwicklung und Reverse Engineering gerichtet, und die offiziellen Zugange zur Gemeinschaft teilen sich in zwei, einen nur fuer den Emulator und einen fuer PS1-Entwicklung und Reverse Engineering.

Der Wert von PCSX-Redux liegt nicht in der Laenge einer Liste vertraeglicher Spiele, sondern in der Bereitschaft, das Innere zu oeffnen: von den paar Zustandszeilen in der Menueleiste ueber die Schnittstellen zu GDB und Skripten bis zu Bildspeicher und Zeichenprotokoll setzt jeder Teil einen Nutzer voraus, der klar sehen will statt nur zu spielen. Solche Werkzeuge bleiben unauffaellig, bis ein Stueck Forschung noetig wird, und dann zaehlt die gesparte Zeit in Tagen.

PCSX-ReduxDownload
Unterstützte Systeme: Windows Linux macOS