Wiimms ISO Patcher

Aus Wiiki
Wechseln zu: Navigation, Suche
In Bearbeitung
Dieser Artikel ist noch unvollständig und Bedarf einer Bearbeitung, die im Moment hauptsächlich durch Wiimm erfolgt. Ergänzungen und Korrekturen Dritter sind dennoch erwünscht.

Wiimms ISO Patcher ist eine Script- und Tool-Sammlung um Wii-Images zu patchen. Diese Sammlung wurde von Wiimm für Wiimms Mario Kart Fun entwickelt und funktioniert unter Windows, Mac und Linux. Durch Anpassungen und Austausch von wenigen Dateien ist der Patcher für jedes Wii-Image nutzbar. Es können auch Riivolution-Dateien erzeugt werden. Die gesamte Software steht unter Open-Source-Lizenzen.



Patch-Prinzip

Wii-Images

Der Patcher basiert auf Wiimms ISO Tools, die es für Windows, Mac und Linux, aber auch als Quelltext gibt. Insbesondere wird das Tool wit[1] verwendet, um ein original Wii-Image in die einzelnen Dateien zu zerlegen und zum Schluss die gepatchten Dateien wieder zu einem Image zusammen zufügen. Die ganze Steuerung erfolgt über bash-Scripte[2], so dass man den Patcher mit ein wenig Programmierkenntnissen an die jeweiligen Bedürfnisse anpassen kann.

Vorbereitung durch den Benutzer

Der Benutzer lädt das Patch-Paket. Es enthält sowohl die benötigte Software als auch die Patch-Dateien. Er entpackt das Archiv (üblicherweise ZIP, 7ZIP oder RAR) in ein Verzeichnis und legt eine Kopie des Original-Images in dieses Verzeichnis ab.

Danach ruft er je nach Betriebssystem das Script create-image.bat (Windows) bzw. create-image.sh (Mac und Linux) auf.

Patch-Vorgang

Nach dem Aufruf des Scriptes create-image.* durch den Benutzer läuft der Patch-Vorgang in den folgenden Schritten ab:

Optionen abfragen
Es werden Optionen zur Ausführung abgefragt. Dieses sind üblicherweise Spracheinstellungen, das Format des zu erzeugenden Images sowie die Art des Savegames.
Suchen eine passenden Wii-Images
Es wird ein passendes Original-Image gesucht. Dieses kann in einem der Formate ISO, CISO, WBFS, WDF oder WIA sein. Je nach Patch können auch verschiedene Regional-Versionen des Spieles unterstützt werden.
Entpacken des Original-Wii-Images
Wurde ein gültiges Image entdeckt, dann wird das Unterverzeichnis patch-dir angelegt und das Image in diesem Verzeichnis entpackt. Nun hat man Zugriff auf jede einzelne Datei.
Ausführen von Scripten
Existiert die Datei ./pre-patch.sh, dann wird sie als bash-Script ausgeführt. Damit kann man Dateien sicher oder manipulieren, bevor der eigentliche Patch eingespielt wird und damit Dateien überschrieben werden.
Entpacken der Patch-Datei
Nun wird aus einem ZIP- oder TAR-Archiv der Patch eingespielt. Dazu wird das Archiv entpackt und Dateien im Verzeichnis patch-dir neu angelegt bzw. überschrieben. Der Vorteil eines TAR-Archives liegt in der Unterstützung von Hardlinks.
Ausführen von Scripten
Existiert die Datei patch-dir/post-patch.sh, dann wird sie als bash-Script ausgeführt. Hier kann man nun programmgesteuert Dateien verändern. Wiimms Mario Kart Fun nutzt dieses z.B. zum Patchen der Grafiken und Texte.
Neues Wii-Image erstellen
Zum Schluss wird ein neues Wii-Image erstellt.
Alternativ: Riivolution-Setup erstellen
Alternativ zum Wii-Image kann auch ein Riivolution-Setup erstellt werden.

System-Unterstützung

Das ganze Patch-System basiert auf der Unix-Shell bash[2] und einigen Standard-Unix-Tools. Mac und Linux haben diese Tools installiert. Für Windows liefert der Patcher eine passende Cygwin-Umgebung[3] aus. Auch wit benötigt einige der Cygwin-DLLs.

