WillFA7

MPU Williams à base de FPGA

Version matérielle v1.3

Version logicielle x.30

manuel d'utilisation

ralf@lisy.dev

v1.31 23.10.2026

Version française de WillFA7_HWv1_x_user_manual.html. Deutsche Fassung: WillFA7_HWv1_x_Bedienungsanleitung.html. La numérotation des chapitres est la même dans les trois versions.

Table des matières

Remarque importante

L'utilisation de WillFA7 peut endommager votre flipper. Comme il s'agit d'un projet privé SANS intérêt commercial, l'auteur décline toute responsabilité pour les dommages qui pourraient résulter de l'utilisation de WillFA7 !

1. Introduction

WillFA7 utilise un FPGA (bon marché) qui émule le matériel d'une MPU Williams de type SYS3 à SYS7 ; la carte de pilotage (driverboard) est intégrée à la carte.

Remarque : les jeux « Defender » et « Star Light » ne sont pas pris en charge sur la carte « standard » Cyclone II. Pour les faire tourner, il vous faut ma carte Cyclone IV. Avec la carte Cyclone IV, tous les jeux SYS3..SYS7 sont pris en charge.

Remarque : si vous voulez aussi remplacer la carte son, regardez WillFA7S. C'est la même MPU avec une carte son Williams intégrée dans le même FPGA, et elle a son propre manuel.

Nouveau avec le logiciel x.30 : la carte fonctionne aussi sans carte SD, avec les ROM de jeu dans la mémoire flash de la carte FPGA (chapitres 5.3 et 9).

De quoi avez-vous besoin ?

2. Démarrage rapide

  1. Téléchargez les dernières versions de l'image de carte SD et du programme FPGA sur lisy.dev

  2. Écrivez l'image sur une carte SD

  3. Programmez le FPGA

  4. Réglez le banc « choix du jeu » selon votre flipper (annexe A)

  5. Remplacez votre MPU et votre carte de pilotage Williams d'origine par WillFA7

  6. Au premier démarrage avec votre jeu, mettez le DIP d'option 1 sur ON (initialisation du nvram)

    1. Allumez le flipper

    2. Le jeu affiche le numéro de PROM Williams ; attendez que la « LED Diag » s'éteigne

    3. Éteignez le flipper

  7. Allumez le flipper

  8. Amusez-vous

3. Installation

Les cartes WillFA7 ont les mêmes connecteurs et les mêmes trous de fixation que les MPU Williams d'origine ; le remplacement se fait donc en quelques secondes. La carte se place à l'emplacement de l'ancienne carte de pilotage Williams.

4. Réglage des interrupteurs DIP

4.1. Banc DIP S1 : choix du jeu

Ici, vous choisissez le jeu que WillFA7 doit exécuter. Cela dépend des ROM présentes sur la carte SD. La liste complète est à l'annexe A, et le chapitre 8 explique la structure du contenu de la carte SD.

4.2. Banc DIP S2 : options

Le réglage par défaut est tout sur « OFF ».

4.2.1. S2-Dip1 -> initialisation du nvram

Avec Dip1 sur « ON », WillFA7 remet à zéro au démarrage le nvram du jeu choisi. C'est utile si vous voulez effacer TOUT le contenu de la RAM, et pour le tout premier démarrage avec votre jeu.

4.2.2. S2-Dip2 et Dip3 durée d'impulsion

DIP2 et DIP3 règlent la durée d'impulsion des bobines spéciales. Par défaut (les deux sur OFF), elle est de 60 ms, ce qui devrait correspondre au jeu d'origine. Les réglages possibles sont :

OFF – OFF 60 ms

OFF – ON 50 ms

ON – OFF 40 ms

ON – ON 35 ms

4.2.3. S2-Dip4 -> anti-rebond des bobines spéciales

Les entrées de déclenchement des bobines spéciales sont filtrées contre les rebonds dans le FPGA. Avec DIP4 sur « OFF », le filtre est de 57 µs ; avec DIP4 sur « ON », il est de 250 µs. Le réglage par défaut est « OFF ».

4.2.4. S2-Dip5 -> anti-rebond de la matrice d'interrupteurs

Avec DIP5 sur « ON », les retours de la matrice d'interrupteurs sont filtrés contre les rebonds dans le FPGA. Avec DIP5 sur « OFF », ils sont transmis sans filtrage, comme avec le logiciel x.17 et antérieur. Le réglage par défaut est « OFF ».

4.2.5. S2-Dip6 pas de protection sur la bobine spéciale 6 (SOL 22)

Nécessaire pour le jeu « CONTACT », car la bobine spéciale 6 doit y être activée en permanence (relais de la cible mobile), broche 9 de 2P12.

