Commodore sayı 5, sayfa 6

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 6

Commodore 64'ünüzün en ilginç özelliklerinden biri hiç kuşkusuz cinlerdir (sprites). Ekran cinleri kendi yaratabileceğiniz ve diğer ekran içeriklerinden ve birbirlerinden bağımsız hareket ettirilebilen grafik dizaynlardır. Ekranda bir defasında toplam 8 ekran cini sergilenebilir.

Ekran cinleri renklerini, boyutlarını, fon karakterleri ve birbirlerine göre önceliklerini değiştirebilirler. İki ekran cini arasındaki ve ekran cinleriyle fon arasındaki çarpışmalar otomatik olarak saptanır. Üstelik her ekran cini için — normal — çok renkli ekran cini modları arasında seçim yapma imkanınız vardır. Tüm bu fonksiyonlar VIC (Video kontrolü 6567) ve sicillerinin yardımıyla kolayca gerçekleştirilebilir. Ancak önce ekran cinlerinin yapısına bir göz atalım. Daha önce de söylediğimiz gibi bir defasında ekranda aynı anda sekiz farklı ekran cinini sergileyebilirsiniz. Her ekran cinine özel bir numara (0-7) ayrılmıştır; bu numara ekran cinine kullanmakta olduğunuz program boyunca eşlik edecektir. Her normal ekran cini 504 noktadan oluşur. Bu 504 nokta birbirlerinden bağımsız olarak kontrol edilir ve değerleri tekrar tekrar değiştirilebilir. Bunun için 24x21'lik bir nokta matrisi kullanılır. Bu yüzden her ekran cini 24 nokta genişlikte ve 21 nokta yüksekliktedir. Bu matris içerisinde çeşitli grafikler ya da şekiller yaratabilirsiniz.

Cin Tasarlamak

O halde nasıl var edeceğiz bir cini? Tanımlayarak... Cinleri tanımlamak zor zanaattır. Bu yüzden okurlarımıza biraz sabırlı olmalarını tavsiye edeceğiz. Her cinin bellekte 24 x 21 nokta olarak saklandığını söylemiştik (eğer çok renkli ise 12x21). Her noktaya bir bit tekabül ediyor (çok renklide 1 noktaya iki bit). 8 bit bir bayt oluşturduğuna göre cinin kapladığı toplam alanın eni 24/8=3 bayttır.

Cini tanımlamanın ilk adımı bu tablodaki hangi noktaların (karelerin) harekete geçirileceğine karar vermek. Basit bir örnek olsun diye adam şeklindeki bir cin üzerinde karar kılalım.

« 3. Block 2. Block 1. Block * 8 2 64 32 16 8 4 2 1 64 32 16 1 0,0,0 2 0,8,0 3 | 0,28,0 « 1 0,28,0 5 0,28,0 | 6 0,8,0 7 | 0,62,0 8 0,127,0 9 0,221,128 10 0,156,128 11 0,156,128 12 0,156,128 13 | 0,62,0 14 0,54,0 15 0,34,0 16 0,34,0 17 0,34,0 18 0,34,0 19 0,99,0 20 0,0,0 21 | 0,0,0

Bu şekilde ilk harekete geçmiş noktanın 2. satırda 2. blokta dördüncü (numaralarına 0'dan başladığı için 4 no. ile gösterilen) nokta. Yani bu satırda 2. bloğu 00001000 şeklinde gösterebiliriz. Bunun ondalık karşılığı ise 8

(sanırım daha önce anlamadıysanız şimdi anlamışsınızdır: Şekildeki 2. satırdaki 128, 64, 32, 16, 8, 4, 2, 1 gibi sayıların ne anlama geldiğini). 2. satırdaki yanık noktalar ise, 4. 5. 6. noktalar; yani bu satırda ikinci bloğun aldığı değer 00111000. Bunun ondalık karşılığı 16+8+4=28'dir. Böylelikle bütün satırları tarayarak adam şeklindeki cinimizin bellekte hangi noktaları harekete geçirilmesiyle yaratılacağını şematize etmiş oluyoruz. Sonunda yazacağımız programda bu değerleri bilgisayara bir dizi DATA komutuyla girmek işten bile değil (bkz. döküm).

Cin Belleğin Neresinde?

Bizim kullandığımız 24 x 21'lik matris her rastgele herhangi 504 bellek noktasını temsil ediyordu. Bunları belleğin neresine yükleyeceğiz? Yani hangi gerçek bellek noktalarını kullanacağız? Aslında ilk önce RAM'ın (bizim yazabildiğimiz belleğin) herhangi bir bölgesini kullanabiliriz. Ama sık kullanılan, trafiği sıkışık bir bölge seçecek olursak, başka bir işlem bizim yazdıklarımızı değiştirip ekran cinimizi yok edebilir. Bunun için RAM'ın ücra bir köşesini kullanmakta yarar vardır. RAM'ın “en tepedeki” 13. öbeğinden başlayan bölgesi böyle bir bölgedir. İlk 12 öbeği ise işlemci kendi ihtiyaçları için kullanılmaktadır. “Öbek” mi ne demek? Tam olarak biz de anlayamadık ama, anlaşılan bellek bölgelerini saymakta kullanılan bir terim. 4 öbek = 64 bayt. Yani ilk ekran cinimizi (0 numaralı olanı) 13 x 64 = 832 numaralı bellek noktasından başlayarak depolayacağız. Ama işimiz daha bitmedi. Bilgisayara da cin tasarımımızı oraya yerleştirdiğimizi söylememiz gerekiyor. Bu bilginin 2040 numaralı bellek noktasından başlayan bellek noktalarına girilmesi gerekiyormuş (Nereden ille de 2040 biz de anlamadık). O halde daha verileri girmeye başlamadan önce

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