C64 Community Colors Theory

Dieses Projekt dient der Erzeugung einer empirisch ermittelten RGB-Farbpalette aus den 16 Farben des klassischen C64-Computersystems. Da es keine eindeutige Übertragung der C64-Farben auf heute gebräuchliche RGB-Farbwerte gibt, haben wir eine optisch angenäherte Farbpalette ermittelt und verbessern sie stetig weiter.

Beim Spielen in verschiedenen C64-Emulatoren auf unterschiedlichen Systemen und vor allem beim Betrachten von C64-Screenshots auf Webseiten fiel uns auf, dass es keine einheitliche Darstellung der 16 Farben des C64 auf aktuellen System gibt. In den Emulatoren kann man meist zwischen einer großen Anzahl von Farbtabellen à 16 Farben auswählen und zusätzlich oft noch die Farben weiter manipulieren (in VICE z.B. mit der PAL-Emulation). Die C64-Screenshots auf Webseiten muss der Betrachter allerdings so nehmen, wie sie der Autor abgespeichert hat.

(Hier fehlen noch Abbildung unterschiedlicher Farbtabellen oder Screenshots)

Die Farben des C64 wurden nicht als RGB-Werte definiert, sondern analog erzeugt und aufbereitet, daher gibt es keine direkte Umrechnung. Es gibt zwei Möglichkeiten, die Farben des C64 heute möglichst originalgetreu darzustellen: Erstens auf dem Wege des optischen Vergleichs und zweitens über Erkenntnisse, wie die C64-Farben erzeugt werden.

Farben über optischen Vergleich

Alle existierenden Farbtabellen, bis auf die Pepto-Palette, auf die ich später noch zu sprechen komme, basieren auf dem Vergleich der C64-Farben auf einem TV (oder damals üblichen 14″-CRT-Monitor) und der Darstellung auf einem Zielsystem (meistens ein PC). Grundsätzlich nicht die dümmste Idee, allerdings weist sie mehrere Probleme auf:

1) Bei fast allen erzeugten Farbtabellen wurde jeweils nur eine einzige Rechnerkombination verwendet, Monitore weichen in Ihrer Farbdarstellung aber stark voneinander ab.

2) Das verwendete Zielsystem (z.B. Amiga mit Röhrenmonitor) entspricht in seiner Farbdarstellung oft nicht dem heutigen Stand, die ermittelten RGB-Farben wurden aber einfach übertragen.

3) Es gab meist nur einen Betrachter, der den Vergleich durchgeführt hat. Dieser hat evtl. aber Probleme, die Farben richtig zu treffen und es gibt kein Korrektiv.

4) Es wurden keine für diesen Zweck optimierten Testbilder verwendet, bei denen die Farben im Zusammenspiel mit anderen gezeigt werden, z.B. Farbverläufe oder Original-Artwork. So werden Helligkeiten und Farbübergänge nicht optimal getroffen.

5) Es wurden nur unzureichende Werkzeuge für die Einstellung der nachempfundenen Farben auf der Zielplattform verwendet, z. B. RGB-Farbregler in Grafikprogrammen.

Die so erzeugten Farben mögen bei dem Ersteller mehr oder weniger passen, solange er seine Hardware nicht verändert aber verbindlich für andere Systeme ist das natürlich nicht. Deshalb gibt es ja so viele unterschiedliche Farbtabellen, denn genau so sind sie entstanden.

Die Pepto Palette

Deshalb waren alle froh über Pepto Timmermanns gänzlich anderen Ansatz, die 16 Farben des C64 zu ermitteln: Nicht gucken, sondern messen und rechnen.

Link zu Pepto Timmermann

