AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Kniha návštev     Amiga na PC     Amiga Forever  

„NO SYSTEM“ programování

Radim Ballner

Vítám vás u páté, tentokráte závěrečné, části našeho seriálu. V tomto díle našeho seriálu se zaměříme na AGA grafiku.

AGA (AA Chip set - Advanced Amiga Chip Set) Nejdříve se podívejme, co nového nám AA čipy přinesly. Nové čipy umí třicetidvou bitový přístup do paměti, což urychlí DMA. Dále je možno použít osm bitplanů ve všech režimech. Paleta se rozrostla na 256 registrů, přičemž každý registr obsahuje dvacetipěti bitovou informaci - 8 bitů červená složka RED, 8 bitů zelená složka GREEN, 8 bitů modrá složka BLUE a 1 bit GENLOCK. Což umožňuje najednou zobrazit 256 barev ve všech rozlišeních z celé palety barev tj. z 256*256*256 = 16 777 216 barev (toto rozpětí barev se také nazývá TRUE COLOR). Zobrazení spritů mimo zobrazovací okno a volba jejich velikosti (LORES, HIRES, SHRES). Dual Playfield s dva krát čtyřmi bitplany ve všech rozlišeních. Možnost určení použitých barvových registrů pro výběr barev (osmi bitové pole, 2*4 bity pro sprity). Nový režim HAM8. Teď se na některá vylepšení podívejme z praktického hlediska. Jak již bylo uvedeno výše je možno používat až osm bitplanů. Jejich adresy jsou v tabulce č.1. Volba počtu bitplanů se opět provádí v registru BPLCON0. Význam jednotlivých bitů je v tabulce č.2. V tomto registru si všimněte bitu 0 (ECSENA). Pokud chcete používat AA vylepšení je nutno tento bit nastavit na jedničku.
Registr BPLCON1 (který řídí posun bitplanů) byl rozšířen o další čtyři bity pro liché a sudé bitplany. Význam jednotlivých bitů je v tabulce č.3.
V registru BPLCON2 ($DFF104 zápis) bych chtěl upozornit na dva bity. Bit 9 (KILLEHB) zakazuje režim EHB (Extra Half Brite). Použijete-li totiž 6 bitplanů, tak kvůli kompatibilitě se automaticky předpokládá, že se jedná o EHB režim. Tímto bitem tomu můžete zabránit. Bit 8 (RDRAM) nastavením tohoto bitu docílíte toho, že místo zápisu do barvových registrů můžete tyto registry číst. Novým registrem je registr BPLCON3 na adrese $DFF106 (zápis). Význam jednotlivých bitů je v tabulce č.4.
Bity 15 až 13 určují číslo barvové banky. Co to znamená? U Amig s ECS čipy bylo celkem pouze 32 barvových registrů. Těmto registrům byly přiřazeny adresy od $DFF180 až $DFF1BE. Další adresy (od $DFF1C0) jsou již obsazeny dalšími registry, tudíž není možné přidat barvové registry přímo za současných třicet dva registrů. Tento problém se vyřešil použitím bank. Což si lze představit jako nakupení registrů na sebe. A protože potřebujeme 256 registrů, tak máme k dispozici osm bank po třiceti dvou registrech (což je 32*8 = 256 registrů). Takže adresa $DFF180 může odpovídat jak COLOR0, tak i COLOR32. Toto právě závisí na bitech 15-13 v BPLCON3 (tři bity nám vybírají jednu z osmi bank). Další problém nastává s délkou dat, pro určení jedné barvy. Původně se celá informace vešla do jednoho wordu (RED, GREEN, BLUE - každá po čtyřech bitech, tj. celkem 12 bitů). Nyní ale potřebujeme 24 bitů (RED, GREEN, BLUE - každá po osmi bitech). Tato situace se řeší následovně. V registru BPLCON3 je bit LOCT. Pokud je tento bit roven nule, pak zapisujeme do barvových registrů vždy čtyři vyšší bity každé ze složek. Pokud je LOCT roven jedné, pak zapisujeme nižší bity, každé ze složek. Uvedete si příklad: máme 24bitovou barvu $AB1285 (což vlastně znamená, že červená složka má hodnotu $AB, zelená $12 a modrá $85 - ze škály od 0-$FF), kterou chceme zapsat do registru barvy pozadí. Nejdříve nastavíme v registru BLTCON3 bity BANK0-BANK2 a LOCT na nulu. Pak zapíšeme číslo $A18 do registru $DFF180 (COLOR0, barva pozadí), následně nastavíme bit LOCT na jedničku a do registru $DFF180 zapíšeme nižší bity barvy tj. $B25. Zajímavou možnost nabízejí bity SPRES0 a SPRES1. Tyto bity slouží k určení rozlišení, ve kterém se mají sprity zobrazovat. U starších Amig bylo možno sprity zobrazit jen v režimu LORES bez ohledu na zvolený režim bitplanů. U AA čipů lze nastavit i rozlišení spritů. Dalším novým registrem je registr BPLCON4. Význam bitů je v tabulce č.5.
Bity 15-8 určují masku, která se funkcí XOR spojí s barvou vybranou s bitplanů. Výsledné číslo barvy, pak již určuje barvový registr. Toto se dá velmi dobře využít potřebujeme-li vyměnit paletu barev pomocí jediné instrukce. Uveďme si příklad: máme obrazovku se 128 barvami (7 bitplanů), na vrchní polovině obrazovky chceme mít jednu paletu barev a dole druhou. Můžeme, samozřejmě, uprostřed obrazovky začít copperem měnit barvy, ale uvědomme si, že chceme změnit 128 barev to znamená minimálně 128 přesunů copperem (ve skutečnosti ještě více, protože musíme volit banku v BPLCON3, a pokud chceme používat 24 bitů široké barvové registry, tak je to ještě dva krát tolik přístupů - s nastaveným LOCT). Tato operace, ale zabere copperu už nezanedbatelný čas (asi 2 řádky !), takže uprostřed obrazovky by mohly nastat nepřesnosti. Toto se dá obejít právě pomocí BLTCON4. Na začátku zobrazování nastavíme barvové registry COLOR0-COLOR 127 na barvy vrchního obrázku, registry COLOR128-COLOR255 na barvy spodního obrázku a masku v BPLCON4 (bity 15 až 8) vynulujeme. Uprostřed obrazovky (tam kde chceme změnit paletu) stačí pouze nastavit masku v BPLCON4 na %10000000. Bity 7-4 v BPLCON4 určují čtyři vyšší bity pro barvy sudých spritů. Máme totiž osm spritů tomu odpovídá 16 barev, což jsou ony čtyři nižší bity ke čtyřem vyšším v BPLCON4. Bity 3-0 v BPLCON4 jsou obdobou bitů 7-4, ale pro liché sprity. V nových čipech byl přidán registr FMODE $DFF1FC (zápis) pro řízení různých typů přístupů do CHIP RAM. Význam bitů je opět v tabulce č.6.
HAM8 Tento režim je rozšíření HAM6. Na rozdíl od HAM6 se barvy neodvozují od šestnácti základních barev, ale od šedesáti čtyř základních barev. Tento režim zvolíme, pokud nastavíme počet bitplanů v BPLCON0 na osm a nastavíme bit HAM v BPLCON0 na jedničku. U HAM6 byly použity jako řídící bity bity z bitplanů 5 a 6. U HAM8 jsou řídícími bity bity bitplanů 1 a 2 a bity bitplanů 3 až 8 určují jednu ze 64 barev. Bližší informace o kombinacích bitů v 1. a 2. ukazuje tabulka č.7.
Tím jsme se dostali k závěru nejen článku ale i seriálu. Doufám, že vám tento stručný náhled na hardware Amigy pomohl a dal vám dostatečné informace k psaní vlastních prográmků. Musím podotknout, že na určitých místech jsem se musel dopustit nepřesností, poněvadž podrobný popis celého hardwaru by zabral celou knihu a byl by pochopitelný jen pro odborníky. Naopak já jsem se snažil, aby seriál byl pochopitelný i pro laiky.

