C-64 İÇİN GRAFİK DONANIMI-6
Commodore 64 oldukça yüksek grafik çözünürlüğü olan bir bilgisayardır, fakat renk seçimi her nasılsa oldukça kısıtlı. Bunu dengelemek için daha az grafik çözünürlüğünde, daha çok renk seçimi sağlayan ikinci bir grafik modu yapmayı planladılar.
Renk düzenlemesi:
Her yüksek çözünürlüklü resim için ona karşılık gelen bir renk hafızası vardır. Bu renk hafızası yazı modunda VIDEO RAM olarak da kullanılır. VİDEO RAM, normal olarak VIDEO INTERFACE CHIP'inin resmi oluşturabilmesi için, metni veya ekranda görülen genel karakterleri saklamak için kullanılır. Eğer VIDEO RAM'ı kaydırmazsanız grafik moduna geçtiğinizde karakterlerin depolandığı yerler renkli bloklar halinde görülür. Bu olay aşağıdaki program ile gözlenebilir: Bu program iki değişik şekilde kullanılabilir. 1) Olduğu gibi, 2) 200 numaralı satırda ilk REM yazısını kaldırdıktan sonra. İlk durumda grafik moduna geçtikten sonra duracaktır ve tuşlara dokunarak yazı yazabilirsiniz fakat daha önce de belirtildiği gibi ekranda harf olarak değil renkli kareler şeklinde görülecektir. Eğer normal yazı moduna geri dönmek isterseniz: RUN 220, yazıp return basın. İkinci durumda, program bir tuşa basılmasını bekler ve basıldığında otomatik olarak grafik modunu kapatır. Grafik-renk ilişkisi bu örnekte çok açıktır. VIDEO
ANI
MİC BASI ANDI
CT cenana>
PAKF OR ARF
NO S.VE B. KOYULMASI
PAT
KATY ise 220
CAN
BOLUM ,
KAZTI
VEBA AND 1
7
END casa)
RAM içerisindeki bir byte yüksek çözünürlüklü bir ekranda 8x8 noktalık bir bölgenin rengini belirtir. Yüksek çözünürlükte arka zemin rengi, boş noktaların rengi ve dolu noktaların rengi 16 değişik renk arasından seçilebilir. Her byte'ın ilk nybble'ı (yarım- 4 bitlik bölüm) nokta rengini, ikinci nybble arka zemin rengini ifade eder. Bu sebepten dolayı renk çözünürlüğü oldukça azalmaktadır. Fakat bu gereklidir çünkü ekrandaki 64000 noktanın her birine bir renk verilirse bu çok fazla bellek kaplardı. (ek olarak; normal bir televizyonda bunu göstermede sorunlar çıkacaktır.) Bu 64000 x 4 = 256.000 bit veya 32 K RAM gerektirir. Bu da bilgisayarın normal çalışma hızını devam ettirebilmesi için ayrı bir grafik işlemcisi gerektirmektedir. VIDEO RAM, grafik bellekten daha kolay düzenlenmiştir. Byte'lar art arda sıralanmıştır. Düzenleme şu şekildedir.
Sütun Satır 012 $ 00 01 02 03 1 $ JE İF 2021 2 $ sos1 24 $ BLD 3CL
Yüksek çözünürlüklü grafik kullanırken VIDEO RAM'ın her byte'ı ekran üzerinde tanımlanmış 8x8'lik bir bölgeye karşılık gelir. Eğer bir noktanın bellek adresini biliyorsanız (grafik belleğin başlangıç adresi çıkartılarak), VIDEO RAM'ın başlangıç adresini eklemeniz gerekecek olan ilgili VİDEO RAM byte'ının adresini bulmak için bunu sadece 8'e bölmeniz gereklidir.
Çok renkli Grafikler
Bu bölüme başlamadan önce, önceki bölümdeki son paragrafları okumanız gerektiğini hatırlatalım, çünkü bu bölümü iyi anlamanız açısından büyük önem taşıyorlar. Önce de belirttiğimiz gibi Commodore 64'ün oldukça yüksek bir grafik çözünürlüğü var. Renk seçimi her nasılsa oldukça kısıtlı (16 değişik biçime rağmen). Bunu dengelemek için yapımcılar daha az grafik çözünürlüğünde daha çok renk seçimi sağlayan ikinci bir grafik modu yapmayı planladılar. Bu çok renkli moddur. Çok renkli mod 8x8'lik bir blokta 2 renk yerine 4 renk kullanılmasını mümkün kılar. Dolayısıyla grafik belleğin 8 K'sı kullanılır. Her byte'ın iki biti bir çift genişlikli noktayı tanımlamak için kullanılır. Böylece çözünürlük X ekseninde 160 çift genişlik noktaya ve Y ekseninde 200 noktaya dönüşür. (Çözünürlük = 160 x 200) Renk sadece VİDEO RAM'dan gelmez ayrıca 0'ıncı arka zemin kütüğünden ve renk RAM'ından gelir. Bu bölgeleri 0'dan 3'e numaralı olarak 4 renk kanalına ayırırız. 0-3 değerlerini taşıyan ve her noktaya ait olan bit çifti bu nokta için hangi kanaldan renk alacağını VIC'e bildirir. (Yüksek çözünürlük modunda her noktaya ait bir bit rengin arka zemin veya nokta renginden mi geleceğini belirler). Grafik bellek bir noktanın renk kodunu ihtiva etmez fakat bu renk nerede bulunur? Bit çifti/kanal/bellek ilişkisi aşağıdaki tabloda gösterilmiştir.
Bit kodu Kanalın bellekteki yeri 00 0 VIC'ın 33'üncü kütüğü 01 1 VIDEO RAM'ın ikinci nybble'ı 10 2 VIDEO RAM'ın birinci nybble'ı 11 3 renk RAM'ı
Bit kodu ile bir noktayı temsil eden binary (ikilik sistem) numarasını kastediyoruz. Kanalın bellekteki yeri ise renk kodunun hafızada saklandığı bölge. Bir örnek: Grafik bellekte bir nokta 01 değerlerini alan iki bit ile belirtilir. Bit kodu 01 1'inci kanala aittir bu da VIDEO RAM'ın ilgili byte'ının ikinci 4 bitidir. Bu byte yüksek çözünürlükte anlatıldığı gibi kullanılmaktadır. Şimdi de üçüncü kanal için renk RAM'ının nasıl kullanıldığı: renk RAM'ı normal olarak VIDEO RAM'da yazıların rengi için kullanılır. Renk RAM'ı kaydırılamadığından aynı anda yazı ve çok renkli modu kullanmak istediğimizde bir karışıklık meydana gelir. Renk RAM'ı VIDEO RAM'ı ile aynı şekilde düzenlenmiştir. Yüksek çözünürlükte de olduğu gibi bu renkler her 8x8 noktalık (bu durumda 4x8) bölge için ayrı seçilebilir. Bu da size her bölgeye kendi renk kombinasyonunu vermenizi sağlar. Sadece 0'ıncı kanalda arka zemin 0'ıncı renk kütüğünden gelen arka zemin rengi, grafik ekranın tümünde kullanılır. Çok renkli grafiklerle çalışırken çift nokta kalınlığının meydana getirdiği X eksenindeki bükülmeyi hatırlamak çok önemlidir.