Stark gekürzte Vorgehensweise: Mit einem Oszilloskop die Helligkeit der Farben am Monitorausgang messen und die Werte in 256 Abstufungen (8 Bit) übertragen. Dann mit einem Vektorskope die Winkel des Chroma-Signals (U/V) messen. Die Farbwinkel sind durch 22,5° teilbar, U- und V-Koordinaten haben den gleichen Wert und die Farben weisen alle die gleiche Sättigung auf. Nun kennt man Y, U und V und kann sie in den RGB-Farbraum konvertieren, nur muss man herausfinden, welche Sättigung maximal möglich ist, ohne ungültige RGB-Farben zu bekommen. Da Braun die “Peak”-Farbe der C64-Palette ist (ihre Umrechnung zu RGB erzeugt als erstes einen negativen Blau-Wert), gibt sie den maximalen Sättigungsgrad vor. Erst nach den Umrechnungen zu RGB und allen Korrekturen/Manipulationen soll die Gamma-Korrektur erfolgen. Dafür muss man die ermittelten Farbwerte mit den PAL-Gamma-Werten und denen des Zielsystems verrechnen und auf 8 Bit strecken.

Eine etwas ausführlichere Übersetzung ins deutsche kann man in diesem Blog-Eintrag finden.

(hier kommen evtl. noch Beispielbilder hin)

Das Problem

Eigentlich könnte man jetzt sagen (und viele tun dies auch): Fertig, Problem gelöst! Jetzt habe ich aber das Problem, dass die so definierten Farben weder in den Emus (ohne Verwendung einer PAL/TV-Emulation) noch auf den Screenshots im Netz so aussehen, wie ich sie von meinen C64-Modellen zuhause kenne. Im Zusammenspiel der 16 Farben zueinander stimmen die Pepto-Farben besser als jede optisch erzeugte aber sie wirken insgesamt zu wenig gesättigt, zu schmutzig, zu dunkel. Die Original-Farben des C64 sind zwar nicht besonders brillant (rot und orange sind eher Brauntöne und das Gelb gleitet ins grau-grünliche ab) aber so extrem, wie die Pepto-Farben es zeigen, ist es nach meinem Augenschein nun auch wieder nicht. In Gesprächen mit anderen C64 Nutzern wurde meine Beobachtung bzgl. der zu blassen Farben bestätigt. Evtl. passiert im Monitor/TV mit den Farben etwas, dass Timmermann nicht mit in seine Berechnungen einbeziehen konnte, evtl. werden sie getweakt oder es wirkt sich das unterschiedliche Verhalten der drei Leuchtstoffschicht-Grundfarben im TV aus. Was kann man also tun?

Die Lösung

Wir haben mit den Pepto-Formeln viel herumgerechnet, andere Gamma-Korrekturen verwendet, die Sättigung erhöht etc. aber nie kamen wir zu einem Ergebnis, dass die Farben so aussehen ließ, wie ich es von meinen C64-Rechnern gewohnt war. Um festzustellen, ob nur ich ein Problem mit den Farben habe oder wie andere das wahrnehmen, haben ALeX und ich das Community Colors Projekt gestartet. Im Prinzip wollten wir den Farbabgleich so machen, wie es auch zuvor meist gemacht wurde (durch optischen Vergleich) aber ohne die genannten Nachteile. Diese Probleme werden durch 3 Maßnahmen vermieden:

1) Wir bekommen Farbvergleichen von unterschiedlichen Systemkombinationen und Betrachtern und mitteln die Werte statistisch aus. Die Farben eines zu dunklen Schirms werden durch die Farben eines zu hellen Schirm z. B. ausgeglichen. Dadurch sind wir sehr fehlertolerant.

2) Wir verwenden ein optimiertes Testbild mit vielen Anwendungsfällen der Farben: Sie stehen auf unterschiedlichen Hintergründen, es gibt Bilder, Verläufe, Graukeile und Flächen. Dadurch kann der Betrachter die Farben im Zusammenspiel sehen und die beiden Bilder besser in Einklang bringen.

3) Wir verwenden bessere Farbauswahlboxen, als sie die meisten Grafikprogramme bieten. So unterstützen wir den Betrachter, die von ihm gewünschte Farbe auch wirklich zu treffen.

