Posts by dirkwhoffmann

    Soll ich auch drei Schalter in den Settings machen oder nur einen 🤔 vielleicht in vc64web die drei zu einem zusammenfassen ?

    Am schönsten fände ich, wenn wir die Desktop-Version und die Web-Version optisch ein wenig näher zusammenbringen. Das Nonplusultra wäre für mich so etwas wie Apple Mail in der iCloud vs. Apple Mail auf dem Desktop. Aus Konsistenzgründen wäre es dann schöner, drei einzelne Optionen der Web-Version hinzuzufügen.


    Ja, der neue Code liegt auf dem Master-Branch.

    Ich habe jetzt ein paar der hier diskutierten Ideen aufgegriffen und in VirtualC64 neue "Stromspar-Features" eingebaut:



    Die erste Option friert die Emulation der Floppy-Laufwerke ein, wenn der IEC-Bus eine Weile lang idle ist. Für den zweite Punkt habe ich die Idee des "agressive warps" von PiCiJi geklaut. Im Warp-Mode wird dann bei mir nur jeder 8te Frame gerendert (VICII-DMA bleibt intakt, wie in Denise). Der dritte Punkt sorgt dafür, dass keine Sound-Samples im Warp-Mode erzeugt werden. SID-Register werden aber trotzdem aktualisiert.


    Die Ergebnisse fallen recht unterschiedlich aus. Gegenüber VirtualC64 4.2 verringert sich die Ladezeit von GianaSisters auf meiner Maschine um ca. 20%. Ist nicht schlecht, aber auch nicht berauschend.


    Interessant wird es, wenn man GianaSisters nach dem Laden in den Warp-Modus schaltet (weshalb man das auch immer machen mag, es macht ja eigentlich keinen Sinn). VirtualC64 4.2 läuft dann mit 10.27 MHz, was ca. 500 fps entspricht.

    Der neue Build (mit allen drei Features aktiviert) schafft 27.4MHz, rendert die Intro-Animation dann also mit ca. 1370 fps.



    Ich bin gespannt, wie sich das in der Web-Version auswirkt. Dort bringen die neuen Features sicher am meisten.

    Ich habe als kleines Experiment einen auto-idle-mode in VirtualC64 eingebaut, der die VC1541 einfriert, wenn über einen längeren Zeitraum keine Aktivität auf dem IEC-Bus war. Der gepatchte 4.2er Kern läuft dann nach dem Einschalten mit ca. 15 MHz im Warp-Mode, gegenüber 10 MHz vorher. Das sind dann ca. 750 fps 😎. Der Zuwachs ist natürlich beträchtlich und ich werde ein entsprechendes Feature in die nächste Version einbauen. Die meisten C64-Programme sollten auch in diesem "Stromsparmodus" funktionieren. Problematisch sind Fast Loader und Programme, die Code direkt auf der VC1541 ausführen.


    Den Hauptnutzen sehe ich für die Web-Version, da das Phone oder das Tablet deutlich weniger warm werden und dann die Batterie entsprechend länger durchhalten wird.


    Ein Nachteil der momentanen Implementierung ist die Tatsache, dass ich den IEC-Bus überwache und damit nicht sagen kann, welches Laufwerk angesprochen wird. Es werden also entweder alle Laufwerke eingefroren oder gar keins. Es müsste mal jemand im VICE- oder Denise-Quellcode nachschauen, wie das dort gelöst wurde. Wenn ich die Kommentare weiter oben richtig verstanden habe, ist es dort laufwerkspezifisch gelöst.

    Interessant finde ich, dass Denise bei jedem weiteren LW deutlich mehr CPU benötigt, bei 4 sind es dann über 20%.

    Das ist bei VirtualC64 auch so. Das Laufwerk benötigt sehr viel Rechenzeit, da für jedes einzelne neben einer eigenen CPU auch ein VIA emuliert werden muss, der in der Komplexität einem CIA nicht unähnlich ist. Dazu kommt, dass die VC1541 eine geringfügig andere Taktfrequenz verwendet als der C64 und manche Programme nicht mehr laufen, wenn man das nicht berücksichtig. In VirtualC64 kostet das einiges an Rechenzeit, da die Zyklen über double-Variablen synchronisiert werden, um die Zeitunterschiede auszugleichen. Wie das in Denise gemacht ist, weiß ich nicht, aber es wird ähnlich sein. VICE verwendet eine Auto-Abschaltung der Laufwerksemulation, nehme ich an. Das schmälert zwar ein wenig die Kompatibilität, aber ich vermute, dass nur wenige Programme betroffen sind. Weil die Laufwerke so komplex sind, ist die maximale Anzahl in VirtualC64 auf 2 begrenzt, ich kenne aber auch niemanden, der damit nicht ausgekommen ist.

    Die CPU-Auslastung im Warp-Mode ist meiner Meinung nach die naheliegendste Maßzahl. Wichtig ist ein vergleichbares Setting (insbesondere die Laufwerks-Einstellungen und die SID-Einstellungen: Anzahl SIDs + Engine + Interpolationsmethode).

    Die CPU-Temperator hat Charme, allerdings weiß ich nicht, ob sie sich so einfach auslesen lässt. Das Hauptproblem dabei ist aber, dass sie maßgeblich durch andere laufende Prozesse mitbestimmt wird und auch von externen Faktoren abhängt (wie lange läuft der Computer bereits etc.)

    Seit heute gibt es die Version 4.2 zum download. Neben kleineren Bug-Fixes gibt es zwei größere Features. Zum einen habe ich den Screen-Recorder von vAmiga portiert, so dass man jetzt auch in VirtualC64 MP4-Mitschnitte machen kann. Anders als in vAmiga musste ich in VirtualC64 leider während der Aufnahme die Audio-Ausgabe ausschalten, da die Videos mit exakt 50Hz (PAL) bzw. exakt 60Hz (NTSC) aufgenommen werden, ein echter C64 aber geringfügig davon abweicht (50.125 Hz bei einen PAL-C64 und 59,Schlumpf bei einem NTSC-C64). Das bedeutet, dass SID während einer Aufzeichnung mit einer leicht veränderten Sampling-Rate angesteuert werden muss, um die richtige Anzahl an Sound-Samples pro Frame zu erzeugen. Die zweite Neuerung ist der optimierte VICII, der jetzt deutlich schneller ist als der alte. In der neuen Version sollten die Lüfter daher ein wenig später anspringen als in den Vorgängerversionen.

    + mit bis zu 55% Beschleunigung bei grafik/sprite-intensiven Titeln

    + 10% Beschleunigung/Effizienz im Idle.

    gilt das plattformunabhängig oder bezieht sich das auf ARM/M1?

    Die eingebauten Beschleunigungen sind plattformunabhängig. Die Steigerungsraten von 10% - 55% habe ich auf einem Intel-Mac ermittelt, aber ich nehme an, dass ähnliche Steigerungen auf einem M1 zu erwarten sind.

    Heute ist die Version 4.1 erschienen. Die alte Version hatte einen recht gravierenden Fehler in der Raster-Interrupt-Logik, der in der neuen Version behoben ist. Damit hat sich eine Reihe der bisher bekannten Kompatibilitätsprobleme über Nacht in Luft aufgelöst, da sie offenbar alle mit diesem einen Bug zu tun hatten. Die GUI ist ebenfalls deutlich stabiler geworden. In der Version 4.0 gab es gegenüber der Vorgängerversion so viele GUI-Änderungen, dass sich leider auch ein paar Fehler eingeschlichen hatten, die den Emulator vergleichsweise einfach abstürzen ließen. Als neues Feature gibt es eine Debug-Konsole (aka RetroShell). Damit kann man den Emulator jetzt auch in einer Kommandosprache bedienen oder Skripte ausführen. Außerdem werden jetzt mehr GamePads unterstützt und die Übersetzung der Analog-Sticks in digitale Joystick-Signale wurde überarbeitet. Mit den Analog-Sticks sollte sich jetzt besser spielen lassen (wobei ich persönlich immer noch die aktuelle Generation des USB-Competition-Pro am Besten finde).


    Der Download ist von der GitHub-Release-Page oder der VirtualC64 Home Page möglich:

    http://dirkwhoffmann.github.io/virtualc64/

    Ich hatte eben nochmal versucht, die Version 4.0.1 zu öffnen. Leider liegt meine Betriebssystem-Version eine Version vor der verlangten. Gibt es einen Grund, dass VirtualC64 macOS Mojave als Minimum voraussetzt?

    Ja, der aktuelle Code verwendet Features von macOS 10.14 und der letzte sogar von macOS 10.15. Die Abhängigkeit von macOS 10.15 ist mittlerweile wieder weg, d.h., das zukünftige Release-Target wird 10.14 sein. Es gibt einen Issue auf GitHub, der die Details beschreibt (betrifft vAmiga, gilt aber gleichermaßen für VirtualC64):


    https://github.com/dirkwhoffmann/vAmiga/issues/492

    C64 RSS Reader V5 garantiert kompatibel mit Commodore ROMS :emojiSmiley-41:


    methode packt es leider nicht, die Tasten in der richtigen Reihenfolge auszulösen. Eigentlich ist die runStop Taste ja eher sowas wie ein Modifier ... muss ich evtl. noch verbessern ...

    Ja, die Reihenfolge ist essentiell, da NMIs "edge triggered" sind. D.h., es zählt nur der Zeitpunkt des Niederdrückens der Taste, nicht aber, wie lange sie unten gehalten wird.

    Nach langer Wartezeit gibt es nun die Version 4.0 von VirtualC64 für macOS. Wer die neue Version testen möchte, kann den Emulator direkt von der neuen Projektseite herunterladen:


    https://dirkwhoffmann.github.io/virtualc64/


    Der Emulationskern ist der gleiche, der bereits seit ein paar Wochen in der Web-Version seine Dienste tut. Die größten Änderungen betreffen die Bedienungsoberfläche. Sie wurde in weiten Teilen neu gestaltet und setzt viele Dinge um, die bereits in vAmiga realisiert sind. Beide Emulatoren bieten jetzt ein nahezu identisches Look & Feel.


    Über Feedback und Bug-Reports freue ich mich, am liebsten direkt auf GitHub.