C64 Türkiye sayı 6, sayfa 19

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 19

SPRITE GÖSTERGEÇLERİ

Sprite’larımızın hafızada hazır olduğunu varsayıyoruz. Bir sprite’ı ekranda göstermeden önce VIC’e sprite’ın hafızada bulunduğu yeri bildirmemiz gerekiyor. Bunun için ekran belleğinin ($0400-$07FF) son sekiz adresini ($07F8-$07FF) kullanacağız. Her sprite için bir adres ayrılmıştır. 8 tane sprite’ımız var ve bunları 0, 1, 2, 3, 4, 5, 6, 7 olarak numaralandıracağız. Bu durumda 0. sprite için $07F8, 1. sprite için $07F9 ..... 7. sprite için $07FF adresini kullanacağız. Eğer VIC bank’ını ve/veya ekran belleğinin yerini değiştirirseniz bu pointer adresleri de değişecektir.

Daha önce sprite datalarının hafızada 64’ün katları şeklinde olan adreslerde bulunması gerektiğini yazmıştık. Bir sprite datasının bulunduğu adresi 64’e bölüp sonucu o sprite’a ait pointer adresine yazarsak datayı VIC’e göstermiş oluruz.

SPRITE’LARI GÖRÜNTÜLEMEK

VIC’in $D015 (53269) numaralı registeri sprite’ların ekranda görünmesini veya kaybolmasını sağlar. Registerin her biti bir sprite için kullanılır. Bir sprite’a ait bit “1” yapılırsa ve koordinat değerleri görülebilen ekran sınırları içindeyse sprite ekranda gözükecektir. Eğer ilgili biti “0” yaparsanız sprite görünmez hale gelecektir. Hangi sprite’ı göstermek istiyorsanız o sprite’a ait bitin değerini $D015’e yerleştirilmelidir.

Bit 7 6 5 4 3 2 1 0 Değer 128 64 32 16 8 4 2 1

Diğer sprite’lara zarar vermeden istenilen bir sprite’ı göstermek için, göstermek istediğiniz sprite’ın bit değerini EOR komutu ile kullanın ve $D015 adresine yazın.

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

“EOR #$DEĞER” komutu bir tür anahtar gibi çalışır. Sprite açıksa kapatır, kapalı ise açar. Bu yöntem açma için “ORA” kapatma için “AND” komutu kullanmaktan çok daha iyidir, çünkü “ORA” ve “AND” komutları için kullanılan parametreler birbirinden farklıdır. Mesela 5. sprite’ı açmak için ORA #$20, kapatmak için “AND #$DF” komutunu kullanmanız gerekir.

Kontrol etmek istediğiniz sprite birden fazlaysa, bit değerlerinin toplamını EOR komutu için kullanırsınız.

SPRITE RENKLERİ

Her sprite için bir renk registeri ayrılmıştır ve bu adresler $D027-$D02E (dahil) (53287-53294) arasındadır. Sprite’ı tasarlarken işaretlenen bitler sprite renginde, işaretlenmeyen bitler ise saydam olup arkasında ne varsa o görüntülenecektir.

ÇOK RENKLİ SPRITE’LAR

Çok renkli modunda bir sprite kullanmak istiyorsanız $D01C (53276) adresini kullanabilirsiniz. Kullanılışı aynı $D015 adresi gibidir. Her sprite için bir bit ayrılmıştır. Çok renkli modda bir sprite göstermek istiyorsanız ilgili biti “1” yapmalısınız.

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

ÇOK RENKLİ MOD

Çok renkli modda bir sprite için 4 renk kullanma imkanı vardır. Fakat çok renkli moda geçtiğinizde yatay çözünürlük yarıya düşer. Artık yatayda 24 bit değil 12 bit çifti kullanabilirsiniz. Sprite’ı renklendirirken bu bit çiftlerinin durumuna göre renkler belirlenir.

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