Hierdurch ist eine einheitliche Programmierung des Patchers möglich, die auf allen Systemen dieselben Ergebnisse liefert. Die Windows-Batchdateien (*.bat) machen nichts anderes, als die Cygwin-Umgebung zu starten und das gleichnamige Shell-Script (*.sh) aufzurufen.

Anpassungen

Die aktuellste Version des Patchers findet man unter Wiimms Mario Kart Fun. Hier einfach die letzte Version laden. Danach müssen die folgenden Dateien angepasst werden. Zum Editieren unter Windows muss ein reiner Text-Editor, wie z.B. Notepad++, verwendet werden.

zero-files.list

Diese Datei ist eine Optimierung für Fortgeschrittene. Im Zweifel löscht man die Datei einfach.

Die Datei enthält eine Liste von Dateien der DVD, die nicht benötigt werden. Diese Dateien werden dann mit einer Länge von Null Bytes entpackt. Damit lässt sich der Entpack-Vorgang des Wii-Images wesentlich beschleunigen. Existiert die Datei nicht, dann werden alle Dateien der DVD kopiert. Diese Datei wird komplett ignoriert, wenn eine Riivolution-Setup anstatt eines Wii-Images erzeugt werden soll.

Syntax

Die Datei enthält eine Liste der Dateien, die genullt werden soll. Daher auch der Name zero-files.list. Die Liste wird für jede Datei von oben nach unten abgearbeitet, bis ein Treffer gefunden wird. Platzhalter wie '*' sind auch möglich. Bei einem Treffer entscheidet das erste Zeichen, ob die Datei normal kopiert wird.

  • Ein Minuszeichen ('−') bedeutet, dass die Datei nicht genullt wird, so dass sie normal kopiert wird.
  • Ein Pluszeichen ('+') bedeutet, dass die Datei genullt wird, also die Datei mit Null Bytes Länge angelegt wird.

Syntax Details

