Hello, Guest the thread was viewed4.3k times and contains 27 replies

last post from AVRFan at the

"Grafikkarte" bzw. Beschleunigerkarte per DMA?

  • Im Ultimax Modus addressiert auch der VIC-II externen Speicher. Da kann man dann auch per Modul beliebige Daten auf den Bus legen, der VIC-II liest das und stellt es dar.

    aber nur 4 Kilobyte: http://www.harries.dk/files/C64MemoryMaps.pdf


    Ich habe viel mit Ultimax Mode und Bitmapdarstellung von externem Speicher ausprobiert -- es geht, aber wenn man in die Nähe von FLI kommen möchte, dann muss man auch ständig Register beschreiben.

  • An den dort mit "blank" markierten Stellen schreibt doch nichts auf den Datenbus, insofern sollte ein externes Cartridge dort (mit eigener Decoder-Logik) eigenes RAM einblenden können, oder? Dann hätte man z.B. $1000-$7FFF (aus VIC-Sicht) zur freien Verfügung. (kenne mich da aber nicht so aus, man vergebe mir, falls das Unsinn ist)

  • An den dort mit "blank" markierten Stellen schreibt doch nichts auf den Datenbus, insofern sollte ein externes Cartridge dort (mit eigener Decoder-Logik) eigenes RAM einblenden können, oder? Dann hätte man z.B. $1000-$7FFF (aus VIC-Sicht) zur freien Verfügung. (kenne mich da aber nicht so aus, man vergebe mir, falls das Unsinn ist)

    ich muss nochmal auf die Suche nach den Quellen gehen, aber nach allem was ich gefunden und mir an Fragen beantwortet wurde ( schumi) kann der VIC nicht frei zugreifen (er hat ja selbst nicht mal genug Adressleitungen für 64kb). Deswegen habe ich nur mit Tricks ein 8k Bitmap mit VIC-Ultimaxzugriffen hinbekommen (das war/ist für einen 50Hz Videoplayer mit dem Sidekick). Was man der CPU in Ultimax noch extern bereitstellen kann können andere besser beantworten Aber insgesamt scheint mir der Ultimax Mode eher der Historie geschuldet und für Freezer wichtig, als das er sonst sinnvolle Anwendungen hat :-)

  • An den dort mit "blank" markierten Stellen schreibt doch nichts auf den Datenbus, insofern sollte ein externes Cartridge dort (mit eigener Decoder-Logik) eigenes RAM einblenden können, oder? Dann hätte man z.B. $1000-$7FFF (aus VIC-Sicht) zur freien Verfügung. (kenne mich da aber nicht so aus, man vergebe mir, falls das Unsinn ist)

    genau das ist die "Idee". Ob man da Speicher einblendet (im einfachsten Fall) oder per externer Logik passende Daten auf den Datenbus legt, ist dann zweitrangig.


    Die PLA bekommt halt ordentlich was zu tun, weil letztlich die /GAME Leitung zyklusgenau extern gesteuert werden muss ;) Aber nachdem auch ein Easyflash³ mit wahrscheinlich komplexerer Steuerung auch stabil funktionieren kann, sollte das klappen.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    1. 10 open1,8,15 : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    2. 20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    3. RUN
  • Was man der CPU in Ultimax noch extern bereitstellen kann können andere besser beantworten Aber insgesamt scheint mir der Ultimax Mode eher der Historie geschuldet und für Freezer wichtig, als das er sonst sinnvolle Anwendungen hat

    Naja doch, "offene" Adressbereiche gibt's außer im Ultimax-Modus ja gar nicht. Das war wohl auch die Idee beim Ultimax - dass man dort per Cartridge den Rechner echt erweitern kann, ohne Kurzschlüsse auf dem Bus zu haben. :) Der Ultimax hat ja nichtmal ROM und kaum RAM eingebaut.


    kann der VIC nicht frei zugreifen (er hat ja selbst nicht mal genug Adressleitungen für 64kb)

    Er hat nur einen 14bittigen Adressbus, ja. Der "normale" Zugriff aufs RAM erfolgt auch darüber, allerdings macht der VIC auch noch das RAM-Refresh der kompletten 64KBytes; dafür benutzt er nur acht der Adressleitungen, aber CAS/RAS-gemultiplext. (da weiß ich gar nicht, wie das vom Timing her läuft...)


    Details dazu u.a. siehe https://www.c64-wiki.de/wiki/H…des_C64#Anbindung_des_VIC

  • Hmm, mal über einen Doppelkerner wie den RP2040 als Grafikchip ala SuperFX nachgedacht?

    Zumindest in einfarbig sollte das machbar sein, Bitmap auf das Areal vom Hi-Rom, ein Kern beschickt den VIC2 und der andere berechnet das nächste Bild anhand ihm zugespielter Daten, vielleicht sogar irgendwas ala OpenGL, über IO. Man sieht ja anhand PHI2 wer gerade dran wäre Daten zu schicken oder zu verlangen.

    Ich hab leider schon genug Hochzeiten, wer also die Idee testen will tue sich bitte keinen Zwang an. 😸

  • Vor ca. 6 Jahren habe ich eine C64 "GPU" entwickelt, hier kann man ein erstes demo sehen:


    Es ist ein CY8CKIT-059 PSoC 5LP mit einem Adapterboard.


    Um das zu nutzen muss der C64 in MultiColor Bitmap geschaltet werden. Immer wenn der VIC screen oder bitmap Daten lesen will wird dafür gesorgt dass kein Chip sich angesprochen wird und die Daten direkt auf den Bus gelegt.


    Background und colorram ist hiervon nicht betroffen, weswegen ich in meinem demo das colorram auf eine Farbe gesetzt habe.


    In dem Modul ist ein 256*64 char grosser Screen, ein Font mit 256 Zeichen, die aus jeweils 8 Byte Bitmap und 1 Byte mit 2 Farben besteht (und einem Overlay, welches in 2 pixel über das Bild gelegt werden kann).


    Ich habe es aufgegeben weil einerseits der Chip von der Performance her bereits voll ausgelastet ist, und auch wenn er quasi nix tut nichtmal ein normales 8k Modul emulieren kann und weil ich nicht weiter mit der IDE arbeiten möchte (was pflicht ist, da es keinen anderen weg gibt).

  • Ich hatte auch mal so etwas ins Auge gefasst. Allerdings erschien mir ein eigener VGA Ausgang für die Karte sinnvoller. Man könnte auch GEOS für die Karte anpassen und grafische Grundfunktionen beschleunigen. Damit wäre schön viel Rechenlast vom 6510 genommen. Hatte dann aber die Lust daran verloren. Heutzutage würde ich eher einen Raspberry Pi an den C64 haben und den die Arbeit machen lassen. Damit hatte man auch gleich HDMI Ausgabe.