Commodore 64'ünüzün en ilginç ozellıklerınden biri hiç kuşkusuz cinlerdir (sprites). Ekran cinleri ken yaratabileceğiniz ve diğer ekran ıçerıklerınden ve birbirlerinden bağımsız hareket ettirilebilen grafik dizaynlardır. Ekranda bir defasında toplam 8 ekran cini sergilenebilir. D 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 ola- rak 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 fonk- siyonlar VIC (Video kontrolü 6567) ve sicillerinin yardımıyla kolayca gerçek- leştirilebilir. Ancak önce ekran cinle- rinin yapısına bir göz atalım. Daha önce de söylediğimiz gibi bir defasındea 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 bo- yunca eşlik edecektir. Her normal ekran cini 504 noktadan oluşur. Bu 504 nokta birbirlerinden ba- ğımsız olarak kontrol edilir ve değer- leri tekrar tekrar değiştirilebilir. Bunun için 24x21'lik bir nokta matrisi kulla- nılır. Bu yüzden her ekran cini 24 nok- ta genişlikte ve 24 nokta yükseklikte- dir. Bu mafris içerisinde çeşitli grafik- ler ya da şekiller yaratabilirsiniz. Cin Tasarlamak O halde nasıl var edeceğiz bir ci- ni? Tanımlayarak... Cinleri tanımla- mak zor zanaaittır.Bu yüzden okurları- mıza biraz sabırlı olmalarını tavsiye edeceğiz. Her cinin bellekte 24 x21 nokta ola- rak saklandığını söylemiştik (eğer çok renkli ise 12x21). Her noktaya bir bit tekabül ediyor (çok renklide 1 nokta- ya iki bit). 8 bit bir bayt oluşturduğu- na göre cinin kapladığı toplam ala- nın eni 24/8-3 bayfttır Cini tanımlamanın ilk adımı bu tab- lodaki hangi noktaların (karelerin) ha- rekete geçirileceğine karar vermek. Basit bir örnek olsun diye adam şek- lindeki bir cin üzerinde karar kılalım. Bu şekilde ilk harekete geçmiş nok- tanın 2. satırda 2. blokta dördüncü (numaralarına 0'dan başladığı için 3 no. ile gösterilen) nokta. Yani bU SO- tırda 2. bloğu 00004000 şeklinde gös- terebiliriz. Bunun ondalık karşılığı ise 8 (sanırım daha önce anlamadıysanız şimdi anlamışsınızdır: Şekildeki 2. sa- tı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 bi satırda ikinci bloğun aldığı değer 00 1 1000. Bunun on- dalık karşılığı 16484 4-28 ilk. Böylelikle bütün satırları tarayarak adam şeklindeki cinimizin bellekte hangi noktaları harekete geçirilmesiy- le yaratılacağını şematize etmiş olu- yoruz. 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? Bizirn kullandığımız 24 x 21'lik mafris her rastgele herhangi 504 bellek nok- tası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 yaza- bildiğimiz belleğin) herhangi bir böl- gesini kullanabiliriz. Ama sık kullanı- lan, trafiği sıkışık bir bölge seçecek olursak, başka bir işlem bizim yazdık- larımızı değiştirip ekran cinimizi yok edebilir. Bunun için RAM'ın ücra bir kö- şesını kullanmakta yarar vardır. RAM'- ın “en tepedeki” 13. öbeğinden baş- layan bölgesi böyle bir bölgedir. İlk 12 öbeği İse işlemci kendi ıhîıyaçlorı için kullanılmaktadır. “Öbek” demek? Tam olarak biz de onloycı— madık ama, anlaşılan bellek bölge- lerini saymakta kullanılan bir terim. 1 öbek— 64 bayt . Yani ilk ekran ci- nimİzi (O numaralı olanı) 13 x64- 832 numaralı bellek noktasından başlaya- rak depo[oyocagı Ama işimiz daha bitmedi. Bilgisaya- Ta da cin tasarımımızı oraya yerleştir- diğimizi söylememiz gerekiyor. Bu bil- commodore |