Multicolor

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Ein Textbeispiel im Multicolormodus mit Multicolor-Zeichen (in schwarz, dunkelgrau und blau) und Monochrome Zeichen (in schwarz).

Den Darstellungsmodus Multicolor gibt es bei Zeichen, Sprites und Grafik. Er bietet bis zu vier Farben pro Kachel bzw. pro Sprite. Da bei der Darstellung von Multicolor-Pixeln jeweils zwei Bits als ein Bitpaar für die Farbangabe benutzt werden, ist die Auflösung von Multicolorzeichen, -sprites und -grafiken horizontal gegenüber dem normalen Anzeigemodus (Hires) halbiert.

Das Ein- und Ausschalten des Multicolormodus erfolgt durch Ändern der Werte in den entsprechenden zuständigen Speicheradressen des VIC, etwa unter BASIC mit Hilfe des Befehls POKE.


Multicolor-Zeichen[Bearbeiten | Quelltext bearbeiten]

Im Multicolormodus auf Zeichenebene ist die Besonderheit zu beachten, dass hier nur die ersten acht Farben (0 bis 7) zur freien Verfügung stehen. Die höheren Farbindizes (8 bis 15) entsprechen hierbei den ersten acht Farben, schalten aber für das entsprechende Zeichen überhaupt erst den Multicolormodus ein. Wird einer der niedrigeren Farbcodes gewählt, so wird das Zeichen monochrom mit dieser Farbe dargestellt. Somit ist es möglich, Mono- und Multicolorzeichen gleichzeitig auf einem Bildschirm darzustellen, ohne aufwändige Darstellungstricks verwenden zu müssen.

  • Der Multicolormodus für Zeichen wird über VIC-Adresse $D016 Bit 4 gesteuert.
  • Einschalten des Multicolormodus: POKE 53270,PEEK(53270) OR 16
  • Ausschalten des Multicolormodus: POKE 53270,PEEK(53270) AND 239
Farb-Bits Entsprechende Farbe Speicheradresse
00 Bildschirmfarbe 53281
01 Multicolorfarbe 1 53282
10 Multicolorfarbe 2 53283
11 Farbspeicher (Zeichenfarbe) 55296-56295

Die Farb-Bits 00 und 01 werden hierbei als Hintergrund betrachtet, die Farb-Bits 10 und 11 als Vordergrund. Das ist relevant, wenn Sprites hinter dem Text dargestellt werden, da beide Hintergrundfarben dann weiterhin hinter dem Sprite verschwinden.

Multicolor-Sprites[Bearbeiten | Quelltext bearbeiten]

Verschiedene Multicolor-Sprites.
  • Der Multicolormodus für Sprites wird über VIC-Adresse $D01C gesteuert.
  • Einschalten des Multicolormodus für alle Sprites: POKE 53276,255
  • Ausschalten des Multicolormodus für alle Sprites: POKE 53276,0

Ansonsten kann gezielt z. B. mit POKE 53276,X (X = 1, 2, 4, 8, 16, 32, 64, 128 für Sprite 0 bis 7) das jeweilige Sprite auf Multicolormodus umgeschaltet werden. Durch entsprechende Addition der genannten Werte können auch mehrere Sprites gleichzeitig in den Multicolormodus gehen. Will man beispielsweise die drei Sprites 0 bis 2 auf Multicolor umschalten, so erfolgt dies mit POKE 53276,7 (7 = 1+2+4).

Farb-Bits Entsprechende Farbe Speicheradresse
00 Bildschirmfarbe 53281
01 Multicolorfarbe 1 53285
10 Farbe des
entsprechenden Sprites
53287-53294
11 Multicolorfarbe 2 53286

Multicolor-Grafik[Bearbeiten | Quelltext bearbeiten]

  • Der Multicolormodus für Grafik wird über VIC-Adresse $D011 Bit 5 (Bitmap-Modus) und VIC-Adresse $D016 Bit 4 (Multicolor) gesteuert.
    • Einschalten des Multicolormodus: POKE 53265,PEEK(53265) OR 32 : POKE 53270,PEEK(53270) OR 16
    • Ausschalten des Multicolormodus: POKE 53265,PEEK(53265) AND 223 : POKE 53270,PEEK(53270) AND 239
  • Multicolor-Bilder haben eine Auflösung von 160×200 Pixel und können pro Kachel vier verschiedene Farben enthalten.
Jedem Bitpaar der Bitmap ist eine der vier Farben folgendermaßen zugeordnet:
Bitpaar Farbe Speicheradresse (hex)
00 Hintergrundfarbe 53281 ($D021)
01 Obere vier Bits vom Bildschirmspeicher 1024-2023 ($0400-$07E7), konfigurierbar
10 Untere vier Bits vom Bildschirmspeicher 1024-2023 ($0400-$07E7), konfigurierbar
11 Farbspeicher 55296-56295 ($D800-$DBE7)

Siehe den Artikel Multicolor Bitmap-Modus mit zusätzlichen Details.


Beispiele von Multicolor-Bildern