PUPNOKLAS C64 için Püf Noktaları VEDAT HALLAÇ Merhaba, | Bu ay makine dilinin püf noktaları köşemize oldukça ilginç ve ekran doldurucu özelliğe sahip olan bir rutinin açıklanmasıyla devam ediyoruz. Şu ana kadar verdiği- miz rutinlerin birleşmesiyle rahatlıkla bir intro yapabili- riz fakat rutinlerin hepsi aynı bellek alanında ve hepsi de interrupt'ı kendi amacı için kullanıyor. Bu problemleri nasıl halledeceğimizi ve açıkladığımız bütün programcı- lıkları nasıl birleştireceğimizi gelecek aya bırakıyorum. Bu ay açıklanacak olan rutin ekranın 2. satırından son satırına kadar olan bölgede onlarca yildizi değişik derin- liklerde kaydırıyor. İşin en ilginç tarafı 62 adet yıldızı sa- dece tek bir sprite kullanarak ve ekranı hiç etkilemeden kaydırması. Tabi ki bu rutin bir mucize yaratmıyor. Sa- dece C-64'ün sprite'ları konusunda ufak bir bilgiyi kul- lanıyor. Commodore sprite'larının en büyük özelliği, her- hangi bir satırda gösterilmeye başladıktan sonra yirmi- bir raster satırı boyunca o sprite'ın y koordinatına ne ya- parsanız yapın, sprite'ın tamamı gösterilmeden yeni bir yere geçemiyor. Bu sayede bir sprite'ı 20. raster satırına gösterip, 24. (mesela) raster satırında y koordinatını 41 yaparsanız ve 10. raster satırında bu değeri tekrar 20 ya- parâk bu işleme devam ederseniz, aynı sprite'tan alt alta iki tane elde edersiniz. Programımız da bu özelliği kul- lanarak 1. sprite'ı yaklaşık olarak 9 kere ekrana çıkarı- yor. Gerekli her noktada x koordinatını da ayarlayınca 62 tane yıldız ekranda rahatça gösterilebiliyor. Eh, bu kadar masaldan sonra programın nasil çalıştı- ğına bir göz atalım. Programın en başında, sprite dataları ayarlanıyor (sa- dece belli yerlere birer nokta koyuluyor.) ve bilinen yön- temlerle interrupt'lar ayarlanıyor. Interruptlar tam 42 ras- ter satırında (2. karakter satırı) başlıyor. Başta Lda — $DO15 Ora # $01 Sta $DO15 İlk iş olarak 1. sprite'ın gösterileceğinden'emin oluyo- rüz. (Diğer sprite'ların durumu ne olursa olsun, 1. spri- 2A te'ı açıyoruz.) Ldx — # $00 Kaç tane yıldız basılmış olduğunu x registerinde saklı- yoruz. Şu anda hiç yıldız yok... Ldy — #$44 Bekle Cpy — $012 Bne Bekle Yıldızların ilk görüneceği raster satırına kadar bekli- yoruz. Stiy — $DOOl İşte onca yıldızın görünmesini sağlayan hile burada giz- li. Eğer her üç satırda bir (sabredin, birazdan üç satırda bir olduğunu göreceksiniz) sprite'ın y koordinatına O ras- ter satırının değerini verirsek, sprite'ın gösterilmesi biter bitmez aynı sprite tekrar gösterilmeye başlar. Bu sayede istediğimiz kadar sprite'ı alt alta dizebiliriz. Lda — $COAA,X Sta $DOOO Lda — $DO10 And # $FE Ora — $CIGA,X Sta $DO10 SCOAA adresinde bulunan değerler, yıldızların anlık