 org $b400

;normal binary division
div
 ASL $dD
 LDA #$00
 ROL

 LDX #$08
_loop1
 CMP $dC
 BCC *+4
 SBC $dC
 ROL $dD
 ROL
 DEX
 BNE _loop1

 LDX #$08
_loop2
 CMP $dC
 BCC *+4
 SBC $dC
 ROL $dE
 ASL
 DEX
 BNE _loop2
 rts

;Divides the value in $dD by the value in $dC, 
;8 bit integer result in $dD, the first 8 fraction bits are in $dE. 

getaim  lda ktorysprite
	beq ww3
	jsr keepsprite2
	jsr bringsprite1
	jmp ww4

ww3	jsr keepsprite1
	jsr bringsprite2
ww4	jsr turn

	jsr getsprite
	lda spritewide,x
	sec
	sbc spritewide,y
	clc
	adc #$85
	clc
	adc pozx
	sta movx

	lda spritehigh,x
	clc
	adc spritewide,y
	clc
	adc pozy

	jsr hihi
	clc
        adc #1
	sta movy

 ldy sprite
 lda $a200,y
 sta emp2


	lda ktorysprite
	beq ww5
	jsr keepsprite1
	jsr bringsprite2
	rts
ww5	jsr keepsprite2
	jsr bringsprite1
	rts


getsource
        ldy sprite
        lda $a200,y
        sta emp
 asl @
 asl @
 asl @
 clc
 adc #10
 sta z
small_source
	jsr getsprite
	lda spritewide,x
	sec
	sbc spritewide,y
	clc
	adc #$85
	clc
	adc pozx
	sta tmp5
	sta x2_new

        lda spritehigh,x
	clc
	adc spritewide,y
	clc
	adc pozy

	jsr hihi
	sta tmp2
	clc
        adc #1
	tay
	sty y2_new

	rts

gethigh
	lda emp
	cmp emp2
	bcc _temp1
	lda #1
	sta $10a	;	ZNACZNIK KIERUNKU STRZALU -W DOL
	
	lda emp
	sec
	sbc emp2
	asl @
	asl @
	asl @
	sta wysokosc
        rts
_temp1  lda #0
	sta $10a 	;	ZNACZNIK KIERUNKU- W GORE
	lda emp2
	sec
	sbc emp
	asl @
	asl @
	asl @
	sta wysokosc
        rts

target	
_frd lda #1
     sta stop_3

    lda nrbroni
     cmp #2
      bne wwwww
 jsr put_mine
 rts
wwwww
        jsr getsource  
	jsr getaim
 	lda movx
	sta x1_new
	lda movy
	sta y1_new

	lda x2_new
	sta _x2_new
	lda y2_new
	sta _y2_new
smaller_tar
    lda #1
     sta stop_3
	lda pozxy
	sta Pxy
	lda sprite
	sta spr
        lda #20
        sta which_sfx

 jsr _direct
 jsr prepare_mov
 sta fract_mov
 jsr gethigh
 jsr get_horizontal
 lda #0
 sta dlafract
 lda #1
 sta setflag3
 lda _dx_new
 sta dy3

 lda _dy_new
 sta dx3
 lda $112
 sta nowy112_3
 
	lda #0
	sta xmov2
	sta ymov2
	sta ruch1
 jsr keep_inf3_data
 lda nrbroni
 cmp #1
 bne zzzz
  lda #1
  sta set_flag6
 lda #0
 sta stop_3
zzzz
 lda #0
 sta stop_3
 rts

target2 
 lda nrbroni2
 cmp #1
 bne continuu
 jsr for_bazooka1
continuu
 lda #1
 sta stop_4

        jsr getsource  
	jsr getaim
 	lda movx
	sta x1_new
	lda movy
	sta y1_new

	lda x2_new
	sta _x2_new
	lda y2_new
	sta _y2_new

smaller_tar2
 lda #1
 sta stop_4
        lda #20
        sta which_sfx
	lda pozxy
	sta Pxy
	lda sprite
	sta spr
 jsr _direct
 jsr prepare_mov
 sta fract_mov2
 jsr gethigh
 jsr get_horizontal
 lda #0
 sta dlafract
	lda #1
        sta setflag4

 lda _dx_new
 sta dy4
 lda _dy_new
 sta dx4
 lda $112
 sta nowy112_4

zzzz2
	lda #0
	sta xmov2
	sta ymov2
	sta ruch2
 jsr keep_inf4_data

 lda nrbroni2
 cmp #1
 bne zzzzw
  lda #1
  sta set_flag7
 lda #0
 sta stop_4
 rts
zzzzw
 cmp #2
 bne iou
 jsr for_mina1
iou
 lda #0
 sta stop_4
 rts

infinit3
 lda stop_4
 bne infinit3-1
 lda #3
 sta nr_procki
 jsr bring_inf3_data
 lda #1
 sta setflag3
 jsr change_mvm
 jsr changehigh
 jsr change_mvm
 jsr changehigh
 jsr czy_trafiony2
 jsr change_mvm
 jsr changehigh
 jsr change_mvm
 jsr changehigh
 jsr change_mvm
 jsr changehigh
; jsr small_trafiony2
 lda z
 sta $18a
 lda fract
 sta $185
 lda dlafract
 sta $186
 lda _x2_new
 sta pozpm0
 lda _y2_new
 cmp #65
 bcs fiufiu
 lda #65
 sta _y2_new
fiufiu
 jsr clear_naboj
 jsr putnaboj
 jsr keep_inf3_data
 lda setflag3
 bne nieto
 jsr clear_naboj
nieto

 rts 

infinit4
 lda stop_3
 bne infinit4-1
 lda #4
 sta nr_procki

 jsr bring_inf4_data
 lda #1
 sta setflag4
 jsr change_mvm
 jsr changehigh
 jsr change_mvm
 jsr changehigh
 jsr czy_trafiony1
 jsr change_mvm
 jsr changehigh
 jsr change_mvm
 jsr changehigh
 jsr change_mvm
 jsr changehigh
; jsr small_trafiony1
 lda _x2_new
 sta pozpm1
 lda _y2_new
 cmp #65
 bcs fiufiu2
 lda #65
 sta _y2_new
fiufiu2
 jsr clear_naboj2
 jsr putnaboj2
 jsr keep_inf4_data
 lda setflag4
 bne nieto2
 jsr clear_naboj2
nieto2
 lda #0
 sta stop_3
 rts 
_dx dta 0
_dy dta 0
ktorysprite dta b(0)

keep_inf3_data 
 lda $10a
 sta dla10a_inf3
 lda _dy_new
 sta _dy_new_inf3
 lda _dx_new
 sta _dx_new_inf3
 lda $112
 sta dla112_inf3
 lda x2_new
 sta x2_inf3
 lda y2_new
 sta y2_inf3
 lda _x2_new
 sta _x2_new_inf3
 lda _y2_new
 sta _y2_new_inf3
 lda fract
 sta fract_inf3
 lda fract2
 sta fract2_inf3
 lda dlafract
 sta dlafract_inf3
 lda dlafract2
 sta dlafract2_inf3
 lda Pxy
 sta Pxy_inf3
 lda spr
 sta spr_inf3
 lda z
 sta z_inf3
 rts
keep_inf4_data 
 lda $10a
 sta dla10a_inf4
 lda _dy_new
 sta _dy_new_inf4
 lda _dx_new
 sta _dx_new_inf4
 lda $112
 sta dla112_inf4
 lda _x2_new
 sta _x2_new_inf4
 lda _y2_new
 sta _y2_new_inf4
 lda x2_new
 sta x2_inf4
 lda y2_new
 sta y2_inf4
 lda fract
 sta fract_inf4
 lda fract2
 sta fract2_inf4
 lda dlafract
 sta dlafract_inf4
 lda dlafract2
 sta dlafract2_inf4
 lda Pxy
 sta Pxy_inf4
 lda spr
 sta spr_inf4
 lda z
 sta z_inf4
 rts
