Bu sayfadaki yazılar
Sayfanın metni
Sayfa 73
Peki işimiz bitti mi? Hayır. İşte bu noktada grafik modlarının aralarındaki farklılıklar önem kazanıyor. Çünkü Koala modu da Advanced Art Studio modu da hafızaya yüklendiği yerden itibaren ilk 8000 byte ($1f40) bitmap verisi olacak şekilde yerleşmiştir. Hatta hatta video verileri de aynı şekilde bitmap verilerinin hemen ardına yani 8000 byte ileriden yerleşmiştir. Ancak renk ekranları ve arkaplan renklerinin tutulduğu yerler farklıdır.
Aynı zamanda her iki grafik modu da varsayılan değerleriyle farklı adreslerden yükleyebilir (Koala $6000, Adv.Art Studio $2000) ancak bunun fazla bir önemi yoktur. Sonuç olarak biz istediğimiz yerden yükletmekte serbestiz. Her iki modu da başlangıç adreslerinden itibaren inceleyecek olursak.
Koala Grafik Modu İçin Değerler
Bitmap = $0000-$1f3f = 0-7999
Video = $1f40-$2327 = 8000-8999
Renk = $2328-$270f = 9000-9999
Arkaplan = $2710 = 10000
Advanced Art Studio Grafik Modu İçin Değerler
Bitmap = $0000-$1f3f = 0-7999
Video = $1f40-$2327 = 8000-8999
Renk = $2338-$271f = 9016-10015
Arkaplan = $2329 = 9001
Bu durumda $d011, $d016, $d018 değerlerini ayarlamanın haricinde bir de Video ve Renk ekranlarını olması gereken yerlere transfer edip, arkaplan rengini de $d021'e vermemiz lazım. Yani bizim örneğimizde;
Video -> $0400-$07e7
Renk -> $d800-$dbe7
Arkaplan -> $d021
Verileri bu şekilde transfer ettiğimizde grafiğimizi ekranda düzgün bir şekilde görüntüleyebiliriz. Verilerin nasıl transfer edileceğini dergiyle birlikte yayınlanan kaynak kod örneklerinden inceleyebilirsiniz.
Kaynak kodlardan "resim_gosterici.a" dosyası her iki modu da kapsayacak biçimde hazırlanmıştır. En başında tanımlanan _GRAFIK_TIPI_ değişkeni 0 değerini aldığında kod "resim.kla" dosyasını okuyarak "koala.prg" çıktısını verecektir. Eğer _GRAFIK_TIPI_ 1 değerini alırsa bu durumda "resim.aas" dosyasını okuyup "adv_art_studio.prg" çıktısını verir.
Eğer her iki modun birlikte yer aldığı ve koşula bağlı olarak derlenen dosya yapısı kafanızı karıştıracak olursa "bonus" klasörü içerisinde ayrı ayrı "koala.a" ve "adv_art_studio.a" kaynak kodlarını bulabilirsiniz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 72
12 -> %1100 -> 12*$0400 = $3000
13 -> %1101 -> 13*$0400 = $3400
14 -> %1110 -> 14*$0400 = $3800
15 -> %1111 -> 15*$0400 = $3C00
Biz $0400'ü kullanmak istediğimiz durumda yukarıdaki tabloya göre 7-4 arasındaki bitlerin "1" değerine sahip olması lazım.
Bit 3-1 ise text modda karakter setinin yerini belirler. Her karakter seti 2048 byte yani $0800'lük bir alan kaplar. Dolayısıyla yerleşebileceği 8 farklı konum vardır.
0 -> %000 -> 0*$0800 = $0000
1 -> %001 -> 1*$0800 = $0800
2 -> %010 -> 2*$0800 = $1000 (Commodore'un varsayılan karakter seti adresi)
3 -> %011 -> 3*$0800 = $1800
4 -> %100 -> 4*$0800 = $2000
5 -> %101 -> 5*$0800 = $2800
6 -> %110 -> 6*$0800 = $3000
7 -> %111 -> 7*$0800 = $3800
Ancak biz karakter ekranı kullanmadığımız ve grafik ekranları 8000 byte kapladığı ve 8192'lik ($2000) alanlara yerleştiği için, bizim için yalnızca "Bit 3" önemli. Bit 3'ün set olup olmamasına göre bitmap verileri;
0 -> 0*$2000 = $0000
1 -> 1*$2000 = $2000 adreslerine denk gelir.
Şimdi bu durumda biz "Bit 3"ü 1 olarak kullanacağız çünkü bitmap'i $2000 adresinde istiyoruz. Bit 7-4 aralığını ise %0001 şeklinde kullanacağız çünkü video ekranımız $0400'de olacak.
Aşağıdaki toplama işlemi sayısal değil bitleri yan yana ekleme anlamında kullanılmıştır.
Bit 7-4 + Bit 3 + Bit 2-1 = %0001 + %1 + %000 = %00011000 = $18 = 24
Bu durumda $d018'in alması gereken değerin $18 olduğunu da buradan hesaplamış bulunmaktayız. Yani grafik modumuzu açmak için yazmamız gereken kod:
lda #$3b sta $d011 lda #$d8 sta $d016 lda #$18 sta $d018 bu hale gelmiş oluyor.