home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tajemnice Atari 9
/
Tajemnice_Atari_Nr_09_1993_Avalon_pl.atr
/
sprite3.asm
< prev
next >
Wrap
Assembly Source File
|
2023-02-26
|
4KB
|
1 lines
opt 21¢ org $a000¢¢* --- Constans ---¢¢pm_adr equ $b000¢¢dma_mod equ %111010¢* Normalny obraz,¢* DMA dla graczy,¢* rozdzelczosc jednoliniowa,¢* DMA dla ANTIC'a.¢¢gtia_mod equ %100001¢* Najwyzszy priorytet dla sprite'ow,¢* trojkolorowe sprite'y.¢¢pm_mod equ %10¢* Zezwolenie na¢* wyswietlanie graczy.¢¢pm_size equ %00¢* Normalna szerokosc¢* sprite'a.¢¢col_1 equ %01110100¢* +¢col_2 equ %10001000¢* =¢* 11111100¢¢height equ 16¢* Wysokosc.¢¢min_x equ 48¢min_y equ 32¢max_x equ 200¢max_y equ 224-height¢* Minimalne i maksymalne¢* pozycje na ekranie.¢¢pl0_pos equ $400¢pl1_pos equ $500¢* Przesuniecia wzgledem¢* poczatku obszaru¢* pamieci sprite'ow.¢¢* --- System -----¢¢dmactl equ $22f¢gtiactl equ $26f¢colpm0 equ $2c0¢colpf0 equ $2c4¢hposp0 equ $d000¢sizep0 equ $d008¢pmctl equ $d01d¢pmbase equ $d407¢¢* --- Program ----¢¢begin equ *¢¢* Krok pierwszy¢¢ ldy #0¢ tya¢¢bgn_1 equ *¢¢ sta pm_adr+$300,y¢ sta pm_adr+$400,y¢ sta pm_adr+$500,y¢ sta pm_adr+$600,y¢ sta pm_adr+$700,y¢ iny¢ bne bgn_1¢¢ lda >pm_adr¢ sta pmbase¢¢ lda #pm_size¢ sta sizep0¢ sta sizep0+1¢¢ lda #dma_mod¢ sta dmactl¢¢ lda #pm_mod¢ sta pmctl¢¢* Krok drugi¢¢ lda #gtia_mod¢ sta gtiactl¢¢* Krok trzeci¢¢ lda #col_1¢ sta colpm0¢ lda #col_2¢ sta colpm0+1¢¢¢* Poczatek przykladu¢¢ lda #0¢ sta colpf0+2¢ lda #2¢ sta colpf0+4¢¢ lda #min_x¢ lda #100¢ sta x_plr¢ lda #min_y¢ lda #100¢ sta y_plr¢ lda #0¢ sta zx¢ sta zy¢¢* Glowna petla¢* przykladu¢¢loop equ *¢¢* Oczekiwanie na¢* synchronizacje¢* pionowa.¢* (Przerwanie VBLANK)¢¢ lda 20¢ cmp 20¢ beq *-2¢¢* Wywolanie procedur¢* obslugi sprite'a.¢¢ jsr clr_plr¢ jsr new_pos¢ jsr shw_plr¢¢* Skok na poczatek¢* petli.¢¢ jmp loop¢¢* Skasowanie sprite'a¢¢clr_plr equ *¢¢ ldy y_plr¢ ldx #0¢ txa¢¢clpl_1 equ *¢¢ sta pm_adr+pl0_pos,y¢ sta pm_adr+pl1_pos,y¢ iny¢ inx¢ cpx #height¢ bcc clpl_1¢ rts¢¢* Wyswietlenie sprite'a¢¢shw_plr equ *¢¢ ldy y_plr¢ ldx #0¢¢shpl_1 equ *¢¢ lda shape1,x¢ sta pm_adr+pl0_pos,y¢ lda shape2,x¢ sta pm_adr+pl1_pos,y¢ iny¢ inx¢ cpx #height¢ bcc shpl_1¢ lda x_plr¢ sta hposp0¢ sta hposp0+1¢ rts¢¢* Zmiana pozycji¢¢new_pos equ *¢¢* Ustalenie nowej¢* pozycji poziomej¢¢ ldx x_plr¢ inx¢ lda zx¢ beq right¢ dex¢ dex¢¢right equ *¢¢ stx x_plr¢¢* Sprawdzenie, czy¢* ma nastapic zmiana¢* kierunku ruchu w¢* poziomie...¢¢ lda #$00¢ cpx #min_x¢ bcs *+4¢ lda #$ff¢¢ cpx #max_x¢ bcc *+4¢ lda #$ff¢¢* ...i ewentualna¢* jego zmiana¢¢ eor zx¢ sta zx¢¢* Ustalenie nowej¢* pozycji pionowej¢¢ ldx y_plr¢ inx¢ lda zy¢ beq down¢ dex¢ dex¢¢down equ *¢¢ stx y_plr¢¢* Sprawdzenie, czy¢* ma nastapic zmiana¢* kierunku ruchu w¢* pionie...¢¢ lda #$00¢ cpx #min_y¢ bcs *+4¢ lda #$ff¢¢ cpx #max_y¢ bcc *+4¢ lda #$ff¢¢* ...i ewentualna¢* jego zmiana¢¢ eor zy¢ sta zy¢ rts¢¢* Zmienne¢¢x_plr dta b(0)¢y_plr dta b(0)¢zx dta b(0)¢zy dta b(0)¢¢* Definicja pierwszego¢* sprite'a¢¢shape1 equ *¢¢ dta b(%00011000)¢ dta b(%00111100)¢ dta b(%01111000)¢ dta b(%01110000)¢ dta b(%11100000)¢ dta b(%11000000)¢ dta b(%11000000)¢ dta b(%10000001)¢ dta b(%10000001)¢ dta b(%00000011)¢ dta b(%00000011)¢ dta b(%00000111)¢ dta b(%00001110)¢ dta b(%00011110)¢ dta b(%00111100)¢ dta b(%00011000)¢¢* Definicja drugiego¢* sprite'a¢¢shape2 equ *¢¢ dta b(%00011000)¢ dta b(%00111100)¢ dta b(%01111110)¢ dta b(%01111110)¢ dta b(%11111111)¢ dta b(%11111111)¢ dta b(%11111111)¢ dta b(%11111110)¢ dta b(%11111110)¢ dta b(%11111100)¢ dta b(%11111100)¢ dta b(%11111000)¢ dta b(%01110000)¢ dta b(%01100000)¢ dta b(%00000000)¢ dta b(%00000000)¢¢ opt 7¢ end¢