Eine Kritik zu unserer Projekt-Idee möchte ich nicht unerwähnt lassen: Warum soll man eine weitere Farbpalette ermitteln, wenn man doch einfach die Pepto-Farben in der PAL-Emulation eines C64-Emulators tweaken kann? Dazu möchte ich folgendes erwidern: Erstens haben nicht alle C64-Emulatoren so eine PAL-Emulation, zweitens trauen sich die meisten gar nicht, die Farben zu verändern, da sie ja “aufwändig berechnet und optimal” sind und drittens gibt es eine Vielzahl von Anwendungen, wo man auf keine PAL-Emu zurückgreifen kann. Die Community Colors sind in erster Linie gedacht für Anwendungsfälle, wo man schnell und einfach eine möglichst passende Palette braucht: Bei C64-Screenshots auf Webseiten und auch bei Grafikkonvertern zum “matchen” der Farben.

Die Community-Farben werden ermittelt, indem ein Testbild auf dem C64 mit der Darstellung des gleichen Bildes in unserer Java-Anwendung auf einem PC (Windows/MacOS/Linux) verglichen wird. Die PC-Farben können im Java-Programm nach Augenschein per Regler angepasst werden, bis eine Übereinstimmung mit der C64-Darstellung gegeben ist. Danach kann diese optimierte Farbpalette zu unserem Server übertragen werden. Wir generieren dann aus allen übertragenen Farbwerten eine gemittelte Farbpalette, indem wir die Gammakorrektur des jeweils verwendeten Zielsystems heraus rechnen, alle Farben in den geräteunabhängigen LAB-Farbraum transferieren, dort geometrische Mettelwerte errechnen und in den standardisierten sRGB-Farbraum (inkl. Gamma-Anpassung) konvertieren.

Schon die ersten übertragenen und gemittelten Profile haben uns gezeigt, wie gut die empirisch erzeugte Farbpalette funktioniert. Die Abstufung der Farben und Helligkeiten zueinander sind genau so überzeugend, wie die der Pepto-Palette aber die Sättigung der meisten Farben ist höher, was die Grafiken einiges schöner und überzeugender macht. Wir meinen, die CoCo-Palette stellt einen überzeugenden Kompromiss zwischen Genauigkeit und Farbbrillanz dar und beweist damit ihre Existenzberechtigung.

(hier werden wir Beispielbilder einfügen)

Wir haben nun eine ausreichende Anzahl von Farbsätzen bekommen, um eine recht stabile Wahrnehmungs-Farbpalette zu erzeugen. Damit sie von allen interessierten Personen genutzt werden kann, z. B. um Screenshots für Webseiten zu generieren oder für die Farbumwandlung eines Grafikkonverters, stellen wir hier demnächst die Community Colors V1.0 hier zur Verfügung. Wir möchten uns an dieser Stelle bei allen bedanken, die an der Erstellung der Farbpalette beteiligt waren und uns Profile geschickt haben. Trotzdem möchten wir auch weiterhin darum bitten, uns Farbprofile zukommen zu lassen, damit wir diese in die CoCo-Farbpalette integrieren können. Denn besser geht immer.

C64 FIBR

