Grafikkurs : Teil 1 "Picasso und all die andern..."
Hallo Leute, hier bin ich wieder, diesen
Monat jedoch mit einem NEUEN Kurs. Der
Basickurs für Einsteiger ist jetzt abgeschlossen, nun geht es weiter mit einem
Grafikkurs, der ebenfalls den Einsteigern gewidmet sein soll." Buuuh, Betrug!" werden jetzt die Profis unter
Ihnen jetzt schreien," wir wollen endlich mal was Richtiges !"- doch keine
Panik. Dieser Kurs wird nur 3 Teile lang
sein, und für danach halten wir dann
einen Leckerbissen für Sie, den Profi
bereit. Es geht anschließend nämlich
ebenfalls mit Grafik weiter, doch dann
wollen wir uns in die tiefen Abgründe
der Raster-IRQ- Programmierung abseilen, die für manche von Ihnen bestimmt ein
kleines Hindernis darstellen.
Doch nun wollen wir erst einmal mit dem
Einsteigerkurs loslegen, die Grafik kam in dem Basickurs ja entschieden zu kurz;
was ich jetzt mit noch mehr Information
über dieses Thema ausgleichen möchte.
Wir werden uns in den nächsten Monaten
um die wichtigsten Grafikarten des C64 kümmern, als da wären die Sprites, die
HIRESund MULTICOLOR-Grafiken und die
Zeichensatzveränderung und - bedienung.
In dieser Reihenfolge werden wir die
einzelnen Themen dann auch abhandeln, und, wie Sie sich jetzt bestimmt denken
können, werden in diesem ersten Teil
gleich mit den Sprites beginnen. Zuerst
jedoch eine kleine Einleitung in Sachen
Grafik. . .
Die komplette Bidschirmdarstellung, das
heißt Zeichensätze, Grafik und Sprites, werden in unserem 64 er von einem Grafikchip verwaltet, der alle Informationen
im Speicher des 64 ers in ein Signal für
einen Monitor umwandelt, damit wir die
Bits und Bytes aus unserem Computer auch auf dem Bildschirm sehen können. Dieser
Chip hat den Namen VIC, was für " Video
Interface Controller" steht. Der VIC hat
ebenso wie der Soundchip SID ( den Sie ja
noch aus dem sechsten Basickurs kennen
sollten) ein paar Steuerregister im
Ein-/ Ausgabe-Bereich, den ich seinerseits schon im fünften Basickurs erwähnte. In jenem fünften Teil hatten wir ja auch gelernt, wie das Innere unseres
64 ers aussieht, daß es dort Speicherbereiche gibt, die man mit sogenannten
Speicheradressen anspricht, daß ein Byte
aus acht Bit besteht, und wie man Binärzahlen in Dezimalzahlen umrechnet. Alle
diese Kenntnisse sind in der Grafik von
großer Bedeutung, weshalb ich Ihnen empfehle, sollten Sie sich an die Gedankengänge von damals nicht mehr so ganz
erinnern, sich doch noch einmal die Magic Disk 64 Ausgabe 5/89 anzuschauen.
Wie also schon gesagt, belegt der VIC
einen Bereich von 46 Bytes im Ein-/ Ausgabebereich unseres 64 ers ( von Adresse 53248 bis 57344) . Der SID hatte
seine erste Stelle, oder auch Basisadresse genannt, bei 54272 . VICs Basisadresse liegt bei 53248, der ersten Speicherzelle des Ein-/ Ausgabebereichs also.
Diese Adresse wird nun also immer als
relativer Bezug für die einzelnen Register herangezogen. Die Adresse 53248 ist
also das Register mit der Nummer 0,53249(=53248+1) ist Register 1 des VICs
und so fort. . .
Die Register eines Chips in unserem 64 er
steuern also gewisse Funktionen des zu
ihnen gehörendem Chips. Wie Sie ja wissen können Sie mit der Adresse 53280 die
Hintergrundfarbe des Bildschirms verändern. Schreiben wir hier einen Wert hinein, so ändert sich die Farbe entsprechend. Diese Adresse ist nun ebenfalls
ein Register des VICs, da ja etwas, das
mit der Bildschirmdarstellung zu tun
hat, durch sie verändert wird. Demnach
belegt diese Adresse ebenfalls ein Register im VIC, nämlich das Zweiunddreißig- ste. Ich gebe Ihnen am Besten einmal
eine Übersicht über alle VIC-Register
( Sie finden diese, etwas weniger kommentiert, übrigens auch im Anhang N Ihres
Commodore-64 Benutzerhandbuchs) :
Adresse Register Funktion
53248 0 X-Position von Sprite 0 53249 1 Y-Position von Sprite 0 53250 2 X-Position von Sprite 1 53251 3 Y-Position von Sprite 1 53252 4 X-Position von Sprite 2 53253 5 Y-Position von Sprite 2 53254 6 X-Position von Sprite 3 53255 7 Y-Position von Sprite 3 53256 8 X-Position von Sprite 4 53257 9 Y-Position von Sprite 4 53258 10 X-Position von Sprite 5 53259 11 Y-Position von Sprite 5 53260 12 X-Position von Sprite 6 53261 13 Y-Position von Sprite 6 53262 14 X-Position von Sprite 7 53263 15 Y-Position von Sprite 7 53264 16 High-Bits Sprite-X-Pos. 53265 17 Steuerregister 1 53266 18 Rasterzeile für IRQ 53267 19 X-Anteil eines Strobes 53268 20 Y-Anteil eines Strobes 53269 21 Sprite ein-/ausschalten 53270 22 Steuerregister 2 53271 23 Spritevergrößerung in X-Richtung 53272 24 Basisadresse Video-RAM und Zeichensatz 53273 25 Interrupt-Request-Reg. 53274 26 Interrupt-Mask-Reg. 53275 27 Sprite im Vorder- oder Hintergrund 53276 28 Multicolorsprite-Reg. 53277 29 Spritevergrößerung in Y-Richtung 53278 30 Sprite-Sprite- Kollision 53279 31 Sprite-Hintergrund- Kollision 53280 32 Rahmenfarbe 53281 33 Hintergrundfarbe 0 53282 34 Hintergrundfarbe 1 53283 35 Hintergrundfarbe 2 53284 36 Hintergrundfarbe 3 53285 37 Multicolorfarbe 0 eines Sprites 53286 38 Multicolorfarbe 1 eines Sprites 53287 39 Farbe für Sprite 0 53288 40 Farbe für Sprite 1 53289 41 Farbe für Sprite 2 53290 42 Farbe für Sprite 3 53291 43 Farbe für Sprite 4 53292 44 Farbe für Sprite 5 53293 45 Farbe für Sprite 6 53294 46 Farbe für Sprite 7
Noch zwei kleine Bemerkungen zu der Ta- belle:
Die zwei Steuerregister (17 und 22) haben mehrere Funktionen gleichzeitig, auf
die wir später noch genauer eingehen
werden.
Mit den Registern 18,19,20,26 und 27
werden wir hier nichts zu tun haben. Sie
haben etwas mit der Raster-Interrupt- Programmierung zu tun, die ja, wie oben
schon erwähnt, in einem eigenen Kurs
behandelt werden soll.
Machen wir uns nun also an die Spriteprogrammierung - wie Sie aus obiger Tabelle ersehen können ein sehr komplexes
Thema, da wir da eine Menge Register zur
Beeinflussung von Sprites zur Verfügung
haben.
Zunächst einmal: Was ist ein Sprite?
Nun, Sprites sind ganz einfach kleine
Grafikobjekte, die man frei definieren
kann und die, unabhängig von Grafiken
oder Zeichen, über den ganzen Bildschirm
verstreut sich befinden können. Ja es
geht sogar so weit, daß man sie über
selbigen ruckelfrei bewegen kann.
Sie haben mit 100%- iger Sicherheit schon
einmal Bekanntschaft mit einem Sprite
gemacht, denn das kleine Raumschiff, daß sie bei Ihrem letzten Ballerspiel mit
dem Joystick über den Bildschirm bewegten, oder das Männchen, mit dem sie die
schöne Jungfrau neulich von dem bösen, bösen Gorilla gerettet hatten, waren
nichts anderes als bewegte Sprites ! Der
64 er stellt uns insegsamt 8( Sprite 0-7) davon zur Verfügung, die wir unabhängig
voneinander über den Bildschirm bewegen
können.
Doch nun zuerst einmal zum Aussehen eines solchen Sprites. Ein Sprite muß nämlich, bevor wir es auf den Bildschirm
bringen können erst einmal " definiert" werden. Im Klartext heißt das, daß wir
zunächst einmal festlegen müssen, wie
unsere kleine Grafik da denn auszusehen
hat. Täten wir das nicht, so erhielten
wir nur ein paar wirre Punkte, die da
irgendwo in der Gegend herumhingen. . .
Ein Sprite setzt sich aus 24 mal 21 Punkten zusammen. Es kommt also zunächst
einmal darauf an, daß wir uns einen Plan davon machen, welche Punkte in diesem
Spritefeld erscheinen sollen, und welche
nicht. Hierzu malen wir uns auf einem
Stück Papier ein Gitter mit 24 mal 21 Kästchen auf. Unser kleines Bildchen, das wir darstellen wollen, können wir
nun durch das Ausmalen der ensprechenden
Kästchen auf Papier bringen. Sie können
hierzu übrigens auch gerne einen der
zahlreichen Spriteeditoren der Magic-Disk verwenden, damit lassen sich einzelne Korrekturen einfacher durchführen.
Doch gibt es da dann meist Probleme, die
Spritedaten in ein Programm einzubauen
( meist benötigt man hierzu etwas mehr
Verständnis der Materie) . Sie sollten
Ihr erstes Sprite jedoch ruhig einmal
auf konventionelle Art und Weise, nämlich auf Papier, konstruieren, damit
Ihnen der Aufbau von Sprites etwas mehr
einleuchtet.