LInux für SYstem 80

LISY80
Steuerung eines Gottlieb System 80
mit LINUX
 
 

Version 2.3, Stand: 03.01.2008

0. Einleitung

Das Projekt wurde gestartet, um meine drei Hobbys miteinander zu verbinden:

    - Aufbau/Entwurf von kleineren Elektronikschaltungen.
    - Programmierung in C, vorzugsweise unter Linux.
    - Reparatur und natürlich 'bespielen' von Gottlieb Flippern der Serie 80.

Ziel ist es, das CPU-Board eines Gottlieb Flippers komplett zu ersetzen. Da ich mit diesem Projekt KEINERLEI
kommerzielle Interessen verfolge, wird nach dem Prinzip 'keep it simple' vorgegangen.
Die vorhandenen Schnittstellen zu den Lampen- und Spulentreiberboards sollen beibehalten werden.
(Der Entwurf eines eigenen Treiberboards könnte ein schönes Folgeprojekt werden.)

Die erste Version basierte auf einer ISA-Schnittstellenkarte. Die zeitkritischen Routinen (z.B. Display-Refresh)
machten mir jedoch arge Probleme, so dass ich mich fuer ein komplettes Redesign entschied.

1. Anforderungen

a. Software 

- Eine beliebige LINUX-Distribution (in meinem Fall: Debian 4.0 Etch), mit Software Development, d.h.
  Gnu-C Compiler. Das erforderliche C-Steuerprogramm soll in diesem Projekt erstellt werden.
 
- Zu Dokumentationszwecken das Layout-Programm TARGET 3001! V11 p in der
   kostenlosen Version für den PCB-POOL® Leiterplatten-Service! http://www.pcbpool.de/

b. Hardware 

- Einen Gottlieb System80 Flipper, wobei das CPU-Board gegen den PC ersetzt wird

- Einen alten Intel-PC, mit USB-Schnittstelle

- Reichlich Elektronikmaterial (ICs, Widerstände, Platinen ...)
   Speziell:
    -IO-Warriror 40 von Code Mercenaries  fuer die USB und I2C Schnittstellen, sowie die Switch-Matrix
   - PIC 16F872 fuer die Displaysteuerung
   - PCF8574 für die Ansteuerung des Treiberboards


 

2. Der Aufbau

2.1 Rechnerkopplung

Die Kopplung mit dem Linux-Steuerrechner erfolgt über USB-Schnittstelle. Hier setze ich den den
IO-Warriror 40 ein (Datenblatt). Für ihn gibt es Treiber sowohl für Linux als auch für Windows. Im Programm wird er als normales USB-Device angesprochen.

2.2 Abfrage der Schalter (Switch Matrix)

Der IO-Warrior unterstützt von Haus aus die Abfrage einer 8*8 Switch Matrix und ist somit perfekt für die
Abfrage der Gottlieb Switch Matrix ausgestattet. Erste Tests haben einwandfrei funktioniert.

2.3 Ansteuerung der Displays

Hierfür habe ich einen eigene Platine auf Basis des PIC16F872 (Datenblatt) entwickelt, die mittels eines kleinen Programmes
die Ansteuerung der Displays eigenständig ausführt. Angesprochen wird Sie über einen I2C-Bus, dies erledigt der IO-Warriror.

2.4 Ansteuerung des Treiberboards

Leider sind fast alle I/Os des IO-Warrirors belegt, so dass ich hier zusätzlich den I/O-Extender PCF8474 einsetze (Datenblatt).
Der PCF8574 ist ein 8-Bit Port-Expander für den I2C Bus.

 

3. Protoypen

3.1 Handarbeit ist angesagt

Noch etwas unübersichtlich, aber die Displays tuen es schon einmal

.

3.2 Die erste 'richtige' Platine

Noch mit einem ganzen Fuhrpark von PCF8574 und mit Pfostensteckern ..

3.3 Und der erste Prototyp

Noch mal optimiert, (nur noch ein PCF8574) und mit selbst entworfenen EDGE-Connectoren

 

 

4. LISY80 in Aktion

Backbox

Hier die Innenansicht meines Gottlieb Spiderman.

Die CPU ist bereits gegen die LISY80 Platine ausgetauscht, quer durchs Bild das (rote) USB Kabel, welches

an den LINUX Steuerrechner geht.

Spiderman

Spiderman mit LISY80.

Hier ein Video welches das ganze in Aktion zeigt (Achtung! die AVI Datei ist 8 MB gross! ):   Spiderman.AVI

Aufgenommen habe ich den Ablauf folgenden kurzen Testprogramms:  Spiderman.c

Das Programm initialisiert den Flipper (macht sich dadurch bemerkbar, dass die 'merkwürdigen' Töne nach dem
Einschalten verschwinden.) Danach wartet es darauf, dass der Replay-Taster betätigt wird.
Nach Betätigen des Replay Tasters wird die Kugel ausgeworfen, das Display für Spieler 1
auf '00' gesetzt und die Displays von Spieler 2 bis 4 gelöscht. Das Status Display zeigt '01' an.
Jede weitere  Schalterbewegung wird mit 10 Punkten gezählt. Geht die Kugel in eines der 3 'Holes', wird sie sofort wieder ausgeworfen.
Geht der Ball aus (Outhole-Taster betätigt), endet das Spiel und die Game Over Lampe geht an.

Links vorne habe ich den Bildschirm des Steuerechners plaziert. Wenn man genau hinsieht, sieht man die
Bildschirmausgaben wenn die Kugel Schalter auf dem Spielfeld berührt.
 

5. Ausblick

Das kurze Testprogramm bestätigt schon mal, dass der Rechner alle Flipperfunktionen steuern kann.
Der nächste Schritt wird sein, dass Programm soweit zu vervollständigen, dass das Original Gameplay
nachgestellt wird.

Als Erweiterungen sind dann z.B. denkbar:

    - Einbau einer 'Ball Save' Funktion 
    - Möglichkeit der Namenseingabe bei Highscore
    - Automatische Übermittlung der Punkte, z.B. bei Turnieren. Hier könnte der Flipper auch die jeweiligen Spielernamen anzeigen, bzw. verwalten.
    - und und und ...