WillFA7S

Williams-MPU mit integrierter Soundplatine auf FPGA-Basis

Hardware-Version v1.0

Software-Version 6.30

Bedienungsanleitung

ralf@lisy.dev

v1.31 23.10.2026

Deutsche Fassung von WillFA7S_HWv1_x_user_manual.html. Version française : WillFA7S_HWv1_x_manuel_utilisateur.html. Die Kapitelnummern sind in allen drei Fassungen gleich.

Inhaltsverzeichnis

Wichtiger Hinweis

Mit WillFA7S kann man seinen Flipper beschädigen. Da dies ein privates Projekt OHNE kommerzielles Interesse ist, übernimmt der Autor keinerlei Haftung für Schäden, die durch die Verwendung von WillFA7S entstehen!

1. Einführung

WillFA7S ist ein WillFA7 mit einer Williams-Soundplatine im selben FPGA. Es bildet die Hardware einer Williams-MPU vom Typ SYS3 bis SYS7 mit der auf der Platine integrierten Treiberplatine nach und, auf demselben Chip, einen zweiten vollständigen Rechner: die Williams-Soundplatine Typ 1 / Typ 2 mit eigenem 6802, eigener PIA, eigenen Programm-ROMs, dem DAC und dem CVSD-Sprachdecoder.

Eine Platine ersetzt also MPU, Treiberplatine und Soundplatine.

Das FPGA ist ein Cyclone IV EP4CE10 - größer als das auf den einfachen WillFA7-Platinen, weil die fünf ROMs der Soundplatine den zusätzlichen Speicher brauchen. Alle SYS3..SYS7-Spiele werden unterstützt, einschließlich „Defender“ und „Star Light“.

Alles, was nicht die Soundplatine betrifft, funktioniert genau wie bei einem WillFA7 - der Adressraum, die Schaltermatrix und ihre Entprellung, Spulen, Lampen, Displays, das Einstellungs-EEPROM, die Startphasen. Was hier nicht erwähnt ist, schlagen Sie in der Anleitung zu WillFA7 nach; es gilt unverändert.

Was brauchen Sie?

Zwei Dinge sind von Anfang an anders, bitte lesen Sie sie, bevor Sie beginnen:

2. Schnellstart

  1. Das aktuelle WillFA7S-SD-Karten-Image und das FPGA-Programm von lisy.dev laden

  2. Das Image auf eine SD-Karte schreiben

  3. Das FPGA programmieren

  4. Die DIP-Bank „Spielauswahl“ passend zu Ihrem Flipper einstellen (Anhang A)

  5. Die Optionen der Soundplatine an S5 einstellen (Kapitel 4.3) - für die meisten Spiele ist alles „OFF“ richtig

  6. Original-MPU, Treiberplatine und Soundplatine von Williams durch WillFA7S ersetzen

  7. Beim ersten Start mit Ihrem Spiel Options-DIP1 auf ON stellen (nvram initialisieren)

    1. Den Automaten einschalten

    2. Das Spiel zeigt die Williams-PROM-Nummer; warten, bis die „Diag-LED“ ausgeht

    3. Den Automaten ausschalten

  8. Den Automaten einschalten

  9. Viel Spaß

3. Einbau

WillFA7S hat dieselben Steckverbinder und dieselben Befestigungslöcher wie die originalen Williams-MPUs, der Tausch dauert also Sekunden. Die Platine kommt an die Stelle, an der vorher die Williams-Treiberplatine saß.

Der Audioausgang der integrierten Soundplatine geht an den Verstärker Ihres Automaten. Die originale Soundplatine wird nicht mehr gebraucht und kann draußen bleiben.

Der Anschluss für eine externe Soundplatine führt die Soundbefehle weiterhin, genau wie bei einem WillFA7. Beides funktioniert gleichzeitig: Was das Spiel an die interne Soundplatine schickt, liegt auch an diesem Anschluss an.

4. DIP-Schalter-Einstellungen

4.1. DIP-Bank S1: Spielauswahl

Hier stellen Sie ein, welches Spiel WillFA7S ausführen soll. Das hängt von den ROMs auf der SD-Karte ab. Die vollständige Liste steht in Anhang A, den Aufbau der SD-Karte erklärt Kapitel 9.

4.2. DIP-Bank S2: Optionen

Wie bei WillFA7, Grundeinstellung alles „OFF“:

