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

letzter Beitrag von c64user am

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

  • Erinnert mich an eine Folge vom Computerclub wo eine Druckerschnittstelle über den Bildschirm realisiert wurde.


    Auf der Röhre waren Fototransistoren an bestimmten Stellen aufgeklebt.
    Die Daten wurden über schwarz/weiss blinkende Kästchen übertragen die von den Fotosensoren abgegriffen wurden.


    Jedenfalls war das ein ziemlicher Kabelverhau. :thumbup: .
    Würde gerne die Folge nochmal sehen.



    So könnte man die Latenz auch messen:


    Messgerät gibt Signal auf die Joystickbuchse (FIre)
    und misst die Zeit bis das obere linke Kästchen der C64 Anzeige weiß wird.

  • Oder eine externe LED direkt mit dem Joystickknopf verbinden und via Button den Bildschirm weiß färben lassen. Die LED an den Fernseher halten und via Highspeedkamera die Differenz ermitteln.

    siehe Beitrag #13, genau das hab ich ja gemacht, nur halt nur mit 100 statt 1000 FPS

  • (Disclaimer: Nur schnell in der Mittagspause im Monitor zusammengeschustert, keine Funktionsgarantie, Denkfehler möglich, ... :) )


    Wer die reine Bildschirm-Latenz ausmessen will, kann das direkt am C64 mit einem Lichtgriffel machen. Einen Ersatz-Lichtgriffel kann man sich aus einer Fotodiode bzw. einem Fototransistor und einem Widerstand selbst bauen, siehe https://www.c64-wiki.de/wiki/Lightpen .


    Wenn man dann den Wert des Anzeigesystems alleine kennt, kann man mit den anderen hier skizzierten Methoden zur Ermittlung der Gesamtlatenz auf die Latenz des reinen Eingabesystems schließen. Am Emulator müsste man damit die Gesamtlatenz messen können.


    Anleitung:


    Den Lichtgriffel an Port 1 anschließen, in die Mitte des Bildschirmes halten, Programm starten mit SYS 49152. Der Bildschirm ist zuerst schwarz und wird nach ca. einer Sekunde weiß. Sobald der Farbwechselimpuls vom Lichtgriffel registriert wird, werden zwei Zeilen mit je einem Wert ausgegeben, mit folgender Bedeutung:

    • Unterer Wert: (10000 minus Anzahl Zyklen) in Mikrosekunden, bis der Wechsel von schwarz auf weiß registriert wird.
    • Oberer Wert: Wenn der untere Wert überläuft (> 10000 Zyklen entspricht > 10 ms), dann gibt der obere Wert die Anzahl der Überläufe an, entspricht also (10000 minus Anzahl Hundertstelsekunden).

    Man kann statt des Lichtgriffels zum Testen die Leertaste oder den Feuerknopf des Joysticks in Port 1 verwenden.


    Beispiel1 :


    Wenn man also die Leertaste gleich nach dem Programmstart gedrückt hält, erscheint:


    10000
    9981


    Der untere Wert ist 9981 -> 10000 - 9981 = 19 -> 19 Takte Verzögerung.
    Der obere Wert ist 10000 -> kein Überlauf -> Wirklich nur 19 Takte.


    Die Verzögerung ist also 19 µs.
    Genauer als diese 19 µs wird es nicht, das ist die Ungenauigkeit des Programms selbst, das ja etwas Rechenzeit benötigt. Und ja, es sind nicht 19 µs, weil der Takt nicht genau 1 MHz ist, sondern nur 985 kHz, das ist ein Fehler von 1,5 % ... aber das reicht mir. Wer es noch genauer will, muss halt den Fehler rausrechnen. :P


    Beispiel 2:


    9998
    7453


    Der untere Wert ist 7453 -> 10000 - 7453 = 2457 -> 2457 µs = 2,457 ms.
    Der obere Wert ist 9452 -> 10000 - 9998 = -> 2 Überläufe = 2 Hunderstel = 0,02 s = 20 ms dazuzählen.
    Die Verzögerung ist also ca. 22,5 ms.


    Ja, man könnte die Ausgabe noch verschönern :rolleyes: ... ich bin kein guter Assemblerprogrammierer (sieht man vermutlich) und habe lange nichts mehr geschrieben, vielleicht opfert sich wer. :D

    Dateien

    • latency.asm

      (2,29 kB, 10 Mal heruntergeladen, zuletzt: )
    • latency-c000.prg

      (99 Byte, 9 Mal heruntergeladen, zuletzt: )

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • So, es hat mir keine Ruhe gelassen :D ... die Ausgabe erfolgt nun direkt in gemessenen Mikrosekunden, und zwar korrigiert um die paar, die die Routine braucht. Mikrosekunden sind zwar bei größeren Werten dann auch irgendwann unhandlich, aber zumindest besser als das Rumgerechne von vorher :rolleyes: ... der 1,5 %-Fehler wegen der Taktfrequenz ist immer noch drinnen, da bin ich zu faul (blöd) dafür. :*


    Und so sieht das aus, wenn man beim ersten Mal gleich die Leertaste drückt und beim zweiten Mal per "einundzwanzig" ungefähr eine Sekunde wartet:



    Einen Bug habe ich grad auch noch behoben, der erste Start nach dem Laden auf einem frisch eingeschalteten/resetteten Rechner hat Blödsinn angezeigt (Timer-Init falsch).

    Dateien

    • latency1.asm

      (3,03 kB, 13 Mal heruntergeladen, zuletzt: )
    • latency1-c000.prg

      (116 Byte, 18 Mal heruntergeladen, zuletzt: )

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • Tja, genau vier Monate später bin ich doch tatsächlich dazu gekommen, mein Programm mal "live" auszuprobieren. :D Ich hab nämlich endlich wieder mal Bauteile bestellt und daran gedacht, einen Fototransistor mitzubestellen.


    Vorneweg: Die Schaltung aus dem Wiki ist erstens falsch (falscher Transistor eingezeichnet - PNP statt NPN) und funktioniert zweitens bei meinem TFT nicht, weil "hell" einfach zu wenig hell für den Fototransistor ist. Ich musste daher die Schaltung für meinen Bildschirm etwas anpassen. Was macht der Inscheniör, wenn ein Transistor zu wenig Verstärkung liefert? Richtig, er erinnert sich an Herrn Darlington. Damit hatte ich dann genug Verstärkung ... so viel, dass der Fototransistor immer geleitet hat ... :tischkante:
    Heraus kam das:



    Mit dem Potentiometer kann man die Verstärkung so einstellen, dass der Fototransistor wirklich nur dann leitet, wenn der Bildschirm weiß ist und bei schwarzem Schirm keine Leerzeichen getippt werden. Vielleicht muss man mit dem Wert noch etwas experimentieren und z. B. 100 kOhm ausprobieren.


    Wenn man nun das obige Programm nach $C000 lädt und nach einem "NEW" dann diesen BASIC-Einzeiler eintippt:

    Shell-Script
    1. 10 POKE 53280,0:POKE 53281,0:SYS 49152:GOTO 10

    kann man unendlich oft hintereinander die Latenz seines Schirms (genauer: seines Anzeigesystems) messen. Mein System aus Grand Video Console und Acer-VGA-Monitor hat z. B. gemittelt eine Latenz von ca. 75 ms.


    [EDIT]


    Wieder was zum Streichen von der To-Do-List ... läuft! :D


    [/EDIT]

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • Leider kann ich den Beitrag nicht mehr editieren ... ich bin grad draufgekommen, dass ich gestern Nacht noch einen Blödsinn zusammengeschmiert habe ... :(


    Hier die korrigierte Fassung:



    Das entspricht jetzt dem, was ich gestern aufgebaut habe (und auch eher einer Darlington.Schaltung :rolleyes: ...)

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • Hier noch meine Ergebnisse als Anhang. Also ich für mich kann da schon den Unterschied relativ deutlich erkennen.


    Danke. Aber sehe ich das richtig, dass der C64 am Original-Monitor noch fehlt?
    Das wäre auch interessant, weil auch der gute LCD-TV den ich getestet habe eine klare Latenz hat.


    Bin aber schon gespannt auf die verschiedenen Tests...

  • Hmmm ... bisher hat das leider niemand verwendet, um seine Röhre auszumessen. Sehr schade! :(

    Mich würde das nämlich auch interessieren, ich hab aber leine Röhre mehr. :rolleyes:


    [EDIT]


    Stimmt ja gar nicht, ich hab ja noch genau eine .... :platsch: ... nämlich die hier gezeigte: C64 Farbprobleme?

    Das ist ein Grünmonitor von Philips, Modell BM-7502 - Latenz gemessen am oberen Rand 2,5 ms, am unteren Rand 14-17 ms, je nachdem, wie sauber ich den Lightpen hinhalte.


    [/EDIT]

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


    Einmal editiert, zuletzt von kinzi ()

  • kann man unendlich oft hintereinander die Latenz seines Schirms (genauer: seines Anzeigesystems) messen. Mein System aus Grand Video Console und Acer-VGA-Monitor hat z. B. gemittelt eine Latenz von ca. 75 ms.

    Das ist ein Grünmonitor von Philips, Modell BM-7502 - Latenz gemessen am oberen Rand 2,5 ms, am unteren Rand 14-17 ms, je nachdem, wie sauber ich den Lightpen hinhalte.

    Commodore 1901-Monitor:

    Am oberen Rand des Textfensters 5,6 ms, am unteren Rand 18,1 ms.

  • Soweit zu erwarten. dass das rascher geht. :) Analog ist eben "direkt".

    Danke dafür! :thumbsup:


    Die GVC hinkt also drei Frames hinterherr. Nun ja, für meine Zwecke reicht es. WIMRE sind 100 bis 200 ms Reaktionszeit für Auge und Hirn normal, was hier also ganz grob zu 200 bis 300 ms wird. Wäre mal interessant, was Framemeister & Co daraus machen. Oder TC64 und U64.

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • Ich leider nicht aber ich verwende https://www.lemon64.com/forum/viewtopic.php?t=54592 zum Messen (kein Input Lag an der alten Metz Glotze).