Werken met Amos deel 62 """"""""""""""""""""""" Screen Display 0,112,45,,: Rem Plaatst het scherm op 112,42 Als je je schermen op hun plaatsen zet, moet je proberen er zeker van te zijn dat de linkerkant van het scherm op de linker boven hoek begint en eindigt in de rechter onder hoek. Dit is van belang opdat de Amiga deze gegevens goed moet vertalen. In de praktijk moet je maar het een en ander ontdekken door het proberen van de verschillende instrukties. Gelukkig is het enige wat je kan overkomen een raar getoond scherm. De Amiga crashed niet als je een fout maakt. Hieronder volgen een paar richtlijnen om je te helpen: * Alleen een enkel scherm kan op een horizontale lijn getoond worden. Je kunt echter wel overal zonder moeilijkheden schermen op elkaar plaatsen. Dat gaat allemaal prima, maar dan is enkel maar 1 scherm zichtbaar. * Er is altijd een 1-pixel dode zone (gebied) tussen elk stel schermen. Dat wordt merkbaar als je een sprite van het ene scherm naar het andere beweegt. Neem als voorbeeld de muispointer en beweeg die tussen je schermen door. Je ziet dan een kleine smalle zwarte lijn door je muis pointer gaan op de randen van je schermen. SCREEN OFFSET (Hardware scrolling) """""""""""""""""""""""""""""""""" SCREEN OFFSET n,x,y Het zicht van wat de Amiga laat zien is niet beperkt tot de afmetingen van je monitor. Niets hoeft je tegen te houden om schermen veel groter te maken dan je monitor scherm groot is. Het is duidelijk dat je zulke plaatjes niet in hun geheel zal kunnen zien, maar wel kun je op je gemak een gedeelte van dat plaatje zien met het SCREEN OFFSET kommando. Zoals je ziet is het bepaalde gebied van het scherm getoond door een VIEW PORT (KIJK GAT) geplaatst op de koordinaten x en y. Je kunt de view port door het hele scherm bewegen door de waarde van de koordinaten te veranderen. Dit produceert een boterzacht hardware scrolling effekt wat perfekt is voor sommige spellen. Het formaat van je VIEW PORT wordt bepaald door de afmetingen die je in een eerder kommando SCREEN DISPLAY hebt bepaald. n is het nummer van het scherm wat getoond wordt. x,y maten bepalen de linker boven hoek van het scherm op het begin punt van je getoonde beeld. x en y worden opgegeven in eenheden van een enkele pixel, dus niets weerhoud je er van om boterzachte scrollings te maken. Je kunt ook negatieve waarden opgeven met deze instruktie om je elk gedeelte van het Amiga geheugen op het scherm te laten zien. Scherm kontrole kommando's """"""""""""""""""""""""""" SCREEN CLONE (Kopieert een scherm) SCREEN CLONE n Het SCREEN CLONE kommando voegt een tweede versie toe van het huidige scherm aan scherm nummer n. Deze cloon (kopie) gebruikt precies hetzelfde geheugen gebied als het originele scherm. Normaal wordt een gecloond scherm op dezelfde plaats neergezet als het oorspronkelijke scherm. Toch kan dat scherm apart bewerkt worden door elke normale scherm kommando's als SCREEN DISPLAY en SCREEN OFFSET. Omdat er slechts een enkele kopie van de originele scherm data in het geheugen zit, kun je het SCREEN kommando niet op een cloon toepassen. Je krijgt dan een illegal screen parameter (foute scherm parameter) foutmelding, als je het toch probeert. Een ander punt van overweging is dat elke colour cycling die je in je originele scherm hebt opgezet, niet gekopieert wordt tijdens je cloon operatie. Zie het gebruik van het WAIT VBL kommando. Dit verzekert je er van dat de cloon off-screen (buiten het scherm) geplaatst wordt en het houdt de beweging boterzacht. Als je het kommando SCREEN CLONE onderzoekt, zal je er gauw achterkomen dat er een beperking van het aantal bewegingen is en dat je je effekt anders te niet doet. Zelfs een onbeduidende toevoeging als een extra berekening aan je routine kan vertraging in de bewegingen van je animaties onaanvaardbaar verhogen. De manier waarop je scherm getoond wordt kan ook bepaald worden direkt vanuit de AMAL animatie taal. Die is in staat om grote aantallen screens zacht en makkelijk te animeren. De animaties zijn nu zo snel dat je ze eigenlijk zou moeten afremmen om ze goed te kunnen zien! DUAL PLAYFIELD (DUBBEL SPEELVELD) (Kombineert twee schermen in een dubbel speelveld) """""""""""""""""""""""""""""""""""""""""""""""""" DUAL PLAYFIELD screen1, screen2 De Amiga's dubbel speelveld mode geeft je de mogelijkheid om twee komplete schermen tegelijkertijd op dezelfde x en y koordinaten te laten zien. Het is haast hetzelfde als je het ene scherm op een vel plastic tekent en hem over dat andere vel heenlegt. Elk scherm kan onafhankelijk van de ander geheel bewerkt worden. Het nut daarvan is dat je gelijkmatige scherm wisselingen kan laten plaatsvinden zoals in het spel de Silkworm. De twee delen van een dubbel speelveld worden net als elk ander AMOS scherm behandelt en kan er van alles in gezet worden. Ze kunnen zelfs geanimeerd worden met AMAL of dubbel gebufferd. screen 1 en screen 2 verwijzen naar de schermen die eerder gedefinieert waren met het SCREEN OPEN kommando. Alleen een paar scherm kombinaties zijn aanvaardbaar. Beide schermen moeten dezelfde resolutie hebben, omdat een scherm in lores en een scherm in hires niet mogelijk is in hetzelfde speelveld. Hier een lijst van mogelijkheden. Screen 1 Screen 2 Opmerkingen Kleurnummers Kleurnummers 2 2 4 2 4 4 8 4 Alleen Lores 8 8 Alleen Lores Hoewel de kleurbereiken van te voren zijn bepaald, kunnen de schermmaten volledig anders zijn. Door het maken van een groter achtergrond scherm en een kleiner voorgrondscherm kun je prachtige realistische wissel effekten maken. De kleuren voor deze schermen worden allemaal van het palet van scherm 1 genomen met kleur nul als transparant. Screen Kleur indexen (vanuit scherm 1) 1 0-7 2 8-15 Wanneer je het tweede scherm aan het maken bent, dan zet AMOS Basic je kleur index automatisch om naar een geschikt getal voordat het gebruikt wordt. Dus INK 2 gebruikt kleur negen van het eerste palet. Dit omzet proces wordt niet toegepast op de toevoeg instrukties als COLOUR of PALETTE. Dit is belangrijk om te bedenken dat wanneer je de kleur bepalingen verandert, anders worden je kleuren niet zichtbaar gemaakt in je scherm. Maak altijd het huidige scherm van scherm1 (screen1) voordat je je kleurveranderingen wilt toevoegen.