Commodore sayı 59, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

X koordinatları. Bunları sırası geldikçe, doğrudan doğruya sprite'ların x koordinatlarına koyarak yıldızları değişik yerlerde gibi gösteriyoruz. Fakat bu arada düzeltmemiz gereken bir şey kalıyor. Biliyorsunuz $D010 adresinde x koordinatlarının 9. bitleri yer alıyor ve ancak bu biti kullanarak ekranın tamamında sprite gösterebiliyoruz. Bu yüzden her x koordinatı için bir de $D010 değeri ayarlamamız gerekiyor. Bu değerleri de $C16A adresinden okuyoruz.

Lda — $Cİ2A,X Sta $DO27

Yıldızların üç boyutlu olarak kaydıklarını söylemiştim. Bu efekti yaratmanın en güzel ve kolay yolu arkada olması gereken yıldızların rengini öndekilerden daha koyu yapmaktır. Bunun için de her yıldızın rengi adresinde bir tablo olarak saklanır.

Lda $COAA,X Ade — $COBA,X Sta $COAA,X

$C0FA adresinde her yıldızın x koordinatının artma miktarı, daha açık bir ifadeyle hızı saklanıyor. Bu sayede üç boyut efektini, arkada olması gereken yıldızları daha yavaş kaydırarak pekiştiriyoruz.

Lda $CIGA,X Ade # $00 And

Sta

Şimdi C16A'daki değerlere 0 eklemek de nereden çıktı? Eğer Adc komutuna bakarsanız, eklediği her sayıya bir de elde flag'ini eklediğini görürsünüz. Yani yıldızlar x -255'den daha büyük bir değer alınca elde bayrağı 1 olur ve bu sayede C16A,X'in değeri 1 artırılır. Bu adreslerin değerlerini 0 ve 1 ile kısıtlarsak (and #$01) yıldızlar 0-512 arasında bir x koordinatı alabilirler.

İny İny Iny

Bir sonraki yıldız, bunun üç raster satırı aşağısında olsun istediğimiz için, Y değeri üç kere artırılıyor. (daha değişik bir sayıda satır beklemek isterseniz, sprite datalarını değiştirin ve buradaki Iny sayısıyla oynayın. Sakın üç satırdan aşağı inmeyin, bu derece basit bir rutinle daha sık yıldız sürüsü elde edemezsiniz.)

Inx Cpx Bec Bekle Inc $DO19

Gösterilen yıldız sayısını bir artırıyoruz ve bu değer 62'den küçükse, bir yıldız daha gösteriyoruz. Eğer 62. yıldız da gösterildiyse, interrupt'tan çıkmaya hazırlanıyoruz. Şimdi de rutinin size söylemediğim sürpriz kısmına geldik. Eğer hâlâ bu yazıyı okuyorsanız bu özellikten yararlanabilecek kişiler arasında yer alacaksınız.

Ldx # $7D Ldy — #$69 Lda $CO4A Beg Atla Ldy Ldx $FD Atla Six $C0O79 Siy — $C082

Evet işte sürpriz rutinimiz burada. Eğer $C04A değerini değiştirirseniz sürprizimizle karşılaşırsınız. Artık bunun ne olduğunu ve nasıl yapıldığını anlamayı size bıra- Jmp $EA31 Ve işte o sihirli komutla interrupt'ı bitiriyoruz. Eğer bu rutinde yıldız hız ve renklerini değiştirmek isterseniz, yerlerini belirten şu basit listeye başvurun.

$C0AA-$C0E9; Yıldız koordinatları. $C0BA-$C129: Yıldız hızları. $C12A-$C169: Yıldız renkleri $C16A-$C1A9: Yıldız x koordinatlarının 9. bitleri.

Eh bu aylık bu kadarı yeterli olur sanırım. Gelecek ay görüşene kadar hepiniz hoşçakalın.

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