Dies ist eine in Arbeit befindliche Dekompilierung von Sly Cooper and the Thievius Raccoonus für die PlayStation 2. Sie erstellt die NTSC-U-Version des Spiels, SCUS_971.98
(SHA1: 57dc305d
).
Das Ziel dieses Projekts ist es, die Spiel-Engine besser zu verstehen. Dieses Repo enthält keine Spielressourcen oder Originalcode aus der ausführbaren Datei des Spiels; Zum Erstellen und Ausführen ist eine eigene Kopie des Spiels erforderlich.
Die Dokumentation des Codes finden Sie unter theonlyzac.github.io/sly1. Weitere Informationen zu den internen Strukturen und Mechanismen des Spiels finden Sie im SlyMods-Wiki.
Neue Mitwirkende sind willkommen und werden gebeten, eine Pull-Anfrage zu stellen! Wenn Sie helfen möchten, aber nicht sicher sind, wo Sie anfangen sollen, schauen Sie sich CONTRIBUTING.md an und melden Sie sich gerne auf unserem Discord-Server an, um Hilfe zu erhalten.
Mithilfe des Schnellstartskripts können Sie das Projekt schnell unter Linux (oder WSL) einrichten. Befolgen Sie diese drei Schritte, um loszulegen.
Kopieren Sie den folgenden Befehl und führen Sie ihn aus. Möglicherweise werden Sie nach Ihrem Passwort gefragt, um Abhängigkeiten zu installieren.
git clone https://github.com/theonlyzac/sly1 &&
cd sly1 &&
./scripts/quickstart.sh
Kopieren Sie die Datei SCUS_971.98
von Ihrer Sly 1-Spiel-CD in das disc
Verzeichnis des Projekts. Es wird zum Bauen benötigt.
./scripts/build.sh
Wenn es funktioniert, sehen Sie Folgendes:
[XXX/XXX] sha1sum config/checksum.sha1
out/SCUS_971.98: OK
Wenn Sie Probleme haben oder das Projekt lieber manuell einrichten möchten, befolgen Sie die nachstehenden Anweisungen. Nachfolgend finden Sie auch Anweisungen zum Ausführen des Spiels.
Das Projekt kann unter Linux (oder Windows mit WSL) erstellt werden. Befolgen Sie die nachstehenden Anweisungen, um die Build-Umgebung einzurichten.
Klonen Sie das Repo auf Ihren lokalen Computer:
git clone https://github.com/TheOnlyZac/sly1
cd sly1
Um das Projekt zu erstellen, müssen Sie die Original-ELF-Datei aus Ihrer eigenen, legal erworbenen Kopie des Spiels extrahieren. Hängen Sie die Disc auf Ihrem PC ein und kopieren Sie die Datei SCUS_971.98
von Ihrer Disc in das disc
-Verzeichnis dieses Projekts.
Wenn Sie Python 3.8 oder höher nicht haben, installieren Sie es:
sudo apt-get install python3 python3-pip
Anschließend installieren Sie die erforderlichen Python-Pakete:
pip3 install -U -r requirements.txt
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install wine32
sudo apt-get install binutils-mips-linux-gnu
cd scripts
./setup-progd-linux.sh
Das Projekt erstellt die ausführbare Datei SCUS_971.98
.
python3 configure.py
ninja
Wenn Sie Konfigurationsdateien aktualisieren oder Quelldateien hinzufügen, müssen Sie eine saubere Neukonfiguration durchführen:
python3 configure.py --clean
Um nur zu bereinigen, ohne sie neu zu konfigurieren (d. h. Build-Dateien zu löschen), verwenden Sie:
python3 configure.py --only-clean
Für die Ausführung der ausführbaren Datei ist PCSX2 2.0 erforderlich. Sie müssen über eine eigene Kopie des Originalspiels und des BIOS von Ihrer eigenen PS2 verfügen. Sie sind in diesem Repo nicht enthalten und wir können sie Ihnen nicht zur Verfügung stellen.
Sobald Sie diese haben und die ausführbare Datei erstellt haben, können Sie sie auf eine von drei Arten ausführen:
Das run.sh
-Skript im scripts
erstellt die ausführbare Datei automatisch neu und führt sie im PCSX2-Emulator aus. Um es zu verwenden, müssen Sie zunächst das Skript bearbeiten, um die Variablen PCSX2_PATH
und ISO_PATH
auf die richtigen Pfade auf Ihrem System festzulegen.
Um den Elf in PCSX2 über die Befehlszeile zu starten, verwenden Sie den folgenden Befehl:
pcsx2.exe -elf " .../sly1/bin/debug/SCUS_971.98 " " /path/to/game/backup.iso "
Ersetzen Sie pcsx2.exe
durch den Pfad zu Ihrer ausführbaren PCSX2 v2.0-Datei (für Linux handelt es sich um eine .appimage- Datei).
-elf
gibt den Pfad zum SCUS_971.98 an, den Sie aus diesem Projekt erstellt haben. Ersetzen Sie ...
durch den Pfad zu diesem Repository. Der Emulator verwendet dieses ELF, um das Spiel zu starten./path/to/game/backup.iso
durch den Pfad zu einem Backup Ihrer eigenen Spiele-CD. Von hier aus lädt das Spiel die Assets. Kopieren Sie SCUS_971.98
aus dem out
in Ihren PCSX2-Spieleordner und benennen Sie es in SCUS_971.98.elf
um. Klicken Sie mit der rechten Maustaste auf das Spiel in PCSX2 und klicken Sie auf „Eigenschaften…“. Gehen Sie zu „Disc-Pfad“, klicken Sie auf „Durchsuchen“ und wählen Sie die ISO Ihres Spiel-Backups aus. Klicken Sie dann auf „Schließen“ und starten Sie das Spiel wie gewohnt.
Das Projekt ist in folgende Verzeichnisse unterteilt:
include
– Header-Dateien für die Spiel-Engine.src
– Der dekompilierte Quellcode.src/P2
.src/P2/splice
.config
– Konfigurationsdateien für Splat (binäres Aufteilungstool).scripts
– Hilfsskripte zum Einrichten der Build-Umgebung.docs
– Dokumentation und Anweisungen zum Mitwirken.tools
– Dienstprogramme für den Funktionsabgleich.reference
– Referenzdateien für Funktionen und Datenstrukturen.Wenn Sie die ausführbare Datei erstellen, werden die folgenden Verzeichnisse erstellt:
asm
– Zerlegter Assembler-Code vom Elf.assets
– Aus dem Elf extrahierte Binärdaten.obj
– Kompilierte Objektdateien.out
– Kompilierte ausführbare Dateien. Als die Entwickler das Spiel erstellten, schrieben sie Quellcode und kompilierten ihn zu Assembler-Code, der auf der PS2 ausgeführt werden kann. Bei einer Dekompilierung wird der Assemblercode rückentwickelt, um neuen Originalcode zu erstellen, der zu einer passenden Assembly kompiliert wird. Dieser Prozess hinterlässt einen Quellcode, der dem Quellcode ähnelt und sich genauso verhält (wenn auch nicht unbedingt identisch), was uns hilft zu verstehen, was die Programmierer gedacht haben, als sie das Spiel erstellt haben.
Wir verwenden ein Tool namens Splat, um die Binärdatei in Assemblydateien aufzuteilen, die jede einzelne Funktion darstellen. Anschließend implementieren wir jede Funktion und Datenstruktur neu, indem wir C++-Code schreiben, der mit demselben Assemblercode kompiliert wird. Wir beziehen bei der Dekompilierung keine Daten oder Codes aus der ursprünglichen Binärdatei des Spiels ein.
Dies war eine der ersten PS2-Dekompilierungen; Seit unserem Start im Jahr 2020 wurden mehrere weitere gestartet. Unsere Hauptinspiration waren andere Projekte wie Super Mario 64 decomp für das N64 und Breath of the Wild decomp für die Wii U (letzteres ähnelte in seinem Umfang eher diesem Projekt). . Es gibt auch einen Jak & Daxter-Decomp/PC-Port namens OpenGOAL, obwohl dieses Spiel zu 98 % in der GOAL-Sprache und nicht in C/C++ basiert.
Ja. Dies war das erste PS2-Dekompilierungsprojekt, das auf die PS2 abzielte und Funktionsabgleich nutzte, bevor es überhaupt möglich war, eine ausführbare Byte-Matching-Datei zu erstellen. Wir haben seit Juli 2024 einen passenden Elf gebaut. Das ultimative Ziel ist es, 100 % der Funktionen des Spiels zu erfüllen.
Wenn Sie einen Beitrag leisten möchten, schauen Sie sich CONTRIBUTING.md an und treten Sie bei Fragen gerne unserem Discord-Server bei!