#188 – cart reader – V – n64 writing repros

Puh, was war das beim letzten Mal bitte wieder für ein Chaos? Wollten wir nicht eigentlich irgendwelche N64-Module beschreiben? Stattdessen habe ich euch über Romhacks und Repro-Module vollgequatscht. Setzen, Sechs – Themaverfehlung! 😛

Egal, heute ist es so weit und wir wollen mal versuchen ein Modul zu beschreiben. Ich habe in der Zwischenzeit etwas recherchiert: Mit dem Cart Reader lassen sich alle Module, welche einen Altera Max II Logikchip sowie einen Spansion S29GL256N Flashbaustein verbaut haben, beschreiben. Glück für uns – das Banjo-Kazooie-Modul erfüllt tatsächlich diese Voraussetzungen! 🙂

Fun Fact: Die Platine von 40 Winks sieht professioneller gefertigter aus und erinnert mich von den Bauteilen her irgendwie an die originalen N64-Platinen. Dennoch werden zum Flashen die einfachen China-Nachbauten benötigt. Tja, was soll man sagen – es ist eben ein Open Source Projekt! 😉

Damit das mit dem Beschreiben des Moduls klappt, müssen erst mal alle seitlich am Cart Reader angebrachten Schalter in die rechte Position gebracht werden:

Nun können wir uns entscheiden, welches Spiel wir auf das Modul flashen möchten. Bei dieser Wahl sind wir leider nicht ganz frei, denn leider spuckt uns – mal wieder – das Thema „region locking“ in die Suppe! Gott, wie ich es hasse! 🙁 Um ehrlich zu sein gibt es zahlreiche Abhängigkeiten und Variablen zu beachten, auf die ich an dieser Stelle nicht alle eingehen kann. Letztendlich hängt es u.a. davon ab welcher Lockout-Chip (CIC) im Modul verbaut ist, welcher Fernsehnorm die verwendete Konsole angehört, ob das Spiel eine Sicherheitsabfrage besitzt und so weiter…

Fun Fact: Ich habe die grundlegenden Möglichkeiten und Werkzeuge bereits in Artikel 37 vorgestellt. Wer masochistisch drauf ist, kann sich den Beitrag gerne nochmal reinziehen. Es ist wirklich unfassbar wie komplex das Thema ist! 😀

Das bedeutet im Umkehrschluss für uns, dass wir nicht einfach jedes beliebige Spiel auf die Karte brennen können. Der einschränkende Faktor ist der auf der Modul-Platine verwendete CIC-Chip. In unserem Fall ist das ein CIC-NUS-7103. Laut dieser Liste haben wir somit nur eine eher kleine Auswahl an in Europa erschienenen Spielen, welche auf dem Modul funktionieren sollten.

Fun Fact: Die meisten dieser China-Repro-Module haben einen ultraCIC (ATTiny-Mikrocontroller) verbaut, welcher mit entsprechendem Zubehör auch auf einen anderen CIC-Typ geflashed werden könnte. Seht es mir nach, dass ich mir das – zumindest für heute – erspare! 🙂

Ich denke als erstes sollten wir mal versuchen ein kompatibles Spiel (mit gleichem CIC) auf das Modul zu schreiben. Nach einiger Überlegung habe ich mich letztendlich für „Pokémon Stadium“ entschieden. Die ROM-Datei habe ich mir bereits mit Hilfe des Cart Readers von einem originalen Modul gesichert. Wie das geht zeige ich euch jetzt nicht nochmal, das haben wir ja schon in Artikel 186 gelernt! 😉 Bevor der eigentliche Schreibvorgang beginnen kann, muss die ROM-Datei vorbereitet, bzw. in das benötigte z64-Format konvertiert werden. Das geht mit Hilfe einer Software namens „Tool64“:

Fun Fact: Wer nichts herunterladen möchte, kann auch einen Online-Converter verwenden! 😉

Sobald wir die konvertierte ROM-Datei auf die MicroSD-Karte kopiert haben, kann der Schreibvorgang beginnen. Für das 32MB große Spiel hat der Reader (samt Löschvorgang des Flashspeichers sowie Verifikation der geschriebenen Daten) ca. 14 Minuten gebraucht. Nicht gerade schnell, aber das Beschreiben von Chips dauert für gewöhnlich immer recht lang. Die Frage ist jetzt nur: Hat der Schreibvorgang geklappt? Zumindest der Cart Reader scheint das Modul zu erkennen:

Bleibt nur noch zu testen, ob unser frisch bestücktes Modul auch auf einer echten N64-Konsole funktioniert. Hierfür habe ich den guten alten „Pikachu-N64“ aus Artikel 47 rausgekramt! 😉