bring_inf3_data 
 lda dla10a_inf3
 sta $10a
 lda _dy_new_inf3
 sta _dy_new
 lda _dx_new_inf3
 sta _dx_new
 lda #3
 sta nr_procki
 lda dla112_inf3
 sta $112
 lda _x2_new_inf3
 sta _x2_new
 lda _y2_new_inf3
 sta _y2_new
 lda x2_inf3
 sta x2_new
 lda y2_inf3
 sta y2_new
 lda fract_inf3
 sta fract
 lda fract2_inf3
 sta fract2
 lda dlafract_inf3
 sta dlafract
 lda dlafract2_inf3
 sta dlafract2
 lda Pxy_inf3
 sta Pxy
 lda spr_inf3
 sta spr
 lda z_inf3
 sta z
 rts
bring_inf4_data 
 lda dla10a_inf4
 sta $10a
 lda _dy_new_inf4
 sta _dy_new
 lda _dx_new_inf4
 sta _dx_new
 lda #4
 sta nr_procki
 lda dla112_inf4
 sta $112

 lda _x2_new_inf4
 sta _x2_new
 lda _y2_new_inf4
 sta _y2_new
 lda x2_inf4
 sta x2_new
 lda y2_inf4
 sta y2_new
 lda fract_inf4
 sta fract
 lda fract2_inf4
 sta fract2
 lda dlafract_inf4
 sta dlafract
 lda dlafract2_inf4
 sta dlafract2
 lda Pxy_inf4
 sta Pxy
 lda spr_inf4
 sta spr
 lda z_inf4
 sta z
 rts


_dy_new dta 0
_dx_new dta 0
x2_new dta 0
y2_new dta 0
x1_new dta 0
y1_new dta 0
_x2_new dta 0
_y2_new dta 0


;Divides the value in $dD by the value in $dC, 
;8 bit integer result in $dD, the first 8 fraction bits are in $dE. 


prepare_mov
 lda #0
 sta $dc
 sta $dd
 sta $de
 lda _dx_new
 cmp _dy_new
 bcs ikswiekszy
igrekwiekszy
 sta $dd
 sta $180
 lda _dy_new
 sta $dc
 sta $181
 sta dlugosc
 jsr div
 lda $de
 sta fract
 sta $182
 rts
ikswiekszy
 sta $dc
 sta $181
 sta dlugosc
 lda _dy_new
 sta $dd
 sta $180
 jsr div
 lda $de
 sta $182
 sta fract
 rts

get_horizontal

 lda wysokosc
 sta $188
 sta $dd
 lda dlugosc
 sta $dc
 jsr div
 lda $de
 sta fract2

 sta $18b
 rts


; OBLICZENIE RUCHU STRZALU PO POWIERZCHNI PLANSZY Z UWZGLEDNIENIEM WYSOKOSCI



kontener dta b(0)

extralft
 lda spr
 cmp #100
 bcs poza1
 rts
extrarght
 lda spr
 bmi poza1
 rts 

extrabck ; ruch w gore ekranu
 ldy #0
bck
 lda spr
 bmi poza1
 cmp tab2,y
 beq poza1
 iny
 cpy #10
 bne bck
 rts

extrafow ; ruch w dol ekranu
 ldy #0
for
 lda spr
 bmi poza1
 cmp tab1,y
 beq poza1
 iny
 cpy #10
 bne for
 rts

poza1 
 pla
 pla
 pla
 pla
 jsr konczstrzal
 rts	


_mvfwrd lda Pxy
	cmp #7
	beq _exe1
	cmp #8
	beq _exe2
	sec
	sbc #16
	sta Pxy
 	jsr nprzeloz
	bne _goon1
	lda Pxy
	clc
	adc #16
	sta emp
	jsr nprzeloz2
	lda emp
	and #$f
	cmp #8
	bcs _rup
	dec spr
        jsr extrabck
	jsr czykolizja
	jmp _goon1
_rup    lda spr
	sec
	sbc #10
	sta spr
        jsr extrarght
	jsr czykolizja
_goon1  rts


_exe1   lda #$f7
	sta Pxy
__	lda spr
	sec
	sbc #11
	sta spr
        jsr extrarght
        jsr extrabck
	jsr czykolizja
	rts
_exe2   lda #$f8
	sta Pxy
	bne __

_mvbck  lda Pxy
	cmp #$f7
	beq _exe3
	cmp #$f8
	beq _exe4
	clc
	adc #16
	sta Pxy
	jsr nprzeloz
	bne _goon2
	lda Pxy
	sec
	sbc #16
	sta emp
	jsr nprzeloz2
	lda emp	
	and #$f
	cmp #8
	bcs _rdwn
 	lda spr
	clc
	adc #10
	sta spr
        jsr extralft
	jsr czykolizja
	jmp _goon2
_rdwn	inc spr
        jsr extrafow
	jsr czykolizja
_goon2	rts


_exe3   lda #$7
	sta Pxy
___	lda spr
	clc
	adc #11
	sta spr
        jsr extralft
        jsr extrafow
	jsr czykolizja
	rts
_exe4	lda #$8
	sta Pxy
	bne ___

_mvrght inc Pxy
	lda Pxy
	cmp #$7f
	beq _exe5
	cmp #$8f
	beq _exe6
	jsr nprzeloz
	bne _goon3
	lda Pxy
	sec
	sbc #1
	sta emp
	jsr nprzeloz2
	lda emp
	and #$f0
	cmp #$80
	bcs _r
	lda spr
	sec
	sbc #10
	sta spr
        jsr extrarght
	jsr czykolizja
	jmp _goon3
_r	inc spr
        jsr extrafow
	jsr czykolizja
_goon3  rts

_exe5   lda #$70
	sta Pxy
_11	lda spr
	sec
	sbc #9
	sta spr
        jsr extrarght
        jsr extrafow
	jsr czykolizja
	rts
_exe6	lda #$80
	sta Pxy
	bne _11	



_mvlft  dec Pxy
	lda Pxy
	cmp #$70
	beq _exe7
	cmp #$80
	beq _exe8

	jsr nprzeloz
	bne _goon4
	lda Pxy
	clc
	adc #1
	sta emp
	jsr nprzeloz2
	lda emp
	and #$f0
	cmp #$80
	bcs _ll
	dec spr
        jsr extrabck
	jsr czykolizja
	jmp _goon4
_ll	lda spr
	clc
	adc #10
	sta spr
        jsr extralft
	jsr czykolizja
_goon4  rts

					
_exe7	lda #$7f
	sta Pxy
_22	lda spr
	clc
	adc #9
	sta spr
        jsr extralft
        jsr extrabck
	jsr czykolizja
	rts
_exe8	lda #$8f
	sta Pxy
	bne _22


nprzeloz ldy Pxy
	lda $7e00,y
	rts

nprzeloz2 tay
	lda $7d00,y
; 	beq rushto
	sta Pxy
	rts	




;        I
;     1  I  2
;  ------------
;     3  I  4
;        I
;



e dta b(0)

dx dta b(0)
dy dta b(0)

tablx equ $2700
tably equ $2780
xtablx equ $c000
xtably equ $c100




ay3 dta b(0)
ax3 dta b(0)




nabojtab dta b(0),b($20),b($40),b($60)

sprite4 dta b(0)
pojemnik dta b(0)
pojemnik2 dta b(0)


dla106 dta b(0)

clear_naboj ldy _y2_new
	tya
	sbc #8
	tay
	lda #0
	tax
_fg_	sta $5400,y
	iny
	inx
	cpx #22
	bne _fg_
        rts
putnaboj
	ldy _y2_new
	lda #48
	sta $5400,y
	iny	
	sta $5400,y
	iny
	sta $5400,y
	rts

 
fract dta 0
dlafract dta 0

ifchange lda dlafract
 clc
 adc fract
 sta dlafract
 rts


change_mvm
 lda $112
 cmp #1
 bne zadaleko
 jmp __1
zadaleko
 cmp #2
 beq __3
 cmp #3
 beq __2
__4
 lda _dx_new
 cmp _dy_new
 bcs _4_2
_4_1

 jsr _mvbck

 inc _y2_new
 jsr ifchange
 bcc rtees
 inc _x2_new

 jsr _mvrght

rtees
 rts
_4_2
 inc _x2_new

 jsr _mvrght

 jsr ifchange
 bcc ertees3
 inc _y2_new

 jsr _mvbck
ertees3
 rts

__3
 lda _dx_new
 cmp _dy_new
 bcs _3_2
_3_1

 jsr _mvbck

 inc _y2_new

 jsr ifchange
 bcc ertees

 jsr _mvlft

 dec _x2_new
 rts
_3_2

 jsr _mvlft

 dec _x2_new
 jsr ifchange
 bcc ertees

 jsr _mvbck

 inc _y2_new
 rts


__2

 lda _dx_new
 cmp _dy_new
 bcs _2_2
_2_1

 jsr _mvfwrd

 dec _y2_new
 jsr ifchange
 bcc ertees

 jsr _mvrght

 inc _x2_new
 rts
_2_2

 jsr _mvrght

 inc _x2_new
 jsr ifchange
 bcc ertees

 jsr _mvfwrd

 dec _y2_new
 rts
__1
 lda _dx_new
 cmp _dy_new
 bcs _1_2
_1_1

 jsr _mvfwrd

 dec _y2_new
 jsr ifchange
 bcc ertees

 jsr _mvlft

 dec _x2_new
 rts
_1_2

 jsr _mvlft

 dec _x2_new
 jsr ifchange
 bcc ertees

 jsr _mvfwrd

 dec _y2_new
ertees
 rts

 
;        I
;     1  I  3
;  ------------
;     2  I  4
;        I
;
 org $7f00
_direct 	lda x1_new
	cmp x2_new
	beq _1
	bcs _xcellow
_1	lda x2_new
	sec
	sbc x1_new
	sta _dx_new
	lda y1_new
	cmp y2_new
	beq _2
	bcs _ycellow1
_2	lda y2_new
	sec
	sbc y1_new
	sta _dy_new
	lda #1
	sta $112	;ktory kierunek
	rts
_ycellow1 lda y1_new
	sec
	sbc y2_new
	sta _dy_new
	lda #2
	sta $112
	rts
_xcellow lda x1_new
	sec
	sbc x2_new
	sta _dx_new
	lda y1_new
	cmp y2_new
	beq _3
	bcs _ycellow2
_3	lda y2_new
	sec
	sbc y1_new
	sta _dy_new
	lda #3
	sta $112
	rts
_ycellow2 lda y1_new
	sec
	sbc y2_new
	sta _dy_new
	lda #4
	sta $112
	rts


 org $ad00



 rts
czykolizja 
	ldy spr
	lda $a200,y
	asl @
	asl @
	asl @
	cmp z
	bcc czykolizja-1
dlakolizji


konczstrzal 
 lda #22
 sta which_sfx
 lda nr_procki
 cmp #3
 bne inf4__
 lda #0
 sta setflag3
 lda nrbroni
 cmp #1
 bne zzkk
 jsr check_for_surr1
 jsr boom_animation
 jsr take_tile
zzkk
 lda _x2_new
 sta robot_dx
 lda _y2_new
 sta robot_dy
 jmp fnl
inf4__
 lda nrbroni2
 cmp #1
 bne gghh
 jsr check_for_surr2
 jsr boom_animation
 jsr take_tile
gghh
 lda #0
 sta setflag4
fnl

	rts
take_tile
 lda #1
 sta czyodjac
 lda spr
 sta which_one_delete
 lda #30
 sta which_sfx
 rts


boom_animation
 lda #27
 sta boom_flag
 lda sprite
 sta restore+1
 lda spr
 sta sprite
 jsr get_posit2
 lda movx
 sta pozpm2
 clc
 adc #8
 sta pozpm3
 lda movy
 sta pozpm2_x
 sta pozpm3_x
restore
 lda #$ff
 sta sprite
 rts



czy_trafiony1
 lda setflag4
 beq czy_trafiony1-1
 lda _x2_new
 sta $172
 lda _y2_new
 sta $173
 lda sprite2
 sta spp
 lda _pozx1
 sta _px1
 lda _pozy1
 sta _py1
 jsr smaller_aim
small_trafiony1
 lda gdzieduchx
 sec
 sbc _x2_new
 bpl eki
 eor #$ff
eki
 cmp #7
 bcs nietrafionyy
 lda gdzieduchy
 sec
 sbc _y2_new
 bpl ekii
 eor #$ff
ekii
 cmp #7
 bcs nietrafionyy
 lda sprite2
 sta spr
 jsr dlakolizji
 lda energia2
 sec
 sbc #4
 jsr czy_kam2
 sta energia2
 jsr pasek_energii_change

nietrafionyy 

 rts
czy_trafiony2
 lda setflag3
 beq czy_trafiony2-1
 lda sprite3
 sta spp
 lda _pozx2
 sta _px1
 lda _pozy2
 sta _py1
 jsr smaller_aim
small_trafiony2
 lda gdzieduchx
 sec
 sbc _x2_new
 bpl eki2
 eor #$ff
eki2
 cmp #7
 bcs nietrafionyy2
 lda gdzieduchy
 sec
 sbc _y2_new
 bpl ekii2
 eor #$ff
ekii2
 cmp #7
 bcs nietrafionyy2
 lda sprite3
 sta spr
 jsr dlakolizji
 lda energia1
 sec
 sbc #6
 jsr czy_kam1
 sta energia1
 jsr pasek_energii_change
 lda #1
 sta hit
nietrafionyy2

 rts

smaller_aim
	jsr smaller_getsprite
	lda spritewide,x
	sec
	sbc spritewide,y
	clc
	adc #$85
	clc
_px1 equ *+1
	adc #$ff
 sta gdzieduchx
        lda spritehigh,x
	clc
	adc spritewide,y
	clc
_py1 equ *+1
 adc #$ff
;	adc _pozy1

	jsr hihis
	clc
        adc #1
	sta gdzieduchy
	rts
smaller_getsprite

       ldy #255
	iny
	lda spp
	cmp tablszer,y
	bpl smaller_getsprite+2
	dey
	lda spp
	sec
	sbc tablszer,y
	iny
	tax
	rts
hihis    ldy spp
	sty axiss3+1
axiss3	ldy $a200
floopsy	sec
	sbc #8
	dey
	bne floopsy	
	rts
gdzieduchx dta 0
gdzieduchy dta 0
spp dta 0
mina1 dta 0
mina2 dta 0
kamizelka1 dta 0
kamizelka2 dta 0
bazooka1 dta 0
bazooka2 dta 0
bazooka1_counter dta 0
bazooka2_counter dta 0
mina1_counter dta 0
mina2_counter dta 0
dlakogobonus dta 0
czy_robot dta 1
robot_dx dta 0
robot_dy dta 0
hit dta 0
start_1 dta 0
start_2 dta 0
nowy112_3 dta 0
nowy112_4 dta 0
mine_timer dta 0
mine_pointer dta 0
stop_3 dta 0
stop_4 dta 0

