🎨Bildschirm, Modi & Farben

16 KB Bildschirmspeicher, drei Modi, 27 Farben: Beim CPC bestimmt der Modus, wie viele Pixel in einem Byte stecken – und in welchen Bits. Mehr Pixel pro Byte heißt weniger Bits pro Pixel und damit weniger Tinten.

📺Die drei Modi

ModusAuflösungZeichenTintenPixel/ByteBits/PixelTypische Nutzung
0160 × 20020 × 251624Spiele (bunt, breite Pixel)
1320 × 20040 × 25442Standard nach dem Einschalten
2640 × 20080 × 25281Text mit 80 Spalten, Textverarbeitung

🔬Pixel-Bitkodierung zum Anklicken

2 Pixel in einem Byte – Tinte je Pixel wählen
Pixel 0
Pixel 1

Farben = Standardtinten nach dem Einschalten (SOFT 968, Appendix V).

Das Byte im Bildschirmspeicher
Bit 7
1
P0·20
Bit 6
0
P1·20
Bit 5
1
P0·22
Bit 4
0
P1·22
Bit 3
0
P0·21
Bit 2
1
P1·21
Bit 1
0
P0·23
Bit 0
1
P1·23
&A5 = %10100101 = 165

Modus 0: linkes Pixel = Bits 1,5,3,7 (höchstwertiges Tintenbit zuerst), rechtes = Bits 0,4,2,6 – die Bits sind verschränkt.

🧮Adressrechner

Adresse = &C000 + (Y mod 8)·&800 + (Y div 8)·80 + X div 4
        = &C000 + 5·&800 + 4·80 + 25
        = &E959      Maske = &88 (Pixel 0 im Byte)
Warum springt die Adresse um &800?
PixelzeileAdresseBlock
0&C0000 (&C000–&C7FF)
1&C8001 (&C800–&CFFF)
2&D0002 (&D000–&D7FF)
3&D8003 (&D800–&DFFF)
4&E0004 (&E000–&E7FF)
5&E8005 (&E800–&EFFF)
6&F0006 (&F000–&F7FF)
7&F8007 (&F800–&FFFF)
8&C0500 (&C000–&C7FF)
9&C8501 (&C800–&CFFF)

Die acht Pixelzeilen einer Zeichenzeile liegen in acht verschiedenen 2-KB-Blöcken. So braucht die Hardware (CRTC) für jede Zeichenzeile nur eine Startadresse; die Zeilennummer 0–7 im Zeichen wählt den Block. Am Ende jedes Blocks bleiben 48 Bytes (2048 − 25 · 80) ungenutzt.

🌈Die 27 Farben

Jede Grundfarbe (Rot, Grün, Blau) kennt drei Stufen: aus, halb, voll → 3 × 3 × 3 = 27 Farben. Die Firmware nummeriert sie wie eine Grauskala (0 = dunkelste, 26 = hellste; Nummer = 9·G + 3·R + B), das Gate Array benutzt eigene Hardware-Nummern.
#000000
0 · Schwarz
Black
HW 20 · OUT &54
#000080
1 · Blau
Blue
HW 4 · OUT &44
#0000ff
2 · Hellblau
Bright blue
HW 21 · OUT &55
#800000
3 · Rot
Red
HW 28 · OUT &5C
#800080
4 · Magenta
Magenta
HW 24 · OUT &58
#8000ff
5 · Malve
Mauve
HW 29 · OUT &5D
#ff0000
6 · Hellrot
Bright red
HW 12 · OUT &4C
#ff0080
7 · Purpur
Purple
HW 5 · OUT &45
#ff00ff
8 · Hellmagenta
Bright magenta
HW 13 · OUT &4D
#008000
9 · Grün
Green
HW 22 · OUT &56
#008080
10 · Cyan
Cyan
HW 6 · OUT &46
#0080ff
11 · Himmelblau
Sky blue
HW 23 · OUT &57
#808000
12 · Gelb
Yellow
HW 30 · OUT &5E
#808080
13 · Weiß
White
HW 0 · OUT &40
#8080ff
14 · Pastellblau
Pastel blue
HW 31 · OUT &5F
#ff8000
15 · Orange
Orange
HW 14 · OUT &4E
#ff8080
16 · Rosa
Pink
HW 7 · OUT &47
#ff80ff
17 · Pastellmagenta
Pastel magenta
HW 15 · OUT &4F
#00ff00
18 · Hellgrün
Bright green
HW 18 · OUT &52
#00ff80
19 · Seegrün
Sea green
HW 2 · OUT &42
#00ffff
20 · Hellcyan
Bright cyan
HW 19 · OUT &53
#80ff00
21 · Limone
Lime
HW 26 · OUT &5A
#80ff80
22 · Pastellgrün
Pastel green
HW 25 · OUT &59
#80ffff
23 · Pastellcyan
Pastel cyan
HW 27 · OUT &5B
#ffff00
24 · Hellgelb
Bright yellow
HW 10 · OUT &4A
#ffff80
25 · Pastellgelb
Pastel yellow
HW 3 · OUT &43
#ffffff
26 · Leuchtweiß
Bright white
HW 11 · OUT &4B

🖌️Standardtinten nach dem Einschalten

TinteFarbe(n)Firmware-Nr.
0Blau1/1
1Hellgelb24/24
2Hellcyan20/20
3Hellrot6/6
4Leuchtweiß26/26
5Schwarz0/0
6Hellblau2/2
7Hellmagenta8/8
8Cyan10/10
9Gelb12/12
10Pastellblau14/14
11Rosa16/16
12Hellgrün18/18
13Pastellgrün22/22
14Blau / Hellgelb (blinkend)1/24
15Himmelblau / Rosa (blinkend)11/16
RandBlau1/1
💡 Tinte ≠ Farbe
Im Bildschirmspeicher steht nur die Tintennummer. Welche Farbe eine Tinte hat, steht in der Palette des Gate Arrays – ein SCR SET INK (&BC32) färbt sofort alle Pixel dieser Tinte um, ohne ein Byte im Speicher zu ändern.
✅ Blinken
Jede Tinte hat zwei Farben; die Firmware wechselt sie im Takt von SCR SET FLASHING (Standard: je 10 Bildwechsel = 1/5 s).
⚠️ Direkt ans Gate Array
LD BC,&7F00 : OUT (C),C wählt Tinte 0, LD C,&4B : OUT (C),C setzt Leuchtweiß (HW 11). Die Firmware stellt ihre Farben beim nächsten Blinktakt wieder her – dauerhaft also über SCR SET INK.

Quellen: SOFT 968 Abschnitt 6 und Appendix V; Gate-Array-Farbcodes nach K. Thacker „Amstrad CPC Gate-Array“ (cpctech). RGB-Werte idealisiert (0 %, 50 %, 100 %). Die Pixelkodierung ist dieselbe wie in VisualBoulderDash (Modus-0-Sprites).