recalbox: Input Lag bei den Emulatoren

Die Steuerung von zum Beispiel Super Mario World auf dem Super Nintendo Emulator unter Recalbox fühlt sich nicht so an wie früher. Permanent springe ich zu spät ab und lande im Nichts.

Ist der Grund für das frühzeitige Game Over wirklich eine Verzögerung bei der Eingabe von Befehlen über das Joypad oder bin ich einfach alt geworden? 

Um herauszufinden, ob und wo wie groß die Latenz ist, habe ich die Zeit zwischen dem Drücken des Knopfes auf dem Controller bis zur Reaktion auf dem Bildschirm gemessen.

Wie wird Input Lag gemessen?

Ab dem Apple iPhones 7 kann man im Slow-Motion Aufnahmemodus bis zu 240 Bilder pro Sekunde aufnehmen. Ich habe gleichzeitig den Fernseher und den Druck auf den Joypad-Button gefilmt und die Bilder zwischen diesen beiden Ereignissen im Schnittprogramm gezählt. Beispielsweise habe ich 84 Frames beim SNES 9x Next Emulator gezählt.

Das Input Lag in Millisekunden kann man ausrechnen, in dem wir die Variable F in der folgenden  Formel mit den gezählten Frames des iPhone Videos ersetzen:

(1000 milliseconds in a second ÷ 480 frames per second) × F
= (2.08333333333 × F) ms

Beispielrechnung
2.0833333333 × 84 frames =
~ 171 ms

Wieso durch 480 und nicht durch 240?

Wenn ich eine Sekunde einer Stoppuhr mit der Slow-Mo-Funktion vom iPhone filme, dann zeigt Final Cut Pro für genau diese Länge 480 Frames an. Eine Sekunde bzw. 1000ms in der Realität entsprechen also 480 Frames bei mir im Schnittprogramm. Die Frames sind einfach doppelt vorhanden.

Ich weiß nicht warum das so aber es ist so. Man kann also nicht einfach die 240 Frames pro Sekunde nehmen sondern eben die 480 Bilder pro Sekunde. Meine Vermutung ist, dass dies technisch bedingt ist.

 

Wie groß ist das Input Lag in Millisekunden?

Die so ermittelten Werte habe ich verglichen mit denen von Sonic Mania auf der PS4 und dem Systemmenü von Recalbox. Das neue 2D-Jump&Run von SEGA hat die geringste mir bekannte Latenz auf der PS4. Das Menü der Recalbox kam mir immer sehr responsiv vor. Trotzdem wollte ich es genauer wissen.

Zusätzlich habe ich die Recalbox mit einem PlayStation 4 Joypad per USB-Kabel und mit dem Wireless Controller der XBOX 360 getestet und gegenübergestellt:

USB PS4 PadWireless XBOX 360 PadSystem und Anwendung
83 msn/aPS4
Sonic Mania
83 ms88 msRecalbox Raspberry Pi 3
System Menu
152 msn/aRecalbox Raspberry Pi 3
PocketSNES (Super Nintendo)
n/a160 msRecalbox Raspberry Pi 3
picodrive (MegaDrive)
n/a171 msRecalbox Raspberry Pi 3
Snes9x next (Super Nintendo)

Ein echtes Super Nintendo hat übrigens folgenden Input lag:

Kabel SNES PadSystem und Anwendung
71 msOriginal Super Nintendo an CRT TV
Super Mario World

Eine Wii U mit Super Mario World in der Virtual Console, also einem original Nintendo-Emulator, kommt auf diese Werte:

Pro ControllerSystem und Anwendung
112.5 msWii U Virtual Console mit SMW
Super Mario World

Die Zahlen zeigen, dass der Raspberry Pi 3 mit Recalbox bei der Emulation ein deutliches Input Lag von einer sechstel Sekunde hat. Dies ist gegenüber der PlayStation 4 und dem Menü der Recalbox mehr als doppelt so hoch.

Dazu kommen noch Unterschiede bei den emulierten Systemen picodrive (MegaDrive) und Snes9x next (Super Nintendo). Der SNES Emulator ist bis zu 11 ms langsamer als die Emulation des MegaDrive. Zu guter Letzt zeigt sich auch das Input Lag des kabellosen XBOX 360 Gamepads mit Original MS Wireless Adapter in Form von bis zu 5 ms.

Das echte Super Nintendo an einem Röhrenmonitor hat, wie erwartet, das geringste Lag mit 71 ms.

Grafische Auswertung vom Input Lag der Recalbox

Vergleich des Input Lag von Recalbox auf einem Raspberry Pi
Vergleich des Input Lag von Recalbox auf einem Raspberry Pi

Woher kommt das Input Lag?

Mein Fernseher, der Samsung KS7090, hat bei 1080p mit 60hz eine Verzögerung von 21 ms bis das Bild über HDMI im Game Mode angezeigt wird. Woher kommt aber das restliche Lag?

Meine Vermutung ist, dass es ein Mix aus der Emulation und der geringen Leistung des Raspberry Pi 3 ist. Der SNES Emulator Pocketsnes lässt einige Effekte (Mode7) weg aber soll ein geringeres Input Lag haben.  Bei meinen Tests war der Unterschied unter 22ms zwischen den beiden.

Ein schneller PC könnte hier bessere Ergebnisse erzielen. Vermutlich wäre ein SNES Classic Mini oder eine gehackte Wii (U) in dieser Hinsicht besser aufgestellt, weil die Emulatoren direkt vom Hersteller kommen.

Haben kabellose Controller ein Lag?

Ja, haben sie. Es ist zwar mit bis zu 5 ms sehr gering aber es ist vorhanden. Laut Tests auf Youtube sind übrigens besonders Controller von 8Bitdo von Lag geplagt. Selbst nach einem Firmware-Update.

