Doch nun zum Praktischen. Um ein Sprite expandieren zu können stellt uns VIC 2 weitere Register zur Verfügung. Zum einen hätten wir da Register 29 für die Vergrößerung in X-, zum anderen Register 23 für Vergrößerung in Y-Richtung. Diese beiden Register sind ähnlich Register 16 aufgebaut, das wir ja für die neunten Bits der X-Position eines Sprites ver- wandten. Hier ist nämlich ebenfalls für jedes der acht Sprites ein Bit reser- viert. Möchten wir nun ein Sprite in X- oder Y-Position expandieren, so müssen wir lediglich dessen Bit in Register 23 und/oder 29 setzen, je nach dem in wel- che Richtung es vergrößert werden soll. Hier nochmal eine Öbersicht, welches Bit eines Registers für welches Sprite zuständig ist:
Bit : 7 6 5 4 3 2 1 0 Sprite: 7 6 5 4 3 2 1 0
Ist das Expansionsbit eines Sprites also gesetzt, so wird das Sprite vergrößert, ist es gelöscht, so wird es in der noma- len Auflösung dargestellt. Zur Demonsta- tion habe ich Ihnen auf der Rückseite dieser MagicDisk ein kleines Programm namens "SPRITE-EXP" gespeichert. Da kön- nen Sie sich unser UFO-Sprite nocheinmal ansehen.
2.) Farbige Sprites: --------------------
Wenn Sie letzten Monat einmal Sprite 0 auf dem Bildschirm hatten, dann hatte es -fast ganz selbstverständlich- die Farbe Weiß. Merkwürdigerweise war das Sprite 1 (wenn Sie dieses einmal eingeschaltet hatten) nicht der Fall. Dieses sollte nämlich direkt nach dem Einschalten des Rechners in sattem Rot geleuchtet haben. Sie merken schon worauf ich hinaus möch- te: man kann einem Sprite nämlich auch eine bestimmte Farbe zuordnen. Dies funktioniert genauso, als wollten Sie die Bildschirmfarbe ändern, nur müssen wir diesmal die Farbe nicht ins Hinter- grundregister schreiben, sondern in das dem Sprite zugehörige Farbregister. Die- se sind Ihnen bestimmt schon in der Re- gister-Tabelle aus dem letzten Kursteil aufgefallen. Es sind die Register 39 bis 46. Für jedes der 8 Sprites ein Regi- ster. Möchten wir also Sprite 0 nicht in Weiß, sondern beispielsweise in Schwarz auf dem Bildschirm sehen, so müssen wir schlichtweg eine 0 in Register 39 schreiben. Die Farbwerte sind dieselben wie bei der Hintergrundfarbgebung. Hier jedoch trotzdem nocheinmal eine Tabelle:
Wert Farbe Wert Farbe ----------------------------------------
0 Schwarz 8 Orange 1 Weiß 9 Braun 2 Rot 10 Hellrot 3 Türkis 11 Dunkelgrau 4 Violett 12 Mittelgrau 5 Grün 13 Hellgrün 6 Blau 14 Hellblau 7 Gelb 15 Hellgrau
Schreiben Sie nun einen dieser Werte in das Farbregister eines Sprites, so er- scheint dieses dann in der angegebenen Farbe (unter der Vorraussetzung, daß es natürlich auf dem Bildschirm sichtbar ist).
3.) Multicolorsprites: ----------------------
Nun können wir also auch einem Sprite eine Farbe zuweisen. Doch müssen Sie zugeben, daß dies auf die Dauer auch nicht die optimale Sache ist. Ein klei- nes Männchen, was da auf dem Bildschirm steht, würde sich doch viel besser ma- chen, wenn es nicht nur uni-Weiß wäre, sondern wenn es ein gesundes rosa Ge- sicht, einen gelben Pulli, und eine blaue Hose hätte. Sowas spricht doch bestimmt mehr an, als ein einfarbiger Klotz, bei dem man nicht Körper von Kopf unterscheiden kann. Nun, wie die Öber- schrift dieses Kapitels zeigt, gibt es auch die Möglichkeit, einem Sprite MEH- RERE Farben zuzuordnen (multi=viel; co- lor=Farbe; multicolor=vielfarbig). Um das "viel" gleich schon etwas genauer zu spezifizieren, kann ich Ihnen gleich verraten, daß ein Sprite maximal 4 von den 16 oben aufgelisteten Farben annhe- men kann. Die Sache mit der Vielfarbigkeit von Sprites hat aber wiederum einen kleinen Haken. Wir müssen nämlich, wie bei der Spriteexpansion auch, einen kleinen Auflösungsverlust hinnehmen. Diesmal wird sie halbiert, jedoch nur in X- Richtung. Das heißt, daß wir mit einem Multicolorsprite nur noch 12x21 Punkte darstellen können. Achtung, jetzt wirds kompliziert: Trotz- dem wir zwar nur noch 12 Punkte in X- Richtung darstellen können, ist das Sprite jedoch immer noch 24 Punkte breit! Deshalb schauen Sie sich am be- sten erst einmal die folgende Grafik an, bevor ich mich in umständlichen Erkl- ärungen verliere, die eh keiner ver- steht...