WillFA7S

MPU Williams avec carte son intégrée, à base de FPGA

Version matérielle v1.0

Version logicielle 6.30

manuel d'utilisation

ralf@lisy.dev

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.

Table des matières

Remarque importante

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 !

1. Introduction

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 ?

Deux choses diffèrent dès le départ ; lisez-les avant de commencer :

2. Démarrage rapide

  1. Téléchargez la dernière image de carte SD WillFA7S et le 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. Réglez les options de la carte son sur S5 (chapitre 4.3) - pour la plupart des jeux, tout sur « OFF » convient

  6. Remplacez votre MPU, votre carte de pilotage et votre carte son Williams d'origine par WillFA7S

  7. 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

  8. Allumez le flipper

  9. Amusez-vous

3. Installation

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.

4. Réglage des interrupteurs DIP

4.1. Banc DIP S1 : choix du jeu

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.

4.2. Banc DIP S2 : options

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.

4.3. Banc DIP S5 : options de la carte son

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.

4.3.1. S5-Dip1 -> carillons ou sons synthétisés

« 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.

4.3.2. S5-Dip2 -> voix

« 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.

4.3.3. S5-Dip3 -> réservé

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.

4.3.4. S5-Dip4 -> rôle du bouton de test du son

La carte a un bouton-poussoir de test du son. Cet interrupteur décide de ce que fait un appui :

4.4. Tous les DIP ne sont lus qu'une fois, au démarrage

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.

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 - 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.

5.2. Phase 2 : lecture de la carte SD

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.

5.3. Fonctionnement sans carte SD

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.

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. La carte son démarre en même temps que le jeu.

6. Réglages du 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.

7. La carte son intégrée

7.1. Quelle carte son elle remplace

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.

7.2. D'où viennent les commandes de son

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.

7.3. Sortie audio

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.

7.4. Le test du son

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.

7.5. Jeux avec une prise en charge du son limitée

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.

8. 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 :

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.

9. 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. 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).

9.1. Utiliser ses propres ROM

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.

10. ROM de jeu dans la flash du FPGA

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 :

  1. Écrivez votre carte SD avec l'image comme d'habitude (chapitre 9) et insérez-la 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 -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.

  3. 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.

  4. 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é.

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

(*) 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.