03 aprile 2020

Frame delay su groovymame (e non solo)

Nelle ultime versioni dalla patch groovymame, Calamity ha implementato un paio di funzioni per cercare di diminuire, se non eliminare del tutto, quel poco ritardo (siamo nell'ordine dei ms/2-3 frame)) che si può verificare in fase di emulazione, credo sia quindi utile introdurre l'argomento frame_delay, cercando di spiegare di cosa si tratta.

La voce presente in mame.ini è compresa tra le opzioni di switchres, che ho già menzionato, aggiornando, la guida rapida a groovymame ma che per praticità ripropongo anche quì.

#
# CORE SWITCHRES OPTIONS
#

frame_delay 0

Come impostazione di default quindi è settato a 0, dovremo quindi abilitarla (impostandolo ad 1) per poterne usufruire, si ma che fà? Serve a cercare di ridurre l'eventuale lag che può verificarsi in alcuni giochi, quando premiamo un tasto, la pressione viene rilevata tot tempo dopo e in alcuni giochi questo fenomeno potrebbe creare problemi, specialmente se si è molto capaci e quindi sensibili, se si gioca sul frame insomma (alcuni pro di Street Fighter lamentano l'impossibilità o la maggiore difficoltà ad eseguire determinate combo proprio per questo problema) tutto questo ovviamente, se paragonato all'hardware originale.

Il valore del frame delay può ovviamente variare da pc a pc visto che ogni configurazione fa girare le roms a velocità diverse, il consiglio quindi è di effettuare le prove su ogni macchina, per ogni gioco ed impostare i valori ad hoc.

La nuova patch ne incorpora 2 reallizzate da Inteall (altro utente di BYOAC), le quali consentono, una di effettuare un benchmark sulla singola rom per darci una idea del valore più opportuno da settare, l'altra per variare il frame delay in realtime e poter apprezzare la differenza di prestazioni.

Per effettuare il benchmark avvieremo la rom da commandline facendo seguire i comandi -bench ed un numero che imposterà il tempo di durata del test, dopo il quale ci verranno dati dei valori che ci indicheranno le impostazioni consigliate, tenendo a mente che il nostro obiettivo è quello di avere un ritardo pari a zero, imposteremo il valore che ci garantisce una percentuale il più bassa possibile, un valore troppo alto di delay potrebbe portarci a "saltare" alcuni frame.
ecco un screenshot di esempio con la rom gunbird2 


il test è durato 240 secondi e possiamo vedere che tra i valori proposti il migliore sembra 7, che ci garantisce un ritardo impercettibile e quindi un'ottima risposta.

Ora per applicare questo valore possiamo operare in due modi, da commandline aggiungendo -fd ed il valore scelto 

mame gunbird2 -fd 7

esempio riferito ai valori avuti dal precedente bench

oppure agendo dallo slide accessibile in game


il risultato non cambia.

Attualmente il valore non viene salvato nel file di configurazione del gioco è quindi opportuno cercare di includerlo in fase di avvio della rom, magari da frontend o da script, anche se la soluzione più semplice è quella di creare un file .ini per ogni gioco che vogliamo "trattare" inserendo la voce fd # inserendo al posto del cancelletto il valore stabilito col benchmark,a voi la scelta.

Credo che tale feature possa essere interessante specialmente in ambito recordistico ho quindi già compilato l'ultima versione del wolfmame con la possiblità di impostare i parametri di frame delay sempre con le modalità descritte sopra.

Se volete approfondire con moltissimi test interessanti e dimostrazioni pratiche potete farlo quì