Bu sayfadaki yazılar
Sayfanın metni
Sayfa 64
cpx #HaritaSonul-HaritaBasil bne Dongu3 rts
;fuzeleri olustur
FuzeleriOlustur ldx #$00 ldy FuzeY Dongu4 I1da HaritaBasi2,x sta ($f7),y iny inx cpx #HaritaSonu2-HaritaBasi2 bne Dongu4 rts HaritaBasil !byte !byte $11000000 !byte $11110000 !byte $11001000 !byte $11000100 !byte $11111110 !byte $11111111 !byte $11111111 HaritaSonul - * HaritaBasi2 !byte !byte $11010111 !byte HaritaSonu2 - * OyuncuXx !byte $40 Oyuncuy !byte $7c FuzelX !byte $48 Fuze2X !byte $70 Fuze3X !byte $98 !byte $c0 FuzeY !byte $81 YaratikBellegi !byte 0,0
*
BITIS ADRESI
$02e0, $02e1, BASLANGIC ADRESI
Çarpışma Örneği
Çarpışma örneğine biraz daha detay katarak ivmeli hareket eden yaratıkları da görmüş olacağız. Bu örnekte Oyuncu 0 ve Oyuncu 1 kullanılıyor. Her iki oyuncunun da durum, hız, ivme, x ve y koordinatlarından oluşan birer yapısı var. Ayrıca 16 bit toplama ve 8/16 bit yer değiştirme (swap) işlemleri için TOPLA16, DEGISTIR8, DEGISTIR16 isminde 3 adet makro kullanıldı. Bu sayede ACME'de makro kullanımını da görmüş oluyoruz.
Şekil 11.
oyuncu carpismasi.a
BASLANGIC ADRESI $0600 !to "oyuncu carpismasi.xex",plain
;16 bit toplama
!macro TOPLA16 .a, .b ( lda .atl ele ade .b*tl sta .atl lda .a ele ade .b sta .a bec .out inc
)
;8 bit yer degistirme !macro DEGISTIR8 .a, lda .a Sta St9 lda .b sta lda sta
bi $
.a $£9 b )
;16 bit yer degistirme !macro DEGISTIR16 .a, .b (| *DEGİSTIR8 .a;
*DEGISTIR8 .a41, .btl
*
BASLANGIC ADRESI-6
lword $£fff, BASLANGIC ADRESI, BITIS ADRESI
*
BASLANGIC ADRESI ;yarat#klar#n bellek adreslerini belirle lda $6a sec sbe sta sta sta lda sta
#$08 $6a $d407 ; PMBASE HI YaratikBellegitl #$00 YaratikBellegi
fuzeleri ac #$03 $d0ld ;
;yarat#k ve lda
sta GRACTL
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 65
iny ;grafik ekrani ac bne Dongul ldy #$1f ine sty $022f ; DMACTL ldx $f8 cpx : endOfBlock - *-1 ;oyuncularin yatay pozisyonlari bne Dongul Ol rts sta $d000 ; Oyuncu 0 X pozisyonu lida y pozisyonlarina sta $d001 ; Oyuncu 1 X pozisyonu #goöre olustur OyunculariOlustur renkleri lda YaratikBellegi lda #$aa sta $f5 sta $02c0 ; Oyuncu 0 rengi lda YaratikBellegitl lda #$cc ele sta $02cl ; Oyuncu 1 rengi adc #$04 sta $f6 ;tüm yaratik bellegini temizle 1 İsr YaratikBelleginiTemizle ldx #$00 ldy Ol Y olustur Dongu2 HaritaBasi,x jsr OyunculariOlustur sta ($£5),y iny ;kesme rutini ayarla inx ldy #<Rutin cpx #HaritaSonu-HaritaBasi ldx #>Rutin bne Dongu2 lda #$07 İsr $Şed45c ; SETVBV inc $f6 jmp * 2 ldx #$00 şana ldy 02 Y Rutin Dongu3 HaritaBasi,x lda Ol Durum sta ($£5),y beg Oyuncu2Hareketli iny şeger oyuncu 1 hareket halindeyse inx *TOPLA16 Ol Hiz, Ol Ivme cpx #HaritaSonu-HaritaBasi *TOPLA16 Ol Hiz bne Dongu3 lda Ol Xt1 rts sta $d000 ; Oyuncu 0 X pozisyonu jmp CarpismaKontrolu HaritaBasi !byte $00011000 Oyuncu2Hareketli !byte $00111100 şeger oyuncu 2 hareket halindeyse !byte $01111110 *TOPLA16 02 Hiz, 02 Ivme !byte *TOPLA16 02 X, O2 Hiz !byte lda 02 X1t1 !byte &11111111 sta $d001 ; Oyuncu 1 X pozisyonu !byte $11111111 ;carpisma kontrolu #11111111 CarpismaKontrolu ibyte #11111111 lda $d00c ; Oyuncu O - Oyuncu 1 !byte $11111111 cmp #$02 ; carpisma kontolu !byte bne RutinSonu !byte $01111110 ;Carpisma bayraklarini sifirla !byte $01111110 lda #$00 !byte sta $d0le ; Carpisma temizleme !byte $00011000 durum ve hizlarini degistir HaritaSonu - * *DEGIİSTIR8 Ol Durum, 02 Durum *DEGIİSTIR16 Ol Hiz, O2 Hiz Ol Durum $01 ;pes pese carpisma olusmamasi icin Ol Hiz !byte $00,$00 ;oyuncularin arasinda carpisma Ol Ivme !byte $08,$00 ;sonrasi belirli bir mesafe birak ol X !byte $00,$30 lda Ol ol !byte $74 ele adc #$08 02 Durum !byte $00 sta 02 Xt1 02 Hiz !byte $00,$00 sta $d001 ; Oyuncu 1 X pozisyonu 02 Ivme !byte $f8,$£ff RutinSonu 02 X $00,$7c jmp $e462 ; RETURN o2 Xx !byte $74 #2kb'lik yaratik bellegini temizle YaratikBellegi !byte 0,0 YaratikBelleginiTemizle lda YaratikBellegi BITIS ADRESI -— * sta lword $02e0, $02e1, BASLANGIC ADRESI lda YaratikBellegitli sta $f8 ele
adc #$08 Değerlendirme
sta endOfBlock ldy #$00 lda #$00 Bu bölümde net bir biçimde "Oyuncular ve Füzeler", daha genel
Döngü sta ($f7),y tanımıyla "Yaratıklar" konusunu Atari'ye özelleştirilmiş bir biçimde görmüş olduk. Ancak unutmayın ki donanım destekli yaratıklar her ne kadar bilgisayardan bilgisayara farklılıklar gösterse de, kullanım amacı olarak aynıdırlar. Bir bilgisayar üzerinde bu konuyu iyice anladıktan sonra diğer bilgisayarlarda bu konuya kolayca adapte olabilirsiniz. Genellikle;