SternFA

MPU Stern / Bally à base de FPGA

Version matérielle 2.0

Version logicielle 5.30

manuel d'utilisation

ralf@lisy.dev

v1.3 23.10.2026

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

Ce manuel décrit la version matérielle 2.0 (cartes v2.00 à v2.02) avec le logiciel 5.30. Pour les cartes plus anciennes (HW 1.0 et HW 1.1), il existe un manuel séparé, SternFA_HW1_x_manuel_utilisateur.html (logiciel x.30, il remplace le manuel v1.04). Ce qui a changé entre les deux générations de cartes est listé au chapitre 12.

Table des matières

Remarque importante

L'utilisation de SternFA 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 SternFA !

1. Introduction

SternFA utilise un FPGA (bon marché) qui émule le matériel d'une MPU Stern. Il reconstruit le processeur MC6800, les deux PIA 6821, la RAM de travail 6810, la RAM CMOS 5101 et les quatre ROM de jeu, et il pilote les connecteurs d'origine du flipper pour les afficheurs, les lampes, les interrupteurs et les bobines.

Comme la même famille de MPU équipe les flippers Bally, SternFA fait tourner les jeux Stern MPU-100, Stern MPU-200 et Bally -17/-35 - l'image de carte SD contient 238 numéros de jeu, voir l'annexe A. Le jeu exécuté se choisit avec les huit interrupteurs du banc DIP S1.

SternFA est un projet 100 % amateur. Cela rend la solution bon marché : selon l'endroit où vous achetez les composants, vous pouvez construire votre MPU Stern de remplacement pour moins de 80.

De quoi avez-vous besoin ?

Trois choses sont bonnes à savoir avant de commencer :

2. Démarrage rapide

  1. Téléchargez la dernière image de carte SD et le programme FPGA pour le matériel 2.0 sur lisy.dev (chapitre 10)
  2. Écrivez l'image sur une carte micro SD et insérez la carte dans la platine
  3. Programmez le FPGA - prenez la version 5.xx
  4. Réglez le banc DIP S1 « choix du jeu » selon votre flipper (annexe A)
  5. Laissez pour commencer tout le banc DIP S2 « options » sur OFF
  6. Remplacez votre MPU Stern/Bally d'origine par SternFA
  7. Allumez le flipper
  8. Observez l'affichage d'informations pendant les premières secondes et vérifiez que la version et le numéro de jeu sont ceux attendus (chapitre 5.2)
  9. Amusez-vous

3. Installation

Les cartes SternFA ont les mêmes connecteurs et les mêmes trous de fixation que les MPU Bally/Stern d'origine ; le remplacement se fait donc en quelques secondes. Éteignez le flipper, retirez la MPU d'origine, mettez SternFA en place, c'est fini.

3.1. Ce que SternFA remplace et ce qu'il ne remplace pas

Remplacé : la carte MPU - processeur, RAM, ROM, les deux PIA et la logique d'interface qui les entoure.

Toujours nécessaire : tout ce qui est en dehors de la MPU. SternFA pilote les connecteurs d'origine et attend derrière eux les cartes d'origine :

SternFA ne reconstruit aucune de ces cartes. Il se comporte envers elles exactement comme la MPU d'origine.

3.2. Ce qui se trouve sur la carte