5. Séquence de démarrage

5.1. Phase 1 : message de démarrage

Juste après avoir allumé le flipper, la LED « ON » s'allume et les afficheurs de votre flipper montrent ceci :

Joueur 1 : version du programme FPGA en cours

Joueur 2 : valeur du jeu choisi sur S1 (choix du jeu)

Joueur 3 : date de construction du programme FPGA

Joueur 4 : phase de démarrage

Afficheur de crédit : valeur des interrupteurs d'options S2 (options du jeu)

Les versions .22 à .2x affichaient deux sommes de contrôle de la carte sur les joueurs 3 et 4. Depuis x.30, la carte ne porte plus de somme de contrôle, et les deux afficheurs montrent de nouveau la date de construction et la phase de démarrage.

Afficheurs à sept chiffres. Les jeux marqués SYS6A ou SYS7 à l'annexe A étaient équipés d'afficheurs de joueur à sept chiffres au lieu de six. WillFA7 le sait d'après le numéro de jeu et décale le message de démarrage en conséquence : le texte est aligné à droite, le chiffre le plus à gauche de chaque afficheur de joueur reste éteint, et les options gardent leur place sur l'afficheur de crédit. Il n'y a rien à régler pour cela.

5.2. Phase 2 : lecture de la carte SD

WillFA7 essaie de lire le contenu de la carte SD. En cas d'échec, la LED rouge « SD card error » s'allume et « 56 » apparaît sur l'afficheur 4.

La LED rouge clignote aussi un code qui indique ce qui n'a pas fonctionné. Comptez les clignotements ; après le dernier vient une pause d'environ 2 secondes, puis le groupe se répète.

Clignotements Signification
1 le transfert SPI s'est bloqué - vérifiez les contacts de la carte et le câblage
2 la carte ne répond pas à la commande de reset
3 type de carte non pris en charge, très probablement une très ancienne carte SD v1
4 la carte n'a jamais terminé son initialisation
5 aucune donnée n'est arrivée de la carte
6 la carte a signalé une erreur de lecture
8 pas de carte SD, et la flash du FPGA ne contient pas de ROM pour ce jeu - voir 5.3

Le code 7 (somme de contrôle incorrecte) n'existait qu'avec les versions .22 à .2x. Depuis x.30, la carte ne porte plus de somme de contrôle.

5.3. Fonctionnement sans carte SD

Nouveau avec x.30 : si aucune carte SD ne répond (codes 1 à 4 ci-dessus), WillFA7 ne s'arrête pas là mais lit les ROM de jeu dans la mémoire flash à partir de laquelle le FPGA démarre lui-même. Cela prend environ 1,3 seconde de plus, car la carte laisse d'abord sa chance à la carte SD.

5.4. Phase 3 : exécution du programme