DIP Funktion
Dip1 nvram initialisieren - beim allerersten Start mit Ihrem Spiel auf ON stellen
Dip2/3 Pulszeit der Spezialspulen: OFF-OFF 60 ms, OFF-ON 50 ms, ON-OFF 40 ms, ON-ON 35 ms
Dip4 Entprellung der Spezialspulen: OFF = 57 µs, ON = 250 µs
Dip5 Entprellung der Schaltermatrix: ON = entprellt, OFF = ungefiltert durchgereicht
Dip6 kein Schutz für Spezialspule 6 (SOL 22), nötig für das Spiel „CONTACT“

Die Anleitung zu WillFA7 beschreibt diese Optionen im Einzelnen.

4.3. DIP-Bank S5: Optionen der Soundplatine

Diese Bank gibt es bei WillFA7 nicht. Sie richtet die Soundplatine ein, so wie es der Schalter DS1 auf einer originalen Williams-Soundplatine tut. Grundeinstellung ist alles „OFF“ - das ist für die meisten Spiele die richtige Einstellung.

4.3.1. S5-Dip1 -> Glocken oder synthetische Töne

„ON“ wählt Glockentöne (Chimes), „OFF“ synthetische Töne. Das ist derselbe Schalter wie Position 1 von DS1 auf der originalen Soundplatine. Was Ihr Spiel braucht, steht in der Anleitung Ihres Flippers; Glocken verwenden die frühen System-3-Spiele.

4.3.2. S5-Dip2 -> Sprache

„ON“ teilt der Soundplatine mit, dass Sprache vorhanden ist, „OFF“, dass nicht. Sprache haben überhaupt nur Soundplatinen vom Typ 2 - die mit den Sprach-ROMs -, also für ein Spiel ohne Sprache auf „OFF“ lassen.

4.3.3. S5-Dip3 -> reserviert

Nicht benutzt, auf „OFF“ lassen.

Bis Software 6.03 wählte dieser Schalter, woher die Soundbefehle kommen, System 3/4 oder System 6/7. Seit 6.22 leitet die Platine das selbst aus der Spielnummer ab, es gibt also nichts mehr einzustellen. Siehe Kapitel 7.2.

4.3.4. S5-Dip4 -> was der Soundtest-Taster tut

Die Platine hat einen Soundtest-Taster. Dieser Schalter legt fest, was ein Druck darauf bewirkt:

4.4. Alle DIPs werden einmal beim Start gelesen

Das ist die eine Stelle, über die man stolpert. Bei WillFA7S werden die DIP-Schalter genau einmal gelesen, während der Startphase, und danach gehen die Leitungen, an denen sie hängen, an die Schaltermatrix des Spiels zurück. Sie fortlaufend zu lesen würde die Schaltermatrix stören, während das Spiel läuft.

Also: Nach jeder Änderung an einem DIP-Schalter - Spielauswahl, Optionen oder Optionen der Soundplatine - den Automaten aus- und wieder einschalten. Eine Änderung während des Spiels bewirkt nichts.

5. Startvorgang

5.1. Phase 1: Startmeldung

Direkt nach dem Einschalten des Flippers geht die LED „ON“ an, und auf den Displays Ihres Flippers erscheint Folgendes:

Spieler 1: Version des laufenden FPGA-Programms - bei WillFA7S beginnt sie mit einer 6

Spieler 2: Wert der an S1 gewählten Spielnummer (Spielauswahl)

Spieler 3: Erstellungsdatum des FPGA-Programms

Spieler 4: Startphase

Credit-Anzeige: die Optionsschalter - die linken beiden Stellen sind die Optionen der Soundplatine S5, die rechten beiden die Spieloptionen S2

Die Versionen 6.03 bis 6.2x zeigten auf Spieler 3 und 4 zwei Prüfsummen der Karte. Seit 6.30 trägt die Karte keine Prüfsumme mehr, und die beiden Anzeigen zeigen dasselbe wie bei jedem WillFA7.

Der Optionswert entsteht so: Jeder Schalter auf „ON“ addiert sein Gewicht.

Das ist dieselbe Zählweise wie bei der Spielauswahl S1 in Anhang A: Dip1 ist immer der, der 1 zählt.

