mod.SetColorbase

v1.04 31.03.22


SetColorbase
Das Modul "SetColorbase".

Wenn man im Netz nach C64-Bildern sucht, trifft man - bei denen, die einen beeindrucken - meistens auf Bilder, die in den Farben der sogenannten Pepto-Palette abgespeichert wurden. Diese Farbpalette ist aus viel Forschung und Berechnung entstanden und beansprucht für sich, die C64-Farben auf ideale Weise darzustellen. Bilder mit Pepto-Farben sehen immer etwas dunkel und gedeckt aus, ein Eindruck, der dem landläufigen C64-User so ganz und gar unbekannt vorkommen dürfte, denn was er an seinem eigenen Monitor sieht, stellt sich meistens viel farbkräftiger dar.

Wie dem auch sei, es gibt sehr viele solcher Bilder im Netz zu finden. Man kann sich auf einem PC auch sehr an ihnen erfreuen. Auf einem C64 bekommt man die Bilder üblicherweise nicht ordentlich angezeigt (wenn man nicht das Bild im Originalformat vorliegen hat).

Wie gut, dass es da GoDot gibt, das auch Pepto-Bilder so einlesen kann, dass kein Pixel des Originals verloren geht. Und dann im zweiten Schritt sogar in der Lage ist, diese Bilder mit einer ganz anderen Farbpalette wieder abzuspeichern, die einen vielleicht noch mehr beeindruckt, weil sie die Farbigkeit des C64 ebenfalls übermittelt!

Pepto-Farben
Dieses Bild (Autor: wer?) in den Pepto-Farben: eher gedeckt.
Umgewandelt in Deekay-Farben
Das gleiche Bild in den Farben des unvergleichlichen Deekay: herrlich, wirklich beeindruckend!.

Was braucht man dazu? SetColorbase, dazu die Riege der Lader für Fremdformate und Saver GIF oder Saver PNG. Wie wendet man das Modul an? Vor dem Laden der Bilder stellt man einfach mit SetColorbase die gewünschte Farbpalette ein (die man in dem Bild vermutet) und lädt das Bild. Welche Optionen hat man? Die Auswahl der Farbpaletten (GoDot, Pepto, Deekay, PAL@v1, Colodore, CoCo und Ptoing, mehr dazu siehe auch bei den Savern GIF und PNG).

SetColorbase findet beim Starten selbst heraus, welche Farbeinstellung zuletzt eingestellt war, macht diese im Übrigen dem System bekannt und zeigt sie dann an (in den meisten Fällen wahrscheinlich "GoDot"). Wenn man jetzt mit Leave das Modul verlässt, passiert in den entsprechenden Ladern gar nichts weiter und sie verhalten sich wie eh und je (die geladenen Pepto-Bilder sehen dann eher "bescheiden" aus). Aber sonst...

Hinweis: Das bestbestückte Archiv von schönen und beeindruckenden C64-Bildern findet sich im Netz unter c64pixels.com (leider dauerhaft down, bitte stattdessen die britische Retro Gallery aufsuchen), lauter Bilder, die in Compos für Aufsehen gesorgt haben, Bilder, die einerseits in den ungewöhnlichsten C64-Grafikmodi angezeigt werden, aber auch umwerfende Multicolor- und Hiresbilder. Die Vorschaubilder in der Retro Gallery sind im Format 320×200 Pixel, Screenshots davon haben von SetColorbase unterstützte Paletten und können deshalb gut als GIF oder PNG abgespeichert und in GoDot mit dem entsprechenden Lader importiert werden (bei GIF mit zusätzlich installiertem DecodeGIFhir, damit auch wirklich alle Pixel im C64 ankommen). Ist das Ergebnis schlechter als erwartet: SetColorbase auf eine der anderen Paletten umstellen und nochmals laden.


Der folgende Abschnitt dient der Hintergrundinformation. Inzwischen kann man die beschriebene Anpassung sehr viel einfacher mit MapColorbase durchführen.

Wenn man Bilder mit einer ganz unbekannten, hier nicht vertretenen Palette mit GoDot konvertieren möchte, kann man sozusagen "unter der Motorhaube" (z.B. mit dem SMON) tätig werden: Die RGB-Werte für GoDots Konvertierungsroutinen liegen im Speicher ab der Adresse $0380 (bis $03af), und zwar je 16 Bytes für einen RGB-Farbauszug, zusammen 48 Bytes. Die Reihenfolge der Farbwerte in jedem Farbauszug ist GoDots Renderalgorithmus angepasst, sie entspricht dem folgenden Schema (die Zahlen sind die Farbnummern des C64-Betriebssystems):

lgr (15)mgr (12)dgr (11)blk (0)wht (1)bwn (9)lrd (10)ora (8) pur (4)cya (3)red (2)lbl (14)blu (6)grn (5)lgn (13)yel (7)

Außerdem müssen die einzelnen RGB-Werte vorangepasst werden: Der Algorithmus erwartet die RGB-Werte im unteren Nibble, weshalb das obere Nibble hier ins untere geshiftet (der Wert somit durch 16 geteilt) und nach dem Inhalt des alten unteren Nibbles gerundet werden muss (ab $08 im alten unteren Nibble wird das Ergebnis aufgerundet). Ein ursprünglicher Wert von z.B. $ad wird daher in den Wert $0b umgewandelt und dann erst eingetragen, ein Originalwert von $62 lautet dann entsprechend $06. Algorithmus: Neuwert = (Originalwert+8)/16.


Weitere Beispiele:

Pepto-Farben
Das Bild, mit dem Deekay den Wandel
in der C64-Grafik-Codierung einleitete.
Mit der Pepto-Palette...
Umgewandelt in Deekay-Farben
...und mit seiner eigenen.

 
Ein NuFLI-Bild
Ein NuFLI-Bild (von Carrion), konvertiert in die GoDot-Palette (die kräftigere Farben hat).
Man sieht: Alle Pixel sind da!
 
Ein NuFLI-Bild
Das Original (in c64pixels-Palette).

zurück - zum Standardmodifier-Menü

Arndt Dettke
support@godot64.de