home *** CD-ROM | disk | FTP | other *** search
/ Tajemnice Atari 9 / Tajemnice_Atari_Nr_09_1993_Avalon_pl.atr / sprite3.asm < prev    next >
Assembly Source File  |  2023-02-26  |  4KB  |  1 lines

  1.  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¢