set kernel_options no_blank_lines set romsize 32kSC rem set debug cyclescore const noscore=1 const pfres=24 var7=1 title_screen k{2}=0 : k{3}=0 var24=0 : var4=0 t{7}=1 : m{5}=0 t{0}=0 : t{1}=1 u{6}=0 z{1}=0 if l>99 && var7=1 then goto game_over_100_setup bank4 drawscreen if var7>1 then score=0 title_screen_2 pfclear l=0 u{7}=0 drawscreen gosub new_blocks player1: %11111110 %11111111 %11111111 %01111111 %00011000 %00011000 %00011000 %00011000 end player0: %1 end CTRLPF=$01 j=0 : b=0 : c=0 : d=0 : e=0 : f=0 : g=0 : h=0 k{6}=0 : k{7}=0 : a{6}=1 : var33=15 title_screen_music if switchselect then z{1}=1 if !switchselect && z{1} then var7=var7+1 : z{1}=0 if var7=0 then z{0}=1 : pfpixel 0 10 off if var7=1 then z{0}=0 if var7=2 then z{0}=0 : pfpixel 0 10 on : h=h+1 : j=j+1 : COLUP0=66 : COLUP1=0 : gosub music pfpixel m n on : pfpixel o p on : pfpixel q r on : pfpixel s v on if a{6} then x=x+1 COLUP0=66 : COLUP1=0 if switchrightb then t{6}=0 : pfhline 16 21 17 on : pfhline 16 22 17 on else t{6}=1 : pfhline 16 21 17 off : pfhline 16 22 17 off if var7=0 then NUSIZ0=$01 : NUSIZ1=$01 : h=h+1 : j=j+1 : gosub music if var7>0 then NUSIZ0=$00 : NUSIZ1=$00 if x>10 && a{6} then j=j+1 : h=h+1 if x>10 && a{6} then COLUP0=66 : COLUP1=0 : gosub music if x>10 && n=y && l<9 then gosub new_blocks if x>10 && n10 && n8 then e=0 else e=6 if h>treble_length[g] then h=0 : g=g+1 : f=f+1 if g>15 then g=0 : f=0 : var24=var24+1 AUDV1=b : AUDF1=c : AUDC1=d AUDV0=e : AUDF0=treble_music[f] : AUDC0=4 if j<9 then b=6 : c=15 : d=10 if j>8 then b=0 if j>20 then b=6 : c=15 : d=10 if j>28 then b=0 if j>40 then b=6 : c=8 : d=8 if j>48 then b=0 if j>60 && !t{1} then b=6 : c=16 : d=10 if j>60 && t{1} then b=6 : c=20 : d=10 if j>79 then j=0 if j=60 && t{1} then t{1}=0 : return if j=60 && !t{1} then t{1}=1 return new_blocks l=l+1 : n=0 if l=1 then m=3 : o=4 : p=0 : q=4 : r=1 : s=5 : v=1 : y=12 if l=2 then m=7 : o=7 : p=1 : q=7 : r=2 : s=8 : v=2 : y=11 if l=3 then m=10 : o=11 : p=0 : q=10 : r=1 : s=11 : v=1 : y=12 if l=4 then m=13 : o=14 : p=0 : q=13 : r=1 : s=14 : v=1 : y=12 if l=5 then m=16 : o=17 : p=0 : q=18 : r=0 : s=17 : v=1 : y=12 if l=6 then m=20 : o=21 : p=0 : q=20 : r=1 : s=20 : v=2 : y=11 if l=7 then m=23 : o=23 : p=1 : q=23 : r=2 : s=23 : v=3 : y=10 if l=8 then m=26 : o=27 : p=0 : q=25 : r=1 : s=26 : v=1 : y=12 if l>8 then l=9 : n=12 : a{6}=0 return get_p1_next_shape if var28=0 || var30=0 then var27=(rand/32)+1 pfhline 16 8 19 off : pfhline 16 9 19 off : pfhline 16 10 19 off : pfpixel 17 11 off COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen if var27=1 then pfpixel 17 8 on : pfpixel 17 9 on : pfpixel 17 10 on : pfpixel 17 11 on if var27=2 then pfpixel 16 9 on : pfpixel 17 9 on : pfpixel 17 8 on : pfpixel 18 9 on if var27=3 then pfpixel 16 9 on : pfpixel 17 9 on : pfpixel 17 8 on : pfpixel 18 8 on if var27=4 then pfpixel 16 8 on : pfpixel 17 8 on : pfpixel 17 9 on : pfpixel 18 9 on if var27=5 then pfpixel 16 9 on : pfpixel 17 10 on : pfpixel 16 8 on : pfpixel 16 10 on if var27=6 then pfpixel 16 10 on : pfpixel 17 8 on : pfpixel 17 9 on : pfpixel 17 10 on if var27=7 then pfpixel 16 8 on : pfpixel 17 8 on : pfpixel 16 9 on : pfpixel 17 9 on COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen if var27=8 then goto get_p1_next_shape if var27=var26 then COLUP1=var10 : COLUP0=var31 : drawscreen : goto get_p1_next_shape get_p1_next_shape_2 if !k{6} && pfread(var13, var14) then k{7}=1 if !k{6} && pfread(var15, var16) then k{7}=1 if !k{6} && pfread(var17, var18) then k{7}=1 if !k{6} && pfread(var19, var20) then k{7}=1 if k{7} then pfhline 16 8 19 off : pfhline 16 9 19 off if k{7} then pfhline 16 10 19 off : pfpixel 17 11 off COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen if k{6} && pfread(var13, var14) then goto title_screen bank1 if k{6} && pfread(var15, var16) then goto title_screen bank1 if k{6} && pfread(var17, var18) then goto title_screen bank1 if k{6} && pfread(var19, var20) then goto title_screen bank1 COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen goto main bank2 bank 2 main CTRLPF=$03 if var10<4 then var10=4 if var31<4 then var31=4 if var7>0 then var46=6 : var47=4 if var7=0 && !k{6} && !k{7} then var46=3 : var47=2 if var7=0 && k{6} then var46=6 : var47=4 if var7=0 && k{7} then var46=6 : var47=4 if k{7} then player1: %10001 %10001 %11110 %10001 %11110 %00000 %11111 %10000 %11111 %10000 %11111 %00000 %00100 %01010 %10001 %10001 %10001 %00000 %01110 %10001 %10001 %10001 %01110 %00000 %00000 %00000 %00000 %00000 %00000 %00000 %11111 %10000 %11111 %10000 %11111 %00000 %10101 %10101 %10101 %10101 %11011 %00000 %10001 %10001 %11111 %10001 %01110 %00000 %01110 %10001 %10111 %10000 %01110 end if k{6} then player0: %10001 %10001 %11110 %10001 %11110 %00000 %11111 %10000 %11111 %10000 %11111 %00000 %00100 %01010 %10001 %10001 %10001 %00000 %01110 %10001 %10001 %10001 %01110 %00000 %00000 %00000 %00000 %00000 %00000 %00000 %11111 %10000 %11111 %10000 %11111 %00000 %10101 %10101 %10101 %10101 %11011 %00000 %10001 %10001 %11111 %10001 %01110 %00000 %01110 %10001 %10111 %10000 %01110 end if switchreset then goto title_screen bank1 if k{6} then player0x=67 : player0y=76 : goto main_p1 if k{7} then player1x=82 : player1y=76 : goto main_p0 var30=1 if var7>0 then goto main_p0 if k{5} then k{5}=0 : goto decide if !k{5} then k{5}=1 decide if k{5} then goto main_p1 else goto main_p0 main_p0 if m{0} then o=o+1 if m{0} && o>2 then m{0}=0 : AUDV0=0 : o=0 if m{2} then o=o+1 if m{2} && o>2 then m{2}=0 : AUDV0=0 : o=0 COLUP1=var10 : COLUP0=var31 scorecolor=14 : COLUBK=0 if k{2} then goto get_line_2 bank3 drawscreen pfpixel c d on : pfpixel e f on : pfpixel g h on : pfpixel i j on if !t{2} then b=b+1 : var42=var42+1 if t{2} then b=b+1 if t{2} && b>29 then t{2}=0 if b>var9 then b=0 : goto down bank3 ds_a if var24=4 then goto ds if var24=4 then goto ds if joy0left then var8=var8+1 if joy0right then var38=var38+1 if joy0fire then var32=var32+1 if joy0down && !t{2} then b=b+15 goto ds_2 ds if var4=1 && c>1 then var8=var8+2 if var4=3 && j<5 then var38=var38+2 if var4=4 && w<3 then var32=var32+2 if var4=5 && w<2 then var32=var32+2 if var4=5 && j<11 then var38=var38+2 if var4=6 && c>1 then var8=var8+2 if var4=7 && w<4 then var32=var32+2 if var4=7 && c>5 then var8=var8+2 b=b+6 if joy0fire && var24=4 then var24=0 : var4=0 : t{4}=1 : goto title_screen bank1 player0: %01110 %10001 %10001 %10001 %01110 %00000 %10101 %10101 %10101 %10101 %11011 %00000 %11111 %10000 %11111 %10000 %11111 %00000 %11110 %10001 %10001 %10001 %11110 end player0x=110 : player0y=64 ds_2 if var32>var46 then var32=0 : m{2}=1 : o=0 : gosub turn rem if !joy0fire && k{0} then k{0}=0 rem if joy0fire && !k{0} then goto turn if var38>var47 then var38=0 : m{0}=1 : gosub right if var8>var47 then var8=0 : m{0}=1 : gosub left bank3 rem gosub music_bank2 goto main main_p1 if m{1} then p=p+1 if m{1} && p>2 then m{1}=0 : AUDV1=0 : p=0 if m{3} then p=p+1 if m{3} && p>2 then m{3}=0 : AUDV1=0 : p=0 if m{5} then p=p+1 if m{5} && p>18 then m{5}=0 : AUDV1=0 : p=0 COLUP1=var10 : COLUP0=var31 scorecolor=14 : COLUBK=0 drawscreen if k{3} then goto get_line_2_p1 bank7 if joy1fire then var37=var37+1 if joy1down then var21=var21+15 pfpixel var13 var14 on : pfpixel var15 var16 on : pfpixel var17 var18 on : pfpixel var19 var20 on var21=var21+1 if var21>var22 then var21=0 : goto player1_down bank5 ds_3 if var37>var46 then var37=0 : m{3}=1 : gosub player1turn bank5 rem if !joy1fire && k{1} then k{1}=0 rem if joy1fire && !k{1} then goto player1turn bank5 if joy1right then var12=var12+1 if joy1left then var39=var39+1 if var12>var47 then var12=0 : m{1}=1 : gosub player1right bank5 if var39>var47 then var39=0 : m{1}=1 : gosub player1left bank5 goto main right pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen c=c+1 : e=e+1 : g=g+1 : i=i+1 if pfread(c, d) then c=c-1 : e=e-1 : g=g-1 : i=i-1 : goto right_2 if pfread(e, f) then c=c-1 : e=e-1 : g=g-1 : i=i-1 : goto right_2 if pfread(g, h) then c=c-1 : e=e-1 : g=g-1 : i=i-1 : goto right_2 if pfread(i, j) then c=c-1 : e=e-1 : g=g-1 : i=i-1 : goto right_2 AUDV0=6 : AUDC0=6 : AUDF0=8 right_3 return right_2 AUDV0=0 COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen goto right_3 turn rem AUDV0=6 : AUDC0=12 : AUDF0=31 k{0}=1 pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen w=w+1 rem p{7}=1 : AUDV0=6 : AUDF0=2 : AUDC0=15 if w>4 then w=1 if a=1 && w=2 then e=e-1 : f=f+1 : g=g-2 : h=h+2 : i=i-3 : j=j+3 if a=1 && w=3 then w=1 : e=e+1 : f=f-1 : g=g+2 : h=h-2 : i=i+3 : j=j-3 if a=2 && w=2 then c=c+1 : d=d+1 if a=2 && w=3 then g=g-1 : h=h+1 if a=2 && w=4 then i=i-1 : j=j-1 if a=2 && w=1 then c=c-1 : d=d-1 : g=g+1 : h=h-1 : i=i+1 : j=j+1 if a=3 && w=3 then w=1 : g=g+1 : i=i+1 : j=j-2 if a=3 && w=2 then g=g-1 : i=i-1 : j=j+2 if a=4 && w=2 then e=e+1 : c=c+1 : d=d+2 if a=4 && w=3 then w=1 : e=e-1 : c=c-1 : d=d-2 if a=5 && w=2 then c=c+2 : d=d+1 : g=g+2 : h=h+1 if a=5 && w=3 then i=i+1 : j=j-2 : e=e+1 : f=f-2 if a=5 && w=4 then c=c-2 : d=d-1 : e=e-1 : f=f+1 : i=i-1 : j=j+2 if a=5 && w=1 then f=f+1 : g=g-2 : h=h-1 if a=6 && w=2 then e=e-2 : f=f+1 : g=g-2 : h=h+1 if a=6 && w=3 then c=c-1 : d=d-2 : i=i-1 : j=j-2 if a=6 && w=4 then d=d+1 : e=e+1 : g=g+2 : h=h-1 : i=i+1 : j=j+2 if a=6 && w=1 then c=c+1 : d=d+1 : e=e+1 : f=f-1 if pfread(c, d) then w=w-1 : goto turn_3 if pfread(e, f) then w=w-1 : goto turn_3 if pfread(g, h) then w=w-1 : goto turn_3 if pfread(i, j) then w=w-1 : goto turn_3 AUDV0=6 : AUDC0=12 : AUDF0=31 turn_2 COLUP1=var10 : COLUP0=var31 : var42=var42+1 return turn_3 AUDV0=0 if a=1 && w=0 then w=2 : e=e-1 : f=f+1 : g=g-2 : h=h+2 : i=i-3 : j=j+3 if a=1 && w=1 then e=e+1 : f=f-1 : g=g+2 : h=h-2 : i=i+3 : j=j-3 if a=2 && w=0 then w=4 : c=c+1 : d=d+1 : g=g-1 : h=h+1 : i=i-1 : j=j-1 if a=2 && w=3 then i=i-1 : j=j-1 if a=2 && w=2 then g=g+1 : h=h-1 if a=2 && w=1 then c=c-1 : d=d-1 if a=3 && w=0 then w=2 : g=g-1 : i=i-1 : j=j+2 if a=3 && w=1 then g=g+1 : i=i+1 : j=j-2 if a=4 && w=0 then w=2 : e=e+1 : c=c+1 : d=d+2 if a=4 && w=1 then e=e-1 : c=c-1 : d=d-2 if a=5 && w=0 then w=4 : f=f-1 : g=g+2 : h=h+1 if a=5 && w=1 then c=c-2 : d=d-1 : g=g-2 : h=h-1 if a=5 && w=2 then i=i-1 : j=j+2 : e=e-1 : f=f+2 if a=5 && w=3 then c=c+2 : d=d+1 : e=e+1 : f=f-1 : i=i+1 : j=j-2 if a=6 && w=0 then w=4 : c=c-1 : d=d-1 : e=e-1 : f=f+1 if a=6 && w=1 then e=e+2 : f=f-1 : g=g+2 : h=h-1 if a=6 && w=2 then c=c+1 : d=d+2 : i=i+1 : j=j+2 if a=6 && w=3 then d=d-1 : e=e-1 : g=g-2 : h=h+1 : i=i-1 : j=j-2 COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen goto turn_2 bank 3 left pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen c=c-1 : e=e-1 : g=g-1 : i=i-1 if pfread(c, d) then c=c+1 : e=e+1 : g=g+1 : i=i+1 : goto left_2 if pfread(e, f) then c=c+1 : e=e+1 : g=g+1 : i=i+1 : goto left_2 if pfread(g, h) then c=c+1 : e=e+1 : g=g+1 : i=i+1 : goto left_2 if pfread(i, j) then c=c+1 : e=e+1 : g=g+1 : i=i+1 : goto left_2 AUDV0=6 : AUDC0=6 : AUDF0=8 left_3 return otherbank left_2 COLUP1=var10 : COLUP0=var31 : var42=var42+1 AUDV0=0 drawscreen goto left_3 down pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off COLUP1=var10 : COLUP0=var31 var42=var42+1 d=d+1 : f=f+1 : h=h+1 : j=j+1 drawscreen if t{2} && pfread(c,d) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line_1a if t{2} && pfread(e,f) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line_1a if t{2} && pfread(g,h) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line_1a if t{2} && pfread(i,j) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line_1a t{2}=0 if !t{2} && pfread(c, d) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : t{2}=1 : goto check_line if !t{2} && pfread(e, f) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : t{2}=1 : goto check_line if !t{2} && pfread(g, h) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : t{2}=1 : goto check_line if !t{2} && pfread(i, j) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : t{2}=1 : goto check_line pfpixel c d on : pfpixel e f on : pfpixel g h on : pfpixel i j on COLUP1=var10 : COLUP0=var31 drawscreen var42=var42+1 goto ds_a bank2 check_line t{2}=1 if !k{5} then goto main bank2 check_line_1a t{2}=0 var2=31 r=0 : o=21 : var45=0 u{5}=0 : u{2}=0 : u{4}=0 pfpixel c d on : pfpixel e f on : pfpixel g h on : pfpixel i j on COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen rem AUDV0=0 var1=1 pfpixel c d on : pfpixel e f on : pfpixel g h on : pfpixel i j on get_line_2 k{2}=1 r=r+1 COLUP1=var10 : COLUP0=var31 : var42=var42+1 if joy0fire && var24=4 then var24=0 : var4=0 : t{4}=1 : goto title_screen bank1 if r<10 && !u{5} && !pfread(r, o) then r=0 : o=o-1 rem if r=10 && !u{4} && !u{5} && !pfread(r, o) then goto get_line_3 if o>28 then goto get_line_3 drawscreen if var1=1 then AUDV0=6 : AUDC0=14 : AUDF0=12 : var36=var36+1 if var1=1 && var36>10 then var1=0 : AUDV0=0 : var36=0 if r=10 && !u{5} && pfread(r, o) then COLUP1=var10 : COLUP0=var31 : z{7}=1 if z{7} then pfhline 1 o 10 off : drawscreen : u{5}=1 : var45=var45+1 : o=o-1 : r=0 : z{7}=0 : m{6}=1 if m{6} && var2>0 then AUDV0=6 : AUDC0=15 : var2=var2-1 : AUDF0=var2 if m{6} && var2=0 then m{6}=0 : var2=31 : AUDV0=0 if u{5} && r>0 && pfread(r, o) then pfpixel r o off : o=o+1 : z{7}=1 if z{7} then COLUP1=var10 : COLUP0=var31 : var42=var42+1 : drawscreen : pfpixel r o on : o=o-1 : u{4}=1 : z{7}=0 if r=10 && u{5} && !u{4} && !pfread(r, o) then o=21 : r=0 : u{5}=0 : u{2}=1 if r=10 && u{5} && u{2} then u{2}=0 if r=10 then r=0 : o=o-1 : u{4}=0 goto main bank2 get_line_3 if u{6} then n=a : u{6}=1 else a=n : u{6}=0 if var7>1 then goto get_line_4 rem if var45=1 && var24=4 then score=0 if var45=1 && var24<4 then score=score+1000 if var45=2 then score=score+2000 if var45=3 then score=score+3000 if var45=4 then score=score+4000 var11=var11+var45 if var11>9 && t{5} then var31=var31+2 if var31>14 && t{5} then var31=4 if var11>9 && !t{5} then var31=var31+16 if var11>9 && var9>1 then var9=var9-1 if var9>24 then var29=0 l=l+var45 if l>99 then l=100 if var11>9 then var11=var11-10 k{2}=0 AUDV0=0 COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen if var24=4 then goto demo bank8 goto get_shape bank6 get_line_4 if var45=1 then score=score-1000 : var16=var16-1 if var45=2 then score=score-2000 : var16=var16-2 if var45=3 then score=score-3000 : var16=var16-3 if var45=4 then score=score-4000 : var16=var16-4 k{2}=0 if var16=0 || var16>25 then goto title_screen bank1 goto get_shape bank6 bank 4 game_over_100_setup pfclear drawscreen player0: %10101 %10101 %11111 %11111 %11111 %10101 %10101 %10001 %10101 %10001 %11111 %10001 %11101 %10001 %10111 %10001 %11111 %10001 %10101 %10101 %10101 %10101 %11111 %11111 %11111 %11111 %11111 %11111 %11111 %11111 %11111 %11111 %01110 %01110 %01110 %01110 %01110 %00100 %00100 %00100 end player0x=54 : player0y=80 player1: %10101010 %10111100 %11100101 %10101001 %01010110 %10101001 end data rocket_music 17, 27, 23, 17 15, 26, 23, 15 13, 23, 18, 13 12, 26, 20, 12 15, 26, 20, 15 18, 31, 23, 18 end playfield: ................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. ................................. ......X.X.X...................... .......X.X....................... ......X.X.X...................... .......X.X....................... ......X.X.X...................... .......X.X....................... ......X.X.X...................... .......X.X....................... ......X.X.X...................... .......X.X....................... ......X.X.X...................... ......XXXXXXXXXXXXX.............. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end player1y=100 a=1 : b=30 : c=48 : e=0 : f=0 game_over e=e+1 if e>20 then e=0 : f=f+1 if f>23 then f=0 AUDV1=5 : AUDC1=4 : AUDF1=rocket_music[f] t{7}=1 a=a+1 c=c+1 if c>62 then c=48 if a>5 then a=0 : player0y=player0y-1 if a=0 && b>10 then b=b-1 if player1y<1 then goto title_screen_2 bank1 AUDV0=4 : AUDC0=8 : AUDF0=b COLUBK=132 : COLUP0=68 : CTRLPF=$01 if b<25 then player1x=62 : player1y=player0y+6 : COLUP1=c NUSIZ0=$05 drawscreen goto game_over bank 5 player1right pfpixel var13 var14 off : pfpixel var15 var16 off : pfpixel var17 var18 off : pfpixel var19 var20 off var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 COLUP1=var10 : COLUP0=var31 drawscreen if pfread(var13, var14) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 : goto p1right2 if pfread(var15, var16) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 : goto p1right2 if pfread(var17, var18) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 : goto p1right2 if pfread(var19, var20) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 : goto p1right2 COLUP1=var10 : COLUP0=var31 AUDV1=6 : AUDF1=4 : AUDC1=6 player1right_3 return p1right2 goto player1right_3 player1left pfpixel var13 var14 off : pfpixel var15 var16 off : pfpixel var17 var18 off : pfpixel var19 var20 off var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 COLUP1=var10 : COLUP0=var31 drawscreen if pfread(var13, var14) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 : goto p1left2 if pfread(var15, var16) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 : goto p1left2 if pfread(var17, var18) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 : goto p1left2 if pfread(var19, var20) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 : goto p1left2 COLUP1=var10 : COLUP0=var31 AUDV1=6 : AUDF1=4 : AUDC1=6 player1left_3 return p1left2 goto player1left_3 player1turn k{1}=1 pfpixel var13 var14 off : pfpixel var15 var16 off : pfpixel var17 var18 off : pfpixel var19 var20 off COLUP1=var10 : COLUP0=var31 drawscreen var25=var25+1 if var25>4 then var25=1 player1_turn_2 if var26=1 && var25=2 then var15=var15-1 : var16=var16+1 : var17=var17-2 : var18=var18+2 : var19=var19-3 : var20=var20+3 if var26=1 && var25=3 then var25=1 : var15=var15+1 : var16=var16-1 : var17=var17+2 : var18=var18-2 : var19=var19+3 : var20=var20-3 if var26=2 && var25=2 then var13=var13+1 : var14=var14+1 if var26=2 && var25=3 then var17=var17-1 : var18=var18+1 if var26=2 && var25=4 then var19=var19-1 : var20=var20-1 if var26=2 && var25=1 then var13=var13-1 : var14=var14-1 : var17=var17+1 : var18=var18-1 : var19=var19+1 : var20=var20+1 if var26=3 && var25=3 then var25=1 : var17=var17+1 : var19=var19+1 : var20=var20-2 if var26=3 && var25=2 then var17=var17-1 : var19=var19-1 : var20=var20+2 if var26=4 && var25=2 then var15=var15+1 : var13=var13+1 : var14=var14+2 if var26=4 && var25=3 then var25=1 : var15=var15-1 : var13=var13-1 : var14=var14-2 if var26=5 && var25=2 then var13=var13+2 : var14=var14+1 : var17=var17+2 : var18=var18+1 if var26=5 && var25=3 then var19=var19+1 : var20=var20-2 : var15=var15+1 : var16=var16-2 if var26=5 && var25=4 then var13=var13-2 : var14=var14-1 : var15=var15-1 : var16=var16+1 : var19=var19-1 : var20=var20+2 if var26=5 && var25=1 then var16=var16+1 : var17=var17-2 : var18=var18-1 if var26=6 && var25=2 then var15=var15-2 : var16=var16+1 : var17=var17-2 : var18=var18+1 if var26=6 && var25=3 then var13=var13-1 : var14=var14-2 : var19=var19-1 : var20=var20-2 if var26=6 && var25=4 then var14=var14+1 : var15=var15+1 : var17=var17+2 : var18=var18-1 : var19=var19+1 : var20=var20+2 if var26=6 && var25=1 then var13=var13+1 : var14=var14+1 : var15=var15+1 : var16=var16-1 player1_turning_again if pfread(var13, var14) then var25=var25-1 : goto player1_turn_3 if pfread(var15, var16) then var25=var25-1 : goto player1_turn_3 if pfread(var17, var18) then var25=var25-1 : goto player1_turn_3 if pfread(var19, var20) then var25=var25-1 : goto player1_turn_3 AUDV1=6 : AUDC1=12 : AUDF1=20 player1_turn_2a COLUP1=var10 : COLUP0=var31 drawscreen return player1_turn_3 if var26=1 && var25=0 then var25=2 : var15=var15-1 : var16=var16+1 : var17=var17-2 : var18=var18+2 : var19=var19-3 : var20=var20+3 if var26=1 && var25=1 then var15=var15+1 : var15=var15+1 : var16=var16-1 : var17=var17+2 : var18=var18-2 : var19=var19+3 : var20=var20-3 if var26=2 && var25=0 then var25=4 : var13=var13+1 : var14=var14+1 : var17=var17-1 : var18=var18+1 : var19=var19-1 : var20=var20-1 if var26=2 && var25=3 then var19=var19-1 : var20=var20-1 if var26=2 && var25=2 then var17=var17+1 : var18=var18-1 if var26=2 && var25=1 then var13=var13-1 : var14=var14-1 if var26=3 && var25=0 then var25=2 : var17=var17-1 : var19=var19-1 : var20=var20+2 if var26=3 && var25=1 then var17=var17+1 : var19=var19+1 : var20=var20-2 if var26=4 && var25=0 then var25=2 : var15=var15+1 : var13=var13+1 : var14=var14+2 if var26=4 && var25=1 then var15=var15-1 : var13=var13-1 : var14=var14-2 if var26=5 && var25=0 then var25=4 : var16=var16-1 : var17=var17+2 : var18=var18+1 if var26=5 && var25=1 then var13=var13-2 : var14=var14-1 : var17=var17-2 : var18=var18-1 if var26=5 && var25=2 then var19=var19-1 : var20=var20+2 : var15=var15-1 : var16=var19+2 if var26=5 && var25=3 then var13=var13+2 : var14=var14+1 : var15=var15+1 : var16=var16-1 : var19=var19+1 : var20=var20-2 if var26=6 && var25=0 then var25=4 : var13=var13-1 : var14=var14-1 : var15=var15-1 : var16=var16+1 if var26=6 && var25=1 then var15=var15+2 : var16=var16-1 : var17=var17+2 : var18=var18-1 if var26=6 && var25=2 then var13=var13+1 : var14=var14+2 : var19=var19+1 : var20=var20+2 if var26=6 && var25=3 then var14=var14-1 : var15=var15-1 : var17=var17-2 : var18=var18+1 : var19=var19-1 : var20=var20-2 COLUP1=var10 : COLUP0=var31 drawscreen goto player1_turn_2a player1_down pfpixel var13 var14 off : pfpixel var15 var16 off : pfpixel var17 var18 off : pfpixel var19 var20 off var14=var14+1 : var16=var16+1 : var18=var18+1 : var20=var20+1 COLUP1=var10 : COLUP0=var31 drawscreen if t{3} && pfread(var13,var14) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1_a bank7 if t{3} && pfread(var15,var16) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1_a bank7 if t{3} && pfread(var17,var18) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1_a bank7 if t{3} && pfread(var19,var20) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1_a bank7 t{3}=0 if !t{3} && pfread(var13, var14) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 if !t{3} && pfread(var15, var16) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 if !t{3} && pfread(var17, var18) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 if !t{3} && pfread(var19, var20) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 pfpixel var13 var14 on : pfpixel var15 var16 on : pfpixel var17 var18 on : pfpixel var19 var20 on COLUP1=var10 : COLUP0=var31 drawscreen goto ds_3 bank2 bank 6 get_garbage var16=25 t{7}=1 AUDV0=0 : AUDV1=0 playfield: ................................. ................................. ................................. ................................. ................................. .XX.X.X.XXX.XXX..XX.XXX.......... X...X.X.X.X.X.X.X...X............ X...XXX.X.X.X.X..X..XXX.......... X...X.X.X.X.X.X...X.X............ .XX.X.X.XXX.XXX.XX..XXX.......... ................................. ................................. ................................. X...XXX.X.X.XXX.X................ X...X...X.X.X...X................ X...XXX.X.X.XXX.X................ X...X...X.X.X...X................ XXX.XXX..X..XXX.XXX.............. ................................. ................................. ................................. ................................. ................................. end if joy0left then x=x+1 if joy0left && x>10 then x=0 : var9=var9+1 : score=score-1000 if joy0right then x=x+1 if joy0right && x>10 then x=0 : var9=var9-1 : score=score+1000 if joy0fire then z{2}=1 if !joy0fire && z{2} then z{2}=0 : goto get_garbage_1b if var9=0 || var9>9 then var9=10 : score=0 if t{5} then COLUPF=14 else COLUPF=180 drawscreen goto get_garbage get_garbage_1b score=0 : var33=22 : x=0 : m=0 get_garbage_1a playfield: ................................. ................................. ................................. ................................. ................................. .XX.X.X.XXX.XXX..XX.XXX.......... X...X.X.X.X.X.X.X...X............ X...XXX.X.X.X.X..X..XXX.......... X...X.X.X.X.X.X...X.X............ .XX.X.X.XXX.XXX.XX..XXX.......... ................................. ................................. ................................. X.X.XXX.X..XX.X.X.XXX............ X.X.X...X.X...X.X..X............. XXX.XXX.X.X.X.XXX..X............. X.X.X...X.X.X.X.X..X............. X.X.XXX.X..XX.X.X..X............. ................................. ................................. ................................. ................................. ................................. end if joy0left then x=x+1 if joy0left && x>10 then x=0 : var33=var33-2 : score=score-1000 : m=m-1 if joy0right then x=x+1 if joy0right && x>10 then x=0 : var33=var33+2 : score=score+1000 : m=m+1 if joy0fire then z{2}=1 if !joy0fire && z{2} then z{2}=0 : pfclear : goto get_garbage_2 if m=0 then var33=22 : score=0 if m=1 then var33=20 if m=2 then var33=18 if m=3 then var33=16 if m=4 then var33=14 if m>4 then m=0 : var33=22 if t{5} then COLUPF=14 else COLUPF=180 drawscreen goto get_garbage_1a get_garbage_2 playfield: X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X XXXXXXXXXXXX........XXXXXXXXXXXX end get_garbage_3 score=25000 if var33=22 then goto get_shape var33=var33+1 var13=(rand/64)+2 var15=(rand/64)+1 var14=var13+var15 pfhline var13 var33 var14 on drawscreen goto get_garbage_3 get_shape if t{7} then AUDV1=0 COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen if t{7} then AUDV1=0 pfhline 13 0 16 off : pfhline 13 1 16 off COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen if t{7} then AUDV1=0 pfhline 13 2 16 off : pfpixel 13 3 off COLUP1=var10 : COLUP0=var31 : var42=var42+1 drawscreen w=1 get_shape_a if u{6} && var24<4 then a=(rand/32)+1 COLUP1=var10 : COLUP0=var31 : var42=var42+1 if t{7} then AUDV1=0 drawscreen if a=1 then c=5 : d=0 : e=6 : f=0 : g=7 : h=0 : i=8 : j=0 if a=2 then c=5 : d=1 : e=6 : f=1 : g=6 : h=0 : i=7 : j=1 if a=3 then c=5 : d=1 : e=6 : f=1 : g=6 : h=0 : i=7 : j=0 if a=4 then c=5 : d=0 : e=6 : f=0 : g=6 : h=1 : i=7 : j=1 if a=5 then c=5 : d=1 : e=6 : f=2 : g=5 : h=0 : i=5 : j=2 if a=6 then c=5 : d=2 : e=6 : f=0 : g=6 : h=1 : i=6 : j=2 if a=7 then c=5 : d=0 : e=6 : f=0 : g=5 : h=1 : i=6 : j=1 if a=8 && u{6} then goto get_shape_a if a=8 && !u{6} then a=(rand/32)+1 : goto get_shape_a get_next_shape if !u{6} && var24<4 then n=(rand/32)+1 if t{7} then AUDV1=0 pfhline 13 12 17 off : pfhline 13 13 16 off : COLUP1=var10 : COLUP0=var31 : drawscreen pfhline 13 14 16 off pfpixel 14 15 off COLUP1=var10 : COLUP0=var31 : var42=var42+1 if t{7} then AUDV1=0 drawscreen if n=1 && !t{6} then pfpixel 14 12 on : pfpixel 14 13 on : pfpixel 14 14 on : pfpixel 14 15 on if n=2 && !t{6} then pfpixel 13 13 on : pfpixel 14 13 on : pfpixel 14 12 on : pfpixel 15 13 on if n=3 && !t{6} then pfpixel 13 13 on : pfpixel 14 13 on : pfpixel 14 12 on : pfpixel 15 12 on if n=4 && !t{6} then pfpixel 13 12 on : pfpixel 14 12 on : pfpixel 14 13 on : pfpixel 15 13 on if n=5 && !t{6} then pfpixel 13 13 on : pfpixel 14 14 on : pfpixel 13 12 on : pfpixel 13 14 on if n=6 && !t{6} then pfpixel 13 14 on : pfpixel 14 12 on : pfpixel 14 13 on : pfpixel 14 14 on if n=7 && !t{6} then pfpixel 14 12 on : pfpixel 15 12 on : pfpixel 14 13 on : pfpixel 15 13 on COLUP1=var10 : COLUP0=var31 : var42=var42+1 if t{7} then AUDV1=0 drawscreen if n=a || n=8 then goto get_next_shape get_next_shape_2 if var7>0 && pfread(c, d) then goto game_over_one_player bank7 if var7>0 && pfread(e, f) then goto game_over_one_player bank7 if var7>0 && pfread(g, h) then goto game_over_one_player bank7 if var7>0 && pfread(i, j) then goto game_over_one_player bank7 if var7=0 && pfread(c, d) then k{6}=1 if var7=0 && pfread(e, f) then k{6}=1 if var7=0 && pfread(g, h) then k{6}=1 if var7=0 && pfread(i, j) then k{6}=1 if k{6} then pfhline 13 12 17 off : pfhline 13 13 16 off if k{6} then pfhline 13 14 16 off : pfpixel 14 15 off COLUP1=var10 : COLUP0=var31 : var42=var42+1 if t{7} then AUDV1=0 drawscreen if var30=1 then goto main bank2 if var7=1 then goto main bank2 if var7>1 then goto main bank2 goto get_shape_p1 bank7 bank 7 get_shape_p1 t{7}=1 COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen pfhline 16 4 19 off : pfhline 16 5 19 off COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen pfhline 16 6 19 off : pfpixel 16 7 off COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen var25=1 get_p1_shape_a if var28=1 && !t{6} then var26=(rand/32)+1 if var26=1 then var13=24 : var14=0 : var15=25 : var16=0 : var17=26 : var18=0 : var19=27 : var20=0 if var26=2 then var13=24 : var14=1 : var15=25 : var16=1 : var17=25 : var18=0 : var19=26 : var20=1 if var26=3 then var13=24 : var14=1 : var15=25 : var16=1 : var17=25 : var18=0 : var19=26 : var20=0 if var26=4 then var13=24 : var14=0 : var15=25 : var16=0 : var17=25 : var18=1 : var19=26 : var20=1 if var26=5 then var13=24 : var14=1 : var15=25 : var16=2 : var17=24 : var18=0 : var19=24 : var20=2 if var26=6 then var13=24 : var14=2 : var15=25 : var16=0 : var17=25 : var18=1 : var19=25 : var20=2 if var26=7 then var13=24 : var14=0 : var15=25 : var16=0 : var17=24 : var18=1 : var19=25 : var20=1 COLUP1=var10 : COLUP0=var31 : AUDV1=0 drawscreen if var26=8 then goto get_p1_shape_a if var26=8 && var28=1 then var27=(rand/32)+1 : goto get_p1_shape_a if t{6} then goto get_p1_next_shape_2 bank1 goto get_p1_next_shape bank1 check_line_p1 t{3}=1 var22=var22+30 goto main bank2 check_line_p1_a t{3}=0 var22=var22-30 var3=31 x=20 : y=21 : q=0 v{5}=0 : v{2}=0 : v{4}=0 pfpixel var13 var14 on : pfpixel var15 var16 on : pfpixel var17 var18 on : pfpixel var19 var20 on COLUP1=var10 : COLUP0=var31 m{5}=1 drawscreen AUDV0=0 var28=0 pfpixel var13 var14 on : pfpixel var15 var16 on : pfpixel var17 var18 on : pfpixel var19 var20 on get_line_2_p1 k{3}=1 x=x+1 COLUP1=var10 : COLUP0=var31 if m{5} then AUDV1=6 : AUDC1=14 : AUDF1=12 : p=p+1 if m{5} && p>10 then m{5}=0 : AUDV1=0 : p=0 drawscreen if x<30 && !v{5} && !pfread(x, y) then x=20 : y=y-1 if y>28 then goto get_line_3_p1 if x=30 && !v{5} && pfread(x, y) then COLUP1=var10 : COLUP0=var31 : v{7}=1 if v{7} then pfhline 21 y 30 off : drawscreen : v{5}=1 : q=q+1 : y=y-1 : x=20 : v{7}=0 : m{7}=1 if m{7} && var3>0 then AUDV1=6 : AUDC1=15 : var3=var3-1 : AUDF1=var3 if m{7} && var3=0 then m{7}=0 : var3=31 : AUDV1=0 if v{5} && x>20 && pfread(x, y) then pfpixel x y off : y=y+1 : v{7}=1 if v{7} then COLUP1=var10 : COLUP0=var31 : drawscreen : pfpixel x y on : y=y-1 : v{4}=1 : v{7}=0 if x=30 && v{5} && !v{4} && !pfread(x, y) then y=21 : x=20 : v{5}=0 : v{2}=1 if x=30 && v{5} && v{2} then v{2}=0 if x=30 then x=20 : y=y-1 : v{4}=0 goto main bank2 get_line_3_p1 AUDV1=0 score=score+q COLUP1=var10 : COLUP0=var31 drawscreen var26=var27 rem if var28=0 then var28=1 else var28=0 rem if var28=1 then var27=var26 : var28=1 else var26=var27 : var28=0 var35=var35+q if var35>9 && t{5} then var31=var10+2 if var35>14 && t{5} then var10=4 if var35>9 && !t{5} then var10=var10+16 if var35>9 && var22>1 then var22=var22-1 if var35>9 then var35=var35-10 rem if var35>9 then player1score=player1score+6 : var35=var35-10 k{3}=0 goto get_shape_p1 game_over_one_player a{0}=0 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X.............................X X.............................X X.............................X X.............................X X.............................X X.......XX..X..XX.XX.XXX......X X......X...X.X.X.X.X.X........X X......X.X.XXX.X.X.X.XXX......X X......X.X.X.X.X.X.X.X........X X.......XX.X.X.X.X.X.XXX......X X.............................X X........X..X.X.XXX.XX........X X.......X.X.X.X.X...X.X.......X X.......X.X.X.X.XXX.XX........X X.......X.X.X.X.X...X.X.......X X........X...X..XXX.X.X.......X X.............................X X.............................X X.............................X X.............................X X.............................X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end t{6}=1 if !joy0fire then goto game_over_one_player_2 COLUPF=0 drawscreen goto game_over_one_player game_over_one_player_2 COLUPF=14 drawscreen if joy0fire then a{0}=1 if a{0} && !joy0fire then t{6}=0 : goto title_screen bank1 goto game_over_one_player_2 bank 8 beginning player0x=0 : player0y=0 player1x=0 : player1y=0 if var24<4 then score=0 if var24<4 then var24=0 var30=0 b=0 t{7}=0 o=0 : t{0}=0 : t{1}=0 u{0}=0 : u{1}=0 : u{2}=0 s=0 k{5}=1 var8=0 : var32=1 COLUPF=0 l=0 : rem change to 0 AUDV0=0 : AUDV1=0 COLUBK=0 var10=120 : var31=120 t{4}=0 if switchbw then var10=4 : var31=4 : t{4}=1 var28=1 var5=0 var9=10 : var22=10 rem if var7=0 then var9=10 COLUP1=var10 : COLUP0=var31 playfield: X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X X..........X........X..........X XXXXXXXXXXXX........XXXXXXXXXXXX end COLUPF=0 drawscreen if var7>1 then x=0 : goto get_garbage bank6 if var24=4 then goto demo bank8 goto get_shape bank6 demo var7=1 : var30=1 var4=var4+1 if var4=1 then a=1 : n=6 if var4=2 then a=6 : n=1 if var4=3 then a=1 : n=5 if var4=4 then a=5 : n=6 if var4=5 then a=6 : n=1 if var4=6 then a=1 : n=2 if var4=7 then a=2 : n=3 if var4=8 then var24=0 : var4=0 : goto title_screen bank1 goto get_shape bank6 vblank data treblenotes2 24, 31, 29, 26, 29, 31, 29, 29, 24, 19, 22, 24, 26, 26, 24, 22, 19, 24, 29, 29 22, 19, 18, 19, 22, 24, 29, 24, 26, 29, 31, 31, 29, 26, 24, 26, 29, 29 24, 31, 29, 26, 29, 31, 29, 29, 24, 19, 22, 24, 26, 26, 24, 22, 19, 24, 29, 29 22, 19, 18, 19, 22, 24, 29, 24, 26, 29, 31, 31, 29, 26, 24, 26, 29, 29 24, 29, 26, 31, 29, 24, 26 24, 29, 26, 31, 29, 22, 18, 19 end data trebletime2 20, 10, 10, 20, 10, 10, 20, 10, 10, 20, 10, 10, 20, 10, 10, 20, 20, 20, 20, 60 20, 10, 20, 10, 10, 30, 10, 20, 10, 10, 20, 10, 10, 20, 20, 20, 20, 60 20, 10, 10, 20, 10, 10, 20, 10, 10, 20, 10, 10, 20, 10, 10, 20, 20, 20, 20, 60 20, 10, 20, 10, 10, 30, 10, 20, 10, 10, 20, 10, 10, 20, 20, 20, 20, 60 40, 40, 40, 40, 40, 40, 80 40, 40, 40, 40, 20, 20, 40, 80 end if t{7} then return if var24>3 then return if var7=0 then AUDV1=0 : return if !switchleftb then AUDV1=0 : return if var42>trebletime2[var43] then var42=0 : var44=var44+1 : var43=var43+1 if var44>90 then var44=0 : var43=0 AUDV1=6 if var43=6 && var42>18 then AUDV1=0 if var43=12 && var42>18 then AUDV1=0 if var43=18 && var42>18 then AUDV1=0 if var43=30 && var42>18 then AUDV1=0 if var43=36 && var42>18 then AUDV1=0 if var43=44 && var42>18 then AUDV1=0 if var43=50 && var42>18 then AUDV1=0 if var43=56 && var42>18 then AUDV1=0 if var43=68 && var42>18 then AUDV1=0 if var43=74 && var42>18 then AUDV1=0 AUDC1=4 : AUDF1=treblenotes2[var44] return inline score33.asm