@database AMCAF-Anleitung @index sbefindex @remark $VER: AMCAF V1.40 (17-Jan-95) manual written by Chris Hodges @node main "AMCAF Extension Anleitung Deutsch" AMCAF Extension V1.40 Anleitung von Chris Hodges. *** ACHTUNG! *** Benutzer, die AMCAF bereits von The Software Society bzw. von der Nexus Software GmbH gekauft haben, lesen bitte @{" HIER " link ssocietysuxx} weiter! @{" Vorwort " link svorwort} - Wichtige Informationen zur AMCAF-Extension @{" Wie man sich registriert" link sregiste} - Registration von AMCAF @{" Bank-Befehle " link mbankbef} > Befehle zur leichten Bankverwaltung @{" Grafik-Befehle " link mgfx_bef} > Grafik- und Effektbefehle @{" Disk-Befehle " link mdiskbef} > Diskettenbefehle @{" Zeit- und Datumsbefehle " link mzedabef} > Aktuelle Uhrzeit/Datum, etc. @{" Joystick & Maus Support " link mjoymbef} > Weitere Befehle für die Joystickperepherie @{" Vektor Befehle " link mvecrbef} > Befehle zum Rotieren von Punkten in 3D @{" Protracker Befehle " link mprotbef} > Befehle zum Abspielen von Trackermusiken @{" String&Integer Befehle " link mstribef} > Funktionen für Strings und Zahlen @{" Sonstige Befehle " link mmiscbef} > Alles mögliche @{" Extension-Befehle " link mextebef} > Interne/Profi Befehle @{" Hinweise " link sdisks } - Hinweise zu den beiden Disketten @{" Befehls-Index " link sbefindex} @{" Zusatz-Index " link szusindex} @{" Bugliste " link sbuglist} @{" Grußliste " link sgreeting} @{" Copyrights " link scopyright} @{" History " link shistory} AMCAF is Copyright 1994/95 by Chris Hodges. Alle Rechte vorbehalten. @endnode @node sregiste "Wie man die Vollversion von AMCAF bekommt" Wie man AMCAF registriert Wenn Ihnen die Demoversion gefallen hat, können sie die vollständige, registrierte Version für nur 30 DM erhalten. Füllen Sie einfach das Formular unten aus und schicken sie es mir entweder per E-Mail oder Schneckenpost. Die registrierte Version bzw das Keyfile wird Ihnen innerhalb von zwei Wochen zugeschickt. Snail-Mail: Chris Hodges Kennedystraße 8 D-82178 Puchheim West Germany Tel: +49-89/8005856 (Voice/Modem) Bankkonto: Christopher Hodges Account 359 68 63 Sparkasse Fürstenfeldbruck BLZ 700 530 70 E-Mail: platon@cu-muc.de WWW: http://home.pages.de/~platon/ Registrationsformular: ~~~~~~~~~~~~~~~~~~~~~~ An Chris Hodges Kennedystraße 8 D-82178 Puchheim Germany JA, ich will AMCAF registrieren. Ich habe die Sharewaregebühr beigelegt (bitte ankreuzen): O als Bargeld (30 DM or US$20 or £15) O als Scheck (innerhalb Deutschlands: 30 DM) O als Scheck (außerhalb Deutschlands: 35 DM or US$24 or £17) O per Banküberweisung (30 DM) Sie MÜSSEN die folgenden vier Zeilen ausfüllen! Name: ______________________________________ Straße: ______________________________________ PLZ, Ort: ______________________________________ Land: ______________________________________ The neueste Version von AMCAF und das Keyfile wird an die obengenannten Adresse geschickt. Dies ist freiwillig: Telefon: ______________________________________ E-Mail: ______________________________________ Kickstart: ______________________________________ Computer: ______________________________________ (CPU, RAM Erweit.) ______________________________________ AMOS Ver.: ______________________________________ Extensions: ______________________________________ Schicken Sie mir: O die Vollversion auf zwei Disketten (es könnte sein, daß nicht alle Beispielprogramme auf die Disks passen) O die Vollversion auf zwei Disketten, mit lha gepackt (alle Beispiele, möglicherweise mit Bonus-Dateien) O nur das Keyfile und ein Update auf einer Diskette, da ich dieses Archiv noch da habe (welches für ein Update benötigt wird) O nur das Keyfile und ein Update per Email. Schicken Sie mir: O die englische Version des Installers & Anleitung O die deutsche Version des Installers & Anleitung O nur die deutsche Anleitung. Ich nutze (Mehrfachbekreuzung möglich): X OFS Disks (wenig Platz (837 KB), langsamer Zugriff) O FFS Disks (mehr Platz (878 KB), schnellerer Zugriff) O PFS+diskspare.device Disks (noch mehr Speicherplatz (1007616 Bytes pro DD Disk), sehr schneller Zugriff) O High-Density Disketten Für die zukünftigen Versionen von AMCAF: O Ich will über die Updates informiert werden O Ich möchte das Update über E-Mail erhalten (keine Mailgrößenbeschränkung vorhanden) O Ich möchte nur ein kleines Updatearchiv per E-Mail O Ich bekomme das Update über FTP/AmiNet O Ich warte auf die AmiNet CD O Ich rufe dich einfach an und hols mir via Modem &-) O Ich will garkein Update, AMCAF ist so schon gut genug ;-) Wie bewerten Sie AMCAF: sehr gut-1 2 3 4 5 6-ganz schlecht Eigenschaften O O O O O O Installation O O O O O O Beispielprogs O O O O O O Anleitung O O O O O O Preis/Leistung O O O O O O Support O O O O O O Spaß-Faktor O O O O O O Kommentare, Vorschläge, neue Ideen, Bugs...: ____________________________________________________ ____________________________________________________ ____________________________________________________ ____________________________________________________ @endnode @node ssocietysuxx "Wichtige Informationen zum Upgraden von alten Versionen" Verehrte Käufer der AMCAF Extension, AMCAF ist KEIN Produkt der Software Society bzw. Nexus Software GmbH mehr. Die desolaten Geschäftspraktiken von Herrn Heimer haben mich gezwungen, AMCAF auf eigene Faust als Shareware zu verkaufen. 1. "Kann ich die neuen Versionen von AMCAF benutzen?" Das ist eine leider etwas kniffelige Sache. AMCAF V1.0 benutzte damals noch den Extension Slot 16. Als ich aber erfuhr, daß dieser bereits von einer anderen sehr beliebten Extension Namens EasyLife besetzt ist, mußte ich AMCAF auf Slot 8 verschieben. Das hat natürlich die Konsequenz, daß sie Ihre alten Programme, die AMCAF benutzen, nicht ohne eine Umstellung weiterbenutzen können. Diese kleine Umstellung ist aber nicht sehr schwierig und kostet meistens nicht sehr viel Zeit: - Ändern Sie den Namen der bereits installierten AMCAF-Extension in Slot 16 mit Hilfe des Interpreter_Config-Programmes von 'AMOSPro_AMCAF.Lib' in 'AMOSPro_AMCAF16.Lib' um. - Benennen Sie entsprechende Extensiondatei in Ihrem APSystem- Verzeichnis in 'AMOSPro_AMCAF16.Lib' um. - Installieren sie das Update von AMCAF, wie es unten beschrieben ist, Dabei wird die neue Version der Extension in Slot 8 eingetragen. - Laden Sie jetzt AMOS Pro und prüfen Sie, ob beide Extensions geladen worden sind. - Repeat - Laden Sie eines Ihrer Programme in den Editor, welches noch die alte Version von AMCAF benutzt. - Rufen Sie das Retokenizer.AMOS Programm auf, welches die alten Befehle automatisch in die neuen umwandelt. Um diesen Prozess zu erleichtern sollten Sie sich das Programm auf eine Taste legen (z.B Alt-R). - Speichern Sie das Programm unter dem alten Namen wieder ab. - Until (kein altes AMCAF Programm mehr)=True - Nun können Sie mit Hilfe des Interpreter_Config-Programmes die alte AMCAF Extension aus Slot 16 entfernen. Dieser Prozess ist einmalig, das heißt, er muß nur bei der ersten Umstellung von AMCAF V1.0 auf AMCAF V1.1x erfolgen. Bei weiteren Updates muß er nicht wiederholt werden. Falls Sie nachträglich noch Programme finden, die die Fehlermeldung "Extension not loaded" bei einem Befehl Namens 'Extension Q' auswerfen, so tragen Sie einfach die AMCAF16.Lib nochmals ein und lassen den Retokenizer über dieses Programm laufen. Auch wenn diese Prozedur mit ein wenig Arbeit verbunden ist, so lohnt sie sich auf jeden Fall... 2. "Ich bin kein registrierter User, da ich AMCAF von der Software Society gekauft habe. Wie komme ich an die registrierte Version?" Das ist ganz einfach. Kopieren Sie einfach die Datei "SerialNumber" von Ihrer original AMCAF_Install-Diskette in das AMCAF_Install-Verzeichnis des Updates. Danach sollte die registrierte Version von AMCAF installiert werden können. 3. "Wie installiere ich denn nun das Update?" Holen Sie sich das AMCAFExt119.lha Archiv, falls sie es noch nicht haben sollten und entpacken Sie dieses. Entpacken Sie nun das AMCAFUpd130.lha-Archiv in das selbe Verzeichnis. Überschreiben Sie alle alten Dateien. Löschen Sie das "AMCAF_Install"-Verzeichnis, da es die englische Version enthält. Benennen Sie das "AMCAF_InstallGerman"-Verzeichnis in "AMCAF_Install" um und starten Sie das Script "ExecuteMeFirst!". Wenn Sie ein Backup Ihrer AMOSPro_Help-Files haben, sollten Sie die alten Help-Files restaurieren, sonst können die neuen Hilfetexte nicht richtig angefügt werden. Nun laden Sie einfach das Installationsprogramm. Installieren Sie einfach die Hauptdatei und die Beispielprogramme auf die Festplatte. 4. "Wie bekomme ich zukünftige Updates?" über das AmiNet (bzw die CDs) oder direkt bei mir. Wenn ich Sie bei mir registrieren soll, damit Sie über zukünftige Versionen informiert werden können, so schicken sie mir einfach einen Brief oder eine EMail, die Ihre Seriennummer (!), Ihre Anschrift und -falls vorhanden- Ihre EMail-Adresse enthält. 5. "Das Update passt nicht mehr auf zwei Disketten, was soll ich tun?" Eine Festplatte kaufen :-) Viel Spaß noch mit dem Update von AMCAF. @endnode @node svorwort "Wichtige Informationen zur AMCAF-Extension" Willkommen zur Anleitung der AMCAF Extension. ************************************************************************** * * *** ACHTUNG *** ACHTUNG *** ACHTUNG *** ACHTUNG *** ACHTUNG *** ACHTUNG ** * * * AMCAF wird NICHT mehr von The Software Society oder der Nexus Software * * GmbH vertrieben! Sie werden viel Ärger haben, wenn Sie AMCAF dort be- * * stellen, mal abgesehen davon, daß AMCAF dort ungefähr 70 DM kostet im * * Vergleich zu den 30 DM Sharewaregebühr. * * * * Deshalb kaufen Sie AMCAF NICHT von der Software Society, lassen Sie es * * sich bei MIR @{" registrieren. " link sregiste} * * * ************************************************************************** Vielen Dank für den Kauf der AMCAF Extension. Sie werden sicher zufrieden mit diesem Produkt sein. Diese Erweiterung enthält über 200 Befehle und Funktionen für die unterschiedlichsten Bereiche, mit über 40KB Länge ist sie (soweit ich weiß) die größte Extension für AMOS Professional. Ein paar Befehle funktionieren besser oder nur unter Kickstart 2.04, also wenn Sie noch immer nicht auf 2.04 oder 3.1 umgestiegen sind, dann sollten Sie das schleunigst tun, es lohnt sich wirklich! Übrigens muß die Extension unter der Nummer 8 eingetragen werden, aber das erledigt ja das Installationsprogramm für Sie! Vergessen Sie nicht auch die @{" Hinweise " link sdisks} zu lesen! Kein Programm ist fehlerfrei, und so es ist auch dieses nicht. Ich bitte Sie deshalb, mir alle Bugs so schnell wie möglich mitzuteilen. Es nützt mir jedoch nichts, wenn sie mir schreiben: Der Befehl xxx steigt bei mir aus. Geben Sie mir auf jedenfall Ihre Konfiguration und vielleicht auch den Programmteil, wo der Fehler auftritt. Ich bin immer offen für Verbesserungen an AMCAF. Haben Sie Mut und rufen Sie mich an, wenn Sie irgendwelche Probleme oder Vorschläge haben! @{" Bezugsadresse für AMCAF-User " link myaddress} Wenn Sie auf eine FTP-Distrubution Site Zugriff haben, können Sie sich kostenlose Updates von AMCAF aus dem AmiNet in der Area dev/amos downloaden. Bitte achten Sie darauf, daß sie sich das deutsche und nicht das englische Update ziehen. Viel Spaß noch mit der Extension! Chris Hodges @endnode @node sdisks "Hinweise zu den beigelegten Disketten" Hinweise zur Installations- und Beispieldiskette. Falls Sie AMCAF noch nicht installiert haben, sollten Sie das bald tun, denn die Beispielprogramme laufen alle nicht ohne AMCAF (logisch oder?). Die Installation ist sehr einfach und unkompliziert. Lesen Sie einfach die Anweisungen ganz aufmerksam durch, die beim Start des Installations- programms erscheinen. Bei der Installation werden Sie nach Ihrem Namen gefragt. Bitte geben Sie diesen korrekt ein. Er wird in der Extensiondatei kodiert abgespei- chert. Denken Sie daran, daß Sie die registrierte Version von AMCAF nicht an Dritte weiterkopieren dürfen. Die AMCAF-Extension kann entweder direkt auf Festplatte oder auf eine AMOSPro_System-Diskette geschrieben werden. Für die Disketteninstallation bietet AMCAF die Möglichkeit, entweder direkt Dateien auf der Diskette zu löschen, um Platz zu schaffen und dann die Extension darauf zu kopieren, oder aber eine neue Diskette zu formatieren und dorthin alle wichtigen Dateien zu schreiben. Leider hat die Datei "mod.no good" nicht mehr auf der Beispieldiskette Platz gefunden, die von dem Programm "NoGood(StartTheDance).AMOS" benötigt wird. Deswegen wurde Sie auf die Installationsdiskette kopiert. Damit Sie den Befehl "Set Rain Colour" vollständig benutzen können, muß die AMOS Pro Hauptbibliothek ein wenig modifiziert werden. Starten Sie deshalb zuerst das Programm "SetRainColourPatch" und verlassen Sie danach AMOS Pro wieder. Diese Änderung wirkt permanent, d.h sie muß nur ein einziges mal ausgeführt werden. Die Beispielprogramme wurden nicht nur geschrieben, damit Sie sie starten, kurz anschauen und dann gleich das nächste hineinladen. Die meisten Programme sind gut dokumentiert und bieten Ihnen die Möglichkeit, viel dazuzulernen. Nehmen Sie sich bitte die Zeit, es lohnt sich wirklich! Manche Befehle in AMCAF reagieren sehr empfindlich auf Mißbrauch. Vergessen Sie deshalb nicht, Ihre eigenen Projekte regelmäßig abzu- speichern. @endnode @node myaddress "Post geht an..." Wenn noch Fragen auftreten, oder wenn Sie sogar einen Bug gefunden haben, dann schreiben Sie mir oder rufen Sie mich an. Bei Bugs senden Sie mir bitte eine DETAILLIERTE FEHLERBESCHREIBUNG mit Ihrer Computerkonfiguration und dem Programmteil, wo der Fehler auftritt. Snail-Mail: Chris Hodges Kennedystraße 8 D-82178 Puchheim West Germany Tel: +49-(0)89/8005856 (Voice/Modem) Bankkonto: Christopher Hodges Account 359 68 63 Sparkasse Fürstenfeldbruck BLZ 700 530 70 E-Mail: platon@cu-muc.de WWW: http://home.pages.de/~platon/ Wenn Sie ein Modem besitzen und Zugriff auf InterNet haben gibt es da die AMOS Mailing List, ein weltweites Netz von AMOS Programmierern. Gute Englischkenntnisse werden vorausgesetzt. Wenn Sie die Liste bestellen wollen, dann schicken Sie einfach eine Nachricht mit dem Betreff "SUBSCRIBE" an amos-request@access.digex.net. Weitere Einzelheiten, sowie alle Nachrichten eines Quartals erhalten Sie aus dem AMOSMailingList Archiv in AmiNet dev/amos. @endnode @node sbuglist "Bugs mit denen Sie rechnen müssen" Bug-Report Dies ist eine kleine Liste mit AMOS-Bugs, mit denen Sie rechnen müssen: 1. Die AMOS Stringverwaltung ist nicht fehlerfrei. Besonders bei AMAL-Programmen müssen sie aufpassen! 2. Die AMOS Default Routinen werden nicht aufgerufen: Wenn man AMOS lädt, und dann ein Programm startet, so werden keine Extension-Default-Routinen aufgerufen. D.h wenn eine Musik vom vorherigen Programm noch läuft, so wird sie NICHT angehalten. Abhilfe: - Einmalig ein Accessory aufrufen (z.B ein Programm compilieren) 3. Programme, können nicht compiliert werden: Der Compiler meldet: 'Kein AMOS Programm'. Falls Banks benutzt werden, so müssen alle Banklängen gerade sein (außer die von Sprites-und Iconsbanks). Wenn das nicht der Fall ist, laufen die Programm zwar im Interpreter, lassen sich aber nicht compilieren. Abhilfe: - Ungerade Banks mit Bank Stretch um ein Byte erweitern. 4. Ein Programm, das mit Data-Zeilen arbeitet, funktioniert nicht korrekt als Compilat: Hinter einer Data-Zeile dürfen keine Kommentare stehen. Der Compiler interpretiert diese Kommentare als Daten. Abhilfe: - Kommentare in eine einzelne Zeile schreiben. Ein Freund hat ein ganz anderes Problem als er versuchte ein 500 KB Programm, welches nur aus Data-Zeilen bestand zu compilieren. Der Compiler stürzte einfach ab. Bis jetzt habe ich für diesen Fall noch keinen Ausweg gefunden. 5. Ein Programm mit Val-Funktionen arbeitet nicht richtig compiliert: Im Compilat gibt die Val-Funktion manchmal 0 zurück, obwohl eine korrekte Zahl eingegeben wurde. Tritt meistens bei sehr großen Programmen auf. Abhilfe: - Eine eigene Val-Funktion schreiben. Bugs, die für Extensionprogrammierer interessant sind: 1. Maximal können 9 Parameter übergeben werden. Alles was darüber geht, wird ignoriert. 2. Alle Routinen, die direkt von einem Token angesprungen werden, müssen in den ersten 32-KB Code liegen, sonst gibts einen Absturz. Weiterhin dürfen Rbras und RBccs nicht weiter als 32 KB auseinander liegen. @endnode @node scopyright "Copyrights" Amiga is a trademark of Escom AG. MC68xxx series are trademark of Motorola Inc. AMOS by François Lionet. Copyright 1990 Mandarin/Jawx. Copyright 1991 Europress Software Ltd. AMOS Pro by François Lionet. Copyright 1992 Europress Software Ltd. AMCAF by Chris Hodges. Copyright 1994 The Software Society. Copyright 1995 Chris Hodges. AMIPS by Thomas Nölker. Copyright 1993 The Software Society. TOME by Aaron Fothergill. Copyright 1991 Shadow Software. PowerPacker by Nico François. Copyright 1990 PowerPeak. ProTracker 2.2 by P. Hanning. Copyright 1992 Noxious. (PD) Turbo Imploder by P. Struijk & A. Brouver. Freeware 1991. @endnode @node sgreeting "Aha... Man glaubt, man wird gegrüßt? ;)" Also erstmal einen Gruß an alle, die die Extension bei mir registriert haben. Nochmals vielen Dank. Dann gehen spezielle Grüße an: Meine Eltern (Hallo!) Meinen Bruder (Mach hin! Ich will eine schöne Raytracinganimation sehen!) Meine Schwester (Hi Dumpfbacke!) Hans Peter Obermeier (Na, gibts was neues? ;-)) Ralf Schulz (Oh, ich kann es immer noch nicht begreifen, warum Du Dir eine MS-Dose gekauft hast... :-( ) Markus Ungerer (Schreib mal wieder eine Kurzmail!) Bernd Ungerer (Danke fürs Beta-Testen und für die guten (?) Vorschläge!) Michael Ufer (Du kleiner Hobbyzauberer! Danke für die vielen tollen Mails) Oliver Ufer (Danke für die vielen Vorschlage ;-) ) Oliver Seibert (Die Surprise war die beste Box, die ich kannte!) Oliver K. Dirk Drießen (Man gönnt sich ja sonst nix ;-)) Ralph Bernecker (Hallo jMS/Dr.Feelgood/Striker/fELON) Alexander Kunz (Thx 4 da kewl tunes and support!) Omer Sasic (+++) Claude Müller (Grüße in die Schweiz! Hoffentlich kommste bald aus der Army) Dirk Schulten (Hallo Maus-User! ;-) ) Andre Panser (Schreib mal wieder) Andreas Duncker (Danke für Deinen aufbauenden Brief ;-) ) Mathias Mischler (Danke für Deinen Support!) Andreas Zymny (Das Quotezeichen bleibt UNKONFIGURIERBAR! Basta! ;-) ) Kriegsheld (Jaja! Eigentlich ist ja heute schon morgen, gelle?) Henning Baron Rainer Benda Robert Rothhardt (Danke für die beste Zeit in meinem ganzen Schulleben!) Florian Fackler (Strato Impact rulez!) Thomas Nölker (Viel Glück mit Deiner AMIPS-Extension!) Jürgen Schäfer (Sorry wegen der Gif-Geschichte, vielleicht kommt das noch) Greg Cox (Keep up the good work!) Michael Cox (Thanks for adding me to the mailing list ;-) ) Carsten Albert Marco Eberhardt (Thanks for your nice mails) Paul Hickman Andy Church Ben Wyatt (Greetings! ;-))) ) Petri Hakkinen (nice 3D engine!) Roy Antonsen (stop drinking so much booze ;-) ) Martijn Wehrens (Immer wieder lustige PMs! Weiter so!) Semprini (you're a REAL friend!) Mark Wellington (nice stories from ya, keep that up!) Daniel Rädel Thomas Nokielski Jari Jokivuori und alle anderen, die mich kennen, und die ich ausversehen vergessen habe. Weiterhin grüße ich meine Modem-Kumpels: Magic, Lemming, VIP, Schneemann, Killer, Marvin, Harry, Holger, Caboose, Blue Shogun, Ralli, REYem, Nosy und Kily. Merlin, WotaN, Vinzenz, Fritz, Braumeister, Amigaman und Kai. Dr.Dre, Tomy, Brocker, Case, Omer and Guru. Flüche an: Hendrik Heimer (Sie wissen ganz genau, warum, Mr. Software Society!) François Lionet Jester (Christoph Steinecke) Nobody (Horst Bressem) Intel, IBM und MicroSoft Deutsche Telekom Europress Data Becker und Sybex R2B2 ($§%$&%§$) Phase 5 So... ich hoffe, ich habe keinen Vergessen... huch ja... Grüße noch an alle Mitglieder des RAMSES-Computerclubs. CU ______ __ __ ______ __ _____ /,____/\ / /\/,/\ / __ //\ /,/\ / ___/\ ///\___\// /_/// //,/_/'/ //// //./___\/ /'/_/_ / __ '/ /// __/ //'/ / \__, /\ /_____/\ /_/\/_/ //_/\_\_\//_/ / /____/ / \_____\/ \_\/\_\/ \_\/\_\ \_\/ \____\/ @endnode @node shistory "History der AMCAF-Extension" History der Amcaf-Extension. V1.43 02-Nov-96 --------------- - Sload/Ssave hinzugefügt. Das sind die selben Befehle wie in der Music Extension. Jetzt kann man sie endlich ganz entfernen! - Diverse Bugfixes. V1.42 18-Oct-96 --------------- - Unterstützung für Set Tmpras für Fellipse&Fcircle eingebaut. - Typ-Überprüfung für Protracker-Module eingebaut. V1.41 29-Mar-96 --------------- - Bug in Xfire entdeckt und gefixt. - Kleinere Änderungen. V1.40 26-Dec-95 --------------- - Neue Befehle: - =Pt Cpattern - =Pt Cpos - =Pt Cinstr(channel) - =Pt Cnote(channel) - Pt Sam Freq channel,freq - =Vclip(v,lower To upper) - =Vin(v,lower To upper) - =Vmod(v,upper) - =Vmod(v,lower To upper) - =Insstr$(a$,b$,pos) - =Cutstr$(a$,pos1 To pos2) - =Replacestr$(a$,search$ To replace$) - =Itemstr$(a$,item) - =Itemstr$(a$,item,sep$) - =Qarc(dx,dy) - =Even(val) - =Odd(val) - =Ham Point(x,y) - Set Object Date file$,date,time - =Aga Detect - Pal Spread c1,rgb1 To c2,rgb2 - =Ct String(time$) - =Cd String(date$) - C2p Convert st,wx,wy To screen,ox,oy - C2p Shift st,wx,wy To st2,shift - C2p Fire st,wx,wy To st2,sub - Pal Set Screen führt nun automatisch ein 'View' aus. - Weiteren Bug in Ptile Paste behoben. - Sinus-Tabelle verschoben und geviertelt, dadurch spare ich in etwa 1536 Bytes, Arctan-Tabelle hinzugefügt. V1.31 03-Oct-95 --------------- - Leider (?) lag der Fehler nicht in Change Bank Font, sondern in Make Bank Font. Zwar ist dieser Fehler nun behoben, jedoch müssen wahrscheinlich alle alten Fontbanks neu erstellt werden! - Rnc Unpack und =Rnp endgültig rausgeflogen. - Bug in Pt Stop behoben, der die Kanäle abschaltete, obwohl keine Musik spielte. - Neue Befehle: - Pt Continue - Bug in Change Bank Font behoben. V1.30 31-Aug-95 --------------- - NÄCHSTEST OFFIZIELLES UPDATE. - Diverse Kürzungen und Umstellungen, damit ich wieder unter die 32KB Grenze komme. - Best Pen unterstützt nun den EHB Modus. - Bug in der PlaySample-Routine gefunden und entfernt. - Bug in Pt Raw Play gefunden und entfernt. - Bug in Extpath$ behoben (Thx Ben!) - Neue Befehle: - =Best Pen($RGB[,c1 To c2]) - Bzoom s1,x1,y1,x2,y2 To s2,x3,y3,m - =X Smouse - =Y Smouse - Limit Smouse [x1,y1 To x2,y2] - Smouse X x - Smouse Y y - Smouse Speed speed - =Smouse Key - =Xfire(port,button) V1.19 30-Jun-95 --------------- - Neue Befehle: - Exchange Bob i1,i2 - Exchange Icon i1,i2 V1.18 21-Mar-95 --------------- - NÄCHSTES OFFIZIELLES UPDATE. - Selten auftretenden Bug in Turbo Plot behoben. V1.17 16-Feb-95 --------------- - Kleiner Fehler in der Protracker-Routine: Maske für FineSlideUp war $D anstatt $F, wodurch der $2-er Slide verschluckt wurde. (Thx Patrick) V1.16 29-Jan-95 --------------- - Kleiner Fehler beim Protracker-CIA Replay aufgetaucht: Pt Cia Speed ver- weigerte bei compilierten Programmen den Dienst (warum, weiß ich nicht!) - Aus Leichtsinn (?) einen Pt Sam Befehl vergessen: - Pt Sam Volume [voice,] volume - Code ein wenig umgeordnet, damit Demoversion funktioniert (32 KB Limit!) - Neue Palette-Handling Befehle: - Pal Get Screen palnr,screen - Pal Set Screen palnr,screen - =Pal Get(palnr,colindex) - Pal Set palnr,colindex,colour V1.1 28-Dec-94 -------------- - Protracker Replaycode umgeschrieben, damit die Samples richtig ge- handhabt werden. - Neue Befehle: - =Pt Data Base - =Pt Instr Address(samnr) - =Pt Instr Length(samnr) - Pt Bank bank - Pt Raw Play voice,address,length,freq - Pt Instr Play samnr - Pt Instr Play voice,samnr[,freq] - Pt Sam Bank bank - Pt Sam Play samnr - Pt Sam Play voice,samnr[,freq] - Pt Sam Stop voice - Kleinere Optimierungen an Ham Fade. - Weiterer Bug in Ptile Paste beseitigt. - Bug in Speek: Speek erlaubte nur gerade Adressen. - Blöder Fehler in Lsstr$ und Lzstr$. Erzeugten oft Müllstrings oder kehrten nicht zurück. V1.0 16-Oct-94 -------------- - ERSTE VERKAUFSFERTIGE VERSION! - Mehrere kleine Fehler bei der Registrationsabfrage entfernt. V1.0ß 06-Oct-94 --------------- - Imploder Load gab bei erfolgreichem Laden das Lock auf die Datei nicht mehr frei. Fehler behoben. V1.0ß 22-Sep-94 --------------- - Bei jeder Stringallokation zwei Bytes mehr verlangt. Jetzt scheint es keine Probleme mehr mit dem Stringpuffer zu geben. V1.0ß 28-Aug-94 --------------- - Ptile Paste hatte einen Bug. Fehler behoben. - =Extpath$ überschrieb bei leeren Strings 32KB Variablenpuffer!!! Argl... - =Ham Best komplett neu geschrieben. Funktioniert jetzt besser. - Coords Read und =Count Pixels haben einen Errorcheck bekommen. - Coords Bank erzeugte eine Coords Bank, die nicht voll ausgenutzt wurde und genau eine Koordinate zu wenig speichern ließ. - Coords Bank machte Speicher korrupt bzw. stürzte ab, wenn man eine 0 Koordinaten Bank erzeugen wollte. Das selbe galt für Splinters Bank. Fehler behoben. - =Ham Best umgeschrieben. Ist jetzt viel schneller als vorher! Tip kam von Dr. Peter Kittel! :) - Protracker: Vumeter unterstützte nicht das C-Kommando, daher gab =Pt Vu meist als Lautstärke 64 zurück. Fehler behoben. - Protracker: Wenn ein Channel abgeschalten wurde, konnten weder Signale von diesem empfangen werden, noch wurden Speed-Befehle und anderes beachtet. Unterroutine eingebaut, um das zu handlen. - Secexp in Binexp und Seclog in Binlog renamed. - Protracker: 99%igen Init-Code geschrieben. Jetzt sollten viele verschiedene Tunes hintereinander nicht mehr die Funks oder die Patternrepeats durcheinander bringen. - Database vom Chip ins Fastram gelegt (Hätte ich schon lang tun sollen!). - Durch die obengenannten Verbesserungen wurde der Code zu lang, um einen Branch Befehl auszuführen. Dadurch hängte AMOS sich auf. Fehler behoben. V0.992ß 27-Jul-94 ----------------- - Hab jetzt endlich Ferien, und kann mich voll auf die Anleitung konzentrieren. Releasedate für V1.0 wurde auf den 1.9.94 gesetzt. - Extension umstrukturiert, sodaß jetzt die Funktionen, die ein Token haben, in den oberen 32 KB sitzen. Jetzt sollte wieder alles funzen :)) - Jetzt kann man während des Spielens von Modulen zwischen CIA und VBL um- schalten. - Kleiner Bug in Bank Copy gefunden und eleminiert. - Befehle wieder reingehaun: Rnc Unpack und =Rnp - Neue Befehle: - =Qsqr(value) - Bcircle x,y,r,c - Turbo Plot, Shade Pix und Turbo Point haben jetzt endlich einen Randcheck, sind also genauso sicher wie die normalen Plot- und Point Befehle. - Ham Fade ist jetzt ein wenig schneller. - Pt Signal liefert jetzt $FF, wenn das Songende erreicht wurde. V0.991ß 18-Jul-94 ----------------- - Neue Befehle: - Set Rain Colour rainnr,colour - Rain Fade rainnr,colour - Rain Fade rainnr To rainnr V0.990ß 01-Jul-94 ----------------- - Befehle rausgeschmissen, um die Ext kleiner zu machen: - Rnc Unpack - =Rnp - Ein paar Fehlermeldungen von Io Error$ rausgenommen. V0.990ß 04-Jun-94 ----------------- - Durch die Umsortierung der Befehlsgruppen einen tödlichen Bug 'erzeugt'. Anscheinend ein AMOS interner Bug, allerdings solange ich die Befehle Audio Lock und Audio Free an die letzte Stelle schreibe, sollten alle anderen Befehle funktionieren. Ich konnte aber noch nicht alle Befehle auf Funktionalität prüfen, also Vorsicht! Auf jedenfall funktionieren alle Befehle compiliert, was die These eines AMOS Bugs verstärkt. DIE BEFEHLE AUDIO LOCK UND AUDIO UNLOCK NICHT IM INTERPRETER VERWENDEN!!! - Neue Befehle: Blitter Copy Limit screen Blitter Copy Limit x1,y1 To x2,y2 [Für Bernd: x2,y2 Koordinatenbasis 1] Blitter Copy sc1,pl1 [,sc2,pl2 [,sc3,pl3]] To sc4,pl4 [,minterm] V0.989ß 03-Jun-94 ----------------- - Bugs in Blitter Fill und Blitter Clear entdeckt, die seltsame Programmstrukturfehler erzeugten (z.B Ausstieg aus For-Next-Schleifen) V0.989ß 03-Jun-94 ----------------- - Blitter Fill ist jetzt sicherer als vorher. - Neue Befehle: - Blitter Clear screen,plane - Blitter Clear screen,plane,x1,y1 To x2,y2 - Blitter Wait - flag=Blitter Busy - Shade Pix x,y - Shade Pix x,y,planes V0.988ß 02-Jun-94 ----------------- - Turbo Draw unterstützt jetzt Clipping!!! Auch spezielle Checkroutinen für den Blitter Mode eingebaut. V0.988ß 31-May-94 ----------------- - Hurra!!! Endlich funktionieren die Splinters Befehle 100%!!! - Diverse Optimierungen an den Splinters und Td Stars Befehlen. - Speicherverbrauch pro Splinter von 32 auf 22 Bytes reduziert. - Speicherverbrauch pro Td Star von 16 auf 12 Bytes reduziert. V0.987ß 29-May-94 ----------------- - Neue Befehle, damit Markus endlich Ruhe gibt! - Make Bank Font bank - Change Bank Font bank - Neue Funktion: - =Cop Pos - Kleiner Fehler: Bei Pt Play wurde das Signal nicht auf 0 zurückgesetzt. - Neue Funktion: - =Vec Pos Z(x,y,z) - =Vec Pos Z - Private Befehle entfernt. V0.986ß 27-May-94 ----------------- - Drei ganz private temporäre Befehle eingebaut (für ne Postdisk). Werden bei Fertigstellung der Postdisk wieder gelöscht. - Private A bank1,bank2,bitplane,maxrand - =Private B(bank2) - =Private C(bank2) NICHT VERWENDEN!!! Falsche Anwendung führt zum Absturz!!! - Neue Funktion - =Qrnd(value) als Ersatz für Rnd... benötigt kein Randomize und ist schneller. - Fehler in der Tokenliste bewirkte bei falschem Syntax von Blitter Fill, daß es in Pt Play umgewandelt wurde. Lustig :) - Fehler in den Blitter Fill Befehlen gefunden und behoben. Blitter Fill füllte immer eine Zeile zu tief -> Speicherkorruption. - Bug in der Vektor Rotationsberechnung bei negativen Positionen behoben. V0.986ß 25-May-94 ----------------- - Neuer Befehl, damit Bernd endlich Ruhe gibt!!! - Change Print Font bank V0.986ß 24-May-94 ----------------- - Vec Rot Befehle fertiggestellt. =Vec Rot Adr wieder entfernt. - Vec Rot Befehle: - Vec Rot Pos posx,posy,posz - Vec Rot Angles angx,angy,angz - Vec Rot Precalc - =Vec Rot X(x,y,z) - =Vec Rot X - =Vec Rot Y(x,y,z) - =Vec Rot Y V0.985ß 24-May-94 ----------------- - Bug in Cd Date$ entfernt. (Thx Bernd) - Billiger Bug in Blitter Fill screen,plane entdeckt und korrigiert. - Turbo Draw Bug im Blitter Mode hoffentlich endgültig entfernt. - Neue Befehle: - =Qsin(angle,factor) angle ist ein Winkel von 0 bis 1023 - =Qcos(angle,factor) factor ein Wert, mit dem der Sinus multipiziert werden soll. - Vec Rot Pos midx,midy,midz Positionen für die Vektor-Rotation - Vec Rot Angles angx,angy,angz Rotationswinkel der Rotation - Noch fehlerhaft: - Vec Rot Precalc Erstellen der Matrize - =Vec Rot X(x,y,z) Ermitteln des neuen X-Wertes - =Vec Rot Y(x,y,z) Ermitteln des neuen Y-Wertes - Zu Testzwecken die Funktion =Vec Rot Adr eingebaut. V0.984ß 21-May-94 ----------------- - Neue Synti zu Blitter Fill: - Blitter Fill screen,plane - Blitter Fill screen,plane,x1,y1,x2,y2 - Blitter Fill s1,p1 To s2,p2 - Blitter Fill s1,p1,x1,y1,x2,y2 To s2,p2 - Turbo Draw zeichnet jetzt nicht mehr auf nicht existenten Bitplanes. (Thx Marc) - Change Font hängt selbständig ein '.font' an, wenn nötig. (Thx Markus) Leider existieren für das erste halbe Jahr keine History Einträge. @endnode @node mbankbef "Befehle zur leichten Bankverwaltung" Bankverwaltung und -manipulation. Die AMCAF-Extension beinhaltet eine Vielzahl von Befehlen, die sich den AMOS Memory Banks widmen. Bei allen Befehlen ist es wichtig, daß, falls Adressen vorkommen, diese GERADE sind, da es sonst bei einem MC68000 zum Absturz Ihres Amigas kommt. Außerdem muß die Länge jeder Bank gerade sein, da sonst der Compiler die Fehlermeldung 'Kein AMOS Programm ausgibt', aber das ist ein AMOS Problem nicht eines von AMCAF. @{" Allgemeines " link dbanks} - Ein paar Informationen zu AMOS Banks Befehle: @{" Bank Permanent " link cbnkperm} - Macht eine Bank @{" permanent " link dpermanent} @{" Bank Temporary " link cbnktemp} - Macht eine Bank @{" temporär " link dtemporaer} @{" Bank To Fast " link cbnkfast} - Verschiebt eine Bank ins @{" Fast-Ram " link dfastram} @{" Bank To Chip " link cbnkchip} - Verschiebt eine Bank ins @{" Chip-Ram " link dchipram} @{" Bank Stretch " link cbnkstre} - Vergrößert eine Bank nachträglich @{" Bank Copy " link cbnkcopy} - Kopiert eine Bank @{" Bank Name " link cbnkname} - Nennt eine Bank um @{" Bank Code xxx.y " link mbnkcode} > Befehle zum Kodieren einer Bank @{" Bank Delta Encode " link cbnkdlte} - Kodiert eine Bank mit dem Delta-Verfahren @{" Bank Delta Decode " link cbnkdltd} - Entfernt die Delta-Codierung wieder. Funktionen: @{" =Bank Checksum " link fbnkchec} - Berechnet die Checksumme einer Bank @{" =Bank Name$ " link fbnkname} - Gibt den Namen einer Bank zurück @endnode @node mbnkcode "Bank Code Befehle" Bank Code Befehle Mit diesen Befehlen lassen sich Banks in verschiedener Weise kodieren, um sie vor Einsicht und Zugriff von Unbefugten zu schützen. Besonders für Kopierschütze, die nach einem Wort aus einem Handbuch fragen, lassen sich so besser schützen. Alle Befehle gibt es in zwei Ausführungen, eine mit der Endung @{" .b " link dbyte} und eine mit @{" .w " link dword}. Bei .b kann der Code einen Wert von 1 bis 255 annehmen, bei .w von 1 bis 65535. Ausnahmen bilden die Rotationsbefehle, dort sollte der Code immer nur von 1 bis 7 bzw. von 1 bis 15 reichen. Und alle Befehle haben den Syntax Bank Code xxx.y code,bank Bank Code xxx.y code,startaddress To endaddress Befehlsversionen: @{" Bank Code Add.y " link cbcodadd} - Additionsverfahren @{" Bank Code Xor.y " link cbcodxor} - Exklusiv-oder-Verknüpfung @{" Bank Code Mix.y " link cbcodmix} - Mischung aus Add und Xor @{" Bank Code Rol.y " link cbcodrol} - Rotation der Bits nach links @{" Bank Code Ror.y " link cbcodror} - Rotation der Bits nach rechts @endnode @node mdiskbef "Diskettenbefehle" Diskettenbefehle AMCAF will auch diesen Bereich abdecken und in AMOS vermißte Befehle liefern. @{" Primäre Befehle " link mdskprim} > Befehle zum Laden, Sichern, Kopieren, etc. @{" Dateizugriff " link mdskobje} > Befehle zur Dateiverwaltung @{" Hilfsfunktionen " link mdskhelp} > Hilfsfunktionen für Filehandling, etc. @{" Packersupport " link mdskpack} > Powerpacker und Imploderbefehle @endnode @node mdskhelp "Disk Hilfsfunktionen" Disk Hilfsfunktionen Diverse Hilfsfunktionen, damit Sie auch morgens noch kraftvoll zubeissen können. @{" =Io Error " link fioerror} - Gibt die Nummer des letzten DOS-Fehlers aus @{" =Io Error$ " link fioerstr} - Gibt einen DOS-Fehlerstring zurück @{" =Filename$ " link ffilname} - Gibt den Dateinamen zurück @{" =Path$ " link fpathstr} - Gibt den Pfad zurück @{" =Extpath$ " link fextpath} - Fügt dem Pfad ein "/" hinzu, wenn nötig @{" =Object Protection$" link fobjprst} - Gibt einen @{" Schutzbits-String " link dprotflags} zurück @{" =Pattern Match " link fpatmatc} - Vergleicht einen String mit einem Muster @{" =Disk State " link fdskstat} - Gibt den Status der Diskette zurück @{" =Disk Type " link fdsktype} - Gibt den Typ der Diskette zurück @{" =Dos Hash " link fdoshash} - Berechnet den Hashwert einer Datei @endnode @node mdskobje "Befehle zum Objekthandling" Befehle zum Objekthandling AMOS bietet mit Dir First$ und Dir Next$ weder zuverlässige, noch leicht zu verarbeitende Funktionen. Auch war über ein Objekt nur der Name und die Länge bekannt, was war aber wenn man mehr wissen wollte? Nun gibt es ja AMCAF, die Lösung dieser Probleme. Befehle: @{" Examine Object " link cexamobj} - Holt Informationen zu einem @{" Objekt " link dobject} @{" Examine Dir " link cexamdir} - Initialisiert das Lesen eines Verzeichnisses @{" Examine Stop " link cexastop} - Stoppt das Lesen des Verzeichnisses Funktionen: @{" =Examine Next$ " link fexanext} - Liest den nächsten Eintrag eines Verzeichnisses @{" =Object Name$ " link fobjname} - Gibt den Namen eines @{" Objekts " link dobject} aus @{" =Object Type " link fobjtype} - Gibt den Typ eines @{" Objekts " link dobject} zurück @{" =Object Size " link fobjsize} - Gibt die Länge einer Datei zurück @{" =Object Blocks " link fobjblks} - Gibt die Länge einer Datei in Blocks aus @{" =Object Protection " link fobjprot} - Gibt die @{" Schutzbits " link dprotflags} eines @{" Objekts " link dobject} zurück @{" =Object Time " link fobjtime} - Gibt die Erstellungszeit eines @{" Objekts " link dobject} an @{" =Object Date " link fobjdate} - Gibt das Erstellungsdatum eines @{" Objekts " link dobject} zurück @{" =Object Comment$ " link fobjcomm} - Gibt den Kommentar eines @{" Objekts " link dobject} aus @endnode @node mdskpack "Packer Support" Packer Support Packer sind ein wichtiges Hilfsmittel, wenn man viele Daten auf einer Diskette unterbringen will. Powerpacker und File-Imploder sind zwei von den besten und natürlich werden sie von AMCAF unterstützt. @{" Ppfromdisk " link cppfrdsk} - Lädt und entpackt eine powergepackte Datei @{" Ppunpack " link cppunpak} - Entpackt eine powergepackte Bank @{" Pptodisk " link cpptodsk} - Packt und speichert eine Bank im PP20-Format @{" Imploder Load " link cimpload} - Lädt und entpackt eine FileImploder-Datei @{" Imploder Unpack " link cimpunpk} - Entpackt eine FileImploder-Datei @endnode @node mdskprim "Primäre Befehle" Primäre Befehle Simple Befehle für das Lesen, Schreiben und Ändern von Dateien. @{" File Copy " link cfilcopy} - Kopiert eine Datei @{" Wload " link cfiwload} - Lädt eine Datei @{" temporär " link dtemporaer} ein @{" Dload " link cfidload} - Lädt eine Datei @{" permanent " link dpermanent} ein @{" Wsave " link cfiwsave} - Speichert eine Datei @{" Dsave " link cfidsave} - Speichert eine Datei @{" Protect Object " link cprotobj} - Ändert die @{" Schutz-Bits " link dprotflags} eines @{" Objekts " link dobject} @{" Set Object Comment " link cobjcomm} - Ändert den Kommentar eines @{" Objekts " link dobject} @{" Set Object Date " link cobjdate} - Ändert das Datum eines @{" Objekts " link dobject} @{" Launch " link claunchp} - Startet einen neuen Prozeß @endnode @node mextebef "Interne Extension-Befehle" Interne Extension-Befehle/Befehle für Profis Wieder Befehle und Funktionen für Profis. Bevor Sie diese verwenden, denken Sie drüber nach was Sie tun, dann nochmal und ein drittes Mal, und dann speichern Sie Ihr Programm ab, bevor Sie es starten. Befehle: @{" Extdefault " link cextdefa} - Ruft die Default-Routine einer Extension auf @{" Extremove " link cextremo} - Entfernt eine Extension aus dem Speicher @{" Extreinit " link cextrein} - Versucht, eine Extension wieder einzubinden Funktionen: @{" =Amos Task " link famostsk} - Gibt die Adresse der AMOS Task-Struktur aus @{" =Amcaf Version$ " link famcafvs} - Gibt einen Versionsstring zurück @{" =Amcaf Base " link famcafba} - Ermittelt den internen Amcaf-Datenbereich @{" =Amcaf Length " link famcafle} - Gibt die Länge des Datenbereichs aus @endnode @node mfourbef "Vier-Spieler Adapter Support" Vier-Spieler Adapter Wenn Sie Spiele schreiben, so macht sich das immer gut, wenn mehrere Spieler gleichzeitig spielen können. Sind es vier oder mehr, dann sollten Sie über eine Implementation des 4-Player-Adapters nachdenken, denn meistens spielt es sich angenehmer und besser über Joystick als mit Tastatur. @{" Wie baue ich einen 4-Player-Adapter? " link dfourplayer} Funktionen: @{" =Pjoy " link ffourjoy} - Richtungen eines Joysticks ermitteln @{" =Pjup " link ffourjup} - Joystick nach oben abfragen @{" =Pjdown " link ffourjdo} - Joystick nach unten abfragen @{" =Pjleft " link ffourjle} - Joystick nach links abfragen @{" =Pjright " link ffourjri} - Joystick nach rechts abfragen @{" =Pfire " link ffourfir} - Überprüft den Feuerknopf @endnode @node mgfx_bef "Grafik- und Effektbefehle" Grafik- und Effektbefehle Die AMCAF-Extension beinhaltet viele Grafikbefehle, die sicher gut in Spielen oder Demos verwendet werden können. Jedoch müssen Sie bitte be- achten, daß die meisten Befehle die Parameter NICHT überprüfen! Dadurch ergibt sich ein Geschwindigkeitsvorteil, den man nicht unbeachtet lassen sollte. Speichern Sie Ihre Programme regelmäßig ab, denn ein kleiner Tippfehler kann schon den Absturz bedeuten. @{" Graphische Grundbefehle " link mgfxgrun} > Neue Grafikbefehle @{" Graphische Effektbefehle " link mgfxeffe} > Effekte @{" Zeichensatz-Befehle " link mgfxfont} > Anweisungen für Zeichensätze @{" Farbanweisungen " link mgfxcolo} > Befehle und Funktionen mit Farbwerten @{" Blitter-Befehle " link mgfxblit} > Direkte Ansteuerung des Blitters @{" Andere Befehle " link mgfxmisc} > Diverse Funktionen und Befehle @{" Befehle für System-Hacker " link mgfxprof} > Für Profis. @endnode @node mgfxblit "Befehle für die direkte Ansteuerung des Blitters" Blitter Befehle AMCAF ermöglicht es, den @{" Blitter " link dblitter} ganz gezielt anzusteuern und einzelne @{" Bitplanes " link dbitplane} zu löschen, zu füllen, zu kopieren und modifizieren. Befehle: @{" Blitter Copy " link cbltcopy} - Kopieren und Verknüpfen einer Bitplane @{" Blitter Copy Limit " link cbltcplm} - Einstellen des Bereichs für Blitter Copy @{" Blitter Fill " link cbltfill} - Füllen von Flächen mit dem Blitter @{" Blitter Clear " link cbltcler} - Löschen einer Bitplane mit dem Blitter @{" Blitter Wait " link cbltwait} - Warten auf das Ende der Blittertätigkeit @{" Turbo Draw " link cturdraw} - Schneller Draw-Ersatz @{" Bcircle " link cbcircle} - Zeichnen eines Kreises zum Füllen mit dem Blitter Funktionen: @{" =Blitter Busy " link fbltbusy} - Ermittelt, ob der Blitter gerade arbeitet @endnode @node mgfxcolo "Hilfsfunktionen für die Farbverwaltung" Hilfsfunktionen für die Farbverwaltung Farbspielereien waren oft mit komplizierten Formeln verbunden. Doch jetzt gibt es eine Reihe hilfreicher Befehle - natürlich nur in AMCAF. Befehle: @{" Rain Fade " link crainfad} - Blendet einen Regenbogen aus oder um @{" Set Rain Colour " link csetrain} - Ändert die eingestellte Farbe eines Regenbogens @{" Pal Spread " link cpspread} - Erzeugt einen Farbverlauf zwischen zwei Farben @{" Pal Get Screen " link cpgetscr} - Speichert die Palette eines Schirms ab @{" Pal Set Screen " link cpsetscr} - Setzt die Palette eines Bildschirms @{" Pal Set " link cpsetcol} - Setzt einen Eintrag der gespeicherten Palette @{" Amcaf Aga Notation " link camcafaa} - Ein- und Abschaltung des @{" AGA-Amiga " link dagaamiga} Farbformats Funktionen: @{" =Pal Get " link fpgetcol} - Liest einen gespeicherten Paletteneintrag aus @{" =Red Val " link fcredval} - Ermittelt den Rotanteil einer Farbe @{" =Green Val " link fcgreval} - Ermittelt den Grünanteil einer Farbe @{" =Blue Val " link fcbluval} - Ermittelt den Blauanteil einer Farbe @{" =Glue Colour " link fgluecol} - Berechnet die Farbe unter Angabe der Farbanteile @{" =Mix Colour " link fmixcolo} - Mischt zwei Farben @{" =Best Pen " link fbestpen} - Berechnet die am nähesten liegende Farbe @{" =Ham Point " link fhampoin} - Beschafft sich den Farbwert eines HAM-Pixels @{" =Ham Colour " link fhamcolo} - Berechnet die Farbe im @{" HAM-Modus " link dham} @{" =Ham Best " link fhambest} - Berechnet die beste Farbe im @{" HAM-Modus " link dham} @{" =Rgb To Rrggbb " link frgbtaga} - Rechnet eine Farbe ins neue @{" AGA-Farbformat " link dagaamiga} um @{" =Rrggbb To Rgb " link fagatrgb} - Rechnet eine @{" AGA-Farbe " link dagaamiga} ins alte Format zurück @endnode @node mgfxeffe "Graphische Effektbefehle" Graphische Effektbefehle Ein großer Teil der AMCAF-Extension beschäftigt sich mit graphischen Effekten. Ob Sie nur mal ein paar Sterne haben oder einfach Schriftsätze sprengen wollen oder nur Colorcyclen, mit AMCAF wird (fast) alles möglich. @{" Mask Copy " link cmskcopy} - Screen Copy mit Schablone @remark {" Ptile " link mprotile} > Ptile Befehlsgruppe @{" Pix Shift " link mpixshif} > Pix Shift Befehlsgruppe @{" Shade Bobs " link mshadbob} > Shade Bobs Befehlsgruppe @{" Td Stars " link mtdstars} > Td Stars Befehlsgruppe @{" Splinters " link msplinte} > Splinters Befehlsgruppe @endnode @node mgfxfont "Font-Befehle" Zeichensatz-Befehle AMCAF bietet Ihnen machtvolle Anweisung zur Verwaltung von Zeichensätzen. Der Change Font-Befehl z.B erlaubt es, einen Font ohne den Umweg über Get Disk Fonts etc. einzustellen und reduziert damit die Diskettenzu- griffszeit erheblich. Festplattenbesitzer werden besonders gefallen an diesen Befehlen finden. Mit dieser Extension erhalten Sie die noch nie dagewesene Möglichkeit, einen beliebigen Zeichensatz in einer Speicherbank zu konservieren und werden dadurch total unabhängig von dem Fonts-Ver- zeichnis und der diskfont.library. Befehle: @{" Change Font " link cchafont} - Laden eines Zeichensatzes direkt von der Diskette @{" Make Bank Font " link cmkbkfnt} - Erstellen einer Font-Bank @{" Change Bank Font " link cchbkfnt} - Laden eines Zeichensatzes aus einer Bank @{" Change Print Font " link cchprfnt} - Ändern des Fonts, mit dem Print arbeitet Funktionen: @{" =Font Style " link ffontsty} - Attribute eines Fonts ermitteln @endnode @node mgfxgrun "Graphische Grundbefehle" Graphische Grundbefehle AMCAF erweitert den Grundbefehlssatz von AMOS um einige wichtige Befehle. Befehle: @{" Bzoom " link cblkzoom} - Vergrößert einen Bereich @{" Ham Fade Out " link chamfade} - Blendet ein HAM-Bild aus @{" Convert Grey " link ccongrey} - Graustufenbild erzeugen @{" Turbo Plot " link cturplot} - Schneller Plot-Ersatz @{" Turbo Draw " link cturdraw} - Schneller Draw-Ersatz @{" Fcircle " link cfcircle} - Ausgefüllter Kreis @{" Fellipse " link cfellips} - Ausgefüllte Ellipse @{" Raster Wait " link craswait} - Wartet auf den Rasterstrahl Funktionen: @{" =Turbo Point " link fturpoin} - Schneller Point-Ersatz @{" =X Raster " link fxraster} - X-Position des Rasterstrahls @{" =Y Raster " link fyraster} - Y-Position des Rasterstrahls @endnode @node mgfxmisc "Diverse weitere Grafikbefehle" Weitere Befehle @{" Set Ntsc " link csetntsc} - Wechselt in den 60Hz-Modus @{" Set Pal " link cset_pal} - Wechselt zurück in den 50Hz-Modus @{" Set Sprite Priority" link csetspri} - Ändert die Sprite Priorität im Dual Playfield @endnode @node mgfxprof "Funktionen für Profis" Funktionen für Profis Hier noch ein paar Funktionen für Assembler/C Freaks. @{" =Scrn Rastport " link fscrrast} - Gibt den Rastport eines Screens zurück @{" =Scrn Bitmap " link fscrbitm} - Gibt die Bitmap eines Screens zurück @{" =Scrn Layer " link fscrlaye} - Gibt den Layer zurück @{" =Scrn Layerinfo " link fscrlayi} - Gibt das Layerinfo zurück @{" =Scrn Region " link fscrregi} - Gibt die Region eines Screens zurück @endnode @node mjoymbef "4-Spieler Adapter, zweite Maus, Joypad" Gameportperipherie-Unterstützung AMCAF macht es möglich einen zusätzlich angeschlossenen 4-Player Adapter sowie eine zweite Maus im Joystick Port 1 abzufragen. Weiterhin kann der zweite Feuerknopf eines Joysticks oder, falls die Lowlevel.library vorhanden ist, sogar die anderen 5 Knöpfe eines Gamepads überprüft werden. @{" 4-Player Adapter " link mfourbef} > Unterstützung des Vier-Spieler Adapters @{" Zweite Maus " link msmoubef} > Macht es möglich, eine zweite Maus zu benutzen @{" =Xfire " link fextfire} - Feuerknöpfe eines Joypads auslesen @endnode @node mmiscbef "Sonstige andere Befehle und Funktionen" Sonstige andere Befehle und Funktionen Tja, bleiben noch die Befehle und Funktionen, die sich nicht so ganz in eine Gruppe einteilen lassen. Befehle: @{" Exchange Bob " link cexchbob} - Tauscht zwei Bilder der Spritebank aus @{" Exchange Icon " link cexchico} - Tauscht zwei Bilder der Iconbank aus @{" Audio Lock " link caudlock} - Reserviert das Audio Device @{" Audio Free " link caudfree} - Gibt das Audio Device wieder frei @{" Open Workbench " link copenwor} - Öffnet die Workbench wieder @{" Flush Libs " link cflushli} - Gibt den so viel wie möglich Speicher frei @{" Write Cli " link cwritcli} - Schreibt ins aktuelle CLI-Fenster @{" Reset Computer " link crescomp} - Macht einen Reset @{" Nop " link cnoopera} - Keine Wirkung Funktionen: @{" =Aga Detect " link fagadtct} - Überprüft, ob der Computer das AGA Chipset hat @{" =Scanstr$ " link fscanstr} - Gibt den Namen einer Taste aus @{" =Command Name$ " link fcomname} - Ermittelt den Programmnamen @{" =Tool Types$ " link ftooltyp} - Liest die Tool-Types eines Piktogramms @{" =Amos Cli " link famoscli} - Gibt die Nummer des CLI-Prozesses zurück @{" =Speek " link fsgnpeek} - Lesen eines @{" Bytes " link dbyte} mit Vorzeichen @{" =Sdeek " link fsgndeek} - Lesen eines @{" Worts " link dword} mit Vorzeichen @{" =Cpu " link fcpu } - Gibt die Nummer des Prozessors zurück @{" =Fpu " link ffpu } - Ermittelt die Nummer eines Coprozessors @{" =Nfn " link fnofunct} - Keine Wirkung @{" =Cop Pos " link fcop_pos} - Gibt die aktuelle Adresse der Copperliste zurück @endnode @node mpixshif "Pix Shift Befehlsgruppe" Pix Shift Befehlsgruppe Mit diesen Befehlen lassen sich die Farbwerte der Pixel rechteckiger Bereiche um eins erhöhen oder erniedrigen. Diese Befehle wirken pixelweise und lassen daher eine Farbbegrenzung zu, sind aber dafür langsamer als @{" Shade Bobs " link mshadbob}. @{" Pix Shift Up " link cpixshup} - Farbwerte erhöhen (@{" cyclic " link dcyclic}) @{" Pix Shift Down " link cpixshdo} - Farbwerte erniedrigen (@{" cyclic " link dcyclic}) @{" Pix Brighten " link cpixbrig} - Farbwerte erhöhen (nicht @{" cyclic " link dcyclic}) @{" Pix Darken " link cpixdark} - Farbwerte erniedrigen (nicht @{" cyclic " link dcyclic}) @{" Make Pix Mask " link cpixmask} - Berechnet eine Schablone für das Shiften @{" Shade Pix " link cshadpix} - Zeichnen eines Shade-Pixels @endnode @node mprotbef "Befehle zum Abspielen von Protracker Musikstücken" Befehle für Protracker Musiken Da die AMOS Tracker Befehle wirklich nicht gut sind, und jede Menge Bugs enthalten, gibt es auch in der AMCAF-Extension einen Ersatz. In der neuen Version 1.1 kamen neue Befehle zur Wiedergabe von Sound- effekten während des Abspielens von Protracker Musik hinzu. Die AMOS Music-Extension wird damit fast vollständig ersetzt. Hier nochmal schnell alle Vorteile aufgezählt: - CIA Timing oder VBL Timing. - Lautstärkeregelung. - Kanal-Auswahl. - Vu Meter. - Signalübermittlung vom Musikstück. - Support aller Protracker-Effekt-Befehle. - Wiedergabe von Soundeffekten beim gleichzeitigen Abspielen der Musik. Befehle: @{" Pt Play " link cpt_play} - Spielt ein Module ab @{" Pt Stop " link cpt_stop} - Stoppt das aktuelle Musikstück @{" Pt Continue " link cpt_cont} - Startet eine zuvor gestoppte Musik wieder @{" Pt Volume " link cptvolum} - Einstellen der Lautstärke @{" Pt Voice " link cptvoice} - Auswahl der abzuspielenden Kanäle @{" Pt Cia Speed " link cptspeed} - Einstellen der Wiedergabegeschwindigkeit @{" Pt Raw Play " link cptrawpl} - Spielt einen Speicherbereich ab @{" Pt Bank " link cpt_bank} - Setzt die Protrackerbank für Pt Instr Play @{" Pt Instr Play " link cptinspl} - Spielt ein Instrument eines Musikstücks @{" Pt Sam Bank " link cptsambk} - Stellt die Bank für AMOS-Samples ein @{" Pt Sam Play " link cptsampl} - Spielt ein Sample aus einer AMOS-Bank @{" Pt Sam Stop " link cptsamst} - Stoppt die Soundausgabe bestimmter Kanäle @{" Pt Sam Volume " link cptsamvo} - Setzt die Lautstärke eines Soundeffekts @{" Pt Sam Freq " link cptsamfr} - Ändert die Wiedergabefrequenz eines Sounds Funktionen: @{" =Pt Vu " link fptvumet} - Abfragen des Vumeters @{" =Pt Signal " link fptsigna} - Abfragen nach Signalen vom Musikstück @{" =Pt Cpattern " link fptcpatt} - Holt die aktuelle Songposition @{" =Pt Cpos " link fptcposi} - Gibt die aktuelle Patternzeile zurück @{" =Pt Cinstr " link fptcinst} - Gibt zurück, welches Instrument gerade spielt @{" =Pt Cnote " link fptcnote} - Holt die Frequenz des aktuellen Instruments @{" =Pt Instr Address " link fptinadr} - Gibt die Adresse eines Instruments zurück @{" =Pt Instr Length " link fptinlen} - Gibt die Länge eines Instruments zurück @{" =Pt Data Base " link fptdatab} - Gibt die Adresse der PT-Variablen zurück @endnode @node mprotile "Processor Tile Befehlsgruppe" Processor Tile (Ptile) Befehlsgruppe PTiles sind ein kleiner Ersatz für @{" TOME " link dtome} 16x16 Kacheln. Anstatt den @{" Blitter " link dblitter} zu benutzen, wird der Prozessor verwendet, der bei solch kleinen Objekten auch schon bei MC68000 deutlich schneller ist. Noch deutlicher sieht man es mit einer Turbokarte und @{" Fast-Ram " link dfastram}. Bis jetzt sind es nur 2 Befehle, das wird sich sicher mit neuen Versionen ändern. Vorteile: - Schneller Aufbau. - Kein @{" Chip-Ram " link dchipram} benötigt. Nachteile: - Nur 16x16 große Kacheln. - Nur in Abständen von 16x16 Pixeln setzbar. - Anderes Bankformat (keine @{" Iconbanks " link diconbanks}) Befehle: @{" Ptile Bank " link cptilbnk} - Setzen einer Ptile Bank @{" Paste Ptile " link cpasptil} - Plotten eines Ptiles @endnode @node mshadbob "Shade Bobs Befehlsgruppe" Shade Bobs Befehlsgruppe Shade Bobs sind eigentlich keine "richtigen" Bobs, die Bezeichnung ist aber "in der Szene" für diese Effekte üblich. Shade Bobs erhöhen oder erniedrigen die Farbwerte, über denen sie stehen. Das ähnelt dem Color- cycling, jedoch werden hier wirklich nur die Pixel in einem Bereich erhöht und nicht die Palettenwerte! Bei Shade Bobs kann man als Farbbegrenzung nur angeben, wieviele Bitplanes modifiziert werden sollen, die dann immer @{" gecycelt " link dcyclic} werden. Shade Bobs dürfen außerdem den Bildschirm- rand verlassen. @{" Shade Bob Mask " link cshbmask} - Festlegen der zu benutzenden Grafik @{" Shade Bob Planes " link cshbplan} - Einstellen der zu benutzenden Bitplanes @{" Shade Bob Up " link cshbshup} - Ein Shade Bob setzen, welches die Farben erhöht @{" Shade Bob Down " link cshbshdo} - Ein Shade Bob setzen, welches die Farben erniedrigt @endnode @node msmoubef "Befehle für die Verwendung einer zweiten Maus" Befehle für eine Maus in Port 1 AMCAF unterstützt auf Anfrage diverser User nun auch das Abfragen einer in Joystick Port 1 eingesteckten Maus. Dadurch kann man endlich Spiele realisieren, die zwei Mäuse im Zweispieler-Modus benötigen. Befehle: @{" Limit Smouse " link climsmou} - Legt den Mausbereich fest @{" Smouse Speed " link csmouspd} - Setzt die Geschwindigkeit für die Maus @{" Smouse X " link csmousex} - Setzt die X-Koordinate der Maus @{" Smouse Y " link csmousey} - Setzt die Y-Koordinate Funktionen: @{" =X Smouse " link fxsmouse} - Liest die X-Koordinate der Maus @{" =Y Smouse " link fysmouse} - Liest die Y-Koordinate @{" =Smouse Key " link fsmousek} - Testet die Mausknöpfe @endnode @node msplinte "Splinters Befehlsgruppe" Splinters Befehlsgruppe Splinters sind ähnlich wie Td Stars, nur das Splinters den Hintergrund nicht zerstören, die Farbe des Pixels annehmen, den sie weggesprengt haben und eine Koordinatenliste benötigen. Leider benötigt eine Koordinate vier Bytes, d.h. ein 64x64 großes Koordinatenfeld frißt schon 16KB. Befehle: @{" Coords Bank " link ccrdbank} - Bank für Koordinatenspeicherung setzen @{" Coords Read " link ccrdread} - Einlesen der Koordinaten in die Bank @{" Splinters Bank " link csplbank} - Speicher für die Splitter reservieren @{" Splinters Colour " link csplcolo} - Einstellen der zu benutzenden Bitplanes @{" Splinters Limit " link cspllimi} - Setzen der Splittergrenzen @{" Splinters Max " link csplimax} - Festlegen der maximal neu auftretenden Splitter @{" Splinters Fuel " link csplfuel} - Setzen der Reichweite eines Splitters @{" Splinters Gravity " link csplgrav} - Einstellen der Gravitation @{" Splinters Init " link csplinit} - Initialisieren der Splitter @{" Splinters Do " link csplindo} - Komplettes Bewegen und Zeichnen @{" Splinters Del " link csplidel} - Löschen der Splitter @{" Splinters Move " link csplmove} - Bewegen der Splitter @{" Splinters Draw " link cspldraw} - Zeichnen der Splitter @{" Splinters Back " link csplback} - Holen des Hintergrunds Funktionen: @{" =Count Pixels " link fcounpix} - Abzählen der Pixel in einem Bereich @{" =Splinters Active " link fspliact} - Gibt zurück, wieviele Splitter sich noch bewegen @endnode @node mstribef "Sonstige String und Integer unterstützende Befehle" Sonstige String und Integer unterstützende Befehle Funktionen: @{" =Binexp " link fbinexpo} - Exponentialfunktion von 2 @{" =Binlog " link fbinloga} - Logarithmusfunktion der Basis 2 @{" =Lsl " link flogleft} - Schnelle Multiplikation mit einer Potenz von 2 @{" =Lsr " link flogrigh} - Schnelle Division mit einer Potenz von 2 @{" =Wordswap " link fwrdswap} - Tausch der oberen und unteren 16-Bits @{" =Qarc " link fqarc } - Schnelle Winkel-Funktion @{" =Qsin " link fqsine } - Schnelle Sinus-Funktion @{" =Qcos " link fqcosine} - Schnelle Cosinus-Funktion @{" =Qrnd " link fqrandom} - Schneller Ersatz für Rnd @{" =Qsqr " link fqsquare} - Schnelle Wurzelfunktion @{" =Asc.w " link fascword} - Konvertieren eines @{" Wort-Strings " link dword} in eine Zahl @{" =Asc.l " link fasclong} - Konvertieren eines @{" Long-Strings " link dlong} in eine Zahl @{" =Vclip " link fvalclip} - Grenzt einen Wert in einen gegebenen Bereich ein @{" =Vin " link fvaluein} - Testet, ob ein Wert innerhalb eines Bereichs ist @{" =Vmod " link fvalmodu} - Führt eine Modulo-Operation auf einen Wert aus @{" =Even " link feven } - Gibt zurück, ob ein Wert gerade ist @{" =Odd " link fodd } - Gibt zurück, ob ein Wert ungerade ist @{" =Pattern Match " link fpatmatc} - Vergleicht einen String mit einem Muster @{" =Chr.w$ " link fchrword} - Erzeugen eines @{" Wort-Strings " link dword} @{" =Chr.l$ " link fchrlong} - Erzeugen eines @{" Long-Strings " link dlong} @{" =Lzstr$ " link flzstrin} - Gibt eine Zahl rechtsbündig mit führenden 0-en aus @{" =Lsstr$ " link flsstrin} - Gibt eine Zahl rechtsbündig aus @{" =Insstr$ " link finsstrg} - Fügt einen String in einen anderen ein @{" =Cutstr$ " link fcutstrg} - Schneidet einen Teil eines Strings ab @{" =Replacestr$ " link frplcstr} - Ersetzt einen String durch einen anderen @{" =Itemstr$ " link fitemstr} - Gibt ein 'Item' aus einem String zurück @endnode @node mtdstars "Td Stars Befehlsgruppe" Td Stars Befehlsgruppe Mit diesen Befehlen lassen sich nicht nur 3D-Sterneffekte realisieren, die Befehle sind relativ vielseitig. @{" Td Stars Bank " link ctdstbnk} - Reservieren von Speicher für Sterne @{" Td Stars Planes " link ctdstpla} - Auswahl der von den Sternen benutzen Bitplanes @{" Td Stars Limit " link ctdstlim} - Setzen der Sterngrenzen @{" Td Stars Origin " link ctdstorg} - Setzen des Feldmittelpunkts @{" Td Stars Gravity " link ctdstgra} - Einstellen der Gravitation @{" Td Stars Accelerate" link ctdstacc} - An- und Abstellen der Beschleunigung @{" Td Stars Init " link ctdstini} - Initialisieren der Sterne @{" Td Stars Do " link ctdstado} - Komplettes Bewegen und Zeichen @{" Td Stars Del " link ctdstdel} - Löschen der Sterne vom Bildschirm @{" Td Stars Move " link ctdstmov} - Bewegen der Sterne @{" Td Stars Draw " link ctdstdra} - Zeichnen der Sterne @endnode @node mvecrbef "Vektorrotations-Befehle" Befehle zur Rotation von Punkten im dreidimensionalen Raum. Zu allererst: DAS SOLL KEIN ERSATZ FÜR DIE 3D-EXTENSION SEIN... jedenfalls noch nicht. Man kann damit aber trotzdem ohne weiteres Vektorgrafik machen, wie die Beispielprogramme demonstrieren. Befehle: @{" Vec Rot Pos " link cvecrpos} - Einstellen der Kameraposition @{" Vec Rot Angles " link cvecrang} - Einstellen der Blickwinkel @{" Vec Rot Precalc " link cvecrpre} - Errechnen der Matrix Funktionen: @{" =Vec Rot X " link fvecrotx} - Rechnet den 2D X-Wert aus @{" =Vec Rot Y " link fvecroty} - Berechnet den 2D Y-Wert @{" =Vec Rot Z " link fvecrotz} - Gibt die Z-Koordinate aus @endnode @node mzedabef "Zeit- und Datumsfunktionen" Zeit und Datumsfunktionen Diese Funktionen dienen zum Konvertieren der Disk-Objekt- und der System- zeit. Funktionen: @{" =Current Time " link fcurtime} - Ermittelt die aktuelle Uhrzeit @{" =Ct Time$ " link fcttimes} - Gibt einen vollständigen Zeitstring zurück @{" =Ct Hour " link fct_hour} - Extrahiert die Stunde aus einer Uhrzeit @{" =Ct Minute " link fctminut} - Ermittelt die Minute einer Uhrzeit @{" =Ct Second " link fctsecon} - Gibt die Sekunde einer Uhrzeit zurück @{" =Ct Tick " link fct_tick} - Extrahiert die Fünfzigstel aus einer Uhrzeit @{" =Ct String " link fct_strg} - Rechnet einen Zeit-String in einen Zeit-Wert um @{" =Current Date " link fcurdate} - Ermittelt das aktuelle Datum @{" =Cd Date$ " link fcddates} - Gibt einen vollständigen Datumsstring zurück @{" =Cd Year " link fcd_year} - Gibt das Jahr eines Datums aus @{" =Cd Month " link fcdmonth} - Extrahiert den Monat eines Datums @{" =Cd Day " link fcd__day} - Gibt den Monatstag eines Datums zurück @{" =Cd Weekday " link fcdweekd} - Ermittelt den Wochentag eines Datums @{" =Cd String " link fcd_strg} - Rechnet einen Datums-String in ein Datum um @endnode @node szusindex "Übersicht über alle zusätzlichen Informationen" @{" Allgemeines zu Banks " link dbanks} @{" Icon und Sprite-Banks " link diconbanks} @{" Permanente Banks " link dpermanent} @{" Temporäre Banks " link dtemporaer} @{" Chip-Ram " link dchipram} @{" Fast-Ram " link dfastram} @{" Ranger-Ram " link drangram} @{" Byte " link dbyte} @{" Wort " link dword} @{" Langwort " link dlong} @{" Cyclic " link dcyclic} @{" Aga-Amigas " link dagaamiga} @{" HAM-Modus " link dham} @{" Disk-Objekt " link dobject} @{" Blitter " link dblitter} @{" Blitter-Miniterme " link dblitterminiterms} @{" Schutzbits " link dprotflags} @{" TOME " link dtome} @{" 4-Player Adapter " link dfourplayer} @{" AMCAF-Struktur " link dstructur} @{" Bitplanes " link dbitplane} @endnode @node dagaamiga "Informationen zur neuen Produktreihe A1200/A4000/CD³²" Informationen zu AGA-Amigas Die neuen Amigas A1200, A4000 und CD³² verfügen über das AGA-Chipset. Dies ermöglicht es, nicht nur bis zu 6 @{" Bitplanes " link dbitplane}, sondern bis 8 Bitplanes in fast allen Auflösungen zu benutzen. Außerdem verwenden diese Amigas zu den normalen 12-Bit Farbwerten ($0RGB), zusätzlich noch 12 weitere Bits, sodaß ein 24-Bit Wert entsteht ($00RRGGBB). Auch wenn AMOS Pro in der Version V2.0 noch keine AGA-Amigas unterstützt, so enthält AMCAF trotzdem Befehle zur zukünftigen Implementation. Die wesentlichen Vorteile eines AGA-Amigas aufgezählt: - Lokal konfigurierbar, die Programme passen sich der Landessprache an - Kickstart 3.0 mit verbesserten Grafikroutinen - Viele, neue, hohe Auflösungen - bis zu 256 Farben in fast allen Auflösungen - neuer @{" HAM8-Modus " link dham} für über 262.000 Farben - 16-farbige Dual Playfields möglich - MC68020+ für Rechenpower - 2 MB @{" Chip-Ram " link dchipram} Meine Empfehlung: Wenn Sie noch einen alten Amiga haben, dann sollten Sie mal über den Kauf eines AGA-Amigas nachdenken, es lohnt sich! @endnode @node dbanks "Bank" Ein paar Informationen zu Banks AMOS Banks bilden einen zusammenhängenden Block des Speichers dar (es gibt zwei @{" Ausnahmen " link diconbanks}). In diesen Speicherbereichen können eine Vielzahl von Daten gespeichert werden. AMOS verwendet sie meistens für komprimierte Grafiken, Geräusche, Musik, Amalprogramme, Menüs, Resourcen und sonstige Daten. Es gibt im wesentlichen vier verschiedene Typen von Banks: - Banks, die im @{" Chip-Ram " link dchipram} stehen und @{" permanent " link dpermanent} sind, - Banks, die im @{" Fast-Ram " link dfastram} stehen und @{" permanent " link dpermanent} sind, - Banks, die im @{" Chip-Ram " link dchipram} stehen und @{" temporär " link dtemporaer} sind, - Banks, die im @{" Fast-Ram " link dfastram} stehen und @{" temporär " link dtemporaer} sind. @endnode @node dbitplane "Bitplanes und was man mit ihnen machen kann" Bitplanes Es folgt nun ein kleines Tutorial, indem die Bitplanes und ihre Funktions- weise aufgezeigt werden. 1. Was ist eine Bitplane? Beim Amiga wird das Bild über sog. Bitplanes aufgebaut. Dies sind lineare Speicherbereiche, bei dem jeder Bildpunkt als ein Bit darge- stellt wird. Mit einer Bitplane lassen sich nun also 2 Farben anzeigen (Bit gesetzt oder Bit gelöscht). Legt man nun mehrere Bitplanes übereinander, so erhält man für n-Bitplanes 2^n Farben. Beispiel: Wir haben einen 16 Farben Screen. Dieser besitzt also 4 Bitplanes. Normalerweise werden die Bitplanes von 0 bis n-1 durchgezählt... Binär 0 1 0 1 = Dezimal 5 | | | | .---v---v---v---v-------------------- | | | `----+ 1 | | | | Bitplane 0 | | | |--v^--v^--v^--v^--v------------------- | | `------+--+ 0 | | | | Bitplane 1 | | | |--v^--v^--v^--v^--v------------------ | `--------+--+--+ 1 | | | | Bitplane 2 | | | |--v^--v^--v^--v^--v----------------- `----------+--+--+--+ 0 | | | | Bitplane 3 | | | |---^---^---^---' | | | | | | | | | | Sie müssen sich die Bitplanes 'übereinander liegend' vorstellen. Der Farbindex 5 wird also so in den Bitplanes dargestellt. Welche Farbe der Punkt auf dem Bildschirm letztendlich hat, wird ja mit der Farb- palette festgelegt. 2. Überlappung und Transparenz. Stellen Sie sich vor, Sie zeichnen eine Figur A nur in Bitplane 0 und eine Figur B in Bitplane 1. Es ergibt sich folgendes: Die Fläche, auf der sich keine der beiden Figuren befinden, hat die Farbe 0 (beide Bitplanes sind ja gelöscht: %00). Dort, wo sich nur Figur A befindet, Farbe 2^0=1 (Bit 0 gesetzt, Bit 1 gelöscht: %01). Figur B alleine setzt das Bit in Bitplane 1 und damit Farbe 2^1=2 (=%10). Überlappen sich beide Figuren, dann sind ja die Bits in beiden Bitplanes gesetzt, es ergibt sich als resultierende Farbe 2^0+2^1=3 (=%11). Nun können wir die Palette festlegen. Hier ein Beispiel: Palette 0,$F00,$F0,$FF0 Der Hintergrund ist schwarz ($000), Figur A ist rot ($F00) und Figur B ist grün ($0F0), bei Überlappung entsteht die Farbe gelb ($FF0). Mit solchen einfachen Überlegungen lassen sich gute Effekte erzielen. Versuchen Sie sich zu überlegen, wie sich die Figuren bei folgenden Beispielen verhalten: 1. Palette 0,$FFF,$888,$FFF 2. Palette 0,0,0,$FFF Die Auflösung finden Sie weiter unten. 3. Glenz und Fade Von Glenz-Effekten spricht man dann, wenn z.B ein Würfel 'durchsichtig', Gläsern oder 'elektrisch' erscheint. Meist wird dies für Vektoreffekte benutzt. Man unterscheidet zwei wesentliche Typen von Glenz-Vektoren: a) Wire-Frame Objekte: Bei diesen Drahtgitter-Objekten werden einfach die Linien immer in einer anderen Bitplane gezeichnet und die alten zwei oder drei zuvor gezeichneten Objekte überlappen sich dann. Durch eine geschickte Wahl der Palette (additive Farbwerte pro Bitplane) erscheinen dann die Punkte heller, bei denen sich die Linien überlappen. Beispiel für eine additive Farbpalette (8-farbiger Bildschirm): DUNKEL=$333 : HELLER=$666 : HELLST=$FFF ' %000 %001 %010 %011 %100 %101 %110 %111 Palette 0,DUNKEL,DUNKEL,HELLER,DUNKEL,HELLER,HELLER,HELLST Wie Sie hier sehen können, werden einfach die Anzahl der gesetzten Bits gezählt. Durch ständiges Ändern der Farbpalette kann man natürlich auch einen 'Nachzieh'- oder Fade-Effekt herstellen. Dazu müssen alle Farben mit dem Bit der aktuellen Bitplane, in der gerade gezeichnet wird, auf die hellste Farbe gestellt, alle Farben mit dem Bit der vorherigen Bit- plane, die aber nicht das Bit der aktuellen Bitplane haben, auf eine mittlere Farbe gesetzt und die Farbe mit dem Bit der vorvorherigen Bit- plane auf eine dunkle Farbe gestellt werden. b) Solide Objekte: Hierbei werden die Flächen, die vom Betrachter abgewand sind (also eigentlich unsichtbar sind) in einer anderen Bitplane gezeichnet, als die Flächen, die in Richtung des Betrachters blicken. Durch die entsprechende Palette kann dann das Objekt 'transparent' gemacht wer- den. Dazu müssen Sie einfach nur die Farben der Bitplanes mischen, in denen die verschiedenen Flächen gezeichnet werden. 4. Bitplane-Modi und Besonderheiten. Die alten Amigas können bis zu 6 Bitplanes gleichzeitig anzeigen. Das sind also maximal 2^6=64 Farben. Es gibt dabei allerdings ein paar Besonderheiten: a) ExtraHalfBright (EHB). Da bei dem OCS und ECS-Chipset nur 32-Farbregister existieren, werden die anderen auf die halbe Hellig- keit gestellt. Kann man also hübsche Schatten-Effekte erzeugen, indem einfach in die 6te Bitplane schreibt. Allerdings können EHB- Grafiken nicht perfekt ausgeblendet werden. b) Hold And Modify (HAM). Quasi eine Methode, um 6-Bitplanes hardware- mäßig auf 12-Bitplanes zu dekomprimieren. Dazu werden die Farben von 16 bis 63 benutzt um jeweils entweder den Rot-, Grün- oder Blau- anteil der vorherigen Farbe zu erreichen. Gut für statische Bilder oder vorberechnete Animationen, jedoch nicht für Spiele und berech- nete Grafik geeignet. Die einzige sinnvolle Methode bewegte Grafiken auf einem HAM-Screen anzuzeigen, beruht auf der Nutzung von Sprites. Siehe auch @{" Kurze Erklärung zu HAM " link dham}. c) Dual Playfield. Der Amiga kann die geraden Bitplanes (0,2,4) und die ungerade (1,3,5) voneinander getrennt darstellen oder besser gesagt, er legt sie übereinander, wobei die Farbe 0 des einen Playfields transparent ist, sodaß man hinter dieses blicken kann. Durch die Aufspaltung ergeben sich maximal 2^3=8 Farben für Dual Playfields. Der Amiga besitzt jeweils für die geraden und die ungerade Bitplanes viele seperate Kontrollregister. Das kommt daher, weil Dual Playfields fast völlig unabhängig voneinander sein müssen. - Das Bitplanecontrollregister (BPLCON0) $100. Hier wird die Farbtiefe und die Auflösung, sowie die Spezialmodi eingestellt. Bitbelegung: 15 HIRES Hochauflösenden Modus einschalten 14-12 BPUx Anzahl der Bitplanes 11 HOMOD @{" HoldAndModify " link dham} einschalten 10 DBPLF Dual Playfield einschalten 9 COLOR Videoausgang farbig 8 GAUD Audio von Genlock einschalten 7 8BPL 8 Bitplanes (AGA) 6 SHIRES Superhires (ECS/AGA) 3 LPEN Lightpen aktivieren 2 LACE Interlace einschalten. 1 ERSY auf externe Synchronisations schalten - Das Scrollregister (BPLCON1) $102. Über dieses Register kann der Bildschirm bis zu 15 Pixel nach links gescrollt werden. Die Bits 0-3 beschreiben den Scrollwert der geraden Bitplanes, die Bits 4-7 die der ungeraden. - Die Moduloregister (BPL1MOD/BPL2MOD) $108/$10A. Hier wird eingestellt, wieviele Bytes am Ende jeder Rasterzeile über- sprungen werden sollen. Wird für Playfields benutzt, die größer als der sichtbare Bereich sind. Durch das Einstellen negativer Werte lassen sich vertikale Zoomer oder Spiegel-Effekte erreichen. Wenn Sie ein Register über Set Rain Colour verändern lassen wollen, so wird die neue 'Farbe' mit folgender Formel berechnet: (REGADR-$180)/2 Weiterhin gilt folgendes zu beachten: Bei 5-6 aktivierten Bitplanes in Lowres oder 3-4 in Hires kostet das Anzeigen (!) des Bildes Rechenzeit, sofern sich das Programm im Chip-Ram befindet bzw. auf Chip-Ram zugreifen muß. 5. Wie kann man dieses Effekte nutzbar machen? Ganz einfach: Einen Regenbogen definieren, @{" Set Rain Colour " link csetrain} benutzen und anstatt der Farbwerte die neuen Werte für das Register mit Rain() angeben. Es gibt jedoch eine Einschränkung: Es kann wegen der AMOS-Regenbogenbeschränkung immer nur EIN (!) Register pro Zeile geändert werden. Schauen sie sich die Beispielprogramme ganz genau an. Dort werden alle hier genannten Effekte demonstriert. Übrigens bekommen Sie die Zeiger auf die einzelnen Bitplanes eines Bildschirms über Logbase(screennr) und Phybase(screennr). Viel Spaß noch! Auflösung zu den Fragen in 2: 1. Palette 0,$FFF,$888,$FFF Figur A ist weiß und bewegt sich immer 'über' Figur B, die grau ist hinweg, da bei Überlappung wieder die Farbe weiß entsteht. 2. Palette 0,0,0,$FFF Figur A und Figur B sind unsichtbar solange sie sich nicht über- schneiden. Denn erst bei Überlappung entsteht Farbe 3, die auf $FFF (weiß) gestellt ist. @endnode @node dblitter "Der Blitter" Der Blitter Der Blitter ist ein Coprozessor im Amiga, der hauptsächlich für das Ko- pieren und Verknüpfen von Daten benutzt wird (daher BLockImageTransferER). Zusätzlich kann er noch Flächen füllen und Linien ziehen. Dabei arbeitet er mit unglaublicher Geschwindigkeit (bis zu 16 Millionen Pixel pro Sekunde). Die Daten des Blitters müssen im @{" Chip-Ram " link dchipram} liegen. AMOS benutzt ihn für Bobs, Icons, Screen Copy und viele andere Befehle. Der MC68020 und höher ist beim reinen Kopieren von Daten schneller als der Blitter. Der Blitter arbeitet wortweise, deshalb werden die X Koordinaten bei Be- grenzungen auf das nächste vielfache von 16 gerundet. Um mit dem Blitter eine Fläche füllen zu können, dürfen die Begrenzungs- linien nur einen Pixel breit sein. Deswegen gibt es zwei verschiedene Arten Linien zu zeichnen. Siehe auch: @{" Turbo Draw " link cturdraw} @{" Bcircle " link cbcircle} @{" Blitter Fill " link cbltfill} @{" Blitter Copy " link cbltcopy} @{" Blitter Clear " link cbltcler} @{" Blitter-Miniterme " link dblitterminiterms} @endnode @node dblitterminiterms "Erklärung zu Blitter-Minitermen" Blitter Miniterme: Der Blitter kennt 256 verschiedene Verknüpfungen. Diese entstehen in zwei Stufen: 1. Es werden acht verschiedene boolsche Gleichungen auf die drei Daten- Bits angewandt. Jede davon liefert bei einer anderen Kombination aus A, B und C eine 1 als Ergebnis. 2. Die acht Ergebnisse obiger Gleichungen werden wahlweise miteinander durch ein logisches ODER verknüpft. Das Ergebnis ist das Ziel-Bit D. Bit Miniterm Eingangs-Bits ___ 0 ABC 000 __ 1 ABC 001 _ _ 2 ABC 010 _ 3 ABC 011 __ 4 ABC 100 _ 5 ABC 101 _ 6 ABC 110 7 ABC 111 Vorgehensweise: 1. Bei welchen der acht Kombinationen von ABC soll D gleich 1 werden? 2. Die Bits der Bitmaske setzen. 3. Werden nicht alle drei Quellen benötigt, müssen sämtliche Kombinationen gewählt werden, in denen die unbenutzten Bits vorkommen und die ge- wünschten Bits den richtigen Wert besitzen. Siehe auch: @{" Blitter Copy " link cbltcopy} @endnode @node dbyte "Byte" Ein Byte Ein Byte hat 8 Bits, daher kann man mit einem Byte Werte von 0 bis 255 darstellen. Ein Byte hat in Assembler das Suffix '.b'. Zwei Bytes zusammen ergeben ein @{" Wort " link dword}, vier ein @{" Langwort " link dlong}. @endnode @node dchipram "Chip-Ram" Chip-Ram Als Chip-Ram wird der Speicher beim Amiga bezeichnet, auf dem die Custom- Chips zugreifen können. Derzeit ist die Größe auf maximal 2 MB begrenzt (auch beim A1200 und A4000), und im A500 existiert standardmäßig nur 512KB Chip-Ram. Deswegen sollten Ihre Programme auch nicht mehr als einem halben MB Chip-Ram benutzen, das heißt aber nicht, daß Ihre Programme nur auf insgesamt 512KB laufen müssen! Durch den Zugriff der Custom-Chips wird der Prozessor gebremst, wenn das auszuführende Programm im Chip-Ram liegt. Besonders ab 32 Farben Lowres und ab 8 Farben Hires (nicht A1200/A4000) wird der Amiga langsamer! Chip-Ram wird vorallem benötigt für Bildschirme, Bobs und Sprites, Musik, Sounds, Diskettenlaufwerke, Copperlisten. Siehe auch: @{" Fast-Ram " link dfastram} @{" Ranger-Ram " link drangram} @endnode @node dcyclic "Cyclic" Cyclic (deutsch: kreisförmig) Wenn eine Zahl den oberen Grenzwert überschreitet, dann wird diese Zahl gleich dem unteren Grenzwert, und umgekehrt. Beispiel: OG=31 (obere Grenze) UG=1 (untere Grenze) Z=3 (Zahl) Do Inc Z If Z>OG Then Z=UG If Z