set kernel_options no_blank_lines set romsize 32kSC set debug cyclescore title_screen player0: %11111110 %11111111 %11011111 %01111111 %00011000 %00011000 %00011000 %00011000 end player1x=0 : player1y=0 a=0 : b=0 : c=0 : d=0 : e=0 : f=0 : g=0 : h=0 t{1}=1 playfield: ................................ ................................ ................................ .....................X.......... .......XXX.X..XXX.XX.X.......... ........X..XX..X..X..X..XX...... ...........X......X..X.XX....... ................................ ................................ ..........XX..X..XX.XX.......... ...........XX.X..XX.XX.......... ..............XX................ ................................ ................................ ................................ end const pfres=16 title_screen_music var11=0 : var35=0 player0scorecolor=14 player1scorecolor=14 COLUPF=132 : COLUBK=52 : COLUP0=0 player0x=70 : player0y=82 if switchrightb then var7=1 : NUSIZ0=$00 else var7=0 : NUSIZ0=$01 drawscreen if switchleftb then u{7}=1 else u{7}=0 if joy0fire then t{0}=1 if !joy0fire && t{0} then t{0}=0 : goto beginning bank6 data treble_music 25, 27, 30, 30, 27, 30, 27, 25, 27, 30 30, 27, 30, 27, 25, 30 end data treble_length 79, 79, 159, 19, 19, 19, 19, 19, 19, 39 19, 19, 19, 19, 39, 39 end a=a+1 h=h+1 if h>8 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 AUDV1=b : AUDF1=c : AUDC1=d AUDV0=e : AUDF0=treble_music[f] : AUDC0=4 if a>=0 then b=6 : c=15 : d=10 if a>8 then b=0 if a>20 then b=6 : c=15 : d=10 if a>28 then b=0 if a>40 then b=6 : c=8 : d=8 if a>48 then b=0 if a>60 && !t{1} then b=6 : c=16 : d=10 if a>60 && t{1} then b=6 : c=20 : d=10 if a>79 then a=0 if a=60 && t{1} then t{1}=0 : goto title_screen_music if a=60 && !t{1} then t{1}=1 goto title_screen_music get_p1_next_shape if var28=0 || var30=0 then var27=(rand/32)+1 if var27=1 then pfpixel 15 4 on : pfpixel 16 4 on : pfpixel 17 4 on : pfpixel 18 4 on if var27=2 then pfpixel 15 5 on : pfpixel 16 5 on : pfpixel 16 4 on : pfpixel 17 5 on if var27=3 then pfpixel 15 5 on : pfpixel 16 5 on : pfpixel 16 4 on : pfpixel 17 4 on if var27=4 then pfpixel 15 4 on : pfpixel 16 4 on : pfpixel 16 5 on : pfpixel 17 5 on if var27=5 then pfpixel 15 5 on : pfpixel 16 6 on : pfpixel 15 4 on : pfpixel 15 6 on if var27=6 then pfpixel 15 6 on : pfpixel 16 4 on : pfpixel 16 5 on : pfpixel 16 6 on if var27=7 then pfpixel 15 4 on : pfpixel 16 4 on : pfpixel 15 5 on : pfpixel 16 5 on rem if !u{7} then pfhline 15 4 19 off : pfhline 15 5 18 off : pfhline 15 6 18 off drawscreen if var27=8 then goto get_p1_next_shape 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{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 goto main bank2 bank 2 main player0: %01000100 %10101010 %10101010 %10101010 %01001010 %00000000 %01001010 %10101010 %10101110 %10001010 %01100100 end player1: %11010101 %10010100 %11011001 %10010101 %11011001 %00000000 %10001011 %10001010 %10101011 %10101010 %01010011 end scorecolor=14 : COLUPF=52 : COLUBK=132 : COLUP0=14 : COLUP1=14 if !k{6} && !k{7} then player0x=0 : player0y=0 : player1x=0 : player1y=0 if k{6} then player0x=33 : player0y=46 : player1x=41 : player1y=46 : goto main_p1 if k{7} then player0x=114 : player0y=48 : player1x=122 : player1y=48 : goto main_p0 if switchreset then goto title_screen bank1 var30=1 if var7=1 then goto main_p0 if var12=1 then var12=0 : goto decide if var12=0 then var12=1 decide if var12=1 then goto main_p1 if var12=0 then goto main_p0 main_p0 if k{2} then goto erase_line_1c bank4 pfpixel c d on : pfpixel e f on : pfpixel g h on : pfpixel i j on b=b+1 if joy0down then b=b+3 drawscreen if b>var9 then b=0 : goto down if joy0left then var8=var8+1 if joy0right then var8=var8+1 if !joy0fire && k{0} then k{0}=0 if joy0fire && !k{0} then goto turn if joy0right && var8>5 then var8=0 : goto right if joy0left && var8>5 then var8=0 : goto left goto main main_p1 var22=30 if k{3} then goto erase_line_1b_p1 bank8 if joy1down then var21=var21+3 pfpixel var13 var14 on : pfpixel var15 var16 on : pfpixel var17 var18 on : pfpixel var19 var20 on var21=var21+1 drawscreen if var21>var22 then var21=0 : goto player1_down bank5 if !joy1fire && k{1} then k{1}=0 if joy1fire && !k{1} then goto player1turn bank5 if joy1right then var36=var36+1 if joy1left then var36=var36+1 if joy1right && var36>5 then var36=0 : goto player1right bank5 if joy1left && var36>5 then var36=0 : goto player1left bank5 goto main right pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off 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 if pfread(e, f) then c=c-1 : e=e-1 : g=g-1 : i=i-1 if pfread(g, h) then c=c-1 : e=e-1 : g=g-1 : i=i-1 if pfread(i, j) then c=c-1 : e=e-1 : g=g-1 : i=i-1 drawscreen goto main left pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off 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 if pfread(e, f) then c=c+1 : e=e+1 : g=g+1 : i=i+1 if pfread(g, h) then c=c+1 : e=e+1 : g=g+1 : i=i+1 if pfread(i, j) then c=c+1 : e=e+1 : g=g+1 : i=i+1 drawscreen goto main turn k{0}=1 pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off w=w+1 rem p{7}=1 : AUDV0=6 : AUDF0=2 : AUDC0=15 if w>4 then w=1 turn_2 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=1 then 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=3 && w=3 then g=g+1 : i=i+1 : j=j-2 if a=3 && w=4 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 turning_again 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 drawscreen goto main turn_3 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=4 : g=g-1 : i=i-1 : j=j+2 if a=3 && w=3 then 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=3 && w=4 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 drawscreen goto main down pfpixel c d off : pfpixel e f off : pfpixel g h off : pfpixel i j off d=d+1 : f=f+1 : h=h+1 : j=j+1 drawscreen if pfread(c, d) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line bank3 if pfread(e, f) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line bank3 if pfread(g, h) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line bank3 if pfread(i, j) then d=d-1 : f=f-1 : h=h-1 : j=j-1 : goto check_line bank3 drawscreen goto main bank 3 check_line r=14 var23=0 rem drawscreen pfpixel c d on : pfpixel e f on : pfpixel g h on : pfpixel i j on check_line_2 o=o+1 drawscreen if o=10 && r=0 && pfread(o, r) then u{2}=1 if o=10 && r=1 && pfread(o, r) then u{1}=1 if o=10 && r=2 && pfread(o, r) then u{0}=1 if o=10 && r=3 && pfread(o, r) then t{7}=1 if o=10 && r=4 && pfread(o, r) then t{6}=1 if o=10 && r=5 && pfread(o, r) then t{5}=1 if o=10 && r=6 && pfread(o, r) then t{4}=1 if o=10 && r=7 && pfread(o, r) then t{3}=1 if o=10 && r=8 && pfread(o, r) then t{2}=1 if o=10 && r=9 && pfread(o, r) then t{0}=1 if o=10 && r=10 && pfread(o,r) then var0=1 if o=10 && r=11 && pfread(o,r) then var1=1 if o=10 && r=12 && pfread(o,r) then var2=1 if o=10 && r=13 && pfread(o,r) then var3=1 if o<11 && pfread(o, r) then goto check_line_2 r=r-1 : o=0 if r>0 then goto check_line_2 if u{6} then n=a else a=n if u{6} then u{6}=0 else u{6}=1 if t>0 then goto erase_line_1a if u{0} then goto erase_line_1a if u{1} then goto erase_line_1a if u{2} then goto erase_line_1a if var0=1 then goto erase_line_1a if var1=1 then goto erase_line_1a if var2=1 then goto erase_line_1a if var3=1 then goto erase_line_1a t=0 : u{0}=0 : u{1}=0 : u{2}=0 : o=0 AUDV1=0 u{6}=0 goto get_shape bank6 erase_line_1a var6=0 : var10=0 z=0 k{2}=1 if var3=1 then pfhline 1 13 10 off : drawscreen : z=z+1 : p=12 : l=l+1 if var2=1 then pfhline 1 12 10 off : drawscreen : z=z+1 : p=11 : l=l+1 if var1=1 then pfhline 1 11 10 off : drawscreen : z=z+1 : p=10 : l=l+1 if var0=1 then pfhline 1 10 10 off : drawscreen : z=z+1 : p=9 : l=l+1 if t{0} then pfhline 1 9 10 off : drawscreen : z=z+1 : p=8 : l=l+1 if t{2} then pfhline 1 8 10 off : drawscreen : z=z+1 : p=7 : l=l+1 if t{3} then pfhline 1 7 10 off : drawscreen : z=z+1 : p=6 : l=l+1 if t{4} then pfhline 1 6 10 off : drawscreen : z=z+1 : p=5 : l=l+1 if t{5} then pfhline 1 5 10 off : drawscreen : z=z+1 : p=4 : l=l+1 if t{6} then pfhline 1 4 10 off : drawscreen : z=z+1 : p=3 : l=l+1 if t{7} then pfhline 1 3 10 off : drawscreen : z=z+1 : p=2 : l=l+1 if u{0} then pfhline 1 2 10 off : drawscreen : z=z+1 : p=1 : l=l+1 if u{1} then pfhline 1 1 10 off : drawscreen : z=z+1 : p=0 : l=l+1 if u{2} then pfhline 1 0 10 off : drawscreen : z=z+1 : l=l+1 y=0 : var33=0 : k{5}=0 : var4=3 if var0=0 && var1=1 && var2=0 && var3=1 then y=3 : z=1 if var0=1 && var1=0 && var2=0 && var3=1 then y=3 : z=1 if var0=1 && var1=0 && var2=1 && var3=0 then y=1 : z=2 if var3=1 && var2=1 && var1=0 && var0=1 then y=1 if var3=1 && var2=0 && var1=1 && var0=1 then y=2 : z=2 : var4=2 rem if var2=0 && p=9 then y=2 : z=2 : var4=2 rem if var1=0 && p=10 then y=1 : z=2 if !t{0} && var0=1 && var1=0 && var2=1 then y=3 : z=1 : k{5}=1 if t{0} && var0=0 && var1=0 && var2=1 then y=3 : z=1 : k{5}=1 if t{0} && var0=0 && var1=1 && var2=0 then y=3 : z=1 : k{5}=1 if t{0} && var0=0 && var1=1 && var2=1 then y=1 if t{0} && var0=1 && var1=0 && var2=1 then y=2 : z=2 : var4=2 if !t{2} && t{0} && var0=0 && var1=1 then y=3 : z=1 : k{5}=1 if t{2} && !t{0} && var0=0 && var1=1 then y=3 : z=1 : k{5}=1 if t{2} && !t{0} && var0=1 && var1=0 then y=3 : z=1 : k{5}=1 if t{2} && !t{0} && var0=1 && var1=1 then y=1 if t{2} && t{0} && var0=0 && var1=1 then y=2 : z=2 : var4=2 drawscreen if !t{3} && t{2} && !t{0} && var0=1 then y=3 : z=1 : k{5}=1 if t{3} && !t{2} && !t{0} && var0=1 then y=3 : z=1 : k{5}=1 if t{3} && !t{2} && t{0} && var0=0 then y=3 : z=1 : k{5}=1 if t{3} && !t{2} && t{0} && var0=1 then y=1 if t{3} && t{2} && !t{0} && var0=1 then y=2 : z=2 : var4=2 if !t{4} && t{3} && !t{2} && t{0} then y=3 : z=1 : k{5}=1 if t{4} && !t{3} && !t{2} && t{0} then y=3 : z=1 : k{5}=1 if t{4} && !t{3} && t{2} && !t{0} then y=3 : z=1 : k{5}=1 if t{4} && !t{3} && t{2} && t{0} then y=1 if t{4} && t{3} && !t{2} && t{0} then y=2 : z=2 : var4=2 if !t{5} && t{4} && !t{3} && t{2} then y=3 : z=1 : k{5}=1 if t{5} && !t{4} && !t{3} && t{2} then y=3 : z=1 : k{5}=1 if t{5} && !t{4} && t{3} && !t{2} then y=3 : z=1 : k{5}=1 if t{5} && !t{4} && t{3} && t{2} then y=1 if t{5} && t{4} && !t{3} && t{2} then y=2 : z=2 : var4=2 if !t{6} && t{5} && !t{4} && t{3} then y=3 : z=1 : k{5}=1 if t{6} && !t{5} && !t{4} && t{3} then y=3 : z=1 : k{5}=1 if t{6} && !t{5} && t{4} && !t{3} then y=3 : z=1 : k{5}=1 if t{6} && !t{5} && t{4} && t{3} then y=1 if t{6} && t{5} && !t{4} && t{3} then y=2 : z=2 : var4=2 goto erase_line_1b bank4 bank 4 erase_line_1b drawscreen if !t{7} && t{6} && !t{5} && t{4} then y=3 : z=1 : k{5}=1 if t{7} && !t{6} && !t{5} && t{4} then y=3 : z=1 : k{5}=1 if t{7} && !t{6} && t{5} && !t{4} then y=3 : z=1 : k{5}=1 if t{7} && !t{6} && t{5} && t{4} then y=1 if t{7} && t{6} && !t{5} && t{4} then y=2 : z=2 : var4=2 if !u{0} && t{7} && !t{6} && t{5} then y=3 : z=1 : k{5}=1 if u{0} && !t{7} && !t{6} && t{5} then y=3 : z=1 : k{5}=1 if u{0} && !t{7} && t{6} && !t{5} then y=3 : z=1 : k{5}=1 if u{0} && !t{7} && t{6} && t{5} then y=1 if u{0} && t{7} && !t{6} && t{5} then y=2 : z=2 : var4=2 if !u{1} && u{0} && !t{7} && t{6} then y=3 : z=1 : k{5}=1 if u{1} && !u{0} && !t{7} && t{6} then y=3 : z=1 : k{5}=1 if u{1} && !u{0} && t{7} && !t{6} then y=3 : z=1 : k{5}=1 if u{1} && !u{0} && t{7} && t{6} then y=1 if u{1} && u{0} && !t{7} && t{6} then y=2 : z=2 : var4=2 q=0 erase_line_1c q=q+1 if q>10 && p=0 && y10 && p>0 then p=p-1 : q=0 if q>10 && p=0 && y>0 then p=12 : y=y-1 : q=0 : var33=1 goto main bank2 move_blocks_down_3 player0score=player0score+l var32=0 var11=var11+l if var11>9 && var9>5 then var9=var9-3 if var11>9 then player0score=player0score+6 : var11=var11-10 drawscreen y=0 : var33=0 t=0 : k{2}=0 : m=0 : l=0 u{0}=0 : u{1}=0 : u{2}=0 : u{3}=0 : u{4}=0 : u{5}=0 : u{6}=0 o=0 : z=0 : q=0 var0=0 : var1=0 : var2=0 : var3=0 var6=0 var30=1 goto get_shape bank6 game_over_setup playfield: XXXXXXXXXXXX.................... XXXXXXXXXXXX..XX..X...XXX..XXX.. XXXXXXXXXXXX.X...X.X.X.X.X.X.... XXXXXXXXXXXX.X.X.XXX.X.X.X.XXX.. XXXXXXXXXXXX.X.X.X.X.X...X.X.... XXXXXXXXXXXX..XX.X.X.X...X.XXX.. XXXXXXXXXXXX.................... XXXXXXXXXXXX.................... XXXXXXXXXXXX.................... XXXXXXXXXXXX..X..X.X.XXX.XX..X.. XXXXXXXXXXXX.X.X.X.X.X...X.X.X.. XXXXXXXXXXXX.X.X.X.X.XXX.XX..X.. XXXXXXXXXXXX.X.X.X.X.X...X.X.... XXXXXXXXXXXX..X...X..XXX.X.X.X.. XXXXXXXXXXXX.................... end e=19 : t{1}=1 game_over if !t{1} then AUDV0=0 if t{1} then AUDV0=6 : AUDC0=12 : AUDF0=e f=f+1 if f>10 then e=20 if f>20 then e=19 if f>30 then e=20 if f>40 then e=19 if f>50 then e=17 if f>60 then e=19 if f>70 then e=20 if f>80 then e=19 if f>100 then f=0 : t{1}=0 c=c+1 if c>5 then c=0 : d=d+2 COLUPF=d if joy0fire && !t{1} then t{0}=1 if !joy0fire && t{0} then drawscreen : goto beginning bank6 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 drawscreen if pfread(var13, var14) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 if pfread(var15, var16) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 if pfread(var17, var18) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 if pfread(var19, var20) then var13=var13-1 : var15=var15-1 : var17=var17-1 : var19=var19-1 drawscreen goto main bank2 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 drawscreen if pfread(var13, var14) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 if pfread(var15, var16) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 if pfread(var17, var18) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 if pfread(var19, var20) then var13=var13+1 : var15=var15+1 : var17=var17+1 : var19=var19+1 drawscreen goto main bank2 player1turn k{1}=1 pfpixel var13 var14 off : pfpixel var15 var16 off : pfpixel var17 var18 off : pfpixel var19 var20 off 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=1 then 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=3 && var25=3 then var17=var17+1 : var19=var19+1 : var20=var20-2 if var26=3 && var25=4 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 drawscreen goto main bank2 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 e=e+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=4 : var15=var15-1 : var19=var19-1 : var20=var20+2 if var26=3 && var25=3 then var15=var15+1 : var19=var19+1 : var20=var20-2 if var26=3 && var25=2 then 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 drawscreen goto main bank2 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 drawscreen if pfread(var13, var14) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 if pfread(var15, var16) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 if pfread(var17, var18) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 if pfread(var19, var20) then var14=var14-1 : var16=var16-1 : var18=var18-1 : var20=var20-1 : goto check_line_p1 bank7 drawscreen goto main bank2 bank 6 beginning player0score=$00 player1score=$00 AUDV0=0 : AUDV1=0 var28=1 var5=0 var9=30 var22=30 score=0 v=0 : k=0 var12=0 COLUPF=200 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 XXXXXXXXXXXX........XXXXXXXXXXXX end player0x=0 : player0y=0 var30=0 b=0 o=0 : t=0 : z=0 u{0}=0 : u{1}=0 : u{2}=0 s=0 : a=(rand/32)+1 var12=1 var8=0 : var32=0 get_shape pfhline 14 0 17 off : pfhline 14 1 16 off : pfhline 14 2 16 off w=1 get_shape_a if u{6} then a=(rand/32)+1 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} then n=(rand/32)+1 if n=1 then pfpixel 14 0 on : pfpixel 15 0 on : pfpixel 16 0 on : pfpixel 17 0 on if n=2 then pfpixel 14 1 on : pfpixel 15 1 on : pfpixel 15 0 on : pfpixel 16 1 on if n=3 then pfpixel 14 1 on : pfpixel 15 1 on : pfpixel 15 0 on : pfpixel 16 0 on if n=4 then pfpixel 14 0 on : pfpixel 15 0 on : pfpixel 15 1 on : pfpixel 16 1 on if n=5 then pfpixel 14 1 on : pfpixel 15 2 on : pfpixel 14 0 on : pfpixel 14 2 on if n=6 then pfpixel 14 2 on : pfpixel 15 0 on : pfpixel 15 1 on : pfpixel 15 2 on if n=7 then pfpixel 14 0 on : pfpixel 15 0 on : pfpixel 14 1 on : pfpixel 15 1 on if !u{7} then pfhline 14 0 16 off : pfhline 14 1 16 off : pfhline 14 2 16 off drawscreen if n=8 then goto get_next_shape if var7=1 && pfread(c, d) then goto title_screen bank1 if var7=1 && pfread(e, f) then goto title_screen bank1 if var7=1 && pfread(g, h) then goto title_screen bank1 if var7=1 && pfread(i, j) then goto title_screen bank1 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 var30=1 then goto main bank2 if var7=1 then goto main bank2 get_shape_p1 pfhline 15 4 19 off : pfhline 15 5 18 off : pfhline 15 6 18 off var25=1 get_p1_shape_a if var28=1 then var26=(rand/32)+1 drawscreen 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 if var26=8 then goto get_p1_shape_a if var26=8 && var28=1 then var27=(rand/32)+1 : goto get_p1_shape_a goto get_p1_next_shape bank1 bank 7 check_line_p1 var26=var27 var28=0 var39=20 x=0 : var40=0 : var41=0 : var42=0 : var43=0 : var44=0 : var45=0 : var6=0 var40=14 pfpixel var13 var14 on : pfpixel var15 var16 on : pfpixel var17 var18 on : pfpixel var19 var20 on check_line_2_p1 var39=var39+1 drawscreen if var39=30 && var40=0 && pfread(var39, var40) then x{0}=1 if var39=30 && var40=1 && pfread(var39, var40) then x{1}=1 if var39=30 && var40=2 && pfread(var39, var40) then x{2}=1 if var39=30 && var40=3 && pfread(var39, var40) then x{3}=1 if var39=30 && var40=4 && pfread(var39, var40) then x{4}=1 if var39=30 && var40=5 && pfread(var39, var40) then x{5}=1 if var39=30 && var40=6 && pfread(var39, var40) then x{6}=1 if var39=30 && var40=7 && pfread(var39, var40) then x{7}=1 if var39=30 && var40=8 && pfread(var39, var40) then var41=1 if var39=30 && var40=9 && pfread(var39, var40) then var42=1 if var39=30 && var40=10 && pfread(var39,var40) then var43=1 if var39=30 && var40=11 && pfread(var39,var40) then var44=1 if var39=30 && var40=12 && pfread(var39,var40) then var45=1 if var39=30 && var40=13 && pfread(var39,var40) then var46=1 if var39<30 && pfread(var39, var40) then goto check_line_2_p1 var40=var40-1 : var39=20 if var40>0 then goto check_line_2_p1 if x>0 then goto erase_line_p1 if var41=1 then goto erase_line_p1 if var42=1 then goto erase_line_p1 if var43=1 then goto erase_line_p1 if var44=1 then goto erase_line_p1 if var45=1 then goto erase_line_p1 if var46=1 then goto erase_line_p1 goto get_shape_p1 bank6 erase_line_p1 var37=0 s=0 AUDV0=0 k{3}=1 erase_line_1a_p1 if var46=1 then pfhline 21 13 30 off : drawscreen : s=s+1 : var34=12 : var24=var24+1 if var45=1 then pfhline 21 12 30 off : drawscreen : s=s+1 : var34=11 : var24=var24+1 if var44=1 then pfhline 21 11 30 off : drawscreen : s=s+1 : var34=10 : var24=var24+1 if var43=1 then pfhline 21 10 30 off : drawscreen : s=s+1 : var34=9 : var24=var24+1 if var42=1 then pfhline 21 9 30 off : drawscreen : s=s+1 : var34=8 : var24=var24+1 if var41=1 then pfhline 21 8 30 off : drawscreen : s=s+1 : var34=7 : var24=var24+1 if x{7} then pfhline 21 7 30 off : drawscreen : s=s+1 : var34=6 : var24=var24+1 if x{6} then pfhline 21 6 30 off : drawscreen : s=s+1 : var34=5 : var24=var24+1 if x{5} then pfhline 21 5 30 off : drawscreen : s=s+1 : var34=4 : var24=var24+1 if x{4} then pfhline 21 4 30 off : drawscreen : s=s+1 : var34=3 : var24=var24+1 if x{3} then pfhline 21 3 30 off : drawscreen : s=s+1 : var34=2 : var24=var24+1 if x{2} then pfhline 21 2 30 off : drawscreen : s=s+1 : var34=1 : var24=var24+1 if x{1} then pfhline 21 1 30 off : drawscreen : s=s+1 : var34=0 : var24=var24+1 if x{0} then pfhline 21 0 30 off : drawscreen : s=s+1 : var24=var24+1 var37=0 : var38=3 : var29=0 rem if var0=0 && var1=1 && var2=0 && var3=1 then y=3 : z=1 rem if var0=1 && var1=0 && var2=0 && var3=1 then y=3 : z=1 rem if var0=1 && var1=0 && var2=1 && var3=0 then y=1 : z=2 rem if var3=1 && var2=1 && var1=0 && var0=1 then y=1 rem if var3=1 && var2=0 && var1=1 && var0=1 then y=2 : z=2 : var4=2 if var46=0 && var45=1 && var44=0 && var43=1 then var37=3 : s=1 if var46=1 && var45=0 && var44=0 && var43=1 then var37=3 : s=1 if var46=1 && var45=0 && var44=1 && var43=0 then var37=1 : s=2 if var46=1 && var45=0 && var44=1 && var43=1 then var37=2 : s=2 : var38=2 if var46=1 && var45=1 && var44=0 && var43=1 then var37=1 if var42=0 && var41=1 && var40=0 && x{7} then var37=3 : s=1 if var42=1 && var41=0 && var40=0 && x{7} then var37=3 : s=1 if var42=1 && var41=0 && var40=1 && !x{7} then var37=1 : s=2 if var42=1 && var41=0 && var40=1 && x{7} then var37=2 : s=2 : var38=2 if var42=1 && var41=1 && var40=0 && x{7} then var37=1 if var43=0 && var42=1 && var41=0 && var40=1 then var37=3 : s=1 if var43=1 && var42=0 && var41=0 && var40=1 then var37=3 : s=1 if var43=1 && var42=0 && var41=1 && var40=0 then var37=3 : s=1 if var43=1 && var42=0 && var41=1 && var40=1 then var37=2 : s=2 : var38=2 if var43=1 && var42=1 && var41=0 && var40=1 then var37=1 if var44=0 && var43=1 && var42=0 && var41=1 then var37=3 : s=1 if var44=1 && var43=0 && var42=0 && var41=1 then var37=3 : s=1 if var44=1 && var43=0 && var42=1 && var41=0 then var37=3 : s=1 if var44=1 && var43=0 && var42=1 && var41=1 then var37=2 : s=2 : var38=2 if var44=1 && var43=1 && var42=0 && var41=1 then var37=1 drawscreen goto erase_lines_1ba_p1 bank8 bank 8 erase_lines_1ba_p1 if var45=0 && var44=1 && var43=0 && var42=1 then var37=3 : s=1 if var45=1 && var44=0 && var43=0 && var42=1 then var37=3 : s=1 if var45=1 && var44=0 && var43=1 && var42=0 then var37=3 : s=1 if var45=1 && var44=0 && var43=1 && var42=1 then var37=2 : s=2 : var38=2 if var45=1 && var44=1 && var43=0 && var42=1 then var37=1 if var41=0 && var40=1 && !x{7} && x{6} then var37=3 : s=1 if var41=1 && var40=0 && !x{7} && x{6} then var37=3 : s=1 if var41=1 && var40=0 && x{7} && !x{6} then var37=3 : s=1 if var41=1 && var40=0 && x{7} && x{6} then var37=2 : s=2 : var38=2 if var41=1 && var40=1 && !x{7} && x{6} then var37=1 if var40=0 && x{7} && !x{6} && x{5} then var37=3 : s=1 if var40=1 && !x{7} && !x{6} && x{5} then var37=3 : s=1 if var40=1 && !x{7} && x{6} && !x{5} then var37=3 : s=1 if var40=1 && !x{7} && x{6} && x{5} then var37=2 : s=2 : var38=2 if var40=1 && x{7} && !x{6} && x{5} then var37=1 drawscreen if !x{6} && x{5} && !x{4} && x{3} then var37=3 : s=1 if x{6} && !x{5} && !x{4} && x{3} then var37=3 : s=1 if x{6} && !x{5} && x{4} && !x{3} then var37=3 : s=1 if x{6} && !x{5} && x{4} && x{3} then var37=2 : s=2 : var38=2 if x{6} && x{5} && !x{4} && x{3} then var37=1 if !x{5} && x{4} && !x{3} && x{2} then var37=3 : s=1 if x{5} && !x{4} && !x{3} && x{2} then var37=3 : s=1 if x{5} && !x{4} && x{3} && !x{2} then var37=3 : s=1 if x{5} && !x{4} && x{3} && x{2} then var37=2 : s=2 : var38=2 if x{5} && x{4} && !x{3} && x{2} then var37=1 if !x{4} && x{3} && !x{2} && x{1} then var37=3 : s=1 if x{4} && !x{3} && !x{2} && x{1} then var37=3 : s=1 if x{4} && !x{3} && x{2} && !x{1} then var37=3 : s=1 if x{4} && !x{3} && x{2} && x{1} then var37=2 : s=2 : var38=2 if x{4} && x{3} && !x{2} && x{1} then var37=1 var47=20 erase_line_1b_p1 var47=var47+1 if var47>30 && var34=0 && var3730 && var34>0 then var34=var34-1 : var47=20 if var47>30 && var34=0 && var37>0 then var34=12 : var37=var37-1 : var47=20 : var29=1 if k{6} then var12=1 goto main bank2 move_blocks_down_3_p1 player1score=player1score+var24 k{3}=0 var35=var35+var24 if var35=10 && var9>6 then player0score=player0score+6 : var35=0 : var22=var22-2 if var35=11 && var9>6 then player0score=player0score+6 : var35=1 : var22=var22-2 if var35=12 && var9>6 then player0score=player0score+6 : var35=2 : var22=var22-2 if var35=13 && var9>6 then player0score=player0score+6 : var35=3 : var22=var22-2 var38=0 var37=0 var24=0 var46=0 : var45=0 : var43=0 : var42=0 : var41=0 : var40=0 var39=0 : s=0 : var47=0 var35=0 : var37=0 drawscreen goto get_shape_p1 bank6 inline playerscores.asm