Es ist wieder einige Zeit vergangen, dass ich es schaffe, in den späteren Abendstunden Zeit und Energie zu finden, hier im Blog über eines meiner kleinen Projektchen zu schreiben. Ich habe mir in den letzten Jahren angewöhnt, bei Autofahrten und nächtens, Podcasts zu hören. Dazu gehören in erster Linie Podcasts zu technischen Themen. Darunter ist auch ein Podcast, der sich „Retrokompott“ nennt und sich mit Homecomputern und Technik aus unserer Jugendzeit beschäftigt. Deren Slogan lautet:
Retrokompott, eine Zeitreise in die Vergangenheit alter Homecomputer, Spielekonsolen und Games
In einem der Beiträge von Retrokompott diskutierte man einige Folgen lang (172-177) über die Vectrex, den Heim – Vectorspieleautomaten von MBE. Hier wurden unter anderen auch Homebrewprojekte, also Software-Eigenentwicklungen der Anwender vorgestellt. „Vectorblade“ ist dabei ein Spieletitel, der von Malban [http://vide.malban.de/] entwickelt wurde. Das Projekt wurde dabei mit dem ebenfalls von Malban entwickelten Vectrexcompiler (vide) erstellt. Die Sourcen sind öffentlich auf der Website verfügbar. In dem „Kompott“-Beitrag hat man so begeistert über Vectorblade berichtet, dass mein Interesse dafür geweckt war. Das Spielemodul war auch eine Zeit lang über Malban zu erwerben. Ich habe aber keine Quelle gefunden, über die ich das Modul auf einfache Weise erwerben kann. So dachte ich mir, baue ich mir das halt einfach nach. Das Besondere an diesem Gamerom ist die Größe des Games. Es hat stolze 192 kB. Um diesen Speicher adressieren zu können, hat sich Malban der Bank-Switching Technologie bedient. Er verwendet in seinem Design einen Flash-Speicher von SST, den SST39SF020. Das Bankswitching wird über einen Vierfach-2-Eingang NAND Schmitt Trigger (74AC132) gesteuert. Malban hat auf git das Layout veröffentlicht. Dort verwendet er den Speicher im DIL-Package und ebenso auch den AC132. Eine detaillierte Anleitung findet man hier.
Da ich von meinem alten Selbstbau-Rom Modul Projekt noch einige Platinen über habe, konnte ich schnell einen Versuchsaufbau zusammenstoppeln. Flashspeicher hatte ich zwar keinen zur Verfügung – sehr wohl aber eine ausreichend großes EPROM. Der Vide-Compiler und die Source-Files sind auf Malbans GIT ebenfalls veröffentlicht. Nach kurzem Studium seines Vide-Compilers ist es mir gelungen das Projekt zu kompilieren und eine ROM – Datei zu erstellen. Mit meinem „Fernostprogrammer“ konnte ich dann das EPROM „brennen“. Mit ein paar Drahtbrücken und einem AC132 wurde aus meinem alten ROM-Platinen Projekt dann der Vectorblade Versuchsaufbau.
Mit der Ausnahme, dass keine Settings gespeichert werden können, funktioniert der Testaufbau und das Game lässt sich spielen :). Der nächste Schritt des Nachbaus war dann die Platine zu zeichnen. Hier wollte ich den Schmitt-Trigger Baustein in SMD Ausführung einbauen und den SST weiterhin in DIL. Ich habe diese Ausführung auch realisiert und erfolgreich getestet. Es gibt aber einen kleinen Haken – keiner meiner Lieferanten hat den SST39SF020 Flashspeicher in DIL Ausführung auf Lager. Ich habe jetzt zwar einige Platinen mit DIL – Layout aber eben keine Chips… Also noch einmal zum PC und das Design auf PLCC Sockel umzeichnen. Gedacht – getan und einen Satz Platinen beim Fernostproduzenten bestellt.
Ein passendes Gehäuse lässt sich mit dem 3D-Drucker selbst erstellen. Genauer gesagt wurde ich auf Thingiverse fündig und konnte aus einer Vielzahl an geeigneten Designs wählen.
Es fehlt zwar das Overlay – aber auch ohne das macht das Spiel Spass. Hier ist Malban ein tolles Game gelungen.
edit Nov. 2024: Es erreichen mich immer wieder Anfragen, die Gerberdateien für die Platinen zum Nachbau zur Verfügung zu stellen. Mit dem Link ist der Download nun möglich:
Für die Vectrex – Spielekonsole einem Home-Arcade-Automat aus dem Jahr 1982 gibt, oder gab es eine sehr begrenzte Anzahl an Spiele Titeln. Die Vectrex selber, beziehungsweise die Restauration dieses Schätzchens werde ich in einem eigenen Beitrag vorstellen.
Die Spiele waren in Form von ROM-Modulen erhältlich und mussten seitlich in die Konsole gesteckt werden. Heute sind sie, wie auch die Konsole selber, ziemlich rar und schwer zu finden. Auch preislich sind sie meist keine Schnäppchen. Es gibt auch Nachbauten, Multiroms und einige DIY Projekte, die auf Basis der alten EPROMS das Spielprogramm oder auch mehrere Games gespeichert halten und so über ein „Modul“ spielbar waren. Da ich auch noch alle möglichen Eproms mit unterschiedlichen Größen im Bauteilelager habe und auch von einem Kollegen (vielen Dank Jürgen) ein paar 27C512er Eproms gesponsert bekam, musste ich einfach versuchen, damit ein ROM-Modul zu basteln.
Also einmal schnell nachgedacht, was ich dafür alles benötige. Hier eine kleine Aufstellung:
alte EPROMS (ich verwende Eproms, die mit UV-Licht wieder gelöscht werden können)
einen Eprom Programmer (in der hintersten Ecke eines Kastens habe ich noch einen ChipLab Programmer mit paralleler Schnittstelle gefunden)
einen alten Rechner mit eben einer parallelen Schnittstelle und einem älteren Betriebssystem (Windows XP). Auch hier habe ich glücklicher Weise einmal mehr auf die Entsorgung verzichtet und einen alten Laptop wieder zum Leben erweckt.
eine Software für den Programmer (hier verwende ich „ChipLab“ die mit Hilfe von „porttalk22“ auf WindowsXP lauffähig ist)
die Binärdaten oder HEX-Files der originalen ROM-Module (hierzu kann man die Internetsuche bemühen)
ein Layout Tool (Autodesk Eagle)
eine Bastelbude, in der man Platinen ätzen kann, oder einen Account bei einem fernöstlichen PCB-Hersteller
Lötwerkzeug und Kleinteile
und natürlich eine Vectrex – sonst hat das alles keinen Sinn
Um den Speicherbedarf der Eproms zu ermitteln, muss ich zuerst einmal die Größe der Spiele kennen. Hier die Liste der Titel und deren Größe:
Spiele mit einer Größe von 4 kB (4 kilo Byte). Das entspricht einem Adressbereich von hex 0000 bis 0FFF
Armor Attack
Art Master
Bedlam
Berzerk
Clean-Sweep
Cosmic Chasm
Engine Analyzer
Hyperchase
Minestorm 2
Rip Off
Scramble
Solar Quest
Space Wars
Star Castle
Star Hawk
Star Trek
Spiele mit einer Größe von 8 kB (8 kilo Byte). Das entspricht einem Adressbereich von hex 0000 bis 1FFF
Animaction
Blitz
Fortess of Narzod
Heads Up
Melody Master
Pitchers Duel
Pole Position
Spike
Spinball
Tour de France
Web Wars
Spiele mit einer Größe von 12 kB (12 kilo Byte). Das entspricht einem Adressbereich von hex 0000 bis 2FFF
Dark Tower
Als nächstes sehe ich mir einmal die Eproms bezüglich Pinout und Größe an. Hier habe ich zwei Größen betreffend der Pin Anzahl zur Verfügung. Eproms mit 28pin und 32pin im DIL Gehäuse. Zu denen im 28poligen Gehäuse gehören folgende Typen:
27c64 8k x 8 bit also 64 kb (kilo Bit)
27c128 16k x 8 bit also 128 kb (kilo Bit)
27c256 32k x 8 bit also 256 kb (kilo Bit)
27c512 64k x 8 bit also 512 kb (kilo Bit)
Das Pinout ist, bis auf die unterschiedliche Anzahl der Addressleitungen, identisch. Die 1Mbit Variante 27C1001 (27C010) hat jedoch ein anderes Pinout.
Der nächste Schritt ist, sich das Pinout des Vectrex Modulschachtes anzusehen. Die Pin – Nummern des Moduls sind im Bild unten zu gekennzeichnet.
Die den Pin-Nummern zugehörigen Signale sind dem Vectrex Schaltplan des Mainboards zu entnehmen. Im Bild unten ist ein Auszug des Schaltplans mit dem Bereich des 36 poligen Cartridge-Connectors dargestellt. (Quelle: console5.com)
Jetzt sind soweit mal alle nötigen Informationen gesammelt, um mit einem Schaltplan und Layout zu beginnen. Im Netz habe ich nach einem Eagle-Layout für den Platinen-Stecker gesucht. Es war aber nicht gleich etwas zu finden. Also musste ein originales ROM-Modul als Referenz für die Abmessungen und Abstände der Kontaktpads herhalten. Mit den so abgenommenen Massen war es dann schnell gemacht und ich hatte ein neues Eagle-Bauteil gezeichnet und in der Library gespeichert.
Ich habe zwei Varianten der Modulschaltungen gezeichnet. Eine für die EPROMs mit 28 Pins und eine für die 1Mbit ROMs mit 32 Anschlusspins. (Da hier ja auch mehr Games Platz finden) Um nun alle möglichen Größen an Spielen unterschiedlich auf dem EPROM verteilen zu können, habe ich die Adressbits 12,13 und 14 umschaltbar gemacht. Und zwar so, dass diese drei Adressleitungen wahlweise von der Vectrex angesteuert werden können, oder extern vom Bediener über DIP-Schalter (L/H) auszuwählen sind. Die Bits 15 und 16 (sind ebenfalls über DIP-Schalter auszuwählen).
Die folgende Tabelle zeigt ein paar Beispiele, wie die Startadressen der Spiele ausgewählt werden können.
bit
16
bit
15
bit
14
bit
13
bit
12
bit11-bit0
game adressen
adressen
start – ende (hex)
L
L
L
L
L
bei 8k Spiel
0000 – 1FFF
L
L
L
H
L
bei 8k Spiel
2000 – 3FFF
L
L
H
L
L
bei 8k Spiel
4000 – 5FFF
L
L
H
H
L
bei 8k Spiel
6000 – 7FFF
L
H
L
L
L
bei 8k Spiel
8000 – 9FFF
L
H
L
H
L
bei 8k Spiel
A000 – BFFF
L
H
H
L
L
bei 8k Spiel
C000 – DFFF
L
H
H
H
L
bei 8k Spiel
E000 – FFFF
H
L
L
L
L
bei 4k Spiel
10000-10FFF
…
…
…
…
…
und so weiter…
…
Vorausgesetzt natürlich, die Spieledaten wurden auch so auf das EPROM geschrieben. Um das zu bewerkstelligen, verwende ich einen von vielen Freeware – Hex Editoren (HxD) und baue mir aus den einzelnen Game-Images ein Binärfile zusammen. Diese „Datei“ wird dann in der ChipLab-Software importiert, das korrekte EPROM aus der Datenbank ausgewählt, dann den Chip in den Programmer gesteckt und los gehts… (Vorher nochmal checken, ob der Chip auch leer ist. Ansonsten muss er „oben ohne“ in die Sonne, oder unter die UV-Lampe (für ca. 15-20min)
Ist der Chip mit Bits gefüllt und aus dem Schaltplan ein Layout gemacht, dann geht´s ans Ätzen eines Prototyps. Dafür konnte ich in einer kurzen Mittagspause die Ätzanlage unserer Firma heranziehen und das unnötige Kupfer der Platine ätztechnisch entfernen.
Nach dem Belichten einer mit fotopositv Lack beschichteten doppelseitigen Platine und dem anschließenden Entwickeln derselben, kann wird das überflüssige Kuper mit EisenDreiChlorid entfernt. Übrig bleibt die gewünschte Struktur.
Mal ein Selfie zwischendurch. Die Belichtung der Platine mit UV – Licht dauert etwa 57 Sekunden. Genug Zeit um mit dem Handy dumme Fotos zu machen 😀
Weiter geht es dann mit dem Bohren der Löcher in das Board. Die Durchkontaktierungen (VIAs) vom Top- zum Bottom Layer werden bei dem Prototyp nicht durch galvanisches Auftragen von Kupfer in den Bohrungen realisiert, sondern per Hand durch Durchstecken eines Stückes Silberdraht durch das Loch und anschließendem beidseitigem Verlöten.
Jetzt fehlt nur noch die Bestückung. Die ist aber sehr schnell erledigt. Denn bis auf den IC-Sockel, ein paar Pull-Up Widerstände und die DIP-Schalter ist auf dem Board ja nicht viel drauf. Also die paar Teile gelötet, den Chip in den Sockel gesteckt – und fertig ist das ROM-Modul.
Wie das fertige Modul an der Vectrex aussieht und vor allem funktioniert, werde ich beizeiten einmal als kurzes Video zeigen. Ich habe das Board auch ein wenig verschönert und als industriell gefertigte Platine bei einem fernöstlichen Leiterplattenhersteller in Auftrag gegeben…
(kleines Update am 20.Oktober 2020)
Die im fermem Osten gefertigten Platine sind gekommen und sehen meiner Meinung nach auch ganz passabel aus. Schnell ist ein Board bestückt … hier das Ergebnis: