NightNetwork - yazılım, yazın, verim vs.

7.4. Çok Renkli Karakter Moduna Girmek

Normalda C64 ilk açıldığında tek renkli karakter modundadır. Çok renkli karakterler gösterebilmek için yapmanız gereken iki şey vardır:

  • d016 registerindeki çok renkli mod bitini 1 yapmak

  • çok renkli karakterleri yerleştirdiğiniz slotlara karşılık gelen renk belleği adreslerine 8 ile 15 arası bir renk değeri koymak.

Özellikle ikinci madde sıklıkla unutulan ilginç bir özelliktir. Aslında bu özellik sahnesinde aynı ekranda interrupt kullanmadan hem çok renkli hem tek renkli karakterlerin gösterilebilmesi sağlar. Ekranda kendiseine karşılık gelen renk belleği değerleri, 0 ile 7 arasında olan karakterler tek renkli, 8 ile 15 arasında olan karakterler çok renkli olarak gözükür. Bir diğer unutmamanız gereken ilginç nokta Renk belleğine 8 ile 15 arası bir değer koyduğunuzda aslında karakterin 11 değerli piksellerin hangi rengi alacağı. Bu pikseller beklediğiniz üzere 8 - 15 değerlerinin karşılık geldiği renkleri değil 0 ile 7 arası değerlere karşılık gelen renkleri alırlar. Yani 8-15 arası değerden önce 8 çıkarır sonra bulduğunuz değerin hangi renk olduğuna bakarsanız, işte o renk 11 değerli piksellerin görüneceği renktir. Örneğin sol üst köşeye çok renkli bir karakter koyar ardından d800 adresine 10 yazarsak, kararkterimizdeki 11 değerli pikseller 2 nolu renk olan kırmızı renginde görünecekler.

Bu acayip davranışın kafanızı karıştırmasına izin vermeyin. Kısa sürede alışacaksınız. Şimdi bir örnek görmek isterseniz, yalnız_logo.a64 dosyasına bakabilirsiniz. Bu örnekteki amacımız sadece büyük bir çok renkli logo göstermek. Elimizde karakter setine çevrilmiş bir logo var. Tıpkı daha önceki araba resmi gibi bu büyük logo da 8 x 8 piksellik alanlara bölünmüş ve bu alanların her biri birer çok renkli mod karakteri olarak karakter setine yüklenmiş. Ardından karakter indekslerinin video matrise nasıl dizileceği de ayrı bir dosya olarak hazırlanmış. Dolayısıyla elimizde bellekte iki bölgeye yüklenecek iki adet bayt grubu var: Karakter seti ve video matris baytları.

Herhangi bir büyük grafikten bu şekilde karakter seti ve video matris elde eden pekçok araç vardır. Bunlara genelde logo converter veya bitmap to chars converter gibi isimler verilir. Webde pekçok örneği vardır. Ya da kendiniz pc'de basit çeviriciler yazabilirsiniz. Böyle bir c++ çevirici bu kursun dosyaları arasında da var. SDL kütüphanesi ile derleyip kullanablirsiniz.

Ya da bu detaylara takılmayıp bir süre çalışmalarınızda örnek verdiğimiz logoyu kullanabilirsiniz.

Demin de belirttiğimiz gibi örnekte video matris ve karakter seti baytlarını bellekte uygun yerlere yerleştiriyoruz (VM $3000 adresine, Karakter seti de $2800 adresine) ardından da $d018 registerini kullanarak VIC'in o bölgeleri kullanmasını sağlıyoruz. Sonra da d016 ile çok renkli modu açıyor, ve d021, d022, d023 registerlerine istediğimiz renkleri yerleştiriyoruz. Son olarak da renk belleğinde logonun olduğu bölümlerin rengini istediğimiz renk değerinin 8 fazlası ile dolduruyoruz (Çok renkli mod öyle gerektirdiği için).

Genelde bu şekilde kullanılan logolar veya grafikler hep üç renkli olarak hazırlanır. Böylece grafiklerin kullanımı kolaylaşır. Normalde zaten 2 renk (d022 ve d023'ten gelenler) bütün karakterlerde ortak olmak zorunda. Üçüncü rengi her karakterde farklı kullanabiliriz (renk belleğinde her karakter slotu için farklı renk tanımlayabildiğimiz için). Fakat daha sonra eğer grafiğimizi sağa sola yukarı aşağı hareket ettirirsek, renk belleğindeki değerleri de kaydırmamız gerekir. oysa grafiğimizi üç renkli (şeffaf rengi saymadan) hazırlarsak renk belleğini aynı üçüncü renk değeri ile bir kere doldurup bir daha da renklerle kafamızı yormadan devam edebiliriz.

Bu şekilde üç renkli grafikler bu sebeble, C64 oyun ve demolarında çok sıklıkla kullanılır.

NightNetwork - 2009