put_items
 lda kamizelka1
 beq putserce1
 ldy #61
 jsr serce1_a
 ldy #86
 jsr serce1_b
 jmp nex1
putserce1
 ldy #75
 jsr serce1_a
 ldy #89
 jsr serce1_b
nex1
 lda kamizelka2
 beq putserce2
 ldy #61
 jsr serce2_a
 ldy #86
 jsr serce2_b
 jmp nex2
putserce2
 ldy #75
 jsr serce2_a
 ldy #89
 jsr serce2_b
nex2
 lda nrbroni2
 cmp #1
 beq bazz1
 cmp #2
 beq min1
 ldy #49
 jsr bron1_a 
 ldy #71
 jsr bron1_b
 jmp nex3
bazz1
 ldy #42
 jsr bron1_a
 ldy #64
 jsr bron1_b
 jmp nex3
min1
 ldy #114
 jsr bron1_a
 ldy #119
 jsr bron1_b
nex3
 lda nrbroni
 cmp #1
 beq bazz2
 cmp #2
 beq min2
 ldy #49
 jsr bron2_a 
 ldy #71
 jsr bron2_b
 jmp nex4
bazz2
 ldy #42
 jsr bron2_a
 ldy #64
 jsr bron2_b
 jmp nex4
min2
 ldy #114
 jsr bron2_a
 ldy #119
 jsr bron2_b
nex4
 lda mina1
 beq pouste1
 ldy #105
 sty $4dab
 iny
 sty $4dac
 ldy #110
 sty $4dd3
 iny
 sty $4dd4
 bne nex5
pouste1
 ldy #0
 sty $4dab
 sty $4dac
 sty $4dd3
 sty $4dd4
nex5
 lda bazooka1
 beq pouste2
 ldy #112
 sty $4dd5
 iny
 sty $4dd6
 bne nex6
pouste2
 ldy #0
 sty $4dd5
 sty $4dd6
nex6

 lda mina2
 beq pouste3
 ldy #105
 sty $4dbb
 iny
 sty $4dbc
 ldy #110
 sty $4de3
 iny
 sty $4de4
 bne nex7
pouste3
 ldy #0
 sty $4dbb
 sty $4dbc
 sty $4de3
 sty $4de4
nex7
 lda bazooka2
 beq pouste4
 ldy #112
 sty $4de1
 iny
 sty $4de2
 bne nex8
pouste4
 ldy #0
 sty $4de1
 sty $4de2
nex8 
 rts
 
serce1_a              ;#75
 sty $4d7e
 iny 
 sty $4d7f
 iny
 sty $4d80
 rts
serce1_b              ;#89
 sty $4da6
 iny
 sty $4da7
 iny
 sty $4da8
 rts
serce2_a
 sty $4d97
 iny
 sty $4d98
 iny
 sty $4d99
 rts
serce2_b
 sty $4dbf
 iny
 sty $4dc0
 iny
 sty $4dc1
 rts
bron1_a
 sty $4d5a
 iny
 sty $4d5b
 iny
 sty $4d5c
 iny
 sty $4d5d
 iny
 sty $4d5e
 rts
bron1_b
 sty $4d82
 iny
 sty $4d83
 iny
 sty $4d84
 iny
 sty $4d85
 ldy #68
 sty $4d86
 rts
bron2_a
 sty $4d69
 iny
 sty $4d6a
 iny
 sty $4d6b
 iny
 sty $4d6c
 iny
 sty $4d6d
 rts 
bron2_b
 sty $4d91
 iny
 sty $4d92
 iny
 sty $4d93
 iny
 sty $4d94
 ldy #68
 sty $4d87
 rts

losuj_item
 lda dlakogobonus
 beq dla11
dla22
 lda $d20a
 and #3
 cmp #1
 beq bazzo
 cmp #2
 beq minn
 cmp #3
 beq powerup0
 lda #1
 sta kamizelka1
 rts
bazzo
 sta bazooka1
 lda bazooka1_counter
 clc
 adc #4
 sta bazooka1_counter
 rts
minn
 sta mina1
 lda mina1_counter
 clc
 adc #4
 sta mina1_counter
 rts
powerup0
 lda #31
 sta energia1
 jsr pasek_energii_change
 rts
dla11
 lda $d20a
 and #3
 cmp #1
 beq bazzo2
 cmp #2
 beq minn2
 cmp #3
 beq powerup
 lda #1
 sta kamizelka2
 rts
bazzo2
 sta bazooka2
 lda bazooka2_counter
 clc
 adc #4
 sta bazooka2_counter
 rts
minn2
 sta mina2
 lda mina2_counter
 clc
 adc #4
 sta mina2_counter
 rts
powerup
 lda #31
 sta energia2
 jsr pasek_energii_change
 rts 


robot 
 lda czy_robot
; lda #0
 beq nierobot
 lda ruch1
 cmp #$1a
 bcc bezstrzalu
	lda setflag3
	bne bezstrzalu

 inc $170
 lda #0
 sta nrbroni
 lda hit
 beq form
 lda #0
 sta hit
; lda #0
; sta close_counter
; jsr ifvalidbazooka

 lda #1
 sta nrbroni
 lda #1
 sta andys

form
 lda $170
andys equ *+1
 and #63
 bne nicnic2
 jsr checkforclose
 lda #0
 rts

nicnic2
 jsr checkforclose
bezstrzalu
 lda #1
 rts
 
nierobot lda $d011
 rts

checkforclose
 lda sprite3
 sta spp
 lda _pozx2
 sta _px1
 lda _pozy2
 sta _py1 
 jsr smaller_aim
 lda gdzieduchx
 sec
 sbc robot_dx
 bpl oknie
 eor #$ff
 sta addition+1
 lda gdzieduchy
 sec
 sbc robot_dy
 clc
addition
 adc #$ff
oknie
 sta $178
 cmp #12
 bcs nee2
 jsr ifvalidbazooka
 lda #7
 sta andys
 rts
nee2
 cmp #32
 bcs nee3
 lda #15
 sta andys
 rts
nee3
 cmp #48
 bcs nee4

 lda #31
 sta andys
 rts 
nee4 lda #63
 sta andys
 rts

ifvalidbazooka
 lda bazooka2_counter
; beq ifvalidbazooka-1
; lda $d20a
 and #1
 beq bron0
; dec bazooka2_counter
 lda #1
 sta nrbroni 
 rts
bron0
 lda #0
 sta nrbroni
 rts

bron_change1 

wdol
 lda nrbroni
 sec
 sbc #1
 bpl okokok
 lda #2
 jmp okokok
wgore
 lda nrbroni
 clc
 adc #1
 cmp #3
 bne okokok
 lda #0
 jmp okokok 
okokok
 cmp #2
 bne vnx1
 pha
 lda mina1_counter
 beq before0
 pla
 sta nrbroni
 rts
before0 pla
vnx1 
 cmp #1
 bne vnx2
 pha
 lda bazooka1_counter
 beq before
 pla
 sta nrbroni
 rts
before pla
vnx2
 sta nrbroni
 rts
bron_change2

wdol2
 lda nrbroni2
 sec
 sbc #1
 bpl okokok2
 lda #2
 jmp okokok2
wgore2
 lda nrbroni2
 clc
 adc #1
 cmp #3
 bne okokok2
 lda #0
 jmp okokok2
okokok2
 cmp #2
 bne vnx12
 pha
 lda mina2_counter
 beq before02
 pla
 sta nrbroni2
 rts
before02 pla
vnx12
 cmp #1
 bne vnx22
 pha
 lda bazooka2_counter
 beq before2
 pla
 sta nrbroni2
 rts
before2 pla
vnx22
 sta nrbroni2
 rts
