(*---------------------------------------------------------------------------*)
(*                                  The                                      *)
(*                   Cyclic Animation-Generating System                      *)
(*                              Version 2.0                                  *)
(*                                                                           *)
(*                                                                           *)
(*                          von Andreas Maschke                              *)
(*---------------------------------------------------------------------------*)

Inhalt:

    I. Einleitung                                                     Zeile  34
   II. Warum CAGS2 ?                                                  Zeile 126
  III. Anwendungsgebiete                                              Zeile 167
   IV. Die Arbeitweise des Programms                                  Zeile 195
    V. Die verwendeten Datenformate und -bezeichnungen                Zeile 221
   VI. Das Wichtigste: Die Scriptsprache                              Zeile 254
  VII. Tutorial: Das Mobile                                           Zeile 571
 VIII. Abschlieende Bemerkungen                                      Zeile 623
   IX. CAGS3                                                          Zeile 650

(*---------------------------------------------------------------------------*)

I. Einleitung

CAGS (The Cyclic Animation-Generating System) ist ein Programm, mit dem sich aus
Einzelbildern und Soundeffekten perfekt vertonte Animationen auf einfachste Art
generieren lassen.

Die Leistungsmerkmale:
 -bis zu 999 Frames,
 -frei definierbare Abspielsequenz, die aus bis zu 32767 Angaben bestehen
  kann, gemeint ist die Reihenfolge, in der die Frames abgespielt werden
  sollen (wie Loop und Pingpong),
 -zu JEDEM Frame, wenn erwnscht, ein Musikstck/Soundeffekt (MED-Format (in
  dieses lassen sich alle #?-Tracker-Formate umwandeln)),
 -somit sind Echo u.a. Effekte sowie MIDI mglich (diese Version untersttzt kein MIDI),
 -zu JEDEM Frame, wenn erwnscht, eine neue Abspielgeschwindigkeit,
 -beliebige Bildschirmgre (von 32*30 bis 736*580),
 -automatische Bildschirmzentrierung
 -wechselnde Paletten,
 -HAM/EHB,
 -hohe Abspielgeschwindigkeit,
 -Kickstart1.3 bis 3.0,
 -Mehr-Disketten-Animationen
 -einfache Handhabung

Das System besteht aus drei Programmen:
 CAGS2: Hauptprogramm,
 CAGSPlay: eingeschrnkte Version und
 Encryptor: Script-Verschlsseler.

CAGS bentigt ein Script, in dem die ntigen Informationen ber die Frames,
die Module und die eigentlichen Sequencen stehen.
Der Aufbau eines solchen Scriptes wird weiter unten beschrieben.
Die Beschreibung der drei Programme:

CAGS2:
Dies ist das eigentliche Programm, das alle Funktionen beeinhaltet,
so untersttzt es den Anwender beim Austesten von Scripts mit detaillierten
Fehlermeldungen, es ist aber beim Parsing des Scripts relativ langsam.

Gestartet wird es auf Doppelklick, worauf sich ein ASL-Requester zur Auswahl
des Scriptes ffnet, oder in der Shell mit
"CAGS2 <script>",
wobei <script> der Pfad der Scriptdatei ist. Dabei wird das Suffix ".CAGS"
untersttzt, d.h. da das Script "Anim.CAGS" durch
"CAGS2 Anim" gefunden wird.

Nun wird das Script "bersetzt", tritt dabei ein Fehler auf, so wird die
Art des Fehlers ausgegeben. Zustztlich wird auch die Zeile und die
ungefhre Spalte angeben, es bietet sich also an, CAGS2 aus dem Editor
heraus zu starten. Da das Programm reentrant ist, gewinnt man beim Testen des
Scriptes durch "resident CAGS2" zustzlich Zeit.

War das Script o.k., so erscheint das Arbeitsdisplay und die Daten werden geladen.
Tritt dabei wiederum ein Fehler auf, so wird auch hier eine detaillierte Meldung
ausgegeben.

CAGSPlay:
Dieses Programm leistet das gleiche wie CAGS2, nur gibt es keinerlei
Fehlermeldungen aus, ffnet keinen Dateirequester und es bearbeitet nur
mit dem Encryptor verschlsselte Scripts !
Es ist aber beim Parsing sehr viel schneller als CAGS2.
Man sollte also nur mit CAGS2 getestete, lauffhige Scripts mit diesem Programm
bearbeiten, der Vorteil liegt in der Schnelligkeit und Krze des Programmes,
auerdem ist das Paket fr kommerzielle Zwecke entworfen worden,
so ist CAGSPlay der frei vertreibbare Player, wie das so blich ist.
Wer also nur CAGSPlay besitzt, kann keine Animationen selbst erstellen, da
das Script IDEA-verschlsselt wird.
Dieser Algorythmus gilt als absolut sicher, benutzt wird brigens die
xpkIDEA.library. Das ntige Passwort ist auch ziemlich sicher, da es
zur Laufzeit durch eine recht komplizierte Formel berechnet wird, es lt
sich also nicht patchen (Ich selbst kenne es nicht einmal).

Encryptor:
Dieses Programm verschlsselt unverschlsselte Scripts und entschlsselt
verschlsselte Scripts. Fr den Aufruf gilt das gleiche wie fr CAGS2.
Das Programm zeigt nach dem Start an, ob das Script verschlsselt wird
oder nicht (den Status erkennt es selbst).

Wichtig ist, da Encryptor und CAGSPlay die gleiche Versionsnummer haben,
sonst sind die Passwrter inkompatibel.
                               ...

Das Konzept von CAGS ist, die maximale Abspielgeschwindigkeit bei der
Verwendung von Fast-RAM zu erreichen, soda keinerlei Delta-Kompression
verwendet wird. Somit ist auch das Handling einfacher (es ist ein Unterschied
ob ein Read-Error bei einem 3 MB Anim-File auftritt, das dann vollstndig
verloren ist, oder ob sich dieser nur auf ein Frame bezieht.
Auerdem gehrt sptestens nach dem Erscheinen der neuen Amiga-Modelle das
ANIM-Opt#5-Format der Vergangenheit an.

(*---------------------------------------------------------------------------*)

II. Warum CAGS ?

In den drei Jahren, in denen ich mich nun mit Computeranimationen
beschftige, habe ich kein Programm finden knnen, mit dem sich Ideen
bis ins Detail verwirklichen lassen. Gute RayTracer gibt es genug,
aber damit lassen sich halt nur die Einzelbilder berechnen, was dann ?

-Angenommen, man berechnet die Animation eines Mobiles, und spielt diese
 dann in DPaint im Pingpong-Modus ab. Der erzielte Effekt ist gleich Null,
 erstens ist die Abspielgeschwindigkeit nicht konstant, zweitens ist
 das Wichtigste, das Aneinanderschlagen der Kugeln, nicht zu hren.

 Neben hoher Abspielgeschwindigkeit bentigt man also Sounduntersttzung,
 und zwar mit all den schnen Effekten wie Echo, Fading usw., die gngige
 Musikprogramme bieten.

-Oder was macht man, wenn der Bewegungsablauf einer Animation nicht ganz
 stimmt (z.B. fallender Ball: h=g/2*t^2 , das lt sich offenbar schwer im
 Raytracer perfekt hinkriegen) ? Alle Frames nochmal berechnen ?

 Man bentigt die Mglichkeit, fr jedes Frame eine bestimmtes Delay
 anzugeben (also z.B. dieses nach obiger Formel zu berechnen).

-Was ist, wenn man aus Speicherplatzgrnden nur kleine Bilder berechnen kann ?
 Die meisten Animationsprogramme untersttzen nur bildschirmgroe Animationen
 bzw. klemmen die Frames dann in die obere linke Ecke, wobei dann auch noch
 sehr schwere Fehler bei der Bildschirmdarstellung vorkommen.

 Man bentigt neben der Untersttzung beliebiger Bildschirmgren eine
 Auto-Center-Funktion.

-Oder folgendes: Eine Kugel schwingt immer heftiger bis sie schlielich
 explodiert. Beim Schwingen sollen aber immer die gleichen Frames verwendet
 werden.

 Hierzu bentigt man frei definierbare Sequencen.

 All dies bietet CAGS.

(*---------------------------------------------------------------------------*)

III. Anwendungsgebiete

CAGS eignet sich besonders fr Raytracing-Animationen im HAM-Modus, wofr es
auch konzipiert ist.
Alle anderen normalen Grafik-Modi funktionieren aber einwandfrei (auch
maximaler Overscan).

Systemanforderungen:
Der Speicherverbrauch der Frames lt sich einfach berechnen:

(width DIV 8)*height*planes*frames+2^planes*8*frames

Dazu kommen noch die Soundmodule (Summe der Dateilngen), die Felder fr
die Sequencen (INTEGER=unwesentlich) und ca. 50 K fr das eigentliche Programm,
d.h. mit 200K knnte man schon ein Bild anzeigen und dazu einen Sound abspielen.

empfohlene Animationssoftware:
bei 1-2MB: FastRay, Reflections1.6 & Animator1.6, GM-The Animator (ein auch von
           mir entwickeltes Paket zur Animation und Metamorphose von
           dreidimensionalen Funktionen (1 Lichtquelle))
bei 2-4MB: Reflections2.0 & Animator2.0
bei 4-8MB: Imagine

Natrlich eignen sich auch alle anderen bilderzeugenden Programme wie MorphPlus,
DPaintIV, ..., aber damit kenne ich mich nicht aus (Speicherverbrauch).

(*---------------------------------------------------------------------------*)

IV. Die Arbeitweise des Programms

Zuerst bentigt CAGS ein Script, indem die Information ber Gre, Anzahl
und Ort der Bilder, Anzahl der MED-Module und die Sequencen stehen.
Dieses wird bersetzt, trat dabei ein Fehler auf, so wird eine delailierte
Meldung ber die Art des Fehlers ausgegeben.
Am besten, man startet das Programm beim Testen aus dem Editor heraus,
dafr gibt das Programm bei Syntax-Fehlern auch die Spalte und Zeile an.
Ist das Script o.k., so werden nun die Daten geladen und das Script
abgearbeitet.
Tritt whrend der Arbeit an irgendeiner Stelle ein Fehler auf, so wird
smtlicher Speicher etc. freigegeben. Abstrze sind nicht vorgekommen.

Die Frames werden einzeln in den Speicher geladen. Das hat folgende Vorteile:
 -Keine Wartezeit beim Erzeugen der Animation (Die Zeit, um 100 Frames in
  irgend ein Programm zu laden, das dann ein Animfile daraus herstellt, ist
  gemeint, das ist nicht unwesentlich !),
 -sehr hohe Abspielgeschwindigkeit,
 -volle Kontrolle ber jedes Frame.
Der Speicherverbrauch im HAM-Modus ist dabei nur unwesentlich hher als
bei Verwendung von Delta-Kompression.
Das deshalb, weil HAM-Bilder aus dem RayTracer so groe Unterschiede aufweisen,
das die Delta-Files nahezu Framegre haben.

(*---------------------------------------------------------------------------*)

V. Die verwendeten Datenformate und -bezeichnungen

CAGS2 liest Bilder im IFF-Format (Imagine,DPaint,ADPro...) und MED-Module,
die durchaus nur ein Sample und eine Note enthalten knnen. (Oh ja, der
Aufwand lohnt sich.)
Die Bilder knnen
 -ungepackt,
 -byte-run1-gepackt,
 -XPK-Nuke-gepackt (meiner Meinung der effizienteste Packer, das Entpacken
  ist praktisch (zeitmig) nicht zu bemerken),
 -byte-run1- und XPK-Nuke-gepackt sein.
MED-Module zu packen bringt nichts, also habe ich diese Mglichkeit nicht
implementiert.

Alle Bilddateien mssen die gleiche Auflsung etc. haben, und mssen in einen
Directory liegen. Der Dateinahme beginnt mit "PIC.0" und danach folgt die
entsprechende Nummer von 1-999. Alle Bilder mssen von einem whlbaren Index
an lckenlos vorhanden sein, sollen also 3 Frames ab Nummer 9 verwendet
werden, so mssen folgende Bilder im entspechenden Verzeichnis liegen:
"PIC.0009","PIC.0010" und "PIC.0011" .

Fr die Module gilt hnliches, nur beginnt hier der Name mit "MOD.0".

Unterscheiden sich die Werte fr Breite,Hhe und Anzahl der Bitplanes der
Frames, die im Script angegeben wurden, von denen, die im BMHD-Chunk stehen,
so wird eine entsprechende Meldung mit dem korrekten Wert ausgegeben.
WICHTIG: Alle anderen Werte werden akzeptiert, so ist es z.B. mglich,
aus Lores-Frames eine Animation im Hires-Interlace-Modus zu erstellen.
Sind die Frames kleiner als ein Standard-Bildschirm, so werden sie spter
automatisch zentriert !

(*---------------------------------------------------------------------------*)

VI. Das Wichtigste: Die Scriptsprache

Das Script besteht aus der Zuweisung von Werten in einer an OBERON angelehnten
Syntax, also

 var:=<Wert>; oder var=<Wert>; .

Die Reihenfolge der Anweisungen ist unwichtig, zwischen zwei Befehlen knnen
120 Leerzeichen oder Leerzeilen stehen, damit ist fr bersichtlichkeit
gesorgt. Gro-/Kleinschreibung ist auch egal.
Minimum sind folgende 5 Werte:  frames,width,height,planes und end,
d.h., da folgendes kurzes Script

"width=160; height=100; planes=3; frames=6; end=true;"

vollkommen ausreicht, es spielt alle Bilder vorwrts ab, bis die linke
Maustaste gedrckt wird.

Nun die Beschreibung aller Variablen:

  1. FRAMES

 Beschreibung: Anzahl der Bilder,
 Wertebereich: 1 bis 999,
  Defaultwert: nicht gesetzt
     Beispiel: "Frames=55;"

  2. WIDTH

 Beschreibung: Breite der Bilder
 Wertebereich: 32 bis 736 (mu durch 16 teilbar sein)
  Defaultwert: nicht gestetzt
     Beispiel: "Width=204;"

  3. HEIGHT

 Beschreibung: Hhe der Bilder
 Wertebereich: 30 bis 580
  Defaultwert: nicht gesetzt
     Beispiel: "Height=133;"

  4. PLANES

 Beschreibung: Anzahl der Bitplanes
 Wertebereich: 1 bis 6
  Defaultwert: nicht gesetzt
     Beispiel: "Planes=6;"

  5. TITLE

 Beschreibung: Title der Animation, der im CAGS-Fenster erscheint
 Wertebereich: maximal 30 Zeichen, keine '"'-Zeichen setzen !
  Defaultwert: "untitled"
     Beispiel: "Title=My first step;"

  6. LACE

 Beschreibung: Interlace an/aus (geht auch bei Nicht-Interlace-Bildern)
 Wertebereich: TRUE/FALSE (T/F reicht auch);
  Defaultwert: FALSE, wird bei Height>290 automatisch auf TRUE gesetzt
     Beispiel: "Lace=True;" ("Lace=False;" geht zwar, bringt aber nichts)

  7. HIRES

 Beschreibung: Hires an/aus (geht auch auch bei Nicht-Hires-Bildern)
 Wertebereich: TRUE/FALSE
  Defaultwert: FALSE, wird bei Width>366 automatisch auf TRUE gesetzt
     Beispiel: "Hires=T;"

  8. HAM

 Beschreibung: HAM an/aus
 Wertebereich: TRUE/FALSE
  Defaultwert: TRUE bei Planes=6
     Beispiel: wird ggf. automatisch berschrieben

  9. EHB

 Beschreibung: ExtraHalfbrite an/aus
 Wertebereich: TRUE/FALSE
  Defaultwert: FALSE
     Beispiel: "ehb=t;" (dadurch wird HAM auf FALSE gesetzt)

 10. MODULES

 Beschreibung: Anzahl der MED-Module
 Wertebereich: 0-999
  Defaultwert: 0
     Beispiel: "modules=3;"

 11. PICPATH

 Beschreibung: Pfad fr die Bilder
 Wertebereich: maximal 120 Zeichen, keine '"'-Zeichen angeben
  Defaultwert: aktuelles Verzeichnis
     Beispiel: "picpath=rad:rt Pics/;" (Leerzeichen erlaubt)

 12. MODPATH

 Beschreibung: Pfad fr die Bilder
 Wertebereich: maximal 120 Zeichen, keine '"'-Zeichen angeben
  Defaultwert: aktuelles Verzeichnis
     Beispiel: "modpath=ST-67:modules/;"

 13. PICSTART

 Beschreibung: Anfangsindex fr Bilder
 Wertebereich: 0 bis 999-Frames
  Defaultwert: 1
     Beispiel: "picstart=10;" (Bild "PIC.0010" ist erstes Bild)

 14. ALTERPAL

 Beschreibung: alternierende Palette an/aus
 Wertebereich: TRUE/FALSE
  Defaultwert: FALSE
     Beispiel: "alterpal=t;" (ist fr Raytracing-Bilder im HAM-Modus notwendig)

 15. LOOP

 Beschreibung: Vordefinierte Sequenz: vorwrts endlos abspielen
 Wertebereich: TRUE/FALSE
  Defaultwert: TRUE
     Beispiel: wird ggf. automatisch berschrieben

 16. PINGPONG

 Beschreibung: Vordefinierte Sequenz: vor und zurck endlos abspielen
 Wertebereich: TRUE/FALSE
  Defaultwert: FALSE
     Beispiel: "pingpong=t;" (setzt loop auf FALSE)

 17. VARSPEED

 Beschreibung: im Normal-Sequence-Modus (Loop,Pingpong) kann man hiermit die
               Abspielgeschwindigkeit live beeinflussen:
               LMB-schneller, RMB-langsamer, BMB-exit
 Wertebereich: TRUE/FALSE
  Defaultwert: FALSE
     Beispiel: "varspeed=true;" (in diesen Modus gelangt man auch
               durch Drcken des Joystick-Knopfes im Normal-Sequence-Modus)

 18. INTROMUS

 Beschreibung: spielt whrend des Ladens der ganzen Daten schon ein Musikstck
               ab, ist Modules=0, so wird das Stck bis ans Ende der Animation
               gespielt
               WICHTIG: Das Stck mu "MOD.0000" heien
 Wertebereich: TRUE/FALSE
  Defaultwert: FALSE
     Beispiel: "intromus=t;"

 19. DELAY

 Beschreibung: gibt im Normal-Delay-Modus die Wartezeit in 1/50 s zwischen
               zwei Frames an
 Wertebereich: 0 bis 3000 (1 Minute)
               WICHTIG: 0 nicht im HAM-Modus verwenden
  Defaultwert: 1
     Beispiel: "delay=143;"

 20. PICSEQ

 Beschreibung: Dies ist neben MODSEQ und DELSEQ das mchtigste Kommando von CAGS,
               erlaubt es, die Frames in beliebiger Reihenfolge abzuspielen.

  SYNTAX: "PICSEQ=<Anzahl>:<Nummer>,<Nummer>,...,<Nummer>;
  Die Anzahl darf MAXINT=32676 nicht berschreiten, aber das sollte fr jede
  Anwendung ausreichen.
  Nummer gibt die Nummer des Frames an, und zwar von 1 bis frames.

  WICHTIG: LOOP und PINGPONG werden durch PICSEQ berschrieben

 Beispiel1: Darstellung der LOOP-Sequenz bei 10 Frames durch PICSEQ:

  "PICSEQ=10: 1,2,3,4,5,6,7,8,9,10;"

 Kann auch so geschrieben werden:

  "PICSEQ=10: 1,
              2,
              3,
              4,  5,  6,  7, 8,
                        9, 10 ;"

 Beispiel2: Darstellung der PINGPONG-Sequenz bei 10 Frames:

 "PICSEQ=18:1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2;"

 Beispiel3: Darstellung einer sich aufschaukelnden Schwingung bei 5 Frames:

 "PIQSEQ=24:
 1,2,1,
 1,2,3,2,1,
 1,2,3,4,3,2,1,
 1,2,3,4,5,4,3,2,1;"

 21. MODSEQ

 Beschreibung: Soundeffekt-Sequenz

  SYNTAX: "MODSEQ=<Anzahl>:<Nummer>,<Nummer>,...,<Nummer>;
  Die Anzahl darf MAXINT=32676 auch nicht berschreiten.

  Nummer gibt
         -die Nummer des Modules an, und zwar von 1 bis modules oder
         -weist bei -1 den Player an zu stoppen der
         -weist bei -2 den Player an, nichts zu tun bzw. das aktuelle
          Modul weiter zu spielen.

 Fr die Anzahl (MODSEQ) mu folgendes gelten:
  -im LOOP-Modus : MODSEQ=FRAMES,
  -PINGPONG-Modus: MODSEQ=2*FRAMES-2,
  -Sequence-Modus: MODSEQ=PICSEQ;

 Beispiel: 5 Frames, PINGPONG-Modus, ein auf ein Brett schlagender Hammer.

 Angenommen, der Hammer berhrt das Brett bei Frame3 und bohrt sich bis Frame 5
 in das Brett etwas hinein und das Modul, das den Ton des Schlages enthlt,
 ist das Modul "MOD.0001", das Modul, das das Knirschen des Brettes
 enthlt, ist "MOD.0002", dann fhrt

  "PINGPONG=TRUE;
   MODSEQ=8:
    -2,                      (* Frame1 -keine Aktion *)
    -2,                      (* Frame2 -keine Aktion *)
     1,                      (* Frame3 -Schlag       *)
    -2,                      (* Frame4 -keine Aktion *)
     2,                      (* Frame5 -Knirsch      *)
    -2,                      (* Frame4 -keine Aktion *)
    -1,                      (* Frame3 -Player aus   *)
    -2;                      (* Frame2 -keine Aktion *) (Restart)

 zum gewnschten Ergebnis.

 22. DELSEQ

 Beschreibung: Delay-Sequenz (zu jedem Bild wird die Wartezeit definiert)

  SYNTAX: "DELSEQ=<Anzahl>:<Nummer>,<Nummer>,...,<Nummer>;
  Die Anzahl darf MAXINT=32676 auch nicht berschreiten.

  Die Anzahl (DELSEQ) mu mit PICSEQ bzw. MODSEQ bereinstimmen
  WICHTIG: DELAY wird dadurch wirkungslos, auch VARSPEED funktioniert
           nicht
  Nummer gibt folgendes an:
         -von 0 bis 3000 die Wartezeit in 1/50 s an
         -bei -1 wird auf das Drcken der rechten Maustaste gewartet
         -    -2 beendet die Animation

 23. DCHANGEx (1 bis 5)

 Beschreibung: Diskettenwechsel erlauben
 Wertebereich: 1 bis frames
     Beispiel: "DCHANGE3=15"

 Dieser Parameter hat den Sinn, eine z.B. 5 MB groe Animation auf verschiedenen
 Disketten zu verteilen. Auf jeder mu sich der mit PICPATH definierte Pfad befinden,
 es ist zu empfehlen, in PICPATH keinen Diskettennamen zu verwenden, da sonst alle
 Disketten den gleichen Namen haben mssen.

 Es knnen 5 Diskettenwechsel durchgefhrt werden (d.h. man  kann die Animation
 auf 7 Disketten verteilen, da mit MODPATH eine eigene fr  die Module angegeben werden
 kann. Das sollte fr jede Anwendung ausreichen, meine letzte 5MB groe Animation habe
 ich z.B. auf 4 Disketten verteilt.
 Hier sollte man auf jeden Fall INTROMUS=TRUE setzen, meine Animation (byte-run1 und
 NUKE-gepackt) bentigte 10 Minuten Ladezeit.

 Vor dem Frame mit der Nummer, die hinter DCHANGEx angeben wird, erfolgt der
 Diskettenwechsel, dabei wird im Status-Fenster statt "Loading..." "DISKCHANGE"
 angezeigt, nun mu die richtige Diskette eingelegt werden, man sollte noch etwa
 3 Sekunden warten, bis das DOS die Diskette anerkannt hat, dann die linke
 Maustaste drcken.

 Beispiel: 5 Disketten

 Die Disketten mgen folgende Bilder enthalten:

 1.Diskette: "PIC.0001" bis "PIC.0009",
 2.Diskette: "PIC.0010" bis "PIC.0023",
 3.Diskette: "PIC.0024" bis "PIC.0026",
 4.Diskette: "PIC.0027" bis "PIC.0148" und
 5.Diskette: "PIC.0149" bis "PIC.0160"

 Dann fhrt etwa folgendes Script zum gewnschten Erfolg:

 "width=320;height=256;planes=5;
  frames=160;

  picpath=df0:;
  dchange1=10;
  dchange2=24;
  dchange3=27;
  dchange4=149;

  end=true;"

 Man sollte also die Disketten unbedingt numerieren, damit das Einlegen einer
 falschen vermieden wird, dann wrde ja das nchste Bild nicht gefunden und die
 Arbeit  abgebrochen werden.
 Hintergrund: Es wird nicht fr jedes Bild ein Dateiname reserviert, weil dadurch
              das Handling sehr erschwert wrde (bei 100 Bildern 100 Dateinamen
              einzutippen ist nicht sehr unterhaltsam), auerdem wrde dadurch auch
              der Speicherverbrauch ansteigen.

 24. END

 Beschreibung: Ende des Scriptes
     Beispiel: "end=t;"

 DIESE ANWEISUNG MUSS AM ENDE JEDES SCRIPTES STEHEN !

 Sinn: Nach diesem Befehl kann man beliebige Texte (Kommentare) in das Script
       schreiben, das ist manchmal sehr angenehm.

(*---------------------------------------------------------------------------*)

VII. Tutorial: Das Mobile

Wir mssen zuerst die Bilder berechnen, z.B. mit Reflections. Und zwar so,
da die Bewegung in einer Richtung vollstndig ist. Ich habe 13 Frames
berechnet.
Es ist sicher angebracht, das Gerusch beim Aneinanderschlagen der Kugeln
abwechselnd auf dem linken und auf dem rechten Lautsprecher ausgeben zu
lassen, wir bentigen also zwei MED-Module.
Zuerst suchen wir nach einem Sample, das metallisch klingt, z.B. irgend ein
Hihat. Nun laden wir MED, gehen in den EDIT-Modus und laden unser Sample.
Nun setzen wir auf Spur 0 das Sample, z.B. Note C-3. Jetzt speichern
wir das ganze als "rad:MOD.0001" ab, lschen die eben gesetzte Note und
setzten sie auf Spur 1 und speichern unser Modul als "rad:MOD.0002" ab.
Nun formatieren wir eine Diskette, benennen sie "Anim-Disk" und richten
die Verzeichnisse "PICS" und "MODS" darauf ein. Auf diese kopieren wir
in die entsprechenden Verzeichnisse die Bilder und die Module.
Nun geht's los. Editor laden und:

"TITLE=   The Mobile;
 FRAMES=13;
 WIDTH=272;
 HEIGHT=208;
 PLANES=6;
 MODULES=2;
 PICPATH=Anim-Disk:PICS/;
 MODPATH=Anim-Disk:MODS/;
 ALTERPAL=TRUE;
 PINGPONG=TRUE;"

Die Vertonung ist einfach:
Bei meinen Bildern berhren sich die Kugeln bei Frame 7, also

"MODSEQ=24:                      (* 2*frames-2 *)
   -2,-2,-2,-2,-2,-2,
    1,                           (* Ton ab: rechter Lautsprecher *)
   -2,-2,
   -1,                           (* Player Stop, ist eigentlich unntig *)
   -2,-2,-2,-2,-2,-2,-2,-2,
    2,                           (* Ton ab: linker Lautsprecher *)
   -2,-2,
   -1,                           (* Player Stop *)
   -2,-2;
END=t;"

Das war's schon !
Das Script speichern wir als "Anim-Disk:Mobile.cags" ab und kopieren noch
das Programm "CAGSPlay" auf die Disk. Nun verschlsseln wir mit
"Encryptor anim-disk:mobile" das Script und starten es danach durch
"CAGSPlay anim-disk:mobile" (Abbruch mit linker Maustaste).

(*---------------------------------------------------------------------------*)

VIII. Abschlieende Bemerkungen

Sollen mit CAGS selbstartende Animationsdisketten erstellt werden, so ist
folgendes zu beachten:

-die xpkmaster.library mu sich in libs: befinden,
-sind die Frames NUKE-gepackt, so mu sich im Verzeichnis libs:compressors
 die xpkNUKE.library befinden,
-CAGS2 bentigt unter KS1.3 die info.- und die icon.library,
-CAGSPlay bentigt in libs:compressors auch die xkpIDEA.library,
-das Programm CAGSPlay sollte verwendet werden (Script vorher verschlsseln),
 einerseits ist es beim Parsing bemerkbar schneller, andererseits kann von
 Leuten, die den Encryptor nicht besitzen, das Script nicht gelesen werden,
 auerdem bentigt das Programm unter KS1.3 NICHT die icon.- und die
 info.library,
-sollte das System CAGS kommerziell vertrieben werden, so MUSS das Programm
 CAGSPlay verwendet werden,
-unter OS2.0/3.0 mu vor dem Aufruf von CAGS in der startup-sequence ein
 type- oder ein echo-Befehl stehen, soda das Shell-Window erscheint,
 sonst ist nichts zu sehen !

Auerdem suchen CAGS2  und CAGSPlay vor jedem Start nach einem Font namens
"clean" (8 Punkte) im Verzeichnis fonts:, der fr das Arbeitsdisplay verwendet
wird (ist besonders unter OS 1.3 zu empfehlen).

(*---------------------------------------------------------------------------*)

IX. CAGS3

CAGS3 wird es geben, sobald ich mir einen A4000 zugelegt habe.
Geplante Features:
 -Untersttzung aller AA-Modi,
 -Wiedereinfhrung der MIDI-Untersttzung durch MED

                                      ...

