Dank der Eingabeverzögerung fühlt sich die Steuerung von Super Mario World auf dem Super Nintendo Emulator unter Recalbox 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 die Eingabeverzögerung 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 Joypad wurde seitlich gefilmt, damit ich sehen konnte, ob der Button schon gedrückt wurde oder nicht. Durch mehrere Durchläufe habe ich diese Ergebnisse verifiziert. Bluetooth und Wifi waren auf der Raspberry Pi nicht aktiviert bei den Tests.
Die Eingabeverzögerung 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
Beispielrechnung2.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 die Eingabeverzögerung 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 (kaufen) per USB-Kabel und mit dem Wireless Controller der Xbox 360 (kaufen) getestet und gegenübergestellt.
Latzenz | Emulator oder System |
---|---|
~71 ms | Original Super Nintendo an CRT TV mit Super Mario World |
~83 ms | PS4 Sonic Mania |
~83 ms | Recalbox – Raspberry Pi 3 System Menu |
~96 ms | SNES Classic Mini Super Mario World |
~112 ms | Virtual Console – Wii U Super Mario World |
~138 ms | PS Now – Streaming PS4 Bubsy: The Woolies Strike Back |
~152 ms | Recalbox – Raspberry Pi 3 PocketSNES (Super Nintendo) |
~160 ms | Recalbox – Raspberry Pi 3 picodrive (MegaDrive) |
~171 ms | Recalbox – Raspberry Pi 3 Snes9x next (Super Nintendo) |
Die ermittelte Zahlen sind Mittelwerte und zeigen, dass der Raspberry Pi 3 mit Recalbox bei der Emulation eine deutliche Eingabeverzögerung 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 die Latenz des kabellosen Xbox 360 Gamepads mit Original MS Wireless Adapter (hier kaufen) in Form von bis zu 5 ms.
Das echte Super Nintendo an einem Röhrenmonitor hat, wie erwartet, das geringste Lag mit 71 ms. Das Super Nintendo Mini hat dabei „nur“ fast 100 ms Verzögerung bei den Eingaben vom Joypad gezeigt.
Grafische Auswertung der Eingabeverzögerung von Emulatoren
Woher kommt die Eingabeverzögerung?
Mein Fernseher, der Samsung KS7090 (kaufen), 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 eine geringere Eingabeverzögerung 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. Der original PS4 Controller (kaufen) 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 (kaufen). 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 (günstig kaufen).
Was kann man gegen die Eingabeverzögerung 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 die Eingabeverzögerung 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.
Emulatoren auf dem Raspberry Pi hat eine spürbare Latenz
An meinem Fernseher haben folgende Geräte absteigend die geringste Latenz, wenn ich Super Mario World spielen möchte:
- SNES Classic Mini
- Wii U Virtual Console
- Recalbox (PocketSNES)
- Recalbox (Snes9x Next)
Die Recalbox baut man sich mit einem Raspberry Pi nach dieser Anleitung zusammen. Das SNES Classic Mini kann man hier günstig bestellen.
Danksagungen
Danke an Philipp, Christian und Mo für die tatkräftige Hilfe beim Ausrechnen der Beobachtungen. Einen noch größeren Dank an Ingo für das beharrliche Hinterfragen und das Bereitstellen des echtes Super Nintendos mit CRT Monitor.
Schreibe einen Kommentar