spritelar 24x21 pixellik alanlar. 24 pixel de bitlerle ifade edildiği için 3 byte'a karşılık geliyor. 3 byte x 21 satır = 63 byte.
şimdi bu noktada 2li sistemde işi kolaylaştırıcı bir yöntem devreye giriyor. 2^6 = 64 olduğu için 63 byte kaplayan spritelar aralarında 1 byte boş bırakılarak hafızaya yerleştiriliyorlar. Yani hafıza düzeninde hafızanın en başından itibaren bakacak olursak
0 - 62 : 1. sprite alanı
63 : boş byte
64 - 126 : 2. sprite alanı
127 : boş byte
128 - 190 : 3. sprite alanı
191 : boş byte
.....
şeklinde yerleşiyorlar. Biz ise spriteları tanımlarken sprite alanlarıyla tanımlıyoruz. Yani 3. sprite'ı göster. 17. sprite'ı göster gibi. şimdi bu hesaptan yola çıkarsak $3000 = 192 * 64 = $c0 * $40'a denk geliyor. Yani aslında biz orada $c0 (=192) değerini verirken "Git hafızadaki 192. sprite'ı göster" demiş oluyoruz. Bilgisayar da 192 * 64 = 12288 = $3000 adresindeki sprite'ı gösteriyor.
Burda ufak bir not. Sprite numaraları maksimum 255'e kadar gider. Bu da $3fc0 adresindeki sprite'a denk gelir. Peki $4000'den sonrasında sprite gösteremiyor muyuz? Elbette ki gösterebiliyoruz. Çok detaya girmeden kısaca anlatayım.
64k'lık hafıza 16k'lık 4 parçaya bölünmüş durumda. Bunlara "bank" deniyor. Biz $dd00 adresini kullanarak bunlar arasında geçiş yapabiliyoruz. Diyelim ki 2 numaralı banktayız. Bu bank $4000-$8000 arasına denk geliyor. Bu durumda 192 nolu sprite $3000'de değil, bank adresinin başlangıcıyla toplanarak $4000+$3000 = $7000'e denk gelir.
3 numaralı bank $0000-$3fff
2 numaralı bank $4000-$7fff
1 numaralı bank $8000-$bfff
0 numaralı bank $c000-$ffff
x numaralı bankdan kastım $dd00'ın alt iki bitinin alacağı değerlere karşılık geliyor. Örneğin $8000-$bfff arasını kullanmak istiyorsanız 1 numaralı bank olduğu için en basit tanımıyla
lda #1
sta $dd00
diyebilirsiniz. şimdilik fikir sahibi olmanız için kısaca açıkladım. Bu konuya fazla kafanızı yormayın. Çünkü bank değiştirdiğiniz gibi ekran adresleri gibi birçok şey değişecektir. Ayrıca diğer bankların bir bölümünde "garip" adres aralıklarına denk gelebilirsiniz. Onun için bunu şimdilik bilin ama kullanmayın. Nightlord sizi güvenle bank değiştirecek hale getirecektir