Bu sayfadaki yazılar
Sayfanın metni
Sayfa 24
POKE V+16, PEEK (V+16) OR 1 Eğer sprite 4 geçiyorsa, o zaman: POKE V+16, PEEK (V+16) OR 16 Sprite 0'ı geriye döndürürken:
POKE V* 16, PEEK (V 4 16) OR 254
Sprite'ları konumlarken dikkat edilmesi gereken başka bir nokta da ekrandan kaybolmalarını isteseniz bile sadece belli sınırlar içinde görülebilir olmalarıdır. Bu sınırlar yani sınır parametreleri gösterim boyutlarına ve sprite'ın genişletilmiş olup olmadığına göre değişir.
SPRITE HAZIRLAMA TEKNİĞİ
Sprite'lar başka bir deyişle kendi dizayn ettiğiniz özel hareket edebilir objelerdir. Dizayn işleminden sonra bilgisayar sprite'ı hareket ettirmenize, diğer sprite'lar veya grafiklerle çarpışmaları izlemenize hatta önceliklerini yani hangi sprite'ın diğerinin önünde hareket edeceğine kadar belirlemenize yardım eder.
SPRITE DİZAYNI
Herhangi bir sprite 63 bayt bellek kullanır. Bunu her sırası yanyana üç bayt'tan oluşan 21 adet sıra olarak ifade edebiliriz. Bir bayt'ta sekiz pozisyon olduğunu bildiğimizden her sırada 24 (3 bayt x 8) boşluğumuz olduğu ortaya çıkar. Yani sonuçta bir sprite 24 x 21 noktadan oluşan bir şekildir. Kareli defterlerinizden 24 x 21'lik bir kısmı işaretleyin. Bu sprite'ınızı ifade edecek bir grid olacaktır. (Şekil - 1) Şimdi grid'i her birinde 8 kare olacak şekilde 3 eşit sütuna bölen çizgilerle ayırın. (Şekil - 2) Bu çizgiler daha sonra DATA ifadeleri için gereken bayt değerlerini hesaplamakta kullanılacak. İlk sıra ve ilk sütun şimdi şu şekilde görülecektir: (Şekil - 3) Tabii diğer 62 adet grafik (bayt) de aynı bu şekilde gözükecektir. Sprite'ın istediğiniz kısımlarını işaretlemek v.b.
Sıra 1
Sıra 2
Sıra 3
Sıra 4
(Şekil - 1)
Sıra 1 İ
Sıra 2
Sıra 3
Sıra 4
(Şekil - 2)
Sıra 1
Sıra 2
Sıra 3
Sıra 4
Sıra 1
(Şekil - 3)
Sıra 2
Sıra 3 veya açmak için, 63 bayt'ın her biri için bir DATA ifadesi yazarsınız. Eğer ilk sıranın şu şekilde görünmesini istiyorsanız: (Şekil - 4) Aşağıdaki gibi bir DATA ifadesi yazmalısınız:
Sıra 4
DATA 63,255,192
Bu şekilde kareli kâğıt üzerinde sprite'ınızı dizayn edip her sprite için bilgisayarın istediği 63 bayt'ın değerlerini hesaplayın.
SPRITE'I BELLEKTE SAKLAMA
Sprite'ı çizip DATA ifadelerini hesapladıktan sonra bu data'yı belleğe POKE etmelisiniz. Sprite'ları aşağıdaki tabloda gösterilen bellek alanlarına rahatça yerleştirebilirsiniz. Bu iş için başka alanlar da kullanılabilir, ancak bu iş için bellekte yer ayırmalısınız. Bunu yapan bir rutin için 55 ve 56 adreslerine bakın. (Şekil - 5) Eğer programlarınızı saklamak için teyp kullanıyorsanız # 13, # 14 ve 15 nolu pointer'ların gösterdiği adreslerin program yüklenirken veya saklanırken kullanıldığını hatırlayın. Bu iki işlem arada saklanan sprite data'sının değişmesine neden olur. Bu işlemlerden sonra sprite'lar datalardan tekrar okunup belleğe POKE edilmelidir. Sprite datasını belleğe POKE etmek için FOR/NEXT döngüsünü kullanın; örneğin: (Program - 2)
(Şekil - 4)
SPRITE POINTER'LARINI AYARLAMA
Her sprite'ın bilgisayara sprite'ı ekrana koymak için gereken datayı nereden alacağını anlatan bir adresi vardır. Sprite pointer'ları 2040-2047
(Şekil - 5) ADRES DATA (A) 832 13 896 14 960 15 12288 192 12352 193 12416 194 12480 195 12544 196 12608 197 12672 198 arasındaki adreslerdir ve 0'dan 7'ye kadar olan sprite'lara işaret ederler. Eğer 960 nolu adresteki sprite 0 için POKE ediyorsanız o zaman:
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 25
POKE 2040, 15
Doğru data pointer'larını bulmak için yukarıdaki tabloya bakın. Tabloyu kullanmak istemiyorsanız, data'nın bulunduğu adresi 64'e bölün.
960/64-15
Eğer 4 sprite'ın birbirinin aynısı olarak gözükmesini istiyorsanız, datayı bir kere POKE edin ve 4 sprite'ın pointer'larını aynı yeri gösterecek şekilde ayarlayın. Aşağıdaki rutin, 0, 1, 2 ve 3 nolu sprite'ları birbirlerinin aynısı olarak gösterir.
100 FOR 1—2040 TO 2043 110 POKE I, 15 120 NEXT I
RENK SEÇİMİ
Sprite'ınızı belleğe yerleştirdikten sonra sıra sprite'ın ne renk olacağına karar vermelisiniz. Her sprite'ın başta bilgisayar tarafından belirlenen kendi rengi vardır. Eğer bunu değiştirmek isterseniz aşağıdaki tablodan bir renk seçin ve sprite rengi adreslerine (55287-55294) POKE edin.
(Şekil - 6)
Sprite Orijinal Renkler
White Red Cyan Purple Green Blue Yellow Grey 2
RUN—O
ÇOK-RENKLİ SPRITE'LAR
Çok-renkli sprite'lar daha ileri bir teknikle meydana geliyor. Bu modda sprite data'sı daha farklı bir şekilde okunmakta. Çift bit'ler olarak okunan bayt'larda her bit çiftinin bir anlamı vardır. (Şekil - 7)
(00
.. 10
76) 5 4| (3 2
A B C D
A: Bit çifti bilgisayara, gereken rengi sprite renk sicilinden (55287'den 55294'e kadar, üzerinde çalıştığınız sprite'a bağlı) almasını söyler. B: Ekran rengi. C: Çok-renklilik sicili # 0 olan 53285'e POKE edilecek renk değeri. D: Çok-renklilik sicili # 1 olan 53286'nın rengi. Aşağıdaki program sprite'ı standart moddan multicolor moduna çeviriyor. (Program - 3) Sprite programlamanın öncelikler, çarpışma kontrolü gibi diğer özellikleri de oldukça basit. Kullanımları konusunda daha fazla detayı ilgili adreslere geldiğimizde vereceğim. Şimdilik öncelikler konusunda 0'ın otomatik olarak en öncelikli sprite olarak ayarlandığını ve 1'den 7'ye kadar olan sprite'ların önünden geçeceğini, diğerlerinin ise benzer bir hiyerarşi ile (1'in 2'den önünden 2'nin de 3'ün önünden geçmesi vb.) geçtiğini bilin. Ayrıca bütün sprite'lar arka plandaki grafiğe göre önceliklidirler. Eğer herhangi bir sprite'ın önceliğini değiştirmek isterseniz buna uygun sprite öncelik sicilini (adres 53275) ayarlamalısınız. Çarpışma kontrolü de bundan zor değil. Sprite çarpışma sicilleri (53278-
53279) herhangi bir çarpışma durumunda bit'leri 1 değerini alan salt okunabilir sicillerdir. Çarpışmayı kontrol etmek kolay bir olaydır, ancak bu kontrolü kodunuzda stratejik olarak, yani asıl önemli hareket döngüsü içinde yapmalısınız. Çarpışmalar bir satırla belirlenebilir. Sprite - Sprite çarpışması için:
IF PEEK (53278) AND X THEN (NE YAPMAK İSTİYORSANIZ)
Sprite - Arkaplan çarpışması için: IF PEEK (53279) AND X THEN ...
Burada X çarpışma sicilindeki bit'in ondalık değeridir. (Şekil - 8)
SPRITE* BIT DEĞER 0 0 1 1 1 2 3 2 4 3 3. 8 4 4 16 Bİ 5 32 6 6 64 7 7 128
Çok özlü biçimde bir sprite'ı nasıl yaratabileceğinizi bir algoritma olarak veriyorum. 1. bölümün A kısmı yazdığınız bütün programlar için geçerliyken kalan kısım sprite'larla ilgilidir. * ile işaretli olanlar kullanım bilginize ve sprite'larınızın nasıl görünmesini istediğinize bağlıdır. Onlar olmadan da sprite yaratıp hareket ettirebilirsiniz.
SPRITE ALGORİTMA ŞEMASI
1. PROGRAMIN DÜZENLENMESİ A) Programın Parametrelerini Bildir 1. Ölçüm dizileri a. tam sayı b. yazı c. gerçek 2. Değişmez ve değişkenleri ayarlama. B) Sprite Parametrelerini Bildir 1. Değişmezleri ve değişkenleri sprite'lara uygun olarak ayarla a. VIC+53248'in başlangıç adresi. *2. Ekranı kapat (POKE VIC+17,11) 3. Sprite datasını sakla a. data pointerlerini ayarla (adr. 2040 - 2047) b. data'yı okumak için
25