FIBR ist ein File Browser für den C64 und zeigt Verzeichnisse von original Commodore Floppys, SD2IEC (MMC2IEC) und MMC64 an. FIBR kann auch die Verzeichnisse (z. B. Festplatten-Images) von den Emulatoren VICE und Power64 anzeigen (auch mit Groß/Klein-Schreibung). Unser Ziel ist es, in Zukunft die meisten gängigen Cardreader und Festplatteninterfaces zu unterstützen. Der Browser ist komplett in Assembler programmiert und ausgesprochen schnell und kompatibel. Er unterstützt lange Dateinamen, Verzeichnisse und D64-Images. FIBR hat ein speziell für diesen Zweck entworfenes Interface mit modifiziertem Zeichensatz und (in einer späteren Version) auswählbaren Farb-Themes. Die Gestaltung ist sehr übersichtlich und funktional, die Schrift gut lesbar. Die Buchstaben sind kleiner als normale C64-Zeichen, um für eine bessere Lesbarkeit die Zeilenabstände zu erhöhen. Man kann zwischen verschiedenen Ansichten (1 Fenster oder 2 Fenster horizontal bzw. vertikal) umschalten und zwischen den Fenstern per Control-Taste springen. Es gibt einen proportionalen Scrollbalken und zu lange Namen werden sauber gekürzt.
Wie kam es zu der Idee, einen C64 File Browser zu entwickeln?
Retrofan: Als ich mir bei Shadowolf einen MMC2IEC-Bausatz (jetzt: sd2iec) bestellt hatte, der mir auf der Willow-Party 2007 freundlicherweise von Sushman (mit Unterstützung von DMC) zusammengebaut wurde, war ich von der ersten “modernen” Hardware, die ich an meinen C64 angeschlossen habe, schon recht angetan. Da ich aber auf der SD-Karte ausgiebig Gebrauch von Verzeichnissen machte, die ich jetzt erstmalig auf dem C64 nutzen konnte, fand ich das Navigieren durch die Ordner etwas mühselig. Keiner der gefundenen C64 File Browser unterstützte die neue Hardware (die meisten ohnehin jeweils nur genau eine Erweiterung), also war der Wunsch geboren, einen MMC2IEC-tauglichen File Browser nutzen zu können. Als ich ALeX meine Idee vortrug, war er sofort angetan. Wir sammelten also alle möglichen relevanten Infos, er fummelte sich stärker in die C64-Interna ein und fing an, die ersten Versionen des File Browsers zu programmieren. Ich entwickelte auf Basis von Entwürfen, die ich für einen Atari-Hardware-Emulator auf FPGA-Basis gestaltet hatte, die ersten Mockup-Screens, um die grundsätzliche Aufteilung und die optische Wirkung des Programms zu testen. Darauf basierend gestaltete ich einen (später immer wieder modifizierten) grafischen Zeichensatz mit allen nötigen Elementen (GUI-Elemente, Icons, Buchstaben), den ALeX dann als Basis für die Darstellung verwendete. Nach und nach entwickelte sich die Idee, mit dem Browser auch andere Hardware-Erweiterungen zu unterstützen, um die Entwicklung auch für Besitzer des iec-ata, des IDE-64 und anderer Hardware nutzbar zu machen.
Wie kam es zu dem Namen FIBR?
Retrofan: Das ist ein Kunstwort, das aus den ersten Buchstaben des Begriffs [Fi]le [Br]owser entstanden ist und gleichzeitig eine momentan beliebte Schreibweise der R-Endung aufgreift, wie sie bei Motorola-Produkten (RazR) oder auch Websites (FlickR) Verwendung findet. Ausgesprochen wird das Wort wie das englische “Fiber” (also mit “ai”).
Wie ist der derzeitige Stand?
Retrofan: Derzeit befindet sich FIBR noch im Alpha-Stadium. Momentan er  auf Commodore-Laufwerke (1541, 1571, 1581) und CMD-kompatible Laufwerke, sowie auf das sd2iec (ehemals MMC2IEC, mit aktueller Firmware von Unseen), IEC-ATA und IDE-64 zugreifen. Die verschiedenen Laufwerke werden automatisch erkannt und die Möglichkeiten von FIBR darauf angepasst. Falls das Laufwerk Verzeichnisse unterstützt, kann man mit FIBR dort hineingehen. Kann die Hardware D64 oder M2I-Dateien wie Verzeichnisse öffnen, kann man auch hier mit FIBR hinein gehen. Kann das Laufwerk lange Dateinamen oder Groß- und Kleinbuchstaben darstellen, werden auch diese korrekt in FIBR wiedergegeben. Spezielle C64-Grafikzeichen werden auf wenige, möglichst ähnliche Zeichen umgebogen, da wir in dem von FIBR verwendeten Zeichensatz neben Groß-und Kleinbuchstaben auch Zeichen für die Icons und GUI-Elemente benötigen, also keinen Platz für alle C64 Grafikzeichen haben. FIBR erkennt Dateitypen an Datei-Endungen (wie .koa) sowie an Ladeadressen und Dateigrößen, ordnet ihnen Icons zu und sortiert alle Dateien erst nach Typ und danach alphabetisch. Man kann entweder mit einem Fenster oder mit zwei Fenstern (in unterschiedlichen Anordnungen) arbeiten und so die Verzeichnisse von verschiedenen Laufwerken gleichzeitig anzeigen lassen. Man kann in Verzeichnissen mit den Cursortasten (und F5/F7, seitenweise: F6/F8) scrollen (optisch unterstützt von proportionalen Scrollbalken), mit [Return] oder [Space] in Ordner, D64s oder M2Is springen und mit [Cursor-Links] oder [Linkspfeil] in ein übergeordnetes Verzeichnis zurück kommen. Programme werden mit [Return] oder [Space] gestartet, wenn möglich, wird ein Fortschrittsbalken während des Ladens angezeigt. Rudimentäre Joystickfunktionen sind integriert.
Download: FIBR V1.0a22 (10.03 kB, 2008-03-14)