button_offset dta 0
button_offset2 dta 0
bron_lft dta 4
bron_rght dta 8
close_counter dta 0
option_flag dta 0
option_time dta 0
check_for_buttons
 jsr joymoved2
; and #4
 cmp #96  ; dol-lewo
 bne nexx
 lda option_time
 cmp #10
 bcc nexx
 lda #0
 sta option_time
 jsr bron_change2
nexx
 lda $d01f
 and #1
 bne fnf
 pla
 pla
new_beggining
 lda $120
 cmp $120
 beq *-3
 lda #0
 sta $120
 sta lokal+1
 lda <vblk0
 sta vblkvect+1
 lda >vblk0
 sta vblkvect+2
 lda <dltitle
 sta $d402       ;displaylist
 lda >dltitle
 sta $d403
 jsr startmusic
qps
 lda $d010
 bne qps

 lda $120
 adc #60
 cmp $120
 bne *-3
 lda #0
 sta setflag3
 sta setflag4
 sta set_flag6
 sta set_flag7
 sta pozhi
 sta pozhi2
  sta pozhi3 ; dodane
 sta pozhi33
 sta pozyc
 sta pozhi4
 sta pozhi44
 sta $103
        sta mine_pointer
	sta $104
	sta $105
	sta var1
	sta var2
 sta koniec_gry

 lda #100
 sta ile+1
 adc #2
 sta sprite
; sta start_1
; sta start_2
 jmp begg 
fnf 
 rts
 
keyp

key dta 0
pressed dta 0
check_for_surr1

 lda sprite3
 sta victim
 lda spr
 jsr checking
 bne decten
 rts
decten
 lda energia1
 sec
 sbc #15
 jsr czy_kam1
 sta energia1
 jsr pasek_energii_change
 rts
check_for_surr2
 lda sprite2
 sta victim
 lda spr
 jsr checking
 bne decten2
 rts
decten2

 lda energia2
 sec
 sbc #11
 jsr czy_kam2
 sta energia2
 jsr pasek_energii_change
 rts
checking
 sec
 sbc #1
 cmp victim
 beq hit00
 clc 
 adc #2
 cmp victim
 beq hit00
 sec
 sbc #10
 cmp victim
 beq hit00
 sbc #1
 cmp victim
 beq hit00
 sbc #1
 cmp victim
 beq hit00
 clc
 adc #20
 cmp victim
 beq hit00
 adc #1
 cmp victim
 beq hit00
 adc #1
 cmp victim
 beq hit00
nothit00
 lda #0
 rts
hit00
 lda #1
 rts
victim dta 0

czy_kam1
 ldy kamizelka1
 beq hit00-1
 ldy nrbroni2
 cpy #1
 beq baz11
 cpy #2
 beq min11
kar11
 clc 
 adc #1
 rts
baz11
 clc
 adc #2
 rts
min11
 clc
 adc #2
 rts
czy_kam2
 ldy kamizelka2
 beq hit00-1
 ldy nrbroni
 cpy #1
 beq baz11
 cpy #2
 beq min11
 beq kar11
 rts
regA dta 0
regY dta 0
regX dta 0
 org $a270
czy_koniec
 lda koniec_gry
 cmp #2
 beq winning
 cmp #1
 beq loosing
 rts
loosing
 lda #$b0
 sta linia1
 lda #$b3
 sta linia1+1
 sta linia2+1
 lda #$d8
 sta linia2
 jmp wait_for
winning 
 lda #$60
 sta linia1
 lda #$b3
 sta linia1+1
 sta linia2+1
 lda #$88
 sta linia2
wait_for
 lda $120
 cmp $120
 beq *-3
 lda <dlfinish
 sta $d402
 lda >dlfinish
 sta $d403
 lda <vblkzast
 sta vblkvect+1
 lda >vblkzast
 sta vblkvect+2
 lda #0
 sta $d018
 sta $d01a
 lda #$f
 sta $d017
 lda #$fd
 sta hposp0
 sta hposp1
 sta hposp2
 sta hposp3

 lda #$3c
 sta chbase
 lda $120
 adc #100
gli
 cmp $120
 bne gli
 pla
 pla 
 jmp new_beggining
 org $a1a0
dlfinish dta $70,$70,$70,$70,$70,$42
linia1
 dta a($b360),($42)
linia2
 dta a($b388),b($41),a(dlfinish)
vblkzast
 pha
 tya
 pha
 txa
 pha
	jsr RASTERMUSICTRACKER+3
 inc $120
 pla
 tax
 pla
 tay
 pla
 rti

 org $a300





ifchange2 lda dlafract2
 clc
 adc fract2
 sta dlafract2
 rts

changehigh
 lda $10a
 beq _w_gore
_w_dol
 jsr ifchange2
 bcc ertees2
 dec z
 jsr czykolizja
 rts
_w_gore
 jsr ifchange2
 bcc ertees2
 inc z
ertees2
 rts

hihi2    ldy sprite
	sty _axis3+1
_axis3	ldy $a200
floopy2	clc
	adc #8
	dey
	bne floopy2	
	rts

_spr dta b(0)
spr2 dta b(0)
_z dta b(0)
z2 dta b(0)
_Pxy dta b(0)


clear_naboj2 
        ldy _y2_new
	tya
	sbc #8
	tay
	lda #0
	tax
q_fg_	sta $5500,y
	iny
	inx
	cpx #23
	bne q_fg_
        rts

putnaboj2
	ldy _y2_new
	lda #48
	sta $5500,y
	iny	
	sta $5500,y
	iny
	sta $5500,y
	rts

play_sfx
 lda time_pass
 cmp #15
 bcc play_sfx-1
 lda which_sfx
 cmp #20
 beq strzal
 cmp #22
 beq trafiony
 cmp #24
 beq smierc
 cmp #26
 beq wygrana
 cmp #28
 beq bonus
 cmp #30
 beq wybuch
 rts
strzal
 tay
 ldx #3
 lda #12
 bne playit
trafiony
 tay
 ldx #3
 lda #12
playit
 jsr RASTERMUSICTRACKER+15
 lda #0
 sta which_sfx
 lda time_pass
 rts
smierc
 tay
 ldx #3
 lda #15
  bne playit
 rts
wygrana
 tay
 ldx #3
 lda #10
 bne playit
 rts
bonus
 tay
 ldx #3
 lda #40
 bne playit
wybuch
 tay
 ldx #3
 lda #55
 bne playit
which_sfx dta 0
time_pass dta 0
czyodjac dta 0
which_one_delete dta 0	
blokada dta b(0)	
enable dta b(0)
nrplanszy dta b(0)
kasujkratke dta b(0),b(0),b(0),b(0),b(0),b(0)
kratkakopia dta b(0),b(0),b(0),b(0),b(0),b(0)
tabkratka dta b(8),b(5),b(95),b(62)
tabkratk2 dta b(49),b(17),b(1),b(92)
tabkratk3 dta b(0),b(9),b(90),b(99)
tabkratk4 dta b(9),b(40),b(69),b(92)
;tabkratk5 dta b(9),b(50),b(91),b(12) ; w mapp5.txt
ilekratek dta b(4),b(4),b(4),b(4),b(4),b(4)
plansze dta a(tabkratka),a(tabkratk2),a(tabkratk3),a(tabkratk4),a(tabkratk5)

poztab dta b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0)
poztab2 dta b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0),b(0)


;ntabl dta b(0),b(0),b(0),b(0),b($ff),b(0),b(0),b(0),b(0)
;ntabl2 dta b(0),b(0),b(0),b(0),b($ff)

nope dta $eb

;regA dta 0
;regY dta 0
;regX dta 0

dli8
	sta regA
	stx regX
	sty regY
    sta wsync
