64'ler sayı 51, sayfa 90

Bu sayfadaki yazılar

Sayfanın metni

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ı.

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