Farbe

Aus C64-Wiki
(Weitergeleitet von Palette)
Zur Navigation springenZur Suche springen
Die 16 Farben des C64

Der C64 besitzt die Möglichkeit, 16 verschiedene Farben darzustellen. Diese 16 Farben beziehen sich auf alle möglichen Bildschirmdarstellungen, nicht nur auf Zeichen oder den Bildschirm an sich, sondern auch auf Sprites (auch Multicolor), hochauflösende Grafik, usw.

Im Direkteingabemodus lässt sich die Zeichenfarbe bequem per Tastenkombination ändern, in BASIC kann dies mittels PRINT CHR$(Wert) bzw. Steuerzeichen erledigt werden. Für das Ändern der Farbe von Sprites, Hintergrundfarbe, Rahmenfarbe oder Pixel in einer Grafik müssen in BASIC der BASIC-Befehl POKE Speicheradresse, Farbwert bzw. die entsprechenden Pendants in Maschinensprache verwendet werden.


Farbtabelle[Bearbeiten | Quelltext bearbeiten]

Farbe Name Farbwert
für
POKE
HEX Direkt durch
Tastenkombination
Im Programm:
PRINT
CHR$(X)
Werte für X:
Oder per PRINT "Steuerzeichen"
(in Anführungszeichen!)
HTML-
Farbcode
Schwarz
Schwarz
Schwarz 0 $00 CTRL + 1  144 Rechteck links unten #000000
Weiß
Weiß
Weiß 1 $01 CTRL + 2  5 inverses E #ffffff
Rot
Rot
Rot 2 $02 CTRL + 3  28 inverses Pfund #880000
Cyan
Cyan
Türkis 3 $03 CTRL + 4  159 Dreieck unten links #aaffee
Purpur
Purpur
Violett 4 $04 CTRL + 5  156 inverses Halbschach #cc44cc
Grün
Grün
Grün 5 $05 CTRL + 6  30 inverser Pfeil hoch #00cc55
Blau
Blau
Blau 6 $06 CTRL + 7  31 inverser Linkspfeil #0000aa
Gelb
Gelb
Gelb 7 $07 CTRL + 8  158 inverses π #eeee77
Orange
Orange
Orange 8 $08 C= + 1  129 inverses Pik #dd8855
Braun
Braun
Braun 9 $09 C= + 2  149 inv. 1/4-Kreis o.l. #664400
Hellrot
Hellrot
Hellrot 10 $0a C= + 3  150 inverses Grafik-X #ff7777
Dunkelgrau
Dunkelgrau
Grau 1 11 $0b C= + 4  151 inverser Kreisring #333333
Mittelgrau
Mittelgrau
Grau 2 12 $0c C= + 5  152 inverses Kreuz (Kartenfarbe) #777777
Hellgrün
Hellgrün
Hellgrün 13 $0d C= + 6  153 inv. Strich rechts #aaff66
Hellblau
Hellblau
Hellblau 14 $0e C= + 7  154 inverses Karo #0088ff
Hellgrau
Hellgrau
Grau 3 15 $0f C= + 8  155 inverses Kreuz #bbbbbb

Mit C=  ist die Commodore-Taste gemeint.


Die C64-Farben werden (bei einem PAL-Gerät) nach dem YUV-Farbmodell erzeugt und müssen für RGB-Monitore umgerechnet werden. Da die Darstellung von dem benutzten Gerät abhängig und die Farbwahrnehmung bei Menschen unterschiedlich ist, gibt es keine RGB-Palette, die für jede(n) die Farben des C64 "richtig" darstellt. In der obigen Tabelle wird die Palette aus GoDot benutzt.


Speicheradressen für Farbeinstellungen[Bearbeiten | Quelltext bearbeiten]

Hier erfolgt ein kurzer Speicheradressenüberblick bzw. eine Zusammenfassung von Speicheradressen, die Farbwerte enthalten bzw. deren Farben durch die BASIC-Befehle PEEK gelesen und POKE geändert werden können.