Tabulka č.1 - Adresy bitplánů
BPLPTH1,BPLPTL1 ($DFF0E0,$DFF0E2) - adresa 1. bitplanu
BPLPTH2,BPLPTL2 ($DFF0E4,$DFF0E6) - adresa 2. bitplanu
BPLPTH3,BPLPTL3 ($DFF0EB,$DFF0EA) - adresa 3. bitplanu
BPLPTH4,BPLPTL4 ($DFF0EC,$DFF0EE) - adresa 4. bitplanu
BPLPTHS,BPLPTL5 ($DFF0F0,$DFF0F2) - adresa 5. bitplanu
BPLPTH6,BPLPTL6 ($DFF0F4,$DFF0F6) - adresa 6. bitplanu
BPLPTH7,BPLPTL7 ($DFF0FB,$DFF0FA) - adresa 7. bitplanu
BPLPTH8,BPLPTL8 ($DFF0FC,$DFF0FE) - adresa 8. bitplanu

Tabulka č.2 - BPLCONO $DFF100 zápis

bit jméno funkce
15 HIRES volba HIES režimu (640 bodů na šířku)
14 BPU2
13 BPU1 - počet bitplanů (0-8 včetně, nejvyšší bit BPU3)
12 BPU0 /
11 HAM HAM režim (6 nebo 8 bitplanů)
10 DPF Double Play Field - dvojité hrací pole
9 COLOR aktivace barvového signálu
8 GAUD povolení zvuku z genlocku
7 UHRES  
6 SHRES super hires režim (1280 bodů na šířku)
5 BYPASS  
4 BPU3 viz BPU0-BPU2
3 LPEN povolení světelného pera
2 LACE povolení interlace (prokládané řádkován)
1 ERSY externí synchronizace
0 ECSENA pokud = 0 ,pak jsou vypnuty následující bity v BPLCON3:
    BRDRBLNK,BRDNTRAM,ZDCLEN,BRDSPTR,EXTBLKEN

