Gab es bei C64 eine Möglichkeit, die 16 Farben zu ändern?

7 Antworten

Ich erinnere mich, dass man mit den Eingaben von POKE 53280,x und POKE 53281,x Schriftfeld und Bildschirmrahmen ändern konnte. Die Schriftfarbe änderte man mit einer Tastenkombination oder in einer Programmierzeile mit PRINT "[Farbtaste]"

Ich bin mir aber ziemlich sicher, dass es nur die vorgegebenen 16 Farben gibt.

Nein, die Farben sind im Videochip fest verdrahtet. Der VIC-II simuliert hier EGA Grafik.

Bei EGA gibt es drei TTL Leitungen die die jeweilige "Farbkanone" im Monitor ein und ausschaltet, also Rot, Grün und Blau. Dazu gibt es eine Intensity Leitung die dann vereinfacht nur die Helligkeit verdoppelt. So gibt es nur 8 Farben in jeweils hell und dunkel. Die werden durch eine 4-Bit Zahl dargestellt, also 16 Möglichkeiten.

Im VIC-II des C64 wird FBAS verwendet, da wird das dann komplizierter. Hier kann der C64 nur vier verschiedene Helligkeiten erzeugen und die Farbe der 4 Graustufen über die Phasenlage des Farbhilfsträgers des FBAS Signals in 4 Stufen verändern. Sättigung kann der C64 gar nicht beeinflussen! Damit lassen sich aber EGA ähnliche Farben erzeugen. Das ist der Grund, warum ein EGA PC nur zwei Graustufen hat, der C64 aber drei (+ Schwarz natürlich). Auch zeigt EGA ein "Dunkelgelb" während der C64 stattdessen Braun erzeugen kann. Im C128 der einen zweiten Ausgang mit pseudo-EGA hat, haben die Commodore Monitore eine "Brown detection" um das Dunkelgelb in ein C64-artiges Braun zu verwandeln.

Es ist also technisch nicht möglich, die Farben zu ändern.

Aber man kann verschiedene Effekte nutzen um bei einem fernseher die Farben zu manipulieren und so Farben zu bekommen, die es eigentlich nicht geben dürfte.

Europäische Fernseher haben eine Farbkorrektur um Sendestörungen auszugleichen. Dazu wird die Farbinformation einer Zeile verzögert und mit der nächsten Zeile gemischt. Das PAL verfahren überträgt jede zweite Zeile invertiert. Funkstörungen wirken sich also z.B. auf gerade Zeilen positiv aus, auf ungerade Zeilen dann negativ. Bildet man die Summe, heben sich diese Störungen auf.

Da der C64 nur 200 Zeilen erzeugt, der Fernseher aber 576 zeilen hat, müssen die Zeilen verdoppelt werden um das Bild groß zu machen. Da der Fernseher halbbilder zeichnet, also jede 2. Zeile überspringt und 2 Halbbilder sich zu einem Vollbild zusammen setzen, zeigt der C64 zwei ganze Bilder mit nur 200 Zeilen und so stellt der Fernseher das mit 400 Zeilen dar, also doppelt so groß. Der Rest wird vom Bildrahmen (der Hellblaue Rahmen) aufgefüllt in dem man normal keinen text oder Grafik zeigen kann.

Schaltet man jetzt die Farben in aufeinanderfolgenden Halbbildzeilen um, mischt der Fernseher die Farben durch seine Farbkorrektur und man bekommt eine neue Farbe. So lassen sich dann 32 Farben erzeugen, die CPU ist dann aber fast komplett mit umschalten beschäftigt.

Schaltet man dann noch mal Farben zwischen den Halbbildern um, so mischt das Auge diese Flackerei zu ebenfalls neuen Farben. Man bekommt also ein flimmerndes Bild wo man ungefähr 256 verschiedene Farben unterscheiden kann.

Da das aber fast die ganze CPU Zeit verbraucht kann man das nur für Demos verwenden, kaum für Spiele - und schon gar nicht für bestehende Spiele!

Also nein, man kann die Farben des C64 nicht austauschen oder neue Farben "erfinden", kann aber den Fernseher dazu bringen mehr Farben zu zeigen und das Auge noch mehr verschiedene Farben zu sehen.

Woher ich das weiß:Hobby

Die 16 Farben waren beim C64 allenfalls austauschbar, aber in sich unveränderlich.

Es gab aber den Trick, mit abwechselnd nebeneinander liegenden Streifen von einem Pixel Breite (z. B. Gelb und Rot) einen orangeähnlichen Farbton zu erzeugen oder Farben matter erscheinen zu lassen. Ich weiß noch, dass das nur in einer Richtung funktionierte, aber ich habe nach nunmehr 33 Jahren C64-Ende vergessen, ob der Trick mit waagerechten oder senkrechten Streifen anzuwenden war.

In dem nach dem damaligen technischen Stand genialen Grafikprogramm "Hi-Eddi" wurde die Methode beschrieben, und ich habe sie auch erfolgreich ausprobiert.

Woher ich das weiß:eigene Erfahrung

Der C64 kann nur seine 16 Farben darstellen. Es gibt Programmiertricks bei denen man die Farben sehr schnell ändert, damit ist es möglich die Zahl der darstellbaren Farben deutlich zu vergrößern, aber das ist schon sehr aufwändig.

Der VIC-Chip hatte 16 fest "verdrahtete" Farben.

Im Multicolor-Modus können einem Sprite Muster zusätzlich zum Hintergrund 3 weitere Farben zugeordnet werden. Die Mischung erzeugt den groben Eindruck von mehr Farben. (Dither)

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

http://codebase64.org/doku.php?id=base:vic_and_demo_programming

Vergessen wir nicht, wir hatten zur Zeit des C64 Röhrenfernseher mit einer intereased-PAL-Auflösung von 768 x 576 (sichtbar 712×504) die Bildschirme waren klein und die Bildpunkte "Weich".

Heute ist kaum noch C64-Hardware vorhanden und Enthusiasten spielen und programmieren an Emulatoren. Emus versuchen mit künstlicher Unschärfe und einengen der Farbbrilianz irgendwie den Eindruck einer "Röhre" zu zaubern, aber unsere Augen/Gehirne sind nicht mehr gewohnt "Röhrenmatsch" zu akzeptieren.

Deine Screenshots sehen nach Emu mit HiRes-Ausgabe ohne Filter aus. Damit wirst Du aus 320x200 (oder gar 160×200 Multcolor) nur Klötzchen bekommen.

Informationen rund um die C64-Grafik findest du im Wiki: https://www.c64-wiki.com/wiki/Category:Graphics