Attract-Mode - blocco avvio multiplo [Risolto]

Frontend per cabinati... chi, cosa, come!!!
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da alucard »

Salve,
nella realizzazione del bartop x86, sto utilizzando Attract-Mode come FE.

Pur essendo molto flessibile la configurazione dell'invocazione dell'emulatore, ho deciso di introdurre comunque RocketLauncher come strato software unico per il lancio effettivo del gioco selezionato.

Il tutto sembra funzionare correttamente, ma ho notato che lasciato nelle impazienti mani di mia nipote, viene fuori un fastidioso problema che scaturisce da involontari tentativi di avvio multiplo del gioco.

Dal punto di vista dell'utente
Si seleziona un gioco e si preme l'apposito tasto per avviarlo. Entro un certo intervallo di tempo relativamente breve, il tasto viene premuto di nuovo. Dopo un po' arriva a video un messaggio di errore generico di RL e si torna di nuovo sul FE. Da quel momento in poi non parte più alcun gioco per quell'emulatore. Uscendo dal FE (chiudendolo tramite apposita voce di menù) parte il gioco di cui era stato inizialmente richiesto l'avvio.

Cosa avviene nel sistema
Osservando i log, risulta che RL da seguito alla prima richiesta di avvio, ma mentre la sta lavorando ne riceve un'altra. Identifica correttamente la seconda come possibile richiesta duplicata e non la asseconda. La prima richiesta nel frattempo va avanti, ma il gioco non viene mostrato e rimane attivo come processo nascosto. Dopo il messaggio di errore, la vista torna invece sul FE ma ogni successivo tentativo di avvio, viene identificato come duplicato per via del processo del gioco (attivo e nascosto).

Avete mai provato da FE, anche di altro tipo, a cliccare più volte sul tasto di avvio gioco?
Sarà un problema di AM o dell'accoppiata AM+RL?
Ultima modifica di alucard il 20/04/2020, 9:38, modificato 1 volta in totale.
Avatar utente
Tox Nox Fox

BanHammer Silver Medal Donatore
Moderatore
Moderatore
Messaggi: 11734
Iscritto il: 14/01/2007, 23:35
Medaglie: 3
Grazie Inviati: 159 volte
Grazie Ricevuti: 271 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da Tox Nox Fox »

Io uso MaLa sul cab e abbiamo testato feel e hyperspin nelle fiere così come Retropie ( in cui va tolto il menù scelta di lancio rom da joypad altrimenti parte quello alla seconda premuta di tasto ) e non ho mai visto quel problema
WP.ARCADEITALIA.NET
La Guida al MameCab
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da alucard »

Penso di aver individuato cosa accade.

AM invoca RL, ma RL sicuramente lancia un altro processo per portare avanti l'effettivo avvio dell'emulatore.
Il processo iniziale invocato da AM, quindi, termina quasi istantaneamente, lasciando AM libero di accettare nuovi input.
In quella fase gli input involontari accettati da AM sono tali da farlo persistere in primo piano.
Nel frattempo l'emulatore lanciato dal processo secondario di RL, è pronto, ma rimane in secondo piano: essendo nello specifico Retroarch, rimane per sua natura in pausa e muto.
AM rimane utilizzabile, ma ogni tentativo di lancio viene giustamente bloccato da RL perché c'è un'altra istanza nascosta avviata. Chiudendo AM, Retroarch rimasto in secondo piano, cattura il focus e va avanti.

Devo trovare un modo per impedire di dare ulteriori input ad AM durante la primissima fase di lancio.
Proverò quindi due alternative:

a. utilizzo del plugin aggiuntivo FadeToGame di AM (purtroppo il Fade di RL non è abbastanza istantaneo);

b. utilizzo di uno script Autoit, che farò invocare dal frontend al posto di RL. Lo script farà da passa carte verso RL, ma per prima cosa bloccherà l'input globale sul sistema (per 10s o finché non ottiene l'handler all'emulatore). Una sorta di LockedLauncher :-)
Avatar utente
Tox Nox Fox

BanHammer Silver Medal Donatore
Moderatore
Moderatore
Messaggi: 11734
Iscritto il: 14/01/2007, 23:35
Medaglie: 3
Grazie Inviati: 159 volte
Grazie Ricevuti: 271 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da Tox Nox Fox »

Problema che ogni tanto succede
In alcuni casi si opta per chiudere il frontend e lanciare l'emulatore ( in questo caso RocketLauncher ) per riaprirlo quando si esce dal gioco.
Tienici informati
WP.ARCADEITALIA.NET
La Guida al MameCab
Avatar utente
MaX7o
Newbie
Newbie
Messaggi: 53
Iscritto il: 02/10/2018, 20:37
Città: firenze
Grazie Inviati: 29 volte
Grazie Ricevuti: 5 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da MaX7o »

Posta il log che c diamo un'occhiata
io attualmente uso Attrac mode e RL insieme
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da alucard »

