MPU Williams avec carte son intégrée, à base de FPGA
Version matérielle v1.0
Version logicielle 6.30
manuel d'utilisation
v1.31 23.10.2026
Version française de WillFA7S_HWv1_x_user_manual.html. Deutsche Fassung: WillFA7S_HWv1_x_Bedienungsanleitung.html. La numérotation des chapitres est la même dans les trois versions.
L'utilisation de WillFA7S 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 WillFA7S !
WillFA7S est un WillFA7 avec une carte son Williams intégrée dans le même FPGA. Il émule le matériel d'une MPU Williams de type SYS3 à SYS7, avec la carte de pilotage intégrée à la carte, et, sur la même puce, un deuxième ordinateur complet : la carte son Williams de type 1 / type 2 avec son propre 6802, sa propre PIA, ses propres ROM programme, le DAC et le décodeur vocal CVSD.
Une seule carte remplace donc la MPU, la carte de pilotage et la carte son.
Le FPGA est un Cyclone IV EP4CE10 - plus grand que celui des cartes WillFA7 simples, car les cinq ROM de la carte son ont besoin de mémoire supplémentaire. Tous les jeux SYS3..SYS7 sont pris en charge, y compris « Defender » et « Star Light ».
Tout ce qui ne concerne pas la carte son fonctionne exactement comme sur un WillFA7 - l'espace d'adressage, la matrice d'interrupteurs et son anti-rebond, les bobines, les lampes, les afficheurs, l'EEPROM de réglages, les phases de démarrage. Ce qui n'est pas mentionné ici se trouve dans le manuel WillFA7 ; cela s'applique sans changement.
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
Deux choses diffèrent dès le départ ; lisez-les avant de commencer :
La carte SD est la même que celle de tous les WillFA7. Depuis la version logicielle x.30, c'est la carte x.20 des autres cartes, avec derrière les jeux une deuxième zone qui contient les ROM de la carte son. Seul WillFA7S lit cette zone. Voir le chapitre 9.
Il y a un banc DIP de plus, S5 avec quatre interrupteurs, pour les options de la carte son. Voir le chapitre 4.3.
Téléchargez la dernière image de carte SD WillFA7S et le 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)
Réglez les options de la carte son sur S5 (chapitre 4.3) - pour la plupart des jeux, tout sur « OFF » convient
Remplacez votre MPU, votre carte de pilotage et votre carte son Williams d'origine par WillFA7S
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
WillFA7S a 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.
La sortie audio de la carte son intégrée va vers l'amplificateur de votre flipper. La carte son d'origine n'est plus nécessaire et peut rester dehors.
Le connecteur pour une carte son externe porte toujours les commandes de son, exactement comme sur un WillFA7. Les deux fonctionnent en même temps : ce que le jeu envoie à la carte son interne est aussi présent sur ce connecteur.
Ici, vous choisissez le jeu que WillFA7S 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 9 explique la structure du contenu de la carte SD.
Identique à WillFA7, tout sur « OFF » par défaut :
| DIP | Fonction |
|---|---|
| Dip1 | initialisation du nvram - à mettre sur ON pour le tout premier démarrage avec votre jeu |
| Dip2/3 | durée d'impulsion des bobines spéciales : OFF-OFF 60 ms, OFF-ON 50 ms, ON-OFF 40 ms, ON-ON 35 ms |
| Dip4 | anti-rebond des bobines spéciales : OFF = 57 µs, ON = 250 µs |
| Dip5 | anti-rebond de la matrice d'interrupteurs : ON = filtré, OFF = transmis sans filtrage |
| Dip6 | pas de protection sur la bobine spéciale 6 (SOL 22), nécessaire pour le jeu « CONTACT » |
Le manuel WillFA7 les décrit en détail.
Ce banc n'existe pas sur un WillFA7. Il configure la carte son, de la même façon que l'interrupteur DS1 sur une carte son Williams d'origine. Le réglage par défaut est tout sur « OFF » - c'est le bon réglage pour la plupart des jeux.
« ON » sélectionne les notes de carillon (chimes), « OFF » les sons synthétisés. C'est le même interrupteur que la position 1 de DS1 sur la carte son d'origine. Ce que veut votre jeu est indiqué dans le manuel de votre flipper ; ce sont les premiers jeux System 3 qui utilisent des carillons.
« ON » indique à la carte son qu'une voix est présente, « OFF » qu'il n'y en a pas. Seules les cartes son de type 2 - celles qui ont les ROM vocales - ont une voix ; laissez donc ce réglage sur « OFF » pour un jeu sans voix.
Non utilisé, laissez-le sur « OFF ».
Jusqu'au logiciel 6.03, cet interrupteur sélectionnait l'origine des commandes de son, System 3/4 ou System 6/7. Depuis 6.22, la carte le déduit elle-même du numéro de jeu ; il n'y a donc plus rien à régler. Voir le chapitre 7.2.
La carte a un bouton-poussoir de test du son. Cet interrupteur décide de ce que fait un appui :
« OFF » - le bouton agit comme le bouton de test de la carte son elle-même, exactement comme celui d'une carte son Williams d'origine. La carte son joue son propre son de test.
« ON » - le bouton lance le test du son intégré de WillFA7S, qui permet de parcourir tous les numéros de son et de les jouer un par un. Voir le chapitre 7.4.
C'est le seul piège dans lequel on tombe facilement. Sur WillFA7S, les interrupteurs DIP ne sont lus qu'une seule fois, pendant la phase de démarrage, puis les lignes sur lesquelles ils se trouvent sont rendues à la matrice d'interrupteurs du jeu. Les lire en continu perturberait la matrice d'interrupteurs pendant que le jeu tourne.
Donc : après avoir changé un interrupteur DIP - choix du jeu, options ou options de la carte son - éteignez puis rallumez le flipper. Un changement pendant le jeu n'a aucun effet.
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 - elle commence par un 6 sur WillFA7S
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 : les interrupteurs d'options - les deux chiffres de gauche sont les options de la carte son S5, les deux de droite les options du jeu S2
Les versions 6.03 à 6.2x affichaient deux sommes de contrôle de la carte sur les joueurs 3 et 4. Depuis 6.30, la carte ne porte plus de somme de contrôle, et les deux afficheurs montrent la même chose que sur tout WillFA7.
La valeur d'option se forme ainsi : chaque interrupteur sur « ON » ajoute son poids.
C'est le même comptage que pour le choix du jeu S1 de l'annexe A : Dip1 est toujours celui qui vaut 1.
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. WillFA7S 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.
WillFA7S lit la carte deux fois : d'abord les 12 Ko de ROM de jeu, puis les 20 Ko de ROM de la carte son. 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 6.03 à 6.2x. Depuis 6.30, la carte ne porte pas de somme de contrôle.
Nouveau avec 6.30 : si aucune carte SD ne répond (codes 1 à 4 ci-dessus), WillFA7S ne s'arrête pas là mais lit les ROM de jeu et les ROM de la carte son 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. La carte son démarre en même temps que le jeu.
Les réglages du jeu se font exactement comme sur un WillFA7 et comme sur la MPU d'origine ; WillFA7S les enregistre dans une EEPROM série, séparément pour chaque jeu.
La procédure pas à pas pour System 3 et l'image avec l'emplacement des boutons se trouvent au chapitre 6 du manuel WillFA7 - les boutons sont ici aux mêmes emplacements.
Une différence pendant le test du son : le bouton Diag fait défiler les numéros de son au lieu de déclencher l'interruption de diagnostic, et Enter joue le son choisi au lieu d'enregistrer un réglage. Cela ne dure que tant que le test du son est actif, voir le chapitre 7.4.
Les cartes son Williams de System 3 à System 7, type 1 (son seul) et type 2 (son et voix). Dans le FPGA, c'est une reconstruction complète : un deuxième processeur 6802, sa propre PIA, 128 octets de RAM, cinq ROM programme de 4 Ko, le DAC pour le son et un décodeur CVSD HC55564 pour la voix.
Les cinq blocs ROM sont remplis depuis la carte SD au démarrage, en même temps que les ROM de jeu - c'est pourquoi l'organisation de la carte est différente, voir le chapitre 9.
Williams a procédé différemment au fil des années :
WillFA7S choisit la bonne source automatiquement, d'après le numéro de jeu réglé sur S1. Il n'y a rien à configurer. Jusqu'au logiciel 6.03, c'était un interrupteur DIP ; depuis 6.22, cela suit le numéro de jeu, la même référence que celle utilisée par la protection mémoire.
Le son et la voix sont mélangés dans le FPGA et quittent la carte ensemble sur une seule ligne, dans un rapport fixe de 1:1. C'est aussi ce que fait l'original, mais en analogique : le signal son passe au module vocal, est mélangé à la voix par le potentiomètre 5K R8 et revient. R8 en position médiane correspond au mélange 1:1 reconstruit ici.
Un jeu peut donc jouer en même temps un effet sonore et une voix, comme sur l'original.
Mettez S5-Dip4 sur « ON » et redémarrez. Appuyez ensuite sur le bouton de test du son de la carte :
Tant que le test du son est actif, il prend le contrôle de l'affichage, et l'interruption de diagnostic de la MPU est bloquée pour que le bouton Diag ne fasse pas deux choses à la fois.
Avec S5-Dip4 sur « OFF », le même bouton agit comme le bouton de test de la carte son elle-même, exactement comme sur une carte son Williams d'origine.
Cinq jeux de la liste utilisent une disposition des commandes de son que WillFA7S ne reproduit pas entièrement :
World Cup (2), Contact (3), Disco Fever (4), Phoenix (6) et Warlok (25).
Warlok a besoin d'une sixième ligne de sélection du son, que l'original amène par le cavalier W12 de la carte son. WillFA7S reconstruit le verrou son et virgule de Williams tel quel, et ce verrou porte cinq lignes - il n'y a donc pas de sixième ligne à transmettre.
World Cup, Contact, Disco Fever et Phoenix sont les premiers jeux System 3. Ils disposent leurs commandes de son autrement : l'un des cinq bits se trouve sur une autre entrée de la carte son, et deux entrées sont maintenues à l'état haut. Cette disposition n'est pas reconstruite non plus.
Dans les deux cas, les jeux tournent et se jouent, mais certains de leurs sons ne seront pas les bons.
Tous les autres jeux de la liste ne sont pas concernés.
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
Veillez à prendre la version WillFA7S du programme FPGA - elle affiche une version qui commence par 6. L'image de carte SD est la même pour toutes les cartes WillFA7.
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. Vous pouvez écrire l'image sur la carte SD de votre choix.
La carte contient deux zones, chacune avec un emplacement (slot) par numéro de jeu :
secteur 660 + numéro de jeu x 24 12 Ko ROM de jeu, 6 x 2K -> la MPU les voit à partir de $5000
secteur 1428 + numéro de jeu x 40 20 Ko ROM de la carte son, 5 x 4K
La première zone est exactement la carte des cartes sans carte son ; une seule image fonctionne donc partout, et ces cartes ne lisent jamais la deuxième zone. Il n'y a pas de somme de contrôle (les versions 6.03 à 6.2x avaient des emplacements de 64 Ko avec un CRC16 - une telle carte ne démarre pas avec 6.30).
L'image de carte SD contient un emplacement par numéro de jeu ; un jeu de ROM peut donc être remplacé sans changer le programme FPGA.
Écrivez votre jeu de ROM aux deux positions indiquées ci-dessus avec un éditeur de secteurs : 12 Ko de ROM de jeu dans la première zone, 20 Ko de ROM de la carte son dans la deuxième. Chaque partie est lue comme un seul bloc et doit être complète.
Le FPGA démarre depuis une puce flash de 2 Mo (EPCS16) sur la carte. Le programme FPGA lui-même en occupe moins de 400 Ko ; à partir de l'adresse 080000h, il y a de la place pour les 32 jeux, 32 Ko chacun - ROM de jeu et ROM de la carte son ensemble :
adresse flash 080000h + numéro de jeu x 8000h 12 Ko de ROM de jeu, puis 20 Ko de ROM de la carte son
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 9) et insérez-la 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 -SlotFiles <the 32 game files on the card> -SoundFiles <the 32 sound files> -Out variants\s_cyclone_iv_v4\output_files\willfa7_roms.hex
Les fichiers de la carte sont nommés d'après les jeux
(hottip, lucky7, ...) et les fichiers de son
de même avec _s à la fin, dans l'ordre des jeux. À la
place, -Image <image file> prend une image complète
de la carte. Le script liste chaque jeu trouvé avec son vecteur de reset
; un jeu affiché avec le vecteur FFFF est vide.
Dans le dossier variants\s_cyclone_iv_v4, 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 .jic normal, avec « Verify »
coché.
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é.
| 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 |
(*) la prise en charge du son est incomplète pour ces jeux, voir le chapitre 7.5
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. WillFA7S place son
message de démarrage en conséquence, voir le chapitre 5.1. on =
interrupteur sur ON.