s4	lda #$03
x4	ldx #$48
c9	ldy #$0E
	sta wsync		;line=16
	sta sizep0
	stx hposp0
	sty colpm0
      lda <dli9
      sta nimm+1
      lda >dli9
      sta nimm+2
 lda regA
 ldx regX
 ldy regY
 rti

dli9
	sta regA
	stx regX
	sty regY

	sta wsync		;line=24
s5	lda #$01
x5	ldx #$5A
	ldy #$96 ;96
	sta wsync		;line=25
	sty hposp2
	sta sizep0
	sta sizep2
	stx hposp0
c10	lda #$0A
	sta colpm0
	sta colpm2
      lda <dli10
      sta nimm+1
      lda >dli10
      sta nimm+2
 lda regA
 ldx regX
 ldy regY
 rti

dli10
	sta regA
	stx regX
	sty regY

	sta wsync		;line=32
	sta wsync		;line=33
	sta wsync		;line=34
s6	lda #$00
x7	ldx #$4A
	ldy #$AE
	sta wsync		;line=35
	sta sizep0
	sta sizep2
	stx hposp0
	sty hposp2
c11	lda #$B8
	sta colpm0
c12	lda #$28
	sta colpm2
      lda <dli11
      sta nimm+1
      lda >dli11
      sta nimm+2
 lda regA
 ldx regX
 ldy regY
 rti

dli11
	sta regA
	stx regX
	sty regY

	sta wsync		;line=48
s7	lda #$03
x9	ldx #$34
x10	ldy #$AC
	sta wsync		;line=49
	sta sizep0
	sta sizep2
	stx hposp0
	sty hposp2
c13	lda #$4A
	sta colpm0
c14	lda #$1A
	sta colpm2
	sta wsync		;line=50
c15	lda #$0E
	sta wsync		;line=51
	sta colpm0
	sta colpm2
	sta wsync		;line=52
c16	lda #$2C
	sta wsync		;line=53
	sta colpm0
	sta colpm2
      lda <dll2
      sta nimm+1
      lda >dll2
      sta nimm+2
 lda regA
 ldx regX
 ldy regY
 rti

dll2 pha
     sta $d40a
ktoryzestaw
     lda #$c4
     sta $d409
 lda pozpm0 
 sta $d000
 lda pozpm1
 sta $d001
 lda pozpm2
 sta $d002
 lda pozpm3
 sta $d003
 lda #0
 sta sizep0
 sta sizep1
 sta sizep2
 sta sizep3
 sta colpm0
 sta colpm1
 lda _colpm2
 sta colpm2
 lda _colpm3
 sta colpm3
     pla
     rti


init_gfx
c0	lda #$8C
	sta colbak
c1	lda #$00
	sta color0
c2	lda #$82
	sta color1
c3	lda #$8A
	sta color2
c4	lda #$00
	sta color3
	lda #$01
	sta gtictl
s0	lda #$01
	sta sizep0
x0	lda #$78
	sta hposp0
c5	lda #$1C
	sta colpm0
s1	lda #$01
	sta sizep1
s2	lda #$03
	sta sizep2
s3	lda #$01
	sta sizep3
	lda #$32
	sta hposp1
	lda #$98
	sta hposp2
x3	lda #$BE
	sta hposp3
c6	lda #$9C
	sta colpm1
c7	lda #$0E
	sta colpm2
c8	lda #$9C
	sta colpm3
       rts


boom_anim
 lda boom_flag
 beq boom_anim-1
 cmp #27
 bne niekasuj
 ldy #59
 lda #0
kopiuj
 sta $5600,y
 sta $5700,y
 iny
 bne kopiuj
 ldy pozpm2_x
 cpy #$30
 bcc zerowybuchu
niekasuj
 sta cozrobic
 ldx #0
 ldy pozpm2_x
 lda #0
loop00
 sta $5600,y
 sta $5700,y
 iny
 inx
 cpx #$30
 bne loop00
cozrobic equ *+1
 lda #0
 lsr @
 lsr @
 tay
 lda boom1_tab_size,y
 sta ilepixli1
 lda boom2_tab_size,y
 sta ilepixli2
 tya
 asl @
 tay
 lda boom1_tab,y
 sta skad_pm+1
 lda boom2_tab,y
 sta skad_pm2+1
 iny
 lda boom1_tab,y
 sta skad_pm+2
 lda boom2_tab,y
 sta skad_pm2+2
 ldy #0
 ldx pozpm2_x
loop_spr_1
skad_pm
 lda $ffff,y
 sta $5600,x
 iny
 inx
ilepixli1 equ *+1
 cpy #$ff
 bne loop_spr_1
 ldy #0
 ldx pozpm3_x
loop_spr_2
skad_pm2
 lda $ffff,y
 sta $5700,x
 iny
 inx
ilepixli2 equ *+1
 cpy #$ff
 bne loop_spr_2
 dec boom_flag
zerowybuchu 
 rts


get_posit2
	jsr getsprite
	lda spritewide,x
	sec
	sbc spritewide,y
	clc
	adc #$83
	sta movx

	lda spritehigh,x
	clc
	adc spritewide,y

	jsr hihi
	clc
        adc #1
	sta movy
 rts


make_direct

proceed9
 jsr bring_inf3_data
 lda spr
 sta dlaspr
 sta dlaspr2
 lda setflag3
 beq dontswap
 lda #15
 sta extr
 lda emp
 sta dlaemp0
 lda _x2_new
 sta dlax2
 lda _y2_new
 sta dlay2
 lda x1_new
 sta _x2_new
 lda y1_new
 sta _y2_new
dontswap
 lda #0
 sta setflag3
 lda #1
 sta set_flag6

 lda dx3
 sta _dx_new
 lda dy3
 sta _dy_new
 jsr joymoved
 cmp #4     ;lewo
 bne gitr
 lda extr
 beq dontmove
 dec extr
 ldy nowy112_3
 lda nachyl_left,y
 sta $112
 jmp changeit
gitr cmp #8  ;prawo
 bne eork
 lda extr
 cmp #30
 beq dontmove
 inc extr
 ldy nowy112_3
 lda nachyl_rght,y
 sta $112 
changeit

 jsr change_mvm
 jsr change_mvm
 lda #0
 sta czyodjac
 sta which_sfx
 sta boom_flag
dlaspr2 equ *+1
 lda #$ff
 sta spr
 lda #0
 sta czyodjac
 sta boom_flag
 sta which_sfx
eork
 lda _y2_new
 cmp #63
 bcc dm
 jsr clear_naboj
 jsr put_viewfinder

 lda _x2_new
 sta pozpm0
dm
dontmove
 lda czy_robot
 bne strzalv
 lda $d011
 bne didnt
 lda ruch1
 cmp #10
 bcc didnt
strzalv
 jsr clear_naboj
 lda _x2_new
 sta x1_new
 lda _y2_new
 sta y1_new
dlax2 equ *+1
 lda #$ff
 sta _x2_new
dlay2 equ *+1
 lda #$ff
 sta _y2_new
dlaemp0 equ *+1
 lda #$ff
 sta emp
 jsr smaller_tar
dlaspr equ *+1
 lda #$ff
 sta spr_inf3
 lda #0
 sta set_flag6
 sta ruch1
 rts

didnt
 lda ruch1
 cmp #10
 bcc *+5
 dec ruch1
 jsr keep_inf3_data
 rts

test6 dta $eb

 org $5b00

make_direct2
 jsr bring_inf4_data
; lda $d20a
; sta $d01a
 lda spr
 sta _dlaspr
 sta _dlaspr2
 lda setflag4
 beq _dontswap
 lda #15
 sta extr2
 lda emp
 sta dlaemp
 lda _x2_new
 sta _dlax2
 lda _y2_new
 sta _dlay2
 lda x1_new
 sta _x2_new
 lda y1_new
 sta _y2_new