Le code indiqué par le banc DIP « choix du jeu » est lu sur la carte SD (ou dans la flash, voir 5.3) et exécuté. Si le code tourne (des strobes d'affichage réguliers sont présents), la LED « active » s'allume.

6. Réglages du jeu

En général, les réglages du jeu se font de la même façon qu'avec la MPU d'origine. WillFA7 enregistre les réglages du jeu dans une EEPROM série, séparément pour chaque jeu. Il y a de petites différences dues à l'agencement différent de la carte, décrites ci-dessous.

6.1. System3

WillFA7 n'a qu'une LED de diagnostic, mais offre les boutons Data, Enter, Diagnostic et Function avec la même fonction que sur la carte d'origine. Leur emplacement sur la carte WillFA7 est indiqué sur l'image ci-dessous. Pour les réglages, consultez le manuel de votre flipper Williams.

Réglage sur SYS3 avec WillFA7 :

Faites un démarrage « à neuf » (éteignez le flipper puis rallumez-le)

Appuyez sur le bouton « Diag » de WillFA7, la LED voisine clignote deux fois

Déterminez quelle fonction doit être modifiée à l'aide du tableau 1 du manuel de votre jeu

Réglez l'interrupteur du bas sur la fonction à modifier

(par ex. la fonction 19 « Maximum Tilts » en mettant les Dip 4, 7 et 8 sur ON)

Réglez l'interrupteur du haut sur la valeur à enregistrer

(par ex. sur 1 en mettant le DIP 8 sur ON (la valeur par défaut est 3))

Pour enregistrer la valeur, appuyez sur « Enter » ; la LED voisine clignote pour indiquer que la modification a été prise en compte.

Vous pouvez vérifier les valeurs en appuyant sur « Advance » dans la porte à monnaie

L'afficheur d'état montre « 1804 » pour indiquer que vous êtes dans le « test 4 », et vous pouvez lire

la valeur du « Readout No. » 18 (meilleur score à ce jour) sur l'afficheur du joueur 1

En appuyant de nouveau sur Advance, vous parcourez les différents Readouts.

Après le Readout 23, on recommence au Readout 1 (Replay 1). Consultez le manuel de votre jeu pour la liste complète !

6.2. System4

Les réglages des jeux SYS4 se font de la même façon qu'avec la MPU d'origine, avec les boutons Data, Enter, Diagnostic et Function de la carte. Leur emplacement est indiqué sur l'image du chapitre « System3 ».

6.3. System6

À partir de SYS6, les réglages se font par la porte à monnaie, avec le bouton Advance et l'interrupteur Auto/Manual, exactement comme décrit dans le manuel de votre flipper. WillFA7 transmet ces deux signaux à la MPU émulée de la même façon que la carte d'origine ; la procédure est donc inchangée.

6.4. System7

Les jeux SYS7 se règlent par la porte à monnaie de la même façon que SYS6, voir ci-dessus, en suivant le manuel de votre flipper.

7. Logiciel, image de carte SD et programmation du FPGA

Tout ce qu'il faut pour mettre le logiciel sur la carte est décrit sur mon site, et c'est tenu à jour là-bas :

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

Vous y trouverez :

C'étaient auparavant deux chapitres de ce manuel. Ils ont été déplacés sur le site, car les liens de téléchargement, les versions des outils et les pages de téléchargement d'Intel changent bien plus souvent que ce manuel.

Veillez à prendre le programme FPGA de votre carte FPGA - voir le chapitre 10.

8. Structure de la carte SD

En raison des limites de la routine de lecture SD dans le FPGA (elle lit des numéros de secteur fixes au lieu de chercher des noms de fichier), il faut utiliser mon image de carte SD (128 Mo). Vous pouvez écrire l'image sur la carte SD de votre choix.

Avec le choix du jeu entièrement sur « 0 », WillFA7 lit la première image ROM au secteur 660. Avec mon image WillFA7 de 128 Mo, c'est l'emplacement du premier fichier écrit sur une carte SD vide.

8.1. L'image WillFA7

Mon image de carte SD WillFA7 contient presque toutes les ROM disponibles. La liste des jeux est à l'annexe A.

Important lors d'une mise à jour : depuis la version x.30, toutes les cartes utilisent de nouveau la carte x.20 (12 Ko par jeu) - Cyclone II compris. Une carte qui fonctionnait avec un programme x.20 pour Cyclone IV fonctionne sans changement. Une carte faite pour .22 ne fonctionne pas : écrivez l'image actuelle.

L'image actuelle comporte, derrière les jeux, une deuxième zone avec les ROM de la carte son de WillFA7S. Les cartes sans carte son ne la lisent tout simplement jamais.

8.2. Utiliser ses propres ROM

L'image de carte SD contient un emplacement (slot) par numéro de jeu ; un jeu de ROM peut donc être remplacé sans changer le programme FPGA.

Chaque emplacement fait 24 secteurs de 512 octets, soit 12 Ko, et le premier emplacement commence au secteur 660. L'emplacement d'un jeu commence donc au secteur 660 + numéro de jeu x 24, le numéro de jeu étant la valeur réglée sur l'interrupteur S1 (voir l'annexe A).

Décalage dans l'emplacement Taille Contenu
0x0000 - 0x2FFF 12 Ko ROM de jeu, 6 x 2K, vues par la MPU à partir de $5000

Les ROM de la carte son (WillFA7S uniquement) forment une zone séparée : 40 secteurs = 20 Ko par jeu à partir du secteur 1428 + numéro de jeu x 40.

Écrivez votre jeu de ROM à cette position avec un éditeur de secteurs. Il est lu comme un seul bloc et doit être complet. Les cartes avec Cyclone IV ou Cyclone 10 utilisent les 12 Ko de ROM de jeu ; les cartes avec Cyclone II ont un bloc ROM de moins et ignorent les 2 premiers Ko, si bien que les jeux qui ont besoin des 12 Ko complets (Defender, Star Light) n'y tournent pas. Il n'y a pas de somme de contrôle à corriger.

9. ROM de jeu dans la flash du FPGA

Nouveau avec le logiciel x.30. Le FPGA démarre depuis une puce flash sur la carte FPGA, et l'espace derrière le programme FPGA peut contenir les ROM des 32 jeux. Une carte avec des ROM dans la flash fonctionne sans carte SD (chapitre 5.3).