FPGA Cyclone IV E, EP4CE6E22C8, sur une carte de développement dev_open enfichée sur la carte SternFA
Horloge oscillateur 50 MHz sur la carte FPGA ; le 6800 émulé tourne à environ 446 kHz pour les jeux Bally / MPU-100 et environ 893 kHz pour les jeux Stern MPU-200 - l'horloge du quartz d'origine de 3,58 MHz divisée par 8 et par 4
Carte SD support micro SD, lu en mode brut - c'est de là que viennent les ROM de jeu
FRAM FM25CL64B, conserve le contenu de la RAM CMOS après une coupure de courant (chapitre 8)
ESP32-C3 support X7 pour un ESP32-C3 Super Mini, optionnel, pour l'interface de test FA-Control (chapitre 9)
Interrupteurs DIP S1 choix du jeu (8), S2 options (6), S9 options ESP32 (4, lus par l'ESP32, pas par le FPGA)
Boutons SW2 reset et SW3 sur la carte FPGA, S6 « Bally Test », S33 remise à zéro de la comptabilité, S8 test ESP32
LED rouge « SD card error », jaune « zero cross », verte « Bally » - en parallèle avec les LED de la carte FPGA

4. Réglage des interrupteurs DIP

4.1. Banc DIP S1 : choix du jeu

Ici, vous choisissez le jeu que SternFA doit exécuter. Cela dépend des ROM présentes sur la carte SD ; l'annexe A liste le contenu de l'image actuelle.

La position des interrupteurs est simplement le numéro du jeu en binaire, S1 étant le bit de poids faible :

Interrupteur S1 S2 S3 S4 S5 S6 S7 S8
ajoute 1 2 4 8 16 32 64 128

ON = la valeur est ajoutée. Le jeu 101 (MATAHARI) correspond donc à 1 + 4 + 32 + 64 = S1, S3, S6 et S7 sur ON, tout le reste sur OFF. L'annexe A détaille cela pour chaque jeu.

Les numéros de jeu 0 à 63 sont des jeux Stern MPU-200 et tournent avec l'horloge processeur la plus élevée. À partir de 64, SternFA utilise l'horloge Bally / MPU-100. Cela se déduit uniquement du numéro de jeu (interrupteurs S7 et S8), c'est pourquoi le DIP d'option 3 existe - voir 4.2.3.

4.2. Banc DIP S2 : options

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

4.2.1. S2-Dip1 -> émulateur de zero cross

Une MPU Bally/Stern a besoin d'un signal « zero cross » (passage par zéro) pour fonctionner correctement ; ce signal provient de l'alimentation 12 volts. Sa présence est vérifiée au démarrage.

Avec Dip1 sur ON, SternFA génère lui-même le signal (100 Hz, soit un secteur à 50 Hz) ; pour des essais sur l'établi, une alimentation 5 volts suffit alors. Avec un zero cross émulé, la temporisation est différente - à utiliser sur l'établi, pas dans le flipper.

4.2.2. S2-Dip2 -> sauvegarde du nvram dans la FRAM

SternFA enregistre le contenu du nvram (meilleurs scores et réglages étendus) dans une puce FRAM. Pour les essais sur l'établi, Dip2 peut être mis brièvement sur ON ; SternFA sauvegarde alors en continu le contenu actuel du nvram.

En jeu normal, le contenu du nvram est de toute façon sauvegardé automatiquement - déclenché par l'interrupteur de test, le relais de fin de partie (game over) et le bouton de crédit.

4.2.3. S2-Dip3 -> forcer un jeu Bally

Avec SternFA, vous pouvez aussi faire tourner tous les jeux qui tournent sur BallyFA, en utilisant l'image SD de ROM de BallyFA. Mettez alors cette option sur ON - sinon tous les jeux dont le numéro est inférieur à 64 tourneraient avec l'horloge processeur MPU-200, plus élevée.

L'image SD Stern fournie contient les jeux Stern et Bally avec la bonne numérotation ; avec cette image, vous n'avez pas besoin de cette option.

Dip4 et Dip5 ont échangé leurs places dans le logiciel 5.06. L'anti-scintillement était sur Dip4 et se trouve maintenant sur Dip5 ; Dip4 est l'autorisation FA-Control, le même interrupteur que sur AtariFA. Si vous passez d'une version plus ancienne en utilisant l'anti-scintillement, déplacez cet interrupteur de 4 à 5.

4.2.4. S2-Dip4 -> autoriser la prise de contrôle par FA-Control

Nouveau avec le matériel 2.0. Sur les cartes plus anciennes, cet interrupteur n'a pas de fonction.

ON autorise un module ESP32-C3 enfiché dans le support X7 à prendre le contrôle du flipper pour des tests - voir le chapitre 9. Avec l'interrupteur sur OFF, le module peut seulement lire ; il ne peut jamais piloter les lampes, les bobines ou les afficheurs.

Si aucun module ESP32 n'est dans le support, laissez-le sur OFF. Cela ne change rien dans un cas comme dans l'autre, mais OFF est le réglage qui ne peut pas vous surprendre.

4.2.5. S2-Dip5 -> anti-scintillement pour les jeux à LED

Avec Dip5 sur ON, SternFA modifie la temporisation du signal zero cross. Les jeux Bally sont connus pour faire scintiller les ampoules de remplacement à LED ; en général, chaque LED a besoin d'une résistance en parallèle pour y remédier. Avec cette option, les LED ne scintillent plus, même sans ces résistances.

4.2.6. S2-Dip6 -> initialisation du nvram

Avec Dip6 sur ON, SternFA remet à zéro le nvram du jeu choisi au démarrage. C'est utile si vous voulez effacer tout le contenu de la RAM, par exemple après avoir chargé un autre jeu au même emplacement.

Remettez-le ensuite sur OFF et éteignez puis rallumez - sinon le flipper efface ses réglages à chaque démarrage.

4.3. Les 14 interrupteurs DIP ne sont lus qu'une fois, au démarrage

Les deux bancs - les huit de S1 et les six de S2 - sont lus une fois, dans les premiers instants après la mise sous tension, et les valeurs sont ensuite conservées jusqu'au reset suivant. Tourner un interrupteur pendant que le flipper fonctionne ne fait rien.

Sur le matériel 2.0, il y a une raison matérielle à cela. Les deux bancs DIP et l'ESP32-C3 partagent les deux mêmes lignes de signal vers le FPGA, via deux multiplexeurs (U1 et U2). Au démarrage, les multiplexeurs sont commutés sur les bancs DIP ; dès que les interrupteurs ont été lus, ils basculent sur l'ESP32 et y restent. Après le démarrage, le FPGA n'est physiquement plus relié aux interrupteurs DIP.

Conséquence pratique : après avoir changé un interrupteur, éteignez puis rallumez, ou appuyez sur le bouton de reset SW2 de la carte FPGA.

Cela signifie aussi que l'autorisation FA-Control de 4.2.4 ne peut pas être retirée pendant une prise de contrôle - voir le chapitre 9.3.

5. Séquence de démarrage

5.1. Phase 0 : lecture des interrupteurs DIP

Juste après la mise sous tension - ou après un appui sur SW2 - SternFA lit les deux bancs DIP. Cela prend quelques microsecondes et vous ne le verrez pas. Les bobines et les afficheurs sont maintenus coupés pendant ce temps.

5.2. Phase 1 : l'affichage d'informations

Le FPGA écrit ensuite l'affichage d'informations sur les afficheurs de votre flipper, avant que le moindre code de jeu ne s'exécute. Il reste visible pendant les premiers clignotements de la LED verte :

Afficheur Montre
Joueur 1 la version du programme FPGA en cours, par ex. 5 0 6. Le premier chiffre est la variante de carte (chapitre 11)
Joueur 2 le numéro de jeu choisi avec S1, aligné à droite. Un 2 tout à gauche signifie qu'un jeu Stern MPU-200 a été choisi
Joueur 3 050963 - l'identifiant lisy.dev des MPU à base de FPGA. Il est fixe et indique seulement que la liaison vers les afficheurs fonctionne
Joueur 4 la valeur du banc d'options S2 sous forme de nombre, de 0 à 63 : Dip1 = 1, Dip2 = 2, Dip3 = 4, Dip4 = 8, Dip5 = 16, Dip6 = 32
Crédit / état un compteur qui décompte 4, 3, 2, 1, 0 à chaque clignotement de la LED verte

Vérifiez les joueurs 1 et 2 à chaque premier démarrage. Ils indiquent si le bon programme est dans le FPGA et si les interrupteurs de choix du jeu sont réglés comme vous le pensiez.

5.3. Phase 2 : lecture de la carte SD

Matériel 2.0 uniquement : SternFA demande d'abord au module ESP32 s'il possède une ROM pour le jeu choisi (chapitre 9.7). Si c'est le cas, la carte SD n'est pas lue du tout et l'afficheur d'état montre 3. Sans module, sans ROM sur le module ou sans réponse, le démarrage continue comme décrit ci-dessous ; sans module enfiché, il dure jusqu'à 3 secondes de plus.

SternFA lit la ROM du jeu choisi sur la carte SD. En cas d'échec, la LED rouge « SD card error » clignote d'abord un code puis reste allumée, et un chiffre d'erreur apparaît sur l'afficheur d'état :

Chiffre Signification
1 problème général avec la carte SD - aucune donnée n'a pu être lue. Carte absente, non écrite en mode brut, ou illisible
2 erreur de CRC : des données ont été lues, mais la somme de contrôle du bloc de jeu ne correspond pas. L'image est endommagée, ou la carte n'est pas fiable
3 pas d'erreur : la ROM vient du module ESP32 (matériel 2.0 uniquement, chapitre 9.7)
4 pas d'erreur : pas de carte SD, la ROM vient de la flash de configuration (x.30 et suivantes)
8 pas de carte SD, et le jeu choisi n'est pas dans la flash de configuration (x.30 et suivantes)

Si la lecture réussit, la LED rouge reste éteinte et aucun chiffre d'erreur n'apparaît.

À partir de x.30 : des jeux sans carte SD. Quand aucune carte SD ne répond, SternFA charge le jeu depuis la flash de configuration (EPCS16) de la carte FPGA, sous le même numéro de jeu que sur la carte. Pour des raisons de droits d'auteur, le fichier publié normal SternFA_<version>.jic ne contient aucun jeu ; sans carte, le démarrage se termine alors par le chiffre 8, et la LED rouge clignote huit fois rapidement, puis fait une pause. Les jeux arrivent dans la flash avec un SternFA_<version>_roms.jic construit localement (le bitstream plus tous les jeux de la carte SD v098). Une carte avec une erreur de CRC (chiffre 2) n'est pas remplacée par la flash, l'erreur reste une erreur.

Sur le matériel 2.0, l'ordre est donc module ESP32 → carte SD → flash. Le logiciel 5.30 a besoin pour cela du brochage de la carte v2.02. Une v2.00 ou v2.01 peut être modifiée avec deux coupures et un fil (chapitre 13) ; non modifiée, elle perd avec 5.30 la liaison avec le module ESP32 et reste donc en 5.06.

5.4. Phase 3 : exécution du programme

Le contenu du nvram du jeu choisi est copié de la FRAM vers la RAM CMOS, et le code du jeu venant de la carte SD démarre. C'est la séquence de démarrage Bally/Stern normale : la LED verte « Bally » clignote quelques fois, et quand le code tourne et que les interruptions arrivent régulièrement, la LED verte s'allume et reste allumée.

À partir de là, le flipper se comporte comme avec l'original.

6. Boutons et LED de la carte

6.1. Les trois LED d'état

Les LED de la carte SternFA sont câblées en parallèle avec les LED de la carte FPGA ; vous pouvez donc les lire sur l'une ou l'autre.

LED Signification
rouge - SD card error éteinte est l'état normal. Clignotement puis allumage fixe = la carte SD n'a pas pu être lue, voir 5.3
jaune - zero cross allumée est l'état normal. Elle s'éteint quand le signal zero cross de l'alimentation manque (deux fronts ou plus perdus d'affilée). LED jaune éteinte et flipper qui ne fait rien = regardez la carte de redressement, pas SternFA
verte - Bally clignote pendant la séquence de démarrage du code de jeu, puis reste allumée pendant que le jeu tourne. Éteinte en permanence ou un clignotement qui ne s'arrête jamais signifie que le code du jeu ne passe pas son initialisation