_dontswap
 lda #0
 sta setflag4
 lda #1
 sta set_flag7

 lda dx4
 sta _dx_new
 lda dy4
 sta _dy_new
 jsr joymoved2
 lsr @
 lsr @
 lsr @
 lsr @
 cmp #4     ;lewo
 bne _gitr
 lda extr2
 beq dontmove2
 dec extr2
 ldy nowy112_4
 lda nachyl_left,y
 sta $112
 jmp _changeit
_gitr cmp #8  ;prawo
 bne _eork
 lda extr2
 cmp #30
 beq dontmove2
 inc extr2
 ldy nowy112_4
 lda nachyl_rght,y
 sta $112 
_changeit

 jsr change_mvm
 jsr change_mvm
 lda #0
 sta czyodjac
 sta which_sfx
 sta boom_flag
_dlaspr2 equ *+1
 lda #$ff
 sta spr
_eork
 lda _y2_new
 cmp #63
 bcc dm2
 jsr clear_naboj2
 jsr put_viewfinder2

 lda _x2_new
 sta pozpm1
dm2
dontmove2
 lda $d010
 bne _didnt
 lda ruch2
 cmp #10
 bcc _didnt

 jsr clear_naboj2
 lda _x2_new
 sta x1_new
 lda _y2_new
 sta y1_new
_dlax2 equ *+1
 lda #$ff
 sta _x2_new
_dlay2 equ *+1
 lda #$ff
 sta _y2_new
dlaemp equ *+1
 lda #$ff
 sta emp
 jsr smaller_tar2
_dlaspr equ *+1
 lda #$ff
 sta spr_inf4
 lda #0
 sta set_flag7
 sta ruch2
 rts

_didnt
 lda ruch2
 cmp #10
 bcc *+5
 dec ruch2
 jsr keep_inf4_data
 rts
 dta $eb

 org $4b00
extr dta 0
extr2 dta 0
stopper dta b(0)
czypowtorz dta b(0)
endflag dta b(0)
kontrolna dta b(0)
what dta b(0)
temp5 dta b(0)
nabojy dta b(0)
emp dta b(0)
emp2 dta b(0)
_y2 dta b(0)
_x2 dta b(0)
_y3 dta b(0)
_x3 dta b(0)
_nlicznik dta b(0)
_nlicznik2 dta b(0)
_nlicznik3 dta b(0)
nr_procki dta 0
x2_inf3 dta 0
y2_inf3 dta 0
x2_inf4 dta 0
y2_inf4 dta 0
test2 dta $eb
_y2_new_inf3 dta 0
_x2_new_inf3 dta 0
_y2_new_inf4 dta 0
_x2_new_inf4 dta 0
movx dta 0
movy dta 0
dlugosc dta 0
fract2 dta 0
dlafract2 dta 0
butllethigh dta 0
dla112_inf3 dta 0
dla112_inf4 dta 0
z_inf3 dta 0
z_inf4 dta 0
Pxy_inf3 dta 0
spr_inf3 dta 0
Pxy_inf4 dta 0
spr_inf4 dta 0
_dy_new_inf3 dta 0
_dx_new_inf3 dta 0
_dy_new_inf4 dta 0
_dx_new_inf4 dta 0
pozpm0 dta 0 
pozpm1 dta 0
pozpm2 dta 0
pozpm3 dta 0
pozpm2_x dta 0
pozpm3_x dta 0
boom_flag dta 0
dla10a_inf3 dta 0
dla10a_inf4 dta 0
nrbroni dta 2
nrbroni2 dta 0
set_flag6 dta 0
set_flag7 dta 0
dx3 dta 0
dy3 dta 0
dx4 dta 0
dy4 dta 0
dlafract_inf4 dta 0
dlafract2_inf4 dta 0
dlafract_inf3 dta 0
dlafract2_inf3 dta 0
fract_mov dta 0
fract_mov2 dta 0


put_viewfinder2
 ldy _y2_new
 ldx #0
alaay
 lda #8
 sta $5500,y
 iny
 inx
 cpx #12
 bne alaay
 tya
 sec
 sbc #7
 tay
 lda #127
 sta $5500,y
 iny
 sta $5500,y
 rts

put_viewfinder
 ldy _y2_new
 ldx #0
alaa
 lda #8
 sta $5400,y
 iny
 inx
 cpx #12
 bne alaa
 tya
 sec
 sbc #7
 tay
 lda #127
 sta $5400,y
 iny
 sta $5400,y
 rts


check_for_mine
 ldy mine_pointer
 beq konczsprawdzanie
 lda mine_timer
 beq kosgo
 dec mine_timer
 jmp konczsprawdzanie
kosgo
mine_loop
 lda mine_field,y
 cmp sprite
 beq wybuchminy
 dey
 bne mine_loop
konczsprawdzanie
 rts
wybuchminy

 sta spr
 lda #102
 sta mine_field,y
 lda #30
 sta which_sfx
 jsr boom_animation
 lda pozpm2_x
 sbc #15
 sta pozpm2_x
 sta pozpm3_x
 jsr decr_energy
 lda ktorysprite
 bne zzv
 lda energia2  ; robot
 sec
 sbc #8
 jsr czy_kam2
 sta energia2
	jsr pasek_energii_change
 rts
zzv
 lda energia1
 sec
 sbc #12
 jsr czy_kam1
 sta energia1
	jsr pasek_energii_change
 rts

 
mine_field :15 dta 102

 org $4c00

poz_mine_y dta 0
mine_show_timer dta 0
_colpm2 dta 0
_colpm3 dta 0
put_mine
 lda mine_timer
 bne eertte 
 inc mine_pointer
 ldy mine_pointer
 lda sprite
 sta mine_field,y
 lda #95
 sta mine_timer
 jsr get_posit2
 lda movx
 sec 
 sbc #3
 sta pozpm2
 clc
 adc #8
 sta pozpm3
 lda movy
 adc #12
 sta poz_mine_y
 lda #15
 sta mine_show_timer
eertte
 rts
check_for_mine_show
 lda mine_show_timer
 beq check_for_mine_show-1
 cmp #1
 bne fooo
 lda #0
 sta _colpm2
 sta _colpm3
 jsr clear_spr_area
 dec mine_show_timer
 rts
fooo
 dec mine_show_timer
 ldy poz_mine_y
 ldx #0
robmine
 lda mine_spr1,x
 sta $5600,y
 lda mine_spr2,x
 eor #$ff
 sta $5700,y
 iny
 inx
 cpx #16
 bne robmine
 lda $d20a
 sta _colpm2
 sta _colpm3
 rts
clear_spr_area
 ldy #58
 lda #0
klir
 sta $5600,y
 sta $5700,y
 iny
 bne klir
 rts
mine_spr1
 dta %00000001
 dta %00000011
 dta %00000111
 dta %00001111
 dta %00011111
 dta %00111111
 dta %01111111
 dta %11111111
mine_spr2
 dta %01111111
 dta %00111111
 dta %00011111
 dta %00001111
 dta %00000111
 dta %00000011
 dta %00000001
 dta %00000000
 dta %00000001
 dta %00000011
 dta %00000111
 dta %00001111
 dta %00011111
 dta %00111111
 dta %01111111
 dta %11111111

fract_inf4 dta 0
fract2_inf4 dta 0
fract_inf3 dta 0
fract2_inf3 dta 0
sourcex dta b(0)
sourcey dta b(0)
buforx dta b(0)
bufory dta b(0)
divid dta b(0)
reszta dta b(0)
nachyl_left dta 0,2,1,1,2
nachyl_rght dta 0,3,4,4,3

 org $2bd0
