MOB SET

Aus C64-Wiki
Zur Navigation springenZur Suche springen
MOB SET
Syntax: MOB SET <n>, <bn>, <f>, [128+] <pr>, <r>
Parameter
n: 0..7 (Spritenummer)
bn: 0..255 (Blocknummer)
f: 0..15 (Farbe für B (Hires) oder C (Multi))
pr: 0 oder 1 (Sprite-Priorität)
r: 0 oder 1 (Auflösung, Hires oder Multi)
Nur in TSB, optional:
gr: 0 ... 3 (Spritegröße)
sp: 0 ... 255 (Geschwindigkeit)
Einordnung
Typ: Anweisung
Kontext: Sprites
Aufgabe: Sprite einschalten, Eigenschaften festlegen
Abkürzung: keine
Token: $64 $1d (100 29)
Verwandte Befehle
DESIGN - @ - CMOB - MOB OFF - RLOCMOB - MMOB - MOBCOL


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

Typ: Anweisung
Syntax    : MOB SET <n>, <bn>, <f>, <prio>, <rendertype> 
TSB-Syntax: MOB SET <n>, <bn>, <f>, [ 128 + ] <prio>, <rendertype> [ ,<size> [ ,<speed> ] ]

Mit MOB SET schaltet man das Sprite mit der Nummer <n> ein (ausschalten mit MOB OFF) und erledigt einen Teil der Sprite-Definitionen, und zwar legt dieser Befehl vor allem fest, welches der acht Sprites sich auf welchen mittels DESIGN gefüllten Speicherblock beziehen soll. Dafür sind die ersten beiden Parameter des Befehls zuständig (<n> und <bn>). Welche Blocknummern für <bn> gewählt werden dürfen, kann man beim Befehl DESIGN nachlesen.

Die nächste Eigenschaft, die MOB SET festlegt (<f>), ist die Farbe des Definitionsbuchstaben B bei hochauflösenden Sprites bzw. C bei Multicolor-Sprites (siehe @, die anderen Definitionsbuchstaben färbt CMOB ein.) Mit diesem Parameter wird die individuelle Sprite-Farbe gesetzt (Bitmuster %10 in Multisprites), die ab $D027 (bis $D02E) in den VIC-II-Registern landet.

Der vierte Parameter (<prio>) steuert die Priorität eines Sprites gegenüber dem Hintergrund (die Priorität gegenüber den anderen Sprites regelt der C64 über die Sprite-Nummer). Ein Wert von 0 für <prio> bedeutet, dass das Sprite immer vor den Zeichen auf dem Bildschirm agiert. Eine 1 dagegen lässt ein Sprite hinter Bildschirmzeichen verschwinden. Werte größer als 1:
- Simons' Basic: jeder Wert ungleich 1 wird wie 0 behandelt
- TSB: alle geraden Werte werden wie 0 behandelt, alle ungeraden wie 1

In TSB (nicht jedoch in Simons' Basic) kann man an dieser Stelle festlegen, ob MOB SET das Sprite wirklich einschalten soll oder nicht (wenn nicht, muss zu <prio> der Wert 128 addiert werden). Dies hat den Vorteil, dass man einem Sprite bereits vor seinem Erscheinen die gewünschte Startposition mitgeben kann. Eingeschaltet wird es dann mit MOB ON. Auch die beiden letzten (optionalen) Parameter funktionieren ausschließlich in TSB (ab v2.21202). Sie steuern die Größe des Sprites (<size>, siehe MMOB) und seine Bewegungsgeschwindigkeit (<speed>), und zwar (anders als in Simons’ Basic) individuell für jedes Sprite. Die Speed-Einstellung ist Vorgabe für die beiden Sprite-Bewegungsbefehle MMOB und RLOCMOB (dort kann man <size> und <speed> in TSB dann weglassen).

Außerdem wird hier endgültig festgelegt, ob ein Sprite hochauflösend sein soll (Wert 0 für <rendertype>) oder aber in Multicolor-Darstellung erscheint (Wert 1). Diese Angaben mussten zwar auch bei der Pixeldefinition (DESIGN und @) bereits gemacht werden, hatten dort aber nur beschreibenden Charakter. Erst mit MOB SET erhält ein Sprite seinen Darstellungsmodus tatsächlich zugewiesen.

Beachten: Die Zuordnung der Buchstaben B und C zu Farben ändert sich je nach Darstellungsmodus des Sprites (dazu auch MOBCOL). Das ist ärgerlich und führt oft zu einer Fehlersuche, ist aber nicht zu ändern. Siehe dazu die Befehle @ und CMOB. Außerdem wird in Simons‘ Basic die Spritenummer <n> nicht überwacht. Ein Wert größer als 7 kann zu Abstürzen führen (behoben in TSB).

Beispiele[Bearbeiten | Quelltext bearbeiten]

Beispiel 1[Bearbeiten | Quelltext bearbeiten]

Multicolor mit DESIGN 1


Definiert ein Multicolor-Sprite für den Simons'-Basic-Textmodus.
Die Zeile 1750 macht das Sprite sichtbar.

1700 PROC msprite
1710   DESIGN 1, 14*64
1720   @...bbbbb....
1721   @.bbb...bbb..
1722   @bb.cc.cc.bb.
1723   @bb...c...bb.
1724   @bb...c...bb.
1725   @.bbbcccbbb..
1726   @...bbbbb....
1727   @b...ddd.....
1728   @bb..ddd.....
1729   @bbbbdddbb...
1730   @..bbdddbb...
1731   @....ddd.bb..
1732   @....ddd..bb.
1733   @....ddd...b.
1734   @....ddd.....
1735   @..ccc.ccc...
1736   @.ccc...ccc..
1737   @.cc.....cc..
1738   @ccc.....ccc.
1739   @ccc.....ccc.
1740   @bbbbbbbbbbbb
1750   COLOUR 9,9: MOB SET 2,14,8,0,1: CMOB 7,6
1755   s8=300: z8=205: MMOB 2,0,0,s8,z8,2,200
1760 END PROC

Entnommen aus "Das Trainingsbuch zum Simons' Basic".

Beispiel 2[Bearbeiten | Quelltext bearbeiten]

Anwendungsbeispiel


Achtung: TSB-Syntax!

Die Formatierung der Druckausgabe dieses Demoprogramms wurde vorgenommen mit dem Tool "BLister" auf der Diskette der Simons-Basic-Erweiterung TSB. BLister macht Schleifen und Strukturen sichtbar und lässt sich in einem Ausdruck auf Papier oder in eine Textdatei gezielter mit Kommentaren versehen. In dieser kleinen Anwendung werden Sprites definiert und verwendet und zur Untermalung hier und da Töne eingesetzt. Wegen seiner Länge wurde das Listing ausgelagert auf eine eigene Seite.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Das D64-Image von TSB (unten auf der Seite) ist rund 100 KByte groß und enthält die BASIC-Datei "BLister".