MMOB

Aus C64-Wiki
Wechseln zu: Navigation, Suche
MMOB
Format: MMOB <n>, <sx>, <sy>, <zx>, <zy>, <gr>, <sp>
Parameter
n: 0..7 (Spritenummer)
sx: 0..511 (Startkoordinate x)
sy: 0..255 (Startkoordinate y)
zx: 0..511 (Zielkoordinate x)
zy: 0..255 (Zielkoordinate y)
gr: 0..3 (Spritegröße)
sp: 0..255 (Spritegeschwindigkeit)
Einordnung
Typ: Anweisung
Kontext: Sprites
Aufgabe: Sprite steuern
Abkürzung: keine
Verwandte Befehle
RLOCMOB - MOB OFF - CHECK - DETECT


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort MMOB.

Typ: Anweisung
Syntax: MMOB <n>, <sx>, <sy>, <zx>, <zy>, <gr>, <sp>

Die Koordinaten für Sprites stimmen nicht mit denen für die Grafik überein. Die Fläche, auf der sich Sprites bewegen können, ist viel größer als die Grafik- bzw. Textfläche. Diese ist so auf dem Spritebereich angeordnet, dass ein normal dargestelltes Sprite auf allen Seiten hinter dem Bildschirmrahmen verschwinden kann. Insgesamt überstreicht der Spritebereich eine Fläche von 512×256 Pixeln. Der Grafik-/Textbereich darin (der 320×200 Pixel umfasst) beginnt bei der Koordinate x = 24 und y = 50 (für die linke obere Ecke des Sprites).

MMOB dient dazu, das Sprite mit der Nummer <n> auf der Spritefläche anzuzeigen und von einem Startpunkt mit den Koordinaten <sx>/<sy> zu einem Zielpunkt mit den Koordinaten <zx>/<zy> zu bewegen. Die Bewegungsgeschwindigkeit wird mit <sp> festgelegt, wobei größere Werte das Sprite langsamer fahren lassen. Leider bewegen sich Simons' Basics Sprites nicht unabhängig voneinander (im Interrupt), sondern ausschließlich eins nach dem anderen (ein MMOB-Befehl steuert ein Sprite, der nächste Befehl das nächste Sprite usw.)

Der Parameter <gr> legt die Anzeigegröße des Sprites fest (was David Simons besser bei MOB SET hätte einbauen sollen, da ja eigentlich dort die Spriteeigenschaften definiert werden). Folgende Werte sind zulässig:

Wert Größe Aussehen
0 24×21 normal
1 48×21 x-expandiert
2 24×42 y-expandiert
3 48×42 doppelt groß

Beachten: Nur die Werte für die Y-Koordinaten und für die Geschwindigkeit werden auf Plausibilität überprüft und erzeugen einen ?ILLEGAL QUANTITY ERROR bei Überschreitung der Höchstmarken. Wird die Spritenummer zu groß gewählt, reagiert Simons' Basic mit unvorhersehbaren Anzeigen (Bildschirmflackern, Spriteflackern o.ä.) Für die X-Koordinaten werden Werte bis 65535 akzeptiert (und auch abgearbeitet!) Werte größer als 3 bei der Anzeigegröße wirken alle wie der Wert 3.

Sprites mit MMOB anzeigen und bewegen
Beispiel: 

1700 PROC sprite
1710   DESIGN 0,15*64
1720   @bbbbbbbbbbbb............
1721   @bbbbbbbbbbbb............
1722   @bb........bb............
1723   @bb........bb............
1724   @bb........bb............
1725   @bb........bb............
1726   @bb........bb............
1727   @bb........bb............
1728   @bb........bb............
1729   @bb........bb............
1730   @bbbbbbbbbbbb............
1731   @bbbbbbbbbbbb............
1732   @........................
1733   @........................
1734   @........................
1735   @........................
1736   @........................
1737   @........................
1738   @........................
1739   @........................
1740   @........................
1750   MOB SET 1,15,1,0,0:
       s8=38:                        ; zwei Pixel vor Textspalte 2
       z8=80:                        ; zwei Pixel vor Textzeile 4
       MMOB 1,s8,z8,s8,z8,0,0        ; aktiviert das Sprite dort, keine Bewegung (Ziel wie Start)
1760 END PROC