Ok grazie.

Condizioni iniziali: posizionato sulla vista emulatore e gioco selezionato.

A questo punto ho premuto a ripetizione il tasto di lancio gioco.
Il risultato è che il gioco non viene mai mostrato. Rimane la schermata di fade perenne. Condizione (A).
Nei log, fino a questo punto viene tracciato quanto riportato qui
https://pastebin.com/P3JVM1BD

Dalla condizione (A) (l'ho notato solo stasera), se invio da input un ESC, la situazione si sblocca e viene mostrato il gioco, da cui poi sono anche uscito per tornare al frontend. Il tracciato di questa fase (completamento avvio gioco e uscita gioco) è il seguente.
https://pastebin.com/2xVK2tpk

Se invece dalla condizione (A), invio da input un RETURN, torno al frontend senza vedere mai il gioco. Da frontend però ogni tentativo di avvio gioco rimarrà muto, perché RL rileva una esecuzione di Retroarch appesa. Questo è il tracciato
https://pastebin.com/58d2ab4B
Avatar utente
MaX7o
Newbie
Newbie
Messaggi: 53
Iscritto il: 02/10/2018, 20:37
Città: firenze
Grazie Inviati: 29 volte
Grazie Ricevuti: 5 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da MaX7o »

alucard ha scritto: 07/11/2018, 11:23 Penso di aver individuato cosa accade.

b. utilizzo di uno script Autoit, che farò invocare dal frontend al posto di RL. Lo script farà da passa carte verso RL, ma per prima cosa bloccherà l'input globale sul sistema (per 10s o finché non ottiene l'handler all'emulatore). Una sorta di LockedLauncher :-)
Io per alcuni emulatori ostici tipo makaron per chiuderlo usavo CLOSEMUL molto funzionale e completamente gratis

closemul

che versione di win hai 32 o 64 e retroarch 32 o 64
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da alucard »

MaX7o ha scritto:
che versione di win hai 32 o 64 e retroarch 32 o 64
Utilizzo Windows 10 Enterprise 64Bit e Retroarch 64Bit
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da alucard »

Vi aggiorno.

La direzione presa penso sia quella giusta. E' auspicabile che un frontend blocchi l'input durante l'avvio di un gioco. Leggevo ad esempio questo in una recensione del frontend Big Blue

Immagine

Visto che il blocco offerto da RL arriva troppo tardi, userò un wrapper che blocca l'input immediatamente e fino all'avvio dell'emulatore.

Non vorrei insomma dover cambiare FE.
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Re: Attract-Mode - blocco avvio multiplo [Risolto]

Messaggio da alucard »

Ok ragazzi, ho risolto.

Il wrapper direi che è completato e, nel caso potesse servire a qualcuno, dovrei riuscire a pubblicarlo su GitHub nel fine settimana.

Il funzionamento è semplice e generico.
Consideriamo ad esempio Attract-Mode, file di configurazione standard per emulatore NEO-GEO con utilizzo RocketLauncher

Codice: Seleziona tutto

executable           C:\Games\RocketLauncher\RocketLauncher.exe
args                 -s "SNK Neo Geo MVS" -r "[romfilename]" -p AttractMode -f "C:\Games\attract-v2.4.1-win64\attract.exe"
per l'utilizzo del wrapper, la configurazione diventa così

Codice: Seleziona tutto

executable           C:\Games\lockedLauncher.exe
args                 C:\Games\RocketLauncher\RocketLauncher.exe -s "SNK Neo Geo MVS" -r "[romfilename]" -p AttractMode -f "C:\Games\attract-v2.4.1-win64\attract.exe"
Quindi il wrapper prende il posto dell'eseguibile principale, mentre l'eseguibile originale si sposta in testa agli altri parametri.

Il wrapper, appena viene invocato blocca l'input di tastiera e mouse ed esegue contemporaneamente il comando originale.
La politica di sblocco invece dipenderà dai parametri di configurazione che al momento sono (in file .ini)

Codice: Seleziona tutto

[General]
unlockAfter=20
unlockOnProcess=
unlockTimeout=50
unlockOnProcess - Politica di sblocco basata su presenza processo/i. Quando valorizzato con uno o più nomi processo (separati da virgola), il wrapper mantiene l'input bloccato fino alla presenza di almeno uno dei processi specificati (es. retroarch.exe). In ogni caso, al superamento della soglia di tempo unlockTimeout l'input viene riabilitato.

unlockAfter - Politica di sblocco basata su intervallo di tempo fisso. Indica per quanti secondi l'input rimarrà bloccato.

Le due politiche di sblocco sono mutuamente esclusive e la prima ha priorità sulla seconda.

Dalle prove che ho fatto, posso dire di non aver più il problema di prima.
Ho praticamente ballato la tarantella sulla plancia senza interferire sul corretto avvio del gioco.
Ora è a prova di nipote scatenata. :-)
Rispondi

Torna a “Frontend”