Gottlieb System 80B Soundboard on FPGA
Platine Gosof80B mit dev_open-Board (EP4CE6) / SW x.98
Bedienungsanleitung
v0.90 09.11.2026
Diese Anleitung gibt es vorerst nur auf Deutsch. Für die GOSOF-Platinen für System 1 und System 80 gibt es eine eigene Anleitung: GOSOF_HW5x_Bedienungsanleitung.html.
Mit GOSOF80B kann Ihr Flipper beschädigt werden. Da es sich um ein privates Projekt OHNE kommerzielles Interesse handelt, übernimmt der Autor keine Haftung für Schäden, die durch den Einsatz von GOSOF80B entstehen!
GOSOF80B ist ein reines Hobbyprojekt: ein Ersatz für die Soundboards der Gottlieb-Flipper mit System 80B, aufgebaut um ein FPGA, das die originalen Sound-ROMs ausführt. Es ist der Bruder von GOSOF, dem Ersatz für die Soundboards von System 1, System 80 und System 80A.
Das FPGA bildet die komplette Originalkarte nach: beide 6502-CPUs (Y-CPU für Musik und Effekte, D-CPU für den DAC), RAM, Soundlatch, NMI-Zähler und die Klangerzeuger. Die Spiel-ROMs liegen im Konfigurationsflash (EPCS16) des dev_open-Boards, neben dem FPGA-Programm. Eine SD-Karte gibt es nicht.
Gottlieb hat für System 80B drei verschiedene Soundboards gebaut. Für jedes gibt es ein eigenes FPGA-Programm. Die Platine ist bei allen dieselbe, Sie programmieren nur die passende Datei.
| Variante | Originalkarte | Klangerzeuger | Spiele | SRAM U1 |
|---|---|---|---|---|
80B_ma766 |
MA-766 (Generation 1) | 2 × AY-3-8913, SP0250, DAC | 9 | nicht nötig |
80B_ma886_gen2 |
MA-886 Generation 2 | 2 × AY-3-8913 mit Filter MF-4, DAC | 5 | nötig |
80B_ma886_gen3 |
MA-886 Generation 3 (mit Zusatzplatine A20 bzw. MA-1294) | YM2151, DAC | 4 | nötig |
Welche Spiele zu welcher Variante gehören, steht in Anhang A. Ein Spiel läuft nur mit dem Programm seiner Variante: Die Adressen der Bausteine sind auf MA-766 und MA-886 verschieden.
Die MA-886-Spiele haben 64 KB ROM je Spiel. Das passt nicht in das FPGA. Das Programm kopiert die ROMs deshalb beim Start aus dem Flash in das SRAM U1 (AS6C1008, 128 K × 8). Für Gen 2 und Gen 3 muss U1 also gesteckt sein, für MA-766 nicht.
Alle drei Varianten sind gebaut und in der Simulation mit den echten ROMs geprüft. Auf der Platine läuft bisher die MA-766-Variante mit Rock; sie spielt Musik und Effekte, ein Vergleich mit PinMAME fiel positiv aus. Die MA-886-Varianten sind auf Hardware noch nicht getestet. Rückmeldungen sind willkommen.
| Bauteil | Funktion |
|---|---|
| DEV1 | dev_open-Board mit FPGA EP4CE6E22C8 und Konfigurationsflash EPCS16 |
| S1 (6-polig) | Spielauswahl, siehe Kapitel 4.1 |
| S2 (6-polig) | Optionen, siehe Kapitel 4.2 |
| S3 / K2 | Eingangstest, siehe Kapitel 5.3 |
| U1 | SRAM AS6C1008 im DIL32-Sockel, nur für MA-886 |
| IC2 | ULN2803, Sound-Eingänge von der CPU |
| IC1 | Endstufe TDA7267 |
| R3 | Lautstärke |
| K3, K5 | Stecker A6P1 und A6P2 wie auf der Originalkarte: Sound-Signale, Versorgung |
| K6, K7 | Stecker A5P1 (zwei Bauformen): Lautsprecher |
Die Platine wird über die Stecker der Originalkarte versorgt.
| Element | Funktion |
|---|---|
| SW1 | Reset. Das Programm lädt das Spiel neu aus dem Flash. Nach dem Umstellen von S1 drücken. |
| SW2 | Gottlieb-Testtaster, siehe Kapitel 5.2 (nur MA-766) |
| SW3 | Gosof-Testtaster: Soundtest, siehe Kapitel 5.1 |
| LED1 (Trigger) | leuchtet, solange ein Sound-Signal von der CPU anliegt |
| LED2 (Sound) | die Diagnose-LED der Originalkarte, von der Y-CPU gesteuert. Sie zeigt, dass das Soundprogramm läuft. |
| LED3 (Flash) | blinkt, wenn der Slot des gewählten Spiels im Flash leer ist. Die CPUs bleiben dann im Reset, es kommt kein Ton. |
| LED4 | ohne Funktion |
Die Platine ersetzt das Soundboard im Kopf des Automaten. Die Stecker A6P1, A6P2 und A5P1 werden wie bei der Originalkarte aufgesteckt.
Bitte beachten:
DIP-Schalter werden nur beim Start gelesen. Stellen Sie sie bei ausgeschaltetem Automaten um oder drücken Sie danach SW1 (Reset).
S1 wählt das Spiel, und zwar als Binärzahl: S1-1 zählt 1, S1-2 zählt 2, S1-3 zählt 4, S1-4 zählt 8, S1-5 zählt 16, S1-6 zählt 32. Alle Schalter OFF ist Spiel 0. Die Tabellen für alle drei Varianten stehen in Anhang A.
Steht S1 auf einer Nummer, für die im Flash kein Spiel liegt, blinkt LED3 und es kommt kein Ton.
MA-766:
| DIP | ON | OFF | Original |
|---|---|---|---|
| 1 | DIP-Position 1 der Originalkarte | OFF | |
| 2 | DIP-Position 2 der Originalkarte | OFF | |
| 3 | Sound-Leitung S16 löst ebenfalls einen Sound aus (SW3 der Originalkarte) | S16 wird nicht ausgewertet | OFF |
| 4–6 | ohne Funktion |
DIP 1 und 2 liest das Soundprogramm genau wie die DIP-Schalter der Originalkarte. Ihre Bedeutung steht im Gottlieb-Handbuch des Spiels, normalerweise stehen beide auf OFF.
MA-886 Gen 2 und Gen 3:
| DIP | ON | OFF | Original |
|---|---|---|---|
| 1, 2 | ohne Funktion | ||
| 3 | Sound-Leitung S16 löst ebenfalls einen Sound aus (Jumper JP8 der Originalkarte) | S16 wird nicht ausgewertet | OFF |
| 4–6 | ohne Funktion |
Die MA-886 hat keine DIP-Schalter, die das Soundprogramm liest. Darum haben DIP 1 und 2 hier keine Funktion.
Ein Druck auf SW3 spielt die Sounds 1 bis 31 des eingestellten Spiels, jeden 5 Sekunden lang. So lässt sich die Karte auf der Werkbank prüfen, ohne CPU-Platine. Das geht bei allen drei Varianten.
Sound 16 bleibt dabei stumm, solange Options-DIP 3 auf OFF steht, weil dann S16 nicht ausgewertet wird. Auch andere Nummern können stumm bleiben, wenn das Spiel sie nicht belegt.
Nur bei MA-766: SW2 wirkt wie der Testschalter SW1 der Originalkarte. Was er auslöst, bestimmt das Soundprogramm des Spiels.
Bei MA-886 hat SW2 keine Funktion, die Originalkarte hat keinen Testschalter.
K2 verbindet die Sound-Eingänge von der CPU mit dem Taster S3. Stecken Sie Jumper auf die gewünschten Plätze von K2 und drücken Sie S3, um diese Eingänge ohne CPU-Platine zu aktivieren. LED1 leuchtet, solange ein Eingang aktiv ist.
Der Konfigurationsflash des dev_open-Boards wird über dessen JTAG-Stecker programmiert. Die FPGA-Software liegt auf dem Repository-Server: https://lisy.dev/swrep/soundboards
| Variante | Datei |
|---|---|
| MA-766 | GOSOF80_80B_ma766_v8.98.jic |
| MA-886 Gen 2 | GOSOF80_80B_ma886_gen2_v9.98.jic |
| MA-886 Gen 3 | GOSOF80_80B_ma886_gen3_v10.98.jic |
Die Zahl vor dem Punkt ist die Board-ID der Variante, die Zahl danach die Softwareversion.
Sie brauchen:
Programmieren Sie die .jic-Datei im JTAG-Modus. Schalten
Sie danach die Versorgung aus und wieder ein.
Diese Dateien enthalten keine Spiel-ROMs, weil diese urheberrechtlich geschützt sind. Mit der Datei allein blinkt LED3 und es kommt kein Ton. Fügen Sie die ROMs wie im nächsten Kapitel beschrieben hinzu.
Die ROMs teilen sich den Konfigurationsflash mit dem FPGA-Programm.
Sie programmieren deshalb eine .jic-Datei, die beides
enthält. Die Spiele liegen ab Adresse 0x80000 im EPCS16, eines je Nummer
von S1:
| Variante | Platz je Spiel | Inhalt eines Slots |
|---|---|---|
| MA-766 | 24 KB | yrom1 (8 KB), yrom2 (8 KB, leer bei Spielen ohne yrom2), drom (8 KB) |
| MA-886 Gen 2 / Gen 3 | 64 KB | yrom (32 KB), drom (32 KB) |
Ein Skript für Anwender, das die ROMs ohne Quartus in die
veröffentlichte .jic schreibt (wie
add_roms_to_jic.ps1 für GOSOF HW 5.x), gibt es für GOSOF80B
noch nicht. Bis dahin entsteht die .jic
mit ROMs aus dem Quellcode (https://github.com/bontango/Gosof80)
und Quartus. Die Skripte lesen die ROM-Sätze im PinMAME-Format
(rock.zip, victory.zip usw.) aus dem Ordner
Gosof80B\roms neben dem Quellcode:
scripts\make_flash_hex_80b.ps1
cd variants\80B_ma766
quartus_cpf -c gosof80_roms.cof
scripts\make_flash_hex_886.ps1 -Gen 2
cd variants\80B_ma886_gen2
quartus_cpf -c gosof80_roms.cof
Für Gen 3 entsprechend -Gen 3 und
variants\80B_ma886_gen3. Ergebnis ist jeweils
output_files\gosof80_roms.jic im Ordner der Variante.
Programmieren Sie diese Datei wie in Kapitel 6 beschrieben. Geben Sie sie
nicht weiter, sie enthält die ROMs.
Das Skript zeigt für jedes Spiel Slot, Name und die Reset-Vektoren beider CPUs an. Fehlt ein ROM-Satz, bricht es ab.
S1 bis S6 in diesen Tabellen sind die Schalter 1 bis 6 der DIP-Bank S1 auf der Platine. Die Spielnamen sind die englischen Originalnamen, der Name in Klammern ist der des PinMAME-ROM-Satzes.
Programm GOSOF80_80B_ma766_v8.98.jic.
| S1 | S2 | S3 | S4 | S5 | S6 | Spiel | ROM-Satz |
|---|---|---|---|---|---|---|---|
| off | off | off | off | off | off | Rock | rock |
| on | off | off | off | off | off | Raven | raven |
| off | on | off | off | off | off | Rock Encore | rock_enc |
| on | on | off | off | off | off | Hollywood Heat | hlywoodh |
| off | off | on | off | off | off | Genesis | genesis |
| on | off | on | off | off | off | Gold Wings | goldwing |
| off | on | on | off | off | off | Monte Carlo | mntecrlo |
| on | on | on | off | off | off | Spring Break | sprbreak |
| off | off | off | on | off | off | Arena | arena |
Programm GOSOF80_80B_ma886_gen2_v9.98.jic, SRAM U1
nötig.
| S1 | S2 | S3 | S4 | S5 | S6 | Spiel | ROM-Satz |
|---|---|---|---|---|---|---|---|
| off | off | off | off | off | off | Victory | victory |
| on | off | off | off | off | off | Diamond Lady | diamond |
| off | on | off | off | off | off | TX-Sector | txsector |
| on | on | off | off | off | off | Robo-War | robowars |
| off | off | on | off | off | off | Excalibur | excalibr |
Programm GOSOF80_80B_ma886_gen3_v10.98.jic, SRAM U1
nötig.
| S1 | S2 | S3 | S4 | S5 | S6 | Spiel | ROM-Satz |
|---|---|---|---|---|---|---|---|
| off | off | off | off | off | off | Bad Girls | badgirls |
| on | off | off | off | off | off | Big House | bighouse |
| off | on | off | off | off | off | Hot Shots | hotshots |
| on | on | off | off | off | off | Night Moves | nmoves |