Pendant que FA-Control a pris le contrôle du flipper (chapitre 9), la LED verte est allumée en permanence - le CPU est alors arrêté, elle ne peut donc rien signifier d'autre.

6.2. Les boutons

Bouton Emplacement Fonction
SW2 sur la carte FPGA reset. Relance toute la séquence de démarrage, y compris la lecture des DIP. À utiliser après avoir changé un interrupteur
S6 « Bally Test » sur la carte SternFA câblé en parallèle avec l'interrupteur d'autotest de la porte à monnaie. Met le jeu en autotest ; vous pouvez ainsi faire les tests d'interrupteurs, de lampes, de bobines et d'afficheurs sur l'établi sans porte à monnaie
S33 sur la carte SternFA la remise à zéro de la comptabilité S33 de la MPU d'origine (elle déclenche la NMI). Même fonction que sur la carte d'origine
S8 « Test » à côté du support X7 appartient à l'ESP32-C3, pas au FPGA. Voir 9.6
SW3 sur la carte FPGA pas de fonction pour l'instant. Il est câblé au FPGA mais pas utilisé - voir le chapitre 13

7. La carte SD

Les ROM de jeu se trouvent sur la carte SD, et SternFA les lit à chaque mise sous tension. La carte est lue en mode brut - elle n'a pas de système de fichiers. Écrivez l'image téléchargée sur la carte avec un outil de copie brute (par exemple Win32DiskImager, balenaEtcher ou dd) ; copier simplement un fichier sur une carte formatée ne fonctionne pas.

