Sprites schneller bewegen
Daß Sprites nützliche Hilfsmittel nicht nur bei Spielen sind, ist mittlerweile bekannt. Mit dem hier vorgestellten Programm lassen sich bis zu acht Sprites mit 255 verschiedenen Geschwindigkeiten kontinuierlich in acht Richtungen manövrieren. Das Besondere: Berechnungen im Programm haben keinen Einfluß auf die Laufgeschwindigkeit der Sprites.
Eine feine Sache ist beim Commodore 64 die Sprite-Grafik. Hat man ein solches Sprite entwickelt und auf dem Bildschirm dargestellt, so kann durch Veränderung zweier Speicherstellen das Sprite an eine andere Position gebracht werden. Um eine fließende Bewegung zu erreichen, ändert man die Speicherstellen um den Faktor 1. Nun funktioniert dies bei einem einzigen Sprite noch recht zügig. Möchte man aber mehrere Sprites bewegen, zwischendurch etwas berechnen und abfragen, ob eine Kollision zwischen zwei Sprites stattgefunden hat, so werden die Bewegungen doch recht träge. Um die Bewegungen schneller erscheinen zu lassen, kann man die Schrittweite erhöhen. Dies hat aber den Nachteil, daß die Sprites ziemlich »abgehackt« über den Bildschirm laufen. Weiterhin muß beachtet werden, ob ein Sprite auf der rechten Bildschirmseite dargestellt werden soll. Ist dies der Fall, so muß im Register 16 das Bit für das entsprechende Sprite gesetzt werden. Bei der Rückkehr auf die linke Seite muß das Bit wieder gelöscht werden. Bild 1 zeigt den Bereich, in dem sich die Sprites bewegen können. Wenn Sie das Programm SPRITE-MOVE (siehe Listing) benutzen, so sind diese Probleme vorbei. Sie können ein Sprite nun mit dem Befehl
!RUN S,R,G
auf die Reise schicken. Mit dem S geben Sie die Nummer des Sprites an (0-7), mit R die Richtung (1-9) und mit G die Geschwindigkeit (0-255). In Bild 2 können Sie sehen, welche Zahl für welche Richtung einzusetzen ist. Die Zahl 5 kann eingegeben werden, hat aber keinen Einfluß. Bei der Geschwindigkeit G bedeutet 0 die schnellste und 255 die langsamste Bewegung. Die Sprites bewegen sich nun immer in der eingegebenen Geschwindigkeit. Sie können in Ihrem Basic-Programm berechnen oder abfragen so viel Sie wollen, dem Bewegungsdrang der Sprites tut dies keinen Abbruch. Verläßt ein Sprite den Bereich, in dem es sich bewegen kann (siehe Bild ]), so erscheint es wieder auf der gegenüberliegenden Seite. Wenn Sie dies nicht möchten, so müssen Sie durch Abfrage der entsprechenden Speicherstellen darauf reagieren. Anhalten können Sie ein Sprite mit dem Befehl
!STOP S.
Aufpassen muß man bei dem Befehl THEN. Zwischen THEN und dem neuen Befehl muß ein Doppelpunkt stehen, da es sonst zu einem SYNTAX-ERROR kommt.
Aufbau einer Spritebibliothek
Weiterhin haben Sie die Möglichkeit, ab der Speicherstelle 49900 bis zu 50 Sprites zu speichern und mit dem Befehl
!VAL B1,B2
in den Block zu schieben, auf dem Ihr Sprite zugreift. B1 kann dabei Werte von 0 bis 7 annehmen. Und zwar bedeutet:
0 = Block 11
ab Speicherstelle 704
1 = Block 13
ab Speicherstelle 832
2 = Block 14
ab Speicherstelle 896
3 = Block 15
ab Speicherstelle 960
4 = Block 32
ab Speicherstelle 2048
5 = Block 33
ab Speicherstelle 2112
6 = Block 34
ab Speicherstelle 2176
7 = Block 35
ab Speicherstelle 2240
Wenn Sie die Blöcke 32 bis 35 benützen, müssen Sie den Zeiger, der auf den Beginn des Basic-Programms zeigt, ändern, Mit POKE 2560,0 beginnt Ihr Basic-RAM-Bereich ab Speicherstelle 2561. Anschließend geben Sie noch NEW ein.
Bringen Sie Bewegung in die Sprites
B2 kann Werte von 0 bis 49 annehmen. Errechnen können Sie die Anfangsspeicherstelle für B2 mit 49900 + B2 * 63. Sie können sich so eine ganze Sprite-Bibliothek anlegen und bei Bedarf abrufen. In Bild 3 sehen Sie ein Programm, mit dem Sie die Sprites (die ab Speicherstelle 49900 stehen) zusammen mit dem Programm SPRITE-MOVE auf Kassette wegspeichern können. Denkbar wäre auch, daß man sich ähnlich aussehende Sprites speichert und diese abwechselnd einschaltet. Dadurch kann man den Eindruck einer sich bewegenden Figur erzeugen. (Siehe Beispielprogramm in Bild 4).
Alle Parameter für die neuen Befehle können Zahlen oder auch Variablen sein. Außerdem funktionieren die Befehle sowohl im Direktmodus als auch innerhalb eines Basicprogramms.
Sprites for ever
Das Programm steht von Speicherstelle 49229 bis 49798. Die Speicherstellen 49152 bis 49228 werden vom Programm als Speicher benutzt. Aktiviert werden die neuen Befehle mit SYS 49700. Im Basic-Lader geschieht dies in Zeile 172. Sollten Sie die RUN/STOP- und RESTORE-Taste betätigen, so müssen Sie das Programm neu aktivieren. Und nun viel Spaß mit den neuen, schnellen Sprites.
(Herbert Kunz)