1 Nisan 1987 Tarihli Commodore Gazetesi Sayfa 22

1 Nisan 1987 tarihli Commodore Gazetesi Sayfa 22
Metin içeriği (otomatik olarak oluşturulmuştur)

birini alabilir. Bunun için, o spfrite'a âit renk yazmaçına (VIC'in 39-46 ara- sı yazmaçları), 0-15 arası renk kodu- nu POKE ile yüklemek gerekir. Artık, o sprite'ı tanımlayan byte'ların 1 du- rumunda bulunan bütün bit'leri belir- lenen renk ile gösterilecektir. Çokrenkli sprite'lara gelince... De- minden beri anlattığımız sprite'lardan farkı, aynı anda dört değişik renk ta- şıyabilmeleri. Bunların ikisi, o anda ekranda bulunan tüm çokrenkli spri- te'lar için ortak. Üçüncüsü, sprite'ın o anda üstünde bulunduğu ekran böl- gesinin sahip olduğu renk. Sonuncu- su da, her sprite için ayrı ayrı olabil- mekte. Tabii ki, çokrenklilik karşısında kurban edilen şey, tıpkı çokrenkli nokta grafiğinde olduğu gibi, yatay çözünürlük. 24 nokta yerine artık 12 nokta var. Ancak yanlış anlama olma- sın; 24 nokta, ikişer ikişer birleşerek bir renk noktası oluşturuyor. Yoksa, 504 nokta (— 504 bit — 63 byte) kulla- nımı değişmiyor. Aşağıdaki tablo ile bunu kolayca görebiliriz: saptar. Bunu da şu şekilde gösterebi- liriz. BİT KAYNAK 974900 Saydam (ekran rengi) 001 VIC'in 37. yazmaçı 7910 VIC'in 38. yazmaçı , Shl1 VIC'in 39-46 arasmı yazmaçları Bir başka özellik de, ekranda tek- I renkli ve çokrenkli sprite'ların aynı anda gösterilebilmesi. Örneğin, 3 çok- renkli ve 5 tekrenkli sprite kullanma | -olanağımız var. Bir sprite'in hangi renklendirme türünde oOlacağını, VIC'in 28 numaralı yazmaçı saptar. Bu yazmaçın her bir bit'i bir sprite'ı temsil eder. Örneğin 0. bit 0. sprite'a, 6. bit 6. sprite'a karşılık gelir. Eğer bir sprite'a ait bit 1 değerini almışsa, o sprite çokrenkli gösterimi kullanacak demektir. Bir örnek görelim: Diyelim ki 4 numaralı sprite çok- renkli olacak. Vereceğiniz komut, POKE 532484 28,21 4 olacaktır. Veya, daha fazla sprite'ı çokrenkli re yerleştirmek. Önce 63 tane byte'ın nasıl oluşturulacağına bakalım. Kolaylık olması amacıyla, sprite'ı oluşturan 21 sıranın sadece ilkini ele alalım. Nasılsa diğerleri de aynı şekil- de hesaplanıyor. Ve diyelim ki, spri- te'ımızın ilk satırı, bir dolu, iki boş, bir dolu, iki boş... şeklinde olsun. Bu- nu bir ve sıfir kullanarak gösterirsek: 100100100100100100100100100 Her bir satırımız üç byte'dan oluş- tuğuna göre bursatırı üç parçaya ayı- ralım: 97010010010 97001001001 974000100100 Bunların her birinin onluk sistem- deki karşılıklarını da bulalım: 146 73 36 Demek ki, sprite'ımızı oluşturan 63 byte'ın ilk üçünün değerleri 146, 73 ve 36 olacaktır. Eğer yukarıda verdiğimiz satır, sprite'ımızın 15. satırı olsaydı, IKOLON 1 ! IKOLON 2 ! IKOLON 3 ! ______________________________ bulduğumuz bu değerler, sırasıyla 45, 176543210! 176543210! 176543210! 46 ve 47 numaralı byte'ların içerikle- ri olacaktı (tablomuza bakınız). BiByte Olkk..*k..1Byte 11 kk..k4..!Byte Bikk..K4.. İ Çokrenkli sprite dizaynı biraz da- 1!Byte 3lkk..x4..!Byte l kk.. Hk..'Byte Slkk..Ak..! hakannaşk_Busekrnohahnndo- 2lByte Glkk..kk..!Byte FZlk4..H4..!Byte Blkk..H4.. ! : : B!Bîıte Bikk..*k.. !Bîte 1A'kk.. kk..!Byte 111 kk..kk..! lü.veya boş dmam%ı.de.ğq döş l?angı 4iByte İP1kk..Kk..!Byte 1314x..*4..!Byte 141xk..4k..) renkte olması gerektiğini bilmemiz ge- 5iByte 151 *k..Ak..!Byte 1861 xk..kk..1Byte İ71kk..kk.. ! rekiyor. Gene diyelim ki sprite'ın ilk BilByte 18!xk..xk..1Byte 19 &a.. *Hk..!Byte BOlkk..kk.. ! satırını oluşturan 12 renk noktasının sırayla, O, 1, 2, 3,2,1,0,1,2,3,2, 1 renklerinden oluşmasını istiyoruz. Bu sayıların ikili sistemdeki karşılık- larını yanyana yazarak elde edeceği- miz sıfır-bir dizisi şu şekilde olacaktır: 1Byte 22!kk..kk..1Byte 23!*#k..kk..! 1Byte 25!xk..4x..!Byte 26!*k..kk.. 1 1 ı 1 1 ı 1 ı TlByte Bİ'!'kk..kk.. ı ı 1Byte 28!kk..*k..!Byte E9'!kk..AA..! 1 ı 1 1 ı ! 1 ı ı ! ı BlByte 2d!*k..kk., diByte 27'!*kk.. kk.. 10!Byte 30!'4*k..Hk.. 111Byte 33!*k..Hk.. 12!Byte 36!4k..4k.. 13!Byte 33!*k.. 4k.. 141Byte d2!kk..k4k.. 15!Byte d5l*k..kk.. 16!Byte dülk#k..Rk.. 17!Byte Sll4k..*k.. 1Byte 3l!kk..*k..!Byte 32!kk..kk..! 1Byte Balkk..Kk..!Byte 35 kk..kk.. ! 1Byte 37!x*k..kk..!Byte 38'*k.. 4k.. | 1Byte 40! x. . *k..!Byte di kk..kk.l! IByte 43!xk. . 4k..!Byte d4!kk.. k4..! 1Byte 486! kk.. &.. !Byte 47 ! 4k.. kk..! IByte 49!x4*..*&..)!Byte SOlkk..ka.. ! 1Byte Sel!kk..xk..!Byte S3!kk..k4.. 0001101110001000110111001 Gene üçe ayıralım: 181Byte 5S4!*x..*k..!Byte 5S1 x*..*k..!Byte SEVkk..Hk.. | 00011011 191Byte SP!4k..Rk..1Byte 5S9lkk..kk..!Byte S3lkk..kk..|! 10010001 2flByte BOlxk..kk..!Byte Bl ! kk..xk..!Byte B2!kk.. &a.. ! 10111001 Değerlerini de hesaplayalım: Daha önceleri de gördüğümüz gibi, iki bit'in alabileceği değerler 0-3 ara- sı değişmekteydi. İşte yanyana duran ve tablomuzda da gösterdiğimiz iki- şerli bit gruplarının alacağı 0-3 arası değer, karşılık geldiği renk noktasının renginin hangi kaynaktan geleceğini 22 yapmak isteyebilirsiniz, örneğin 1, 5 durumda da POKE 53248 428,1OR320R 128 verecek- siniz. Bir sprite yaratırken, ilk yapılacak iş 63 byte'lık bilgiyi oluşturmak ve bu bilgiyi hafızanın içinde uygun bir ye- Commodore 21 145 185 Demin olduğu gibi, ilk üç byte'ın veya dilediğimiz satırı oluşturan üç byte'ın alacağı değerleri bulmuş ol-

Bu sayıdan diğer sayfalar: