GameBoy is a registered Trademark of Nintendo Corporation, Ltd.
Einstieg in das Thema “Gameboy Spiele selbst programmieren” findet man am einfachsten über eine der zahlreichen Seiten die sich bereits intensiv mit dem Thema beschäftigt haben. Ich habe auf Reiner Zieglers (Stand 06/2019: site down) Seite angefangen.
Nachbau des CARTIO von Pascal Felber. Eigene Platine im EAGLE-Format, einseitig entflochten.
Erst mal eine Entschuldigung bei Lukas Zimmermann. Dessen Design habe ich nämlich verwendet um die Portierung nach EAGLE durchzuführen, aber hier Pascal Felber als Urheber der Schaltung erwähnt.
Letztlich ist es aber komplizierter: Die Originalschaltung des CartIO stammt von Pascal Felber, machte aber Probleme, wenn die Bits des Parallelport des verwendeten Rechners nicht exakt gleichzeitig schalteten. Der Versuch, die Schaltung durch einfügen von Kondensatoren stabiler zu machen hat nicht richtig gefruchtet. Michael McCormac hat daraufhin einen Synchronisierungsmechanismus entwickelt der das Problem löste. Darauf basiert die Schaltung des Synchronized CartIO von Lukas Zimmermann die ich dann in EAGLE umgesetzt habe.
Als ich mit dem Nachbau begann dachte ich, ich zeichne schnell das Schaltbild in EAGLE nach und entflechte dann eine einseitige Super-Duper-Platine die alle Bauteile inklusive der beiden Steckverbinder aufnimmt und schön klein ist, damit sie billig zu fertigen ist...
Na ja, nach den ersten Versuchen der Umentflechtung habe ich recht schnell einsehen müssen, dass das Design von Lukas schon ziemlich das Optimum für eine einseitige Platine darstellt. Da Lukas keine Einwände hatte, habe ich dann kurzerhand sein Layout in EAGLE nachvollzogen, und lediglich kleine Änderungen eingebracht, die es erlauben, alle Bauteile auf einer halben Europakarte (die natürliche Grenze für die Verwendung der Freeware-Version von EAGLE) unterzubringen.
Das Ergebnis meiner Bemühungen kann als ZIP-Datei mit Schaltbild und Layout im EAGLE 3.5-Format heruntergeladen und auf der nächsten Seite angeschaut werden.
Hier das Schaltbild:
(Click auf das Bild für volle Auflösung)
Die Schaltung entspricht 1:1 dem Entwurf von Lukas, nur habe ich die Signalflussrichtung von links nach rechts orientiert.
Ich ließ die Platine von Adrian Furrer in der Schweiz fertigen. Adrian bietet bisher ausschließlich einseitige Platinen an, dafür ist sein Service preiswert und schnell.
Eine spannende Sache war auch die Bestellung des Gameboy-Steckers. Hier in Deutschland ist sowas offenbar nicht zu haben (zumindest hatte ich damit kein Glück - Stand 2002). Ich habe meine 3 Stecker bei MCM in USA bestellt die ca. 6 Wochen ab Aufgabe der Bestellung unterwegs waren und zusammen fast 40 € kosteten. Die Stecker selbst kosteten jeweils 3,60 Dollar, mithin zusammen ca. 12 €. Der Rest war Handling & Shipping :-{ Der Hinweis auf der MCM-Seite, dass die Kosten für Transport und Verpackung nicht vorher angegeben werden können hat damit für mich seine Erklärung gefunden. Andererseits muss ich gestehen, dass ich in Kenntnis dieses Missverhältnisses zwischen Warenwert und Versandkosten wahrscheinlich immer noch keinen GB-Stecker hätte ;-)
Nach diesen vorbereitenden Maßnahmen konnte dann der Aufbau des Programmers starten.
Die wesentlichen Schritte sind Bestücken
Halt, beinahe hätte ich das vergessen.
Ich musste vor Beginn alle Lötaugen für die Drahtbrücken mit einem 0,8 mm Bohrer nachbohren, weil die verwendeten Vias einen zu geringen Innendurchmesser hatten. Als
Draht habe ich dann 0,6 mm Silberdraht verwendet. Das passt gut. Außerdem müssen für den Gameboy-Stecker noch einige Löcher gebohrt werden, die zwar im Layout
eingezeichnet und auf der Platine markiert sind, aber offenbar im falschen Layer, so dass sie bei der Platinenherstellung nicht gebohrt wurden.
Den Footprint für den Niederspannungsstecker bitte ich zu entschuldigen. Ich habe bisher noch keinen Lieferanten für diesen Stecker gefunden und ihn eigentlich nur verwendet, weil ich ihn schon in der Biliothek hatte. Auf dem Foto sieht man, wie ich das Problem mit einer Einschraub-Niederspannungsbuchse gelöst habe. Die anderen Bauteile sind z.B. bei Reichelt erhältlich (ausgenommen der schon oben erwähnte Gameboy-Stecker).
Da der Quarzoszillator im Schaltbild nicht bezeichnet ist, hier diese Info: der Oszillator schwingt mit 10 MHz. (Danke für den Tipp Matthias!)
Um den Programmer nutzen zu können, bedarf es einer programmierbaren Cart. Auch hierfür gibt es auf den Seiten von Reiner Ziegler massenhaft Beispiele. Ich habe gleich den ersten Vorschlag für eine 512K Cartridge verwendet und als Basis das Spiel “Tetris-DX” gekauft.
Man hat zwei Alternativen das Original-ROM von der Platine zu bekommen. Einmal die Rambo-Methode, also jeden einzelnen Pin des SMD-ICs mit einem feinen Seitenschneider direkt am Gehäuse des IC abzwicken und anschließend die Reste mit Pinzette und Lötkolben von der Platine ablöten. Ich habe mich für die zweite Möglichkeit entschieden und mit einer Stahl-Graviernadel die vorsichtig heiß gemachten Pins einzeln hochgebogen. Auf diese Weise habe ich das ROM noch, was auch immer ich damit letztlich anfangen werde ;-))
Die Platine ohne das ROM sieht dann so aus. Im Bild ist links oben bei der Batterie ein Stück Plastik zu erkennen, das ich zwischen die Platine und den vor Beginn aller Arbeiten abgelöteten Batteriebügel gelegt habe, damit die Schaltung bei den Lötarbeiten spannungslos ist.
Nach Bestückung mit dem Flash-PROM von Typ AM29F040-150JC von AMD und nachdem die Batterie wieder angelötet ist, ist die umgebaute Cart einsatzbereit. Man sieht, dass das Flash-PROM “schief” eingebaut werden muss, weil die Pin-Zuordnung leicht verschoben gegenüber dem Original-ROM ausgelegt ist.
Die Verbindungen zwischen den Anschlüssen an den Schmalseiten des Flash-PROMs und den Lötpads habe ich mit dünnem Kupferlackdraht ausgeführt. Eine ruhige Hand ist für die Durchführung der Arbeiten unabdingbar.
Die Anschlussdrähte am unteren Ende des IC dürfen nicht allzuweit in Richtung der Steckkontakte geführt werden, sonst kommen sie beim Zusammenbau des Gehäuses mit dem Plastiksteg oberhalb des Steckkontakts in Konflikt. Den Draht an Pin 31 des Platinensteckers habe ich entgegen dem Vorschlag auf Reiners Seite nicht direkt am Kontakt angelötet, sondern in die Durchkontaktierung direkt davor eingesteckt und angelötet. Auf diese Weise besteht keine Gefahr, dass das Lötzinn auf den vergoldeten Kontakt läuft und später Kontaktprobleme hervorruft.