Mensch, ich bin begeistert – es funktioniert tatsächlich! Geil! 🙂

Soweit so gut, doch zugegeben – das war der „best case“ den wir da soeben ausprobiert haben. Wie sieht es denn z.B. aus, wenn wir ein Spiel auf das Modul schreiben möchten, welches einen anderen CIC-Typ hat? Um das auszuprobieren habe ich das Spiel „Gex: Enter the Gecko“ (siehe Artikel 126) welches einen CIC-NUS-7101-Chip verbaut hat vom Originalmodul ausgelesen…

…und anschließend auf das Repro-Modul geschrieben.

Um zu prüfen, ob das „kopierte“ Modul auf einem N64 abspielbar ist, darf natürlich „Pikachu“ uns gerne wieder helfen. Was soll ich sagen – man bekommt einfach gleich viel bessere Laune, wenn Pikachus Backen anfangen zu blinken. Ich weiß – es sind nur zwei einfache LEDs aber ich bin halt ein Spielkind! 😛

Wie zu erwarten war hat das leider nicht funktioniert und das Bild bleibt schwarz. Eigentlich völlig logisch, schließlich stimmt der CIC-Typ von der ROM-Datei ja nicht mit dem im Modul verbauten CIC-Chip überein.

Doch keine Angst – Abhilfe kommt in Form eines kleinen Tools namens „motetIII“. Damit lässt sich der CIC-Typ in einer Rom-Datei nach Belieben verändern:

Wer sich über den lustigen Parameter „-diddy“ wundert: Die einzelnen nach Spielen benannten Parameter zur Bestimmung des CIC-Typs stehen einfach stellvertretend für das Spiel, welches den jeweiligen CIC als erstes eingeführt hat. Lustig! 😀

Nach einem erneuten Schreibvorgang der modifizierten ROM-Datei auf das Modul sieht die Welt schon viel besser aus. Das Spiel wird von der Konsole erkannt und gestartet:

Not so fun Fact: Leider funktioniert dieser Hack nicht bei allen Spielen. Sobald die Entwickler weitere Checks und Sicherheitsabfragen eingebaut haben, kann es sein, dass das Spiel nicht korrekt läuft oder erst gar nicht startet. Wäre ja auch zu einfach wenn wir alle Spiele einfach durch den Tausch von ein paar Binärdaten austricksen könnten! 😉

Sehr schön, somit haben wir also eine Möglichkeit gefunden auch andere PAL-Spiele (also Spiele, die keinen CICS-NUS-7103 verbaut haben) auf das Modul zu schreiben und abzuspielen. Und wie sieht es mit amerikanischen NTSC-Spielen aus? Leider lässt sich hier noch weniger eine allgemeine Aussage treffen ob und wenn ja wie sich solche Spiele konvertieren, auf ein Modul schreiben und auf einer europäischen Konsole abspielen lassen. Selbst wenn sich Dinge wie CIC und Sicherheitsabfragen überlisten lassen, kann es sein, dass die unterschiedlichen Parameter der Fernsehnormen PAL und NTSC (z.B. Bildrate PAL 50Hz / NTSC 60Hz, Auflösung, Farbcodierung, Videosignal, etc.) einem das Genick brechen…

Eigentlich schade, denn dabei ist das doch so eine interessante Idee! Stellt euch mal vor – so könnten wir uns ein Spielmodul mit einem Spiel bauen, welches hierzulande nie für das Nintendo 64 erschienen ist. Und um ehrlich zu sein hätte ich auch schon den perfekten Kandidaten im Kopf. Für mich als alten Tony Hawk’s-Fan kommt eigentlich nur das Amerika-exklusive „Tony Hawk’s Pro Skater 3“ in Frage. Na, ob wir das hinbekommen? Da hilft nur die Devise „Probieren geht über Studieren“! Denn seien wir mal ernsthaft – wie könnte ich der Verlockung wiederstehen? 😉

Zumindest müssen wir nicht ganz bei null anfangen, denn ich habe bereits die ROM-Datei des Spiels – und das schon sehr lange! Tatsächlich habe ich mir vor Jahren mal das amerikanische N64-Modul gekauft. Ich hatte es mir unbedingt eingebildet und war dann ziemlich enttäuscht, als ich feststellen musste, dass es sich dank der blöden, abweichenden Modulform nicht auf meiner europäischen Konsole spielen lässt. Ein Kollege aus einem Videospielforum war damals so nett und hat es mir (mit Hilfe eines ähnlichen Gerätes wie dem Cart Reader) digital gesichert. So konnte ich es zumindest in einem Emulator spielen! 🙂

