MMOB

Aus C64-Wiki
Zur Navigation springenZur Suche springen
MMOB
Syntax: 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 (TSB: mM)
Token: $64 $1b (100 27)
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>
TSB-Syntax: MMOB <n>, <x>, <y> [, <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 Sprite-Eigenschaften definiert werden, TSB macht das ab v2.21202). 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 Sprite-Nummer zu groß gewählt, reagiert Simons' Basic mit unvorhersehbaren Anzeigen (Bildschirmflackern, Sprite-Flackern o.ä., behoben in TSB). 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.

In TSB kann man optional den Befehl auf Sprite-Nummer und Startkoordinaten (MMOB <n>, <x>, <y>) verkürzen. Damit setzt man ein Sprite gezielt auf einen gewünschten Punkt, ohne weitere Zwischenbewegungen des Sprites im Programmlauf hinnehmen zu müssen und ohne überflüssige weitere Einstellungen im Code. Da die Defaultwerte für Größe und Geschwindigkeit von MOB SET bestimmt werden, können die Parameter <gr> und <sp> oder auch nur <sp> weggelassen werden (seit v2.21212).

Beispiel[Bearbeiten | Quelltext bearbeiten]

Sprites mit MMOB anzeigen und bewegen
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)
                                     ; in TSB könnte man schreiben: MMOB 1,s8,z8
1760 END PROC