set kernel_options no_blank_lines player1colors set romsize 8k set smartbranching on title_screen player1x=58 : player1y=96 playfield: ..XX.XX.XX.X..X..XX.........XX... ..X...X.X..XX.X..XX.........X.... ..X..XX.XX.X..X..XX......XX.XX... ..X..XX..X.X..X..X.......XX.X.... ..XX.XX.XX.XX.XX.XXX.....XX.X.... ...................X............. ...................X............. ..................XX.XX.XX.XXXXX. ..................XX.XX.XX.X.X.X. ..................XX.XX.XX.X.X.X. ................................. end player1: %0100010 %0010100 %0001000 %0111110 %1001001 %0011100 %0111110 %0011100 end player1color: $f2 $94 $94 $C4 $2c $2c $2c $22 end player0: %11111111 %11111111 %11111111 %10100101 %10100101 %10100101 %10100101 %10100101 %10100101 %10100101 %10100101 %11111111 %11111111 %11111111 %11111111 %11111111 %11111111 %11111111 %11011011 %11011011 %11011011 %11011011 %11011011 %11011011 %10000011 %10000011 %10000011 %10000011 %10000011 %10000011 end v=0 get_random_thunder w=rand/64 : t=0 title_main COLUBK=v : scorecolor=$C4 COLUP0=$04 : COLUPF=$C8 : player0x=50 : player0y=90 : NUSIZ0=$01 : CTRLPF=$31 ballx=59 : bally=87 : ballheight=13 if player1y>82 && player1y<200 then e=e+1 else player1y=200 if e>10 && player1y<>87 then e=0 : player1y=player1y-1 if e>200 && player1y=87 then e=0 : player1y=player1y-1 if joy0fire && !b{0} then b{0}=1 if !joy0fire && b{0} then b{0}=0 : goto new_game dim scback=u u=$c4 drawscreen z=z+1 if z>59 then z=0 : t=t+1 if t=w && z=59 then v=8 if t>w then goto thunder AUDV0=0 goto title_main thunder AUDV0=v : AUDF0=v*2 : AUDC0=2 if z>7 then z=0 : v=v-1 if v=0 then goto get_random_thunder goto title_main new_game scorecolor=14 AUDV0=0 player0: %00010100 %00111100 %01111110 %01010010 %11011011 end o=64 player1x=23 : player1y=79 dim level=r level=17 : score=18 if joy0up then level=0 : score=1 goto get_new_level bank2 main COLUPF=$24 COLUP0=$66 u=0 : COLUBK=0 ballheight=13 : CTRLPF=$31 NUSIZ0=$06 if level=12 then NUSIZ0=$03 if level=14 then NUSIZ0=$00 dim sc1=score dim sc2=score+1 sc1=$AB sc2=$C0 if !switchbw then goto skip_music rem music data AUDC0=12 : AUDF0=bass_notes[n] : AUDV0=4 l=l+1 if l>39 then l=0 : n=n+1 : p=p+1 if n>47 then n=0 : p=0 skip_music if player1x<20 then player1x=132 if player1x>132 then player1x=20 if switchreset then goto title_screen drawscreen if !a{1} && joy0up && collision(player1,ball) then level=level+1 : score=score+1 : goto get_new_level bank2 if collision(player1,player0) then o=32 : goto get_new_level bank2 if player1y>90 then goto get_new_level bank2 if level=14 && m=3 then player0y=player0y+2 if level=14 && m=4 then player0x=player0x-2 if level=14 && m=1 then player0y=player0y-2 if level=14 && m=2 then player0x=player0x+2 if level=14 && player0y>80 then m=4 : player0y=80 : player0x=player0x-2 if level=14 && player0x<30 then m=1 if level=14 && player0y<20 then m=2 if level=14 && player0x>130 then m=3 if level=14 then goto main_2 if level>10 && v>90 && m{0} then player0x=player0x-1 if level>10 && v>90 && !m{0} then player0x=player0x+1 if level=10 && m{0} && t>5 then player0x=player0x-1 if level=10 && !m{0} && t>5 then player0x=player0x+1 if level=10 && player0y5 then player0y=player0y+1 if level=10 && player0y>player1y && t>5 then player0y=player0y-1 if t>5 then t=0 if t=5 && player0x>v then m{0}=1 if t=5 && player0x<20 then m{0}=0 if v>90 then t=t+1 : goto main_2 if m{0} then player0y=player0y+1 else player0y=player0y-1 if player0y=10 then m{0}=1 if player0y=v then m{0}=0 main_2 AUDV1=0 if z>30 then a{0}=0 : a{1}=1 : goto __Test_P0_Down if a{0} && z<30 && o=64 then AUDC1=1 : AUDV1=4 : AUDF1=z if o<64 then o=o+1 : AUDC1=3 : AUDF1=o/2 : AUDV1=4 if o>63 then o=64 if joy0fire && !a{0} then a{0}=1 : goto __Test_P0_Up if !joy0fire && a{0} then a{0}=0 if a{0} then goto __Test_P0_Up if !a{0} then a{1}=1 : z=21 __Test_P0_Up z=z+1 b=(player1x-17)/4 e=(player1y/8)-1 if pfread(b,e) then a{0}=0 : z=31 : a{0}=0 : a{1}=1 : goto __Cant_Move_Up d=b + 2 if pfread(d,e) then a{0}=0 : z=31 : a{0}=0 : a{1}=1 : goto __Cant_Move_Up goto __P0_Move_Up __Cant_Move_Up goto __Skip_Joy0_Up __P0_Move_Up if a{0} then player1y=player1y-1 __Skip_Joy0_Up if a{1} then goto __Test_P0_Down goto __Skip_Joy0_Down __Test_P0_Down if !a{1} then goto __Skip_Joy0_Down b = (player1x-17)/4 e = ((player1y-7)/8) + 1 if pfread(b,e) then goto __Cant_Move_Down d = b + 2 if pfread(d,e) then goto __Cant_Move_Down goto __P0_Move_Down __Cant_Move_Down a=0 : z=0 goto __Skip_Joy0_Down __P0_Move_Down if a{1} then player1y=player1y+1 if joy0left then goto left if joy0right then goto right goto main __Skip_Joy0_Down left f = ((player1x-14)/4)-1 g = (player1y)/8 if pfread(f,g) then goto __Cant_Move_Left goto __P0_Move_Left __Cant_Move_Left goto __Skip_Joy0_Left __P0_Move_Left if joy0left then player1x=player1x-1 : goto main __Skip_Joy0_Left if joy0right then goto __Test_P0_Right goto main right __Test_P0_Right f = ((player1x-12)/4)+1 g = ((player1y)/8) if pfread(f,g) then goto __Cant_Move_Right goto __P0_Move_Right __Cant_Move_Right goto __Skip_Joy0_Right __P0_Move_Right if joy0right then player1x=player1x+1 __Skip_Joy0_Right goto main level_info if r < 9 then on r goto level_1a level_2a level_3a level_4a level_5a level_6a level_7a level_8a level_9a s = r - 9 : if s > 9 then on s goto level_10a level_11a level_12a level_13a level_14a level_15a level_16a level_17a s = r - 18 : if s > 9 then on s goto level_18a level_1a player0x=130 : player0y=20 ballx=56 : bally=78 : v=80 goto main level_2a player0x=37 : player0y=20 ballx=130 : bally=78 : v=70 goto main level_3a player0x=57 : player0y=30 ballx=120 : bally=78 goto main level_4a player0x=52 : player0y=30 ballx=73 : bally=30 : v=80 goto main level_5a player0x=70 : player0y=30 ballx=40 : bally=54 : v=90 goto main level_6a player0x=132 : player0y=56 ballx=130 : bally=54 : v=90 player1x=44 : player1y=79 goto main level_7a player0x=130 : player0y=60 : ballx=70 : bally=78 v=80 goto main level_8a player0x=130 : player0y=48 : ballx=130 : bally=22 goto main level_9a player0x=57 : player0y=48 : ballx=133 : bally=30 : v=80 goto main level_10a player0x=57 : player0y=47 : ballx=23 : bally=22 : v=90 goto main level_11a player0x=57 : player0y=47 : ballx=45 : bally=30 : v=130 goto main level_12a player1x=52 : player0x=130 : player0y=72 : ballx=108 : bally=62 : v=135 goto main level_13a player0x=60 : player0y=66 : ballx=74 : bally=78 : v=90 goto main level_14a player0x=69 : player0y=12 : ballx=25 : bally=54 : v=90 goto main level_15a player0x=131 : player0y=10 : ballx=112 : bally=78 : v=135 goto main level_16a player0x=50 : player0y=40 : ballx=33 : bally=54 : v=90 goto main level_17a player1x=21 : player0x=30 : player0y=40 : ballx=33 : bally=54 : v=90 goto main level_18a player0x=110 : player0y=49 : ballx=60 : bally=30 : v=90 goto main data treble_notes 14, 17, 15, 18, 17, 20, 23, 18 14, 11, 15, 18, 17, 20, 18, 15 end data bass_notes 23, 20, 19, 23, 20, 19, 23, 20, 19, 23, 20, 19 24, 23, 20, 24, 23, 20, 24, 23, 20, 24, 23, 20 27, 24, 23, 27, 24, 23, 27, 24, 23, 27, 24, 23 29, 27, 24, 29, 27, 24, 29, 27, 24, 29, 27, 24 end bank 2 get_new_level player1x=23 : player1y=79 if r < 9 then on r goto level_1 level_2 level_3 level_4 level_5 level_6 level_7 level_8 level_9 s = r - 9 : if s > 9 then on s goto level_10 level_11 level_12 level_13 level_14 level_15 level_16 level_17 s = r - 18 : if s > 9 then on s goto level_18 level_1 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............................X X..............................X X.......XXXXXXXXXXXXXXXXXXX....X X.........X............XX......X XXXXX.....X............XX......X X.........X..............XX....X X.......XXX.....XX.......XX....X X.......X.......XX.............X X.......X.......XX.............X XXXXXXXXXXXXXXXXXX......XXXXXXXX ................................ end goto level_info bank1 level_2 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............................X X..............................X X.....XXXXXXXXXXXXXXXXXXXXX....X XXX...X........................X X.....X........................X X.....X.......XXXXXXXXXXXXXXXXXX X...XXX..XX...XXXX....XXXXX....X X.....X........................X X.....X........................X XXXXXXX.......XXXX....XXXXXXXXXX end goto level_info bank1 level_3 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............................X X..............................X X.......................XXX....X X.......................X.X....X X.......................X.X....X X.........XX.....XX.....X.X....X X....XX.................XXX....X X....XX.................X......X X....XX.................X......X XXXXXXX.................XXXXXXXX end goto level_info bank1 level_4 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X...........X..................X X...........X..................X X...........X.........XXX......X X.....XX....XXXXXXXXXXX.....XXXX X.....XX....XX........X........X X.....XX....XX........X........X X...XXXX....XX...XX...XXXXX....X X.....XX.........XX............X X.....XX.........XX............X XXXXXXXX....XX...XX....XXXXXXXXX end goto level_info bank1 level_5 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX...........................X X..............................X X..............................X X...XXXXXX.....XX....XX..XX....X X........X.....XX....XX........X X........X.....XX............XXX XXXXXXXXXX.....................X X........................XX....X X....................XX..XX....X XXXXXXXXXX.....XX....XX..XX....X end goto level_info bank1 level_6 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............................X X..............................X X..............................X X..........XX.....XX.....XX....X X...XX.....XX.....XX.....XX....X X...XX.....XX.....XX.....XX....X X...XX.....XX............XXXXXXX X...XX...XXXX..................X X...XX.....XX..................X X...XXXXXXXXXXXXXXXXXXXXXXXXXXXX end goto level_info bank1 level_7 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............................X X..............................X X.....XX...XX......XXXX...XX...X X...XXXXXXXXXXXXXXXXXXX...XX...X X.....XX..................XX...X X.....XX..................XX...X XXX........XXXXXXXXXXXXXXXXX...X X..........X...................X X..........X...................X XXXXXXX....XXXX...XXX...XXXX...X end goto level_info bank1 level_8 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X....................X.........X X....................X.........X X...XX...XX...XXXX...X....XXXXXX X.............X..X...X.........X XXX...........X..X...XXX.......X ..X...........X..X...X.X.......X XXXXXXXXXX....X..X...XXXXXXX...X X.............X..X.............X X.............X..X.............X XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX end goto level_info bank1 level_9 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X...........X..........X.......X X...........X..........X.......X X......XX...X.....XX...X.......X X....XXXX...X...XXXX...X...XXXXX X......XX...X.....XX...X.......X X......XX...X.....XX...X.......X XXXX...XX...XXX...XX...XXX.....X X......XX.........XX...........X X......XX.........XX...........X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end goto level_info bank1 level_10 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXX.... X........X.................X.... X........X.................X.... XXXXXX...X......XXXXXX.....XXXXX .........XXX....XX.......XX..... .........X......XX.....XX....... XXXXXXXXXX......XX.....XX.....XX X........XXX....XX.....XX.....XX X...............XXXX........XXXX X....XX...........XXXX........XX XXXXXXXXXXXXXX........XXXXXXXXXX end goto level_info bank1 level_11 playfield: X..............................X X....XXXXXXXXXXXXXXXXXXXXX.....X X....X...................X.....X X....X...................X.....X X....XXXXXXXXXXXXXXXX....XXX...X X........................X.....X X........................X.....X XXXXXXXXXXXXXXXXXXXXXXXXXX...XXX X..............................X X..............................X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end goto level_info bank1 level_12 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ......XX........................ ......XX........................ XXX...XX....XXXXXXXXXXXXXXXXXXXX X.....XX.............X.........X X...XXXX.............X.........X X.....XX...XX...XX...X.........X XXX........XX...XX...X...XX....X X..........XX...XX...XXXXXX....X X..........XX...XX.............X XXX.....XXXXX...XXXXXXXXXXXXXXXX end goto level_info bank1 level_13 playfield: ....XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX...........XX............X X................XX............X X...........XX...XX.....XXXX...X X...XXXXXXXXXX...XXXX...XX.....X X...........XX..........XX.....X X...........XX..........XX...XXX XXXXXXXXX...XXXXXXXXXXXXXX...X.. X...........X................X.. X...........X................X.. XXXXXXXXX...XXXXXXXXXXXXXXXXXX.. end goto level_info bank1 level_14 playfield: X..............................X X..............................X X...XXXXXXXXXXXXXX...XX........X X...X...........XX...........XXX X...X...........XX.............X X...X.....XX....XX.............X X...X.....X.....XX...XX........X XXXXX...XXX...XX.............XXX X.........X....................X X.........X....................X XXXXXXXXXXXXXXXX.....XX......XXX end goto level_info bank1 level_15 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X.............X.....XX.........X X.............X................X X.....XXXXX...X..........XXX...X XXX...X.......X...XXXXXXXX.....X X.....X.......X.........X....XXX X.....X...XXXXX.........X......X X...XXX......XXXXXX...XXXXXX...X X.....X...............X........X X.....X...............X........X XXXXXXX.....XX...XX...XXXXXX...X end goto level_info bank1 level_16 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X..............................X X..............................X X...XXXXXXXXX...XXXXX...XX.....X X...XXX.....X...X...X...XX...XXX X.....X.....XXXXX...XXXXXX.....X X.....X........................X XXXXXXX......................XXX X.........XX.........XX........X X.........XX....XX...XX........X XXXXXXX...XX....XX...XXXXXXXXXXX end goto level_info bank1 level_17 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ......X......................... ......X......................... XX....X...XXXXXXX.............XX XX....X..........XXXXXXXXXXXXXXX XX....X........................X XX....XXXX.....................X XXXXXXXXXXXXXXXXXXXXXXXXXXXX...X X..............................X X..............................X XXXX...XXX...XXX...XXX...XXX...X end goto level_info bank1 level_18 playfield: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .........X...................... .........X...................... XXXX.....X...XXXXXXXXXXXXXX..... .........XXXX......X.......XXXXX .......XXX.........X.......X.... ....XXX............X.......X.... XXXX.........XXX...X...X...X...X X.........XXX..........X.......X X......XXX.............X.......X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end goto level_info bank1 level_19 level=0 : score=1 : goto level_1 asm minikernel lda scback sta COLUBK rts end