C64 Community Colors (Farbprofil erzeugen)

D64-Diskimage mit Testbild laden:

Community-Colors

Java Applet starten

Die Farben werden ermittelt, indem ein Testbild (hier als D64-Diskimage herunterzuladen) auf dem C64 mit der Darstellung des gleichen Bildes in unserer Java-Anwendung auf einem PC (Windows/MacOS/Linux) verglichen wird. Die PC-Farben können im Programm nach Augenschein per Regler angepasst werden, bis eine Übereinstimmung mit der C64-Darstellung gegeben ist. Danach kann diese optimierte Farbpalette zu unserem Server übertragen werden.

Wir bitten um möglichst umfangreiche Teilnahme an diesem Projekt, um einen möglichst großen Datenpool zu erhalten. Als Dank für Ihre Mühe bekommen Sie die ermittelten Daten sofort persönlich zur Verfügung gestellt. Der Testaufbau sollte wie folgt geschehen:

Bitte laden Sie zunächst das D64-Image herunter und kopieren Sie es sich (mittels X-Kabel o. ä.) auf eine echte C64-Diskette. Das auf dieser Diskette gespeicherte Testbild sollte nun auf dem C64 geladen und gestartet werden (es handelt sich um ein FLI-Bild mit integriertem Loader). Alternativ können Sie natürlich das D64-Image (oder den Inhalt) auch auf eine Speicherkarte kopieren, wenn Sie eine Speicherkartenlösung (MMC64, SD2IEC, 1541u) für den C64 besitzen. Bitte verwenden Sie keinen C64-Emulator für den Test, da wir die Farben der echten C64-Hardware ermitteln möchten und keine simulierten!

Stellen Sie nun den C64-Bildschirm so auf, dass sie diesen und den Bildschirm Ihres Referenzsystems (PC oder Mac) gleichzeitig sehen können. Versuchen Sie, das Umgebungslicht und die Bildschirmeinstellungen so anzupassen, dass sie Ihren üblichen Vorgaben entsprechen.

Sobald Sie auf dem C64 das Testbild sehen, können Sie den 2. oben angegeben Link anklicken. Das Java-Applet lädt und startet nun.

Hier sehen Sie das gleiche Testbild mit nicht optimierten Farben. Sie können nun eine beliebige Farbe im Bild per Mausklick auswählen und diese mittels der Regler am unteren Rand verändern, bis sie der Darstellung auf dem Original C64-Bildschirm entspricht. Bitte überprüfen Sie alle Farben bzgl. Ihrer Wirkung zueinander in den Farbstreifen und Testbildern.

Da es immer 2 Farben (außer schwarz und weiß) mit gleicher Helligkeit gibt, werden diese Paare in ihrer Helligkeit standardmäßig gemeinsam verändert (Das Paar wird optisch hervorgehoben). Diese Funktion können Sie ausschalten, wenn Ihre Wahrnehmung eine andere ist.