Tabulka č.3 - BPLCONI $DFF102 (zápis)

bit jméno funkce
15 PF2H7 (PF2Hx, x=0-7) kód horizontálního scrolingu pro hrací pole 2
14 PF2H6 (liché biplány)
13 PF2H1  
12 PF2H0  
11 PF1H7 (PF1Hx, x=0-7) kód horizontálního scrolingu pro hrací pole 1
10 PF1H6 (sudé biplány)
9 PF1H1  
8 PF1H0  
7 PF2H5  
6 PF2H4  
5 PF2H3  
4 PF2H2  
3 PF1H5  
2 PF1H4  
1 PF1H3  
0 PF1H2  

TABULKA Č.4 - BPLCON3 $DFF106 (zápis)

bit jméno funkce    
15 BANK2    
14 BANK1 - určení jedné z osmi barvových bank    
13 BANK0 /    
12 PF20F2 určuje offset na paletu barev, když má prioritu    
11 PF20F1 - v dual playfield hrací pole dva    
10 PF20F0 / PF20F2-0 OFFSET
      0 0
      1 2
      2 4
      3 8
      4 16
      5 32
      6 64
      7 128
9 LOCT 0=zápis vyšších bitů barvy do barvového registru    
8 x      
7 SPRES0 rozlišení všech osmi spritů: 0 = ECS, 1 = LORES    
6 SPRES1 / 2 = HIRES, 3 = SHRES    
5 BRDRBLNK okraj okolo zobrazovacího okna je 1=černý/0=color0    
4 BRDNTRAN      
3 x      
2 ZDCLKEN      
1 BRDSPRT povolení spritů mimo zobrazovací okno      
0 EXTBLKEN      

Tabulka č.5 - BLTCON4 $DFF10c (zápis)

bit jméno funkce
15 BPLAN7 toto osmi bitové pole se XORuje s barvou vybranou z bitplanů
14 BPLAN6 což umožňuje upravit adresu barvy před tím, než se vybere
13 BPLAN5 příslušná barva
12 BPLAN4  
11 BPLAN3  
10 BPLAN2  
9 BPLAN1  
8 BPLAN0  
7 ESPRN7 čtyři vyšší bity barvy sudých spritů
6 ESPRN6  
5 ESPRN5  
4 ESPRN4  
3 OSPRN7 čtyři vyšší bity barvy lichých spritů
2 OSPRN6  
1 OSPRN5  
0 OSPRN4  

Tabulka č.6 - FMODE $DFF1FC (zápis)

bit jméno funkce
15 SSCAN2 globální povolení pro sprite scan-doubling
14 BSCAN2  
13 x  
12 x  
11 x  
10 x  
9 x  
8 x  
7 x  
6 x  
5 x  
4 x  
3 SPAGEN sprite page mode
2 SPR32 sprite 32 bit wide mode
1 BPAGEN bitplane page mode
0 BPL32 bitplane 32 bit wide mode

Tabulka č.7 – HAM8

BP1 BP2 RED GREEN BLUE
0 0 přímo barva z rozmezí COLOR0-COLOR64    
0 1 hold hold modify
1 0 modify hold hold
1 1 hold modify hold

Vytlačiť článok


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )