 org $a780
counter10 dta 0
dest dta 0
tilebefore dta 0
previoustile dta 0
artif equ $131

konec2 rts
distanceinorder 
 lda #0
 sta $110
 ldy #60
flk
 sta tabsafetyprecise,y
 dey
 bne flk
loopr
 ldx sprite3
 ldy $110
 lda tabsafety,y
 sta counter10
 cmp #$ff
 beq konec2
 tay
 lda pion,x
 sec
 sbc pion,y
 bpl prcd6
 eor #$ff
 clc
 adc #1
prcd6 sta dodaj
 lda poziom,x
 sec
 sbc poziom,y
 bpl prcd9
 eor #$ff
 clc 
 adc #1
prcd9
 clc
dodaj equ *+1
 adc #1
 asl @
 tay
azzz  
 lda tabsafetyprecise,y
 beq okdoit
 iny
 bne azzz
okdoit
 lda counter10
 sta tabsafetyprecise,y
 inc $110
 jmp loopr
 rts

artific
 ldy sprite2  ;pozhi3,pozyc,sprite2,ax1,ay2 bot
 lda $a200,y
 sta emp
 lda poziom,y
 sta jakblisko1x
 lda pion,y
 sta jakblisko1y
 ldy sprite3  ;pozhi4,pozycja2,sprite3,ax2,ay2
 lda $a200,y
 sta emp2
 lda poziom,y
 sta jakblisko2x
 lda pion,y
 sta jakblisko2y

 lda #0

 sta kierunekx
 sta kieruneky
 sta yvar
 sta xvar
 sta xvar2
 sta yvar2
 sta czypoziomok
 sta czypionok

 inc licznik

 jsr czynowyruch
  jsr czystrzal 
 jsr ruch
 rts


czystrzal
 lda $d20a
 and #15
 bne konec
 lda #1
 sta nowystrzal

konec rts
czynowyruch

fiu
 lda czynowyruchw
 beq konec
 lda $120
 and #31 ; zmienione 21.06
 bne konec
force       lda #0
            sta counterx
            lda sprite2
            sta tilebefore
 lda dest
 sta destbefore
 sta $130
 lda #101
 sta previoustile
; lda $120
; sta $d01a
 lda jakblisko2x
 sec 
 sbc jakblisko1x
 bpl jestok
 ldy #1
 sty kierunekx
 eor #$ff
 clc 
 adc #1
jestok
 sta dx
 sta dxx
 lda jakblisko2y
 sec
 sbc jakblisko1y
 bpl jestok2
 ldy #1
 sty kieruneky
 eor #$ff
 clc
 adc #1
jestok2
 sta dy
 sta dyy
 jsr distanceinorder
newdest
 ldy #8
 lda #0
 sta nrchanges
 sta yvar
 sta xvar
onceagain
 lda tabsafetyprecise,y
 bne notempty
dalejho
 iny
 bne onceagain
notempty cmp counter_before
         beq dalejho
         cmp counter_before2
         beq dalejho
zozoz
 sta counter10
 cmp #$ff
 bne goon
; lda $d20a
; and #$f0
; adc #14
; sta $d018
 lda sprite2
 clc
 adc #1
 sta counter10
 sta dest
 lda #0
 sta czynowyruchw
 lda #$0
 sta $134
 ldy #0
 rts
goon
 ldx counter10
 lda pion,x
 sta yvar2
 lda poziom,x
 sta xvar2
 lda jakblisko1x
 sec
 sbc xvar2
 bpl qoqa
 eor #$ff
 clc
 adc #1
qoqa
 cmp #8
 bcc dalejhejho
 jmp qwaa
dalejhejho
 lda jakblisko1y
 sec
 sbc yvar2
 bpl qoqa2
 eor #$ff
 clc
 adc #1
qoqa2
 cmp #8
 bcc skocztam
qwaa sty $134
 ldy $134
 iny
 jmp newdest+2
skocztam 
 lda $d20a
 and #1
 beq qwaa
to
 lda kierunekx
 beq zmniejszx
 jmp zwiekszx
zmniejszx
 lda kieruneky
 bne _zwiekszyzmniejszx
_zmniejszyzmniejszx
 lda nrchanges
 cmp #2
 beq vovo-3
 jsr zmienzmienne
 ldy xvar
 lda tablszer,y
 sta forsbc
 lda counter10
 sec
 sbc #1
forsbc equ *-1
 sbc yvar
 bpl vovo
 jmp qwaa+3
vovo sta $132
     lda xvar2
     sec
     sbc xvar
     tay
     lda tablszer,y
     cmp $132
     bcs qwaa+3 
 lda $132    
 tay
 lda $a200,y
 beq fiut
 sta $c1
 ldy counter10
 lda $a200,y
 cmp #3
 bne _zmniejszyzmniejszx
 lda $c1
 cmp #1
 beq fiut
 bne _zmniejszyzmniejszx