Nachdem Sie alle Farben angepasst haben, können Sie uns weitere Informationen über den Testaufbau in der rechten Randspalte mitteilen. Wenn Sie zu bestimmten Fragen keine Antworten wissen oder angeben möchten, lassen Sie sie einfach frei. Zum Schluss können Sie individuelle Anmerkungen (andere verwendete Hardware, Verbesserungsvorschläge etc.) und eine persönliche Kennung einfügen.

Sollte Sie verschiedene Hardwarekombinationen testen, verwenden Sie bitte immer die gleiche Kennung, damit wir wissen, dass die Ergebnisse von der gleichen Person kommen. Wenn Sie als Kennung Ihre eMail-Adresse angeben, bekommen Sie automatisch die von Ihnen eingestellten Werte als VICE-Palette, GIF-Farbpalette und RGB-Dezimalwerte zugeschickt. Bis wir eine gemittelte Palette ermittelt haben, können Sie mit ihren persönlichen Farbwerten arbeiten. Am Ende der Studie bekommen Sie dann die empirisch ermittelte Palette zugeschickt.

Wir hoffen, dass die hier ermittelte und von uns “C64 Community Colors” genannte Farbpalette in vielen C64 Screenshots, Webseiten, Grafikkonvertern und Emulatoren verwendet werden wird. Wir bedanken uns bei allen Teilnehmern an unserer Studie für ihre Zeit und Mühe, die sie der Verbesserung der Community Colors gewidmet haben.

Home

Willkommen auf P1X3L.net, der Projektseite von ALeX und Retrofan. Hier stellen wir gemeinsam erstellt Projekte ins Netz, die sich im weitesten Sinn um Mac OS, C64, Spiele und Grafik drehen. Momentan suchen wir Teilnehmer für das Community Colors Projekt, mit dem möglichst gut genäherte RGB-Farb-Entsprechungen zu den C64-Farben gefunden werden sollen.

Parallel arbeiten wir an einem C64 Grafik Konverter, der sich besonders dadurch auszeichnet, dass er Plattform-unabhängig online zur Verfügung stehen wird, besondere Raster- und Farb-Möglichkeiten bietet und bestmöglich auf die Einschränkungen der C64-Grafikmodi eingeht.

Bis zum Release des neuen Konverters steht den Besuchern unserer Website eine kleine Vorversion zur Verfügung, mit der man schon mal farbige Koala-und FLI-Bilder erzeugen kann.

In Zukunft werden wir hier noch weitere (z. T. schon fertig gestellte) Programme und Mac OS X Widgets vorstellen und zum Download anbieten.

Wir wünschen allen Besuchern viel Spaß und hoffen auf baldige Wiederkehr.

Mac QuickLook Plugin: C64 Images


This plugin allow you to view the following graphic formats:

  • Koala (.koa, MultiColor)
  • Koala (.gg, compressed, MultiColor)
  • Amica Paint (.ami, compressed, MultiColor)
  • FLI Designer (.fli, MultiColor, FLI)
  • Drazlace V1 (.drl, MultiColor, Interlaced)
  • Fun Painter 2 (.fp2, un-&compressed, MultiColor, FLI, Interlaced)
  • Hi-Eddi (.hed, Hires)
  • Image System Hires (.ish, Hires)
  • OCP Art Studio V2 (.ocp, Hires)
  • AFLI-Editor (.afli, Hires, FLI)
  • Still missing a format? Contact me.
C64Images V1.6.1 (44.79 KB, 2008-02-05)

History:

  • 2008-02-05: V1.6.1 – fixed a typo
  • 2008-02-04: V1.6 – oversized files are handled now more tolerant
  • 2007-12-23: V1.5 – many new formats: gg, ami, fli, drl, fp2, hed, ish, ocp, afli
  • 2007-11-26: V1.0 – initial release, only format: koa