rem Monthra I rem by Fort Apocalypse set kernel_options no_blank_lines playfieldpos=4 set smartbranching on const font = alarmclock const pfscore = 1 titleinit b=65 c=50 d=$C0 e=$CB f=23 s=0 i=0 titlescr scorecolor = 0 if x<>79 then x=x+7 if player1y&3=1 then AUDC1=2 else AUDC1=3 AUDF1=c if player1y<>68 then player1x=75 : player0y=50 : player1y=player1y-63 : AUDV0 = 1 : AUDV1 = 1 else if player0y<>189 then player0y=189 : AUDV0 = 0 : AUDV1 = 0 : s=15 gosub sounds if player1x<67 then player1x=75 COLUP1=n if n&3=1 then COLUP0=n : REFP0=8 : player0x=x else COLUP0=254-n : REFP0=0 : player0x=150-x gosub title if joy0fire then goto initgame if switchreset then goto initgame if switchselect then goto selecting drawscreen goto titlescr selecting AUDC1=2 AUDF1=f if n<64 then AUDV1=1 else AUDV1=0 player0y=179 player1x = 43 player1y = 70 missile1x = 70 missile1y = 70 s=0 gosub sounds gosub creature player0y=189 if joy0fire then goto initgame if switchreset then goto initgame if joy0left then e=e-1 : f=f-3 if joy0right then e=e+1 : f=f+3 if joy0up then d=d-3 : i=i+1 if joy0down then d=d+3 : i=i-1 COLUP1=e COLUPF=d COLUBK=i scorecolor=f pfscore1 = %00010101 : pfscore2 = %11111111 : pfscorecolor=d missile1height=2 NUSIZ1=$10 CTRLPF=$31 pfclear pfvline 0 0 10 on pfhline 0 0 30 on pfvline 30 0 10 on pfhline 0 10 30 on drawscreen goto selecting initgame m=0 score=0 p=%00010101 newlife if bally&3=1 then AUDC1=2 else AUDC1=3 AUDF1=b if bally&3=1 then AUDV1=1 else AUDC1=0 missile1x=24 missile1y=83 player1x = 43 player1y = 50 COLUBK=i COLUPF=d COLUP0=d COLUP1=e scorecolor=f w=%11111111 pfscore1=p : pfscore2=w : pfscorecolor=d player0x=80 player0y=179 ballx=160 bally=179 gosub maze drawscreen mainloop if switchreset then goto initgame if switchselect then goto selecting gosub sounds gosub sensor gosub creature if n&7=1 then gosub pacing if n<128 then t=1 else t=255 s=255 : if n>64 then if n<172 then s=1 if collision(player1,playfield) then player1x=player1x+t+t : player1y=player1y+s+s : if player1x 120 then ballx = 0 : bally = rand&63 if !switchrightb then player0y=player0y-1 : if player0y > 250 then player0y=64 : player0x=rand if switchleftb then bally=179 if switchrightb then player0y=179 if player1x<30 then player1x=31 if player1x>120 then player1x=119 if player1y<10 then player1y=11 if player1y>80 then player1y=79 if missile1x<20 then missile1x=21 if missile1x>160 then missile1x=159 if missile1y<2 then w=%11111111 : m=m+1 : missile1x=24 : missile1y=83 : gosub maze : score=score+1 : if m=47 then goto win if missile1y>83 then gosub maze : missile1x=24 : missile1y=83 COLUBK=i COLUPF=d COLUP0=d COLUP1=e scorecolor=f if n=0 then w=w/4 pfscore1=p : pfscore2=w : pfscorecolor=d if w=0 then goto lose missile1height=2 if m<16 then NUSIZ1=$10 else gosub lrgchta CTRLPF=$31 g=0 h=0 if joy0fire then gosub maze if joy0left then missile1x=missile1x-1 : g=255 if joy0right then missile1x=missile1x+1 : g=1 if joy0up then missile1y=missile1y-1 : h=255 if joy0down then missile1y=missile1y+1 : h=1 drawscreen if collision(missile1,playfield) then gosub blckmsl1 goto mainloop blckmsl1 if g=255 then missile1x=missile1x+2 if g=1 then missile1x=missile1x-2 if h=255 then missile1y=missile1y+2 if h=1 then missile1y=missile1y-2 return lrgchta if m<45 then NUSIZ1=$15 else NUSIZ1=$17 return pacing if n<128 then player1y=player1y+t else player1y=player1y-t return sounds n=n+1 if s=0 then AUDV0=0 : return AUDC0 = 8 : AUDF0 = n * 4 AUDV0=s if n&3=1 then s=s-1 : c=c+1 return maze if m=5 then w=%11111111 : gosub boss1 : return if m=10 then w=%11111111 : gosub boss2 : return if m=15 then w=%11111111 : gosub boss3 : return if m=20 then w=%11111111 : gosub boss4 : return if m=25 then w=%11111111 : gosub boss5 : return if m=30 then w=%11111111 : gosub boss6 : return if m=35 then w=%11111111 : gosub boss7 : return if m=40 then w=%11111111 : gosub boss8 : return if m=45 then w=%11111111 : gosub boss9 : return if missile1x > 50 then missile1x = missile1x - 2 AUDF0 = p AUDV0 = p pfclear pfvline 0 0 10 on pfhline 0 0 28 on pfvline 30 0 10 on pfhline 2 10 30 on x=0 y=2 mazea x=x+2 if x>28 then x=2 : y=y+2 pfpixel x y on a = rand if a0 then p=p/4 : goto newlife if switchreset then goto initgame if switchselect then goto selecting bally=bally+1 player0y=player0y+1 missile1y=missile1y+1 player1y=player1y+1 drawscreen goto lose win e=0 s=3 win2 NUSIZ1=$10 AUDV1=0 n=n+1 if n>250 then e=e+1 gosub sounds COLUPF=e COLUBK=255-e if n < 128 then pfscroll right else pfscroll left pfscroll down if switchreset then goto initgame if switchselect then goto selecting drawscreen if e>10 then goto won goto win2 won gosub youwon won2 NUSIZ1=$10 COLUPF=rand COLUBK=0 drawscreen pfscroll up bally=bally+1 player0y=player0y+1 missile1y=missile1y+1 player1y=player1y+1 goto won2 title player0: %00001000 %00001000 %00001111 %00001000 %00001000 %00000000 %00000001 %00000001 %00000001 %00000001 %00001111 %00000000 %00001000 %00001000 %00001000 %00001000 %00001111 %00000000 %00000011 %00001100 %00001000 %00001100 %00000011 %00000000 %00001000 %00001001 %00001010 %00001100 %00011000 end player1: %11111111 %00011000 %00011000 %00011000 %00011000 %11111111 %00000000 %00000000 %00000000 %00000000 %00000000 %10000001 %01111110 %00100100 %00011000 %00000000 %10000001 %10000010 %11111100 %10000010 %11111100 %00000000 %10000001 %10000001 %11111111 %10000001 %10000001 %00000000 %00011000 %00011000 %00011000 %00011000 %11111111 %00000000 %10000001 %10000001 %10000001 %10000001 %11111111 %00000000 %00111100 %11000011 %10000001 %11000011 %00111100 %00000000 %10000001 %10011001 %10100101 %11000011 %10000001 end return creature if missile1x