👾 Visuelle Erklärung · Retro-Computing

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.

Hardware-Sprites
0
CPC 464/664/6128 – der Plus hat 16
Bildschirmspeicher
16 KB
&C000–&FFFF, 80 Bytes × 200 Zeilen
Zeit je Bild
19 968 µs
312 Rasterzeilen × 64 µs bei 50 Hz
Farben
27
16 gleichzeitig in Modus 0

❓Warum Software-Sprites?

Ein Sprite ist ein kleines, bewegliches Bild vor einem Hintergrund. Manche Heimcomputer mischen solche Bilder in der Videohardware ein – der klassische CPC nicht.

🖥️ 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

RechnerSpritesWie
CPC 464/664/6128keine in HardwareSoftware: Z80 schreibt Bytes in den Bildschirmspeicher
Commodore 648 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
Pixelgeist · Modus 0
Rakete · Modus 0
Roboter · Modus 1
Smiley · Modus 2

Alle vier Beispiele sind 4 Bytes breit und 16 Zeilen hoch = 64 Bytes – aber 8, 16 bzw. 32 Pixel breit, je nach Modus.

🧭Kapitel

⚡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
✅ Probieren Sie es aus
Diese Zeilen stecken in Routine (c) auf der Seite Zeichenroutinen. Dort läuft jede Routine im Z80-Emulator aus VisualZ80; der Schritt-Debugger zeigt Register, Speicher und Bildschirm nach jedem Befehl, und die Zeit wird im 1-µs-Raster des CPC gemessen.

👾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.

visualz80.fusenigk.de ↗
💎

VisualBoulderDash – ein CPC-Spiel zerlegt

Dort werden echte Modus-0-Sprites aus einem Z80-Programm dekodiert – mit derselben Bitverteilung wie hier.

visualboulderdash.fusenigk.de ↗