Hello, Guest the thread was called6.6k times and contains 165 replays

last post from AW182 at the

Eingabe Latenzen in Emulatoren

  • Okay, danke für die Info.


    Selbst diese 20ms sind schon in einigen Spielen spürbar, vor allem in denjenigen Games, die man seit der Kindheit immer wieder gespielt hat und ganz genau kennt, wie bei mir etwa das erwähnte "Microprose Soccer". Man merkt das dort dann auch, wenn man gegen die besten der CPU-gesteuerten Teams (Deutschland, Brasilien, Italien usw) spielt und ihnen den Ball abnehmen will und dazu in diese Spieler hineingrätscht. So ist es nun, selbst mit nur 1 Frame Runahead, schon ein bisschen leichter auf diese Art dann an den Ball zu kommen als vorher in den C64 Emulatoren, weil man dazu schnell reagieren muss und sich mit dem Ball dann immer schnell wegdrehen muss vom Gegner, damit der CPU-Spieler einem den Ball nicht gleich wieder abnimmt.


    Ich muss mal versuchen, noch ein bisschen an Speed irgendwo herauszuholen, sodass ich im performanten Modus auch mit 2Frames RunAhead noch die 50FPS in ALLEN Spielen habe. Bin ja nahe dran beispielsweise in "Microprose Soccer", es fehlen mir nur so um die 3, 4 Frames zu den vollen 50FPS. :)


    Was ich noch bemerkt habe - selbst wenn man den RunAhead so einstellt, wie man ihn haben will und dann die Einstellungen so speichert, scheint er, nach dem Schliessen und erneuten Öffnen des Denise dann wieder ausgeschaltet zu sein. Das sollte man vielleicht zukünftig abändern, dass diese Einstellungen gleich mit gespeichert werden.

  • Ach, warte lieber bis PiCiJi den Scanline basierten Renderer eingebaut hat. Dann sind 4-X Frames auch kein Thema mehr. Gerade nochmal Krakout, Henry's House, IK+, Bruce Lee und H.E.R.O. getestet. Läuft alles bestens. :)

    Haste auch wieder recht. Ich freu mich schon auf die nächste Stufe Qualitätsemulation :)

  • Ich hab mit ausreichend Audiopuffer (um die 45ms) keine Soundknackser mehr bei akkurat und 4 Frames, kommt auf 49 FPS. Den einen Frame will ich noch irgendwo rauskitzeln.

    Für bessere Audio Latenzen unter Windows Wasapi oder XAudio verwenden.


    Es ist wirklich wichtig, das die Shader unbedingt mit directX funktionieren müssen und/oder Vulkan. OpenGL performt z.B. mit meiner Low Budget Geforce 1030 TI für 70 € nicht so gut wie in directX.

    • der Emu läuft in directX 5 FPS schneller
    • directX Vsync ist deutlich präziser. Man sieht das in der Anzeige des Audio Puffer mit zugeschaltetem DRC. Der Puffer schwankt deutlich weniger.
    • Dadurch lassen sich niedrigere Audio Latenzen unter directX einstellen
    • openGL's Vsync bekommt Probleme, wenn die CPU stark unter Last steht. verursache ich mit runAhead zuviel Last stottert ab und an das Vsync. Um sicher zugehen, das es kein DRC Problem ist, habe ich DRC und audio sync ausgeschalten. Das daraus resultierende Knacksen ist für den Test unwichtig. Video müsste dauerhaft butterweich laufen, tut es aber nicht, wenn durch runAhead zuviel Last entsteht, man also knapp an der PAL Mindest Geschwindigkeit dran ist. DirectX läuft hier bei mir ohne Probleme.

    Was ich noch bemerkt habe - selbst wenn man den RunAhead so einstellt, wie man ihn haben will und dann die Einstellungen so speichert, scheint er, nach dem Schliessen und erneuten Öffnen des Denise dann wieder ausgeschaltet zu sein. Das sollte man vielleicht zukünftig abändern, dass diese Einstellungen gleich mit gespeichert werden.

    wird beim Reset oder auch Neu Öffnen des Emulators erstmal immer auf RunAhead = 0 Frames (also aus) zurückgesetzt. Da die Einstellung aktuell nur bei Hotkeys zur Verfügung steht, befürchte ich das User vergessen das es aktiv ist und sich wundern wo die Performance verbraten wird. Ich werde neben den Hotkeys noch eine sichtbare Option in der Emulator UI bereitstellen und dann merkt er sich die Einstellung dauerhaft ähnlich wie bei Bsnes.

    Wo schaltet man jetzt eigentlich, zusätzlich zum "Run Ahead", das "Just in Time Polling" ein und aus in der neuesten Denise Version ?

    ist aktuell im Emulator deaktiviert um die Ergebnisse nicht zu verfälschen. Es wird auch hier später per Option zu und abschaltbar sein. Ich bin mir nicht ganz sicher ob JIT Polling immer eine Bereicherung darstellt.

    Es kann dafür sorgen, dass beim RunAhead ein Frame weniger eingestellt werden brauch mit dem Vorteil das ein weiteres RunAhead Frame 1000x teurer ist als ein zusätzlich gewonnenes Frame per JIT Polling.

    Auf der anderen Seite befürchte ich das JIT schwankt zwischen ein Frame verbessert und eben nicht. Ich kann nicht messen wie stark die Schwankung ist und wie diese sich subjektiv auswirkt.

    Aus diesem Grund wird JIT Polling später wie runAhead auch als Option verfügbar sein, aktuell wie gesagt aus.

  • Eine Sache fiel mir noch auf und zwar hab ich folgendes ausprobiert im Denise mit der neuen RunAhead Funktion:


    - "links" und "rechts" lenken im Emulator auf einen Joystick-Button des USB Competition Pro Anniversary gemappt


    - dann "Activision Decathlon" gestartet und einige Mal mit dem Joystick-Dauerfeuer den 100-Meter-Lauf absolviert (man kann schon vor dem Startschuss den Knopf immer gedrückt halten, es gibt keinen Frühstart in dem Spiel, sodass durch unterschiedlich schnelle Startzeiten hier nichts verfälscht werden kann)


    - ohne RunAhead Funktion und mit 1 Frame RunAhead läuft er genau die gleiche Zeit


    - bei 2 Frames RunAhead geht der Speedbalken dann im akkuraten Modus ordentlich hoch, während er im performanten Modus mit 2 Frames weiterhin immernoch genauso schnell läuft wie ohne RunAhead. Ist das normal? Hat mich etwas gewundert, dass es da zwischen den beiden Modi Abweichungen in der Schnelligkeit zu geben scheint, obwohl die Frame-Anzahl (2 Frames) gleich eingestellt ist


    - dann hab ich zum weiteren Testen noch dieses kleine Tool/Game namens "Smack" ausprobiert

    https://csdb.dk/release/?id=173429

    Es zeigt in einer Zeit an, wielange man gebraucht hat, eine gewisse Strecke lang den Button ganz schnell zu drücken. Da muss man dann nichts ummappen im Emulator, sondern kann es gleich mit dem Joystick-Dauerfeuer starten und auch hier ähnliche Ergebnisse wie bei "Decathlon"


    - nimmt man den akkuraten Modus mit 2 Frames RunAhead ist man deutlich schneller als ohne oder mit nur 1 Frame RunAhead, während es beim performanten Modus keinen Unterschied zu machen scheint. Im performanten Modus bekommt man erst eine schnellere Zeit, wenn man auf 5 Frames RunAhead oder noch mehr geht (hab ich dann auf meinem PC aber keinen 50FPS Fullspeed mehr)


    Die beiden Modi (akkurat und performant) scheinen, bei gleich eingestellter Frame-Zahl, merklich voneinander abzuweichen, in der Stärke der Lag-Einsparung. Kann das sein?


    Dass man bei 1 Frame RunAhead hier keine besseren Zeiten bekommt als ohne RunAhead liegt wohl daran, dass das Joystick-Dauerfeuer hier nicht schnell genug ist, um das zu verdeutlichen. Der Emu schafft es dann auch ohne RunAhead all dessen Eingaben (die ja auf die links/rechts Lenkbewegungen umgemappt sind) zu verarbeiten. Ich vermute, bei einem schnelleren Dauerfeuer, einem mit etwa 1 Schuss per Frame, würde man dann auch schon zwischen 0 Frames und 1 Frame RunAhead einen Unterschied in den gelaufenen Zeiten sehen. Sollte wohl so sein, oder?

  • Die beiden Modi (akkurat und performant) scheinen, bei gleich eingestellter Frame-Zahl, merklich voneinander abzuweichen, in der Stärke der Lag-Einsparung. Kann das sein?

    Die Lag Einsparung ist bei beiden Modis gleich. nur die fehlende Kollision Emulation macht den Unterschied. Vielleicht fragt das Spiel dies ab, wofür auch immer. Ich weiß nicht, sind Spiele wo man schnell irgendwas immer wieder drücken muss ein Thema für runAhead? Es geht doch bei runAhead darum schneller auf ein Ereignis reagieren zu können. Ich sehe den Gegner und drücke die Schuss Taste.

    Wenn aber ohne visuelle Bestätigung einfach ein Button immer wieder gehammert wird ... oder dieses typische schnell links und rechts hin her wechseln ohne das man überhaupt auf den Bildschirm schauen muss

  • War wohl alles schon optimal eingestellt, bin also am Limit.

  • Das mit OpenGL+Shader und Runahead ist mir schon aufgefallen. Zumindestens an meinem UHD TV, am PC Monitor bekomme ich das 100% flüssig (keine Knackser oder Mikroruckler). Die RetroArch Shader Unterstützung (und damit auch alle DX und Vulkan Shader) baust du ja irgendwann später noch ein, oder? Derzeit gibt es meinen Lieblingshader leider nur im OpenGL Format.

  • Die RetroArch Shader Unterstützung (und damit auch alle DX und Vulkan Shader) baust du ja irgendwann später noch ein, oder? Derzeit gibt es meinen Lieblingshader leider nur im OpenGL Format.

    Dein Lieblingsshader gibt es nur als GLSL Shader und keine SLANG/SPIRV Variante, so dass du Vulkan als Treiber unter RetroArch verwenden kannst? oder wie meinst du das ? Meine Hoffnung ist, das in Zukunft niemand mehr openGL wirklich braucht, bestenfalls für ältere Systeme.

  • Naja, das war ein spezieller im Bsnes Style, OpenGL. Da du derzeit RetroArch Shader noch nicht unterstützt kann ich da ja auch keinen aus diesem Paket davon nehmen. Oder kann man einen beliebigen RetroArch Shader nehmen und in das BSnes Format konvertieren, so das der Out of the Box in Denise geht?


    Wird wohl nicht gehen: Denn die interessanten Shader in RetroArch, wie CRT-Guest-DrVenom sind alles 10-12x Multishader. Das mußt du sicher erst in Denise einbauen.

  • Naja, das war ein spezieller im Bsnes Style, OpenGL. Da du derzeit RetroArch Shader noch nicht unterstützt kann ich da ja auch keinen aus diesem Paket davon nehmen. Oder kann man einen beliebigen RetroArch Shader nehmen und in das BSnes Format konvertieren, so das der Out of the Box in Denise geht?

    ok jetzt verstehe ich was du meinst.

    Man müsste jeden Shader manuell umbauen, das ist viel zu aufwendig.

    Besser ist das RetroArch Format in Denise zu unterstützen und dann Vulkan als Treiber zu verwenden. Das muss ich alles noch bauen.

    Was mich wundert ist, das Bsnes immer noch openGL verwendet. Nur weil die Grund Features höhere Prio für mich haben, liegt Vulkan auf Eis. Die Grund Features in Bsnes hingegen sind seit Jahren fertig.

  • Nö, Bnes kann natürlich auch DirectX. Nur geht dieser Trinitron Shader, wie du ihn auch im Denise Paket mit drin hast, technisch nicht einfach so nach DirectX zu portieren (wäre dann featuremäßig und optisch limitierter). Hatte mir der Ersteller zumindestens so gesagt. Deshalb ist der als Single Shader im OpenGL Format.


    edit: Habe aber im moment noch ein Möglichkeit über Reshade gefunden, die CRT optisch noch akzeptabel ist. Damit rennt Denise in DirectX auch am UHD TV in 3 Frames Runahead perfekt. :D

  • Nö, Bnes kann natürlich auch DirectX.

    ja aber nur directX9 und der hat kein Shader support in bsnes. Denise hat auch nur directX9 mit Unterstützung der FX Shader. Jedoch gibt es nur wenige Shader in diesem Format, z.B. ein einzelner Scanline Shader.


    Ich meine um die SPIRV Shader (Vulkan) nach directX konvertiert zu bekommen, ist directX11 Minimum.

  • Die beiden Modi (akkurat und performant) scheinen, bei gleich eingestellter Frame-Zahl, merklich voneinander abzuweichen, in der Stärke der Lag-Einsparung. Kann das sein?

    Die Lag Einsparung ist bei beiden Modis gleich. nur die fehlende Kollision Emulation macht den Unterschied. Vielleicht fragt das Spiel dies ab, wofür auch immer.


    Hm, möglich. Aber schon etwas merkwürdig, wenn Sachen wie Spritekollisionen bei derart Rüttelspielen eine Rolle spielen würden. Aber eigentlich ja auch nicht so wichtig, dass es sich hier in den Rüttelspielen jetzt unterschiedlich auswirkt im akkuraten und performanten Modus, Hauptsache es funktioniert, dass der Lag verkleinert wird durch die RunAhead Funktion und das klappt ja. Aber rein interessehalber wundert mich das schon, warum es hier diesen Unterschied gibt.


    Ich weiß nicht, sind Spiele wo man schnell irgendwas immer wieder drücken muss ein Thema für runAhead? Es geht doch bei runAhead darum schneller auf ein Ereignis reagieren zu können. Ich sehe den Gegner und drücke die Schuss Taste.

    Wenn aber ohne visuelle Bestätigung einfach ein Button immer wieder gehammert wird ... oder dieses typische schnell links und rechts hin her wechseln ohne das man überhaupt auf den Bildschirm schauen muss

    Denke schon, dass RunAhead auch bei Rüttelspielen wie "Decathlon" etwas bringen könnte, denn es geht hier ja eigentlich nicht darum den Button schnell zu drücken, das habe ich ja für den Fall nur so umgemappt im Denise, damit ich Dauerfeuer nutzen kann und nicht selbst rütteln muss.


    Im echten Spiel geht es darum, so schnell wie möglich manuall nach links und rechts zu lenken, oder zu rütteln, und da denke ich schon, dass RunAhead sich auch hier dann positiv auswirken könnte und man sieht es ja auch, denn der Speedbalken im Spiel "Decathlon" wird voller, ab 2 Frames RunAhead (komischerweise halt nur im akkuraten Modus). Zumindest wenn das Joystick-Dauerfeuer die links/rechts Lenkbewegung für den Spieler ausführt, durch das Remappen.


    Man müsste es mal selbst manuell austesten, aber ich hab momentan keinen alten Controller hier, den ich opfern könnte und bei dem es nichts machen würde, wenn er durch das schnelle Rütteln irgendeinen Schaden nimmt. Aber morgen bin ich bei meinen Eltern, dann kann ich aus meinem alten Zimmer, in dem sich aus Platzgründen noch einiges meiner Retro-Hardware befindet, mal einen alten, nicht so wichtigen Controller mitnehmen und es damit dann mal manuell ausprobieren mit "Decathlon" im Denise. Werde ich mal testen, weil es mich interessiert.



    War wohl alles schon optimal eingestellt, bin also am Limit.

    Ein Abschalten der "Video Synchronisation" im Denise holt bei mir am PC noch einiges an Speed raus, damit kann ich dann sogar im akkuraten Modus 2 Frames RunAhead einstellen in ALLEN Spielen, nur leider ist das Scrolling dann manchmal halt nicht mehr ganz perfekt unter 50Hz, deshalb ist das eigentlich auch keine wirkliche Lösung. :)

  • Ein Abschalten der "Video Synchronisation" im Denise holt bei mir am PC noch einiges an Speed raus, damit kann ich dann sogar im akkuraten Modus 2 Frames RunAhead einstellen in ALLEN Spielen, nur leider ist das Scrolling dann manchmal halt nicht mehr ganz perfekt unter 50Hz, deshalb ist das eigentlich auch keine wirkliche Lösung. :)

    Ich wollte es jetzt wissen. Hab die Mühle auf 4,4 GHz gedroschen, damit komm ich auf halbwegs stabile 50 FPS bei akkurat/4 Frames. Habe nicht vor das Setup so länger zu betreiben aber immerhin, ich weiss es geht.


    Nachtrag: Ich bemerke keinen Unterschied zwischen Video Sync an und aus.

  • Dank DirectX als Treiber und dem externen Reshade Tool sind bei mir die 50Hz auch festgenagelt. Alles bei 3 Frames Runahead im akkuraten Mode. Kleiner Tip: Paradroid verträgt nicht mehr als 1 Frame. Schon ab 2 kann man das Farbenspiel bei der Droidenübernahme nicht mehr korrekt steuern, wird zu sprunghaft. Ansonsten lief alles getestete in 3-4 Frames perfekt (manchmal halt im performanten Modus, geht ja im Moment nicht anders bei bestimmten Spielen).

  • Nachtrag: Ich bemerke keinen Unterschied zwischen Video Sync an und aus.

    Merkwürdig, macht sich bei mir hier deutlich bemerkbar.


    Ist vsync an, schaffe ich nichtmal mit allen Spielen im performanten Modus 2 Frames RunAhead. Ist vsync aus, schaffe ich sogar im akkuraten Modus 2 Frames RunAhead und hab dann damit bei ALLEN Spielen immernoch die 50FPS.


    Wirklich ein deutlicher Unterschied bei mir hier am PC, nur leider ist das, wie schon erwähnt, keine wirklich brauchbare Lösung, weil das Scrolling dann manchmal nicht mehr wirklich perfekt ist, wenn die Video Synchronisation abgeschaltet ist und sowas nervt mich total.