Commodore sayı 11, sayfa 47

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 47

VIC'in yazmaçlarını gördükten sonra, sıra VIC'den bağımsız olarak çalışan ama grafikle ilgili bazı olayları kontrol eden çeşitli yazmaçlarla, VIC'in genel özelliklerine ve C64'ün hafıza kontrolüne geldi.

Konu 1:

Şimdi sırayla, bahsettiğimiz yazmaçları görelim: A) Sprite tanımlama göstergeçleri: C64'ün kullanabildiği 8 sprite'ın görünüşlerini belirleyen 63 hafızadaki hangi blokta (64 byte'lık grupların her biri) bulunduğunu gösteren hafıza birimleri, videoram'ın en son sekiz byte'ında yer alır. Normalde ekran hafızası (videoram) 1024-2047 adresleri ($0400-$07FF) arasında yer alır. Burada, o anda ekranda gözüken karakterlerin kodları saklanır. Ancak ekranda, 25*40 = 1000 karakter saklandığına ve 1024-2047 arasında 1024 byte olduğuna göre, en sondaki 24 byte artacak demektir. İşte bu artan 24 byte'ın son sekizi (2040-2047, $07F8-$07FF), sprite'lar için kullanılır. Ancak, daha sonra bu yazımızda da göreceğiniz gibi, VIC'in adresleme bölgesi kaydırıldığında, bu adresler değişecek ama, hep videoram'ın son sekiz byte'ı olarak kalacaktır. Çünkü videoram da, adresle-

TUNA ERTEMALP me bölgesiyle beraber kayacaktır. Her biri 0-255 arası değerler alabilen bu byte'ların sahip olduğu içeriği 64 ile çarptığınızda, o sprite'a ait görüntü tanımlamasının başlangıcının gerçek adresini bulabilirsiniz. Kolayca hesaplayacağınız gibi, 256*64 = 16384 adet byte ile toplam 16 Kbyte'a adresleme yapılabilmektedir. Bu da, VIC'in adresleyebildiği maksimum hafıza miktarıdır. Zaten bu nedenle yukarıda bahsettiğimiz kaydırma işlemine ihtiyaç duymaktayız.

B) VIC adresleme bölgesi bit'leri:

İşte deminden beri bahsettiğimiz kaydırma işleminde en önemli rolü oynayacak olan yazmaç. VIC'in 24 numaralı yazmacında gördüğünüz ve videoram ile karakter setinin başlangıç adreslerini belirten 13. bit'e kadar geliyordu. Ancak 64 Kbyte'lık bir alette 14 ve 15 numaralı bit'lere de gerek vardır. İşte bu bit'ler 56576 ($DD00) adresinin alt iki bit'idir (0 ve 1 numaralı bit'ler). Bu adres, CIA 2 olarak isimlendirilen bir başka chip'in 0 numaralı yazmacıdır ve BİT 0 ile BİT 1'in, VIC'in adresleme bölgesinin hangi 16 Kbyte'lık bölgede yer aldığını belirtir.

Dikkat edilmesi gereken bir nokta var. Bu iki bit, elektronik olarak LOW-active adıyla anılan karakteristiğe sahip. Yani 1 oldukları zaman 0 gibi, 0 oldukları zaman 1 gibi davranırlar. Örneğin 2 değerini belirtmek için %010 değil de, %001 kullanmak gerekiyor. Bu iki bit'in yukarıdaki uyarımıza kulak vererek hesaplayacağınız değerini, 16384 ile çarparak VIC'in adresleme bölgesinin başlangıcını öğrenebilirsiniz.

Konu

VIC'in özelliklerini kullanarak kabaca üç gruba ayırabileceğimiz işlemleri yapabilirsin: 1) Yüksek çözünürlükte noktasal grafik 2) Sprite'lar 3) Yazı ekranı Bir de bunların üstüne, her üç özellikle de kullanabileceğiniz iki değişik renklendirme tipi gelmektedir: 1) Normal renklendirme 2) Çokrenklilik (multicolor) Ayrıca, sadece yazı ekranı ile birlikte kullanabileceğiniz ve multicolor ile birlikte işlemeyen bir diğer renk modu daha var: — Geliştirilmiş (extended) renk modu Şimdi ana başlıklar halinde bu özelliklere değinelim:

A) Noktasal grafik: a) Normal noktasal grafik:

VIC'in 17 numaralı yazmacının 5 ve 6 numaralı bit'lerini 1 ve 22 numaralı yazmacın da 4. bit'ini 0 yaparak seçebileceğiniz bu çalışma şeklinde, grafik hafızası ile ekran gösterimi arasında doğrudan bir ilişki vardır. Her bir bit, ekrandaki bir noktaya karşılık gelir. Böylece aşağı yukarı 8 Kbyte'lık bir alan içinde 320*200 noktalık bir grafik ekranına kavuşursunuz. Bunun için aşağıdaki POKE komutlarını kullanmalısınız:

Klavyeyle gezinmek için ← ve → tuşları.