APPLICATIONSPROGRAMMATION ★ TURBO-SPRITES (COMPUTE MIT) ★

Turbo-Sprites (Compute Mit)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 ★ 

Für viel Speicherpkitz gibt es Tempo!

Sprite-Routinen für den Schneider gibt es mittlerweile eine ganze Menge. Doch diese haben meistens einige Nachteile. Entweder wird der Hintergrund gelöscht oder mit XOR verknüpft, oder die Routine ist zu langsam. Nun, unsere Sprite-Routine hat auch einen Nachteil, sie verbraucht sehr viel Speicherplatz. Dafür ist sie aber SEHR schnell und von Basic und Maschinensprache aus zu benutzen. Außerdem sind die meisten Basic-Compiler in der Lage, das MC-Programm mit zu verwenden. Um die hohe Geschwin-digkeit der Sprites (eigentlich Shapes) zu erreichen, mußten einige Besonderheiten eingebaut werden.

Der Bildschirmspeicher wird an die Adresse &4000 gelegt und verbraucht somit nochmals 16K.Sprites können nur in MODE 0 dargestellt werden. Ein Sprite muß auf jeder Seite zwei nicht gesetzte Pixel haben. Und, last not least, es gibt waagerecht 80 und senkrecht 100 Positionen, auf denen ein Sprite gesetzt werden kann. Haben wir also ein Sprite mit der Größe 16 mal 16 Punkte definiert, kann dieser auf die Positionen 0-72 und 0-92 gesetzt werden. Dies errechnet sich aus der Koordinate minus der halben Größe des Sprites. Wie wurde nun erreicht, daß der Hintergrund nicht zerstört wird? Nichts einfacher als das. Man muß nur auf die Idee kommen. Wie bereits weiter oben gesagt, ist der Bildschirminhalt ab Adresse &4000 nochmals abgespeichert. Um das Sprite herum mußte eine Zone aus zwei gelöschten Pixeln definiert werden. Ein Sprite, das mit der Größe 16 mal 16 definiert wurde, kann also maximal 12 mal 12 Punkte groß sein. Um den Hintergrund beim Setzen des Sprites nicht zu zerstören, passiert folgendes: Ist in einem Byte der Sprite-Daten ein Wert ungleich Null enthalten, dann wird das Byte in den Bildschirmspeicher kopiert. Ist das Daten-Byte aber Null, dann wird aus dem zweiten Bildschirmspeicher ein Byte gelesen und in den eigentlichen Bildschirm geschrieben. Auf diese Weise können sich die Sprites auch überlappen, ohne daß ein Rest stehen bleibt. Soviel zu der verwendeten Technik. Wie kann die Sprite-Routine nun aber genutzt werden?

Um die Routinen für den Basic-und auch für den MC-Program-mierer verwendbar zu machen, wurde auf eine Befehlserweiterung mittels RSX verzichtet, Die gesamte Benutzung erfolgt mittels POKE- und CALL-Befehlen. Es folgt nun eine Auflistung der einzelnen Routinen:

  • CALL &9200. Der Bildschirminhalt wird an Adresse &40Q0 geschrieben. Dies muß jedesmal nach einer Veränderung des Bildschirms geschehen.
  • CALL &920C. Der Pufferspeicher ab &4000 wird in drei Durchgängen in den Bildschirm geschrieben.
  • CALL &9233. Der Bildschirm wird in drei Durchgängen gelöscht.
  • CALL &9250. Die Adress-Liste wird berechnet. Achtung! Dieser Befehl muß gegeben werden, bevor einer der anderen Befehle verwendet werden kann.
  • CALL &92D1. Ein Sprite wird gesetzt. Bevor dies geschehen kann, müssen die folgenden

Speicherstellen mit Werten versorgt worden sein:

  • &9100. Y-Koordinate 0 - 99
  • &9101. X-Koordinate 0 - 79
  • &9102. Sprite-Adresse LOW
  • &9103. Sprite-Adresse HIGH