Der original PS4 Controller hat den Vorteil, dass man ihn mit einem langen Micro USB-Kabel ohne Lag betreiben kann. Ich persönlich nutze die kabellosen XBOX 360 Controller mit dem original XBOX 360 Wireless Adapter für Windows. Der funktioniert natürlich auch direkt am Raspberry Pi. Zudem sind die Controller von Microsoft und Sony nicht mal teurer als der Chinaschrott von 8Bitdo.

Wenn ihr schon gedrückt habt und Sonic macht das hier, dann habt ihr ein extremes Lag-Problem

Was kann man gegen das Input Lag machen?

Selbst das Einschalten des Game Mode am TV und die Verwendung von Controllern mit Kabeln hat wenig genutzt.   Es liegt in diesem Fall an der Hard- und Software. Da das Menü aber genau so schnell reagiert wie die PS4 unter optimalen Bedingungen, liegt das Problem definitiv in der Emulation und nicht an der Ein- bzw. Ausgabehardware wie Joypads oder TV.

Am Ende wird das Input Lag von einer sechstel Sekunde vielen Person nicht auffallen. Viele Menschen sind sehr glücklich damit und werden das nie bemerken. Nur wer früher wirklich viel auf original Hardware gespielt hat wird merken, dass es sich nicht so anfühlt wie damals. Oder man gewöhnt sich eben dran. Mir wird leider diese erlernte Feinmotorik mit dem falschen Timing zum Verhängnis. Es dauert einfach sehr lange, bis ich mich wieder entsprechend „kalibriert“ habe.

Messaufbau mit echtem Super Nintendo und Röhrenmonitor.

Danksagungen

Danke an Philipp, Christian und Mo für die tatkräftige Hilfe beim Ausrechnen und Hinterfragen von den Beobachtungen. Einen noch größeren Dank an Ingo für das beharrliche Hinterfragen und das Bereitstellen des echtes Super Nintendos mit CRT Monitor.

17 Antworten auf „recalbox: Input Lag bei den Emulatoren“

  1. Darum kommt mir wahrscheinlich nicht nur gefühlt die Steuerung beim SNES classic direkter als bei der recalbox vor (ist mir bei Contra III aufgefallen). Vieles dürfte auch einfach mit der schwachen Hardware zu tun haben. Beim PC und seinen Emulatoren auf einem i7 kommt mir das nämlich nicht so vor, wobei ich damals immer mit einem kabelgebundenen 360 Pad gespielt habe. Mit dem neuen Bluetooth Xbox One Pad müsste ich mal testen.




    0
    1. Ja, ist sehr wahrscheinlich beides richtig. Einen Unterschied bei den Pads erwarte ich nicht. Wie man an den Ergebnissen sieht, muss es ja die Software, also in dem Fall die Emulatoren, sein.




      0
  2. In dem animierten Gif werden die frames hochgezählt (bis 122).
    Im Text ist aber von 122ms die Rede.
    Passt das wirklich? Also ist in dem Gif 1 frame = 1ms?
    Oder sollte das nicht frame sondern ms sein?




    0
  3. Um die was heißt das nun? Wie hoch ist der tatsächliche input lag?

    Eine Sekunde hat 800 Frames in dem iPhone Video

    Sicher 800 frames? Soweit ich weiß, gibt es zwei Zeitlupenfunktionen bei iPhones. Eine mit 120 und eine mit 240 fps.




    0
  4. Wer einen verifizierten Account haben will, der meldet sich bitte bei mir per Mail.

    Ich seh den Mehrwert irgendwie nicht. Wer sich selbst eine persönliche Note geben möchte kann das mittels Gravatar doch viel besser als mit einem blauen Haken.




    0
  5. Der Artikel ist nun korrigiert. Videos, Tabellen und Texte habe ich aktualisiert. Das Chart fehlt noch. Danke noch mal an Ingo für das Hinterfragen! Ich habe das auch im Text erwähnt. Ich lösche aber mal alle Kommentare bis die wichtigen dieser Diskussion.




    0
  6. Hast du beim Pi3 WLAN aktiviert und benutzt du das interne Bluetooth vom Pi3?

    Deaktiviere mal WLAN (und nutze ggf. einen USB Bluetooth-Dongle zur Verbindung eines Controllers) und teste dann bitte nochmal.




    0
    1. Weder noch. Ich gehe über Netzwerk dran und nutze kein internes Bluetooth. Entweder PS4 pad direkt per USB oder XBOX wireless pad mit dem usb dongle

      Solche Faktoren hätte man auch beim Test im Menü von Recalbox bemerkt was ja perfekt läuft.




      0
  7. Wieder mal dank Ingo gibt es eine Korrektur der Ergebnisse. Er war so nett und hat ein echtes SNES mit samt CRT Monitor aufgebaut. Das Input Lag war mit diesem Aufbau bei 71 ms.

    Daraufhin habe ich nochmal alle Ergebnisse durchgeschaut und auch in den Videos nochmal die Frames gezählt. Dabei ist mir ein Fehler bei der Berechnung der Menüs von Recalbox und der PS4 aufgefallen. Die waren zu niedrig angegeben. Aufgefallen war das, als das echte SNES sehr dicht an der PS4 lag. Was nicht sein kann. Nun ist alles nochmals korrigiert und gezählt und sollte stimmen.

    Was sich aber über die gesamte Zeit nicht geändert hat, ist das grundsätzliche Ergebnis der Untersuchung: Das Lag kommt durch die Emulation selber und nicht durch die Hardware des Raspberry Pi. Denn die Menüs sind genau so schnell wie bei der PS4.




    0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website zeigt Benutzerbilder über gravatar.com an.

Wie bekomme ich einen verifizierten Account? - Login