org $480 opt %10101 reals equ $f0 zn equ $f2 sp equ $f4 tl equ $f6 def equ $f8 _table equ $9f00 tablica do mnozenia table equ $a000 tablica masek dane_and_4plus equ $a200 adres dolaczanych danych lda #4 sta 708 lda #10 sta 709 lda #15 sta 710 lda pl1 sta reals+1 jsr init jsr dli_on jsr translacja jsr _makemask jsr _maketable jsr _newwsp lda nmi sta 553 nmi equ * lda tempo sta 538 lda spkontrolbyte and #%00010000 beq n4 lda #255 sta spnr n4 inc spnr lda spnr cmp #4 bne n2 lda #0 sta spnr n2 ldx spnr lda stend,x sta start ldy #0 ldx start _loop lda dane,x sta X_old,y iny inx cpy #9 bne _loop jsr killlife ldy #0 ldx start _loop2 lda X_old,y sta dane,x iny inx cpy #9 bne _loop2 rts killlife equ * lda spkontrolbyte and #%00001000 bne defnr lda 53770 cmp #6 bcs wysexit lda spkontrolbyte ora #%00001000 sta spkontrolbyte wysexit rts defnr equ * lda Xaktual and #%10000000 beq defprawo lda dfnr and #%00001111 asl @ jmp defnr_ defprawo lda dfnr lsr @ lsr @ lsr @ defnr_ tay lda _fztable,y sta def lda _fztable+1,y sta def+1 spkier equ * lda Xaktual and #%01111111 cmp minX beq kierchange cmp maxX bne movesp kierchange lda Xaktual eor #%10000000 sta Xaktual movesp equ * lda Xaktual and #%10000000 beq _sp_prawo dec Xaktual jmp _loadY _sp_prawo inc Xaktual _loadY equ * lda spkontrolbyte and #%00000111 sta Y_old lda spnr asl @ tay lda znspadres,y sta zn lda znspadres+1,y sta zn+1 lda firstold bne empty2 ldx X_old ldy Y_old jsr locate cmp #112 bcc empty1 empty2 ldx X_old ldy Y_old lda firstold jsr position empty1 lda secondold bne empty3 ldx X_old ldy Y_old inx jsr locate cmp #112 bcc rozpisanie empty3 ldx X_old ldy Y_old inx lda secondold jsr position rozpisanie equ * lda Xaktual and #%00000111 asl @ tay lda (def),y sta sp iny lda (def),y sta sp+1 lda Xaktual and #%01111111 lsr @ lsr @ lsr @ sta X_old zapamietaj equ * ldx X_old ldy Y_old jsr locate sta firstold tay jsr _mnozenie stx firadr sty firadr+1 ldx X_old ldy Y_old inx jsr locate sta secondold tay jsr _mnozenie stx secadr sty secadr+1 jsr animacja jmp showsp animacja equ * lda firadr sta tl lda firadr+1 sta tl+1 jsr anim jsr zwsp jsr zwzn lda secadr sta tl lda secadr+1 sta tl+1 jsr anim jsr zwsp jsr zmzn lda firadr sta tl lda firadr+1 clc adc #4 sta tl+1 lda zn+1 clc adc #4 sta zn+1 jsr anim jsr zwsp jsr zwzn lda secadr sta tl lda secadr+1 clc adc #4 sta tl+1 jsr anim rts zwsp equ * lda sp clc adc #16 sta sp bcc zwsp2 inc sp+1 zwsp2 rts zwzn equ * lda zn clc adc #16 sta zn bcc zwzn2 inc zn+1 zwzn2 rts zmzn equ * lda zn sec sbc #16 sta zn bcs zmzn2 dec zn+1 zmzn2 rts anim equ * ldy #0 anim2 lda (sp),y tax lda (tl),y and table,x ora (sp),y sta (zn),y iny cpy #16 bne anim2 rts showsp equ * ldy spnr lda znsptable,y ldx X_old ldy Y_old jsr position ldy spnr lda znsptable,y clc adc #2 ldx X_old ldy Y_old inx jsr position rts dana dta b(0) maska dta d' ' znsptable equ * dta b(112),b(116),b(120),b(124),b(126) znspadres equ * dta a(fonts+896),a(fonts+928),a(fonts+960),a(fonts+992) X_old dta b(0) Y_old dta b(0) firstold dta b(0) secondold dta b(0) Xaktual dta b(0) minX dta b(0) maxX dta b(0) dfnr dta b(0) spkontrolbyte dta b(0) firadr dta a(0) secadr dta a(0) spnr dta b(0) tempo dta b(1) start dta b(0) dane equ * dta d' ' dta d' ' stend equ * dta b(0),b(9),b(18),b(27) org dane_and_4plus icl '4PLUS' icl 'DANE5_SP' _makemask equ * lda #0 tay sta dana _make2 jsr _make3 inc dana iny bne _make2 rts _make3 lda dana and #170 eor #255 sta maska lda dana and #170 lsr @ eor #255 sta maska+1 lda dana and #85 eor #255 sta maska+2 lda dana and #85 asl @ eor #255 sta maska+3 lda maska and maska+1 and maska+2 and maska+3 sta table,y rts _mnozenie equ * lda _table,y tax lda _table+1,y clc adc #$b8 tay rts _maketable equ * ldy #0 sty maketb sty maketb+1 loop lda maketb+1 sta _table+1,y lda maketb sta _table,y clc adc #16 sta maketb bcc loop2 inc maketb+1 loop2 iny iny cpy #128 bne loop rts _newwsp equ * ldy #136 ldx #0 newws2 lda (reals),y sta dane,x iny inx cpx #36 bne newws2 rts maketb dta b(0),b(0) icl 'GAMEFONT'