Hello, Guest the thread was called2.2k times and contains 109 replays

last post from PiCiJi at the

Eingabe Latenzen in Emulatoren

  • Was mir da sonst noch aufgefallen ist, das viele Cores nicht gut mit Vulkan laufen (ruckelt und verschluckt mitunter mehrere Frames).

    hmm, möglicherweise auch ein RetroArch Bug. Schwer vorzustellen, das der openGL Nachfolger das nicht hinbekommt.


    Was ich noch fragen wollte. Ist eigentlich mal eine Funktion im Denise angedacht zukünftig, bei der man eine Anzahl Bilder einstellen kann, die ausgelassen werden sollen. Etwa wenn man den Emulator mal auf einem wirklich alten PC mal testen will, der bei voller Framezahl dann keinen Fullspeed mehr schafft. Es gibt ja scheinbar noch keine "automatic Frameskipping" Funktion und auch keinen Regler mit dem man eine Anzahl auszulassender Bilder einstellen kann.

    da müsste ich mich schon sehr überwinden. Als ich 1998 oder 1999 meine ersten Snes Spiele emuliert habe, musste ich immer jedes 2. Bild auslassen um auf damaligen PC's sowas wie Fullspeed hinzubekommen.

    Wird der Spieler getroffen, blinkt er ne zeitlang. Wenn du Pech hattest und das 2. Frame auf den unsichtbar Zustand fiel, konntest du deinen Haupt Character ne Zeit lang nicht sehen. Ich bin da ein Bisschen vorbelastet.

  • da müsste ich mich schon sehr überwinden. Als ich 1998 oder 1999 meine ersten Snes Spiele emuliert habe, musste ich immer jedes 2. Bild auslassen um auf damaligen PC's sowas wie Fullspeed hinzubekommen.

    Wird der Spieler getroffen, blinkt er ne zeitlang. Wenn du Pech hattest und das 2. Frame auf den unsichtbar Zustand fiel, konntest du deinen Haupt Character ne Zeit lang nicht sehen. Ich bin da ein Bisschen vorbelastet.


    Für schnelle Actionspiele kann man das natürlich vergessen, ist klar, da leidet die Spielbarkeit dann logischerweise merklich darunter, aber bei vielen der schon erwähnten Puzzlespielen, macht ein "skip every 2nd frame" im Gameplay eigentlich nicht viel aus. Und bei Strategiespielen, Brettspielen und sonstigen rundenbasierten Games schon gar nicht, aber man hätte dafür dann auf alten Rechnern, immer den Fullspeed in solcherlei Spielen im Denise.


    Auf meinem Dingoo A320 Handhelds zocke ich beispielsweise öfter mal die Gameboy-Advance Version von "Dr. Mario" per GBA-Emulator und dazu muss ich, um im Spiel konstant den NTSC-Fullspeed zu haben, ebenfalls jedes zweite Bild auslassen. Das Game spielt sich dann aber noch nahezu genausogut wie ohne Frameskip und ich bin froh, dass ich zumindest auf diese Art, dann den Fullspeed erreichen kann und das Spiel dann recht gut auf diesem Handheld unterwegs zocken kann.


    Da bin ich am Dingoo mehreren der dortigen Emulatoren dankbar, dass sie eine Frameskipping-Funktion anbieten und deshalb denke ich, es könnte auch am Denise einen gewissen Sinn machen, weil der Emu dann auch auf solchen Rechnern noch in einigen Spielen recht gut nutzbar wäre, auf denen er sonst nie den Fullspeed schaffen würde und diese Spiele dann viel zu langsam laufen würden. Wenn es also technisch gesehen keinen riesigen Aufwand darstellt, sollte man eventuell nochmal über solch eine Funktion nachdenken. Für Strategie-, Puzzle-, Brett- und sonstige rundenbasierte Games, wäre das eine tolle Sache, wenn man einen alten Zweit-PC hat, auf dem der Denise sonst zu langsam laufen würde.

  • Eine Sache kam mir eben noch in den Sinn, die ich fragen beziehungsweise erwähnen wollte und zwar kann ich beim HOXS64 gut beobachten, dass ich diesen Emu um einiges schneller bekomme im Warp-Modus, wenn ich, etwa beim zocken eines Onefilers, die "1541 Emulation" nach dem Laden von diesem ausschalte (oder wenn ich den Onefiler als einzelnes prg lade). Ebenso muss ich auf meinem alten PC (Pentium3, 800MHz), wenn ich im HOXS64 überhaupt Fullspeed ohne Frameskipping haben will, ebenfalls die 1541 Emulation abschalten, sonst komme ich dort gar nicht auf die vollen 50 FPS. Also Onefiler kann ich dann am alten PC damit in Fullspeed spielen, bei Nachladern sieht es eher schlecht aus (aber ich hab Fullspeed im CCS64 dort).


    Nun aber die Frage in Verbindung mit der neuen RunAhead Funktion, bei der etwas mehr Speed ja nie schaden kann. Könnte man eine zuschaltbare Funktion im HOXS64 entwickeln, die immer dann die 1541-Emulation komplett abschaltet, wenn das Floppy gerade nicht benötigt wird und die es dann immer wieder automatisch in den Momenten zuschaltet, wenn ein Programm das 1541 benötigt? Sodaß die Emulation des 1541 nicht die ganze Zeit mitlaufen und die CPU belasten muss, wenn das Floppy oftmals gar nicht benötigt wird? Denn ich nehme mal an, die läuft ja momentan permanent mit, oder?


    Das ist als Vorschlag gedacht, noch mehr Speed herauszuholen, damit man auch 2 Frames RunAhead auf schon etwas älteren PC's nutzen kann. Mein PC ist nah dran, dies mit 50 FPS Fullspeed zu schaffen im performanten Modus, aber viele Spiele laufen dann bei irgendwas um die 45 bis 48 FPS. Gäbe es da die Möglichkeit die 1541 Emulation abzuschalten, würde das mit Sicherheit die paar noch fehlenden FPS mehr bringen um permanent die 50 FPS halten zu können.


    Sollte es nicht möglich sein, solch eine Funktion mit automatischem Mechanismus zu integrieren, dann wäre es schon von Vorteil, eine anklickbare Funktion zu haben, um die "1541 Emulation" einzeln abschalten zu können. Für Onefiler würde auch das schon genügen und viele Spiele sind ja Onefiler, bei Nachlade-Spielen wäre natürlich eine Automatik von Vorteil, denn sonst verpasst man vielleicht am Ende eines Levels wenn der nächste geladen werden soll, die Floppy-Emulation vorher schnell manuell wieder einzuschalten und dann hängt sich das Game auf. :)


    Die Floppy-Emulation abzuschalten bei Onefilern, bei denen man das Floppy eh nicht braucht, oder bei Nachladern in den Momenten in denen man das 1541 gerade nicht braucht, wäre auf jedenfall besser, um mehr Speed für RunAhead rauszuholen, als den vsync immer abzuschalten, weil es sich überhaupt nicht bemerkbar machen würde, solange das Floppy nicht vom Spiel wieder benötigt wird. Ich weiss jetzt nicht genau, wieviel Geschwindigkeit man da dann rausholen kann, wenn das 1541 nicht mehr emuliert wird, richtig viel wird es nicht sein, aber etwas bestimmt. Was meinst du PiCiJi?

  • Die Floppy-Emulation abzuschalten bei Onefilern, bei denen man das Floppy eh nicht braucht, oder bei Nachladern in den Momenten in denen man das 1541 gerade nicht braucht, wäre auf jedenfall besser, um mehr Speed für RunAhead rauszuholen, als den vsync immer abzuschalten, weil es sich überhaupt nicht bemerkbar machen würde, solange das Floppy nicht vom Spiel wieder benötigt wird. Ich weiss jetzt nicht genau, wieviel Geschwindigkeit man da dann rausholen kann, wenn das 1541 nicht mehr emuliert wird, richtig viel wird es nicht sein, aber etwas bestimmt. Was meinst du PiCiJi?

    Die Floppy Emulation verbraucht schon einiges in der C64 Emulation. Das liegt daran, das der Floppy ein eigener Computer ist, nur ohne Sound -und Grafikkarte. Beim Amiga ist der Hauptprozessor schnell genug und somit muss hier keine extra Floppy CPU + 2 VIA Chips emuliert werden. Ich überlege mir hier mal was.

  • Die Floppy Emulation verbraucht schon einiges in der C64 Emulation. Das liegt daran, das der Floppy ein eigener Computer ist, nur ohne Sound -und Grafikkarte. Beim Amiga ist der Hauptprozessor schnell genug und somit muss hier keine extra Floppy CPU + 2 VIA Chips emuliert werden. Ich überlege mir hier mal was.


    Dann bestätigt sich mein Verdacht, den ich wegen dem HOXS hier gewinnen konnte, dass es doch einiges ausmacht. Super, dann könnte ich auf meinem PC hier durch diese Art wahrscheinlich die fehlenden paar Frames zum 50FPS Fullspeed noch rauskratzen, wenn 2 Frames RunAhead eingeschaltet sind. :)


    Bei Onefilern auf einer Disk, wird das Floppy nach dem Start des Programms ja eh nicht mehr benötigt, da ist es gar kein Problem. Hier würde selbst eine manuell bedienbare Klickfunktion namens "Turn off 1541-Emulation" schon ausreichen, wenn es um solche Onefiler geht. Andere Medien würde von solch einer Klickfunktion natürlich auch profitieren, denn während etwa ein Cartridge oder ein Tape läuft oder ein prg-File (Onefiler der nicht auf einer Disk ist), braucht man die 1541 ja ebenfalls nicht.


    Und falls es technisch irgendwie machbar wäre, dass sich die 1541-Emulation bei Disk-Nachladern in den Momenten in denen nicht geladen wird, automatisch vollständig abschaltet, dann wäre das auch eine super Sache um noch Speed für die RunAhead Funktion aus den ganzen User-PC's rauszuholen. Ich weiss nur nicht, wie es dann technisch gut umsetzbar ist, dass sich die 1541-Emulation jedesmal wieder automatisch einschaltet, wenn ein Nachlader das Floppy innerhalb des Spielverlaufs dann irgendwann wieder benötigt. Nicht dass in solchen Momenten das Floppy dann irgendwie "zu spät dran" ist jedesmal, weil es sich vor dem lesen oder schreiben ja zunächst immer erstmal wieder automatisch einschalten müsste. Keine Ahnung ob das nicht irgendwelche Timing-Probleme verursachen könnte, oder wie tolerant da dann Lese- und Schreibvorgänge auf die Diskimages sind? Aber einen Versuch wär's wert.

  • Ich finde in den Nightlies Link kein ausführbares Binary - muss ich mir das selbst kompilieren, wenn ich es auch geren mal Testen würde?

    nein die binaries sind ein Bisschen versteckt. Hier das Windows binary

    Win64 Binary

    Dann bestätigt sich mein Verdacht, den ich wegen dem HOXS hier gewinnen konnte, dass es doch einiges ausmacht. Super, dann könnte ich auf meinem PC hier durch diese Art wahrscheinlich die fehlenden paar Frames zum 50FPS Fullspeed noch rauskratzen, wenn 2 Frames RunAhead eingeschaltet sind.

    Bald kommt der scanline basierte Renderer. Das sollte dann nochmal einiges bringen.


    Schon jetzt kannst du schauen, wieviel extra FPS dir eine ausgeschaltete Laufwerks Emulation einbringen würde. Dazu einfach alle Diskettenlaufwerke abschalten und das PRG des ONE Filers mit einem Tool wie DIR Master extrahieren und starten.

  • Schon jetzt kannst du schauen, wieviel extra FPS dir eine ausgeschaltete Laufwerks Emulation einbringen würde. Dazu einfach alle Diskettenlaufwerke abschalten ...

    Tatsächlich, das geht ja bereits. 8\| Oh man, das war mir nicht klar bislang. Zwar hatte ich diese "Diskettenlaufwerke" Funktion in der Systemverwaltung schon zuvor gesehen, aber noch nie benutzt und immer gedacht, man könne damit nur zwischen 1 und 4 emulierte Floppies umstellen. Dass man dort aber auch 0 Floppies einstellen und damit dann die 1541 abschalten kann, wusste ich nicht. Da hätte ich wohl doch mal einen Blick reinwerfen sollen in diese Funktion, dann wäre es zu sehen gewesen.


    Und tatsächlich bringt das Abschalten der 1541 bei mir am PC, etwa im Spiel "Microprose Soccer", dann auch die bislang noch fehlenden 4 bis 5 Frames und ich habe dann in diesem Spiel konstant 50 FPS mit 2Frames RunAhead im performanten Modus (der performante Modus bedeutet bei diesem Spiel auch keinen Nachteil, da die Spritekollisionen Spieler-Ball-Gegner auch damit noch funktionieren). Im akkuraten Modus schaffe ich auch mit ausgeschalteter 1541 keine 50FPS mit 2Frames RunAhead, aber immerhin mit 1 Frame RunAhead.


    Und im Warp Modus hab ich mir den Unterschied, mit und ohne emulierter Floppy, auch nochmal angesehen und verglichen:


    - vorspulen aggressiv im BASIC Screen mit eingeschalteter 1541 = um die 270 FPS auf meinem PC

    - vorspulen aggressiv im BASIC Screen mit ausgeschalteter 1541 = um die 330 FPS dann bei mir hier


    Macht also schon ein bisschen was aus, wie man sieht, und wenn man das Floppy eh nicht braucht, kann man es auch abschalten.


    Eine Frage noch hierzu. Bislang kann man die Anzahl der Floppies im Denise ja nur ändern, wenn der C64 ausgeschaltet ist, also wie beim echten C64. Aber wäre es auch möglich, eine Funktion namens "turn off 1541" in die Hotkeys mit aufzunehmen, die quasi das gleiche macht wie in der Systemverwaltung auf 0 Floppies umzustellen, dies aber auch on-the-fly hinbekommen würde? Dann könnte man in Onefiler-Spielen, bei denen man, wenn sie gerade laufen, bemerkt, dass man einen kleinen Geschwindigkeits-Boost für den RunAhead brauchen könnte, auf die Schnelle immer per Hotkey das 1541 abschalten. Ginge das umzusetzen während der C64 läuft, oder ist dafür ein Reset zwingend notwendig?


    Gruß,

    Andreas

  • Eine Frage noch hierzu. Bislang kann man die Anzahl der Floppies im Denise ja nur ändern, wenn der C64 ausgeschaltet ist, also wie beim echten C64. Aber wäre es auch möglich, eine Funktion namens "turn off 1541" in die Hotkeys mit aufzunehmen, die quasi das gleiche macht wie in der Systemverwaltung auf 0 Floppies umzustellen, dies aber auch on-the-fly hinbekommen würde?

    nur wenn die optionale automatische Abschaltfunktion nicht zuverlässig funktioniert. Ich werde die vergangene Zeit seit der letzten Kommunikation zwischen C64 und Laufwerken tracken. Ist diese größer als X, wird die Laufwerks Emulation deaktiviert und sofort wieder aktiviert bei erneutem Kommunikationsversuch. Möglicherweise machen das Spiele mit komplexen Loadern nicht mit. One Filer sollten damit aber kein Problem haben.

    Zuerst jedoch der Scanline basierte Renderer. Die ersten Tests mit dem Scanline basierten Renderer bringen mir 4 RunAhead Frames im akkuraten Modus ein. Das macht Hoffnung.


    Zudem werde ich alle Performance vs Accuracy Optionen in eine eigene Rubrik packen.

    • Scanline Renderer
      • nicht akkurat genug für etliche DEMO's
    • Scanline Renderer in extra thread (*)
      • kitzelt bei mir noch mal 20 fps raus, CPU Last steigt aber deutlich an
    • Disk Emulation (ehemals Disk Core 100%) in extra thread
      • aktiviert oder deaktiviert
        • die Disk Emulation läuft nur parallel zum C64 in einem extra thread, wenn keine Kommunikation zwischen beiden vorliegt.
      • deaktiviert
        • läuft unsynchronisiert parallel für 1000 Zyklen oder bis Kommunikation einsetzt
        • thread steht nicht unter Volllast, kann also kurz einschlafen und wieder aufwachen
      • aktiviert (*)
        • läuft unsynchronisiert parallel für 100 Zyklen oder bis Kommunikation einsetzt
        • thread steht unter Volllast
        • nur sinnvoll, wenn mehr als 2 Laufwerke emuliert werden
    • Disk Emulation bei Nicht Verwendung temporär deaktivieren (neu)
    • Echtzeit Audio Filter in extra thread (ehemals SID Hazard)
      • deaktiviert
        • der RESID arbeitet mit vorberechneten Werten. Es lassen sich jedoch nicht alle Werte vorberechnen. Also werden die zugrunde liegenden physikalischen Modelle etwas vereinfacht.
      • aktivert (*)
        • die aufgrund ihrer Varianz nicht vorberechenbaren Werte werden in Echtzeit in einem parallelen thread berechnet, welcher jeden verdammten Zyklus synchronisieren muss.
        • deutlich langsamer trotz extra thread, Verbesserung liegt möglicherweise im nicht hörbaren Bereich
        • wenn ich wieder Zeit für den SID habe, geht das Thema in die nächste Runde. Deswegen im Moment nur der Vollständigkeit halber erwähnt.


    (*) jeweils ein extra CPU Kern auf 100% Last. Wenn parallele Abarbeitung in der Emulation einen Geschwindigkeits-Vorteil bringen soll, darf der extra thread nicht einschlafen, wenn er gerade nix zu tun hat. Das spätere Aufwachen dauert viel zu lange. Leider ist dann ein CPU Kern auf 100%.

    Aus dem Grund gibt es die vielen Optionen um sich abhängig der Anzahl Kerne, Laptop Betrieb und den eigenen Erwartungen das Geeignetste einzustellen.