#201 – USB-NES Lite

Ach ja – der Cart Reader aus Artikel 184 – ein echt tolles Teil! 🙂

Mittlerweile ist etwas Zeit vergangen und ich habe so gut wie jedes Spielmodul (egal ob GB/C, GBA, SNES oder N64) mit dem Ding digitalisiert. Das hat alles prima funktioniert und ich bin mit dem Gerät echt zufrieden.

Bei der Durchsicht der Spielmodule ist mir allerdings aufgefallen, dass ich ja noch ein paar NES-Spiele im Regal stehen habe! Mist, die hatte ich ja ganz vergessen! 😀

Ob wir die Spiele auch irgendwie digitalisieren können? Tatsächlich gäbe es für den Cart Reader die technische Möglichkeit auch NES-Spiele zu dumpen, doch dafür wird ein spezieller Adapter benötigt, welcher auf den SNES-Slot aufgesteckt wird und das Signal eines NES-Moduls über den Port für Supernintendospiele an den Cart Reader weitergibt.

Klar, so einen Adapter könnte man sich mit Hilfe eines NES-Modulslots, einer Adapterplatine sowie dem entsprechenden Schaltplan zusammenbrutzeln, aber leider ist das Handling von NES Spielen mit dem Cart Reader alles andere als trivial. So müssten z.B. vorab die Größen der verbauten ROM-Chips sowie der Mapper (eine Art Beschreibung der im Modul verbauten Hardwarekomponenten) angegeben werden. Ebenso kann es sein, dass man nachträglich händisch (am PC) die Header-Informationen eines Moduls (mit Hilfe von Informationen aus Datenbanken aus dem Internet) dazu basteln muss, sofern die iNES-Header-Informationen nicht automatisch aus einer speziellen Datenbankdatei von der MicroSD-Karte gelesen werden können – was für ein Aufwand! 🙁

Um ehrlich zu sein habe ich keine große Lust mich damit zu beschäftigen, denn ich glaube ich habe eine viel bessere Lösung gefunden, die NES-Spiele zu digitalisieren. Darf ich vorstellen, das hier ist ein „USB-NES lite“, ein extra für NES-Spiele angefertigtes Gerät zum Auslesen von Spielmodulen! 🙂

Die Teile stammen aus Kanada, werden von einem NES-Freak hergestellt und als Bausatz für umgerechnet ca. 35€ plus Versandkosten (oder alternativ bereits fertig zusammengebaut für 90€) verkauft. Wir haben uns für den heutigen Beitrag natürlich für die Bausatz-Variante entschieden! 😉

In der praktischen Plastikbox (für welche sich bestimmt auch nach dem Bastelprojekt ein sinnvoller Einsatzzweck finden wird), befinden sich ein STM32-Mikrocontroller, die Hauptplatine, ein Micro-USB-Kabel, ein paar Schrauben und Elektronikkleinteile, eine Stiftleiste sowie ein NES-Modulslot.

Die beigelegte Anleitung ist optisch recht spartanisch in Form einer klassischen „README.TXT“ gehalten. Dennoch merkt man, dass viel Liebe in dem Projekt steckt, denn der Entwickler hat sogar einen kleinen Hinweis mit der Hand auf die Anleitung geschrieben – sehr lobenswert! 😉

Na dann – bevor wir wieder in die Theorie abdriften, sollten wir das Ding besser fix zusammenbauen. Als erstes müssen die Stiftleisten vorbereiten werden. Konkret bedeutet das Leisten teilen, Pins verbiegen, Abstandshalter verschieben und die Jumper entfernen. Ich weiß – mega langweilig! 😛

Fun Fact: Wer nichts mit der textbasierten Anleitung anfangen kann, für den hat der Entwickler auch ein Videotutorial auf YouTube hochgeladen! 😉

Ist das geschafft, können wir schon mit dem Löten beginnen. Als erstes ist der Mikrocontroller dran:

Ihm müssen wir einen SMD-Widerstand abnehmen (entlöten) sowie die darunterliegenden Lötpunkte mit einem Stück Draht oder einem fetten Klecks Lötzinn überbrücken.

Fun Fact: Ich habe sicherheitshalber den Micro-USB-Port nochmal etwas nachgelötet, weil dieser recht wackelig auf dem Mikrocontroller gesessen ist. Sicher ist sicher! 🙂

Ich weiß – alles andere als eine wirklich saubere Lötarbeit, aber das seid ihr ja mittlerweile von mir gewohnt! 😛 Mehr muss auf dem STM32-Controller tatsächlich gar nicht getan werden. Somit können wir uns schon um die Bestückung der Hauptplatine kümmern.

Auf dieser müssen wir einen 10kOhm Widerstand, einen Feldeffekttransistor (MOSFET) sowie einen Pegelwandler verlöten. Klar, die Teile sind immer noch verdammt winzig aber für SMD-Komponenten waren sie ungewöhnlich leicht zu verlöten – ich hatte echt schlimmeres erwartet! 😀

