Sprites auf dem Amstrad/Schneider CPC
Der CPC 464, 664 und 6128 hat keine Hardware-Sprites. Jede Spielfigur ist ein paar Dutzend Bytes, die der Z80 selbst in den Bildschirmspeicher schreibt – und vor dem nächsten Bild wieder wegräumt. Hier sehen Sie, wie die Pixel in den Bytes stecken, malen eigene Sprites und lassen sechs Zeichenroutinen im Emulator gegeneinander antreten.
❓Warum Software-Sprites?
🖥️ So erzeugt der CPC sein Bild
Sprite-Daten Z80 (4 MHz) RAM &C000–&FFFF
┌───────────┐ LD/LDI/AND/OR ┌────────────────────┐
│ db &C0,… │ ─────────────────► │ 16 KB Bildspeicher │
└───────────┘ (Ihr Programm) └─────────┬──────────┘
│ liest ständig
┌────────────────────┴──────────┐
│ CRTC 6845: Adressen, Timing │
│ Gate Array: Modus, 27 Farben │
└────────────────────┬──────────┘
▼
Monitor (50 Hz)Der CRTC 6845 zählt Zeilen und Zeichen und erzeugt daraus die Speicheradressen, das Gate Array macht aus den gelesenen Bytes Pixel in einer der 27 Farben. Beide zeigen nur, was im RAM steht. Es gibt keine Sprite-Register – jede Figur muss der Prozessor selbst in den Bildschirmspeicher schreiben und beim Bewegen den Hintergrund wiederherstellen. Genau das kostet Rechenzeit und ist der Kern dieser App.
⚖️ Zum Vergleich
| Rechner | Sprites | Wie |
|---|---|---|
| CPC 464/664/6128 | keine in Hardware | Software: Z80 schreibt Bytes in den Bildschirmspeicher |
| Commodore 64 | 8 Hardware-Sprites (24 × 21 Pixel) | Videochip VIC-II blendet sie über das Bild, Position per Register |
| CPC 6128 Plus / 464 Plus (1990) | 16 Hardware-Sprites (16 × 16) | ASIC mit eigenem Sprite-Speicher – siehe CPC Plus |
Alle vier Beispiele sind 4 Bytes breit und 16 Zeilen hoch = 64 Bytes – aber 8, 16 bzw. 32 Pixel breit, je nach Modus.
🧭Kapitel
Pixel & Adressen
Wie Modus 0, 1 und 2 Pixel in Bits verteilen, wo Zeile y im Speicher liegt und wie „nächste Zeile“ mit der &C050-Korrektur funktioniert.
Sprite-Editor
Pixel malen mit der CPC-Palette (27 Farben, INK-Zuordnung), Vorschau in Originalgröße, Export als db, BASIC-DATA und Maske.
Zeichenroutinen
LDI, XOR, Maske, Transparenz-Tabelle, Pre-Shifting und kompilierte Sprites – im Emulator ausgeführt, Kosten in µs gemessen.
Flimmerfrei animieren
Auf den Strahlrücklauf warten, Hintergrund wiederherstellen, Double Buffering über CRTC-Register 12.
Der Firmware-Weg
SCR DOT POSITION, SCR NEXT LINE, GRA PLOT und benutzerdefinierte Zeichen (SYMBOL) – bequem, aber langsam.
CPC Plus: echte Sprites
Der ASIC des 6128 Plus: 16 Hardware-Sprites 16 × 16, 15 eigene Farben aus 4096, Vergrößerung ×1/×2/×4 – simuliert.
Werkzeuge & Quellen
ConvImgCPC, Retro Game Asset Studio, WinAPE, CPCtelera – und alle Quellen dieser Seite.
⚡Das Wichtigste in drei Zeilen Z80
; Ein Byte des Sprites vor den Hintergrund setzen (Maske + Sprite)
ld a,(de) ; Hintergrund-Byte vom Bildschirm
and (hl) ; Maske: 1-Bits = Hintergrund bleibt
inc hl
or (hl) ; Sprite-Bits einsetzen
ld (de),a ; zurück auf den Bildschirm👾Mehr CPC in der Sammlung
VisualZ80 – Assembler und Firmware des CPC 6128
Der Emulator, Assembler und Debugger dieser Seite stammen von dort – mit allen 245 Firmware-Einsprüngen.
VisualBoulderDash – ein CPC-Spiel zerlegt
Dort werden echte Modus-0-Sprites aus einem Z80-Programm dekodiert – mit derselben Bitverteilung wie hier.