set kernel_options no_blank_lines set romsize 2k const pfscore=1 const pfres=11 dim _sc1=score dim _sc2=score+1 dim _sc3=score+2 dim _High_Score2=y dim _High_Score3=z titlescreen a=0 : b=0 _sc1=$aa if _sc2 > _High_Score2 then goto __New_High_Score if _sc2 < _High_Score2 then goto __Skip_High_Score if _sc3 > _High_Score3 then goto __New_High_Score goto __Skip_High_Score __New_High_Score _High_Score2 = _sc2 : _High_Score3 = _sc3 __Skip_High_Score playfield: X............................... XXX.XXX.XX..XXX.XX..XXX.XXX..... X.X.X.X.X.X.X.X.X.X.X.X.X....... X.X.XXX.X.X.XXX.X.X.XXX...X..... XXX.X.X.X.X.X.X.X.X.X.X.XXX..... ................................ XXX..XX.XXX......XXX.XXX.XXX...X X.X.X...XXX......XXX.X.X.X.X...X XXX.X...X..........X.X.X.X.X.XXX X.X.X...XXX......XXX.XXX.XXX.XXX end player1: %11 %11 end l=1 : m=2 player1x=77 : player1y=48 titlescreen_loop COLUBK=$0e : COLUPF=$1a CTRLPF=$21 : scorecolor=$21 NUSIZ0=$27 if a>14 then a=0 : b=b+1 c=b/4 _sc2 = _High_Score2 : _sc3 = _High_Score3 player0y=170 : missile1y=170 AUDV1=4 : AUDV0=4 if bananasong[b]>32 && a>10 then AUDV0=0 AUDC0=4 : AUDF0=bananasong[b] AUDC1=12 : AUDF1=bananasongbass[c] if b{6} then b=0 gosub fly_movement if joy0fire then goto main_game_setup drawscreen goto titlescreen_loop main_game_setup playfield: .............XX................. ............XXX................. ...........XXX.................. ..........XXX................... ..........XXX................... ..........XXX................... ..........XXX................... ...........XXX.................. ............XXX................. .............XX................. end f=0 : h=0 : k=0 : _sc2=0 : _sc3=0 j=$1c pfscorecolor=$42 : player0x=$42 : player0y=$42 pfscore1=255 player0: %111 %111 %111 %111 %111 %111 %111 end main_game f=f+1 if f>59 then pfscore1=pfscore1/2 : f=0 COLUPF=j NUSIZ0=5 COLUP0=$aa : _sc1=$aa if switchreset then goto titlescreen missile1y=player0y+missile1height : missile1x=player0x+14 drawscreen if pfscore1=0 then k=31 : j=j-2 : pfscore1=255 if j=$12 then goto game_over gosub fly_movement AUDV0=h/4 : AUDV1=k/4 if h>0 then h=h-1 : AUDC0=12 : AUDF0=h if k>0 then k=k-1 : AUDC1=1 : AUDF1=k if joy0fire && o<31 && collision(player1,player0) then h=32 : pfscore1=255 : gosub speed_up if o>30 then o=31 if joy0fire then o=o+1 : missile1height=4 : player0height=4 : goto main_game missile1height=7 : player0height=7 : o=7 if joy0left then player0x=player0x-1 if joy0right then player0x=player0x+1 if joy0up then player0y=player0y-1 if joy0down then player0y=player0y+1 if player0x<2 then player0x=140 if player0x>140 then player0x=2 if player0y<2 then player0y=88 if player0y>88 then player0y=2 goto main_game game_over player1y=200 : player0y=200 : missile1y=200 : g=200 : i=200 playfield: ................................ ................................ ................................ XXX.XXX.XXXXX.XX...XXX.X.X.XX.XX X.X...X.X.X.X.XX...X.X.X.X.XX.X. XXX.XXX.X.X.X.XX...X.X.X.X.XX.X. ..X.X.X.X.X.X.X....X.X.X.X.X..X. XXX.XXX.X.X.X.XX...XXX..X..XX.X. ................................ ................................ end game_over_loop if i>20 then i=i-1 if !joy0fire && g{0} then goto titlescreen if i=20 && joy0fire && !g{0} then g{0}=1 drawscreen goto game_over_loop speed_up player1x=rand&127 : player1y=rand&63 score=score+1 if score=25 || score=50 then m=m+1 : l=l+1 return fly_movement a=a+1 COLUP1=0 if a{1} then e=rand&31 if player1x>10 then player1x=player1x-l if e{1} && player1x<150 then player1x=player1x+m if player1y>2 then player1y=player1y-l if e{2} && player1y<88 then player1y=player1y+m return data bananasong 15, 15, 15, 20, 18, 20, 20, 23, 24, 20, 20, 20, 20, 20, 52, 20 18, 13, 13, 15, 16, 18, 18, 16, 20, 20, 20, 20, 20, 20, 20, 20 15, 15, 15, 20, 18, 20, 20, 23, 24, 20, 20, 20, 20, 20, 52, 20 18, 13, 13, 15, 16, 18, 18, 16, 15, 15, 15, 15, 15, 15, 15, 47, 15 end data bananasongbass 20, 27, 20, 27, 18, 25, 27, 21 20, 27, 20, 27, 18, 27, 20, 27, 20 end