<- Klicken Sie hier, um dem Discord-Server beizutreten.
Dieses Projekt zielt darauf ab, den Quellcode von Touhou Koumakyou ~ the Embodiment of Scarlet Devil 1.02h vom Team Shanghai Alice perfekt zu rekonstruieren.
Dieses Projekt ist noch in vollem Gange und befindet sich in einem frühen Stadium.
Dieses Projekt erfordert die ursprüngliche東方紅魔郷.exe
Version 1.02h (SHA256-Hashsum 9f76483c46256804792399296619c1274363c31cd8f1775fafb55106fb852245). Sie können das Hashsum unter Windows mit dem Befehl certutil -hashfile <path-to-your-file> SHA256
überprüfen certutil -hashfile <path-to-your-file> SHA256
.)
Kopieren Sie東方紅魔郷.exe
nach resources/game.exe
.
Für das Build-System gelten die folgenden Paketanforderungen:
python3
>= 3.4msiextract
(nur unter Linux/MacOS)wine
(nur unter Linux/MacOS, bevorzugen Sie CrossOver unter macOS, um mögliche CL.EXE-Heap-Probleme zu vermeiden)aria2c
(optional, ermöglicht Torrent-Downloads, wird bei Auswahl automatisch unter Windows installiert.)Der Rest des Build-Systems besteht aus Visual Studio 2002 und DirectX 8.0 aus dem Web Archive.
Dadurch werden Compiler, Bibliotheken und andere Tools heruntergeladen und installiert.
Wenn Sie unter Windows arbeiten und Abhängigkeiten aus irgendeinem Grund manuell herunterladen möchten, führen Sie diesen Befehl aus, um die Liste der herunterzuladenden Dateien abzurufen:
python scripts/create_devenv.py scripts/dls scripts/prefix --no-download
Wenn Sie jedoch möchten, dass alles automatisch heruntergeladen wird, führen Sie es stattdessen wie folgt aus:
python scripts/create_devenv.py scripts/dls scripts/prefix
Und wenn Sie Torrent zum Herunterladen dieser Abhängigkeiten verwenden möchten, verwenden Sie Folgendes:
python scripts/create_devenv.py scripts/dls scripts/prefix --torrent
Führen Sie unter Linux und Mac das folgende Skript aus:
# NOTE: On macOS if you use CrossOver.
# export WINE=<CrossOverPath>/wine
./scripts/create_th06_prefix
Führen Sie das folgende Skript aus:
python3 ./scripts/build.py
Dadurch wird automatisch ein Ninja-Build-Skript build.ninja
generiert und Ninja darauf ausgeführt.
Einen XML-Export unseres Ghidra RE finden Sie im Begleit-Repository th06-re im xml
Zweig. Dieses Repo wird jede Nacht über [ scripts/export_ghidra_database.py
] aktualisiert und sein Verlauf stimmt mit dem Check-in-Verlauf vom Ghidra-Server unseres Teams überein.
Wenn Sie uns bei unseren Reverse-Engineering-Bemühungen helfen möchten, kontaktieren Sie bitte @roblabla auf Discord, damit wir Ihnen ein Konto auf dem Ghidra-Server geben können.
Der einfachste Weg, an der Neuimplementierung zu arbeiten, ist die Verwendung von objdiff
. So fangen Sie an:
東方紅魔郷.exe
(Version 1.02h) in den Ordner resources/
und benennen Sie sie in game.exe
um. Dies wird als Quelle für den Vergleich der Neuimplementierungen verwendet.python3 scripts/export_ghidra_objs.py --import-csv
aus. Dadurch werden aus resources/game.exe
die Objektdateien extrahiert, mit denen objdiff vergleichen kann. Am einfachsten ist es, sich die Dateien config/stubbed.csv
anzusehen. Das sind alles Funktionen, die automatisch ausgeblendet werden. Sie sollten eine davon auswählen, die zugehörige Objektdatei in objdiff öffnen und auf die gewünschte Funktion klicken.
Öffnen Sie dann die richtige cpp
Datei, kopieren/fügen Sie die Deklaration ein und beginnen Sie mit dem Hacken! Es kann nützlich sein, die Ausgabe des Ghidra-Decompilers als Basis zu verwenden. Sie finden diese Ausgabe im th06-re-Repository.
Wir möchten uns bei den folgenden Personen für ihre unschätzbaren Beiträge bedanken:
var_order
Pragmas auf MSVC7.