PROGRAM ADI : SPRİTE DEMO 2 20018 g=53ğ18:POKE V4*32,0:POKE V4*33,0:POK 29020 thUT "<CLROHIZ <1-10)"; CLR> uk. Ş Bir ufak tavsiyemiz var. Özellikle monitörü olmayıp da normal televiz- yon ekranı kullanan arkadaşlar için. Tek renkli sprite dizaynı yaparken, sa- Bi ve solu boş olan tek noktalar kul- lanmaktan kaçının. Bunları ekranda görmeniz çok zor olacaktır. Yanyana iki nokta daima daha iyi görüntü ve- recektir. Bu tamamen video sinyalle- rinin 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ız- da, bir süre sonra alışkanlık kazana- caksınız. Ancak gene de, ben zahme- te girmek istemiyorum derseniz, da- ha ö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 yer- leştireceğimize. Bu yerleşim bölgele- rinin 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 an- lamı 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ımla- nan 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- HZ:PRIİNT "< ; aa20> 290030 Aiz lllS <061> 80040 FOR I-0 TO Sa:READ A:POKE AL*I,ASNE XT <033> 20050 POKE 2040 11:POKE 2042,11i <164)> 00060 POKE V*28,114 <182> 0090786 POKE V027 1 <0390> 20080 POKE V*23,144:POKE V*23,144 - <aa00> 90090 POKE V*21,144 N <018> 68100 POKE V*37,7 <158> 00110 POKE V*38,6 <232>: 00120 POKE V*33,5:POKE V441,8 <127)> 00130 POKE V*16,0 g ” <053> . 90140 POKE V4*1,180:POKE V*4*5,100 <177> 00150 X2-255 ça24> 00160 POKE V*0,0:POKE V*4,X2 <145> 00170 POKE V+30 g <028> 00180 FOR XOz1 TO 255 STEP Z <a255> 60190 IF PEEK(V+30) 144 THEN <044> 002080 X2-X2-1:POKE V4*0O,X0: PDKE V+4,X2 <058> 00210 POKE V+l,4B*SIN(X0/30)+IEB <236> 00220 POKE V4*5,40x005<X0/30)4*100 <114> 00230 L <a48> O86240 FOR X-i TO 255:POKE V*4*39,X:POKE V*4 1,XK-1:NEXT <149> 09250 PÖKE V4*0,0:POKE Vt4*30,0: PRINT " <HOME » YRUN" :POKE 631 ,ASC(" <HOME )" ):POKE 1 93,1 <113> g8260 DATA 8,0,128,10,2,128,2,138,0,64,13 ' 5,80,188,21,84 32,93,117,33,125 <114> < 00278 DATA 125,101,853,127,103,253 123,10 173,123,103,173,123, <ia2a> 00288 DATA 123,183 173,123,103,173,123,18 » . 3,173,123, 183 173 123 103,173, 127 1 03 253 <125> 20290 DATA 35,101,253,21,37,117,5,32,B4 <196> — çalara ayırabilir ve bunları 0-255 ara- sı numaralayabiliriz. Bilgisayar ilk açı- lışta BANKO'ı kullandığına göre, 64 byte'lik bloklarımızın başlangıç adres- leri aşağıdaki gibi olacaktır.- - BLOK BAŞLANGIÇ ADRESİ 0 $0000 (0) 1 $0040 (64) 2 $0080 (128) 3 $00CO0 (192) 4 $0100 (256) 255 $3FCO (16320) 0-1 arası bloklar ve 12. blok, bilgi- sayar için hayati değeri olan bilgileri saklandığı bölgeye geldiği için kulla- nılmamaktadır. 16-32 arası bloklar için de bu sözkonusu. 33 ve sonra ge- len bloklar, BASIC programlarınızın ve kullandığınız değişkenlerin saklan- dığı 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 ta- mpon bölge olarak kullanılmaktadır. Dolayısıyla bu bölgeleri sprite için kul- lanır, sonra da teyp ile bazı işlemler yaparsanız, sprite tanımlamalarınız bozulacaktır. Commodore 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. Bilgi- sayar ilk âçıldığında, bu adreslerin de- ğeri şırasıyla 1 ve 8'dir, 14 8*256- 2049 ettiğine göre, BASIC bölgesi 2049 ($0801) adresinden başlıyor de- mektir. Eğer biz POKE 44,10 yapar- sak bu adresi 1 4 10*256 — 2561 adre- sine taşımış oluruz ve arada kalan böl- ge bize 8 yeni blok sağlar. Ancak bu POKE işlemi hafızada herhangi bir BASIC programı yokken yapılmalı- dır, yoksa programınız bozulur. Veya 16K'nın son kısımlarında ye- ralan blokları kullanabilirsiniz. Bu du- rumda dikkat etmeniz gereken şey, BASIC programınızın veya kullandı- ğınız değişkenlerin bu bölgelere kadar uzanabilmesi durumunda tanımlama- larınızın bozulacağıdır. Buna da bir çözüm bulabiliriz. Nasıl ki, 43/44 ad- reslerinde BASIC başlangıç adresi bu- lunuyor, 55/56 adreslerinde de BA- SIC hafızasının tavanı tamamlanır. Bunu nasıl kullanabiliriz?.. Diyelim ki, 248-255 numaralı blok- ları 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üperas- sembler) ikiye ayırmamız gerekiyor. Bunlar, 62 ($3E) ve 0 ($00) değerleri- dir. Ş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 “hayalet' bölgedir. Ancak, şunu belirtmek gerekiyor. İki üç sprite kullanmanız gerekiyor- sa,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ği- miz gibi, iki değişik sprite aynı görün- tüye sahip olacaksa, iki ayrı blok ye- rine tek blok kullanma imkânımız var. SPRITE DEMO 2 programımızda ol- “ duğu gibi. 23