APPLICATIONSDIVERS ★ Sprites für die CPC's ★

Spriter (CPC Amstrad International)Applications Divers
★ 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 ★ 

Mit Spriter ist es möglich, übergroße, selbstdefinierte Zeichen (Sprites) problemlos und schnell zu definieren und auf dem Bildschirm darzustellen und wer möchte, kann sich das ganze noch auf den Drucker ausgeben lassen.

Da das Bewegen von mehrfarbigen und komplexen Zeichen, z.B. ein Auto oder ein Skifahrer, beim CPC vom BASIC aus, sehr kompliziert und langsam ist, wurde dieses Programm in Maschinensprache geschrieben.

Spriter kann bis zu 8 Sprites gleichzeitig auf dem Bildschirm darstellen und dies in jedem Bildschirm-Mode. Auch um den Hintergrund braucht man sich keine Sorgen machen, da dieser vor der Ausgabe eines Sprites gerettet und nach dem Entfernen des Sprites wieder ausgegeben wird. Wie schon erwähnt, können Sie mit Spriter übergroße Zeichen problemlos und schnell darstellen. Dies geht natürlich nicht ohne vorher einige Parameter in den Speicher übergeben zu haben. Eine vollständige Speicherbelegung finden Sie in Abb.2.

Daß so ein Sprite nicht aus dem Nichts kommen kann, dürfte eigentlich jedem klar sein. Aus diesem Grund müssen Sie vorher an einer beliebigen Stelle im Speicher einen Datenblock ab-legen, der die notwendigen Informationen zum Sprite enthält. Dieser Datenblock wird wie folgt aufgebaut: Zunächst überlegen Sie sich wie groß das Sprite sein sollte, z.B. 4 Zeichen in horizontaler Richtung (Breite) und 8 Zeichen in vertikaler Richtung (Höhe). Die Breite darf maximal 8 Zeichen betragen und wird durch POKE &AB73 übergeben.

Die Höhe kann bis zu 32 Zeichen betragen und wird in Adresse & AB74 abgelegt. Doch nun zum Erstellen des Datenblocks. Abb. 1 zeigt die Matrix eines Sprites.
z.B. sieht Byte 1 so aus :

Bit = 0 1 0 0 1 0 0 1
7 6 5 4 3 2 1 0

Wert = 2↑6 + 2↑3 + 2↑0
= 64 + 8 + 1
= 73 Dezimal

Dieser Wert ist der erste Ihres Datenblockes der, nehmen wir mal an, ab Adresse &9600 im Speicher stehen soll. Byte 2 kommt dann in &9601, Byte 3 in &9602 , usw.

Nun muß noch der Zeiger auf den Anfang des Datenblocks gesetzt werden. Diese Zeiger stehen von &AB30 bis &AB3F im Speicher. Angenommen, Ihr Sprite hätte die Nr. 0, so müßten Sie die Blockadresse in &AB30 und &AB31 ablegen. In &AB30 kommt das LOW-Byte, in &AB31 das HIGH-Byte der Blockadresse. Hätte Ihr Sprite die Nr. 1, so wären die Adressen &AB32 und &AB33, usw. Durch dieses Verfahren ist es leicht möglich, während eines Spieles das Sprite zu verändern, indem man einfach einen Zeiger auf einen anderen Datenblock ablegt.

Als nächstes müssen Sie das Sprite-Aktivierungs-Byte setzen. Dies wird wie folgt gemacht:

POKE &AB70,2
(Die 2 ist die Angabe für die Spritenummer).

Wollen Sie mehrere Sprites darstellen, so können Sie sie durch POKE &AB70, 2^ (1. Spritenummer) + 2^ (2,Spritenummer) usw. erreichen. Die bis jetzt besprochenen Vorgänge müssen Sie nur einmal am Anfang des Programms ausführen. Der letzte Schritt ist das Übergeben der Sprite-Position. Sie kann in X-Richtung (Horizontale) bis zu 703 betragen, wobei die Positionen 0 — 63 außerhalb vom Bildschirm liegen und dadurch eine teilweise Darstellung des Sprites erreicht wird. Allerdings verschiebt sich das Sprite nur, wenn Sie die Position um 8 verändern; innerhalb des Bildschirms genügt eine Erhöhung von 1 bis 4 (je nach MODE). Außerdem müssen Sie darauf achten, daß ein Teil vom Sprite sichtbar bleibt. Tun Sie das nicht, so kann es zum Absturz kommen. Ein Sprite von z.B. der Breite 6 belegt 48 Bits in XRichtung, die x-Position muß mindestens 24 betragen, weil 64 - 48 + 8 - 24, und darf höchstens 688 betragen, weil 640 + 48 = 688.

Die Position kann in Y-Richtung bis zu 231 betragen, wobei hier die Positionen 0 - 31 außerhalb vom Bildschirm liegen. Auch bei der Y-Position sollten Sie beachten, daß ein Teil vom Sprite sichtbar bleibt (minimale Pos. = 34 - Höhe).

Die Adressen für Sprite 0 betragen &AB40 für das LOW-Byte und &AB41 für das HIGH-Byte der X-Position; &AB42 für die Y-Position. Beim Sprite 1 kommt die X-Position in &AB43 und &AB44; die Y-Position in &AB45. Die Position der Sprite 2 - 7 folgen ab &AB46. Nun können Sie Ihr Sprite mit CALL &A820 ausdrucken lassen, vorausgesetzt Sie haben Spriter vorher aus den DATA-Zeilen in den Speicher übertragen. Nachdem dies geschehen ist, können Sie neue Positionen übergeben. Sie können natürlich die Positionen von mehreren Sprites verändern und dann ein CALL &A820 eingeben.

Wollen Sie ein Sprite löschen, so POKEN Sie in (&AB59 + 3.Spritenr.) einen Wert, der größer als 3 ist ein und fuhren wiederum ein CALL &A820 aus.

Sollte Ihnen jetzt der Kopf rauchen, dann kann man nur sagen, probieren geht über studieren.

Programmhinweise:

Für Besitzer von Laufwerken ist darauf zu achten, daß das eingebundene Programm mit einem GOSUB 1400 und einem GOSUB 1500 beginnt, weil sonst das Programm mit dem Laufwerk kollidiert. Bei reinem Kassettenbetrieb braucht man nur ein GOSUB 1400 eingeben.

(P.Benes/CD) , CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1987
★ CONFIG: 64K + CP/M
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Pavel Benes
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Spriter    (CPC  Amstrad  International)    GERMANDATE: 2022-08-04
DL: 88
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » RSX Controladores de Modo 3 (Amstrad User)
» Applications » RSX Select (Schneider Aktiv)
» Applications » RSX New Mode
» Applications » Multimode (Compute Mit)
» Applications » RSX Swap (CPC Magazin)
» Applications » RSX Circulo (Amstrad User)
Je participe au site:
» Vous avez des infos personnel ?
» 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 467 millisecondes et consultée 476 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.