Siebenstellige Anzeigen. Spiele, die in Anhang A mit SYS6A oder SYS7 gekennzeichnet sind, hatten siebenstellige statt sechsstellige Spieleranzeigen. WillFA7S erkennt das an der Spielnummer und verschiebt die Startmeldung entsprechend: Der Text steht rechtsbündig, die linke Stelle jeder Spieleranzeige bleibt dunkel, und die Optionen behalten ihren Platz auf der Credit-Anzeige. Dafür muss nichts eingestellt werden.

5.2. Phase 2: SD-Karte lesen

WillFA7S liest die Karte zweimal: zuerst die 12 KByte Spiel-ROMs, dann die 20 KByte ROMs der Soundplatine. Schlägt das fehl, geht die rote LED „SD card error“ an, und auf Anzeige 4 erscheint „56“.

Die rote LED blinkt außerdem einen Code, der sagt, was schiefgegangen ist. Zählen Sie die Blinker; nach dem letzten kommt eine Pause von etwa 2 Sekunden, dann wiederholt sich die Gruppe.

Blinker Bedeutung
1 die SPI-Übertragung ist hängen geblieben - Kartenkontakte und Verdrahtung prüfen
2 die Karte antwortet nicht auf den Reset-Befehl
3 Kartentyp nicht unterstützt, höchstwahrscheinlich eine sehr alte SD-v1-Karte
4 die Karte hat ihre Initialisierung nie abgeschlossen
5 von der Karte kamen keine Daten
6 die Karte hat einen Lesefehler gemeldet
8 keine SD-Karte, und der FPGA-Flash enthält keine ROMs für dieses Spiel - siehe 5.3

Code 7 (Prüfsumme stimmt nicht) gab es nur in den Versionen 6.03 bis 6.2x. Seit 6.30 trägt die Karte keine Prüfsumme.

5.3. Betrieb ohne SD-Karte

Neu mit 6.30: Antwortet keine SD-Karte (Codes 1 bis 4 oben), bleibt WillFA7S nicht stehen, sondern liest die Spiel-ROMs und die ROMs der Soundplatine aus dem Flashspeicher, aus dem das FPGA selbst startet. Das dauert etwa 1,3 Sekunden länger, weil die Platine der Karte zuerst ihre Chance gibt.

5.4. Phase 3: das Spiel läuft an

Der mit der DIP-Bank „Spielauswahl“ gewählte Code wird von der SD-Karte (oder aus dem Flash, siehe 5.3) gelesen und ausgeführt. Läuft der Code (es kommen regelmäßige Display-Strobes), geht die LED „active“ an. Die Soundplatine startet zusammen mit dem Spiel.

6. Spieleinstellungen

Die Spieleinstellungen werden genau wie bei einem WillFA7 und wie bei der Original-MPU vorgenommen; WillFA7S speichert sie in einem seriellen EEPROM, für jedes Spiel getrennt.

Der Ablauf Schritt für Schritt für System 3 und das Bild mit der Lage der Taster stehen in Kapitel 6 der Anleitung zu WillFA7 - die Taster sitzen hier an denselben Stellen.

Ein Unterschied, solange der Soundtest läuft: Der Taster Diag schaltet durch die Soundnummern, statt den Diagnose-Interrupt auszulösen, und Enter spielt den gewählten Sound, statt eine Einstellung zu speichern. Das gilt nur, solange der Soundtest aktiv ist, siehe Kapitel 7.4.

7. Die integrierte Soundplatine

7.1. Welche Soundplatine sie ersetzt

Die Williams-Soundplatinen von System 3 bis System 7, Typ 1 (nur Sound) und Typ 2 (Sound und Sprache). Im FPGA ist das ein vollständiger Nachbau: ein zweiter Prozessor 6802, eine eigene PIA, 128 Byte RAM, fünf Programm-ROMs zu 4 KByte, der DAC für den Sound und ein CVSD-Decoder HC55564 für die Sprache.

Die fünf ROM-Blöcke werden beim Start zusammen mit den Spiel-ROMs von der SD-Karte gefüllt - deshalb ist die Kartenaufteilung eine andere, siehe Kapitel 9.

7.2. Woher die Soundbefehle kommen

Williams hat das im Lauf der Jahre unterschiedlich gemacht:

WillFA7S wählt die richtige Quelle automatisch, anhand der Spielnummer, die Sie an S1 einstellen. Es gibt nichts einzustellen. Bis Software 6.03 war das ein DIP-Schalter; seit 6.22 folgt es der Spielnummer, derselben Grundlage, die auch der Speicherschutz verwendet.

