GOSOF80B

Gottlieb System 80B Soundboard on FPGA

Platine Gosof80B mit dev_open-Board (EP4CE6) / SW x.98

Bedienungsanleitung

ralf@lisy.dev

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.

Inhalt

Wichtiger Hinweis

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!

1. Einleitung

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.

1.1. Drei Varianten

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.

1.2. Stand

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.

2. Platine

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.

2.1. Taster und LEDs des dev_open-Boards

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

3. Einbau

Die Platine ersetzt das Soundboard im Kopf des Automaten. Die Stecker A6P1, A6P2 und A5P1 werden wie bei der Originalkarte aufgesteckt.

Bitte beachten:

4. DIP-Schalter

DIP-Schalter werden nur beim Start gelesen. Stellen Sie sie bei ausgeschaltetem Automaten um oder drücken Sie danach SW1 (Reset).

4.1. S1: Spielauswahl

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.

4.2. S2: Optionen

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.

5. Testen

5.1. Gosof-Testtaster (SW3)

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.

5.2. Gottlieb-Testtaster (SW2)

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.

5.3. Eingangstest S3

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.

6. FPGA programmieren

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.

7. Spiel-ROMs

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.

8. Einschränkungen

Anhang A: Spielauswahl

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.

A.1. MA-766

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

A.2. MA-886 Generation 2

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

A.3. MA-886 Generation 3

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