Nun müssen wir den Mikrocontroller mit Hilfe der Stiftleisten an die Platine löten. Viel falsch machen kann man dabei eigentlich nicht, man muss nur aufpassen, nicht einen der vielen kleinen Pins zu vergessen oder irgendwelche Lötbrücken zu erzeugen. Business as usual also!

Mal überlegen, was fehlt noch? Ach ja, natürlich – der NES-Modulport. Wie sollten wir sonst ein Spielmodul auf die Platine aufstecken? 😉

Auch das Teil lässt sich glücklicherweise relativ einfach verlöten. Man sollte lediglich darauf achten, dass die 72 Pins des Slots alle möglichst geradestehen und keiner verbogen ist, sonst lässt sich der Port nämlich nicht sauber auf der Platine aufsetzen – eine etwas fummelige Arbeit!

Ist der Slot verlötet ist das USB-NES tatsächlich schon fertig. Cool! 🙂

Soweit so gut, doch wie können wir mit dem Ding jetzt NES-Spiele auslesen? Im Vergleich zum „Open Source Cart Reader“ wird das USB-NES via USB (wer hätte es gedacht) mit einem PC verbunden und fungiert wie ein USB-Datenträger. So die Theorie – ich denke, es wird Zeit das gute Stück mal anzustecken und zu prüfen, ob es läuft. Zumindest leuchtet schon mal eine Power-LED! 🙂

Fun Fact: Theoretisch lässt sich das Ding auch über einen OTG-Adapter an ein Smartphone oder Tablet anschließen – mega abgefahren! 😀

Scheint so, als hätte alles geklappt, denn das USB-NES wird tatsächlich als USB-Gerät (wie z.B. eine externe Festplatte oder ein USB-Stick) erkannt und wir können einfach per Explorer darauf zugreifen:

Der Inhalt ist allerdings nicht gerade spannend, denn außer ein paar Textdateien gibt es nicht wirklich viel zu sehen. Beim Blick in die „version.txt“ fällt auf, dass der Mikrocontroller wohl nicht mit der aktuellen Firmware-Version läuft.

Ich denke, bevor wir irgendwas tun, sollten wir erst mal die Firmware auf den neuesten Stand bringen. Der Updatevorgang klappt mit Hilfe eines Webinterfaces. Letztendlich muss nur eine Binärdatei (security.bin) hochgeladen werden um die neueste Firmware (firmware.bin) zu erhalten, welche anschließend einfach in das Hauptverzeichnis des Geräts gepackt wird.

Mit neuer Softwareversion im Bauch wird es jetzt endlich Zeit, das USB-NES auszuprobieren. Dafür brauchen wir natürlich ein paar NES-Spiele! 🙂

Mit welchem Spiel könnten wir besser anfangen als mit dem NES-Klassiker „Super Mario Bros.“? Richtig – mit keinem anderen! 😛 Letztendlich muss das Spiel nur auf den Slot gesteckt werden.

Sobald wir nun das Gerät neu am USB-Port anstecken oder den Reset-Taster auf dem Mirkocontroller für einen Moment gedrückt halten (letztere Option klappt nicht mit jedem Betriebssystem) wird das Spiel erkannt und unter dem mysteriösen Namen „rom.nes“ im Verzeichnis des USB-NES-Laufwerks gespeichert. Ebenso werden in der „detect.txt“-Datei ein paar Daten des ausgelesenen Spiels (ROM-Datei) angezeigt. Diese lassen sich z.B. gegen die Werte aus der Online-Datenbank „NesCartDB“ vergleichen, um zu prüfen, ob das Gerät die Informationen korrekt ausliest.

Fun Fact: Ein NES-Spiel hat mehrere ROM-Chips verbaut. So gibt es z.B. in jedem Modul ein PRG-ROM auf welchem sich der eigentliche Programmcode (CPU-Befehle) des Spiels befindet. Ebenso findet sich stets ein CHR-Chip (ROM oder RAM) welcher Grafikdaten an den Grafikprozessor (PPU = picture processing unit) übermittelt. Im Fall von „Super Mario Bros.“ sind es 32kB PRG-ROM sowie 8kB CHR-ROM, was in Summe (mit ein paar Metadaten im Header der Datei) insgesamt 41kB ergibt).

Papperlapapp, viel wichtiger ist doch, ob das Spiel auch wirklich läuft! 😉

Um das zu überprüfen, können wir die „rom.nes“-Datei einfach am PC mit Hilfe eines Emulators testen. Ich habe mich für „FCEUX“ entschieden, da dieser bereits (von vorherigen Bastelprojekten) auf meiner Festplatte installiert war. Als Controller habe ich den modifizierten Bluetooth-NES-Controller aus Artikel 101 verwendet. Geil – das Spiel läuft einwandfrei! 🙂

