C64 Türkiye sayı 6, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

BİT ÇİFTİ AÇIKLAMA 0 0 Saydam, ekran rengi 0 1 0 numaralı çok renkli mod sprite registeri ($D025-53285) 1 0 Sprite renk registeri 1 1 1 numaralı çok renkli mod sprite registeri ($D026-53286)

SPRİTE’LARIN GENİŞLEMESİ

Sprite’ların X ve Y eksenlerinde 2 kat büyüme özelliği vardır. Bir sprite’ı X ekseninde 2 kat büyütmek için $D01D (53277), Y ekseninde 2 kat büyütmek için ise $D017 (53271) adresleri kullanılır. Her sprite için bir bit ayrılmıştır. Eğer bit “1” ise o sprite geniş olarak görüntülenir.

lda $d01d eor #$değer sta $d01d

lda $d017 eor #$değer sta $d017

SPRITE KOORDİNATLARI

Sprite’ları ekranda göstermek için iki koordinata ihtiyacımız vardır: X ve Y koordinatları. VIC’in ilk 16 registeri X, Y sırasında olmak üzere 8 sprite’ın X ve Y koordinat değerlerini tutar. X koordinatlarıyla ilgili olarak bir registerimiz daha vardır. Bu registerin her biti bir sprite için ayrılmıştır ve “EXB” (Extra X Bit) olarak bilinir.

C64’ün ekran çözünürlüğü 320x200 olup, bir sprite’ın X koordinat değeri 255’ten büyük olabilir. Oysa X ve Y koordinatlarını tutan registerler en fazla 255 olabilir. 255’ten büyük X koordinat değerleri için $D010 adresinde her sprite için bir bit ayrılmıştır. Böylece X koordinat değeri 0-511 arasında olabilir. Y koordinat değeri ise 0-255 arasında olabilir. Aslında genişletilmemiş sprite’lar için ekranda tam olarak görüntülenebildiği koordinatlar minimum X,Y ($18-24, $32-50), maksimum X,Y ($140-320, $E5-229)’dur. Genişletilmiş sprite’lar için minimum X,Y ($18, $32) maksimum X,Y ($128-296, $D0-208)’dir.

$D000 – 0. Sprite için X koordinatı $D001 – 0. Sprite için Y koordinatı $D002 – 1. Sprite için X koordinatı $D003 – 1. Sprite için Y koordinatı $D004 – 2. Sprite için X koordinatı $D005 – 2. Sprite için Y koordinatı $D006 – 3. Sprite için X koordinatı $D007 – 3. Sprite için Y koordinatı $D008 – 4. Sprite için X koordinatı $D009 – 4. Sprite için Y koordinatı $D00A – 5. Sprite için X koordinatı $D00B – 5. Sprite için Y koordinatı $D00C – 6. Sprite için X koordinatı $D00D – 6. Sprite için Y koordinatı $D00E – 7. Sprite için X koordinatı $D00F – 7. Sprite için Y koordinatı

$D010 – Sprite’lar için EXB adresi

SPRITE ÖNCELİKLERİ

Sprite’ların birbirlerine göre öncelikleri vardır. Aynı koordinatlarda bulunan iki sprite’dan numarası küçük olan önde gözükecektir. Yani mesela 0 ve 4 numaralı sprite’lar aynı koordinatlarda bulunuyorsa 0 numaralı sprite önde gözükecektir.

Aynı şekilde sprite’ların arka plandaki karakterlerle, grafiklerle olan önceliği $D01B adresindeki sprite-background öncelik registeri tarafından belirlenir. Adresin her biti bir sprite için ayrılmıştır. Eğer bir bitin değeri “0” ise sprite arka plandaki karakterlerin, grafiklerin önünde gözükecektir. Eğer “1” ise sprite karakterlerin, grafiklerin arkasında gözükecektir.

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