Amiga Screens: Een Inleiding

Een van de ongeschreven regels van het internet lijkt te zijn dat zodra er iets Amiga-gerelateerds wordt genoemd, er minstens één Amiga-fan (mijzelf inbegrepen) moet verschijnen om het concept van screens uit te leggen. We vertellen dat Amiga-schermen verschillende resoluties kunnen hebben, dat je ze kunt verslepen, en andere Amiga-gebruikers sluiten zich enthousiast bij ons aan, terwijl niet-Amiga-gebruikers waarschijnlijk nog steeds niet begrijpen wat er zo geweldig is aan deze schermen. Tot nu; deze tekst is geschreven in de hoop onwetende "normies" om te vormen tot volwaardige liefhebbers van Amiga-schermen.

Voor praktische doeleinden richt deze tekst zich op de oorspronkelijke Amiga-grafische hardware, genaamd OCS (Original ChipSet). Sommige hardwarebeperkingen werden opgeheven in de latere ECS (Enhanced ChipSet) en AGA (Advanced Graphics Architecture) upgrades, maar de basisprincipes en de gebruikerservaring blijven hetzelfde.

Een scherm is een scherm is een scherm

De specifieke betekenis van "screen" op de Amiga komt voort uit het besturingssysteem, dat deze term gebruikt om te verwijzen naar een specifiek type weergavegebied. Amiga-game- en demoprogrammeurs maken zich minder druk om dit concept; de Amiga Hardware Reference Manual spreekt bijvoorbeeld over een weergavegebied als een "playfield", en een democoder zou het hebben over raster splits, maar voor de eenvoud houden we het bij "screen".

Kort gezegd is een screen op de Amiga in feite een gebied waarop graphics worden getekend. Amiga-schermen kunnen verschillende resoluties en kleurdieptes hebben, en een programma kan elk aantal schermen met verschillende resoluties openen om graphics weer te geven.

Tegenwoordig gebruiken we meestal één weergavegebied met een vaste resolutie, wat een gecombineerd effect is van hoe moderne besturingssystemen en flatscreen-monitoren werken. In de hoogtijdagen van CRT-monitoren was het openen van weergaven met verschillende resoluties echter gebruikelijk. Een afbeeldingsviewer op een VGA-compatibele MS-DOS-machine kon bijvoorbeeld een 16-kleuren 720x400 pixel tekstmodus-resolutie gebruiken voor het bladeren door bestanden, en vervolgens een nieuw 256-kleuren 320x200 display openen bij het bekijken van een afbeelding.

Deze variaties in resolutie en kleurdiepte bestonden op vrijwel alle thuiscomputers en waren hardwarematig afgedwongen compromissen om een redelijke snelheid en geheugengebruik te bereiken voor verschillende use-cases. Geheugen was in die tijd erg duur en de Amiga, die in zijn standaard hardwareconfiguratie vertrouwde op een relatief kleine hoeveelheid RAM die gedeeld werd tussen de CPU, video- en audiohardware, bood een hoog niveau van controle over deze schermresoluties en kleurdieptes.

Indices en Planes

De Amiga maakt doorgaans gebruik van geïndexeerde paletten. Dit betekent dat een beperkt aantal kleurregisters per scherm een door de gebruiker gedefinieerde kleurwaarde bevatten. Deze waarden worden geselecteerd uit een 12-bits kleurruimte (of 24-bits op AGA). Bijvoorbeeld: kleurindex 0 kan worden ingesteld op $000 (zwart) en index 1 op $F00 (rood).

Om de kleurwaarde van individuele pixels te manipuleren, wordt gebruikgemaakt van planar graphics. Dit houdt in dat de kleurdiepte van een scherm wordt vergroot door meer bitplanes (kortweg bpl) toe te voegen. Elke bitplane wordt afzonderlijk in het geheugen opgeslagen. Om de kleurindex van een pixel te wijzigen, moet er in elke plane een bit worden omgezet.

Zo geeft een scherm met één bitplane twee kleurindices, twee bitplanes geven er vier, enzovoort, tot maximaal vijf bitplanes en 32 kleuren op de oorspronkelijke Amiga-hardware (of 8 bpl en 256 kleuren op AGA).

Op OCS en ECS wordt het maximale aantal bitplanes per scherm bepaald door de displayresolutie; deze zijn ontworpen om goed te werken op een PAL- of NTSC-televisieset. Een OCS Amiga biedt low-res en high-res:

  • PAL Low-res: 320x256 pixels (320x512 met interlace) met maximaal 32 kleuren (5 bpl).
  • PAL High-res: 640x256 pixels (640x512 met interlace) met maximaal 16 kleuren (4 bpl).

Deze basisresoluties kunnen iets worden verhoogd door gebruik te maken van overscan, wat in high-res kan oplopen tot 724x283, maar dit is niet gegarandeerd volledig zichtbaar op alle monitortypes of televisies.

In low-res kan een zesde bitplane worden gebruikt voor HAM (Hold-And-Modify), waardoor alle 4096 kleuren van de OCS Amiga gelijktijdig kunnen worden gebruikt (met enkele kanttekeningen), of EHB (Extra Half-Brite), wat een 32-kleurenpalet dupliceert naar 32 extra kopieën van de originele kleuren, maar dan met de helft van de oorspronkelijke helderheidswaarde.

In tegenstelling tot de meeste tijdgenoten heeft de Amiga echte, preemptive multitasking, waarbij planar graphics zorgen voor een efficiënt gebruik van resources. Een tekstverwerker kan prima werken op een 2-kleurenscherm, waardoor geheugen wordt bespaard dat gelijktijdig kan worden gebruikt voor een grafisch programma op een 32-kleurenscherm. Het bespaart ook geheugen omdat er precies het benodigde aantal bits nodig is om een enkele pixel op te slaan, in plaats van bijvoorbeeld één byte per pixel toe te wijzen en ongebruikte bits te verspillen. Bovendien kan een scherm willekeurig worden gedimensioneerd en gepositioneerd, zoals het weergeven van een 320x50 pixel low-res scherm onderaan het fysieke weergavegebied.

Hardware-tovertrucs

De Amiga was oorspronkelijk ontworpen als spelcomputer, wat betekent dat hij veel hardwarefuncties heeft voor het werken met graphics. Het herpositioneren van een scherm gebeurt direct, en het scrollen van een volledig scherm is extreem snel. Dit is zo effectief dat zelfs het besturingssysteem de gebruiker in staat stelt een bureaubladscherm te configureren dat groter is dan het zichtbare gebied, om vervolgens met de muis daarin te scrollen.

Het is ook eenvoudig om de displayresolutie en kleurdiepte op willekeurige punten in de redraw cycle te wijzigen. Dit betekent dat meerdere schermen tegelijk kunnen worden gecombineerd, zelfs overlappend, terwijl de ervaring voor de eindgebruiker uniform blijft.

Deze snelle schakeling tussen resolutie en kleurdiepte wordt aangestuurd door de copper (kort voor co-processor). De copper werkt synchroon met de video-rendering hardware en wordt ook gebruikt voor het manipuleren van kleurwaarden en hardware-sprites. Dit maakt onder andere de kenmerkende Amiga-functie "copper gradients" of "copper bars" mogelijk, waarbij de kleurwaarde voor een bepaald kleurregister per horizontale lijn wordt gewijzigd. Dit produceert opvallende gradiënten en meer kleuren op het scherm dan wat mogelijk is met de 32 beschikbare palette-indices.

Het combineren van schermen met verschillende resoluties en kleurdieptes heeft talloze toepassingen. Zelfs als het maximale aantal kleuren per scherm 32 is, kunnen deze 32 kleuren per scherm verschillen. Een spel kan dus 64 of meer kleuren gelijktijdig weergeven door 32 kleuren te gebruiken voor het hoofdspelgebied en 32 andere kleuren voor de gebruikersinterface en/of statusweergave. Dit kan vervolgens worden gecombineerd met copper-gradiënten om het aantal kleuren verder te verhogen.

Gebruikerservaring

Naast games is deze snelle grafische afhandeling ook handig bij het draaien van multitasking-productiviteitsoftware, wat ons brengt bij het verslepen van schermen (screen dragging).

Vanwege de lage resoluties van thuiscomputers en vroege pc's draaiden de meeste applicaties in full-screen modus. Bij multitasking op de Amiga kan de gebruiker snel schakelen tussen volledige schermen via een knop rechtsboven in het scherm of via een systeembrede sneltoets. Echter, schermen kunnen ook worden versleept door met de muis op de titelbalk van het scherm te klikken en deze naar beneden te trekken. Hierdoor wordt het scherm van een ander draaiend programma erachter onthuld.

Ik moet bekennen dat, hoewel veel Amiga-fans erover beginnen, het werkelijke nut van screen dragging beperkt is, althans in mijn persoonlijke workflows. Het effect moet echter verbazingwekkend zijn geweest in 1985, toen multitasking en kleurgrafieken zelden in combinatie werden gezien, behalve op zeer dure Unix-workstations. Een mogelijke toepassing is dat je het scherm van je chatprogramma een stukje naar beneden sleept om te controleren of een download in de webbrowser erachter vordert, maar full-screen schakelen op de Amiga is zo moeiteloos dat slepen vaak wat omslachtig aanvoelt.

