rem Monthra I rem by Fort Apocalypse set kernel_options no_blank_lines playfieldpos=4 set smartbranching on b=65 c=50 d=$C0 e=$CB f=23 s=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 n&3=1 then goto slowchanges if joy0left then e=e-1 : f=f-3 if joy0right then e=e+1 : f=f+3 if joy0up then d=d-1 if joy0down then d=d+1 slowchanges COLUP1=e COLUPF=d scorecolor=f missile1height=2 NUSIZ1=$10 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 if bally&3=1 then AUDC1=2 else AUDC1=3 AUDF1=b if bally&3=1 then AUDV1=1 else AUDC1=0 m=0 score=0 missile1x=24 missile1y=83 player1x = 43 player1y = 50 COLUP1=e COLUPF=d scorecolor=f player0y=179 bally=179 p=255 gosub maze drawscreen mainloop if switchreset then goto initgame if switchselect then goto selecting gosub sounds gosub creature if n&7=1 then gosub pacing if player0x>player1x then player1x=player1x+1 else player1x=player1x-1 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 collision(missile1,ball) then s=4 : COLUBK=j : COLUPF=j : missile1x=24 : missile1y=83 if collision(missile1,player1) then s=4 : goto lose j=rand if n=j then player1x=120-player1x if n=49 then gosub diverge if !switchleftb then ballx=ballx+1 : bally=bally+n if !switchrightb then bally=bally+1 : ballx=ballx+n 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<2 then missile1x=31 if missile1x>160 then missile1x=159 if missile1y<2 then m=m+1 : missile1x=24 : missile1y=83 : gosub maze : score=0 : score=score+m : if m=47 then goto win if missile1y>83 then gosub maze : missile1x=24 : missile1y=83 if m>250 then m=0 : score=0 COLUP1=e COLUPF=d missile1height=2 NUSIZ1=$10 g=0 h=0 if joy0fire then p=p-1 : 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+3 if g=1 then missile1x=missile1x-3 if h=255 then missile1y=missile1y+3 if h=1 then missile1y=missile1y-3 return pacing if n<128 then player1y=player1y+t else player1y=player1y-t return diverge if !switchleftb then missile1x=rand&40+20 : COLUPF=rand : AUDC0=47 : AUDF0=47 : AUDV0=47 if !switchrightb then missile1y=rand&60+20 : COLUBK=rand : AUDC0=47 : AUDF0=47 : AUDV0=47 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 gosub boss1 : return if m=10 then gosub boss2 : return if m=15 then gosub boss3 : return if m=20 then gosub boss4 : return if m=25 then gosub boss5 : return if m=30 then gosub boss6 : return if m=35 then gosub boss7 : return if m=40 then gosub boss8 : return if m=45 then 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 a