Ara sıra c64 coding bölümünde birşeyler paylaşıyorum. Özellikle daha önce değinilmemiş üzerinde uğraştığım konuları seçiyorum fakat yinede tekrar oluyorsa yada sıkılanlar varsa kusura bakmasınlar. Amaç hani derler ya ... hem ziyaret hem ticaret.
Aşağıdaki codelar; 3 adet farklı sprite'ın datalarının nereden okunacağını ve renklerinin ne olacağını belirliyor. Burdaki nüans sprite banklarını 1'er bank arayla okutmamız.
1.sprite'ı :$0900
2.sprite'ı :$0980
3.sprite'ı :$0a00
datalarını adreslerinden okuyor ve renklerini beyaz yapıyor.
ıntrolarda spriteları set etmek için sıklıkla kullanılan bu kodu elimden geldiği kadar optimize etmeye çalıştım. (En sonunda fazla optimize edilemediğine karar verdim eheheh... )
ılk kod klasik ... hafızada rts dahil 26 byte kaplıyor,açık yazılmış olanı...
ıkinci kod biraz daha kısaltılmış olanı 24 byte'lık yer kaplıyor
Farkı X register'ini Akü'ye aktarıp ufak bir hesaplamayla bu işi yapıyor. 2 byte kazandırıyor.
Aklıma üçüncü ve daha kısa bir yol geldi. Fakat sanırım Pha ve Pla'nın kullanımında boka sardığım için 07f8,07f9,07fa'nın değerlierini verebiliyor fakat $d027,$d028,$d029 'a herhangi bir değer yazamıyor. Aslında kesin bir şekilde
lda#$01
sta$d029
yapmama rağmen olmaması Pha ve Pla 'nın kullanımının Skate, Nightlord ve Endo üçlüsünden birinin olaya el atması gerektiği hissini bende uyandırdı
;//code#1 =26 byte\\
lda#$24
sta$07f8
lda#$26
sta$07f9
lda#$28
sta$07fa
lda#$01
sta$d027
sta$d028
sta$d029
rts
;// code#2 = 24 byte \\
ldy#$00
ldx#$24
dongu:
lda#$01
sta$d027,y
txa
sta$07f8,y
clc
adc#$02
tax
iny
cpy#3
bne dongu
rts
;//code#3 =23 byte\\
ldy#$03
lda#$28
pha
dongu:
lda#$01
sta$d026,y
pla
sta$07f7,y
sec
sbc#$02
pha
dey
bne dongu:
rts