Commodore sayı 14, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

PROGRAM ADI

: SPRIİTE DEMO 2 duk. Bir ufak tavsiyemiz var. Özellikle monitörü olmayıp da normal televizyon ekranı kullanan arkadaşlar için. Tek renkli sprite dizaynı yaparken, sağı ve solu boş olan tek noktalar kullanmaktan kaçının. Bunları ekranda görmeniz çok zor olacaktır. Yanyana iki nokta daima daha iyi görüntü verecektir. Bu tamamen video sinyallerinin teknik özelliğinden kaynaklanan bir sorun. Çokrenkli sprite'ler için böyle bir sorun yok. Nasılsa her renk noktası iki kat genişlikte. Tüm bu işlemleri elde yaptığımızda, bir süre sonra alışkanlık kazanacaksınız. Ancak gene de, ben zahmete girmek istemiyorum derseniz, daha önceki sayılarımızda yayınladığımız sprite editörlerini kullanmanızı tavsiye edebiliriz (Sayı 6, Sayı 9). Sıra geldi bu 63 byte'ı nereye yerleştireceğimize. Bu yerleşim bölgelerinin her biri *blok”' adı ile bilinir ve 64'er byte'lık alanlardır. Tabii bize 63 byte gerektiği için, 64. byte'ın bir anlamı olmayacaktır. VIC'in bir defada hafızanın 16K'lık bölümünü görebildiğini ve C64'ün 64K'lık hafızasının bu nedenle BANKO-BANK3 isimleriyle tanımlanan dört hafıza blokuna bölündüğünü 12. ve 11. sayılarımızda belirtmiştik. 16K'yı, 256 adet 64 byte'lık par-

00010 V>53248:POKE E V*21,0 <161> 09020 INPUT "<CLROHIİZ CLR>" <a20> 00030 Alzi1k64 <061> 00040 FOR TO A:POKE AL*I, XT <033> 20050 POKE 2040,11:POKE <164> 00060 POKE <182> 00078 POKE 20080 POKE Vt*23,144:POKE 90090 POKE V4*21,144 <018> 00100 POKE V*4*37,7 <158)> 00110 POKE V*38,6 00120 POKE <127)> 00138 POKE <853> 90140 POKE V*4*1,100:POKE V4*5,108 09150 X2z255 <a24> 00160 POKE V4*0,0:POKE V*4,X2 <145> 00170 POKE V*4*30,0 <028> 00188 FOR TO 255 STEP HZ <a55> 00190 IF THEN 240 <044> 200200 X2-X2-1:POKE <058> 002106 POKE V*1,40x5IN<X0/30) 41100 <236)> 00220 POKE <114> 00230 NEXT <a240> 90240 FOR TO 255:POKE V*4*33,X:POKE 1,X-1:NEXT <149> 09250 POKE V4*30,0:PRINT "<HOME 631,ASCC"<HOME>"):POKE i 98,1 <113> 0920260 DATA 8,0,128,10,2,128,2,138,0,64,13 '6,5,80,168,21,84,32,93,117,33,1825 <114> “ 900270 DATA 125,101,253,127,103,253,123,10 | “3,173,123,103,173,123,103,173 00280 DATA 1İ23,103,173,123,103,173,123,10“ 93,253 <185> 00290 DATA 95,101,253,21,97,117,5,32,84

çalara ayırabilir ve bunları 0-255 arası numaralayabiliriz. Bilgisayar ilk açılışta BANKO'ı kullandığına göre, 64 byte'lik bloklarımızın başlangıç adresleri aşağıdaki gibi olacaktır.- -

BLOK BAŞLANGIÇ ADRESİ

0 80000 (0) 1 $0040 (64) 2 $0080 (128) 3 $00CO0 (192) 4 $0100 (256)

255 $3FCO (16320)

0-1 arası bloklar ve 12. blok, bilgisayar için hayati değeri olan bilgileri saklandığı bölgeye geldiği için kullanılmamaktadır. 16-32 arası bloklar için de bu sözkonusu. 33 ve sonra gelen bloklar, BASIC programlarınızın ve kullandığınız değişkenlerin saklandığı hafızaya denk geliyor. 11, 13, 14, 15 numaralı bloklar boş kaldığına göre onları kullanabiliriz. Yalnız dikkat etmeniz gereken nokta, 13-15 arası aynı zamanda teyp için tampon bölge olarak kullanılmaktadır. Dolayısıyla bu bölgeleri sprite için kullanır, sonra da teyp ile bazı işlemler yaparsanız, sprite tanımlamalarınız bozulacaktır.

Bir başka olanak da, normalde $0801 (2049) adresinde başlayan BA-SIC hafızasının başlangıç adresini, 43/44 numaralı hafızalarda değişiklik yaparak “yukarı' kaydırmaktır. Bilgisayar ilk âçıldığında, bu adreslerin değeri sırasıyla 1 ve 8'dir, 14 8*256- 2049 ettiğine göre, BASIC bölgesi 2049 ($0801) adresinden başlıyor demektir. Eğer biz POKE 44,10 yaparsak bu adresi 1 4 10*256 — 2561 adresine taşımış oluruz ve arada kalan bölge bize 8 yeni blok sağlar. Ancak bu POKE işlemi hafızada herhangi bir BASIC programı yokken yapılmalıyoksa programınız bozulur.

Veya 16K”'nın son kısımlarında yeralan blokları kullanabilirsiniz. Bu durumda dikkat etmeniz gereken şey, BASIC programınızın veya kullandığınız değişkenlerin bu bölgelere kadar uzanabilmesi durumunda tanımlamalarınızın bozulacağıdır. Buna da bir çözüm bulabiliriz. Nasıl ki, 43/44 adreslerinde BASIC başlangıç adresi bulunuyor, 55/56 adreslerinde de BA-SIC hafızasının tavanı tamamlanır. Bunu nasıl kullanabiliriz?.. Diyelim ki, 248-255 numaralı blokları kullanmak istediniz. 248 numaralı blokun başlangıç adresi, 248 x 64 — 15872 ($3E00) olduğuna göre BASIC hafızasının tavanını bu adrese getirip

| tanımlamalarımızı koruyabiliriz. Bu durumda 15872'yi küçük ve büyük byte olarak (bkz. Sayı 13, Süperassembler) ikiye ayırmamız gerekiyor. Bunlar, 62 ($3E) ve 0 ($00) değerleridir. Şimdi de POKE 55,0:POKE56,62 ile sınırı aşağı indirmiş oluruz. Son iki işlemin ortak iki noktası var. Her ikisinde de geri kalan BASIC kullanım alanı 38911 byte'dan daha az oluyor. Çünkü bunun bir kısmını sprite'lara feda ediyoruz. Bir başka nokta da, $1000-$1FFF (4096-8191) arasında bulunan 64-127 numaralı blokların hiç kullanılmaması gerektiği. Çünkü bu bölge, 12. sayımızda da sözünü ettiğimiz bölgedir. Ancak, şunu belirtmek gerekiyor. İki üç sprite kullanmanız gerekiyorsa, 11, 13, 14 ve 15 numaralı blokları kullanmanızda büyük fayda var. Hem kolaylık hem de hafıza kullanımı açısından. Üstelik birazdan da göreceğimiz gibi, iki değişik sprite aynı görüntüye sahip olacaksa, iki ayrı blok yerine tek blok kullanma imkânımız var.

DEMO 2 programımızda olduğu gibi.

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