Kachel

Aus C64-Wiki
(Weitergeleitet von Tile)
Wechseln zu: Navigation, Suche

Kachel (auch bezeichnet als Block, Card oder Tile) ist beim C64 ein Begriff, der mit dessen Implementation der hochauflösenden Grafik zu tun hat.

(thumbnail)
Grafikspeicheraufbau des C64. Anklicken für eine vergrößerte Darstellung

Anders als bei den meisten Computern ist beim C64 die Bitmapgrafik nicht linear angeordnet (d.h. die Bytes, die eine waagerechte Linie ergeben würden, liegen dort im Grafikspeicher nicht nebeneinander), sondern in Blöcken von je acht untereinander liegenden Bytes, eben den Kacheln. Eine waagerechte Linie ist dann verteilt auf eine entsprechende Anzahl nebeneinander liegender Blöcke. Beispiel: Eine waagerechte Linie von 40 Pixeln Länge würde bei einem linearen Speicher in fünf nebeneinander liegenden Bytes abgelegt (ein Byte gleich 8 Pixel), also die Grafikspeicherstellen 0, 1, 2, 3 und 4 belegen. Im C64 sind dagegen für die gleiche Linie die Speicherstellen 0, 8, 16, 24 und 32 belegt.

Diese scheinbar umständliche Speicherstruktur ergibt Sinn, wenn man bedenkt, dass der C64 seine Grafik auch farbig darstellen kann. Zur Zeit seiner Entwicklung war Speicherplatz aber teuer und es musste möglichst redundant gearbeitet werden, d.h. um zu sparen, zog man bereits vorhandene Hardware heran, um für weitere Zwecke genutzt zu werden. Die "bereits vorhandene Hardware" war in diesem Fall die Art, wie der C64-Textmodus mit Farben umgeht. Je ein Zeichen (das sich aus acht Bytes zusammensetzt, also aus 8×8 Pixeln) kann individuell auf unterschiedliche Weise mit Farbattributen versehen werden, im Normalfall mit einer Vorder- und einer Hintergrundfarbe. Genau diese Fähigkeit wird auch in der Hires-Grafik genutzt: Je eine Kachel (von 8×8 Pixeln) kann mit individueller Vorder- und Hintergrundfarbe versehen werden. Das Gleiche gilt für die Multicolor-Färbung: Je zwei Pixel definieren eine Farbe innerhalb eines Multicolor-Zeichens (also höchstens vier verschiedene) und das wurde auch für die Multicolor-Grafik übernommen.

Leider führt diese nicht-lineare Speicherstruktur dazu, dass Pixelkoordinaten in der Grafik recht kompliziert berechnet werden müssen. Einen BASIC-Algorithmus dafür findet man unter dem Stichwort Bitmap. Eine komplette Bitmap besteht beim C64 aus 1000 Kacheln entsprechend 8000 Bytes oder - je nach Grafikmodus - 64000 bzw. 32000 Pixeln (Hires bzw. Multicolor).