svr.VDCLores

v1.01 24.01.24


VDC-Lores-Bild
Bild 1: Ein Bild ("almightygod") im Format 160×100 von "VDCLores"
VDC-Palette
Bild 2: Die C128-VDC-Palette. Sie unterscheidet sich von der C64-Palette
Video: Der C128 im 160×100-Modus mit 16 Farben

Dateiformat:
Namenskennung: .VDC
Startadresse:$3e80
Bitmap: keine
Farben: 8000 Bytes linear
von links nach rechts
gepackt:nein

VDCLores
Der Saver "VDCLores"

Mit VDCLores ist es durch Einstellen eines besonderen VDC-Modus (LowRes 160×100 Pixel, entfernt ähnlich dem Basic8, Mode 1, Parameter s. unten) auf einfache Weise möglich, auf dem C128-VDC-Bildschirm farbige Bilder auszugeben. Das entstehende Bild in der Anzeige hat eine Größe von 320×200 Pixeln (deshalb diese Angabe bei der Auswahloption, siehe Bild), sodass Bilder von VDCLores etwas "grobkörnig" aussehen, was aber auch eine besondere Ausstrahlung eines solchen Bildes ermöglicht (s. Bild 1 rechts und Beispiele unten).

Wenn man will, lässt sich die Auflösung 160×100 in GoDot mit einem einzigen Klick im Modifier Halve herstellen. Dadurch wird das Bild im Speicher auf die Hälfte seiner Ausmaße skaliert und in die linke obere Ecke des Canvas (der Bildfläche) geschrieben.

Genau an dieser Stelle erwartet nun VDCLores die Bilddaten. Sie werden beim Speichern auf die C128-Palette (s. Bild 2) umgerechnet und ungepackt in linearen Bildzeilen (nicht in Kacheln) auf Diskette abgelegt. Die entstehende Datei umfasst 8000 Bytes (32 Blöcke auf Disk) mit einer Startadresse von $3e80, dem Anfang des VDC-Attribut-RAMs bei diesem Modus) und enthält ausschließlich die Farben des Bildes. Die Pixel für diese Farben sind alle gleich (8000 Mal $0f) und werden von der C128-Darstellungsroutine erzeugt.

Die zweite Option im Auswahlrequester (640×200) speichert das als 320×100-Pixel angezeigte Bild im 640×200-Format auf Disk, und zwar in zwei Durchgängen, was zwei getrennte Ergebnisdateien zur Folge hat (die automatisch nummeriert werden, jede Datei: 32 Blöcke, wie oben beschrieben). Diese beiden Bilder werden auf dem C128 (unter TSB, also im C64-Modus) so im VDC abgespeichert, dass es aussieht, als ob sie nebeneinander lägen. Es entstehen also zwei "Räume", zwischen denen man hin- und herscrollen kann. Aber natürlich kann man auch normale Bilder anzeigen, die man zur vollständigen Ansicht nur ebenfalls durchscrollen muss (s. Bilder unten).

Die Paletten des C64 und des VDC sind nicht kompatibel. So hat der C128 die zusätzlichen Farben dunkelcyan und hellpurpur, ihm fehlen aber dafür ganz schmerzlich mittelgrau und orange, zwei Farben, die auf dem C64 ziemlich häufig wichtige Verwendung finden. VDCLores verwirft die beiden zusätzlichen Farben und schlägt mittelgrau dem Dunkelgrau zu und orange dem C128-Braun, was leider manchem guten C64-Bild in der Konversion die eigentliche Qualität raubt. Außerdem sind C128-Farben sehr viel gesättigter als C64-Farben, ein C128-Bild sieht "knalliger" aus. Für Konvertierungen sollte man also Material verwenden, das nach diesen Einschränkungen ausgesucht wurde.

Auf dieses Format (VDC LowRes) sind wir durch Videos des Youtube-Kanals Die 8Bit-Theorie von Forum64-User @Goodwell gestoßen. Da das GoDot-4Bit-Format eigentlich (bis auf die Palettenzuordnung) genauso aufgebaut ist wie die für den VDC erforderlichen 160×100-Daten, war die Entwicklung dieses Savers kein großer Aufwand. Er speichert eigentlich direkt GoDots 4Bit-Daten ab, der einzige Umweg ist die Zuordnung der C64-Farben zu denen des C128.

Auch für die Darstellung auf dem C128 hat Goodwell etwas Neues (aber vorher 30 Jahre im Verborgenen Vegetierendes) ausgegraben: die C128-Basic-Erweiterung VDC-Basic von @Mac Bacon (wird im Video besprochen).

Mit den Befehlen des VDC-Basic ist es sehr einfach, den VDC auf den 160×100-Modus umzustellen und mit Bildern zu füttern (s. Beispiele). Die Befehle werden im eben erwähnten Forum64-Thread zu VDC-Basic erklärt und sind sehr leicht in der Anwendung. Hier die Aktivierung des LowRes-Modus, wobei die Befehlswörter RGW für "Register Write", RGO für "Register OR" und VMF für "VDC Memory Fill") stehen:

VDC-Initialisierung mit VDC-Basic:
rgw 0,127 auf PAL trimmen
rgw 4,155 Anzahl Ausgabezeilen
rgw 9,1 Kachelhöhe (minus 1), also: 2
rgw 6,100 sichtbare Kachelzeilen (der Höhe 2)
rgw 7,125 oberer Bildschirmrand
rgo 25,128 Bit 7 = 1: Grafikmodus an
rgo 28,16 Bit 4 = 1: VDC-RAM = 64KB
rgw 36,0 maximale RAM-Refresh-Rate
vmf 0,15,16000 Speicher füllen:
16000 $0f-Bytes ab $0000
vmf 16000,0,8000 Attributspeicher löschen:
8000 $00-Bytes ab $3e80 (16000)
attr 16000 Attributspeicher definieren (ab $3e80)

Danach wird das Bild (8000 Bytes) einfach stur hinter das Basic-Programm geladen und mit dem Befehl  RTV Startadresse,16000,8000  zur Anzeige gebracht. RTV steht für "RAM to VDC". Mehr ist nicht nötig!

Dokumentation und Downloadmöglichkeit für VDC-Basic gibt es auf der Github-Seite von Goodwell. Die Spezifikationen des VDC findet man im C64-Wiki, einen Teil auch hier bei uns.


Korrespondierende Module: svr.Basic8Mode1 - svr.IPaint - ldr.Basic8Select


Beispiele:

Is it me? Timemasters
Shadow Skat
Links oben: Ein GoDot-4Bit-Bild konvertiert aus einer Kaffeewerbung - Rechts oben: Ein GoDot-Handyscan in ursprünglich fünf Graustufen
Links unten: Ein ZX-Spectrum-Bild - Rechts unten: Ein berühmtes Demobild zu Amica Paint aus dem 64'er Magazin
640×200
640×200, links das Anzeigeprogramm, rechts der VDC-Bildschirm mit dem Bild
Misty Forest
Und dies ist die Vorlage

zurück - zu den 4Bit-Savern

Arndt Dettke
support@godot64.de