Die Programmierung mit dem C64 war ein wenig Tricky.
Sprites wurden programmiert. Entweder direkt mit Assember, oder wenn man BASIC verwendet hat, über den POKE-Befehl.
POKE und PEEK waren die einzigen Möglichkeiten mittels BASIC direkt mit der Hardware zu kommunizieren. POKE schreibt in den Speicher und PEEK liest den Speicher.
Standardgemäß kann der C64 allerdings nur 8 Sprites gleichzeitig darstellen. Mittels Assembler war aber noch deutlich mehr möglich.
Ein einfarbiger Sprite hat eine Größe von 24x21 Pixeln. Mehrfarbige Sprites 12x21, da sie mehr Informationen beinhalten.

Die Sprites wurden dann in Blöcken aufgeteilt, und in den Speicher geschrieben.
Die Startadresse des VIC (Video-Interface-Chip) ist $D000 (53248).
Unter $D000 (53248) liegt auch die X-Position des ersten Sprites. Unter $D001 (53249) die Y-Position.
Wenn wir nun POKE 53248,10 : POKE 53249,20 eingeben, dann wird das erste Sprite in Position (10 | 20) gezeichnet.
Dann müssen wir den VIC sagen, welche der 8 Sprites aktiv ist. Dies geschieht unter der Adresse $D015 (53269). Wenn wir nun POKE 53269,1 (1 = 0000 0001) schreiben, dann ist das erste Sprite aktiv. Bei POKE 53269,3 wären die ersten beiden aktiv (3 = 0000 0011), etc.

Jetzt müssen wir den VIC noch sagen, wo unsere Sprite-Daten zu finden sind. Unter der Adresse $07F8 (2040) geben wir den Zeiger für das erste Sprite an.
Wir müssen uns also einen Bereich im Speicher suchen, den wir benutzen können. Die Daten müssen aber in den 16 KBytes des Speichers stehen. Ein Sprite braucht also 63 Bytes. Der VIC unterteilt den Speicher alllerdings in 64 Byte Blöcken.
Der 13te, 14te und 15te Block wird vom System nicht verwendet und gilt daher als sicher, daher können wir Block 13 verwenden. Also geben wir POKE 2040, 13 an.

Und nun kommen die eigentlichen Daten. Die Startadresse von Block 13 ist $AC1A (832). Wir können jetzt also nun POKE 832, 15 angeben, und er würde dann eine Linie aus 8 Pixeln zeichnen (15 = 1111 1111).

Dieses Beispiel gilt jetzt allerdings nur für BASIC. Mittels Assembler hat man da nun weit aus mehr Möglichkeiten, da wir dort den Videospeicher auch direkt ansprechen können. So können wir auch jeden Pixel einzeln ansprechen und ihn mit Werten füllen. Auch wäre es denkbar zwei Sprites zu addieren, etc. Auch gab es schon damals diverse Hilfsmittel, um Sprites zu zeichnen. Z.B. Zeichenprogramme, die gleich den Assembler- oder BASIC-Code generierten.