          å2°2Agowska paletaå0°0


 AGA  daje  nam  nowe  moûliwoôci,
mowa  tu oczywiôcie o rozszerzonej
palecie  kolorów, wszystko îadnie,
piëknie...   Problem  tylko w tym,
ûe  przesiadajâc  sië  z  A500  na
A1200,  wiemy  tylko tyle, ûe nowe
moûliwoôci  sâ,  a o wykorzystaniu
ich  moûemy  co najwyûej pomarzyê!
W     tym    artykule    chciaîbym
wytîumaczyê  wam w jaki sposób np.
rozjaônia   sië   kolory  uûywajâc
"nowych     moûliwoôci",     czyli
uûywajâc peînej Agowskiej palety.

 Konstruktorzy  Amigi  1200  mieli
zapewne       pewien      dylemat.
Rozszerzenie     palety    kolorów
musiaîo byê, ale problem w tym, ûe
nie  byîo  go  zbytnio jak zrobiê.
Do    tej   pory   nasycenia   RGB
podawaliômy    w   sîowie,   które
sîaliômy do odpowiedniego rejestru
(jednego  z  32, bo tyle rejestrów
kolorów  ma  Amiga).   I  tak  np.
nasycenie koloru czerwonego (R jak
Red) ustawialiômy w zakresie od $0
do $f (0-15).  A problem polega na
tym,  ûe zwiëkszajâc zakres palety
przypisujemy    nasyceniu   danego
koloru  wartoôci  od  $00  do  $ff
(0-255).   Jak  îatwo zauwaûyê nie
daîoby  sië  tego  zrobiê w sposób
normalny, bo nasycenie kolorów RGB
nie  wlazîo  by  do jednego sîowa!
Oczywiôcie    caîoôê    moûna   by
powiëkszyê  do dîugiego sîowa, ale
w  tym przypadku:  1.  Nie byîo by
to     zgodne    z    A500!     2.
Kosztowaîoby to dodatkowe rejesty,
na które nie ma juû miejsca!

 No   wiëc   co   wymyôlili   nasi
konstruktorzy?       Otóû     ktoô
intensywnie  wysiliî  mózgownicë i
pomyôlaî sobie:

 Skoro ma to byê zgodne z A500, bo
musi  byê,  to trzeba wykonaê to w
taki  sposób,  aby  kolory Agi nie
naruszaîy  normalnych podstawowych
wartoôci jakie rozpoznaje A500.  W
tym   celu   naleûy  nie  zmieniaê
zapisu    podstawowych    wartoôci
nasycenia   i  rejestrów  kolorów,
lecz  mniejsze  wartoôci (mîodsze)
kolorów  wpisywaê  po  zapisaniu w
jakimô  rejestrze  informacji,  ûe
teraz    bëdâ   mîodsze   wartoôci
kolorów.   Lecz  musi  to byê taki
rejestr,  na który A500 nie zwraca
uwagi!


 Padîo  na  å2$dff106å0,  którego A500
nie  wykorzystywaîa, a problem byî
juû "z gîowy".  Niestety nasi mili
producencji nie raczyli powiadomiê
nas,  ûe  wîaônie  w  taki  sposób
postâpili, a ludziska musieli sami
dochodziê  do  tego "w jaki sposób
ustawiê tâ Agowskâ paletë".

 Tak  wiëc na rozum poczâtkujâcego
kodera:    Jesli  ustawiamy  kolor
wykorzystujâc   przy   tym   peînâ
paletë  kolorów to robimy to w ten
sposób:


  å2dc.l    $01060000
  dc.l    $01800å1xxxå2
  dc.l    $01060c00
  dc.l    $01800å1yyyå0


 å2xxx å1-å0 oznacza starsze bity danego
koloru.
 å2yyy å1-å0 oznacza mîodsze bity danego
koloru.


 No   wiëc   jeôli  dla  przykîadu
chcemy ustawiê kolor o wartoôciach
RGB:
          å2244  110  255å0

 To  naleûy  to  zrobiê w taki oto
sposób:  Dzielimy przez 16 kaûdâ z
danych  wartoôci, caîoôci wisujemy
w  miejsce å2xxxå0, a reszty jakie nam
pozostaîy  w wyniku tego dzielenia
wpisujemy w miejsce å2yyyå0.  Czyli:

 244/16 = å215å0 reszty å24 å0
 110/16 = å2 6å0 reszty å214å0
 255/16 = å215å0 reszty å215å0

 No   i   mamy  obliczone  starsze
wartoôci  koloru,  czyli  normalne
wartoôci,   które  wpisujemy  jako
å2xxxå0,  i które rozpoznaje nam A500.
Jest to czywiôcie kolor:  å2$f6få0

 My   jednak  chcemy  uûyê  peînej
palety  Agi.   W  tym celu mîodsze
wartoôci  koloru  (reszty)  musimy
wpisaê w miejsce å2yyyå0.  Jak wszyscy
zapewne  juû kumajâ, w miejsce å2yyyå0
trzeba wpisaê:  å2$4efå0

 A    na   zakoïczenie   napisaîem
malutki   przykîad  wykorzystujâcy
peînâ   paletë  Agi.   Zmienia  on
poprostu   kolor   tîa.   Tîo  sië
rozjaônia  od  czarnego  po biaîy,
tyle,  ûe  robi to jak na porzâdne
rozjaônienie    przystaîo,   czyli
rozjaônia sië powoli i dokîadnie.

å2S:å0       lea     copper(pc),a0
         move.l  a0,$dff080

å2loop:å0    bsr     vbl
         bsr     change
         btst    #6,$bfe001
         bne     loop
         rts

å2vbl:å0     cmp.b   #$ff,$dff006
         bne     vbl
å2vbl2:å0    cmp.b   #$2f,$dff006
         bne     vbl2
         rts

å2change:å0  lea     AAA2(pc),a0
         move.w  (a0),d0
         add.w   #$111,d0
         cmp.w   #$1110,d0
         beq     change2
         move.w  d0,(a0)
         rts
å2change2:å0 move.w  #$0000,(a0)
         lea     AAA(pc),a0
         move.w  (a0),d0
         add.w   #$111,d0
         cmp.w   #$1110,d0
         beq     change3
         move.w  d0,(a0)
         rts

å2change3:å0 move.w  #$0000,(a0)
         rts

å2Copper:å0  dc.l    $01000200
         dc.l    $01060000
         dc.w    $0180
å2AAA:å0     dc.w    $0000
         dc.l    $01060c00
         dc.w    $0180
å2AAA2:å0    dc.w    $0000
         dc.l    $fffffffe


 Hm...   to  by  byîo na tyle.  Ci
którzy      niezbyt      dokîadnie
zrozumieli  to  co pisaîem zapewne
wyjaôniâ     swoje     wâtpliwoôci
analizujâc    przykîad!     Miîego
uûywania Agowskiej palety ûyczy:

        å2Ranger of Ladybird Designå0