★ APPLICATIONS ★ DIVERS ★ UNI-RSX (CPC AMSTRAD INTERNATIONAL) ★ |
UNI-RSX (CPC Amstrad International) | Applications Divers |
Byte für Byte ein Sprite UNI-RSX hilft Sprites erzeugen Mit diesem tollen Programm wird es möglich, Sprites in einer schnellen Abfolge auf dem Bildschirm erscheinen zu lassen. Des weiteren ist es möglich, die definierten Grafiken vor und hinter dem Hintergrund bewegen zu lassen. Eine Utility, welche in keiner Sammlung fehlen sollte. Grundsätzliches: Bei allen Befehlen, die einen Wert zurückgeben, ist der 'Klammeraffe' mit anzugeben. Es werden nur Integerwerte verarbeitet. Parameter in eckigen Klammern können mit angegeben werden. Wie bei RSX-Befehlen üblich, beginnen diese mit dem Zeichen unter der Tastenkombination 'SHIFT & Klammeraffe' (senkrechter Strich). Die allgemeinen Befehle, Funktionen und Beispiele 1.) |DPOKE,adresse,wert%: Dieser Befehl 'poked'in zwei hintereinanderfolgenden Speicheradressen einen 16 Bit- (oder Zwei-Byte-) Wert, hier ein Beispiel: |DPOKE, &C000,1234 Nach der Ausführung befindet sich der Wert 210 in Speicheradresse &C000, der Wert 4 in &C001. Kurzes Nachrechnen: 4 (Inhalt &C001) * 256 (da Highbyte) + 210 (Lowbyte) = 4*256+210= 1234. Stimmt! 2.) |DPEEK,adresse,@wert%: Das Gegenteil von | DPOKE. Hier wird der Inhalt der beiden nacheinander stehenden Adressen ab 'adresse' in die Variable 'wert%' geschrieben. Diese Variable muß vorher definiert werden. Auch hierzu ein Beispiel: Wir wollen unseren Wert wieder aus dem Adressenpaar &C000/ &C001 auslesen, deshalb geben wir ein: wert%=0:|DPEEK, &C000, @wert%: PRINT wert% Nach Betätigen der RETURN- oder ENTER-Taste sehen wir unsere Zahl 1234 wieder auf dem Bildschirm. Kurze Erklärung zur Zeile: wert% =0 definiert unsere benötigte Integervariable, |DPEEK,&C000,@wert% liest die Adressen &C000+1 (also &C001), und &C000 aus, berechnet den Wert nach obiger Formel und übergibt das Ergebnis der Variablen 'wert% 3.) |FILLB,startadresse,anzahl,byte (0-255): Füllt einen Speicherbereich mit dem Inhalt der Variablen "Byte". Beispiel: |FILLB,&C000,&4000,255, der Bildspeicher wird mit dem Wert 255 gefüllt. 4.) |COPYB,startadresse,zieladresse,anzahl: Kopiert einen Speicherbereich von der Anfangsadresse 'startadresse' zur neuen Adresse 'zieladresse'. Dazu auch ein Beispiel: |COPYB,&C000,&4000,&4000 kopiert den Standardbildspeicher (&C000) an die Adresse &4000, mit einer Länge von &4000 Bytes. Die Adressen dürfen sich NICHT überschneiden. 5.) |PAGE,@oder| PAGE,1: Schaltet zwischen zwei Bildspeichern hin und her. Page 0 liegt an der Adresse &C000 (Standard), und Page 1 liegt an der Adresse &4000. 6.) |WAIT[,ascii]: Geben Sie den Befehl ohne Parameter ein, wartet der CPC auf einen beliebigen Tastendruck, wogegen der Befehl mit Parameter (0-255) auf ein ASCII-Zeichen von der Tastatur wartet. Beispiel: | WAIT, 16 wartet, bis die Taste 'CLR' gedrückt wird. Sprite-Befehle Grundsätzliches: Die Sprite-Befehle benötigen mindestens zwei Parameter. Das Grafik-Koordinatensystem bleibt in allen Modi gleich, das heißt, in X- Richtung 0 bis 640 Pixel und in Y- Richtung 0 bis 400 Pixel. Die X- Koordinate muß in MODE 0 durch 2, in MODE 1 durch 4, und in MODE 2 durch 8 dividierbar sein. Ein in MODE 1 erstelltes Sprite läßt sich NICHT einwandfrei in den anderen Modi darstellen, gleiches gilt für die anderen Modi. 7.) | SET,x%,y% Dieser Befehl setzt ein definiertes Sprite in den Bildspeicher. Sind die Koordinaten größer als die Grafik-Fenstergrenzen, so erscheint das Sprite an der gegenüberliegenden Seite. Dazu das Beispiel: |SET,320,200 setzt ein Sprite in die Bildschirmmitte. 8.) |GET,x%,y%[,@breite%,@höhe%,@adresse%] Liest ein definiertes Rechteck vom Bildschirm, und legt die Daten ab "adresse%" ab. Werden fünf Parameter angegeben, so werden diese mit dem Befehl | DEF...., eingestellten Wert zurückgeliefert. 9.) |DEF,modus,breite,höhe,adresse Definiert ein Sprite. Mit dem ersten Parameter kann die Verknüpfung mit den Bildschirmdaten gewählt werden, wobei folgende Parameterwerte eingestellt werden können: 0 = FORCE Andere Werte ergeben eine Fehlermeldung. Der zweite Parameter gibt die Breite in Bytes an. Die Anzahl der Pixel ist vom Modus abhängig. So beträgt die Anzahl der Pixel bei einer Breite von 1 in Mode 2 acht Pixel, in Mode 1 vier Pixel und in Mode 0 zwei Pixel. Beim dritten Parameter wird die Höhe in Pixel angegeben. Die tatsächliche Anzahl beträgt immer die Hälfte des eingestellten Wertes. Und der letzte Parameter schließlich gibt die Variable 'adresse' (die Speicherstelle) an, ab der die Daten gelesen (mit SET) beziehungsweise geschrieben (GET) werden. Die Anzahl der Daten errechnet sich aus der Formel: breite*höhe. Beispiel: MODE1 :MOVE 1,16,1 (Beim CPC 464 muß der letzte Wert (,1) weggelassen werden) PRINT CHR$(5)"X";:|GET,1,16 Kurze Erklärung zu den Programmzeilen: Zuerst wird der Bildschirm auf Mode 1 gesetzt. Der Grafikcursor an die Position x:l, y: 16 bringen und den Buchstaben 'X' auf dem Bildschirm ausgeben. Der Inhalt des Rechteckes unten/links wird ab Adresse 'adresse' abgelegt, und kann mit dem Befehl SET wieder auf den Bildschirm gebracht werden. Noch zwei Erklärungen zu Punkt 7 und 8: Zu 7.) Wird der SET-Befehl verwendet, so geschieht folgendes: Zuerst wird die alte Bildschirmadresse geholt, diese steht in den Adressen &A22D und &A22C, und der ab Adresse &A231 gespeicherte Hintergrund wird ausgegeben. Dann wird die neue Bildschirmadresse für den nächsten Aufrufgespeichert. Jetzt wird an dieser Adresse der Hintergrund eingelesen und ab Adresse &A231 abgelegt, dann ein Byte aus der Spritedatenadresse geholt, mit dem eingestellten Modus verknüpft und endlich ins Bild gebracht. Das Ganze geht solange, bis die maximale Breite und Höhe erreicht ist. Zu 8.) Die Voreinstellungen betragen in der Breite vier Pixel, in der Höhe sechzehn Pixel. Und "adresse" steht auf &9000. Das reicht für zirka 255 Sprites. Den gewählten Speicherbereich für die Sprites sollte man mit MEMORY adresse-1 gegen Überschreiben schützen.
|