----------------------------------------
ANIMATED SINUS MOVEMENT
- Das geordnete Chaos -
----------------------------------------
Aus Demos schon vielen bekannt, für Re-
chenfaule und Nicht-Mathematiker ein
Rätsel: die Sinus-Bewegungen von Spri-
tes, die scheinbar wahllos, aber dennoch
in einer gewissen Ordung auf dem Bild-
schirm herumhüpfen und Saltos schlagen.
Mit dem 'Animated Sinus Movement' (ASM)
sind diese schwierigen und aufwendigen
Koordinatenberechnungen für den Laien
nun kein Problem mehr. Sie probieren die
einzelnen Parameter einfach am Bild-
schirm aus und speichern die beste Bewe-
gungssequenz nur noch ab. Hiernach kann
Sie bequem in jedes Programm übernommen
werden, wobei eine Abspielroutine gleich
mit eingebaut ist. Ein einfacher SYS-
Aufruf genügt, um die Sinus-Sprites in
Ihr Programm (auch BASIC) einzubinden.
Da die Animations-Routine im IRQ arbei-
tet bleibt der Rechner entlastet, so daß
Sie das eigene Programm parallel zum
Sinus laufen lassen können.
DAS HAUPTMENU
Im Hauptmenu sehen Sie in der Mitte des
Bildschirms fünf Menupunkte, durch die
ein blinkender Menubalken, mit Hilfe der
Cursortasten, gesteuert wird. Mit 'RE-
TURN' wählen Sie den gewünschten Menu-
punkt an.
1) DER SINUS-EDITOR
Hier können Sie die Parameter der Sinus-
funktion verändern. In der Mitte des
Bildschirms sehen Sie nun acht Spri-
tebälle, die auf dem Bildschirm herum-
fliegen und dabei gleichzeitig größer
und kleiner werden. Am linken Rand des
Bildschirms sehen Sie die Liste der
veränderbaren Sinus-Parameter. Der blin-
kende Wert kann jeweils editiert werden.
Benutzen Sie die Tasten 'CRSR UP' und
'CRSR DOWN' um durch die Parameterliste
zu gehen und 'CRSR LEFT' und 'CRSR
RIGHT' um einen Wert zu verringern, bzw.
zu erhöhen. Mit der Taste 'I' werden
alle Werte auf 0 zurückgesetzt (außer X-
und Y-Add). Mit 'RETURN' gelangen Sie
wieder zurück ins Hauptmenu.
Die einzelnen Werte haben nun folgende
Bedeutungen: Die X- und Y-Distance 1
gibt den Abstand innerhalb der Sprites
an. Das jeweils nächste Sprite ist um
die hier angegebenen Werte vom jeweils
letzten entfernt. X- und Y-Distance 2
gibt die Gesamtverschiebung der Sprites
von der Grundposition (X- und Y-Add) an.
Sie ist ebenfalls variabel, so daß die
komplette Animation sinusförmig hin- und
her-, bzw. hoch- und runter schwingt.
Mit den Speed-Werten, ändern Sie die
Geschwindigkeit, mit der der jeweils
nächste Wert gesetzt wird. X- und Y-Add
sind die Grundverschiebungswerte von der
Ausgangsposition der Sprites aus. Um die
genaue Bedeutung der einzelnen Parameter
zu verstehen, empfehle ich Ihnen, die
Sinuswerte zunächst einmal mit 'I'
zurückzusetzen und anschließend einen
einzelnen Wert zu verändern. Sie können
dann sehr schön mitansehen, welche Wir-
kung dies auf die Sprites hat.
2) DER SPRITE-ANIMATOR
Mit dem Sprite-Animator können Sie die
Bild-Animationssequenz für die Sprites
festlegen. Sie können maximal 16 ver-
schiedene Spriteblöcke definieren, die
zyklisch für ein Sprite durchgeschaltet
werden können. In der Mitte des Bild-
schirms sehen Sie hier ein Fenster, in
dem in hexadezimaler Schreibweise die
Folge der Spriteblocknummern angegeben
ist. Die Reihenfolge geht zeilenweise
von links nach rechts. Möchten Sie eige-
ne Sprites verwenden, so müssen Sie die-
se vorher aus dem Disk-Menu heraus gela-
den haben. Bei der Angabe der Sprite-
blocknummern ist zu beachten, daß Sie
die Adresse Ihrer Sprites kennen müssen.
Haben Sie z.B. ein Sprite an Speicher-
stelle $2000 (dez. 8192) stehen, so müs-
sen Sie wiefolgt den Spriteblock berech-
nen:
$2000 = dez. 8192
8192 / 64 = 128
dez. 128 = $80
Um die Animationsfolge zu editieren kön-
nen Sie den Blinkcursor (Wert blinkt)
mit Hilfe der Cursortasten durch das
Fenster bewegen und mit den Tasten '0'
bis '9', sowie 'A' bis 'F' einen hexade-
zimalen Wert eintragen. Mit den Tasten
'+' und '-' können Sie die Spritenummer
des aktuellen Sprites erhöhen, bzw. er-
niedrigen. Mit 'F1' und 'F3' kann die
Verzögerung bis zum Einschalten des
nächsten Spriteblocks verlangsamt, bzw.
beschleunigt werden. Sie können die Ani-
mation für jedes der acht Sprites ein-
zeln festlegen. Es wird demnach auch
immer nur das Sprite auf dem Bildschirm
dargestellt, das gerade editiert wird.
3) SPRITE-POINTER
Hier können Sie die Register des VIC
verändern, um die Grundeinstellungen der
Sprites zu manipulieren. Die hier einge-
stellten Werte werden später dann, beim
Starten der Animationsroutine, automa-
tisch initialisiert. In der Mitte des
Bildschirms befinden sich die Sprites,
die sich nach dem eingestellten Sinus
bewegen. An ihnen erkennen Sie die Ände-
rungen der VIC-Register direkt. Um die
Werte gezielt verändern zu können soll-
ten Sie sich mit der Programmierung des
VIC ein wenig auskennen (ich verweise da
auf einen Grafik-Kurs, den wir vor eini-
ger Zeit in der MD veröffentlichten).
Hier nun eine Liste der veränderbaren
Werte und deren VIC-Registeradressen
(wenn Sie sich mit dem VIC auskennen,
dann können Sie sich so direkt auf die
Register beziehen):
Beschreibung VIC-Register
----------------------------------------
Sprite an/aus 21
Y-Vergrößerung an/aus 23
Sprite/Hintergrund-Priorität 27
Muticolor an/aus 28
Y-Vergrößerung an/aus 29
Sprite Mulicolor-Farbe 1 37
Sprite Mulicolor-Farbe 2 38
Farbe von Sprite 0 39
Farbe von Sprite 1 40
Farbe von Sprite 2 41
Farbe von Sprite 3 42
Farbe von Sprite 4 43
Farbe von Sprite 5 44
Farbe von Sprite 6 45
Farbe von Sprite 7 46
Durch die Werte bewegen Sie sich mittels
'CRSR UP' und 'CRSR DOWN'. Mit 'CRSR
LEFT' und 'CRSR RIGHT' können Sie den
Cursor innerhalb eines Wertes hin- und
herbewegen. Zugelassene Eingabetasten
sind '0' bis '9', sowie 'A' bis 'F'. Mit
'RETURN' kehren Sie ins Hauptmenu
zurück.
ACHTUNG: Der Wert, der die Sprites ein-
und ausschaltet (Reg. 21) wird während
des Editierens noch nicht direkt über-
nommen. Wenn Sie die Änderung initiali-
sieren wollen, so müssen Sie mit 'RE-
TURN' ins Hauptmenu zurückkehren und
anschließend den Menupunkt "Sprite-
Pointer" nochmals aufrufen!
4) DISK MENU
Hier können Sie wie im Hauptmenu einen
von fünf Menupunkten aufrufen:
PROGRAMM LADEN
Möchten Sie eigene Sprites zum editieren
verwenden, so müssen Sie diese in den
ASM nachladen. Geben Sie hierzu unter
diesem Menupunkt den Filenamen Ihrer
Sprite-Datei an, und bestätigen Sie mit
'RETURN'. Wird das File auf der einge-
legten Diskette gefunden, so erscheint
neben dem Filenamen die Startadresse des
Files in hexadezimaler Schreibweise. Sie
können diese Adresse mit 'RETURN' bestä-
tigen, oder aber Ihren Wünschen entspre-
chend ändern. Beachten Sie bitte, daß
der ASM mit dem ersten 16KB-Block des
VIC arbeitet, so daß nur Adressen von
$0000 bis $4000 (dez. 0 bis 16384) sinn-
voll sind. Sprites an höheren Adessen
können mit dem Spritepointer nicht mehr
adressiert werden.
Während das angegebene File geladen
wird, wird die Ladeadresse hinter der
Startadresse angezeigt.
SINUS SAVE
Hiermit speichern Sie die momentanen
Sinus-, Animaitions- und VIC-
Einstellungen inklusive der IRQ-
Animationsroutine ab. Geben Sie hierzu
den Filenamen an und drücken Sie 'RE-
TURN'. Nun können Sie das High-Byte der
Startadresse editieren. ASM gibt hier
den Wert $C0 (für $C000 = dez. 49152)
vor. In der Regel sollte diese Starta-
dresse in Ordnung sein. Ist der
gewünschte Wert eingegeben, so drücken
Sie abermals 'RETURN'. Es wird nun der
Sinusplayer ab der angegebenen Adresse
gespeichert. Mit einem SYS-Aufruf an
diese Adresse können Sie das Playerpro-
gramm starten. Wenn Sie Adresse $C000
als Startadresse gewählt haben, ge-
schieht dies mit "SYS 49152". Sie soll-
ten anschließend Ihre Sprites auf dem
Bildschirm herumhüpfen sehen.
Achten Sie bitte darauf, daß die eigent-
lichen Spritedaten NICHT mitgespeichert
werden. Sie müssen die Sprites von Ihrem
eigenen Programm an die richtige Adresse
laden.
DIRECTORY
Zeigt das Inhaltsverzeichnis der einge-
legten Diskette an. Mit 'SPACE' wird die
Ausgabe angehalten, bzw. fortgesetzt.
Mit 'RUN/STOP' wird abgebrochen.
ZURÖCK ZUM HAUPTMENU
Es wird zum Hauptmenu zurückgekehrt (wer
hätte das gedacht).
EXIT
Wählen Sie diesen Punkt, so wird Ihnen
noch eine letzte Chance gegeben ins
Hauptmenu zurückzukehren. Andernfalls
wird ein RESET durchgeführt und somit
das Programm beendet.
(ub)