Hallo Besucher, der Thread wurde 6,6k mal aufgerufen und enthält 34 Antworten

letzter Beitrag von c64user am

Latenzen - Emulatoren vs Original, Röhre vs heutige Bildschirme

  • Hallo Retro-Freunde,


    ich habe ein kleines Programm geschrieben, welches die Latenzen misst. Edit: indirekt, es misst in erster Linie die Reaktion und Latenz, war von mir nicht deutlich genug geschrieben


    Hier der Download Link zum Programm, wer es mal testen mag, ist aber noch Alpha ^^ :
    https://svenlettau.de/dl/delayTracer64.prg
    Joystick-Button im Port 2 wird abgefragt.


    Einen kleinen Dank noch in die Runde, da ich auch hier im Forum einiges an Infos gefunden habe, die mich wieder schnell haben in die Assembler-Entwicklung einsteigen lassen. Ist ja gute 20 Jahre her.


    Hintergrund und erste Messungen erfahrt ihr in meinem aktuellen Video bei Youtube (Kanal siehe meinem Profil oder nach meinem Nickname suchen).
    Im Prinzip wollte ich eine Möglichkeit haben, die Latenzen von Emulatoren, aber auch Hardware (z.B. usb-Joystick) greifbar zu bekommen. Weil es gibt ja immer mal wieder Diskussionen bezüglich Bildschirmwahl, welcher Joystick ist sinnvoll usw.
    Ich wäre sehr interessiert an Messungen an einer Röhre, wer mal seine Reaktion vergleichen möchte, gerne die Ergebnisse posten.


    Schöne Grüße,
    Sven

  • Nette Idee. Aber damit testest du wohl eher die eigene Reaktionsfähigkeit. Wenn ich wirklich auf den Punkt warte sind ca. 120ms der beste Wert. Und so eine hohe Latenz dürfte es mit einem normalen C64 an einer Röhre nicht geben. Wenn ich den Button dauerhaft drücke kommen immer 10ms raus. Per Emulator bekomme ich ähnliche Ergebnisse, was nicht wirklich sein kann.

  • Ja, damit misst man seine eigene Reaktionszeit. Die sollte bei vielen Werten sich aber irgendwo mitteln. Also die Latenz wird man indirekt erkennen können dadurch im Vergleich.
    Das man bei gedrücktem Button 10 ms bekommt, liegt daran, das ich im ersten Frame noch keine Zeitmessung mache. Hat mir den Code einfacher gemacht. Da aber kein Mensch unter 10 ms reagieren kann, ist das egal.

  • Das ist dann aber nicht die echte Latenz der Hardware,wenn man lediglich auf eine optische Vorgabe wartet. So kann man das Lag nur extrem grob abschätzen.


    Besser wäre es wie einige Emulatoren das machen. Pause drücken, dann Joypad Button drücken und gedrückt halten und danach Frame für Frame weiterschalten und schauen wann die Sprung Animation wirklich beginnt. Etwas verwirrend ist dabei, das Spiele generell ein einprogammiertes Input Lag haben. So kann es bei einigen Spielen 1-2 Frames länger dauern wie die Sprung Animation ausgeführt wird. Aber generell ist das eine legitime Methode. Weiß nur nicht, ob man sowas auch für den C64 zum Testen auf echter Hardware umsetzen könnte.


    Gibt ja noch die Video Highspeed Aufnahmen mit 240-1000 fps, aber da bin ich mir nicht so sicher ob die wirklich genau genug sind.

  • Nein, auch das nicht. Man kann letztlich nur präzise nach dem eigentlichen Input Ereignis (Button Druck, Richtung etc.) testen. Bei diesem "Geschicklichkeitstest" ist eine Verzögerung der eigenen Reflexe mit drin: Gelber Punkt taucht auf dem Bildschirm auf, erkennen, Button Druck. Das verwässert das Ergebnis deutlich. Da war der Latenz Test vom 8bit Guy beim seinem Video Review des C64 Mini schon genauer. Mit dem Keyboard Tastendruck und dem nachfolgenden Farbenwechsel optisch sichtbar.

  • Also ich finde, dass ist *der* richtige Ansatz um so eine Messung durchzuführen. Er misst nämlich genau das, was einen interessiert: wie wirkt sich die Hardware auf meinen Input am Joystick aus. Natürlich ist vorstellbar, dass noch gewisse eher psychologische Faktoren Einfluss nehmen (Größe des Bildschirms, Gefühl des Joysticks etc.), aber ich vermute dass dies eher vernachlässigbar sein dürfte.


    Top-Idee :thumbup: !


    Einziger Nachteil ist wohl, dass es eher unwahrscheinlich ist, dass jemand alle HW-Kombinationen auch dastehen hat, um vergleichbare Gesamtergebnisse liefern zu können. Vielleicht mal was für ein Treffen?

  • Am besten würde es natürlich gehen, wenn man den menschlichen Faktor eliminiert.


    Ich könnte mir vorstellen, dass man mit Hilfe eines Programms und einer Harware die Latenzen recht gut die ermitteln könnte. Aber dazu müsste man ein Programm schreiben(kann ich nicht), dass den Bildschirm zB. auf schwarz stellt und bei einem neuen Bildaufbau die Farbe weiß einstellt und die Zeit mit dem Programm misst bis der Joystickbutton gedrückt wurde. Auf der Hardwareseite könnte man einen Arduino programmieren, der einen Lichsensor auswertet und sobald sich das Signal auf Maximum ändert, den Joystickbutton „gedrückt“ ähnlich wie es beim Check64 gemacht wird. Damit könnte man recht genau reproduzierbar die Latenz messen. Nur sollte man den Ort des Sensors genau bedenken.

  • Ja, sowas gibt es tatsächlich schon. Am Button Auslöser wird eine Leuchtdiode mit angebracht. Die leuchtet dann auch, wenn der Button wirklich gedrückt wurde. Der Zeitraum bis zur ersten sichtbaren Veränderung auf dem Bildschirm ist dann das Lag. Wenn man das mit einer Highspeed Kamera in 1000fps abfilmt kann man das Lag bis auf die Millisekunde genau bestimmen.


    Denn beim menschlichen Faktor ist eines ganz sicher ungewiss:Wie schnell ist meine Reaktionszeit/Reflexzeit wirklich? Und das drücken des Buttons selbst ist ja auch nicht Teil des Input Lags. Schätze es dauert grob 40-80ms, bis ich nach der Sichtung des farbigen Kreises den Button auch auch wirklich gedrückt habe. Und sowas will man dabei ja nicht mitmessen.

  • Wie man es nimmt: wenn sich z.B. rausstellen würde, dass die Latenz im Rauschen der Reaktionszeit untergeht, ist sie ja eigentlich auch nur von akademischem Interesse. Was bei diesem Experiment rauskommt ist idealerweise ob die Latenz für einen Menschen am Joystick relevant unterschiedlich ist (was sie nach lettausofts Grafik tatsächlich zu sein scheint, was sich wiederum mit den gefühlten Erfahrungen der User deckt).

  • Ja, sowas gibt es tatsächlich schon. Am Button Auslöser wird eine Leuchtdiode mit angebracht. Die leuchtet dann auch, wenn der Button wirklich gedrückt wurde. Der Zeitraum bis zur ersten sichtbaren Veränderung auf dem Bildschirm ist dann das Lag. Wenn man das mit einer Highspeed Kamera in 1000fps abfilmt kann man das Lag bis auf die Millisekunde genau bestimmen.


    Denn beim menschlichen Faktor ist eines ganz sicher ungewiss:Wie schnell ist meine Reaktionszeit/Reflexzeit wirklich? Und das drücken des Buttons selbst ist ja auch nicht Teil des Input Lags. Schätze es dauert grob 40-80ms, bis ich nach der Sichtung des farbigen Kreises den Button auch auch wirklich gedrückt habe. Und sowas will man dabei ja nicht mitmessen.

    ich hab das mit dem Ultimate64 und dem C64 mini mal so gemacht:
    Ultimate64
    C64 mini
    allerdings nur mit 100 fps gefilmt :)

  • @Retro-Nerd
    Du hast recht, die Reaktion und Reflexe werden mit gemessen. Aber wenn die gleiche Person an unterschiedlichen Hardware-Kombinationen, Emulationen usw. testet, ergeben sich bei vielen Messungen ein Mittelwert, der in Relation gesetzt werden kann, siehe Bild aus meinem letzten Post. Und ich habe mehrfach wiederholt (immer jeweils 25 Werte) und erhalte recht konstante Mittelwerte (als ein Beispiel: Zeile 3 und 5 im Diagramm). Die Differenz ergibt die Latenz. Meine Frau hatte auch am C64 und am Emulator getestet, dort sah das Bild ähnlich aus, die Differenz war dort genauso erkennbar. Mag aber sein, das bei anderen die Reaktion zu stark schwanken, um eine Aussagekraft zu bekommen, aber die sind wahrscheinlich auch keine Fans von Spielen, wo es auf Reaktion drauf ankommt.


    Die Idee dahinter war/ist, nicht die Latenz auf exakte Zyklen zu messen, sondern nur die gefühlte Verzögerung erkennbar zu machen. Ein Beispiel, ich würde gerne mir den Competion Pro mit USB holen. Jetzt wird aber behauptet, der tut nicht richtig, da langsames usb. Wenn dem so ist, müsste das damit eigentlich sichtbar gemacht. Natürlich nicht im Sinne eines gerichtlichen Beweises, aber für einen selbst.


    Klar wäre eine Hardware-Lösung exakter, wobei aber auch hier noch einiges beachtet werden müsste oder vieles per Hand ermittelt werden müsste. Meine Lösung ist auch von nicht ganz so versierten einsetzbar.

  • Zitat

    Ich hab das mit dem Ultimate64 und dem C64 mini mal so gemacht:



    Ultimate64
    C64 mini
    allerdings nur mit 100 fps gefilmt


    Ja, netter Test. Und gut sichbar für alle. Immerhin auf 10ms genau, bei 100fps. Mit 8 Frames mußte man beim Mini schon rechnen. Ebenso, das das Firmware Update mit Input-Lag Minimierung nur ein Placebo war. Wobei man vom Framemeister Lag 1 Frame und mindestens 1 Frame vom verwendeten Monitor abziehen kann.



    Zitat

    Die Idee dahinter war/ist, nicht die Latenz auf exakte Zyklen zu messen, sondern nur die gefühlte Verzögerung erkennbar zu machen.


    Ja, schon klar. Aber so richtig greifbar wird das nur wenn es optisch auch sichtbar ist. Eben so, wie es der 8bitGuy im C64 Mini Test gemacht hatte.


  • Du musst ja nur "voll drauf halten" (Dauerfeuer) bei schwarzem Bildschirm. Dann blendest Du einen weißen Bildschirm ein und misst die Zeit zwischen Einblendung und Reaktion der Wumme. Die Frequenz der Knarre ist relevant. Sollten sich die beiden Signale der Lightgun nicht unabhängig abfragen lassen, geht es nicht.


    Edit: Ungefähr so. Der Auslöser/Trigger ist irrelevant. Die Lightgun ist quasi nur Messgerät.

  • Hmmm, könnte sogar klappen, wenn ich mir das durch den Kopf gehen lasse. Spielen wäre wahrscheinlich nicht möglich, aber für die Latenzmessung tatsächlich ein Versuch wert. Ist nicht zufällig jemand hier aus dem Rhein/Main Gebiet, der mir mal so eine Lightgun ausleihen könnte?