7.3. Audioausgang

Sound und Sprache werden im FPGA gemischt und verlassen die Platine gemeinsam auf einer Leitung, in einem festen Verhältnis 1:1. Das macht das Original auch, nur dort analog: Das Soundsignal geht zum Sprachmodul hinüber, wird über das 5K-Poti R8 mit der Sprache gemischt und kommt zurück. R8 in Mittelstellung ist die 1:1-Mischung, die hier nachgebaut ist.

Ein Spiel kann also gleichzeitig einen Soundeffekt und Sprache abspielen, wie beim Original.

7.4. Der Soundtest

S5-Dip4 auf „ON“ stellen und neu starten. Dann den Soundtest-Taster auf der Platine drücken:

Solange der Soundtest aktiv ist, übernimmt er die Anzeige, und der Diagnose-Interrupt der MPU ist gesperrt, damit der Taster Diag nicht zwei Dinge gleichzeitig tut.

Mit S5-Dip4 auf „OFF“ wirkt derselbe Taster als Testtaster der Soundplatine selbst, genau wie auf einer originalen Williams-Soundplatine.

7.5. Spiele mit eingeschränkter Soundunterstützung

Fünf Spiele der Liste verwenden eine Belegung der Soundbefehle, die WillFA7S nicht vollständig nachbildet:

World Cup (2), Contact (3), Disco Fever (4), Phoenix (6) und Warlok (25).

Warlok braucht eine sechste Sound-Select-Leitung, die das Original über die Brücke W12 auf der Soundplatine heranführt. WillFA7S baut den Williams-Latch für Sound und Komma so nach, wie er ist, und dieser Latch führt fünf Leitungen - eine sechste gibt es also nicht weiterzugeben.

World Cup, Contact, Disco Fever und Phoenix sind die frühen System-3-Spiele. Sie ordnen ihre Soundbefehle anders an: Eines der fünf Bits liegt auf einem anderen Eingang der Soundplatine, und zwei Eingänge werden auf High gehalten. Auch diese Belegung ist nicht nachgebaut.

In beiden Fällen laufen die Spiele und lassen sich spielen, aber einige ihrer Sounds sind nicht die richtigen.

Alle anderen Spiele der Liste sind nicht betroffen.

8. Software, SD-Karten-Image und das FPGA programmieren

Alles, was Sie brauchen, um die Software auf die Platine zu bringen, steht auf meiner Webseite und wird dort aktuell gehalten:

https://lisy.dev/documentation-01.html

Dort finden Sie:

Achten Sie darauf, die WillFA7S-Version des FPGA-Programms zu nehmen - sie zeigt eine Version, die mit 6 beginnt. Das SD-Karten-Image ist dasselbe, das alle WillFA7-Platinen verwenden.

9. Aufbau der SD-Karte

Wegen der Grenzen der Leseroutine im FPGA (sie liest feste Sektornummern, statt nach Dateinamen zu suchen) ist mein SD-Karten-Image nötig. Sie können es auf eine SD-Karte Ihrer Wahl schreiben.

Die Karte hat zwei Bereiche, beide mit einem Platz (Slot) je Spielnummer:

Sektor 660 + Spielnummer x 24     12 KByte  Spiel-ROMs, 6 x 2K -> die MPU sieht sie ab $5000
Sektor 1428 + Spielnummer x 40    20 KByte  ROMs der Soundplatine, 5 x 4K

Der erste Bereich ist genau die Karte der Platinen ohne Soundplatine, ein Image funktioniert also überall; diese Platinen lesen den zweiten Bereich nie. Eine Prüfsumme gibt es nicht (die Versionen 6.03 bis 6.2x hatten Slots zu 64 KByte mit CRC16 - eine solche Karte startet mit 6.30 nicht).

9.1. Eigene ROMs verwenden

Das SD-Karten-Image hat einen Slot je Spielnummer, ein ROM-Satz lässt sich also austauschen, ohne das FPGA-Programm zu ändern.

Schreiben Sie Ihren ROM-Satz mit einem Sektoreditor an die beiden oben genannten Stellen: 12 KByte Spiel-ROMs in den ersten Bereich, 20 KByte ROMs der Soundplatine in den zweiten. Jeder Teil wird als ein Block gelesen und muss vollständig sein.

10. Spiel-ROMs im FPGA-Flash

