APPLICATIONSPROGRAMMATION ★ Sprites Basic ★

Sprites Basic (CPC Amstrad International)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Sprite BASIC ist eine Erweiterung des Locomotive BASIC um sechs weitere Befehle, die die Erzeugung und Steuerung von bis zu acht verschiedenen Sprites erlaubt. Die Befehle selbst sind keine RSX-Kommandos, sondern lassen sich, ähnlich unkompliziert wie die herkömmlichen BASIC-Befchle des CPC 464, einsetzen. Sprite BASIC befindet sich im oberen Ende des freien RAM-Speichers, belegt ca. 3 KB und ist voll Diskcttenkompatibel. d.h.. der unter AMSDOS reservierte Speicherbereich bleibt auch weiterhin unangetastet.

Anweisung zum Erstellen einer schlüsselfertigen Version anhand der Listings:

Nachdem Sie das Programm LOADER abgetippt haben, speichern Sie es auf einen geeigneten Datenträger ab. Danach alles löschen, den CREATOR abtippen, starten und den erzeugten Maschinencodc direkt hinter dem LOADER abspeichern. Zur Sicherheit den CREATOR auch auf einen Datenträger abspeichern. Darauf den Computer total zurücksetzen und den LOADER (am besten mit RUN") wieder einladen, jetzt erst mit dem Abtippen und Speichern der Programme DESIGNER und DEMO beginnen. Um mit den neuen Befehlen arbeiten zu können, muß man immer erst den LOADER laden und ablaufen lassen. Er reserviert den nötigen Speicherplatz, verschiebt den Zeichcnsatz weiter nach unten und bindet das nachgeladene Maschinencodeprogramm in den BASIC-Interpreter des CPC 464 ein. Die Anwendung der Programme DEMO und DESIGNER ist nur mit vorher aktiviertem Sprite BASIC möglich. Ersteres erzeugt nacheinander 8 Sprites und bewegt sie zufallsgesteuert über den Bildschirm, wobei nach einer Kollision jeweils der Sprite verschwindet, der diese hervorgerufen hat. Der DESIGNER hingegen erlaubt die einfache Konstruktion der Sprites. Dies geschieht wahlweise über die Cursortasten oder einen Joystick.

Die Größe der einzelnen Sprites kann individuell festgelegt werden. Des weiteren spielt der Bildschirmmodus" eine wichtige Rolle. Nachdem diese Eingaben für die gewünschten Sprites gemacht wurden, kommen wir zur eigentlichen Konstruktion der Sprites. Ein blinkender Cursor markiert die aktuelle Position, auf der gegenüber dem Original fünffach vergrößerten Arbeitsfläche. Mit dem Feuerknopf oder der Copycursortaste werden die einzelnen Punkte gesetzt: mit DEL können sie wieder gelöscht werden. Die Funktionen der Tasten 'P' und T entsprechen den PEN- und INK-Kommandos. Durch zweimaliges Drücken der F.NTF.R-Taste beendet man diesen Arbeitsschritt und gelangt so zum nächsten Sprite. Danach kann man die so erzeugten Sprites abspeichern.

Die Einzelbeschreibung der Befehle:
DEFSPR s,b,h ...

Dieser Befehl erwartet mindestens drei Angaben: Die Spritenum mer (s:0-7), die Breite (b: 1 -8) und die Höhe (h: 1-32)des zu erzeugenden Sprites. Die Breite wird in Bytes angegeben, da die Anzahl der Punkte in der Horizontalen abhängig vom jeweiligen Bildschirmmodus ist.

  • Mode 0 Anzahl der Punkte pro Byte 2
  • Mode 1 Anzahl der Punkte pro Byte 4
  • Mode 2 Anzahl der Punkte pro Byte 8

Wenn man mehr als einen Sprite gleichzeitig definieren will, so kann man die dazu nötigen Parameter zusammen in einem DEFSPR-Befehl angeben.
Aktion: Abspeichern der angegebenen Dimensionen und Löschen des für die Spritematrix reservierten Speicherbereiches.
Die Werte von Breite und Höhe werden ab der Adresse 41820 in einem 32 Bytes großen Bereich abgelegt. Die jeweils 4 Bytes pro Sprite teilen sich wie folgt auf:

  1. Byte: X-Koordinatc
  2. Byte: Y-Koordinate
  3. Byte: Breite

Byte: Höhe

Die reservierten Bereiche für die Spritematrizen zählen jeweils 256 Bytes und beginnen bei der Adresse 39772.

  • SPRITE s,x,y Zeichnet den Sprite mit der Nr. V an die angegebene Position (x.y), beginnend bei der linken oberen Ecke des Sprites. Die Koordinaten sind modeunabhängig, haben ihren Nullpunkt in der linken oberen Ecke des Bildschirms und betragen in waagerechter Richtung 0-169 und senkrecht 0-199.
  • CLSPR s... Dieser Befehl löscht einen, bei entsprechender Anzahl der Parameter auch mehrere Sprites.
  • MOVSPR s,x,y...Definiert für Sprite 's'einen Zielpunkt (x.y), der dann, z.B. interruptgesteuert, mit dem Befehl SPRITE s (ohne Koordinatenangaben!) auf dem direkten Weg angesteuert werden kann. Auch hier können gleichzeitig mehrere Sprites mit Zielkoordinaten versehen werden.
  • ON CRASH GOSLB zEinmal im Programm gesetzt, verursacht jede Überlagerung eines Zeichens oder einer Grafik mit einem Sprite einen Sprung in ein Unterprogramm, beginnend bei der Zeile z. Hier kann dann anhand des Wertes in der Speicherzelle 47853 festgestellt werden, welcher Sprite der Verursacher war. Dieser Bytewert ist bitsignifikant, d.h., jedes Bit. angefangen von rechts, steht stellvertretend für einen Sprite. Um einen einzelnen Sprite zu testen, schreibt man am besten: ...

IF PEEK(a) AND sIs THEN ...

a ist die Adresse und s ist die Nummer des zu testenden Sprites.

  • ON AIM GOSUB z Mit Hilfe dieses Befehls kann man feststellen, ob ein Sprite bereits seinen Zielpunkt (siehe MOVSPR) erreicht hat, und ihm in dem zugehörigen Unterprogramm, z.B. einen neuen Zielpunkt zuweisen. In der Speicherzelle 47850 steht der bitsignifikante Wert, mit dem festgestellt werden kann, welcher Sprite seinen Zielpunkt erreicht hat.

Auflistung der neu hinzugekommenen Systemvariablen:

(Die Befehle in Klammern beeinflussen die Flagregister)

47850 Zielpunkt erreicht?
(SPRITE s, SPRITE s,x,y=0. MOVSPR=0)

47851 Zielpunkt definiert?
(MOVSPR=1, SPRITE s,x,y,=0, CLSPR=0)

47852 Sprite abgebildet?
(SPRITE=1, CLSPR=0)

47853 Überlagerung?
(SPRITE)

47854/55 Zeilenadresse von ON AIM GOSUB

47856/57 Zeilenadresse von ON CRASH GOSUB

Um die automatischen Sprungbefehle innerhalb eines Programms wieder rückgängig machen zu können, genügt es, die entsprechenden Speicherzellen mit zwei POKE.-Befehlen auf 0 zu setzen. Mit Erscheinen der 'Ready'-Meldung wurden alle Systemvariablen von Sprite BASIC wieder gelöscht, so daß der Einsatz der neuen Befehle im Direktmodus unter Umständen nicht das gewünschte Resultat erbringt.

CPCAI8512

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1982
★ AUTHOR: Thomas Fippl
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Sprite  Basic    (CPC  Amstrad  International)DATE: 2012-12-16
DL: 301
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 283 millisecondes et consultée 1823 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.