Chaque jeu occupe un bloc de 64 Ko sur la carte, et les blocs sont rangés dans l'ordre des numéros de jeu de l'annexe A. Le FPGA calcule la position uniquement à partir des interrupteurs S1 ; c'est pourquoi le numéro de jeu et la version de l'image doivent correspondre - les numéros de jeu de l'annexe A sont ceux de l'image v0.98.

L'image contient aussi une somme de contrôle par bloc de jeu. C'est à elle que se rapporte le code d'erreur 2 de 5.3 ; elle détecte un téléchargement endommagé ou une carte défaillante avant que le jeu ne commence à se comporter bizarrement.

N'importe quelle carte micro SD ordinaire convient. La taille n'a pas d'importance - l'image est petite - mais une carte en service depuis des années est exactement le genre de pièce qui commence à produire l'erreur 2.

8. Crédits et meilleurs scores

La MPU d'origine maintient sa RAM CMOS en vie avec des piles, ce qui finit par détruire tant de ces cartes. SternFA n'a pas de pile. À la place, il copie le contenu du nvram dans la puce FRAM de la carte et le relit au démarrage suivant.

Vous n'avez rien à faire pour cela. La sauvegarde est déclenchée automatiquement par l'interrupteur de test, le relais de fin de partie et le bouton de crédit - les mêmes événements auxquels la carte d'origine se serait stabilisée. L'option Dip2 (4.2.2) force une sauvegarde continue pour les essais sur l'établi, et l'option Dip6 (4.2.6) efface le contenu.

La FRAM n'a pas besoin de pile, n'a pas de limite de cycles d'écriture dont il faille se soucier, et ne fuit pas.

9. L'interface FA-Control (ESP32-C3)

Nouveau avec le matériel 2.0. La carte a un support - X7 - prévu pour un ESP32-C3 Super Mini. Il fait tourner FA-Control, un petit firmware qui ouvre un réseau WLAN et propose une interface de test dans votre navigateur : allumer chaque lampe individuellement, envoyer une impulsion à chaque bobine, voir tous les interrupteurs en direct, écrire des chiffres sur les afficheurs.

C'est un outil pour l'établi et le dépannage, pas un accessoire pour le jeu normal. Si vous ne branchez rien dans X7, vous ne remarquerez jamais cette interface - la carte se comporte exactement comme sans.

Cette fonction a été essayée sur l'établi, mais pas encore dans un vrai flipper. Elle est nouvelle dans le logiciel 5.04 ; avec 5.06, la connexion, le rapport de la carte, la restitution du contrôle et le chien de garde ont fonctionné sur l'établi. Considérez la première prise de contrôle dans un flipper comme une expérience, avec un flipper que vous pouvez vous permettre d'éteindre. Le chapitre 13 liste ce qu'il faut regarder en premier.

9.1. L'autorisation : DIP d'option 4

Un outil de test ne doit pas pouvoir intervenir sans y être invité dans une partie en cours. Deux conditions doivent donc être réunies :

  1. Le module ESP32 le demande activement (« je voudrais prendre la main »).
  2. Le DIP d'option 4 est sur ON.

Avec l'option 4 sur OFF, l'interface web refuse la prise de contrôle avec le message « DIP 4 », et le jeu continue sans être dérangé. La lecture reste autorisée : vous pouvez suivre l'état des interrupteurs pendant une partie sans rien céder.

Jusqu'à la première version 5.06, l'autorisation était sur le DIP d'option 5, et le message nommait le mauvais interrupteur. Depuis 5.06, c'est le DIP 4, comme sur AtariFA, et le message est correct.

9.2. Ce qui se passe pendant la prise de contrôle

Le jeu est arrêté. Le processeur est maintenu en reset, et les lampes, les bobines et les afficheurs viennent désormais de l'interface web. Il faut que ce soit ainsi : si le jeu continuait à tourner, il écraserait en quelques millisecondes chaque lampe réglée à la main.

La LED verte « Bally » est allumée en permanence pendant ce temps.

Le jeu redémarre ensuite depuis le début. Il ne peut pas être mis en pause puis repris. Une partie en cours est perdue ; ne prenez donc le contrôle qu'en mode attraction ou sur l'établi.

9.3. Comment le contrôle est rendu

Sur SternFA, le DIP d'option n'est pas un arrêt d'urgence. Contrairement à AtariFA, où l'option 4 est lue en continu, le DIP 4 est ici la valeur mémorisée au démarrage - après le démarrage, les lignes DIP sont physiquement basculées vers l'ESP32 (chapitre 4.3). Mettre le DIP 4 sur OFF pendant une prise de contrôle ne fait rien jusqu'au reset suivant. Retirer le module, passer par l'interface web ou faire un reset sont les moyens d'en sortir.

9.4. Ce que l'interface web apprend de la carte