for_mina1
 lda mina1_counter ; dla gracza; nie bota
 beq youa
 dec mina1_counter
 jsr put_mine 
youa
 jsr pouste1
 rts
for_bazooka1
 lda bazooka1_counter
 beq zgas
 dec bazooka1_counter
 rts
zgas pla
 pla
 jsr pouste2
 rts
hposp0	=	$D000		; pozioma pozycja gracza 0 (Z)
hposp1	=	$D001		; pozioma pozycja gracza 1 (Z)
hposp2	=	$D002		; pozioma pozycja gracza 2 (Z)
hposp3	=	$D003		; pozioma pozycja gracza 3 (Z)
hposm0	=	$D004		; pozioma pozycja pocisku 0 (Z)
hposm1	=	$D005		; pozioma pozycja pocisku 1 (Z)
hposm2	=	$D006		; pozioma pozycja pocisku 2 (Z)
hposm3	=	$D007		; pozioma pozycja pocisku 3 (Z)
sizep0	=	$D008		; poziomy rozmiar gracza 0 (Z)
sizep1	=	$D009		; poziomy rozmiar gracza 1 (Z)
sizep2	=	$D00A		; poziomy rozmiar gracza 2 (Z)
sizep3	=	$D00B		; poziomy rozmiar gracza 3 (Z)
sizem	=	$D00C		; poziomy rozmiar pociskw (Z)
grafp0	=	$D00D		; rejestr grafiki gracza 0 (Z)
grafp1	=	$D00E		; rejestr grafiki gracza 1 (Z)
grafp2	=	$D00F		; rejestr grafiki gracza 2 (Z)
grafp3	=	$D010		; rejestr grafiki gracza 3 (Z)
grafm	=	$D011		; rejestr grafiki pociskw (Z)
colpm0	=	$D012		; rejestr koloru gracza i pocisku 0 (Z)
colpm1	=	$D013		; rejestr koloru gracza i pocisku 1 (Z)
colpm2	=	$D014		; rejestr koloru gracza i pocisku 2 (Z)
colpm3	=	$D015		; rejestr koloru gracza i pocisku 3 (Z)
colpf0	=	$D016		; rejestr koloru pola gry 0 (Z)
colpf1	=	$D017		; rejestr koloru pola gry 1 (Z)
colpf2	=	$D018		; rejestr koloru pola gry 2 (Z)
colpf3	=	$D019		; rejestr koloru pola gry 3 (Z)
colbak	=	$D01A		; rejestr koloru ta (Z)

color0	=	colpf0
color1	=	colpf1
color2	=	colpf2
color3	=	colpf3

kolm0pf	=	$D000		; kolizja pocisku 0 z polem gry (O)
kolm1pf	=	$D001		; kolizja pocisku 1 z polem gry (O)
kolm2pf	=	$D002		; kolizja pocisku 2 z polem gry (O)
kolm3pf	=	$D003		; kolizja pocisku 3 z polem gry (O)
kolp0pf	=	$D004		; kolizja gracza 0 z polem gry (O)
kolp1pf	=	$D005		; kolizja gracza 1 z polem gry (O)
kolp2pf	=	$D006		; kolizja gracza 2 z polem gry (O)
kolp3pf	=	$D007		; kolizja gracza 3 z polem gry (O)
kolm0p	=	$D008		; kolizja pocisku 0 z graczem (O)
kolm1p	=	$D009		; kolizja pocisku 1 z graczem (O)
kolm2p	=	$D00A		; kolizja pocisku 2 z graczem (O)
kolm3p	=	$D00B		; kolizja pocisku 3 z graczem (O)
kolp0p	=	$D00C		; kolizja gracza 0 z innym graczem (O)
kolp1p	=	$D00D		; kolizja gracza 1 z innym graczem (O)
kolp2p	=	$D00E		; kolizja gracza 2 z innym graczem (O)
kolp3p	=	$D00F		; kolizja gracza 3 z innym graczem (O)
trig0	=	$D010		; stan przycisku joysticka 0 (O)
trig1	=	$D011		; stan przycisku joysticka 1 (O)
trig3	=	$D013		; znacznik doczenia cartridge-a (O)
pal	=	$D014		; znacznik systemu TV (O)

gtictl	=	$D01B		; rejestr kontroli ukadu GTIA
gtiactl	=	gtictl

vdelay	=	$D01C		; licznik opnienia pionowego P/MG
pmcntl	=	$D01D		; rejestr kontroli graczy i pociskw
hitclr	=	$D01E		; rejestr kasowania rejestrw kolizji
consol	=	$D01F		; rejestr stanu klawiszy konsoli

* ---------------------------------------------------------------------------------------------
* ---	POKEY
* ---------------------------------------------------------------------------------------------

irqens	=	$0010		; rejestr-cie IRQEN
irqstat	=	$0011		; rejestr-cie IRQST

audf1	=	$d200		; czstotliwo pracy generatora 1 (Z)
audc1	=	$d201		; rejestr kontroli dwiku generatora 1 (Z)
audf2	=	$d202		; czstotliwo pracy generatora 2 (Z)
audc2	=	$d203		; rejestr kontroli dwiku generatora 2 (Z)
audf3	=	$d204		; czstotliwo pracy generatora 3 (Z)
audc3	=	$d205		; rejestr kontroli dwiku generatora 3 (Z)
audf4	=	$d206		; czstotliwo pracy generatora 4 (Z)
audc4	=	$d207		; rejestr kontroli dwiku generatora 4 (Z)

audctl	=	$D208		; rejestr kontroli generatorw dwiku (Z)
stimer	=	$D209		; rejestr zerowania licznikw (Z)
kbcode	=	$D209		; kod ostatnio nacinitego klawisza (O)
skstres	=	$D20A		; rejestr statusu zcza szeregowego (Z)
random	=	$D20A		; rejestr liczby losowej (O)
serout	=	$D20D		; szeregowy rejestr wyjciowy (Z)
serin	=	$D20D		; szeregowy rejestr wejciowy (O)
irqen	=	$D20E		; zezwolenie przerwa IRQ (Z)
irqst	=	$D20E		; status przerwa IRQ (O)
skctl	=	$D20F		; rejestr kontroli zcza szeregowego (Z)
skstat	=	$D20F		; rejestr statusu zcza szeregowego (O)

* ---------------------------------------------------------------------------------------------
* ---	PIA
* ---------------------------------------------------------------------------------------------
porta	=	$D300		; port A ukadu PIA
portb	=	$D301		; port B ukadu PIA
pactl	=	$D302		; rejestr kontroli portu A
pbctl	=	$D303		; rejestr kontroli portu B

* ---------------------------------------------------------------------------------------------
* ---	ANTIC
* ---------------------------------------------------------------------------------------------
dmactl	=	$D400		; rejestr kontroli dostpu do pamici
chrctl	=	$D401		; rejestr kontroli wywietlania znakw
dlptr	=	$D402		; adres programu ANTIC-a
hscrol	=	$D404		; znacznik poziomego przesuwu obrazu
vscrol	=	$D405		; znacznik pionowego przesuwu obrazu
pmbase	=	$D407		; adres pamici graczy i pociskw
chbase	=	$D409		; adres zestawu znakw
wsync	=	$D40A		; znacznik oczekiwania na synchronizacj poziom
vcount	=	$D40B		; licznik linii obrazu
lpenh	=	$D40C		; poziome pooenie pira wietlengo
lpenv	=	$D40D		; pionowe pooenie pira wietlnego
nmien	=	$D40E		; rejestr zezwole na przerwania NMI
nmist	=	$D40F		; rejestr statusu przerwa NMI