Das FPGA startet aus einem 2-MByte-Flashbaustein (EPCS16) auf der Platine. Das FPGA-Programm selbst belegt davon weniger als 400 KByte; ab Adresse 080000h ist Platz für alle 32 Spiele, je 32 KByte - Spiel-ROMs und ROMs der Soundplatine zusammen:

Flash-Adresse 080000h + Spielnummer x 8000h    12 KByte Spiel-ROMs, dann 20 KByte ROMs der Soundplatine

Die ROMs sind urheberrechtlich geschützt und können deshalb nicht Teil des Downloads sein. Sie legen sie selbst hinein, von Ihrer eigenen SD-Karte:

  1. Beschreiben Sie Ihre SD-Karte wie gewohnt mit dem Image (Kapitel 9) und stecken Sie sie in das Kartenlesegerät Ihres PCs.

  2. Die ROM-Datei erzeugen. Im WillFA7-Quellbaum (github.com/bontango/WillFA7) ausführen:

    scripts\make_flash_hex.ps1 -SlotFiles <the 32 game files on the card> -SoundFiles <the 32 sound files> -Out variants\s_cyclone_iv_v4\output_files\willfa7_roms.hex

    Die Dateien auf der Karte sind nach den Spielen benannt (hottip, lucky7, ...), die Sounddateien genauso mit _s am Ende, in der Reihenfolge der Spielnummern. Alternativ nimmt -Image <image file> ein vollständiges Image der Karte. Das Skript listet jedes gefundene Spiel mit seinem Reset-Vektor auf; ein Spiel mit Vektor FFFF ist leer.

  3. Im Ordner variants\s_cyclone_iv_v4 quartus_cpf -c willfa7_roms.cof ausführen. Das packt FPGA-Programm und ROMs in eine Datei, output_files\willfa7_roms.jic.

  4. willfa7_roms.jic mit dem Quartus Programmer statt der normalen .jic programmieren, mit Haken bei „Verify“.

Ab jetzt läuft die Platine ohne SD-Karte. Steckt eine Karte, gewinnt immer die Karte - Sie können also weiterhin andere ROMs von einer Karte ausprobieren, ohne den Flash anzufassen.

Behalten Sie diese Datei für sich. Sie enthält die Spiel-ROMs und darf nicht weitergegeben werden.

Anhang A Spielauswahl

Nr. S1 S2 S3 S4 S5 S6 Typ Name
0 off off off off off off SYS3 Hot Tip
1 on off off off off off SYS3 Lucky Seven
2 off on off off off off SYS3 World Cup *
3 on on off off off off SYS3 Contact *
4 off off on off off off SYS3 Disco Fever *
5 on off on off off off SYS4 Pokerino
6 off on on off off off SYS4 Phoenix *
7 on on on off off off SYS4 Flash
8 off off off on off off SYS4 Stellar Wars
9 on off off on off off SYS6 Tri Zone
10 off on off on off off SYS6 Time Warp
11 on on off on off off SYS6 Gorgar
12 off off on on off off SYS6 Laser Ball
13 on off on on off off SYS6 Firepower
14 off on on on off off SYS6 Blackout
15 on on on on off off SYS6 Scorpion
16 off off off off on off SYS6A Algar
17 on off off off on off SYS6A Alien Poker
18 off on off off on off SYS7 Black Knight
19 on on off off on off SYS7 Jungle Lord
20 off off on off on off SYS7 Pharaoh
21 on off on off on off SYS7 Solar Fire
22 off on on off on off SYS7 Barracora
23 on on on off on off SYS7 Cosmic Gunfight
24 off off off on on off SYS7 Varkon
25 on off off on on off SYS7 Warlok *
26 off on off on on off SYS7 Time Fantasy
27 on on off on on off SYS7 Joust
28 off off on on on off SYS7 Firepower II
29 on off on on on off SYS7 Laser Cue
30 off on on on on off SYS7 Defender
31 on on on on on off SYS7 Star Light

(*) die Soundunterstützung ist bei diesen Spielen unvollständig, siehe Kapitel 7.5

Die Spalte Typ sagt auch, mit welchen Spieleranzeigen das Spiel kam: SYS3, SYS4 und SYS6 sind sechsstellig, SYS6A (Algar und Alien Poker) und SYS7 sind siebenstellig. Danach richtet WillFA7S seine Startmeldung aus, siehe Kapitel 5.1. on = Schalter auf ON.