Die Sprite-Adresse wird vom Spritedesigner ausgegeben. Diese sollte man sich aufschreiben. Um einen Sprite über den Bildschirm zu bewegen, ist es nicht nötig, diesen vor der nächsten Bewegung zu löschen. Dies geschieht beim Setzen an die neue Position von selbst, wenn der Sprite nicht mehr als einen Punkt weit bewegt wird. Um einen Sprite ganz zu löschen, verwendet man einen ein-fachen Trick: Es wird einfach ein Sprite definiert, der aus lauter Null-Bytes besteht. Wird dieser jetzt an die Position des zu löschenden Sprites gesetzt, dann verschwindet er. Dazu sehen Sie sich am besten mal das Demo an. Hier noch eine wichtige Information für die MC-Programmierer: Folgende Speicherbereiche sind belegt:

  • &4000 - &7FFF Pufferspeicher für den Bildschirm.
  • &8000 - &8EFF Sprite-Daten.
  • &8F00 - &8FFF Bildschirm-Adressliste.
  • &9000 - &90FF Frei.
  • &9100 - &9104 Daten für die Spriteroutine.
  • &9105 - &91FF Frei.
  • &9200 - &92FF Spriteroutine,
  • &9300 - &A700 Frei.

Der Sprite-Designer Dieser ist ein einfacher Editor für Sprites, welcher mit dem Joystick und den Tasten des Zehner-Blocks gesteuert wird.

Nach dem Start des Programms werden Sie nach der Sprite-Größe gefragt. Haben Sie diese eingegeben, dann wird die Matrix gedruckt und der Cursor erscheint. Die Farbe, in der gezeichnet wird, ist nun auf PEN 1 eingestellt. Dies kann durch Drücken der Taste 1 (alle Tasten auf dem Zehner-Block) geändert werden. Durch Drücken von Taste 2 kann der Farbwert eines PEN's geändert werden. Durch die Taste 3 kann man sich die Matrix des Sprites auf dem Drucker ausgeben lassen. Mit der Taste . (Punkt) wird der Sprite in den Speicher geschrieben. Durch Betätigen der kleinen ENTER-Taste können die Sprites abgespeichert werden. Punkte werden durch das Drücken des Feuerknopfes gesetzt. Will man Punkte löschen, dann muß vorher PEN 0 gewählt werden. Oben links auf dem Bildschirm erscheint der Sprite in Originalgröße. In der Mitte steht die Adresse des Sprites, welche später der Sprite-Routine übergeben werden muß. Aus diesem Grund sollte man sich diese Adresse aufschreiben.

Abgespeicherte Sprites lassen sich vom Basic aus mit dem Befehl LOAD “NAME"&8000 laden. Dies geht allerdings erst dann, wenn die Sprite-Routine, welche in Form eines Data-Loaders vorliegt, mit RUN gestartet und somit initialisiert wurde. Danach muß sofort der Befehl CALL &9250 gegeben werden, sonst gibt es Programmabstürze!

Noch ein Wort zum Demo. Dieses darf erst dann gestartet werden, nachdem die Sprite-Routine gestartet wurde.

So, nun kann ich Ihnen nur noch viel Spaß und professionelle Programme wünschen.

Ottfried Schmidt, Compute Mit

★ PUBLISHER: Compute Mit
★ YEARE: 1986 , 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: COMPUTE MIT 1987
★ AUTHOR: Ottfried Schmidt
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Turbo-Sprites    (Compute  Mit)    GERMAN    LISTINGDATE: 2021-08-02
DL: 154
TYPE: PDF
SiZE: 1305Ko
NOTE: 2 pages/PDFlib v1.6

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

Lien(s):
» Applications » Sprite Generator
» Applications » Super Sprites
» Applications » Sprites Alive - Compiler Version
» Applications » HSD: Hard Sprites Designer
» Applications » Sprite Routines (Computing with the Amstrad)
» Applications » Sprites Logiciels - Budget Familial
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» 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
Page créée en 380 millisecondes et consultée 737 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.