set romsize 8k set kernel_options player1colors no_blank_lines title_screen playfield: XXX.X.XXX.X...XXX.............. .X..X..X..X...X................ .X..X..X..X...XXX.............. .X..X..X..X...X................ .X..X..X..XXX.XXX.............. ............................... .XX..XX.XX..XXX.XXX.XX......... X...X...X.X.X...X...X.X........ .X..X...XX..XXX.XXX.X.X........ ..X.X...X.X.X...X...X.X........ XX...XX.X.X.XXX.XXX.X.X........ end lifecolor=0 player0x=0 : player0y=0 : player1x=0 : player1y=0 COLUPF=64 : COLUBK=0 : b{5}=0 drawscreen if switchreset then goto begin goto title_screen begin lives=64 lives: %01110 %11111 %11111 %00000 %11111 %10101 %10101 %01110 end dim screen=a dim jump=c dim map=p dim level=q dim byte1=score dim byte2=score+1 dim byte3=score+2 screen=0 score=0 e{3}=0 : e{2}=0 jump=0 map=1 level=1 statusbarlength=224 return_to_map r=30 b=30 : o{1}=0 player1: %01110 %11111 %11111 %00000 %11111 %10101 %10101 %01110 end player1color: 46 46 46 46 46 46 46 46 end if map=1 then player0: %01110001 %11111101 %11111110 %11111110 %10111101 %01110001 end maps byte1=$CD if map=1 then COLUPF=200 : COLUBK=130 : COLUP0=0 : byte2=$E1 : playfield: ................................ ................................ ................................ ................................ .................XXXX........... ................XXXXX........... .................XXXXX.......... ................................ ................................ ................................ ................................ end if level=1 then player1x=40 : player1y=30 : byte3=$A1 if level=2 then screen=9 : player1x=80 : player1y=48 : byte3=$A2 if level=3 then player1x=120 : player1y=60 : byte3=$A3 player0x=120 : player0y=60 scorecolor=14 : lifecolor=46 drawscreen if joy0fire && !o{1} then o{1}=1 if !joy0fire && o{1} then o{1}=0 : o{0}=1 if o{0} then AUDV0=6 : AUDC0=12 : AUDF0=r if o{0} then r=r-1 if r<1 then r=0 : AUDV0=0 : o{0}=0 : goto begin_level goto maps begin_level if level=1 then s=119 : t=0 : byte1=$FF : byte2=$1B : byte3=$59 if level=2 then goto z_level_2 bank2 pick_screen screen=screen+1 pick_screen_2 b{0}=0 : g=1 b{6}=0 if b{5} then goto title_screen if screen=1 then player0x=74 : player0y=48 : e{1}=1 : o{2}=1 : player1x=30 : player1y=10 : playfield: X.........XXXXXXXXXXXXXXXXXXXXX X.........X...................X X.........X...................X XXXXX.....X...................X X.........XXXX....XXXX....XXXXX X.........XXXX....XXXX....XXXXX X.........XXXX....XXXX....XXXXX X....XXXXXXXXX....XXXX....XXXXX X..................XX.......... X..................XX.......... X..................XX.......... end if screen=2 then e{3}=1 : o{2}=0 : player1y=70 : player0x=110 : playfield: X....................X......... X....................X......... X....XXXXX...XXXXX...XXXXX..... X....X...X...X...X...X...X....X X....X...X...X...X...X...X....X X....X...X...X...X...X...X....X XXXXXX...X...X...X...X...X....X .....XXXXX...XXXXX...XXXXX....X .............X................X .............X................X XXXX.........X................X end if screen=3 then e{1}=1 : e{3}=0 : o{6}=1 : player0x=53 : player1y=10 : playfield: .......X....................... .......X....................... .......X....................... X......X.....XXXXXXXXXXXXXXXXXX X......X.....XXXX.............X X......X......................X X......X.............XXXX...XXX X......XXXXXXXXXXXXXXXXXX...XXX X.............................X X.............................X X.............................X end if screen=4 then e{1}=0 : e{5}=1 : e{3}=0 : e{4}=1 : player1y=20 : player0y=48 : player0x=40 : playfield: .........X...X.............X... .........X...X.............X... .........X...X.............X... XXXXX....X...X....XXXXX....X... X...X....X...X....X...X....X... X...X....X...X....X...X....X... X...X....X...X....X...X....X... X...X....XXXXX....X...X....XXXX X...X.............X...X........ X...X.............X...X........ X...X.............X...X........ end if screen=5 then player1y=70 : player0x=40 : player0y=48 : e{5}=0 : e{1}=1 : playfield: X......X......X.........X...... X.....X........X.......X....... X....X..........X.....X........ X...X............X...X.......XX X..X......X.......X.X.......X.X X.X......X.X.......X.......X..X XX......X...X.............X...X .......X.....X...........X....X ......X.......X.........X.....X .....X.........X.......X......X XXXXX...........X.....X.......X end if screen=6 then player1y=20 : player1y=20 : player0x=30 : e{1}=1 : e{3}=1 : j=150 : k=10 : l=50 : m=80 : player0y=80 : playfield: .....X......................... .....X......................... .....X.....................XXXX X....X..X..................X..X X....X..X..................X..X X....X..XXXXXXXXXXXXXXXXXXXX..X X....X........................X X....X........................X X....XXXXXXXXXXXXXXXXX....XXXXX X.............................X X.............................X end if screen=7 then e{6}=0 : e{3}=0 : e{1}=0 : e{5}=1 : o{6}=1 : player0y=44 : player0x=77 : player1y=20 : playfield: .......X........X.............. .......X........X.............. .......X........X.............. X......X...X....X.......XXXXXXX XXXX...X...X.....XX...........X X......X...X.......X..........X X......X...XXX.....X..........X X....XXX.....X.....XXXXXXX....X X............X................X X............X................X X............X................X end if screen=8 then player1y=20 : e=0 : e{1}=1 : o{6}=0 : o{3}=1 : player0x=60 : player0y=50 : playfield: ..............XX............... ..............XX............... ..............XX............... XXXXXXXXX.....XX.....XXXXXXXXXX X.............XX..............X X.............XX..............X X.......XXXXXXXXXXXXXX........X X....XXXXXXXXXXXXXXXXXXXX.....X X.............................X X.............................X X.............................X end if screen=9 && !joy0fire then level=level+1 : e=0 : o=0 : goto return_to_map swim player1color: 46 46 46 68 68 68 46 46 46 46 46 end if f>10 then player1: %00000101 %00001011 %01001010 %00101010 %01111110 %01111100 %01001000 %11100100 %00000000 %11100000 %11000000 end if f<9 then player1: %00000001 %00000111 %00010010 %00101010 %01111110 %01111100 %01001000 %11110000 %00000000 %11100000 %11000000 end if player1y>88 then goto die if collision(player0,player1) && !b{1} then b{1}=1 : goto die rem timer r=r+1 if r>60 then r=0 : s=s-1 : t=t+1 : byte3=byte3-$01 if t=10 then byte3=byte3-$06 : t=0 if s=59 && r=0 then byte2=byte2-$10 : byte3=$59 if s=0 then byte2=$0B : byte3=$00 : b{1}=1 b{1}=0 if e{1} then gosub e_1 if e{5} then gosub e_5 if e{3} then gosub e_3 if e{4} then REFP0=0 else REFP0=8 if screen=6 then o{6}=0 if screen=6 && player1x>50 && player1y<70 then e{6}=1 if player1x<20 then player1x=20 if player1y<13 then player1y=13 if player1x>130 then player1x=20 : goto pick_screen d=d+1 : f=f+1 if g>4 then g=0 if joy0down then d=3 if f>20 then f=0 if !joy0fire && d>2 then b{0}=0 : y=1 if joy0fire then b{0}=1 if b{0} && d>2 then y=255 if joy0left then x=255 : b{2}=1 if joy0right then x=1 : b{2}=0 player1x=player1x+x : player1y=player1y+y if b{2} then REFP1=0 else REFP1=8 ds if o{2} then NUSIZ0=$02 if o{3} then NUSIZ0=$03 if o{6} then NUSIZ0=$06 if e{6} && g>2 then gosub e_6 COLUPF=198 : COLUP1=78 : COLUBK=130 : lifecolor=46 : scorecolor=14 : COLUP0=0 drawscreen if collision(playfield,player1) then player1x=player1x-x : player1y=player1y-y if d>2 then d=0 x=0 : y=0 if b{6} then goto die goto swim e_5 i=i+1 if e{4} && i>1 then player0x=player0x-1 : i=0 if !e{4} && i>1 then player0x=player0x+1 : i=0 if player0x>80 then e{4}=1 if player0x<20 then e{4}=0 return e_3 i=i+1 if e{4} && i>1 && screen<6 then player0x=player0x-1: i=0 if !e{4} && i>1 && screen<6 then player0x=player0x+1 : i=0 if e{4} && i>1 && screen=6 then l=l-1 : i=0 if !e{4} && i>1 && screen=6 then l=l+1 : i=0 if g<3 && screen=6 then player0x=l : player0y=m if g>2 && screen=6 then player0x=j : player0y=k if player0x<20 && screen<6 then e{4}=0 if player0x>125 && screen<6 then e{4}=1 if l<20 && screen=6 then e{4}=0 if l>125 && screen=6 then e{4}=1 if g<3 && screen<6 then player0y=80 if g>2 && screen<6 then player0y=12 return e_1 g=g+1 if screen=8 then g=4 if player0y>88 then e{0}=0 if player0y<40 && screen=8 then e{0}=1 if player0y<16 then e{0}=1 if g>3 && e{0} then player0y=player0y+1 if g>3 && !e{0} then player0y=player0y-1 return e_6 n=n+1 player0x=j : player0y=k e{3}=1 : e{1}=1 if player1x1 then j=j-1 : REFP0=0 if player1x>j && n>1 then j=j+1 : REFP0=8 if player1y1 then k=k-1 if player1y>k && n>1 then k=k+1 if n>1 then n=0 return die b{6}=1 : e{6}=0 h=h+1 if lives<32 then b{5}=1 if h>59 then statusbarlength=statusbarlength-16 if h>59 && statusbarlength>15 then h=0 : player1x=20 : goto pick_screen_2 if h>59 && statusbarlength<16 then h=0 : lives=lives-32 : player1x=20 : goto pick_screen_2 if h<60 then goto ds bank 2 z_level_2 b=0 : player1y=80 if level=2 then s=119 : t=0 : byte1=$FF : byte2=$1B : byte3=$59 z_level_2_pick_screen b{1}=0 if screen=9 then player1x=20 : player1y=80 : player0x=54 : player0y=60 : e{0}=1 : o{6}=1 : playfield: ................................ ................................ ................................ ................................ ................................ ................................ ............XXXXXX...XXXX...XXXX ................................ ................................ ................................ XXXXXXXXX....................... end main_land player1color: 4 4 16 16 16 16 64 64 64 64 64 46 46 46 46 46 46 46 244 end if !b{0} && !b{6} then player1color: 4 16 16 16 16 46 64 64 64 64 64 64 64 46 46 46 46 46 46 46 244 end if f>40 then f=1 if b{0} then goto t_jump if b{6} then goto t_jump if f=0 then goto t_standing if f<10 then goto t_walking_1 if f<20 then goto t_walking_2 if f<30 then goto t_walking_3 if f<=40 then goto t_walking_2 t_walking_1 player1: %11000110 %10000111 %01000100 %01001000 %00101000 %10000010 %10111100 %10111100 %10111100 %01011100 %01011100 %01111100 %01111100 %00111000 %01111100 %00000000 %01111100 %01110100 %01111100 %00111000 %00111100 end goto main_land_2 t_standing player1: %11101110 %00101000 %00101000 %00101000 %00101000 %10000010 %10111010 %10111010 %10101010 %10101010 %11000110 %01111100 %01111100 %00111000 %01111100 %00000000 %01111100 %01010100 %01111100 %00111000 %00111100 end goto main_land_2 t_walking_2 player1: %00111000 %00110000 %00011100 %00111000 %00110000 %01011100 %01011100 %01011100 %01011100 %01111100 %01111100 %00111000 %01111100 %00000000 %01111100 %01110100 %01111100 %00111000 %00111100 end player1color: 4 16 16 16 46 64 64 64 64 64 64 46 46 46 46 46 46 46 244 end goto main_land_2 t_walking_3 player1: %11000110 %10000111 %01000100 %01001000 %00101000 %00000001 %00111011 %00111010 %00110110 %00110110 %00110110 %00111110 %00111110 %00011100 %00111110 %00000000 %00111110 %00111010 %00111110 %00011100 %00011110 end goto main_land_2 t_jump player1: %00100010 %00101100 %00100110 %00100001 %00100111 %00111110 %00111110 %00110110 %01110110 %01100011 %10111101 %10111001 %10001101 %01100000 %11111000 %11010100 %11111000 %01110000 %01111000 end player0color: 4 4 16 16 16 16 64 64 64 64 64 46 46 46 46 46 46 46 244 end main_land_2 b{1}=0 if e{0} && !b{1} then gosub e_0_2nd_bank rem timer r=r+1 if r>60 then r=0 : s=s-1 : t=t+1 : byte3=byte3-$01 if t=10 then byte3=byte3-$06 : t=0 if s=59 && r=0 then byte2=byte2-$10 : byte3=$59 if s=0 then byte2=$0B : byte3=$00 : b{1}=1 if !joy0left && !joy0right && !b{0} && !b{6} then f=0 if joy0left && player1x>19 then f=f+1 : player1x=player1x-1 : REFP1=8 if joy0right then f=f+1 : player1x=player1x+1 : REFP1=0 if joy0fire && !b{0} && !b{6} then b{0}=1 if !joy0fire && b{0} then b{0}=0 : jump=0 : b{6}=1 if !collision(player1,playfield) && !b{0} && !b{6} then b{6}=1 if b{0} && jump<41 then jump=jump+1 : player1y=player1y-1 if b{0} && jump>40 then jump=0 : b{0}=0 : b{6}=1 if b{6} then player1y=player1y+1 if b{6} && collision(player1,playfield) && player1y=82 then b{6}=0 if b{6} && collision(player1,playfield) && player1y=50 then b{6}=0 if b{6} && collision(player1,playfield) && player1y=18 then b{6}=0 h=0 ds_land COLUPF=196 : COLUBK=136 if o{6} then NUSIZ0=$06 if collision(player0,player1) && !b{1} then b{1}=1 drawscreen if player1y>90 && player1y<230 then b{1}=1 if player1y>90 && player1y<230 && b{1} then goto die_land if collision(player0,player1) && b{1} then goto die_land goto main_land die_land if b{1} then h=h+1 if lives<32 then b{5}=1 if h>59 then statusbarlength=statusbarlength-16 : player0x=0 : player0y=0 : b{1}=0 if h>59 && statusbarlength>15 then goto z_level_2_pick_screen if h>59 && statusbarlength<16 then lives=lives-32 : goto z_level_2_pick_screen goto ds_land e_0_2nd_bank i=i+1 if i>1 && e{1} then i=0 : player0y=player0y-1 if i>1 && !e{1} then i=0 : player0y=player0y+1 if player0y>80 then e{1}=1 if player0y<38 then e{1}=0 return inline 6lives_statusbar.asm