MOB SET
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]
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]
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".
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE