Cos'è LEDSpicer?
LEDSpicer è un programma open-source per l'animazione e il controllo dei LED che permette di controllare l'hardware LED nei cabinati arcade in modo consapevole del gioco. Se i pulsanti sono dotati di LED, sia RGB che monocromatici, questo programma consente di controllarli. LEDSpicer può anche controllare dispositivi come i limitatori di movimento per joystick a 4/8 direzioni. Per un elenco completo delle funzionalità, consultare la pagina GitHub di LEDSpicer .
Ci sono un paio di opzioni di configurazione che complicano enormemente la situazione. La build di LEDSPicer è ora corretta e queste informazioni si applicano alla prossima versione butterfly .
1.1 Cosa fa
In sostanza, LEDSpicer funge da mediatore tra l'hardware LED e il software in esecuzione sulla macchina. Esso:
-
Gestisce l'hardware LED tramite plugin per dispositivi.
-
Anima i LED utilizzando una libreria di effetti integrati: modalità a impulsi, gradiente, serpentina, casuale, di riempimento e reattive all'audio, gestite da PulseAudio o ALSA.
-
Carica automaticamente i profili quando EmulationStation (o un altro frontend) segnala che un gioco è stato selezionato o avviato.
-
Risponde agli eventi di output di MAME in tempo reale, quindi un pulsante può illuminarsi nel momento stesso in cui viene attivato nel gioco.
-
Transizioni tra profili tramite effetti come Dissolvenza in entrata, Dissolvenza incrociata o Transizioni a tendina.
1.2 Architettura
Il demone ( ledspicerd) viene eseguito come servizio in background. Un'utilità complementare chiamata emitterviene utilizzata dagli script di shell per inviare comandi al demone in esecuzione, ad esempio per caricarlo, terminare quello corrente o avviare un'animazione singola.
LEDSpicer ha tre categorie di plugin integrate:
Tipo di plugin
Scopo
Connettori per dispositivi
Comunicare con specifiche schede hardware tramite USB
Plugin di animazione
Genera effetti LED fotogramma per fotogramma
Plug-in di input
Rimanere in ascolto per rilevare trigger esterni (eventi MAME, comandi di rete, script di EmulationStation)
1.3 Hardware supportato
LEDSpicer supporta nativamente:
-
Ultimarc : I/O di ultima generazione, PacLED64, NanoLED, PAC Drive
-
GroovyGameGear : Led-Wiz 32
-
WolfWare : Howler
-
Adalight (strisce LED seriali/USB)
-
GPIO del Raspberry Pi
Per il controllo degli input (limitatori per joystick, interfacce spinner), supporta anche GP-Wiz40 RotoX, ServoStik, UltraStik360 e TOS GRS Gate Restrictor.
LEDSpicer ha una sua nomenclatura specifica, e cercherò di spiegarla man mano che procedo.
L'hardware utilizzato in questo tutorial:
-
I/O Ultimarc Ultimate
-
Due giocatori, otto pulsanti ciascuno
-
Due joystick a LED
-
Due pulsanti di avvio
-
Due pulsanti a moneta
-
Quattro pulsanti di utilità
-
Trackball a LED
-
In modalità Tastiera configurata con keyboardToPads in Batocera
Questo non è un esempio esaustivo. Esistono molti modi diversi per configurarlo per l'utilizzo con Batocera; questo è solo uno di essi.
2. LEDSpicer a Batocera
2.1 Abilitazione del servizio
Non fatelo prima di aver letto l' intero documento.
-
Avvia Batocera e vai su Menu principale → Impostazioni di sistema → Servizi .
-
Individua LEDSpicer e abilitalo.
-
Riavvia Batocera.
Dalla riga di comando, eseguire i seguenti comandi:
batocera-services enable ledspicer batocera-services start ledspicer
In questo caso non è necessario riavviare il sistema.
2.2 File e layout
/userdata/system/configs/ledspicer/ ├── ledspicer.conf ├── basicColors.xml ├── colors.ini ├── controls.ini ├── gameData.xml ├── profili/ │ ├── default.xml │ ├── arcade.xml │ ├── JOYSTICK2_B1.xml │ └── arcade/ │ ├── mslug.xml │ └── sf2.xml ├── input/ ├── umaps/ └── animazioni/
Gli script che notificano a LEDSpicer gli eventi di gioco vengono inseriti in:
/userdata/system/configs/emulationstation/scripts/ ├── inizio-gioco/ ├── fine del gioco/ ├── gioco-selezionato/ └── selezionato dal sistema/
3. Dettagli sui file di configurazione
Tutta la configurazione di LEDSpicer è in formato XML. I file e i valori fanno distinzione tra maiuscole e minuscole.
3.1 ledspicer.conf — Configurazione del demone principale
Questo è il file più importante. Indica al demone quale hardware è collegato, quali LED sono presenti, come sono raggruppati e i parametri globali di runtime.
3.1.1 Elemento radice
<?xml version = "1.0" encoding = "UTF-8" ?>
<LEDSpicer
version = "1.1" type = "Configuration" fps = "30" port = "16161" colors = "basicColors" logLevel = "Warning" userId = "1000" groupId = "1000" craftProfile = "True" dataSource = "controls.ini" >
Attributo
Scopo
colors
Nome del file di definizione dei colori (senza estensione).
dataSource
MAMEDove trovare informazioni sui comandi utilizzati da un gioco controls.ini.file
MAME: Interroga l'istanza MAME in esecuzione.
controls.ini: Analizza questo file nella configdirectory.
file: Analizza il file gameData.xmlnella configdirectory. Attualmente non funzionante.
fps
Fotogrammi di animazione al secondo. In genere, si va da 14 a 30.
logLevel
Error, Warning, Info, O Debug.
port
La porta TCP emitterviene utilizzata per comunicare con il demone. Il valore predefinito è 16161.
3.1.2 La sezione <dispositivi>
Questo documento dichiara l'hardware fisico. Per una singola scheda Ultimate IO:
<dispositivi>
< dispositivo name = "UltimarcUltimate" boardId = "1" >
< !-- le definizioni degli elementi vanno qui -->
</dispositivo> </dispositivi>
boardIdConsente di distinguere più schede dello stesso tipo, qualora se ne possieda più di una.
3.1.3 Definizione degli elementi
Gli elementi sono le rappresentazioni logiche e denominate dei singoli LED o delle triplette RGB presenti sul pannello di controllo. P[player]_[type][number]Si consiglia vivamente di seguire questa convenzione di denominazione, poiché LEDSpicer la utilizza per l'abbinamento automatico dei profili ai giochi.
LED monocolore (un pin):
<element name = "P1_COIN" led = "3" />
LED RGB (tre pin: rosso, verde, blu):
<element name = "P1_BUTTON1" red = "11" green = "12" blue = "13" /> <element name = "P1_BUTTON2" red = "14" green = "15" blue = "16" /> <element name = "P1_BUTTON3" red = "17" green = "18" blue = "19" /> <element name = "P1_BUTTON4" red = "20" green = "21" blue = "22" /> <element name = "P1_BUTTON5" red = "23" green = "24" blue = "25" /> <element name = "P1_BUTTON6" red = "26" green = "27" blue = "28" /> <element name = "P1_JOYSTICK" red = "5" green = "6" blue = "7" /> <element name = "P1_TRACKBALL" red = "41" verde = "42" blu = "43" /> < nome elemento = "P1_START" rosso = "8" verde = "9" blu = "10" /> <element name = "P2_BUTTON1" red = "41" green = "42" blue = "43" /> <element name = "P2_BUTTON2" red = "44" green = "45" blue = "46" /> <!-- ... e così via ... --> <element name = "P2_JOYSTICK" red = "35" green = "36" blue = "37" /> <element name = "P2_START" red = "38" green = "39" blue = "40" />
Numerazione dei pin: Ultimate IO espone 96 pin (da 1 a 96). Ogni LED RGB occupa tre pin consecutivi. Mappali in base a come il cablaggio è fisicamente collegato alla scheda. Consulta la sezione *Risoluzione dei problemi * per informazioni su come determinare o convalidare le impostazioni dei pin.
3.1.4 La sezione <layout>
Il layout organizza gli elementi in gruppi denominati. I gruppi sono ciò su cui operano le animazioni e i profili. Un gruppo speciale chiamato Allviene generato automaticamente da ogni elemento nella sezione dispositivi.
<layout defaultProfile = "default" > <group name = "Player1Buttons" >
<element name = "P1_BUTTON1" />
<element name = "P1_BUTTON2" />
<element name = "P1_BUTTON3" />
<element name = "P1_BUTTON4" />
<element name = "P1_BUTTON5" />
<element name = "P1_BUTTON6" />
</group > <group name = "Player2Buttons" >
<element name = "P2_BUTTON1" />
<element name = "P2_BUTTON2" />
<!-- ... -->
</group > <group name = "Joysticks" >
<element name = "P1_JOYSTICK" />
<element name = "P2_JOYSTICK" />
</group > <group name = "StartButtons" >
<element name = "P1_START" />
<element name = "P2_START" />
</group > </layout>
L' ledattributo all'interno di un gruppo è un indice di posizione utilizzato dalle animazioni per la sequenza, non il numero del pin fisico: la mappatura fisica è già stata dichiarata nella <devices>sezione.
defaultProfileImposta quale profilo viene caricato quando non viene trovato alcun profilo specifico per il gioco.
3.2 File dei colori
Questo file definisce i nomi e i valori esadecimali dei colori utilizzati in profiles.
<?xml version = "1.0" encoding = "UTF-8" ?> <LEDSpicer version = "1.1" type = "Colors" format = "hex" > <color name = "White" color = "FFFFFF" /> <color name = "LightGray" color = "D3D3D3" /> <!-- ... --> <color name = "DarkOrange" color = "8B4000" /> <color name = "VeryDarkOrange" color = "A0522D" /> </LEDSpicer >
Qui puoi definire quanti colori desideri. Verranno forniti dei link ad alcuni esempi completi.
3.3 File di profilo
Ogni profilo è un file XML memorizzato nella profiles/sottocartella. Un profilo definisce l'aspetto dei LED durante un particolare gioco o stato del sistema.
3.3.1 Profilo predefinito (default.xml)
Questa è la modalità demo o profilo inattivo, visualizzata durante la navigazione nell'elenco dei giochi.
Esempio 1
<?xml version = "1.0" encoding = "UTF-8" ?>
<LEDSpicer version = "1.1" type = "Profile" backgroundColor = "Black" > <!-- Transizione di dissolvenza quando si passa da questo profilo -->
<transition name = "FadeOutIn" speed = "Normal" color = "Off" /> <animazioni> <
animation name = "IdleGradient" /
> </animazioni> </LEDSpicer>
Esempio 2
<?xml version = "1.0" encoding = "UTF-8" ?>
<LEDSpicer version = "1.1" type = "Profile" backgroundColor = "Black" > <animazioni>
<animazione
nome = " Impulso" gruppo = "Tutti" > <parametro nome = "colore" valore =
" Blu" / > <parametro nome = "velocità" valore = "Media" />
</animazione> </animazioni> <alwaysOnElements >
<element name = "P1_COIN" color = "White" />
<element name = "P2_COIN" color = "White" />
</alwaysOnElements > </LEDSpicer>
3.3.2 Profilo specifico del gioco
Per un gioco di combattimento che utilizza 6 pulsanti per giocatore, un profilo potrebbe essere simile a questo:
<?xml version = "1.0" encoding = "UTF-8" ?>
<LEDSpicer version = "1.1" type = "Profile" backgroundColor = "Black" > <alwaysOnElements >
<element name = "P1_BUTTON1" color = "Red" />
<element name = "P1_BUTTON2" color = "Yellow" />
<element name = "P1_BUTTON3" color = "Blue" />
<element name = "P1_BUTTON4" color = "Green" />
<element name = "P1_BUTTON5" color = "White" />
<element name = "P1_BUTTON6" color = "Purple" />
<element name = "P1_START" color = "White" />
<element name = "P2_BUTTON1" color = "Red" />
<!-- ... -->
</alwaysOnElements > </LEDSpicer>
Quando si avvia un gioco, LEDSpicer cerca i profili seguendo questo ordine di priorità:
-
Un profilo denominato esattamente come il file ROM (
sf2.xml) situato nellaprofiles/arcade/directory. -
Un profilo denominato in base al numero di giocatori/pulsanti (ad esempio,
P2_B1.xmlper giochi con due giocatori, ciascuno con un pulsante) situato nellaprofiles/directory. -
Un profilo denominato in base al numero di controller/pulsanti (ad esempio,
JOYSTICK2_B1per giochi con due joystick, ciascuno con un pulsante) situato nellaprofiles/directory. -
Un profilo denominato in base alla piattaforma (
arcade.xml) situata nellaprofiles/directory. -
Il
default.xmlpiano di riserva
Questa ricerca a cascata significa che è necessario creare profili solo per i giochi che richiedono un trattamento speciale; tutto il resto viene gestito automaticamente.
3.4 File di animazione
Così come è possibile avere un numero arbitrario di profili, è possibile avere anche un numero arbitrario di definizioni di animazione. Le animazioni vengono referenziate in profilefile come questo:
<animazioni> <
animation name = "IdleGradient" /
> </animazioni>
LEDSpicer cercherebbe questa animazione in animations/IdleGradient.xml.
3.4.1 Primo esempio
Il primo esempio farebbe sì che la sfumatura venga applicata a tutti gli elementi mappati dal file di configurazione.
<?xml version = "1.0" encoding = "UTF-8" ?> <LEDSpicer version = "1.1" type = "Animation" > <!-- Ciclo di gradiente arcobaleno su tutti i pulsanti --> <actor type = "Gradient" group = "Panel" filter = "Normal" speed = "Normal" direction = "Forward" colors = "Red,Orange,Yellow,Green,Cyan,Blue,Violet,Magenta" mode = "Cyclic" tones = "20" /> </LEDSpicer>
3.4.1 Secondo esempio
Questo esempio riproduce la stessa sfumatura sia per il giocatore uno che per il giocatore due, ma in controfase. Inoltre, presenta effetti separati per i pulsanti della moneta e di avvio.
<?xml version = "1.0" encoding = "UTF-8" ?>
<!--
Animazione di attrazione/inattività.
Due livelli:
1. Sfumature cicliche arcobaleno su tutti i pulsanti di azione.
2. Impulso più lento sui pulsanti Start/Coin in modo che respirino nei loro colori predefiniti.
-->
<LEDSpicer version = "1.1" type = "Animation" > <!-- Ciclo di gradiente arcobaleno sui pulsanti del Giocatore 1 -->
<actor
type = "Gradient" group = "P1" filter = "Normal" speed = "Normal" direction = "Forward" colors = "Red,Orange,Yellow,Green,Cyan,Blue,Violet,Magenta" mode = "Cyclic" tones = "20" /> <!-- Stesso gradiente sui pulsanti del Giocatore 2, sfalsato iniziando più avanti nel ciclo -->
<actor
type = "Gradient" group = "P2" filter = "Normal" speed = "Normal" direction = "Forward" colors = "Blue,Violet,Magenta,Red,Orange,Yellow,Green,Cyan" mode = "Cyclic" tones = "20" /> <!-- I pulsanti di avvio emettono un fruscio verde -->
<actor
type = "Pulse" group = "UTILITY_BUTTONS" filter = "Normal" speed = "Slow" direction = "Forward" color = "Green" /> <!-- I pulsanti delle monete emettono un impulso giallo -->
<actor
type = "Pulse" group = "COIN_BUTTONS" filter = "Normal" speed = "Slow" direction = "Forward" color = "Yellow" /> </LEDSpicer>
3.5 Script di integrazione di EmulationStation
EmulationStation di Batocera richiama gli script in corrispondenza di quattro eventi del ciclo di vita. Ogni script invia un emittercomando al demone in esecuzione.
Script di avvio del gioco
/userdata/system/configs/emulationstation/scripts/game-start/ledspicer.sh
#!/usr/bin/env bash romPath = " ${1} "
romName = " ${2} " sistema =$ ( echo " $romPath " | awk -F '/roms/' '{print $2}' | cut -d '/' -f1 ) if grep -q "\\[ $romName \\]" / userdata / system / configs / ledspicer / colors.ini;
then system = "arcade" ;
fi emettitore -r CaricaProfiloDallEmulatore " $romName " " $system "
È qui che viene caricato un profilo quando si avvia una ROM. È necessario che questo script sia eseguibile.
Script di fine partita
/userdata/system/configs/emulationstation/scripts/game-end/ledspicer.sh
#!/usr/bin/env bash rotator 1 1 8 / usr / bin / emitter FinishLastProfile
Questo script viene eseguito quando si chiude una ROM. È necessario che questo script sia eseguibile.
Sceneggiatura selezionata per il gioco
/userdata/system/configs/emulationstation/scripts/game-selected/ledspicer.sh
#!/usr/bin/env bash sistema = " ${1} "
percorsorom = " ${2} " romPath =$ ( nomebase " ${romPath} " )
romName = " ${romPath%.*} " if grep -q "\\[ $romName \\]" / userdata / system / configs / ledspicer / colors.ini;
then system = "arcade" ;
fi emettitore -r -n -f "NO_INPUTS|SHOW_ROTATOR" CaricaProfiloDallEmulatore " $romName " " $system "
È qui che viene caricato un profilo quando si seleziona una ROM; la selezione di una ROM avviene scorrendo l'elenco dei giochi di una console o quando è attivo lo screensaver. Poiché questo processo comporta un caricamento rapido dei profili, in genere non è consigliabile rendere questo script eseguibile.
Script selezionato dal sistema
/userdata/system/configs/emulationstation/scripts/system-selected/ledspicer.sh
#!/usr/bin/env bash system = "$1" / usr / bin / emitter LoadProfile " $system "
È qui che viene caricato un profilo quando si seleziona un sistema; la selezione avviene scorrendo l'elenco dei sistemi o quando è attivo lo screen saver. Poiché questo processo comporta un caricamento rapido dei profili, in genere non è consigliabile rendere questo script eseguibile.
Rendere gli script eseguibili
Dopo aver posizionato gli script, applica i permessi di esecuzione tramite SSH solo agli eventi a cui desideri che LEDSpicer risponda:
chmod + x /userdata/system/configs/emulationstation/scripts/game-start/ledspicer.sh chmod + x /userdata/system/configs/emulationstation/scripts/game-end/ledspicer.sh chmod + x /userdata/system/configs/emulationstation/scripts/game-selected/ledspicer.sh chmod + x /userdata/system/configs/emulationstation/scripts/system-selected/ledspicer.sh
Se in seguito cambi idea, ti basterà rimuovere l'autorizzazione di esecuzione:
chmod -x /userdata/system/configs/emulationstation/scripts/game-selected/ledspicer.sh chmod -x /userdata/system/configs/emulationstation/scripts/system-selected/ledspicer.sh
3.6 Plugin di input MAME (eventi dei pulsanti in tempo reale)
Per i giochi MAME, LEDSpicer può spingersi oltre e illuminare i pulsanti in modo reattivo, illuminando solo i pulsanti effettivamente utilizzati dal gioco in corso, in base al sistema di eventi di output di MAME.
Nella <inputs>sezione del profilo, fai riferimento al plugin di input MAME:
<inputs>
<input type = "Mame" mapFile =
" mame.ini" / > </inputs>
Il file di mappa ( mame.ini) collega i nomi degli eventi di output di MAME ai nomi e ai colori degli elementi:
[ P1_B1 ] target = P1_BUTTON1 color = Rosso filter = Normale [ P1_B2 ] target = P1_BUTTON2 color = Giallo filter = Normale
Ciò richiede che MAME sia configurato per emettere eventi di output, operazione che viene abilitata mame.initramite output = network.
4. Test e risoluzione dei problemi
Passaggio 4.1: Confermare il cablaggio e la configurazione dei LED
Passaggio 4.1.1: Verificare il cablaggio dei LED
Se non sei sicuro del cablaggio dei LED, tramite SSH puoi eseguire questo comando:
ledspicerd -l
Questo produrrà un output simile a questo:
Imposta l'intervallo a 33 ms Impostazione degli FPS a 30 Lettura del file /userdata/system/configs/ledspicer/basicColors.xml Caricamento della libreria /usr/lib/ledspicer/devices/UltimarcUltimate.so Sessione di apertura USB Elaborazione Ultimarc Ipac Ultimate IO Id: 1 Ultimarc Ipac Ultimate IO Id: 1 con 96 LED divisi in 23 elementi Il LED 31 non è impostato per Ultimarc Ipac Ultimate IO Id: 1 Il LED 32 non è impostato per Ultimarc Ipac Ultimate IO Id: 1 Il LED 33 non è impostato per Ultimarc Ipac Ultimate IO Id: 1 ... Inizializzazione del dispositivo Ultimarc Ipac Ultimate IO Id: 1 Connessione a 0xd209:0x410 ID: 1 Rilevamento dell'interfaccia Nessuna modalità controller di gioco rilevata Interfaccia di rivendicazione 2 Revoca dei privilegi per l'utente con ID 1000 e per il gruppo con ID 1000. Privilegi persi Lettura del file /userdata/system/configs/ledspicer/profiles/main.xml Lettura del file /userdata/system/configs/ledspicer/animations/IdleGradient.xml LED di prova (q per uscire) Seleziona un LED (r per resettare, q per uscire):
Questo mostra che sono stati configurati 23 elementi e anche che alcuni pin non sono mappati a nessun pulsante. Tutti i pulsanti dovrebbero essere spenti (anche se a volte non lo sono). Per vedere a quali pin dei pulsanti sono mappati, è sufficiente iniziare inserendo 1e premendo Invio. Se un LED si illumina, annota quale e aggiorna ledspicer.conf.
Ad esempio, se questo fa sì che il pulsante uno del giocatore 1 si illumini, possiamo aggiornare questa riga nel nostro ledspicer.conffile:
<element name = "P1_BUTTON1" red = "10" green = "11" blue = "12" />
A:
<element name = "P1_BUTTON1" red = "1" green = "2" blue = "3" />
Poiché i LED RGB sono mappati su tre pin adiacenti, questo funziona. Successivamente, dovremmo 4premere Invio. Se nessun LED si accende, possiamo aggiungere 3 al numero e riprovare. Ripetere questa operazione finché tutti i LED non sono mappati. Al termine, rpremere Invio e poi qInvio per tornare alla riga di comando.
Se si utilizzano LED monocolore, è sufficiente iterare di 1 anziché di 3.
Passaggio 4.1.2: Confermare il cablaggio dei LED
Per verificare che ogni elemento sia stato configurato correttamente, utilizzare questo comando:
ledspicerd -e
Potrebbe essere riprodotta l'animazione di colore predefinita di Ultimarc; ignoratela.
L'output sarà qualcosa del tipo:
Inserisci P2_BUTTON7 P2_BUTTON6 P2_BUTTON5 Pausa P2_BUTTON4 P2_BUTTON3 P1_BUTTON2 P1_BUTTON7 P1_BUTTON3 P1_TRACKBALL P2_JOYSTICK P1_JOYSTICK P1_BUTTON4 P1_BUTTON1 P1_BUTTON5 P1_BUTTON6 P1_CREDITO P2_BUTTON8 P1_BUTTON8 P2_BUTTON1 Tab P2_BUTTON2 Inserisci il nome di un elemento (r per reimpostare, q per uscire):
Questo elenco mostra tutti gli elementi definiti nel file di configurazione. Per testare un elemento, digita il suo nome e premi Invio. L'elemento dovrebbe illuminarsi. Anche in questo caso, se è in riproduzione l'animazione predefinita di Ultimarc, una volta che l'animazione raggiunge quell'elemento, si resetterà. Fino ad allora, dovrebbe rimanere bianco.
Passaggio 4.2: Testare il demone
Tramite SSH, avviare il demone in modalità debug per verificare la configurazione:
ledspicerd -f -v
Il -fflag lo mantiene in primo piano; -vaumenta la verbosità. Presta attenzione a eventuali errori relativi a file mancanti, elementi sconosciuti o problemi di connessione USB.
Una volta avviato, puoi interagire con Batocera per vedere quale profilo LEDSpicer sta cercando di caricare e utilizzare queste informazioni per decidere quali profili creare. Crearne uno per ogni ROM che possiedi potrebbe essere eccessivo; in tal caso, crea profili ragionevoli a livello di sistema (ad esempio arcade.xmlper MAME, FBNeo, Daphne, ecc.) e profili specifici per le ROM che ti interessano di più (ad esempio arcade/sf2.xmlper Street Fighter 2).
Passaggio 4.2.1: vedere quali profili vengono cercati
Esempio di output all'avvio della GalagaROM sul FBNeosistema (o qualsiasi variante di MAME):
Tentativo di caricamento del profilo: arcade/galaga cache del profilo mancata Lettura del file /userdata/system/configs/ledspicer/profiles/arcade/galaga.xml Profilo non riuscito: impossibile leggere il file /userdata/system/configs/ledspicer/profiles/arcade/galaga.xml Errore=XML_ERROR_FILE_NOT_FOUND ErrorID=3 (0x3) Numero di riga=0: nome file=/userdata/system/configs/ledspicer/profiles/arcade/galaga.xml alla riga 0 Tentativo di caricamento del profilo: P2_B1 cache del profilo mancata Lettura del file /userdata/system/configs/ledspicer/profiles/P2_B1.xml Profilo non riuscito: impossibile leggere il file /userdata/system/configs/ledspicer/profiles/P2_B1.xml Errore=XML_ERROR_FILE_NOT_FOUND ErrorID=3 (0x3) Numero di riga=0: nome file=/userdata/system/configs/ledspicer/profiles/P2_B1.xml alla riga 0 Tentativo di caricamento del profilo: JOYSTICK2_B1 cache del profilo mancata Lettura del file /userdata/system/configs/ledspicer/profiles/JOYSTICK2_B1.xml Profilo non riuscito: impossibile leggere il file /userdata/system/configs/ledspicer/profiles/JOYSTICK2_B1.xml Errore=XML_ERROR_FILE_NOT_FOUND ErrorID=3 (0x3) Numero di riga=0: nome file=/userdata/system/configs/ledspicer/profiles/JOYSTICK2_B1.xml alla riga 0 Tentativo di caricamento del profilo: arcade cache del profilo mancata Lettura del file /userdata/system/configs/ledspicer/profiles/arcade.xml Profilo non riuscito: impossibile leggere il file /userdata/system/configs/ledspicer/profiles/arcade.xml Errore=XML_ERROR_FILE_NOT_FOUND ErrorID=3 (0x3) Numero di riga=0: nome file=/userdata/system/configs/ledspicer/profiles/arcade.xml alla riga 0 Tutti i profili richiesti non sono riusciti
In questo caso, posso vedere che sono stati cercati quattro profili diversi: arcade/galaga.xml, P2_B1.xml, JOYSTICK2_B1.xml, e arcade.xm. Poiché non ne è stato trovato nessuno, defaultviene utilizzato il profilo .
Potrei voler creare un arcade.xmlprofilo generico per illuminare tutti i LED con colori standard che corrispondano alle azioni dei pulsanti, in modo che qualsiasi gioco arcade abbia una mappatura dei colori appropriata. In seguito, potrei voler creare un JOYSTICK2_B1.xmlprofilo leggermente più specifico per illuminare solo i joystick (se dotati di LED) e il pulsante attivo per ciascun giocatore.
Passaggio 4.2.1: Selezionare manualmente un profilo
Per avviare manualmente il caricamento di un profilo a scopo di test:
emettitore CaricaProfileDaEmulatore galaga arcade
O:
emettitore LoadProfile predefinito
Passaggio 4.3: Riavvia e verifica
Riavvia Batocera. Seleziona un gioco in EmulationStation e osserva se i LED cambiano alla selezione e all'avvio del gioco. In caso contrario, controlla:
-
/tmp/ledspicer.logper errori del demone -
Che gli script siano eseguibili
-
Questo
boardId=“1”corrisponde se hai una sola scheda -
Che i nomi degli elementi nei profili corrispondano esattamente a quanto dichiarato in
ledspicer.conf
5. Consigli e insidie comuni
Problema
Probabile causa
Aggiustare
Il demone non riesce ad avviarsi
Nome del dispositivo errato inledspicer.conf
Deve essere esattamenteUltimarcUltimate
I LED non cambiano all'avvio del gioco.
Script non eseguibili
Eseguire chmod +xgli script desiderati
Si accendono i LED sbagliati
I numeri dei pin non corrispondono al cablaggio
Verificare il cablaggio rispetto alla documentazione di bordo.
Nessun dispositivo USB trovato
Driver non caricato o scheda non rilevata
Avvia lsusbe verifica la connessione USB
Profili non caricati
Mancata corrispondenza del nome tra il file del profilo e la ROM
Verifica che il nome esatto del file ROM corrisponda al nome del file del profilo.
Il plugin MAME non risponde
Uscita MAME non abilitata
aggiungere output = networkamame.ini
6. Conclusion
LEDSpicer colma una lacuna nell'ecosistema arcade di Linux fornendo un demone unificato e indipendente dall'hardware per la gestione dei LED. Il suo modello di configurazione XML, pur richiedendo un certo impegno iniziale per mappare i pin fisici agli elementi denominati, offre una notevole flessibilità una volta impostato. Sono presenti numerosi file, ognuno dei quali deve essere configurato correttamente affinché l'applicazione funzioni come previsto.
Per ulteriore assistenza, contatta il canale Discord .
Trovato questo articolo interessante? Condividilo sulla tua rete di contatti in Twitter, sulla tua bacheca su Facebook, in Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!







0 commenti:
Posta un commento