Beispiel aus Wiimms Mario Kart Fun
-/files/thp/title/top_menu.thp
+/files/thp/title/*.thp
+/files/thp/ending/*.thp

Die normalen Dateien befinden sich alle im Unterordner /files/. In dem Beispiel soll die Datei thp/title/top_menu.thp (erste Zeile) kopiert werden, aber alle anderen *.thp Dateien in thp/title/ (zweite Zeile) und thp/ending/ (dritte Zeile) nicht. Diese genullten sind alle Video-Datein, die durch ein kurzes Video ersetzt werde. Damit verringert sich die Größe des Ergebnis-Images von c.a. 2,7 GB auf 1,4 GB.

riiv-extract.list

Diese Datei wird nur benötigt, wenn der Patcher auch Riivolution unterstützt. Ohne Riivolution-Unterstützung kann die Datei gelöscht werden.

Die Datei enthält eine Liste von Dateien der DVD, die benötigt werden, falls als Zielmedium Riivolution ausgewählt wurde. In diesem Falle werden nur Dateien benötigt, die beim Benutzer gepatcht werden. Dateien,die unverändert bleiben oder die in patch.tar enthalten sind, müssen nicht entpackt werden.

Fehlt die Datei, dann wird das komplette Wii-Image entpackt.

Syntax

Die Syntax ist dieselbe wie bei zero-files.list. Die Liste wird für jede Datei von oben nach unten abgearbeitet, bis ein Treffer gefunden wird. Platzhalter wie '*' sind auch möglich. Bei einem Treffer entscheidet das erste Zeichen, ob die Datei kopiert wird.

  • Ein Minuszeichen ('−') bedeutet, dass die Datei ignoriert wird.
  • Ein Pluszeichen ('+') bedeutet, dass die Datei kopiert wird.

Syntax Details

Beispiel aus Wiimms Mario Kart Fun
+/files/Boot/Strap
+/files/Scene/UI
+/files/rel
+/files/Race/Course

Die normalen Dateien befinden sich alle im Unterordner /files/. In dem Beispiel sind 4 Verzeichnisse angegeben, die Dateien enthalten, die beim Benutzer durch das Script post-patch.sh gepatcht werden. Alle Unterverzeichnisse und Dateien, auch rekursiv, der 4 genannten Verzeichnisse werden entpackt.

patch.tar

patch.tar ist das große Datei-Archiv. Es wird zwingend benötigt. Anstatt einem TAR-Archiv kann auch ein ZIP-Archiv mit dem Namen patch.zip verwendet werden. Eine Änderung muss in die Datei create-image.sh eingetragen werden. Der Vorteil eines TAR-Archives ist, dass es auch Hardlinks[4] speichern kann.

Das Patch-Archiv muss eine vorgegebene Dateistruktur einhalten und enthält bereits gepatchte Dateien sowie Scripte und weitere Dateien, die zum Patchen beim Benutzer verwendet werden:

  • Alle Dateien befinden sich in Unterordner patch-dir/....
  • Alle Dateien, die die direkt in das neue Image kopiert werden sollen, befinden sich unter patch-dir/files/.... Hier ist die Verzeichnisstruktur der Original-DVD einzuhalten.
  • Das Post-Patch-Script befindet sich unter patch-dir/post-patch.sh, falls vorhanden.
  • Weitere Hilfsdateien können können unter patch-dir/... und anderen Unterverzeichnissen abgelegt werden. Dabei ist darauf zu achten, dass es keine Namenskonflikte mit dem Image-Creator von wit[5]. Daher müssen Namen wie sys, disc, *.bin und *.fst vermieden werden.
Beispiel aus Wiimms Mario Kart Fun

Die folgende Liste zeigt ausschnittsweise den Inhalt der Datei patch.tar. Die 3 Punkte in einer Zeile bedeuten, dass hier die Liste gekürzt wurde:

patch-dir/
...
patch-dir/post-patch.sh
...
patch-dir/files/
patch-dir/files/Race/
patch-dir/files/Race/Course/
patch-dir/files/Race/Course/.wu8/
patch-dir/files/Race/Course/.wu8/truck_course.wu8
patch-dir/files/Race/Course/.wu8/old_koopa_gba.wu8
...
patch-dir/files/_Wiimm/
patch-dir/files/_Wiimm/setup.txt
patch-dir/files/_Wiimm/tracks.txt
patch-dir/files/_Wiimm/img-patch/
patch-dir/files/_Wiimm/img-patch/title1.png
patch-dir/files/_Wiimm/img-patch/signature.png
...
patch-dir/files/_Wiimm/bmg-patch/
patch-dir/files/_Wiimm/bmg-patch/mark.txt
patch-dir/files/_Wiimm/bmg-patch/lang-E.txt
patch-dir/files/_Wiimm/bmg-patch/lang-G.txt
...
patch-dir/ 
Basis aller Dateien.
patch-dir/post-patch.sh 
Dieses ist das Script, welches nach dem Entpacken des Patch-Archivs ausgeführt wird.
patch-dir/files/ 
Basis aller Dateien, die auf das neue Image kopiert werden sollen.
patch-dir/files/Race/Course/.wu8/ 
Verzeichnisse und Dateien, die mit einem Punkt beginnen, gelten als versteckt und werden nicht kopiert. Dieses Verzeichnis enthält die Strecken als Patch-Datei. Das Script post-patch.sh sorgt dann dafür, dass aus den *.wu8-Dateien die echten Strecken-Dateien erzeugt und im Verzeichnis patch-dir/files/Race/Course/ abgelegt werden.
patch-dir/files/_Wiimm/ 
Hier sind Bilder und Text-Dateien zum Patchen abgelegt. Es ist Absicht, dass diese Dateien als Sicherung und Information mit auf das neue Image kopiert werden, obwohl sie für das Spielen absolut bedeutungslos sind.

create-image.sh

???

param.sh

???

pre-patch.sh

???

post-patch.sh

???

Windows-Creator.exe

???

Referenzen

  1. Wiimms ISO Tools: wit
  2. 2,0 2,1 Wikipedia: bash
  3. Cygwin, a Linux environment for Windows
  4. Wikipedia: Hardlink
  5. wit: Definition of a FST partition