Adresse(n) (dez/hex) Bedeutung Standardwert Farbwert
646 ($0286) Textfarbe 14 14
647 ($0287) Farbe unter der Cursorposition unbestimmt 14
53280 ($D020) Rahmenfarbe (Farbwerte 0-15, danach wiederholen sie sich) 254 14
53281 ($D021) Hintergrundfarbe 0 (normaler Modus) 246 6
53282 ($D022) Hintergrundfarbe 1 (nur im Multicolor- & erweiterten Hintergrundfarben-Modus) 241 1
53283 ($D023) Hintergrundfarbe 2 (nur im Multicolor- & erweiterten Hintergrundfarben-Modus) 242 2
53284 ($D024) Hintergrundfarbe 3 (nur im erweiterten Hintergrundfarben-Modus) 243 3
53285 ($D025) Sprite Multicolor 1 (nur im Sprite-Multicolor-Modus) 244 4
53286 ($D026) Sprite Multicolor 2 (nur im Sprite-Multicolor-Modus) 240 0
53287 ($D027) Farbe Sprite 0 241 1
53288 ($D028) Farbe Sprite 1 242 2
53289 ($D029) Farbe Sprite 2 243 3
53290 ($D02A) Farbe Sprite 3 244 4
53291 ($D02B) Farbe Sprite 4 245 5
53292 ($D02C) Farbe Sprite 5 246 6
53293 ($D02D) Farbe Sprite 6 247 7
53294 ($D02E) Farbe Sprite 7 252 12
55296 - 56295
($D800 - $DBE7)
Farbspeicher - Hierüber können alle Zeichen des Bildschirminhalts (25 Zeilen bzw. 40 Zeichen pro Zeile) direkt angesprochen werden, z.B. POKE 55296,1 setzt das linke oberste Zeichen auf die Farbe weiß. unbestimmt je nach Farbe

Da für die Kodierung von 16 Farben 4 Bit genügen, werden in den Bytes der Farbspeicheradressen immer nur die Bits 0 bis 3 für den Farbwert benutzt. Für den Wert des oberen Nibbles gibt es drei Möglichkeiten:

  1. Bits 4 bis 7 sind 0: Gilt für Adresse 646, die deshalb auch einfach mit PEEK(646) ausgelesen werden kann.
  2. Bits 4 bis 7 sind 1: Gilt für die Adressen 53280 bis 53294, weshalb hier immer 240 ($F0) zum Farbwert hinzukommt.
  3. Bits 4 bis 7 sind undefiniert: Gilt für alle Werte des Farb-RAMs und auch für die Adresse 647.

In den letzten beiden Fällen muss man deshalb gezielt die Bits 0 bis 3 auswählen, z.B. in BASIC für die Hintergrundfarbe:

FB = PEEK(53281) AND 15

Der Bildschirmspeicher, welcher im Hires- und im Multicolor-Bitmap-Modus als Farbspeicher dient, unterscheidet sich in dieser Funktion von den anderen:

  • Er besitzt keine feste Adresse, sondern kann mit Einschränkungen frei im RAM positioniert werden.
  • Jedes seiner Bytes enthält zwei Farbwerte, je einen in den Bits 0-3 und einen in den Bits 4-7. Damit kann er die 2000 Werte in ca. 1 KByte speichern. So ist es möglich, in einer 16 KByte großen VIC-Bank bis zu 8 Bildschirmspeicher neben der 8 KByte großen Bitmap unterzubringen - wichtig z.B. für eine FLI-Grafik.

Luminanzen[Bearbeiten | Quelltext bearbeiten]

Die C64-Farben weisen mit VIC II 656xR3 neun verschiedene Luminanzen, d.h. Helligkeiten, auf. Nur die Version VIC II 6569 R1 hat lediglich 5 Luminanzstufen.[1] Man kann die Luminanzen sichtbar machen, wenn man am Monitor die Farbsättigung ganz herunter dreht bzw. im Emulator auf 0 stellt. Sieben Farben haben einen Partner mit dem gleichen Grauwert, dazu kommen Schwarz und Weiß.


Die obigen Beispiele sind mit VICE (interne RGB-Palette) erstellt worden.

Das folgende Bild zeigt die Verteilung der 9 Graustufen auf einer Grauskala mit 24 Grauwerten plus Schwarz und Weiß:

Grafikern und Programmierern wird empfohlen, sich die folgende Grafik von der Seite der Gruppe Hitmen anzuschauen; dort werden die Luminanzen so dargestellt, wie man sie für Anti-Aliasing, Farbverläufe (z.B. in Rasterbars oder Plasma) oder Fade-in/Fade-out benötigt. [2]


Weblinks[Bearbeiten | Quelltext bearbeiten]

Quellen[Bearbeiten | Quelltext bearbeiten]