Bu sayfadaki yazılar
Sayfanın metni
Sayfa 18
$0300-$033F : Kullanmayın. Çünkü burada işletim sistemi tarafından kullanılan vektörler vardır. Eğer kullanırsanız istenmeyen sonuçlar çıkacaktır.
$0340-$03FF : Kullanabilirsiniz. Üç sprite için yeterlidir. $0400-$07FF : Ekran belleği ve sprite göstergeçleri vardır. Kullanamazsınız. $0800-$3FFF : İstediğiniz gibi kullanın. Kod, müzik, grafik, text, sprite data vs..
Yukarıdaki adreslerden $02C0-$0300 ve $0340-$03FF aralarını her zaman kullanabilirsiniz.
SPRITE OLUŞTURMA
Bir sprite için 63 byte gerekli demiştik. Bir byte 8 bitten oluştuğu için 63*8=504 tane bitten hangilerinin açık hangilerinin kapalı olacağını belirleyerek sprite’ımıza istediğimiz şekli verebiliriz. Daha sonra bu bitlerin durumuna göre her byte’ın değerini hafızadaki ilgili adreslere yazdığımızda sprite’ımız kullanılabilir hale gelmiş olacaktır.
Çizdiğiniz sprite’ın datalarını hesaplamak için işaretlediğiniz noktalar için “1”, işaretlemedikleriniz için ise “0” değerini, tablodaki “değer” satırındaki değerlerle çarpmanız ve sonuçları toplamanız gerekmektedir. Yani bir byte’ın değerini bulmak için (bit numarası * değer) çarpımlarını toplayacaksınız. Aslında yaptığınız işlem ikiliden onlu sayıya çevirme işlemidir. Bu çevirme işlemi derginin 1. sayısında anlatılmıştır. Bir sprite için 63 adet sayı elde etmeniz lazımdır.
Bitler
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Değer 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1
Satır
0. Satır
1. Satır
2. Satır
3. Satır
4. Satır
5. Satır
6. Satır
7. Satır
8. Satır
9. Satır
10. Satır
11. Satır
12. Satır
13. Satır
14. Satır
15. Satır
16. Satır
17. Satır
18 Satır
19 Satır
20
Sprite tasarlama tablosu. Fotokopi çektirin ve kullanmaya başlayın.
Klavyeyle gezinmek için ← ve → tuşları.
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.