Carte Flash Organisation
Cyclone IV, Cyclone 10, dev_open (2.30 .. 5.30) EPCS16, 2 Mo à partir de 080000h, 32 Ko par jeu : 12 Ko de ROM de jeu, puis les 20 Ko de ROM de la carte son de WillFA7S. Une carte sans carte son ne lit que les 12 premiers Ko
Cyclone II (1.30) EPCS4, 512 Ko à partir de 030000h, 10 Ko par jeu (un bloc ROM de moins, comme sur la carte SD), 32 jeux jusqu'à la fin de la flash. Defender et Star Light n'y tournent pas
EPCS16   adresse flash 080000h + numéro de jeu x 8000h
EPCS4    adresse flash 030000h + numéro de jeu x 2800h   (Cyclone II)

Les ROM sont protégées par le droit d'auteur et ne peuvent donc pas faire partie du téléchargement. Vous les y placez vous-même, à partir de votre propre carte SD :

  1. Écrivez votre carte SD avec l'image comme d'habitude (chapitre 8) et gardez le fichier image, ou insérez la carte dans le lecteur de cartes de votre PC.

  2. Construisez le fichier ROM. Dans l'arborescence source de WillFA7 (github.com/bontango/WillFA7), exécutez

    scripts\make_flash_hex.ps1 -Image <image file> -Out variants\<variant>\output_files\willfa7_roms.hex

    Pour la carte Cyclone II, ajoutez -CycloneII ; cela écrit l'organisation compacte. À la place de -Image, -SlotFiles prend les 32 fichiers de jeu de la carte (nommés d'après les jeux : hottip, lucky7, ...), dans l'ordre des jeux. Le script liste chaque jeu trouvé avec son vecteur de reset ; un jeu affiché avec le vecteur FFFF est vide.

  3. Dans le dossier variants\<variant>, exécutez quartus_cpf -c willfa7_roms.cof. Cela regroupe le programme FPGA et les ROM dans un seul fichier, output_files\willfa7_roms.jic.

  4. Programmez willfa7_roms.jic avec le Quartus Programmer à la place du fichier normal, avec « Verify » coché. Sur la carte Cyclone II, c'est aussi un .jic, programmé par JTAG, et non le .pof habituel.

Les noms des variantes sont ceux du chapitre 10. Dès lors, la carte fonctionne sans carte SD. Si une carte SD est insérée, elle a toujours la priorité ; vous pouvez donc toujours essayer d'autres ROM depuis une carte sans toucher à la flash.

Gardez ce fichier pour vous. Il contient les ROM de jeu et ne doit pas être diffusé.

État des tests : le démarrage depuis la flash sans carte SD a été confirmé sur la carte Cyclone II (1.30). Sur les autres cartes, le repli sur la flash n'a pas encore été essayé sur du matériel.

10. Variantes de carte

Le même design fonctionne sur plusieurs cartes FPGA, et le programme FPGA n'est pas interchangeable entre elles - le brochage diffère. Le premier chiffre de la version affichée sur l'afficheur du joueur 1 au démarrage indique quel programme tourne.

Version Carte FPGA Fichier x.30 Variante (arborescence source)
1.30 Cyclone II (EP2C5) - carte « standard » Cyclone_II/WillFA7_v130.pof cyclone_ii
2.30 Cyclone IV v3.x (EP4CE6F17) Cyclone_IV/FPGA_board_v3.x/willfa7_v230.jic cyclone_iv_v3
3.30 Cyclone IV v4.x (EP4CE6E22) Cyclone_IV/FPGA_board_v4.x/willfa7_v330.jic cyclone_iv_v4
4.30 Cyclone 10 (10CL006) cyclone_10/willfa7_v430.jic cyclone_10
5.30 carte dev_open Cyclone IV (EP4CE6E22) dev_open/willfa7_v530.jic cyclone_iv_dev_open
6.30 WillFA7S avec carte son - voir le manuel WillFA7S WillFA7S/willfa7_v630.jic s_cyclone_iv_v4

Les jeux 30 et 31 (Defender, Star Light) ont besoin des six blocs ROM et ne tournent donc pas sur la carte Cyclone II.

Annexe A choix du jeu

N° S1 S2 S3 S4 S5 S6 type Nom
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 *

(*) carte Cyclone IV et image SD nécessaires

La colonne type indique aussi avec quels afficheurs de joueur le jeu était livré : SYS3, SYS4 et SYS6 sont à six chiffres, SYS6A (Algar et Alien Poker) et SYS7 à sept chiffres. WillFA7 place son message de démarrage en conséquence, voir le chapitre 5.1. on = interrupteur sur ON.