À la connexion, FA-Control demande à la carte de quoi elle est faite et se configure seul - il n'y a rien à saisir. SternFA répond :

Identification SternFA
Version du logiciel la même que sur l'affichage d'informations, par ex. 5.0.6
Lampes 60
Bobines 19
Interrupteurs 40
Sons 0 - voir ci-dessous
Afficheurs 5, six chiffres chacun (état/crédit plus quatre joueurs)

La numérotation suit le matériel Bally/Stern et c'est la même que celle de LISY :

Le son est annoncé comme 0 et les boutons de son restent vides. La carte son Stern SB-300 est reliée au bus du processeur, et pendant une prise de contrôle le processeur est arrêté - la piloter voudrait dire simuler des cycles de bus. Ce n'est pas implémenté ; les commandes de son sont acceptées et ne font rien.

9.5. Raccordement

Le module ESP32 s'enfiche simplement dans X7 ; il n'y a rien à souder. La carte l'alimente - aucun câble USB n'est nécessaire en fonctionnement normal. On n'en branche un que pour charger le firmware FA-Control ou lire le journal de démarrage. Pour la configuration WLAN initiale, FA-Control ouvre son propre point d'accès au premier démarrage ; voir la documentation de FA-Control.

Trois signaux circulent entre le module et le FPGA : les deux lignes série et une ligne par laquelle le module demande le contrôle. Les trois sont déjà sur la carte, il n'y a rien à câbler.

9.6. Le bouton ESP32 S8 et le banc DIP S9

Ces deux éléments appartiennent au module ESP32, pas au FPGA. Le FPGA ne les voit pas et ne s'en préoccupe pas, et ils n'ont aucun effet si le support est vide.

