Bu sayfadaki yazılar
Sayfanın metni
Sayfa 91
Tabii burada bir hareket için Y değerlerini For Next döngüsü ile artırıp azaltmak lazım ama örnekleri en sona bırakıyorum. Hemen bir örnek yapmak isteyenler yapabilir. Zorlanırsanız kullanma kılavuzundaki örnekleri inceleyin. YATAY KONUMLAMA: Yatay yönde konumlama biraz daha karışık çünkü bu sefer 256'dan fazla değerlere sahipsiniz. (Hemen aklınıza bir register'in 255'ten fazla bir değer ile yüklenemeyeceği geliyor) Bu durumda X konumunu kontrol eden fazladan bir 9. Bit'iniz var. Gerektiğinde bu biti de ekleyerek 512 olası konum sağlamış olursunuz. Her yaratık 0'dan 511'e kadar olan tüm konumlarda olabilir. Bu değerin yalnızca 24 ile 343 arasındaki değerleri alanlar ekranda görülebilirler. Eğer bir yaratığın X konum değeri 255'ten (ekranın sağ tarafına eşit) büyükse, X konumunun en soldaki biti konumu (X'in en soldaki bit registeri (Register'larda üçüncü olan (hatırlayın))) registerinin değeri 1 olmalıdır. Eğer bir yaratığın X konumu 256'dan küçük ise (ekranın sol tarafına eşit) o zaman da X'in en soldaki bit registerinin değeri 0 olmalıdır. Bunları daha da basite indirgemek için Soldaki X pozisyonu seçimi ve Sağdaki X pozisyonu seçimi diye ikiye ayıralım. Her iki kısımda 0'dan 255'e kadar toplam 256 değer alabilir. Aşağıda belirteceğim değerler ile kolay yoldan X ekseni üzerine yerleştirme yapmanız mümkün.
Soldaki X Pozisyonu Seçimi:
POKE V40,X : Sprite 0 POKE V42,X : Sprite 1 POKE V44,X : Sprite 2 POKE V<46,X : Sprite 3 POKE V48,X : Sprite 4
POKE V-4-10,X : Sprite 5 POKE : Sprite 6 POKE :Sprite 7
Sağdaki X Pozisyonu Seçimi: POKE POKE V40,X : Sprite O POKE V--16,2:POKE V4-2,X : Sprite 1 POKE V-4-16,4: POKE V-44,X : Sprite 2
POKE V-4-16,8: POKE V4-6,X : Sprite 3 POKE V-4-16,16: POKE V-4-8,X : Sprite 4 POKE V-4-16,32: POKE V4-10,X: Sprite 5 POKE V--16,64: POKE V4-12,X: Sprite 6 POKE V-4-16,128:POKE V414,X: Sprite 7
YARATIKLARIN GÖRÜNME ÖNCELİKLERİ: Sprite'lar ekranda birbirlerinin önünden ve arkasından geçebildikleri gibi birbirlerinin yollarını da kesebilirler. Her bir yaratığın birbirine göre bir görüntü önceliği vardır. Burada bilinmesi gereken en önemli nokta düşük numaralı sprite'ların yüksek numaralı olanlarına göre görüntü önceliği vardır. Bunu bir örnekle belirginleştirmeye çalışırsak ekrana gelen 0 numaralı sprite görüntü önceliği en fazla olan sprite'dır. Yani 1 veya daha yüksek numaralı bir sprite ile üst üste geldiğinde ekranda karmaşık sprite'lar değil, yalnızca 0 numaralı sprite görünür.
Aynı şekilde 1 numaralı sprite'ın 2'ye, 2'nin 3'e vb. öncelik hakları vardır. Altta kalan sprite'ın görünmesi ancak ve ancak yukarıda bulunan yüksek öncelikli sprite'ın 1'e eşitlenmemiş yani On durumunda olan bölgelerinde mümkün olur. Bu kısımlarda altta kalan sprite gözükür. Bu ilginç özelliği kullanarak bir çok değişik efekt kullanmak size kalmış.
Bu aylık da bu kadar. Bir dahaki aya kadar bütün bu yazılanları iyice okuyarak anlamaya çalışın. Konuyla ilgilenenler mutlaka ama mutlaka kendilerine bir sprite editör edinsinler. Sorularınızı ve sorunlarınızı bana yazabilirsiniz. Adres aşağıda. Bir dahaki aya kadar hoşça kalın... BARIŞ YALÇINKAYA PK. 205 BEŞİKTAŞ /İSTANBUL
Fa BE FE HE EE BEİ
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 90
Selam programcılar !!!.... Basic'te Sprite'lar bölümünün ikinci kısmı ile yine ay anlatılanları sanırım hepiniz anladı. Eğer zorluk çekenler varsa karışık terim ve bir takım rakamlardan korkmasınlar. Ben yazılarımda hem Basic hem de makine dilinden bir parça makine dili bilenleriniz anlattıklarımla bu dilde de rahatlıkla sprite'lar ile boğuşabilirler. Evet hemen derse başlayalım. YARATIKLARIN EKRAN ÜZERİNDE YERLEŞTİRİLMESİ: Bir yaratığı oluşturdunuz ve hafızaya yerleştirdiniz. Şimdi sırada o yaratığı ekrana basmak ve hareket ettirmek var. Commodore 64'ünüz bu işlem için üç ayrı register'i kullanacaktır. Bu register'lar:
- Yaratığın X Konum Register'i - Yaratığın Y Konum Register'i - X'in En Soldaki Bit'inin Register'i
Her yaratık bu üç register'a sahiptir. Bu üç register sayesinde yaratıklarınız ekranda olası 512 X ve 256 Y konumunda eksiksizce konumlandırılır. X ve Y konum register'larıdır ve birlikte çalışırlar. Bu sebeple bellek haritasında bir arada peşi sıra yer alırlar. Yani 0 numaralı yaratık için X registeri, yine aynı yaratık için Y registeri; daha sonra 1 numaralı yaratık için X registeri, sonra Y ve bu sıra ile devam eder. Toplam 16 tane olan X ve Y register'larından sonra X konumunun en solda bulunan biti kendi register'ini yerleştirir. Bu değerler hafızada 53248 ($D000) adresinde başlayıp 53264 ($D010) adresinde sona erer. Konumlamada bilmeniz gereken bir özellikte yaratığın tanımlandığı 24 X 21 noktalık alanının sol üst köşesinden sprite'ı konumlandırabileceğimizdir. Burada sol üst köşeyi kullanıp kullanmadığımız veya sprite'ı kaç nokta kullanarak çizdiğimiz önemli değildir. Daima sol üst köşe dikkate alınarak yerleştirme yapılır. Şimdi dikey ve yatay hareketlendirmeleri ayrı ayrı inceleyelim. DİKEY KONUMLAMA: Ekranda her birini tek tek programlayabileceğimiz 200 nokta vardır. Bilindiği gibi bir register 255'e kadar herhangi bir değer alabildiğinden herhangi bir değeri içerebilir. Elde edilen 55 fazla değerde yaratığımızı aşağı ve yukarı hareket ettirirken gerekenden fazla register yerleşimine sahip olduğumuz anlamına gelir. Bu arada yaratığımızı yavaşça ekrandan çıkıp kaybolmasını isteyebiliriz tabii. Böyle bir işlem içinde 200'den fazla değere sahip olmalıyız zaten. : Ekranın üst kısmından itibaren ilk değer normal boyutta yani genişletilmemiş bir sprite için 30'dur. Y yönünde genişletilmiş yaratıklar içinde bu değer 9'dur. Ekranda tamamı gösterilmek istenen genişletilmiş veya genişletilmemiş bir yaratığın ilk Y değeri 50'dir. Yine genişletilmemiş bir yaratığın ekranda görünmesini sağlayan en son Y değeri 229, bu sayı genişletilmiş yaratıklar için 209'dur. Tamamen kaybolma gibi bir durumda ise alınacak ilk Y değeri 250 olur. Aslında bunları daha fazla belirtmeye lüzum yok zira siz kendiniz değerler vererek istenen yeri tam olarak saptayabilirsiniz. Şimdi daha acemi olanlarınız için kısa bir öz bilgi olan Y değerini örnekle belirtelim. Y değerleri hafızaya yerleştirilirken 53248 adresine yaratık numarası eklenerek yerleştirilir. Yani: POKE 53248+2*1,Y gibi. Tabii 53248 değerini her zaman kullanacağımızdan bunu bir değişkene atarız. POKE Buradaki 1 sprite numarası yani 0 numaralı yaratığın Y pozisyonu seçiminde aldığı değer. Y ise 255'e kadar verebileceğiniz register yerleşim değeri. Tabii sprite numaraları sabit değil hep 2 artarak ilerliyor. Sebebi ise biraz önce söylediğimiz gibi register'ların X ve Y'leri birlikte almayıp, bir X bir Y sırasıyla değer almaları. Böylelikle numara verdiğiniz (Y değeri için) yaratık bir sonraki adreste X değerini alacaktır. Bu değerleri 53249, 53251 gibi değerler olarak alacağımıza değişkene atarak (53248 sayısını) basit bir toplamla daha anlaşılır bir hale getirebiliriz.
Vz53248 (Y Pozisyonu Seçimi) POKE V--1,Y : Sprite 0 POKE V--3,Y : Sprite 1 POKE V--5,Y : Sprite 2 POKE : Sprite 3 POKE V--9,Y :Sprite 4 POKE V--11,Y: Sprite 5 POKE V--13,Y: Sprite 6 POKE V--15,Y: Sprite 7
Sanırım dikey konumlama anlaşıldı.