fiut
 lda $132
 cmp destbefore
 beq qwaa+3
 sta dest
 lda #0
 sta czynowyruchw
 lda counter_before
 sta counter_before2
 lda counter10
 sta counter_before
 rts
_zwiekszyzmniejszx
 lda nrchanges
 cmp #2
 beq dej-3
 jsr zmienzmienne
 ldy xvar
 lda tablszer,y
 sta forsbc2
 lda counter10
 sec
 sbc #1
forsbc2 equ *-1
 clc
 adc yvar
 cmp #128
 bcc glglg
 jmp qwaa+3
glglg sta $132
     lda xvar2
     clc
     adc #1
     sec
     sbc xvar
     tay
     lda tablszer,y
     cmp $132
     bcs dej
     jmp qwaa+3
dej 
 lda $132 
 tay 
 lda $a200,y
 beq fiut2
 sta $c1
 ldy counter10
 lda $a200,y
 cmp #3
 bne _zwiekszyzmniejszx
 lda $c1
 cmp #1
 beq fiut2
 bne _zwiekszyzmniejszx
fiut2 
 lda $132
 cmp destbefore
 bne *+5
 jmp qwaa+3
 sta dest
 lda #0
 sta czynowyruchw
 lda counter_before
 sta counter_before2
 lda counter10
 sta counter_before
 rts
zwiekszx
 lda kieruneky
 bne _zwiekszyzwiekszx
_zmniejszyzwiekszx
 lda nrchanges
 cmp #2
 beq dej2-3
 jsr zmienzmienne
 ldy xvar
 lda tablszer,y
 clc
 adc counter10
 sec
 sbc yvar
 cmp #101
 bcc rororor
 jmp qwaa+3
rororor sta $132
     lda xvar2
     clc
     adc xvar
     tay
     lda tablszer,y
     cmp $132
     beq dej2
     bcc dej2
     jmp qwaa+3
dej2
 lda $132
 tay
 lda $a200,y
 beq fiut3
 sta $c1
 ldy counter10
 lda $a200,y
 cmp #3
 bne _zmniejszyzwiekszx
 lda $c1
 cmp #1
 beq fiut3
 bne _zmniejszyzwiekszx
fiut3
 lda $132
 cmp destbefore
 bne *+5
 jmp qwaa+3
 sta dest
 lda #0
 sta czynowyruchw
 lda counter_before
 sta counter_before2
 lda counter10
 sta counter_before
 rts
_zwiekszyzwiekszx
 lda nrchanges
 cmp #2
 beq dej3-3
 jsr zmienzmienne
 ldy xvar
 lda tablszer,y
 clc
 adc counter10
 clc
 adc yvar
 cmp #101
 bcc roror
 jmp qwaa+3
roror sta $132
     lda xvar2
     sec
     adc xvar
     tay
     lda tablszer,y
     cmp $132
     bcs dej3
     jmp qwaa+3
dej3
 lda $132
 tay
 lda $a200,y
 beq fiut4
 sta $c1
 ldy counter10
 lda $a200,y
 cmp #3
 bne _zwiekszyzwiekszx
 lda $c1
 cmp #1
 beq fiut4
 bne _zwiekszyzwiekszx
fiut4
 lda $132
 cmp destbefore
 bne *+5
 jmp qwaa+3
 sta dest
 lda #0
 sta czynowyruchw
 lda counter_before
 sta counter_before2
 lda counter10
 sta counter_before
 rts

zmienzmienne
 inc nrchanges
 lda dx
 cmp dy
 bcc dxmniejsze2
dxwieksze2
 inc xvar
 lda dy
 cmp #3
 bcc www
 inc yvar
www rts
dxmniejsze2
 inc yvar
 lda dx
 cmp #3
 bcc www
 inc xvar
 rts


nicnierob2 lda #0
           rts
nicnierob2x lda #1
            sta czynowyruchw
            lda #101
            sta previoustile

            lda #0
            rts
 
ruch
 lda sprite2
 cmp dest
 beq nicnierob2x
 cmp tilebefore
 beq wlskd
 ldy counterx
 beq fiuz
checkforrepetition
 lda waittile,y
 cmp sprite2
 beq nicnierob2x
 dey
 bne checkforrepetition
fiuz
 lda tilebefore
 sta previoustile
 inc counterx
 ldy counterx
 sta waittile,y
 lda sprite2
 sta tilebefore
 lda #0
 sta czylewook
 sta czyprawook
 sta czydolok
 sta czygoraok

wlskd lda licznik
 cmp sprawdzczas
 bne goon23
 adc #15
 sta sprawdzczas
 lda sprite2
 cmp tilebefore
 bne goon23
 beq nicnierob2x
goon23
 ldx dest
 lda poziom,x
 sta poziomdest

 ldx sprite2 
 sec
 sbc poziom,x
 bpl rubtodziwko
 eor #$ff
 clc
 adc #1
