Hallo Besucher, der Thread wurde 12k mal aufgerufen und enthält 58 Antworten

letzter Beitrag von Retro-Nerd am

Emulatoren und Latenz

  • Wenn ich mit Tastatur spiele, hab ich fast null spürbare Latenz, egal in welchem Emulator. Erst mit Joystick wird das spürbar -

    weiß nicht ob das noch so ist aber ich dachte Tastatur läuft über Interrupt und Joystick wohl über Polling. Da aber heutige USB Tastaturen auch nur noch HIDs sind kann das natürlich inzwischen schon ganz anders aussehen. Es gibt ja noch Gamer Tastaturen mit PS/2 Anschluß, die sollen USB Latenz umgehen. Passen nur an entsprechenden Gamer Boards mit PS/2 ;)

  • Hmm, in der Theorie laufen alle Standard-USB HIDs (Human Interface Device) mit 125 Hz Abfragefrequenz in den Standardeinstellungen (also Tastaturen, Standard-Mäuse, USB-Joypads). Unter der Voraussetzung, dass man Zugriff auf die USB-Firmware in dem Gerät hat, z.B wenn man den Joystick-USB Adapter selber programmieren kann, kann man die Abfragefrequenz auch ohne Probleme bis auf 500 Hz vom Gerät her verändern. Alles darüber braucht AFAIK braucht einen speziellen Treiber unter Windows (z.B. Razor-Gaming Mäuse mit 1000Hz etc.), das kann sich aber unter Windows 7/8/10 geändert haben.


    In dem Fall vom Competition Pro USB von SpeedLink, wird der Joystick zwar eigentlich auch mit 125 Hz abgefragt (steht wenigstens im USB Device Descriptor), allerdings ist die Firmware so schlecht, dass sie nur alle 80ms Veränderungen meldet, also nur auf jede 10. Abfrage mit den Änderungen. Aus welchem Grund auch immer X( ? Deshalb ist ja auch das Dauerfeuer sowas von unbrauchbar ... naja, wie der Joystick bei allen Spielen die schnelle Reaktionen und/oder Bewegungen abverlangen.


    Ich hatte auch mal einen USB-Playstation-Pad-Adapter ... der lag bei ca. 60 Hz Abfragefrequenz ... Der hatte also auch nicht die 125 Hz gehabt.

  • Wie gesagt, ich merke eine Latzenz bei der Reaktion was Spielen angeht (Insbesondere benannte J&R GAmes). Und am Schirm lags es bei mir nicht, ich habe das auf verschieden Rechnern mit diversen Schirmen getestet.
    Es fällt die meisten nicht auf weil sie nicht soviel zocken auf die Orignalgeräten nehme ich an. Genau wegen diesen Umstand mit der Verzögerung beim Joystick habe ich damals das Emulator Ding sein lassen und bin wieder zur Originalhardware zurück.

    Vielleicht kannst du mal ausprobieren ob der LAG am Joystick Treiber oder an der Emulation selbst liegt?
    Also USB Joystick vs. Keyboard

  • Ja, das stimmt, die maximale Abfragefrequenz bei PS/2 sind 200Hz. IIRC lag die Standardfrequenz bei 60Hz, da gab es früher verschiedene Tweak Programme für Windows 9X. Und unter Windows 2000/XP konnte man sogar im System-Treiber die Abfrage-Frequenz einstellen. Ich glaube, die möglichen Abfrage-Frequenzen lagen bei 200/150/100/80/60 Hz oder so ähnlich. Die Frequenz bei USB-Geräten lässt sich in 1ms Schritten einstellen. Das ist schon alles so lange her, ich hoffe, das ist alles so halbwegs richtig.

  • PS/2 ist natürlich besser. Hatte ich gestern mal mit den Pinball Spielen in der neuen WinUAE Version mit der Tastatur getestet. Das ist schon verdammt flüssig. Spiele mit USB Tastatur/Pad sind dann zwar auch noch recht flüssig, aber einen Tick langsamer. Aber entscheidend ist hier auch diese Beam Race/Frame Slice Technik, damit es trotz aktivierten Vsync keinen extra Lag mehr gibt. Der herkömmliche Standard Vsync fügt mit Sicherheit 20ms zusätzlich hinzu.

  • PS/2 ist natürlich besser. Hatte ich gestern mal mit den Pinball Spielen in der neuen WinUAE Version mit der Tastatur getestet. Das ist schon verdammt flüssig. Spiele mit USB Tastatur/Pad sind dann zwar auch noch recht flüssig, aber einen Tick langsamer. Aber entscheidend ist hier auch diese Beam Race/Frame Slice Technik, damit es trotz aktivierten Vsync keinen extra Lag mehr gibt. Der herkömmliche Standard Vsync fügt mit Sicherheit 20ms zusätzlich hinzu.

    Warum ist PS/2 besser? Kann man das messen oder ist das eher gefühlt so?


    Was ist mit den sogenannten Gaming Tastaturen über USB, die ja angeblich (habe auf die Schnelle keine Quelle gefunden) auch bis zu 1000 Hz abfragen sollen?


    Kann aber natürich so sein, dass du da Recht hast, manchmal sollte man sich auf das Gefühl verlassen. Vor allem, wenn man den direkten Vergleich hat.

  • So eine Gaming Tastatur habe ich nicht. Habe zusätzlich mit meinen USB Gamepads verglichen. Wenn ich die Flippers per PS/2 Tastatur extrem schnell drücke bleiben die immer am sichtbaren Anschlag nach oben. Per USB Pad sieht man bei extrem schnellem drücken der Buttons, das die Flippers teilweise nicht ganz nach oben ausschlagen. Kann aber auch daran liegen, das die USB Pad (u.a. ein Sega Saturn USB 1:1 Nachbau von Sega selbst und diverse 8bitdo Bluetooth Pads) eben auch nicht schnell genug sind.


    Gibt es da brauchbare Windows Software, um die Pollingrate bei USB Joyads mal relativ exakt messen zu können? Hatte da nur mal was für Mäuse gefunden und die Mausbewegung dann per Joy2Key auf das Joypad gelegt. Keine Ahnung, wie exakt das dann wäre.

  • Ja, das kann sein, mein Playstation Joypad USB Adapter wurde eben auch nur mit 60 Hz abgefragt.


    zwar etwas OT: Aber die Latenz bei Amiga-Mäuse war übrigens unschlagbar gut, da die Signale nicht in der Maus verarbeitet wurden sondern direkt im Amiga (Paula). Das hatte zwar theoretisch den Nachteil, dass der Zähler im Amiga übergelaufen ist bei sehr empfindlichen Mäusen, aber man konnte ja auch so oft abfragen wie man mochte bzw. so oft wie man brauchte :)

  • Dieser Mouse Rate Checker, und die Mausrichtungen per JoytoKey auf das D-Pad gelegt, zeigen mir auch nur knapp 60-70Hz an. Das ist aber enttäuschend. Die Hz Rate der gedrückten Joypad Buttons läßt sich damit leider nicht abfragen.

    Wenn du das testen möchtest, ich habe das bei dem Competition Pro USB damals über ein USB-Sniffer gemessen. Dabei ist eben raus gekommen, dass er nur alle 80ms die Veränderungen überträgt.


    Bei einigen USB-Geräten überträgt er ständig den aktuellen Zustand, bei einigen Geräten nur bei Veränderung.


    Ich hatte zwar früher andere Tools, deshalb ohne Gewähr, evtl. so was hier: https://freeusbanalyzer.com/ Das ist leider etwas eingeschränkt und man muss offenbar Geld für die Vollversion ausgeben.


    Oder der Standard Netzwerk Sniffer (WireShark): https://wiki.wireshark.org/CaptureSetup/USB mit http://desowin.org/usbpcap/

  • Hiermit kann man die Tastatur testen. Die Verzögerung der PS/2 Tastatur habe ich in Windows 10 auf kurz gestellt, die Wiederholrate auf hoch. 20ms ist das schnellste, was ich hinbekomme. Mein Logitech F310 Gamepad (USB per Kabel) schafft so bei drücktem Button (auch per Joy2Key belegt) 10ms. Da ist aber schon recht ordentlich. Naja, ist auch keine gute PS/2 Tastatur. Mit besserer Mechanik wäre da wohl auch mehr drin.


    http://blog.seethis.link/scan-rate-estimator/


    Aber um mal wieder On-Topic zu kommen. Was WinUAE da jetzt mit dem aktivierten Vsync macht wird wohl bald auch in anderen Emulatoren zu sehen sein. MAME z.B.

  • Nö, es sei denn du hättest eine Gaming Tastatur, wo man tatsächlich in extra Software noch die 1000Hz einstellen kann. Für die PS/2 Tastaturen in Windows ist 5 Millisekunden/200Hz ja das absolute Minimum der Verzögerung.



    Zitat

    Mit der Technik wie auf der Seite beschrieben (flicking the edge of a keycap) schaffe ich 1ms. Das kann doch nicht stimmen, oder?

    Wie schaffst du denn da 1ms? Wenn ich die Taste nur streife schaffe ich in der Tat 10ms. Dann ist aber echt Schluß.


    edit: Ok, hast recht. 2ms schaffe ich da auch. Keine Ahnung, ob das so Ok ist. Da wird nur eine mechanische von Cherry als Beispiel genannt, mit 5ms.

  • hmm, cooles Tool :)


    Gut um mal auf die Schnelle zu sehen, wie schnell man dürcken kann.


    Aber so wirklich zuverlässig scheint es nicht zu sein ... Bei wilden Rumdrücken mehrerer Tasten auf meiner Mac-Tastatur (Firefox 60), kam mindestens einmal 0ms raus. Gut, möglicherweise liegt das auch an dem Drücken von mehr als 6 Tasten. Standard USB-Keyboards übertragen AFAIK nur maximal 6 Tasten pro Frame. Aber evtl. lag es auch an der Kombination (qwsa), dass ja durchaus problematisch abzufragen ist ... selbst am C64. Das Standard C64 Rom hat da ja auch seine Probleme mit der Kombination. Aber angeblich lässt sich das sogar mit einer nicht Standard Tastatur Abfrage am C64 testen welche Tasten da genau gedrückt worden sind. Beim Amiga 1000 soll angeblich bei qws noch das "a" erschienen sein. IIRC stand sowas im Amiga-Intern Buch.


    Außerdem muss man hier bedenken, dass der Browser und das darunter liegende System evtl. auch noch eine Latenz hat.

  • Nö, es sei denn du hättest eine Gaming Tastatur, wo man tatsächlich in extra Software noch die 1000Hz einstellen kann.

    Cherry-Tastatur von 1993, noch ohne Windows-Tasten. Feiert dieses Jahr ihr 25jähriges (wenn die kontaktunfreudige Leertaste noch so lange durchhält, bzw. meine Geduld mit ihr...). :)

  • Die RetroArch Entwickler haben auch was neues zum Thema Input Lag. In der folgenden 1.7.2 Version ist es wohl möglich, den spiele-internen Lag zu entfernen. Wobei z.B. Super Mario Bros 1 (NES) um die 1 Frame lag aufweist und Super Mario World (SNES) sogar 2 Frames. Bin mal gespannt, wie gut das dann wirklich funktioniert.


    https://www.libretro.com/index…ough-new-runahead-method/

  • Zitat

    How to check the amount of lag frames a game has
    RetroArch has the ability to pause a core and advance it frame by frame. Perform the following steps to determine the amount of lag frames of a game:

    • Pause emulation (press ‘p’ button on keyboard).
    • Press and hold the jump button on the controller.
    • Advance emulation frame by frame (press ‘k’ button on keyboard) until the character jumps.

    The number of k presses before you get a reaction should be the number of lag frames you can safely remove with run ahead.


    Wahnsinn. Das funktioniert perfekt, der spiele-interne Lag ist einfach verschwunden. Gerade mal mit Super Mario World (2fps), Aladdin Mega Drive (1fps) und Jackie Chan Action Kung Fu PC-Engine (1fps) gestestet. :thumbsup:


    https://www.libretro.com/index.php/retroarch-1-7-2-released/