Trotzdem hat mich der Gedanke eines „richtigen Moduls“ mit dem Spiel, welches sich auf echter Hardware abspielen lässt nie ganz losgelassen. Mal sehen, motetIII sagt uns, dass es sich um einen CIC-Typ 6102 handelt. Das ist nicht ganz ideal, denn das korrekte, europäische Gegenstück wäre der 7101, doch auf unserem Repro-Modul ist ja ein Chip vom Typ 7103 verbaut.

Ich denke bevor wir versuchen den CIC zu verbiegen, sollten wir erst mal das Spiel mit Hilfe von PALadin (siehe Artikel 37) in eine PAL-ROM zu konvertieren.

Ist das geschafft können wir den CIC verändern. Was mich etwas irritiert ist, dass motetIII die Änderung von PALadin nicht erkennt und davon ausgeht, dass es sich immer noch um eine NTSC-ROM-Datei handelt. Dementsprechend wird der CIC-Typ nicht auf 7103 sondern 6103 angepasst:

Ob es trotzdem funktioniert? Nach dem Schreibvorgang auf das Modul startet das Spiel tatsächlich auch auf der N64-Konsole – abgefahren! 🙂

Das einzige was negativ auffällt – das Bild wird nur schwarz-weiß angezeigt. Woran liegt das? Durch die Tricksereien in der ROM-Datei gibt die Konsole nun kein sauberes PAL-Signal mit 50Hz (so wie es der USB Video Grabber, welchen ich zur Aufnahme der Screenshots der N64-Konsole verwendet habe, erwarten würde) mehr aus. Stattdessen besteht das Signal aus einem Mischmasch aus 60Hz NTSC-Video mit einer PAL-Auflösung). Damit können leider nicht alle Geräte umgehen.

Ihr glaubt mir nicht? Als Beweis habe ich das Modul an einer N64-Konsole in meinem Keller direkt am Fernseher angeschlossen. Dieser bietet NTSC-Support (60Hz), bzw. einen „PAL60-Kompatibilitäts-Modus“ und kann das Signal sauber verarbeiten. Und schon haben wir Farben! 🙂

Nachdem das geschafft ist, stelle ich mir ernsthaft die Frage, welches Spiel ich „dauerhaft“ auf dem Modul lassen möchte… Klar – ich könnte einfach wieder die ursprüngliche ROM (den Banjo-Kazooie-Hack) aufspielen, aber ich glaube ich habe da eine bessere Idee…

Erinnert ihr euch noch an Artikel 56? Wir hatten uns das EverDrive 64 angesehen und sind dabei auf eine äußerst interessante Möglichkeit gestoßen wie man Game Boy Spiele (echte Module) mit Hilfe des Transfer Paks und einer modifizierten Version von „Pokémon Stadium 2“ auf dem N64 abspielen kann.

Ich denke das wäre doch eine prima Gelegenheit mir ein Modul als Gegenstück zum Transfer Pak zu bauen. So wäre ich unabhängig vom EverDrive und hätte eine Art Game Boy Player wie auf dem GameCube – nur eben für das N64!

Es ist wirklich verblüffend. Ich habe definitiv mit etwas Gegenwind gerechnet, aber tatsächlich funktioniert das Modul mit der Transfer Pak Game Boy Software ohne Probleme. Mit eingestecktem Game Boy Modul können wir auch tatsächlich Game Boy spielen!

Fun Fact: Tatsächlich musste ich die ROM-Datei mit dem Programm (obwohl es auch für NTSC-Konsolen programmiert wurde) nicht einmal konvertieren und konnte sie eins zu eins so aus Artikel 56 übernehmen. Es ist schön, wenn auch mal etwas „einfacher als gedacht“ funktioniert! 😉

Zugegeben – die Kompatibilität ist nicht die beste und ich könnte mir vorstellen, dass es auch bei Spielen, die funktionieren, ein paar Probleme (Glitches, Spriteflackern, Soundstottern oder zerstörte und nicht lesbare Spielstände) gibt, aber alleine die Tatsache, dass das überhaupt funktioniert, finde ich schon sehr beeindruckend!

Um die Sache rund zu machen, habe ich ein einfaches Label designet und dieses auf Aufklebepapier ausgedruckt. Klar – man sieht sofort, dass das kein offizielles Modul von Nintendo ist, aber das war auch überhaupt nicht die Absicht. Ein bisschen „selbstgemacht“ darf ruhig auch an der Optik erkennbar sein! 😉

So, ich hoffe ihr entschuldigt mich – nach diesem ganzen Lesen und Schreiben bin ich doch etwas müde und werde jetzt zur Entspannung eine Runde „Kirby’s Dream Land“ spielen…

In diesem Sinne – bis die Tage, ciao!

Write a comment