Werken met Amos deel 93 """"""""""""""""""""""" Let erop dat elke bewegings stap is toegevoegd aan de huidige koordinaten van je objekt. Dus als een objekt bewogen wordt met gebruik van een sprite of een bob, zal het doorgaan met het uitvoeren van de bewegingen zonder ze te wijzigen. Het is daarom mogelijk om tientallen verschillende objekten op het scherm te animeren met slechts een bewegings volgorde. Register R1 bevat nu de flag (kenmerk) die de richting van je bewegingen zet. Er zijn drie verscheidene toestanden: * R1>0 Vooruit """""""""""""" Een waarde van een voor R1 bepaalt dat het bewegings patroon herhaald wordt van begin tot eind, in de volgorde waarin het gemaakt was. (Standaard) * R1=0 Achteruit """""""""""""""" Veel animatie volgordes verlangen dat je objekten voor- en achteruit bewegen in een ingewikkeld patroon. Om de richting te wijzigen laad je R1 met een 0 in. Je objekt zal nu omdraaien en je originele bewegings stappen achterste voren uitvoeren. *R1=-1 Verlaat """""""""""""" Als een botsing is veroorzaakt, moet je objekt onmiddellijk stoppen en een explosie effekt maken. Dat doe je met het zetten van R1 op een waarde van -1. AMAL voert de play instruktie nu niet uit en springt gelijk naar de volgende instruktie. Het slimme van deze registers is dat ze direkt vanuit AMOS Basic veranderd kunnen worden. Zo kun je je bewegings patronen direkt via je hoofdprogramma kontroleren. Er is zelfs een AMPLAY instruktie om de dingen wat makkelijker voor je te maken. Het Play kommando is perfekt om de aanvallers in een arcade spel onder kontrole te hebben. In feite is het de meest krachtige instruktie van AMAL. AMAL (Roep een AMAL programma op) """"""""""""""""""""""""""""""""" AMAL n,a$ AMAL n,p AMAL n,a$ to address Het AMAL kommando voegt een AMAL programma to aan een animatie kanaal. Dit programma kan zowel vanuit een string a$ als direkt uit de AMAL bank gehaald worden. De eerste versie van de instruktie laad je programma vanuit de string a$ en voegt het aan channel n toe. a$ kan een hele reeks AMAL instrukties bevatten. Op de andere wijze kun je je programma laden vanuit een geheugen bank die gemaakt is door de AMAL accessory. p verwijst nu naar het nummer van een AMAL programma die in bank nummer 4 bewaard is. n is het nummer van en animatie kanaal varierend van 0 tot 63. Elk AMOS kanaal kan onafhankelijk toegevoegd worden aan of een bob, een sprite of een scherm. Alleen de eerste s6 AMAL programma's kunnen met interrupts uitgevoerd worden. Om langs deze beperking om te kunnen gaan moet je je programma's direkt vanuit Basic uitvoeren met het SYNCHRO kommando. De laatste versie van de AMAL instruktie is eigenlijk voor gevorderden. In plaats van een aktief objekt te verplaatsen, kopieert dit eenvoudigweg de inhoud van registers X,Y en A in een speciaal geheugen gebied. Nu kun je die informatie direkt in je eigen Basic routines gebruiken. Het is daarom mogelijk om het AMALS systeem uit te buiten om alles te animeren van een Blok tot een karakter. De syntax is: AMAL n,A$ To address address moet even zijn en moet verwijzen naar een veilig geheugen gebied, bij voorkeur in een AMOS string of een geheugen bank. Elke keer dat je AMAL programma wordt uitgevoerd (50 keer per seconde), worden de volgende waarden in je geheugen gebied gezet: Address Bit 0 wordt op 1 gezet als de X veranderd is. Bit 1 betekent dat Y is toegevoegd Bit 2 wordt gezet als plaatje (A) veranderd is sinds de interrupt. Address+2 Is een woord wat de laatste waarde van X bevat. Address+4 Bevat de huidige waarde van Y. Address+6 Bewaart de waarde van A Deze waarden kunnen van uit je programma worden toegevoegd met het makkelijke DEEK. N.B.: Deze keuze gaat voor alle andere kanaal toevoegingen.