rubtodziwko
 sta dx
 ldx dest
 lda pion,x
 sta piondest
 ldx sprite2
 sec
 sbc pion,x
 bpl robtodziwko
 eor #$ff
 clc 
 adc #1
robtodziwko
 sta dy
 lda dx
 cmp dy
 bcs ruchwpoziomie  ;bcc?
ruchwpionie
 lda czypionok
 cmp #3
 bne goon20
 sta czynowyruchw
 rts
goon20
 inc czypionok
 ldx sprite2
 lda piondest
 sec
 sbc pion,x
 bpl wgoreplanszy
wdolplanszy 
 lda sprite2
 sec
 sbc #1
 cmp previoustile
; beq othertile4
 beq ruchwpoziomie
 tay
 lda $a200,y
 sec 
 sbc pozhi3
 beq okrobto
 cmp #1
 beq okrobto
 cmp #255
 beq okrobto
othertile4
goon13
 lda #1
 sta czydolok
 lda czygoraok
 beq wgoreplanszy
 jmp ruchwpoziomie
okrobto
 lda gora  ;1
nicnierob rts
wgoreplanszy
 lda sprite2
 clc
 adc #1
 cmp previoustile
; beq othertile3
 beq ruchwpoziomie
 tay
 lda $a200,y
 sec
 sbc pozhi3
 beq okrobto2
 cmp #1
 beq okrobto2
 cmp #255
 beq okrobto2
othertile3
goon15
 lda #1
 sta czygoraok
 lda czydolok
 beq wdolplanszy
 jmp ruchwpoziomie
okrobto2
 lda dol
 rts
ruchwpoziomie 
 lda czypoziomok
 cmp #3
 bne goon21
 sta czynowyruchw
 rts
goon21
 inc czypoziomok
 ldx sprite2
 lda poziomdest
 sec
 sbc poziom,x

 bmi wprawo
wlewo 
 lda sprite2
 clc
 adc #10
 cmp #101
 bcs othertile2
 cmp previoustile
 beq othertile2
; beq ru
 tay
 lda $a200,y
 sec
 sbc pozhi3
 beq okrobto3
 cmp #1
 beq okrobto3
 cmp #255
 beq okrobto3
othertile2
goon14
 lda #1
 sta czylewook
 lda czyprawook
 beq wprawo
ru
 jmp ruchwpionie
okrobto3
 lda lewo
 rts
wprawo
 lda sprite2
 sec
 sbc #10
 bpl dalszy
 bmi othertile1
dalszy
 cmp previoustile
 beq othertile1
; beq ruc
 tay
 lda $a200,y
 sec
 sbc pozhi3
 beq okrobto4
 cmp #1
 beq okrobto4
 cmp #255
 beq okrobto4
othertile1
goon16
 lda #1
 sta czyprawook
 lda czylewook
 beq wlewo
ruc
 jmp ruchwpionie
okrobto4
 lda prawo
 rts

maketabsafety ldy #0
 ldx #0
lp77
 lda $a200,y
 cmp #2
 beq wpisz
 cmp #3
 beq wpisz
zlm
 iny
 cpy #101
 bne lp77
 lda #$ff
 sta tabsafety,x
 rts
wpisz
 tya
 sta tabsafety,x
 inx
 jmp zlm

 org $2980

poziom   dta 0,0,0,0,0,0,0,0,0,0
       dta 1,1,1,1,1,1,1,1,1,1
       dta 2,2,2,2,2,2,2,2,2,2
       dta 3,3,3,3,3,3,3,3,3,3
       dta 4,4,4,4,4,4,4,4,4,4
       dta 5,5,5,5,5,5,5,5,5,5
       dta 6,6,6,6,6,6,6,6,6,6
       dta 7,7,7,7,7,7,7,7,7,7
       dta 8,8,8,8,8,8,8,8,8,8
       dta 9,9,9,9,9,9,9,9,9,9
pion   dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9
       dta 0,1,2,3,4,5,6,7,8,9


jakblisko1x dta 0
jakblisko1y dta 0
jakblisko2x dta 0
jakblisko2y dta 0

xczyy dta 0
nrchanges dta 0
licznik dta 0
sprawdzczas dta 15
bigplatform dta 0

czyprzestoj dta 0
counterxy dta 0
counterx dta 0
piondest dta 0
pionsprite dta 0
poziomdest dta 0
poziomsprite dta 0
czylewook dta 0
czyprawook dta 0
czygoraok dta 0
czydolok dta 0
xvar dta 0
yvar dta 0
kierunekx dta 0
kieruneky dta 0
czypionok dta 0
czypoziomok dta 0
counter_before dta 0
counter_before2 dta 0
destbefore dta 0
dxx dta 0
dyy dta 0
highcounter dta 0
nowystrzal dta 0
czynowyruchw dta 0
xvar2 dta 0
yvar2 dta 0
test dta 255
 org $fda0
waittile 
 org $fe00
tabsafety 
 org $ff80
tabsafetyprecise 