„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
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|