Input Lag reduzieren: Raspberry Pi CRT Emulation Setup optimieren
Wer einen Raspberry Pi an einen echten CRT-Fernseher hängt, will meistens nur eines: dieses alte Arcade-Gefühl zurück, ganz ohne das nervige Gefühl, dass der Knopfdruck irgendwo im System hängen bleibt, bevor er auf dem Bildschirm ankommt. Input Lag ist dabei der größte Feind der Authentizität. In diesem Artikel zeige ich dir erprobte, teils etwas fummelige Techniken, mit denen du die Latenz deines Raspberry-Pi-CRT-Setups auf ein echtes Minimum drückst.
Warum CRT-Setups überhaupt weniger Lag haben können
Ein CRT-Monitor zeichnet das Bild zeilenweise und praktisch ohne Verzögerung auf. Moderne LCD- oder OLED-Displays dagegen schicken das Signal erst durch Scaler-Chips und diverse Verarbeitungsstufen, bevor überhaupt etwas aufleuchtet. Genau das macht CRTs für Retro-Gaming so attraktiv. Trotzdem: Die gesamte Latenzkette hängt von mehr ab als nur vom Bildschirm. Controller, Emulator-Konfiguration, Betriebssystem und Videoausgabe spielen alle mit.
Die wichtigsten Stellschrauben im Überblick
1. RetroArch Runahead und Preemptive Frames nutzen
RetroArch bietet mit Run-Ahead eine der wirkungsvollsten Methoden, um Emulations-Lag zu kompensieren:
- Aktiviere “Run-Ahead to Reduce Latency” in den Einstellungen unter Latency.
- Probiere Werte zwischen 1 und 3 Frames aus. Zu hoch angesetzt, fängt das Bild an zu ruckeln, wenn der Pi einfach nicht genug Rechenleistung übrig hat.
- Bei Kernen mit Determinismus-Problemen hilft die Option “Second Instance”, um visuelle Artefakte zu vermeiden.
Auf einem Raspberry Pi 4 oder 5 läuft Run-Ahead bei den meisten 8-Bit- und 16-Bit-Systemen ohne Murren. Bei anspruchsvolleren Kandidaten wie der PS1 solltest du die CPU-Auslastung aber im Auge behalten, sonst rächt sich das schnell.
2. Composite- und RGB-Ausgabe statt HDMI-zu-Composite-Wandler
Viele greifen zu HDMI-zu-Composite- oder HDMI-zu-SCART-Konvertern. Das Problem: Diese Dinger packen oft 1 bis 2 zusätzliche Frames Verzögerung obendrauf, und das merkt man im Spiel sofort. Bessere Alternativen gibt es durchaus:
- Natives Composite-Signal direkt vom Raspberry Pi (bei älteren Modellen über die 3,5-mm-Klinkenbuchse, bei Pi 4/5 über einen GPIO-Composite-Mod).
- RGB-zu-SCART-Kabel mit passivem Pegelwandler statt aktivem Scaler. Passive Lösungen kosten so gut wie keine zusätzliche Latenz.
- Finger weg von generischen Billig-Konvertern, bei denen niemand die Latenzwerte angibt. Das ist fast immer ein schlechtes Zeichen.
3. Controller-Polling optimieren
Die Verzögerung fängt schon beim Controller an, nicht erst im Emulator:
- Kabelgebundene USB-Controller statt Bluetooth. Bluetooth fügt durch Funkprotokoll und Puffer immer ein paar Millisekunden extra hinzu, so gut die Verbindung auch sein mag.
- In RetroArch die Polling-Rate auf “Early” statt “Normal” oder “Late” stellen, damit Eingaben möglichst früh im Frame verarbeitet werden.
- Bei GPIO-basierten Arcade-Sticks lohnt sich ein direkter Treiber (etwa
mk_arcade_joystick_rpi). Der arbeitet näher an der Hardware als ein generischer USB-HID-Treiber, und das macht sich bemerkbar.
4. Video-Timing und V-Sync richtig konfigurieren
- V-Sync aktivieren, aber zusammen mit “Hard GPU Sync” in RetroArch nutzen, sonst staut sich der Puffer.
- “Max Swapchain Images” auf 2 statt 3 setzen. Weniger Puffer bedeutet weniger Latenz, allerdings mit einem kleinen Risiko für gelegentliche Ruckler.
- Wenn möglich die native Bildwiederholrate des jeweiligen Systems verwenden (50 Hz für PAL-Spiele zum Beispiel), damit es keine Probleme beim Frame-Pacing gibt.
5. Shader sparsam einsetzen
CRT-Shader sehen klasse aus, keine Frage. Nur kosten sie GPU-Zeit, und das kann sich direkt in Latenz niederschlagen:
- Lieber leichte Shader-Presets wie “crt-easymode” statt aufwendiger Multi-Pass-Shader.
- An einem echten CRT-Bildschirm brauchst du sowieso keinen Scanline-Shader, den erzeugt das Gerät ja von Haus aus. Weglassen spart also direkt Leistung und Latenz, ganz ohne Kompromiss bei der Optik.
Praktischer Test: So misst du deinen Fortschritt
Ein simpler Lag-Test mit einer Kamera, die in 120 fps Zeitlupe filmt, und einem Eingabe-Testprogramm (zum Beispiel einer “Lag Tester”-ROM für NES oder SNES) zeigt dir ganz objektiv, wie viele Frames zwischen Knopfdruck und Bildreaktion vergehen. Als Zielwert gelten 1 bis 2 Frames, das kommt der Originalhardware schon ziemlich nahe.
Fazit
Ein latenzarmes Raspberry-Pi-CRT-Setup fällt einem nicht einfach so zu, dafür reicht keine einzelne Einstellung. Es ist das Zusammenspiel aus Run-Ahead, sauberer Videoausgabe, kabelgebundenen Controllern und zurückhaltendem Shader-Einsatz, das am Ende den Unterschied macht. Wer diese Stellschrauben konsequent kombiniert, kommt dem Gefühl der Originalhardware erstaunlich nahe, und aus dem Pi wird plötzlich ein echtes Arcade-Erlebnis, nicht bloß eine Emulation davon.