MPU Williams à base de FPGA
Version matérielle v1.3
Version logicielle x.30
manuel d'utilisation
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.
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 !
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 ?
La possibilité de lire et d'écrire des cartes micro SD
Un PC avec un port USB pour programmer le FPGA
Téléchargez les dernières versions de l'image de carte SD et du programme FPGA sur lisy.dev
Écrivez l'image sur une carte SD
Programmez le FPGA
Réglez le banc « choix du jeu » selon votre flipper (annexe A)
Remplacez votre MPU et votre carte de pilotage Williams d'origine par WillFA7
Au premier démarrage avec votre jeu, mettez le DIP d'option 1 sur ON (initialisation du nvram)
Allumez le flipper
Le jeu affiche le numéro de PROM Williams ; attendez que la « LED Diag » s'éteigne
Éteignez le flipper
Allumez le flipper
Amusez-vous
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.
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.
Le réglage par défaut est tout sur « OFF ».
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.
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
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 ».
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 ».
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.
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.
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.
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.
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.
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.
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 !
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 ».
À 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.
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.
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 :
Vous y trouverez :
le dernier programme FPGA et la dernière image de carte SD à télécharger
comment écrire l'image sur une carte SD
le logiciel de programmation nécessaire, l'installation du pilote USB Blaster et la programmation du FPGA
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.
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.
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.
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.
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 :
É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.
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.
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.
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.
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.
| 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.