Plazma sayı 6, sayfa 64

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ı.