Dual Playfields

De Amiga is ook in staat tot iets dat dual playfields wordt genoemd. Dit betekent dat voor twee overlappende schermen kleurindex 0 op het voorste scherm transparant wordt, waardoor de inhoud van het scherm eronder zichtbaar wordt. De andere kleurindices blijven intact, en alle gebruikelijke acties kunnen nog steeds individueel per scherm worden uitgevoerd: scrollen, tekenen, palette-wijzigingen, enzovoort.

Dit kan worden gecombineerd met sprites. De Amiga-hardware zorgt ervoor dat elke laag vloeiend kan worden geanimeerd, zelfs op een machine van 7 MHz.

Full Screen Flow

Op moderne machines geef ik er meestal de voorkeur aan om programma's als individuele, gestapelde vensters te draaien. Deels omdat er tegenwoordig genoeg schermruimte is, en deels omdat veel moderne programma's voor dit gedrag zijn ontworpen. Sommige programma's zien er echter vreemd uit wanneer ze gemaximaliseerd worden op een breedbeelddisplay met hoge resolutie. Ik lees bijvoorbeeld liever man pages in een terminalvenster van 80 kolommen, en ik vind dat orthodoxe bestandsbeheerders prettiger werken in vierkantere beeldverhoudingen zoals 5:4.

Het voordeel van het draaien van veel vensters op hetzelfde scherm is dat ze allemaal tegelijk zichtbaar kunnen zijn, wat zorgt voor snelle contextwisselingen. Het nadeel is dat bepaalde muis-workflows alleen echt bruikbaar zijn bij full-screen applicaties.

Neem bijvoorbeeld Directory Opus. Wanneer dit in full-screen op mijn Amiga draait, kan ik handige dingen doen zoals mijn muiswijzer tegen de rand van het scherm duwen en een enkele klik geven, wat me direct naar de bovenliggende map van de huidige weergave brengt. In een venster-georiënteerde omgeving zou dit zinloos zijn: zonder de rand van het scherm als grens voor de muiswijzer zou het dunne klikbare gebied vervelend moeilijk te raken zijn.

Een eenvoudiger plezier, maar iets dat moeilijk correct te repliceren is op een moderne breedbeeldmonitor, is het bewerken van code (of het draaien van terminal-gebaseerde applicaties) in een 80x24 tekens full-screen tekstmodus. Er is iets aan die proporties dat gewoon goed voelt.

Veel meer

Deze tekst raakt slechts de oppervlakte van schermen en de Amiga-grafische hardware. Planar graphics maakt bijvoorbeeld veel interessante trucjes en effecten mogelijk door slechts enkele van de bitplanes te manipuleren die de kleurwaarde van een pixel vormen. En we hebben de blitter-hardware van de Amiga nog niet eens genoemd, die razendsnelle kopieën van grafisch geheugen mogelijk maakt met diverse modi voor het combineren of maskeren van bitplanes — uitzonderlijk nuttig voor actievolle arcade-games.

Sprites zijn slechts kort aangestipt, zonder te bespreken hoe ze kunnen worden gebruikt om extra kleur toe te voegen aan schermen met weinig bitplanes of hoe ze kunnen worden gemultiplext.

Samenvatting

Amiga-schermen hebben veel interessante eigenschappen:

  • Planar Graphics: Schermen maken gebruik van planar graphics, wat geheugen bespaart en een geleidelijke toename van beschikbare kleuren op het scherm mogelijk maakt, van twee tot 32.
  • Flexibele Positionering: Schermen kunnen willekeurig worden gedimensioneerd en gepositioneerd.
  • Gelijktijdige Weergave: Meerdere schermen met verschillende resoluties (pixelgroottes), kleurdieptes en paletten kunnen gelijktijdig worden weergegeven en willekeurig over elkaar heen liggen.
  • Direct Schakelen: Het schakelen tussen twee verschillende schermen gebeurt onmiddellijk.
  • Screen Dragging: Schermen kunnen geleidelijk worden versleept om een ander scherm erachter te onthullen.
  • Dual Playfield: Maakt gebruik van een "alfakanaal" om de graphics van twee verschillende schermen te combineren.

Amiga-software, inclusief het besturingssysteem, maakt optimaal gebruik van deze functies. Dit maakt productieve multitasking-workflows mogelijk, ondanks de beperkte hardware-resources en de relatief lage displayresolutie van de machine.