Réduire à max l'input lag en émulation (RetroArch 1.9.14)
C'est possible et ce n'est pas difficile. En moins de 5 minutes c'est fait, vous vous surprendrez vous-même à mieux jouer !
1) On affiche les statistiques à l'écran pour pouvoir analyser la situation et modifier ses réglages en circonstances [0:31]
. on entre dans le menu de RetroArch
. on va dans Settings / On-Screen Display / On-Screen Notifications
. on active l'option On-Screen Notification
. on va dans Notification Visibility
. et on active l'option Display Statistics
2) On règle le Frame Delay [1:06]
. on retourne dans le menu de RetroArch
. on va dans Latency
. on active l'option Hard GPU Sync
. on désactive l'option Automatic Frame Delay
. on monte la valeur du Frame Delay à 16 parce qu'on est en 60Hz soit 1 image toutes les 16.7ms
. on sort du menu pour revenir dans le jeu
. on remarque sur les statistiques que la valeur Frame time est supérieure à 16.7ms (et que le son grésille et/ou produit des distorsions)
. on retourne dans le menu Latency de RetroArch
. on descend la valeur du Frame Delay à 15
. on sort du menu pour revenir dans le jeu
. et on descend la valeur du Frame Delay jusqu'à ce que la valeur Frame time dans les statistiques n'excède plus 16.7ms
3) On test le Run-Ahead [2:31]
. on retourne dans le menu de RetroArch
. on va dans Latency
. on active l'option Run-Ahead to Reduce Latency
. on active l'option Use Second Instance for Run-Ahead
. on monte la valeur Number of Frames to Run-Ahead jusqu'à 12
. on sort du menu pour revenir dans le jeu
. et on observe en jouant
. si les déplacements à l'écran sont hachés, qu'il manque des images aux mouvements comme à [2:56], on passe à l'étape 4 pour faire le réglage du Run-Ahead.
. si le jeu plante, fige ou que vous n'avez pas de problème d'affichage à l'écran, cela signifie que le core émulé ne prend pas en charge le Run-Ahead (il faudra se contenter uniquement du Frame Delay pour réduire l'input lag).
4) On règle le Run-Ahead [3:09]
. on retourne dans le menu de RetroArch
. on va dans Latency
. on descend la valeur Number of Frames to Run-Ahead à 1
. on sort du menu pour revenir dans le jeu
. on joue et on observe
. s'il n'y a pas de problème d'affichage, ni d'images manquantes
. on retourne dans le menu Latency de RetroArch
. on monte la valeur Number of Frames to Run-Ahead à 2
. on sort du menu pour revenir dans le jeu
. on joue et on observe
. s'il n'y a pas de problème d'affichage, ni d'images manquantes, on passe la valeur Number of Frames to Run-Ahead à 3
. s'il y a des problème d'affichages, même très léger, voir un simple sentiment d'inconfort visuel on remet Number of Frames to Run-Ahead à sa valeur précédente.
5) Explication technique
Pour reproduire le comportement d'une console 60Hz, l'émulateur doit savoir envoyer 1 nouvelle frame/image toutes les 16.7ms à l'écran. Un ordinateur moyen peut bufferiser cette frame en 2 à 4 fois moins de temps que le système de jeu original. On peut donc étendre et optimiser la plage d'écoute des inputs en augmentant le Frame Delay. En contre partie, l'émulateur aura moins de temps pour construire la frame suivante et nécessitera un ordinateur de plus en plus puissant.
Dans la vidéo, le Frame Delay optimum est de 14ms, cela signifie qu'à chaque cycle de 16.7ms, l'émulateur attend de recevoir une impulsion bouton pendant 14ms et qu'il lui reste 2.7ms pour calculer la nouvelle frame et l'afficher à l'écran.
Comme rien n'est instantané (même la lumière à une vitesse de propagation), les consoles de jeux vidéo induisent aussi nativement de l'input lag. Celui-ci varie en fonction des jeux et de l'effort de calcul qu'il demande au CPU de la machine. D'ailleurs, lorsque les calculs nécessitent plus de 16.7ms au CPU de la console pour créer une frame en 60Hz, le joueur observe alors des ralentissements à l'écran.
Le Run-Ahead permet d'exploiter cet input lag natif au jeu et de le soustraire au moment de l'émulation. En fait, l'émulateur profite de la puissance supérieur de l'ordinateur en exécutant un thread parallèle capable de précalculer à l'avance l'image probable qui se produirait si le joueur appuyait à cet instant sur un bouton de la manette. Il peut alors substituer la frame qu'il a déjà précalculée par la frame à calculer immédiatement, parce qu'il a un coup d'avance.
Pour le jeu Rockman X sur Super Famicom, l'input lag donné est de 40.71ms, soit 2.44 frames. En réglant le Run-Ahead sur 2 frames comme dans la vidéo, l'input lag interne au jeu est réduit par l'émulateur à 0.44 frame, soit 7.35ms environ.
En optimisant le timing du Frame Delay et en réduisant l'input lag interne du jeu en utilisant le Run-Ahead, on obtient une réactivé manette en main qui est aussi bonne, voir parfois meilleur que le jeu sur sa console. A condition que l'ordinateur dispose de toute la puissance nécessaire pour compenser, et que l'écran, la carte graphique ou la manette n'induisent pas d'input lag excessif. A titre d'exemple, la latence point à point d'un port USB 2.0 est de 125µs, soit 0.125ms.
Other Videos By Andearoid
Other Statistics
RetroArch Statistics For Andearoid
There are 688 views in 2 videos for RetroArch. Less than an hour worth of RetroArch videos were uploaded to his channel, roughly 9.01% of the content that Andearoid has uploaded to YouTube.