Configuration
Deux fichiers .ini pilotent tout, chacun avec un rôle précis :
| Fichier | Rôle | En une phrase |
|---|---|---|
LedManager.ini |
Le chef d'orchestre | Quoi afficher et vers qui l'envoyer |
PicoCommandSender.ini |
L'adaptateur matériel | Comment votre carte comprend les ordres |
Des outils graphiques arrivent
Un outil de configuration visuel est prévu. En attendant, cette page couvre les réglages qu'un utilisateur modifie réellement — le reste peut rester tel quel.
LedManager.ini — l'orchestrateur
Déclarer vos senders
Chaque panel physique (un par joueur, par exemple) est un sender :
[CommandSenders]
Default=P1
Global=GLOBAL
[CommandSender:P1]
Name=Pico Player 1
Enabled=true
Player=1
Executable=PicoCommandSender.exe
Arguments=daemon --ini "PicoCommandSender.ini" --sender P1
StartupDelayMs=18000
Le réglage à connaître : StartupDelayMs laisse au Pico le temps de s'initialiser au démarrage. Si vos LED s'allument trop tard, ne le réduisez pas trop — un Pico pas prêt ignore les commandes.
Router les joueurs et les cibles
[PlayerRouting]
1=P1
2=P2
[TargetRouting]
MATRIX1=GLOBAL
STRIP1=GLOBAL
Les effets « cabinet » (matrice de score, bandeaux) partent vers le sender GLOBAL, les panels joueurs vers P1/P2.
PicoCommandSender.ini — votre matériel
Le port série
[Serial]
Port=COM3
BaudRate=115200
Port est le premier réglage à vérifier après l'installation : ouvrez le Gestionnaire de périphériques Windows et repérez le port COM attribué à votre Pico.
Votre panel
Les sections [Hardware:P1] et [GPIO:P1] décrivent boutons et branchements — voir Matériel.
La policy couleur
Toutes les LED ne rendent pas toutes les couleurs fidèlement. La [ColorPolicy] permet d'autoriser, refuser ou remplacer des couleurs sans recompiler quoi que ce soit :
[ColorPolicy.Fallbacks]
GOLD=YELLOW
PURPLE=VIOLET
GRAY=WHITE
Ici, si un jeu demande du doré, le panel affichera du jaune. GRAY est le nom canonique du gris ; BLACK signifie éteint.
Adapter à un autre programme LED
LedManager ne connaît pas le protocole final de votre matériel : il remplit des gabarits texte définis dans [CommandTemplates]. Pour piloter un autre programme, on ne change que ces gabarits :
[CommandTemplates]
SetSlot=SLOT {slot} {color}
Flash=FLASH {target} {color} {durationMs}
All=ALL {color}
Clear=CLEAR
Variables disponibles : {slot}, {target}, {color}, {durationMs}, {value}, {text}, {player}, {system}, {rom}… Le détail des méthodes d'intégration est dans Cartes LED externes.
Personnaliser un jeu ou un système : les overrides
Envie de couleurs Rainbow Road pour Super Mario Kart ? Créez un patch épars — seul ce que vous changez y figure, le reste continue de venir d'APIExpose et de ses mises à jour :
overrides\systems\snes.json → tous les jeux SNES
overrides\games\snes\smk.json → juste Super Mario Kart (gagne sur le système)
{
"schema": "ledmanager.panel-override.v1",
"slots": { "1": { "color": "GREEN" }, "2:3": { "color": "RED" } },
"outputs": { "VR1 Lamp": { "slot": 1 } }
}
"1" = slot 1 du joueur 1, "2:3" = slot 3 du joueur 2 ; les clés d'outputs sont les noms de sorties du jeu (lampes arcade). Le fichier overrides\README.txt du plugin contient des exemples complets, et l'application LedManagerSetup générera ces fichiers pour vous.
Pendant une partie
Quelques comportements utiles à connaître (aucun réglage requis) :
- au lancement d'un jeu, le panel du système est mémorisé (snapshot) ;
- les effets ingame sont des surcouches ciblées ; un
OFFsur un bouton le restaure depuis le snapshot ; - après 2 secondes sans activité, le panel du système est restauré ;
- START et SELECT vivent leur vie indépendamment des boutons B1–B8 ;
- les lampes MAME gardent leur propre état : une restauration du panel ne rallume pas une lampe éteinte par le jeu.
Les effets ingame : default.mem.effects.json
Les réactions aux moments de jeu (vie perdue, boss touché, pièce ramassée…)
sont décrites dans default.mem.effects.json, à la racine du plugin — un
catalogue éditable, sans toucher au code :
- Règles par famille (
genericRules) : une règle par famille de moments (resources.lives,scoring.collectibles,combat.enemies…) — elle s'applique à tous les jeux, sans mapping par jeu. - Effets :
flash_restore,sweep,pulse,sparkle,health_feedback,matrix_score… avec cibles (ALL_BUTTONS,STRIP1,RANDOM_COLUMN,MATRIX1), couleurs, durées et anti-spam (throttleMs). - Couleur du jeu : quand l'événement porte sa propre couleur (les deltas de score arcade : l'avion orange de 1944…), elle prime sur la couleur de la règle — l'effet prend la teinte de la cible détruite.
- Par joueur : les événements qui portent un index joueur sont routés vers
le panel du bon joueur (
playerField), sinon versGLOBAL. - Couches (
effectLayers) : les effets ingame vivent au-dessus du panel du jeu et sous les alertes — chaque source a sa priorité, rien ne s'écrase.
Exemple : flash doré sur chaque trésor
Dans genericRules, la famille inventory.items déclenche sparkle
doré sur ALL_BUTTONS + STRIP1 avec restauration automatique : ramassez
une clé dans Zelda ou une émeraude dans Sonic, la borne scintille — deux
jeux, zéro configuration.