rem Deimos Lander v0.3 by Jerason Banes rem 06/18/2006 10 set smartbranching on 20 dim shipvelocity = b.c 30 dim lateralvelocity = d.e 40 dim shipxpos = x.w 50 dim shipypos = y.z 53 dim fuel = f 54 dim level = l include fixed_point_math.asm set kernel_options no_blank_lines pfcolors 55 level = 1 56 goto titleScreen 57 gosub clearScreen 60 gosub drawMountains 65 shipvelocity = 0.0 - .04 68 AUDF0 = 15 : AUDC0 = 8 70 pfhline 0 10 31 on 80 COLUPF = 240 : scorecolor = 15 100 COLUP0 = 120 : COLUP1 = 8 : NUSIZ0 = $00 : NUSIZ1 = $05 110 player0x = x : player0y = y 120 player0: %01000010 %11111111 %11111111 %01111110 %00111100 %00011000 %00011000 %00011000 end 130 player1: %01111100 %11111110 %11111110 end 135 if c > 50 then scorecolor = 64 else scorecolor = 192 137 if b > 0 then scorecolor = 64 140 drawscreen 150 if joy0fire then gosub thrust else AUDV0 = 0 160 if joy0left then gosub lateralThrust 170 if joy0right then gosub lateralThrust 180 if fuel = 0 then AUDV0 = 0 200 let shipvelocity = shipvelocity + 0.01 210 let shipypos = shipypos + shipvelocity 220 let shipxpos = shipxpos + lateralvelocity 250 if y > 200 then y = 0 260 if y > 88 then y = 88 : shipvelocity = 0.0 270 if x < 25 then x = 25 380 if x > 152 then x = 152 400 if collision(playfield, player0) then 3000 410 if collision(player1, player0) then 4000 580 goto 100 1000 rem Too Fast! rem This changes the score color just in case we rem checked the speed just before the color was changed 1010 scorecolor = 64 1020 gosub clearScreen 1030 gosub LoseCrash playfield: ................................ ................................ ................................ .XXX.XXX.XXX..XXX.XXX.XXX.XXX.X. ..X..X.X.X.X..X...X.X.X....X..X. ..X..X.X.X.X..XX..XXX.XXX..X..X. ..X..X.X.X.X..X...X.X...X..X.... ..X..XXX.XXX..X...X.X.XXX..X..X. ................................ ................................ ................................ end pfhline 0 11 31 off 1050 goto waitForReset 2000 rem You Win! : Or do you? 2005 if b > 0 then 1000 2010 if c > 50 then 1000 2020 if x < player1x then 3000 2030 let temp1 = player1x + 7 2040 if x > temp1 then 3000 rem These are duds intended to fix a page alignment problem with pfcolor. if x > temp1 then 3000 if x > temp1 then 3000 if x > temp1 then 3000 2050 gosub clearScreen playfield: ................................ ................................ ................................ .X.X.XXX.X.X..X...X.XXX.X...X.X. .X.X.X.X.X.X..X...X..X..XX..X.X. .XXX.X.X.X.X..X.X.X..X..X.X.X.X. ..X..X.X.X.X..X.X.X..X..X..XX... ..X..XXX.XXX...X.X..XXX.X...X.X. ................................ ................................ ................................ end pfhline 0 11 31 off 2060 goto GameOver 3000 rem CRASH!!! 3010 gosub clearScreen 3020 gosub LoseCrash playfield: ................................ ................................ ................................ ...XXX.XXX.XXX.XXX.X.X.X.X.X.... ...X...X.X.X.X.X...X.X.X.X.X.... ...X...XX..XXX.XXX.XXX.X.X.X.... ...X...X.X.X.X...X.X.X.......... ...XXX.X.X.X.X.XXX.X.X.X.X.X.... ................................ ................................ ................................ end pfhline 0 11 31 off 3050 goto waitForReset 4000 rem You Landed! : Or did you? 4005 if b > 0 then 1000 4010 if c > 50 then 1000 4020 if x < player1x then 3000 4030 let temp1 = player1x + 7 4040 if x > temp1 then 3000 4041 gosub WinBloop 4050 let temp1 = level + 1 4060 if temp1 > 8 goto 2000 4070 gosub clearScreen playfield: ................................ ................................ ................................ .X....XX..X...X.XXX..XXX.XXX..X. .X...X..X.XX..X.X..X.X...X..X.X. .X...XXXX.X.X.X.X..X.XXX.X..X.X. .X...X..X.X..XX.X..X.X...X..X... .XXX.X..X.X...X.XXX..XXX.XXX..X. ................................ ................................ ................................ end pfhline 0 11 31 off 4080 level = level + 1 4090 goto waitForReset drawMountains 5000 if level = 1 goto drawMountainsLevel1 5010 if level = 2 goto drawMountainsLevel2 5020 if level = 3 goto drawMountainsLevel3 5030 if level = 4 goto drawMountainsLevel4 5040 if level = 5 goto drawMountainsLevel5 5050 if level = 6 goto drawMountainsLevel6 5060 if level = 7 goto drawMountainsLevel7 5070 if level = 8 goto drawMountainsLevel8 5075 rem We can't seem to find the correct level? 5080 level = 1 5090 goto 5000 WinBloop 6041 AUDF1 = 15 : AUDC1 = 12 : AUDV1 = 8 : h = 10 6042 let h = h - 1 : NUSIZ1 = $05 6043 drawscreen 6044 if h > 0 then 6042 6100 AUDF1 = 10 : h = 10 6110 let h = h - 1 : NUSIZ1 = $05 6120 drawscreen 6130 if h > 0 then 6110 6140 AUDV1 = 0 6150 return LoseCrash 7040 AUDF1 = 1 : AUDC1 = 2 : AUDV1 = 7 : h = 14 7050 let h = h - 1 : NUSIZ1 = $05 7060 drawscreen 7070 if h > 0 then 7050 7080 AUDF1 = 4 : h = 18 7090 let h = h - 1 : NUSIZ1 = $05 7100 drawscreen 7110 if h > 0 then 7090 7120 AUDV1 = 0 71300 return GameOver 9000 p = 0 9005 COLUP0 = 120 : COLUP1 = 8 : NUSIZ0 = $00 : NUSIZ1 = $05 : AUDV0 = 0 9010 drawscreen 9020 if !switchreset then 9050 9030 if switchreset then p = 1 9040 goto 9005 9050 if p = 1 then ResetGame 9060 goto 9005 ResetGame 9500 player0: %00000000 end 9510 player1: %00000000 end 9520 scorecolor = 0 9600 goto 55 thrust 10000 if fuel = 0 then return 10010 shipvelocity = shipvelocity - 0.02 : AUDV0 = 4 10020 score = score - 1 10030 fuel = fuel - 1 10040 return lateralThrust 10100 if fuel = 0 then return 10110 if joy0left then lateralvelocity = lateralvelocity - 0.01 : AUDV0 = 3 10120 if joy0right then lateralvelocity = lateralvelocity + 0.01 : AUDV0 = 3 10130 score = score - 1 10140 fuel = fuel - 1 10150 return waitForReset p = 0 h = 10 10200 COLUP0 = 120 : COLUP1 = 8 : NUSIZ0 = $00 : NUSIZ1 = $05 : AUDV0 = 0 10210 if switchreset then 57 10214 drawscreen 10216 if h > 0 then h = h - 1 10218 if h > 0 goto 10200 10220 if p = 1 then goto 10250 10230 if p = 2 then 10270 10235 if !joy0fire then p = 1 10240 goto 10200 10250 if joy0fire then p = 2 10260 goto 10200 10270 if !joy0fire then 57 10280 goto 10200 drawMountainsLevel1 10300 rem draw mountains 10310 x = 160 : y = 10 : w = 0 : z = 0 : score = 250 : fuel = 250 10320 player1x = 80 : player1y = 80 : lateralvelocity = 0.0 - 0.06 playfield: ................................ ................................ ................................ ................................ ................................ ..............................XX .....XX...........XX........XXXX ..XXXXXX.........XXXX....XXXXXXX .XXXXXXXX.......XXXXXXXXXXXXXXXX XXXXXXXXXX......XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 10350 return clearScreen 10400 pfclear 10410 return titleScreen 10500 rem Deimos Lander (Title) 10510 COLUPF = 84 playfield: ..XX..XXX.XXX.X...X.XXX.XXX..... ..X.X.X....X..XX.XX.X.X.X....... ..X.X.XXX..X..X.X.X.X.X.XXX..... ..X.X.X....X..X...X.X.X...X..... ..XX..XXX.XXX.X...X.XXX.XXX..... ................................ .....X...XXX.X...X.XX..XXX.XXX.. .....X...X.X.XX..X.X.X.X...X.X.. .....X...XXX.X.X.X.X.X.XXX.XX... .....X...X.X.X..XX.X.X.X...X.X.. .....XXX.X.X.X...X.XX..XXX.X.X.. end pfhline 0 11 31 off 10550 goto waitForReset drawMountainsLevel2 20300 rem draw mountains 20310 x = 48 : y = 10 : w = 0 : z = 0 : score = 250 : fuel = 250 20320 player1x = 142 : player1y = 80 : lateralvelocity = 0.0 + 0.06 playfield: ................................ ................................ ................................ ................................ X...................XX.......... XXXX.......XX......XXXX......... XXXXXX...XXXXXXXXXXXXXXXX....... XXXXXXXXXXXXXXXXXXXXXXXXXX...... XXXXXXXXXXXXXXXXXXXXXXXXXXXX.... XXXXXXXXXXXXXXXXXXXXXXXXX....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 20350 return drawMountainsLevel3 21300 rem draw mountains 21310 x = 48 : y = 60 : w = 0 : z = 0 : score = 200 : fuel = 200 21320 player1x = 120 : player1y = 25 : lateralvelocity = 0.0 + 0.06 playfield: ................................ ................................ ................................ ...............XXXXXXXXXXXXXXXXX .................XXXXXXXXXXXXXXX ....................XXXXXXXXXXXX .........................XXXXXXX ........XXXXX....XXXX..XXXXXXXXX .......XXXXXXXXXXX..XXXXXXXXXXXX ......XXXXXXXX...XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 21350 return drawMountainsLevel4 22300 rem draw mountains 22310 x = 150 : y = 10 : w = 0 : z = 0 : score = 200 : fuel = 200 22320 player1x = 60 : player1y = 56 : lateralvelocity = 0.0 - 0.06 playfield: XXXXXXXXXXXXXXX................. XXXX...XXXXXXXXXXXXXX........... .XXXXXXXXXXXXXXXXXXX............ XXX..XXXXXXXXXXXXX.............. XXXXXXXXXXXXXXXXXXX............. ...XXXXX......................XX ........................XXXXXXXX .....XXXXXXXX..........XXXXXXXXX ......XXXXX..........XXXXXXXXXXX .......XX.............XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 22350 return drawMountainsLevel5 24300 rem draw mountains 24310 x = 150 : y = 10 : w = 0 : z = 0 : score = 250 : fuel = 250 24320 player1x = 35 : player1y = 25 : lateralvelocity = 0.0 - 0.06 playfield: ........XXXXXXXXXXXXXXXX........ ..........XXXXXXXXXXXXX......... ..............XXXXXXX........... XXXXXXX......XXXXXXXXX.......... XXXXX..........XXXXXX........... XXX..............XX............. XXX.......................XX...X XXX.......XXX...........XXXXX.XX XX......XXXXXXX........XXXXXXXXX XX.....XXXXXXXXXX....XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 24350 return drawMountainsLevel6 25300 rem draw mountains 25310 x = 72 : y = 10 : w = 0 : z = 0 : score = 255 : fuel = 255 25320 player1x = 36 : player1y = 72 : lateralvelocity = 0.0 + 0.06 playfield: ................................ ................................ ................................ XXXXXXXXXXXXX....XXXXXXXXXXXXXXX .......XXXXX........XXXXXXXXXXXX .........XXXXX........XXXXXXXXXX ..........XXXXX..........XXXXXXX .........XXXXX........XXXXXXXXXX ....................XXXXXXXXXXXX .XXXX................XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 25350 return drawMountainsLevel7 26300 rem draw mountains 26310 x = 28 : y = 40 : w = 0 : z = 0 : score = 255 : fuel = 255 26320 player1x = 142 : player1y = 80 : lateralvelocity = 0.0 + 0.25 playfield: ................................ ................................ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .....XXXXXXX............XXXXXXXX ......XX.XX...............XXXXXX ......XXXXX..............XXXXXXX ........XX.......XXXX......XXXX. ................XX.XXX......XXXX XX.............XXXXX.XX......... XXXX.........XXX.XXXXXXXX....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 26350 return drawMountainsLevel8 27300 rem draw mountains 27310 x = 50 : y = 10 : w = 0 : z = 0 : score = 255 : fuel = 255 27320 player1x = 83 : player1y = 80 : lateralvelocity = 0.0 + 0.06 playfield: ................................ ................................ ..........XXX.....XXX........... ........XXXX....XXXXXX.......... .......XXXXXX....XXXXXX......... X....XXXXXXXXX....XXXXXX.......X XX..XXXXXXXXX....XXXXXXXXX...XXX XXXXXXXXXXXXX....XXXXXXXXXXXXXXX XXXXXXXXXXXX....XXXXXXXXXXXXXXXX XXXXXXXXXXXXX....XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX end pfhline 0 11 31 off 27350 return