Hello, Guest the thread was called21k times and contains 220 replays

last post from captain_buck_rogers at the

Virtual C64 nun im Web und mit CSDB-Browser

  • Retrofan  emulaThor


    neue Version :thumbsup:


    Drag and drop von Downloadlinks aus einem CSDb.dk Fenster heraus direkt in das vc64web Fenster gehen jetzt auch mit Safari ...


    ... zusammen mit dem CSDb admin haben wir das Problem auf der csdb.dk Seite beheben können ... (Stichwort: Protokollhopserei https->http)

  • Drag and drop von Downloadlinks aus einem CSDb.dk Fenster heraus direkt in das vc64web Fenster gehen jetzt auch mit Safari ...

    ... zusammen mit dem CSDb admin haben wir das Problem auf der csdb.dk Seite beheben können ... (Stichwort: Protokollhopserei https->http)

    :thumbsup: Perfekt – aber noch nicht ausprobiert.


    Was ich mir mittelfristig noch wünschen würde: Eine Implementierung deinerseits von meinem (oder einem ähnlichen) C64-Smartphone-Keyboard. Wenn man doch mal mehr als ein paar Buchstaben eingeben will, dann wäre das schon sehr angenehm – gerne auch mit Multitouch für die Modifier-Keys. Und wenn man echten Luxus haben will, dann wäre es natürlich klasse, wenn das Keyboard die Darstellung umschalten würde, wenn man per Shift/C= auf die Grafikzeichen und Farben umschaltet. :D


  • Retrofan Oh ja stimmt die Tastatur für Phones im Portraitorientierung, die ist cool :thumbup: ... ich bin gerade knietief in der Migration auf den (derzeit noch unveröffentlichten) virtual C64 Core V4.0. Dirk hat den viel moderneren Ansatz von seinem vAmiga (https://github.com/dirkwhoffmann/vAmiga) auf seinen VirtualC64 zurückportiert ... aber er ist noch nicht ganz fertig damit, v4 ist also noch Beta ... dennoch fange ich bereits jetzt damit an vc64web auf genau diesen Core zu portieren. Er startet schonmal cool oder ?8)


    besonders spannend find ich an dem neuen Core, dass damit auch DMA und VICII bus access visualisiert werden kann ...


    siehe hier in dem Blog über v4 weiter unten ...


    https://github.com/dirkwhoffmann/virtualc64/issues/575


    man kann auch Graphikebenen ausschalten/hinzuschalten z.B. Sprite 0-7, Vordergrund, Background, und Borderebene.


    Dies alles ist ziemlich cool und lustig um mehr über ein Spiel oder eine Demo zu erfahren ... z.B. ob es Sprite nutzt etc.


    Der wichtigste Grund ist meiner Meinung nach jedoch, dass damit aufgrund der Gemeinsamkeiten von VirtualC64 V4 zu vAmiga die Grundlage vorbereitet wird, viel einfacher einen vAmigaWebEdition zu bauen ...


    Andere Farbmodelle hattest du dir ja auch schon für vc64web gewünscht... diese kann man mit dem V4 Core auch einfach per Einstellung umschalten ...


    Deine entworfene Tastatur wird später auch noch eingebaut ...

  • Oh ja stimmt die Tastatur für Phones im Portraitorientierung, die ist cool :thumbup: ...

    Andere Farbmodelle hattest du dir ja auch schon für vc64web gewünscht... diese kann man mit dem V4 Core auch einfach per Einstellung umschalten ...

    Deine entworfene Tastatur wird später auch noch eingebaut ...

    Vielen Dank – klasse.


    Was mich im Zuge des Keyboard-Layouts interessieren würde: Gibt es C64-Programme, die die linke und rechte Shift-Taste getrennt auswerten (z.B. ein Flipper)? Falls nicht, könnte man im Layout auf die rechte Shift-Taste auch verzichten.

  • Der erste Flipper, den ich je gespielt habe (als Kind), war auf dem C64, und ja, genau dieser wurde soweit ich mich erinnern kann mit den beiden SHIFT-Tasten gespielt. Habe aber keine Ahnung wie der hiess...

  • Was mich im Zuge des Keyboard-Layouts interessieren würde: Gibt es C64-Programme, die die linke und rechte Shift-Taste getrennt auswerten (z.B. ein Flipper)? Falls nicht, könnte man im Layout auf die rechte Shift-Taste auch verzichten.

    Deine Frage ist super ... sie bringt mich darauf, dass wir beim Design auch den Verwendungszweck sorgfältig im Auge behalten müssen ... "Form follows function" ... daher lass uns diesen doch noch mal anhand von den Use-Cases betrachten 👀


    Use Case 1: "Spiele zocken z.B. Flipper"


    genau dazu sind die ActionButtons gebaut worden ... meist sind es in einem Spiel nur 3 bis 5 Tasten auf der Tastatur die benötigt werden, diese kann man sich einfach mit den ActionButtons (+ Symbol) irgendwo wo es passt auf den Bildschirm platzieren... die Position ist dabei sogar frei wählbar (weil bei jedem Spiel anders) ... Als weiteren Komfort merkt sich vc64web sogar die definierten Aktionsflächen und deren Position pro Spiel selbsständig, ... sie erscheinen immer wieder automatisch, auch wenn man Tage später vc64web mit einem bestimmten Spiel startet ...


    Die Aktionsbuttons zu deutsch Aktionsflächen, sind definierbar über das "+" Symbol in der Navigationsbar direkt neben dem Tastatursymbol "Aa".


    (irgendwie habe ich den Verdacht, das die momentante Funktionalität der ActionButtons vielleicht etwas zu versteckt oder unzureichend dokumentiert ist 🤔... was meint Ihr ... )



    Use Case 2: "abtippen von Listings oder Eingabe von beliebigen Befehlen"


    hier kann man die rechte SHIFT-Taste in deinem Layout einfach weglassen... (siehe die virtuelle iOS-Tastatur auf dem iPhone) ... ich würde sogar noch einen Schritt weitergehen und seltene Keys oder Funktionskeys wie F Tasten, evtl RunsStop, das Pfundzeichen, etc.. in eine horizontal scrollbare Kopfzeile packen ...(Unterschied zu jetzt.. nur die Kopfzeile scrollt, die unteren Keyboardzeilen bleiben fix und haben viel Platz)

  • Use Case 1: "Spiele zocken z.B. Flipper"

    irgendwie habe ich den Verdacht, das die momentante Funktionalität der ActionButtons vielleicht etwas zu versteckt oder unzureichend dokumentiert ist 🤔... was meint Ihr ...

    Stimmt, ich habe mich noch nicht getraut, die Funktion zu verwenden. Ich könnte mir aber auch vorstellen, die ActionButtons optional anders zu definieren. Ich könnte mir vorstellen, dass man das Keyboard in einen "Definitions"-Modus schaltet und dann Tasten (-Kombinationen) einfach antippt und danach die Funktion zuordnet. Dafür müssten dann allerdings auch alle Tasten vorhanden sein.


    Use Case 2: "abtippen von Listings oder Eingabe von beliebigen Befehlen"

    hier kann man die rechte SHIFT-Taste in deinem Layout einfach weglassen... (siehe die virtuelle iOS-Tastatur auf dem iPhone) ... ich würde sogar noch einen Schritt weitergehen und seltene Keys oder Funktionskeys wie F Tasten, evtl RunsStop, das Pfundzeichen, etc.. in eine horizontal scrollbare Kopfzeile packen ...(Unterschied zu jetzt.. nur die Kopfzeile scrollt, die unteren Keyboardzeilen bleiben fix und haben viel Platz)

    Ich würde gerne erst ausprobieren, wie sich das Keyboard bedienen lässt, wenn (wie bei meinem Entwurf) alle Tasten (möglichst nahe den Original-Positionen) sichtbar sind. Wenn sich dann zeigen sollte, dass die Keys auf vielen Handys zu klein wären, kann man immer noch welche herausnehmen und variabel machen. Das hat auch den Grund, dass manche Anwendungen (wie z.B. unser FIBR) Shortcuts nach Position belegt haben – nebeneinander liegende Tasten haben also zusammengehörende Funktionen (ich glaube, das war z.B. bei [@] [Stern] [Pfeil hoch] der Fall).


    Das ganze Keyboard sollte natürlich keine feste Breite haben, sondern immer 100% der Screenbreite einnehmen – Smartys sind ja nicht alle gleich groß.

  • Beim Blick auf mein Handy ist mir gerade noch ein cooles Feature eingefallen, dass aber wahrscheinlich nicht sehr leicht umzusetzen wäre: Die üblichen Smarty-Keyboards zeigen doch immer Wortvorschläge in einer Zeile oberhalb der Tastatur. Wenn man sowas in das VC64Web-Keyboard integrieren würde, könnte das eine Menge Tipp-Arbeit sparen und es wäre z.B. beim Tippen von Basic- oder DOS-Befehlen eine Art Auto-Vervollständigung, wie man sie von modernen Code-Editoren kennt. Man würde dann z.B. nur lo… eingeben und einer der antippbaren Vorschläge wäre z.B. load"*",8,1 und ein anderer load"$",8 und bei p… käme schon print" als Vorschlag.

  • Retrofan


    Deine zwei Posts wegen dem Keyboard ...

    1. ja wir machen es so, wie du es vorschlägst ... wir werden daran solange agil herumfeilen und es ausprobieren bis es sehr gut passt ... :thumbsup:
    2. also du meinst eine Vervollständigung/Autocomplete für CBM Basic V2 ... ziemlich cooler Vorschlag ... Ich freu mich schon darauf das Auszuprobieren ... :thumbup: ... dann darf ich aber auch wieder CBM Basic V2 programmieren ja ? 🤤




    Statusupdate zu den momentanen Bauarbeiten:


    die Entwicklung der Anbindung des neuen v4 Kerns von VirtualC64 sind schon weit fortgeschritten .. also, es startet schon und man kann auch bereits Zocken und Demos anschauen...


    es gehen jetzt auch Easyflash CRTs die viele Disks umfassen :thumbsup: der alte Kern stürzte da bei vielen noch ab und war da etwas buggy ...


    es fallen aber auch ein paar Sachen weg:

    1. Autosnapshot - Feature wurde aus dem V4er ausgelagert, müsste ich in Javascript nachbauen ... ist zwar nicht sehr aufwändig, aber braucht das überhaupt jemand ? Ich habe es ehrlich gesagt meistens abgeschaltet... und mir ein TakeSnapshot auf eine Hotkeytaste gelegt... Wie ist das bei Euch ?

    2. leider hat sich aufgrund massiver Umbauten das Snapshotformat geändert, die Snapshots der bisherigen Version werden nicht mehr gestartet werden können ... :grab1: (Tipp: also vorerst mal nicht allzugroße Panini-Sammlungen mit dem vc64web anlegen )


    auf der Habensseite gibt es aber auch einiges mehr an Möglichkeiten, die mit dem v4 Kern einfach angebunden werden können:

    1.EasyFlash Kompatibilität

    2.DMA Debugger Ansicht

    3.verschiedene Farbmodelle

    4.Dirk untersucht/analysiert momentan die Möglichkeit mehrere SIDs zugleich zu unterstützen ... siehe hier https://github.com/dirkwhoffmann/virtualc64/issues/593 (Stichwort Stereo oder Dual-SID)


    ich dachte mir ich probiere auch mal die neuen Möglichkeiten anzubinden, bevor ich die neue v4 Version ins Web stelle ... Momentan hat sie Feature-Parität ... (außer Auto-Snapshot)

  • vc64web hat zu Weihnachten einen neuen Version 4 Motor bekommen …


    unter der Haube hat sich dadurch viel geändert… in der WebVersion haben wir folgende Features des V4-Motor-Kerns angeschlossen


    - zweiter SID für Programme, die einen zweiten SID unterstützen

    - ReSID Auswahl aller drei Qualitätsstufen: Fast, Interpolate, Resample

    - Auswahl der Farbenpalette (Wunsch von Retrofan)

    - Ansteuerung der Tasten getaktet per Emulator-Frame, damit keine Tastenanschläge mehr verloren gehen

    - neue Ansteuerung des Autotypings, jetzt 25 Zeichen pro Sekunde schnell… (Dirk nennt es Speedtyping 😎)

    - an kritischen Stellen an denen bisher mit Echtzeit getimed wurde, wird jetzt mit Emulator-Zeit getimed … (dadurch wird die Ausführung deterministisch)

    - jetzt voll kompatibel mit EasyFlash Cartridges (die alte Version war noch buggy)

    - SpriteMasken zur Identifizierung der Aktivität der einzelnen Sprites


    weiterhin unabhängig vom neuen v4-Emulator-Kern wurden folgende Punkte umgesetzt:

    - neue stark vereinfachte BOT-API (alte BOTS bleiben kompatibel)

    - auto-reset wenn eine .PRG oder .T64 Datei in den File-Slot platziert wird

    - Behebung zahlreicher kleinerer Bugs und kleine Optimierungen



    Viel Spaß damit und ein frohes Fest und viel Gesundheit im neuen Jahr wünschen Euch Captain Buck Rogers und dirkwhoffmann


    Direktstart-Link zur Hyperborea-Weihnachts-Demo ... ja mit Schnee :rolleyes:...


    https://dirkwhoffmann.github.i…206760/ALD_Hyperborea.prg

  • SID-Bugfix Update (Version 4.0.1) ist online ...


    in die Weihnachtsversion hatte sich :grab1: ... ein Bug eingeschlichen ...... der ist gar nicht sofort aufgefallen ... erst am nächsten Weihnachtstag ... der Bug fiel besonders bei den Musikprojekten von LMan auf z.B. https://markus-klein-artwork.de/sid/vortex.html ... diese hörten sich völlig kaputt an... andere "einfachere Musik" zeigte hingegen gar keine Störungen


    Die Projekte von LMan spielen soweit ich das beurteilen kann, Synthi sounds zusammen mit Digisaounds ab. Der SID wird eigentlich ständig mit Pokes bombardiert. Krass, man glaubt kaum das der Sound aus einem 64er kommt...


    anbei zwei Direkt-Startlinks zum Reinhören in LMans Musik auf der CSDB...


    https://dirkwhoffmann.github.i…416/LMan%20-%20Vortex.prg


    (der folgende Titel ist sogar mit Vokalgesang!!)

    https://dirkwhoffmann.github.i…le.php/174424/my_life.prg



    Verdächtig war die SID Anbindung, die für die Ansteuerung mehrerer SIDs für die Version 4 extra umgebaut wurde.


    Um mehrere SIDs parallel Sounds produzieren zu lassen, hat Dirk zur Vereinfachung des parallelen Zusammenmischens eine andere API-Methode von ReSID verwendet, in der man diesen bis zu einen bestimmten Sample Sound erzeugen lassen kann.


    anbei das Bug-Issue zum VirtualC64 auf github

    https://github.com/dirkwhoffmann/virtualc64/issues/603


    Dirk schreibt uns in dem Bug-Issue folgende Hintergrundinfos ...


    "Die alte Implementierung führte reSID in kleinen Delta-Schritten aus, die in Zyklen gemessen wurden. Dies führte dazu, dass reSID bei jedem Aufruf eine unterschiedliche Anzahl von Samples erzeugte. Dies ist für die Single-SID-Emulation vollkommen in Ordnung, erschwert jedoch die Multi-SID-Emulation. Um die Multi-SID-Emulation zu vereinfachen, fordere ich jede SID auf, eine bestimmte Anzahl von Samples zu erzeugen, anstatt eine bestimmte Anzahl von Zyklen voranzutreiben. Ich habe jedoch nicht berücksichtigt, dass dies nur dann einwandfrei funktioniert, wenn die SIDs nicht mit der „Außenwelt“ interagieren. Natürlich gibt es eine gewisse Interaktion in Form von SID-Registerschreibvorgängen, die bei bestimmten Zyklen auftreten. Mit dem alten Ansatz konnte ich die SIDs bis zum richtigen Zyklus ausführen, bevor ich den Registerinhalt änderte. Mit dem neuen Ansatz kann ich SID nur bis zum richtigen „Sample“ ausführen. Mit anderen Worten: Die Timing-Genauigkeit der SID-Pipeline hat sich von der Zyklusgenauigkeit zur Samplewertgenauigkeit verschlechtert."


    Das Soundprogramm von LMan verändert also permanent die SID Register, es erfordert unbedingt eine zyklengenaue SID Ansteuerung. Diese hat Dirk soeben wieder hergestellt, auch beim Abspielen von Stereo SID Programmen. Damit wir wieder einen sauberen CSDB-Player haben, habe ich den debuggten Core dann in das vc64web Projekt gemerged und soeben online gestellt, evtl. müsst ihr also nochmals auf Settings->Update installation klicken.


    Dual SID funktioniert großartig ....


    hier ein paar Hörproben verschiedener Musikrichtungen (... wieder Direktstarts aus der CSDB...)


    Kategorie Elektrobeats:


    konfiguriert per Setting einen 2nd SID at $d500


    https://dirkwhoffmann.github.i…31/Electric_City_2SID.prg



    Kategorie Klassik:


    konfiguriert per Setting einen 2nd SID at $d420


    https://dirkwhoffmann.github.i…relude%20%26%20fugato.prg


    Kategorie Filmmusik:


    konfiguriert per Setting einen 2nd SID at $d420


    https://dirkwhoffmann.github.i…p/162650/Raindropsies.prg


    Kategorie Jazz:


    konfiguriert per Setting einen 2nd SID at $d420


    https://dirkwhoffmann.github.i…e.php/206403/to_norah.prg

  • vc64web wurde soeben auf den VICE 3.5 ReSID upgegraded


    Danke dirkwhoffmann und Danke ViceTeam !! 😍


    damit erhält der ReSID im vc64web folgende Fixes


    ** SID fixes
    ------------

    - Fixed the filter saturation

    - Noise writeback fixes

    - Envelope regression fix

    - Fix the coefficients for the resid external filter

    - Rough implementation of the shift register and waveform zero bitfade




    hört sich damit mein Lieblingssong https://dirkwhoffmann.github.i…php/206377/SnakeBooze.prg noch besser an ? ... 👂 ... ich glaube subjektiv gesehen ja 😅

  • vc64web glänzt in seiner neuen Version mit einem komplett überarbeiteten Light/Darkmode Look. Besonders der Lightmode war in der Vergangenheit von den Farben her schlecht abgestimmt gewesen. Nun glänzt er ... Ich glaube ich mag jetzt Light noch lieber als den DarkMode ... naja jedenfalls tagsüber....


    Dieses Ergebnis speist sich auch zum Teil aus den Erkenntnissen der Diskussion, den vc64web mehr aussehen zu lassen wie eine echte native App.


    https://github.com/dirkwhoffma…tualc64web/discussions/85

  • davon wie die Grenzen zwischen Modern Web und der C64er "Poke Machine" überbrückt werden ...


    um das zu befördern habe ich für uns zwei Dinge umgesetzt:

    +Peek und Poke von Javascript an die emulierte C64 Hardware ...

    +den CodeMirror Editor (das ist echt ein hübches cooles Ding!) in den vc64web integriert.


    der CodeMirror in vc64web bietet uns

    +Bracket matching

    +Syntax Highlighting

    +live Intellisense Code-Completion

    +automatische Code Einrückung

    +Blockeinrückung per Tab-Taste

    +Code Überprüfung/Analyse durch JSHint-Linting


    hier anbei seht ihr wie es funktioniert. Es ist ganz einfach, ihr könnt es durch ein paar Klicks ausprobieren dazu habe ich die Beispiel-Vorlage "Peek & Poke" eingebaut




    https://dirkwhoffmann.github.io/virtualc64web/


    Ich fühle mich gerade wie vor 36 Jahren, als ich das erste mal Pokes meinen C64er eingetippt hatte und dadurch etwas direkt in der C64er-Hardware angesteuert habe ... :emojiSmiley-41:




    Was kann ich eigentlich damit noch alles anstellen ? Eine SID-Melodie spielen ?


    emulaThor

    Kann ich damit eigentlich auch Daten aus dem Internet in den C64er per Poke reinpumpen, also Daten austauschen ?


    mit

    Code
    1. POKE 1024,xx

    kann ich von Javascript aus direkt auf den Bildschirmspeicher zugreifen ... da kann ich dann ja den Text von WebSeiten ausgeben oder ? Ist das der richtige Weg?

  • emulaThor

    Kann ich damit eigentlich auch Daten aus dem Internet in den C64er per Poke reinpumpen, also Daten austauschen ?

    GEIL, GEIL, GEIL, GEIL! Ich bin begeistert und melde mich demnächst per Code-Snippets. :thumbsup:

  • emulaThor ich habe dir in den Thread zum RSS Reader ein Beispiel eingestellt, wie man eine Datei aus dem Internet (ähem von deinem WebServer) lädt und in den C64 pumpt


    Forum64 am C64 lesen (zumindest den aktuellen RSS-Feed anschauen)



    das ist natürlich noch etwas plump und soll nur als Grundlage dienen ... meinst du man kann über eine Peek/Poke-Schnittstelle eine bidirektionale Kommunikation zwischen dem C64er und der Außenwelt aufbauen ?

  • kann ich von Javascript aus direkt auf den Bildschirmspeicher zugreifen ... da kann ich dann ja den Text von WebSeiten ausgeben oder ? Ist das der richtige Weg?

    Ja. Wer poken kann, der ist root. :) Der richtige Weg? Who am I to judge. :thumbup: Das ist der Anfang einer Schnittstelle, die Spaß macht! WebSeiten -> Ja, irgendwo muss halt geparst/gescraped werden -> Markup umwandeln oder wegwerfen, UTF-8 nach Petscii wandeln, Ncht darstellbare Zeichen korrigieren... Alles nur Fleißarbeit. Aber der Reihe nach.


    Ich habe Dein Snippet-Beispiel ausprobiert, und es tut das, was es verspricht! :thumbup: Wie kann ich ein Script, das zu einem Button gehört, ändern, wenn es einmal gespeichert ist? Kann ich den Editor wieder öffnen oder muss ich das direkt in der IndexedDB unter custom_buttons reinhacken? :) Oder einfach neue Buttons anlegen? Ist keine Beschwerde, ich weiß, dass das hier ein WIP ist! Genauso läuft es bei mir auch.


    Es besteht die Gefahr, dass ich Dich über dieses Feature ausnutze: Ich habe halt für Sidekick64 ein Mini-Web-Framework entwickelt, was genauso unfertig wie unveröffentlicht ist. Dieser RSS-Reader ist ein Bestandteil davon. Die Sidekick64-Cartridge lässt sich nicht in Emulatoren emulieren. Was ich jedoch machen kann, ist, für Euren vc64web einen Client zu schreiben in Javascript, welcher die Web-Demos für Sidekick64 auch in vc64web konsumierbar macht. Beispiel: Eine Chat-Applikation am C64. Man kann sich dann entweder am C64 mit Sidekick64 + experimentellem Netzwerk-Kernel einloggen oder aber im vc64web. Wenn einer im vc64web eingeloggt ist und "choplifter ahoi" schreibt, kann der andere das dann am realen C64 via Sidekick64+Web lesen und umgekehrt.


    Ich wollte Dich schon im Dezember um so ein Poke-artiges Feature bitten, nun hast Du es schon implementiert! Gib mir Zeit, ich werde etwas zusammenhacken dafür! Nicht wundern, wenn ich hier nicht so viel antworte. Ich antworte lieber dann direkt mit Code-Snippets, wenn ich die Gelegenheit gehabt habe, was Sinnvolles zu machen.

  • Wie kann ich ein Script, das zu einem Button gehört, ändern, wenn es einmal gespeichert ist? Kann ich den Editor wieder öffnen oder muss ich das direkt in der IndexedDB unter custom_buttons reinhacken? :) Oder einfach neue Buttons anlegen?

    Haha nein^^, das ist ganz einfach, du musst einfach den Button lange gedrückt halten.... ein sogenannter long press


    unter dem Editor, wo du das Skript drin editierst hast, habe ich dazu folgenden Erklärtext platziert:

    "... after created you can change the position of the button by dragging ... when clicking a custom key with a long press it goes into edit mode which takes you right back to here ..."


    evtl. ist der Text nicht so intuitiv ? Ich spreche da noch von "custom key" ... ups ... so hatte ich die Aktions-Buttons ganz zu Anfang genannt ... ich meine natürlich button ... muss ich den Text noch korrigieren

  • Wenn man auf dem VirtualKeyboard die Taste "RESTORE" drückt, wird dann ein NMI getriggert? Bzw. wenn ich per Javascript-API "RESTORE" drücke?

    https://www.c64-wiki.de/wiki/NMI


    Wenn ein Javascript dauerhaft läuft über eine Schleife und via HTTP ein Polling macht (WebSockets mal ausgeklammert), werden dann parallel immer noch alle Keypresses des Nutzers ausgewertet im Emulator? Wo läuft denn das Javascript ab? Ist eine eigene Javascript-Engine im vc64web. Meine Güte!