S8 « Test » bouton-poussoir sur le GPIO9 du module. Son rôle est défini par le firmware FA-Control
S9, 4 interrupteurs DIP1 = module allumé/éteint (OFF met l'ESP en veille profonde), DIP2 = éteindre la LED d'état clignotante, DIP3 et DIP4 = libres

La signification exacte peut changer avec la version du firmware FA-Control - la référence est la documentation de FA-Control, pas ce manuel.

9.7. ROM de jeu depuis FA-Control au lieu de la carte SD

À partir du logiciel 5.0.6, le module ESP32 peut contenir des ROM de jeu, et SternFA démarre alors sans carte SD. Elles se gèrent dans le menu 08 GAME ROMS de l'interface web (FA-Control 1.21 ou plus récent) :

À la mise sous tension :

  1. SternFA lit les interrupteurs DIP (phase 1).
  2. Juste après, il demande au module le jeu choisi, en répétant la question pendant 3 secondes au plus.
  3. Si la ROM est présente, elle est transférée (moins d'une seconde) et vérifiée. L'afficheur d'état montre 3, la carte SD n'est pas touchée.
  4. Si elle n'est pas présente, le module répond « non » immédiatement et SternFA lit la carte SD comme d'habitude. Il en va de même si aucune réponse n'arrive ou si le transfert était défectueux.

À garder en tête :

10. Programmer le 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 le logiciel de programmation nécessaire, l'installation du pilote USB Blaster et la programmation du FPGA.

Le programme FPGA lui-même et l'image de carte SD se trouvent dans le dépôt logiciel SternFA :

https://lisy.dev/swrep/SternFA

Veillez à prendre la version de votre carte - voir le chapitre 11. Pour le matériel 2.0, c'est le fichier dont le nom commence par SternFA_5, par exemple SternFA_530.jic. Une carte v2.00/v2.01 qui n'a pas été modifiée comme décrit au chapitre 13 reste en SternFA_506.jic.

Le FPGA de cette carte est configuré depuis une mémoire de configuration série, le programme reste donc en place après une coupure de courant. On le programme une fois, pas à chaque démarrage.

11. Variantes de carte

Le même design fonctionne sur plusieurs cartes, et le programme FPGA n'est pas interchangeable entre elles - le brochage diffère, et un mauvais programme n'affichera au mieux rien et pilotera au pire les mauvaises broches.

La version commence par Carte
1 carte SternFA v1.0 avec la carte FPGA Cyclone IV v4 - voir le manuel du matériel 1.x
3 carte SternFA v1.1 avec la carte FPGA Cyclone IV v4 - voir le manuel du matériel 1.x
4 carte SternFA v1.1 avec la carte FPGA Cyclone 10 - voir le manuel du matériel 1.x
5 carte SternFA v2.0 avec la carte Cyclone IV dev_open - ce manuel

Dans la série 5 : à partir de 5.30, uniquement la carte v2.02 ou une v2.00/v2.01 modifiée (chapitre 13).

L'affichage d'informations indique quel programme tourne : le premier des trois chiffres de version sur l'afficheur du joueur 1 est le numéro de carte. Si vous avez chargé le mauvais, les afficheurs resteront très probablement éteints ou montreront n'importe quoi - vérifiez d'abord ce chiffre.

12. Les nouveautés du matériel 2.0

Si vous connaissez les cartes plus anciennes, voici la liste courte :

Tout ce qui comptait pour le joueur est inchangé : mêmes connecteurs, mêmes trous de fixation, même liste de jeux, même image de carte SD, mêmes options 1 à 3 et 6 - l'option 4 (anti-scintillement) se trouve maintenant sur le DIP 5.

13. Pas encore implémenté, et limites connues


Annexe A choix du jeu

Numéros de jeu de l'image de carte SD v0.98. on = interrupteur fermé. La position est le numéro du jeu en binaire avec S1 comme bit de poids faible, voir 4.1. Les noms de jeu et les remarques proviennent de l'image et ne sont pas traduits : Freeplay = version en partie gratuite, NOT USED = aucune ROM à ce numéro, 7digit mod = modifié pour afficheurs à 7 chiffres, 2 player/4 player = nombre de joueurs.

N° S1 S2 S3 S4 S5 S6 S7 S8 Jeu Remarque
0 off off off off off off off off Meteor Stern MPU-200
1 on off off off off off off off Galaxy Stern MPU-200
2 off on off off off off off off Ali Stern MPU-200
3 on on off off off off off off Big Game Stern MPU-200
4 off off on off off off off off Seawitch Stern MPU-200
5 on off on off off off off off Cheetah Stern MPU-200
6 off on on off off off off off Quicksilver Stern MPU-200
7 on on on off off off off off Stargazer Stern MPU-200
8 off off off on off off off off Nine Ball Stern MPU-200
9 on off off on off off off off Iron Maiden Stern MPU-200
10 off on off on off off off off Viper Stern MPU-200
11 on on off on off off off off Dragonfist Stern MPU-200
12 off off on on off off off off Cue Stern MPU-200
13 on off on on off off off off Flight 2000 Stern MPU-200
14 off on on on off off off off Freefall Stern MPU-200
15 on on on on off off off off Lightning Stern MPU-200
16 off off off off on off off off Split Second Stern MPU-200
17 on off off off on off off off Catacomb Stern MPU-200
18 off on off off on off off off Orbitor 1 Stern MPU-200
19 on on off off on off off off Meteor Stern MPU-200 Freeplay
20 off off on off on off off off Galaxy Stern MPU-200 Freeplay
21 on off on off on off off off Ali Stern MPU-200 Freeplay
22 off on on off on off off off Big Game Stern MPU-200 Freeplay
23 on on on off on off off off Seawitch Stern MPU-200 Freeplay
24 off off off on on off off off Cheetah Stern MPU-200 Freeplay
25 on off off on on off off off Quicksilver Stern MPU-200 Freeplay
26 off on off on on off off off Stargazer Stern MPU-200 Freeplay
27 on on off on on off off off Nine Ball Stern MPU-200 Freeplay
28 off off on on on off off off Iron Maiden Stern MPU-200 Freeplay
29 on off on on on off off off Viper Stern MPU-200 Freeplay
30 off on on on on off off off Dragonfist Stern MPU-200 Freeplay
31 on on on on on off off off Cue Stern MPU-200 Freeplay
32 off off off off off on off off Flight 2000 Stern MPU-200 Freeplay
33 on off off off off on off off Freefall Stern MPU-200 Freeplay
34 off on off off off on off off Lightning Stern MPU-200 Freeplay
35 on on off off off on off off Split Second Stern MPU-200 Freeplay
36 off off on off off on off off Catacomb Stern MPU-200 Freeplay
37 on off on off off on off off Orbitor 1 Stern MPU-200 Freeplay
38 off on on off off on off off NOT USED –
39 on on on off off on off off NOT USED –
40 off off off on off on off off NOT USED –
41 on off off on off on off off NOT USED –
42 off on off on off on off off NOT USED –
43 on on off on off on off off NOT USED –
44 off off on on off on off off NOT USED –
45 on off on on off on off off NOT USED –
46 off on on on off on off off NOT USED –
47 on on on on off on off off NOT USED –
48 off off off off on on off off NOT USED –
49 on off off off on on off off NOT USED –
50 off on off off on on off off NOT USED –
51 on on off off on on off off NOT USED –
52 off off on off on on off off NOT USED –
53 on off on off on on off off NOT USED –
54 off on on off on on off off NOT USED –
55 on on on off on on off off NOT USED –
56 off off off on on on off off NOT USED –
57 on off off on on on off off NOT USED –
58 off on off on on on off off NOT USED –
59 on on off on on on off off NOT USED –
60 off off on on on on off off NOT USED –
61 on off on on on on off off NOT USED –
62 off on on on on on off off NOT USED –
63 on on on on on on off off NOT USED –
64 off off off off off off on off Pinball Stern
65 on off off off off off on off Stingray Stern
66 off on off off off off on off Stars Stern
67 on on off off off off on off Memory Lane Stern
68 off off on off off off on off Lectronamo Stern
69 on off on off off off on off Wild Fyre Stern
70 off on on off off off on off Nugent Stern
71 on on on off off off on off Dracula Stern
72 off off off on off off on off Trident Stern
73 on off off on off off on off Hot Hand Stern
74 off on off on off off on off Magic Stern
75 on on off on off off on off Cosmic Princess Stern
76 off off on on off off on off Pinball Stern Freeplay
77 on off on on off off on off Stingray Stern Freeplay
78 off on on on off off on off Stars Stern Freeplay
79 on on on on off off on off Memory Lane Stern Freeplay
80 off off off off on off on off Lectronamo Stern Freeplay
81 on off off off on off on off Wild Fyre Stern Freeplay
82 off on off off on off on off Nugent Stern Freeplay
83 on on off off on off on off Dracula Stern Freeplay
84 off off on off on off on off Trident Stern Freeplay
85 on off on off on off on off Hot Hand Stern Freeplay
86 off on on off on off on off Magic Stern Freeplay
87 on on on off on off on off Cosmic Princess Stern Freeplay
88 off off off on on off on off NOT USED –
89 on off off on on off on off NOT USED –
90 off on off on on off on off NOT USED –
91 on on off on on off on off NOT USED –
92 off off on on on off on off NOT USED –
93 on off on on on off on off NOT USED –
94 off on on on on off on off NOT USED –
95 on on on on on off on off NOT USED –
96 off off off off off on on off FREEDOM Bally
97 on off off off off on on off NIGHTRIDER Bally
98 off on off off off on on off EVELKNIEVEL Bally
99 on on off off off on on off EIGHTBALL Bally
100 off off on off off on on off POWERPLAY Bally
101 on off on off off on on off MATAHARI Bally
102 off on on off off on on off BLACKJACK Bally
103 on on on off off on on off STRIKES_SPARES Bally
104 off off off on off on on off LOSTWORLD Bally
105 on off off on off on on off 6MILLIONMAN Bally
106 off on off on off on on off PLAYBOY Bally
107 on on off on off on on off VOLTAN Bally
108 off off on on off on on off SUPERSONIC Bally
109 on off on on off on on off STARTREK Bally
110 off on on on off on on off KISS Bally
111 on on on on off on on off PARAGON Bally
112 off off off off on on on off HARLEMGLOBE Bally
113 on off off off on on on off DOLLYPARTON Bally
114 off on off off on on on off FUTURESPA Bally
115 on on off off on on on off NITROGROUND Bally
116 off off on off on on on off SILVERBALLMANIA Bally
117 on off on off on on on off SPACEINVADERS Bally
118 off on on off on on on off ROLLINGSTONES Bally
119 on on on off on on on off MYSTIC Bally
120 off off off on on on on off HOTDOGGIN Bally
121 on off off on on on on off VIKING Bally
122 off on off on on on on off SKATEBALL Bally
123 on on off on on on on off FRONTIER Bally
124 off off on on on on on off XENON Bally
125 on off on on on on on off FLASHGORDON Bally
126 off on on on on on on off 8BALLDELUXE Bally
127 on on on on on on on off FIREBALLII Bally
128 off off off off off off off on EMRYRON Bally
129 on off off off off off off on FATHOM Bally
130 off on off off off off off on MEDUSA Bally
131 on on off off off off off on CENTAUR Bally
132 off off on off off off off on ELEKTRA Bally
133 on off on off off off off on VECTOR Bally
134 off on on off off off off on MR_MRSPACMAN Bally
135 on on on off off off off on SPECTRUM Bally
136 off off off on off off off on SPEAKEASY Bally
137 on off off on off off off on BMX Bally
138 off on off on off off off on GRANDSLAM Bally 2 player
139 on on off on off off off on GOLDBALL Bally
140 off off on on off off off on XandOs Bally
141 on off on on off off off on SPYHUNTER Bally
142 off on on on off off off on KINGSOFSTEEL Bally
143 on on on on off off off on BLACKPYRAMID Bally
144 off off off off on off off on FIREBALCLASSIC Bally
145 on off off off on off off on CYBERNAUT Bally
146 off on off off on off off on NIGHTRIDER Bally Freeplay
147 on on off off on off off on EVELKNIEVEL Bally Freeplay
148 off off on off on off off on EIGHTBALL Bally Freeplay
149 on off on off on off off on POWERPLAY Bally Freeplay
150 off on on off on off off on MATAHARI Bally Freeplay
151 on on on off on off off on BLACKJACK Bally Freeplay
152 off off off on on off off on STRIKES_SPARES Bally Freeplay
153 on off off on on off off on LOSTWORLD Bally Freeplay
154 off on off on on off off on 6MILLIONMAN Bally Freeplay
155 on on off on on off off on PLAYBOY Bally Freeplay
156 off off on on on off off on VOLTAN Bally Freeplay
157 on off on on on off off on SUPERSONIC Bally Freeplay
158 off on on on on off off on STARTREK Bally Freeplay
159 on on on on on off off on KISS Bally Freeplay
160 off off off off off on off on PARAGON Bally Freeplay
161 on off off off off on off on HARLEMGLOBE Bally Freeplay
162 off on off off off on off on DOLLYPARTON Bally Freeplay
163 on on off off off on off on FUTURESPA Bally Freeplay
164 off off on off off on off on NITROGROUND Bally Freeplay
165 on off on off off on off on SILVERBALLMANIA Bally Freeplay
166 off on on off off on off on SPACEINVADERS Bally Freeplay
167 on on on off off on off on ROLLINGSTONES Bally Freeplay
168 off off off on off on off on MYSTIC Bally Freeplay
169 on off off on off on off on HOTDOGGIN Bally Freeplay
170 off on off on off on off on VIKING Bally Freeplay
171 on on off on off on off on SKATEBALL Bally Freeplay
172 off off on on off on off on FRONTIER Bally Freeplay
173 on off on on off on off on XENON Bally Freeplay
174 off on on on off on off on FLASHGORDON Bally Freeplay
175 on on on on off on off on 8BALLDELUXE Bally Freeplay
176 off off off off on on off on FIREBALLII Bally Freeplay
177 on off off off on on off on EMRYRON Bally Freeplay
178 off on off off on on off on FATHOM Bally Freeplay
179 on on off off on on off on MEDUSA Bally Freeplay
180 off off on off on on off on CENTAUR Bally Freeplay
181 on off on off on on off on ELEKTRA Bally Freeplay
182 off on on off on on off on VECTOR Bally Freeplay
183 on on on off on on off on MR_MRSPACMAN Bally Freeplay
184 off off off on on on off on SPECTRUM Bally Freeplay
185 on off off on on on off on SPEAKEASY Bally Freeplay
186 off on off on on on off on BMX Bally Freeplay
187 on on off on on on off on GOLDBALL Bally Freeplay
188 off off on on on on off on XandOs Bally Freeplay
189 on off on on on on off on SPYHUNTER Bally Freeplay
190 off on on on on on off on KINGSOFSTEEL Bally Freeplay
191 on on on on on on off on BLACKPYRAMID Bally Freeplay
192 off off off off off off on on FIREBALCLASSIC Bally Freeplay
193 on off off off off off on on CYBERNAUT Bally Freeplay
194 off on off off off off on on 6MILLIONMAN Bally 7digit mod
195 on on off off off off on on PLAYBOY Bally 7digit mod
196 off off on off off off on on VOLTAN Bally 7digit mod
197 on off on off off off on on SUPERSONIC Bally 7digit mod
198 off on on off off off on on STARTREK Bally 7digit mod
199 on on on off off off on on KISS Bally 7digit mod
200 off off off on off off on on PARAGON Bally 7digit mod
201 on off off on off off on on HARLEMGLOBE Bally 7digit mod
202 off on off on off off on on DOLLYPARTON Bally 7digit mod
203 on on off on off off on on FUTURESPA Bally 7digit mod
204 off off on on off off on on NITROGROUND Bally 7digit mod
205 on off on on off off on on SILVERBALLMANIA Bally 7digit mod
206 off on on on off off on on SPACEINVADERS Bally 7digit mod
207 on on on on off off on on ROLLINGSTONES Bally 7digit mod
208 off off off off on off on on MYSTIC Bally 7digit mod
209 on off off off on off on on HOTDOGGIN Bally 7digit mod
210 off on off off on off on on VIKING Bally 7digit mod
211 on on off off on off on on 8BALLDELUXE Special
212 off off on off on off on on EMBRYON Special
213 on off on off on off on on VECTOR Special
214 off on on off on off on on FATHOM Special
215 on on on off on off on on NITROGROUND Special w. Sirene Patch
216 off off off on on off on on Pinball Stern
217 on off off on on off on on Stingray Stern
218 off on off on on off on on Stars Stern
219 on on off on on off on on Memory Lane Stern
220 off off on on on off on on Pinball Stern Freeplay
221 on off on on on off on on Stingray Stern Freeplay
222 off on on on on off on on Stars Stern Freeplay
223 on on on on on off on on Memory Lane Stern Freeplay
224 off off off off off on on on Tigerrag Bell Games
225 on off off off off on on on 8BALLDELUXE V32
226 off on off off off on on on SPEAKEASY 4Player –
227 on on off off off on on on SPEAKEASY 4Player Freeplay
228 off off on off off on on on Saturn2 Bell Games
229 on off on off off on on on Lectronamo Stern
230 off on on off off on on on Lectronamo Stern Freeplay
231 on on on off off on on on World Defender Bell Games
232 off off off on off on on on World Defender Bell Games Freeplay
233 on off off on off on on on Baby Pacman –
234 off on off on off on on on Baby Pacman Okaegi version
235 on on off on off on on on GRANDSLAM 4 player
236 off off on on off on on on GRANDSLAM 2 player freeplay
237 on off on on off on on on GRANDSLAM 4 player freeplay

Annexe B aide-mémoire

Les 14 interrupteurs de configuration de SternFA

 S1  choix du jeu                      S2  options
  1  + 1                                1  émulateur de zero cross
  2  + 2                                2  sauvegarde continue du nvram
  3  + 4                                3  forcer l'horloge Bally
  4  + 8                                4  autoriser la prise de contrôle FA-Control
  5  + 16                               5  anti-scintillement pour LED
  6  + 32                               6  init du nvram au démarrage
  7  + 64
  8  + 128                             par défaut : tout sur OFF

 les deux bancs sont lus UNE FOIS, au démarrage - après tout changement : éteindre, rallumer

S9, le banc à 4 positions à côté du support X7, appartient au module ESP32, pas au FPGA (9.6).

L'affichage d'informations, les premières secondes après la mise sous tension

Joueur 1      5 0 6     version, premier chiffre = variante de carte (chapitre 11)
Joueur 2   2    1 0 1    choix du jeu ; 2 en tête = horloge Stern MPU-200
Joueur 3   0 5 0 9 6 3   identifiant lisy.dev, fixe
Joueur 4        3 2      valeur du banc d'options S2 (Dip1=1 ... Dip6=32)
Crédit              4    décompte 4, 3, 2, 1, 0

LED : rouge SD card error (éteinte = bon) · jaune zero cross (allumée = bon) · verte Bally (clignote au démarrage, puis allumée pendant que le jeu tourne ; allumée en permanence pendant une prise de contrôle FA-Control)

Chiffre d'erreur de carte SD sur l'afficheur d'état : 1 = carte illisible · 2 = somme de contrôle du bloc de jeu fausse · 3 = la ROM vient de l'ESP32 (pas d'erreur, HW 2.0 uniquement) · 4 = ROM depuis la flash de configuration, pas de carte (pas d'erreur, x.30 et suivantes) · 8 = pas de carte, jeu absent de la flash

Boutons : SW2 reset (carte FPGA) · S6 « Bally Test » = autotest · S33 remise à zéro de la comptabilité · S8 appartient à l'ESP32 · SW3 sans fonction

Programme FPGA pour cette carte : SternFA_5xx - une version qui ne commence pas par 5 est pour une autre carte. À partir de 5.30, uniquement la carte v2.02 ou une v2.00/v2.01 modifiée (chapitre 13).