Fun Fact: Damit die Emulation flüssig läuft müssen wir die Region der virtuellen Konsole von NTSC (60Hz) auf PAL (50Hz) umstellen. Alternativ kann man die ROM-Datei auch mit einem „(E)“ am Ende im Dateinamen benennen, dann erkennt der Emulator die Region des Spiels automatisch! 😉

Apropos „NTSC“ – mit „Ninja Gaiden“ habe ich tatsächlich auch ein Modul, welches aus Amerika stammt, somit der NTSC-Norm entspricht und mit 60 Hz läuft. Ob das auch so gut funktioniert?

Tatsächlich! Gott, wie ich dieses Spiel hasse! 😀 Ok, ich gebe es ja zu, es ist eher eine „Hassliebe“. Ob ich den Tag noch erleben werde, an dem ich es schaffe das – nicht nur meiner Meinung nach –  bockschwere Game endlich mal durchzuspielen? Ich glaube nicht… 😀

Fun Fact: Tja, genau das ist der entscheidende Vorteil an einem Emulator. Damit lassen sich Spiele aus sämtlichen Regionen der Welt ohne Probleme abspielen. Auf einer echten europäischen (PAL-)NES-Konsole würde „Ninja Gaiden“ gar nicht erst starten. Warum? Na das wisst ihr ja sicherlich bereits – Region Locking und so – mein absolutes Lieblingsthema! 😛

Angeblich kann das USB-NES auch Spielstände auslesen und diese sogar zurückschreiben. Ich denke, das sollten wir mit „The Legend of Zelda“ doch gleich mal ausprobieren! 😉

Fun Fact: Damit „Zelda“ überhaupt einen Spielstand im ausgeschalteten Zustand der Konsole halten kann, wurden im Modul neben ROM-Chips zusätzlich ein 8kB großer SRAM samt Knopfzelle verbaut. Es ist eines der wenigen NES-Spiele, welche eine Batterie zum Erhalt des Spielstands verbaut hat!

Tatsächlich lässt sich auch der Spielstand (rom.save) ohne Probleme auslesen und im Emulator übernehmen. Uff – wer war denn da so obszön und hat den obersten Spielstand „FICK“ genannt?!

Fun Fact: Wer sich sprichwörtlich auf ein „Retro-Abenteuer“ begeben möchte, dem kann ich das Spiel wärmstens ans Herz legen. Ohne viel Zeit und Geduld, einer selbstgemalten Karte sowie einer guten Portion an „Forscherdrang“ braucht man erst gar nicht versuchen die gute Zelda aus Ganons Klauen zu befreien. Der Titel ist definitiv etwas für echte Abenteurer – einfach ein absoluter Klassiker! 😉

Ich denke gegen den unsittlichen Namen sollten wir schnellstens was unternehmen! Da – „RETRO“ – schon viel besser! 🙂 Praktischerweise können wir so auch gleich testen, ob das Zurückschreiben des Spielstands auf das NES-Modul klappt. Dafür muss die Datei nur entsprechend umbenannt und anschließend auf das USB-NES kopiert (bzw. überschrieben) werden. Und siehe da – tatsächlich scheint der Schreibvorgang funktioniert zu haben, denn mit eingestecktem Modul in einer NES-Konsole können wir bei dem gerade erst am PC angelegten „RETRO“-Spielstand weiterspielen – cool!

Fun Fact: Wusstet ihr, dass man zum Speichern des Spiels „einfach“ auf dem zweiten Controller „Nach-Oben“ und „A“ drücken muss, wenn man sich im Pause-Menü befindet? Ich wusste es nicht! 😀

Wirklich cool das Teil. Besonders gut gefällt mir, dass es völlig intuitiv ist und einfach funktioniert. Jetzt fehlt eigentlich nur noch ein passendes Gehäuse dafür. Das war leider nicht Bestandteil des Kits und muss selbst beigesteuert werden. Zumindest kann man sich die für den 3D-Drucker benötigten Daten auf der Webseite des Projekts herunterladen. Da ich keinen 3D-Drucker habe, hat mir der gute Max mit seinem Gerät ausgeholfen und dieses wunderschöne Case gedruckt. Danke dafür! 🙂

Mit den Gehäuseteilen sowie den Schrauben, die beim Bausatz dabei waren, lässt sich schnell ein passendes „Zuhause“ für die Platine zusammenbasteln.

Sieht echt cool aus wie ich finde! 🙂

So, bitte entschuldigt mich jetzt. Nachdem ich gerade „Castlevania“ digitalisiert habe, packt mich doch glatt die Lust ein paar Vampire mit der Peitsche zu bearbeiten! 😀

In diesem Sinne – bis die Tage, ciao!

Write a comment