DIM EX(32),EY(32),EPROG(32),EON(32),ESPD(32),EHP(32),ESPR(32) DIM TOWERX(64),TOWERY(64),TOWER(64),TOWERCD(64),TOWERSPD(64),TOWERDMG(64),TOWERRANGE(64) DIM BX(20),BY(20),BXS(20),BYS(20),BON(20),BDMG(20) TOUCHSCREEN FONT 64 MENU: CLS SPRITE OFF 0 TO 63 WAIT 1 X=0 BG 1 FOR I=1 TO 32 CELL RND(31),5+RND(5),1+RND(4) NEXT I DO BG 1 X=X-1 SCROLL 1,X,0 BG 0 TEXT 4,12,"TAP TO START" TEXT 7,2,"LOWRES" TEXT 3,3,"TOWER DEFENCE" IF TAP THEN GOTO GAMESTART WAIT VBL LOOP GAMESTART: MUTEMUSIC = 0 LIFE = 50 CASH = 50 ROUND = 1 ROUNDON = -1 ROUNDTICK = 0 ELEFT = 0 ETYPE = 0 ERATE = 0 PRICE = 0 SELECT = 0 FOR I=1 TO 20 BON(I)=0 NEXT I FOR I=1 TO 32 EON(I)=0 NEXT I FOR I=1 TO 64 TOWER(I)=0 NEXT I TOWERS=0 DO CLS BG 1 BG COPY 0,0,20,16 TO 0,0 GOSUB DRAWSTUFF GOSUB TOWERPLACEMENT GOSUB TOWERS GOSUB ENEMIES GOSUB BULLETS GOSUB ROUNDS GOSUB MUTEBUTTON WAIT VBL LOOP MUTEBUTTON: RETURN BULLETS: FOR I=1 TO 20 IF BON(I)=1 THEN SPRITE 33+I,BX(I),BY(I),16 BX(I)=BX(I)+BXS(I) BY(I)=BY(I)+BYS(I) IF BX(I)<-8 OR BX(I)>160 OR BY(I)<-8 OR BY(I)>128 THEN BON(I)=0 FOR E=1 TO 32 IF SPRITE HIT(33+I,1+E) THEN PLAY 3,40,25 SOUND 5 EHP(E)=EHP(E)-BDMG(I) BON(I)=0 SPRITE OFF 33+I END IF NEXT E ELSE SPRITE OFF 33+I END IF NEXT I RETURN TOWERS: FOR I=1 TO 64 IF NOT TOWER(I)=0 THEN CURRENTTARGET=0 CURRENTTARGETPROG=0 FOR E=1 TO 32 IF EON(E)=1 THEN IF CURRENTTARGETPROG0 THEN ROUNDTICK=ROUNDTICK-1 IF ROUNDTICK<1 THEN FOR I=1 TO 32 IF EON(I)=0 THEN EON(I)=1 EX(I)=24 EY(I)=-7 EPROG(I)=0 EHP(I)=ETYPE ESPR(I)=ETYPE ESPD(I)=0.6-ETYPE/20 ELEFT=ELEFT-1 I=33 END IF NEXT I ROUNDTICK=ERATE END IF END IF NEWROUND=0 FOR I=1 TO 32 IF EON(I)=1 THEN NEWROUND=1 NEXT I IF ELEFT<1 AND NEWROUND=0 AND ROUNDON=0 THEN ROUNDON=-1 ROUND=ROUND+1 IF ROUND<16 THEN CASH=CASH+10 FOR I=1 TO 64 IF TOWER(I)=15 THEN CASH=CASH+20 NEXT I END IF RETURN ENEMIES: FOR I=1 TO 32 IF EON(I)=1 THEN IF EHP(I)<1 THEN EON(I)=0 CASH=CASH+1 END IF EPROG(I)=EPROG(I)+1 RESTORE TRACKPATH CANLOOP=1 D=EPROG(I) WHILE CANLOOP=1 READ T,XA,YA IF XA=2 THEN EON(I)=0 LIFE=LIFE-ESPR(I)*3 IF LIFE<1 THEN GOTO GAMEOVER PLAY 3,60,25 SOUND 5 END IF D=D-T/ESPD(I) IF D<0 THEN EX(I)=EX(I)+XA*ESPD(I) EY(I)=EY(I)+YA*ESPD(I) CANLOOP=0 END IF WEND SPRITE 1+I,EX(I),EY(I),ESPR(I) ELSE SPRITE OFF 1+I END IF NEXT I RETURN TOWERPLACEMENT: BG 1 TOUCHINGCELL = CELL.C(TOUCH.X/8,TOUCH.Y/8) BG 0 TOUCHINGCELL2 = CELL.C(TOUCH.X/8,TOUCH.Y/8) IF TAP AND TOUCHINGCELL>9 AND TOUCHINGCELL<16 THEN RESTORE TOWERPRICES FOR I=1 TO TOUCHINGCELL-9 READ PRICE NEXT I IF CASH>PRICE-1 THEN SELECT=TOUCHINGCELL PLAY 3,40,25 SOUND 4 END IF END IF IF TOUCH AND NOT SELECT=0 THEN SPRITE 1 PAL SELECT-10 SPRITE 1,TOUCH.X-4,TOUCH.Y-4,SELECT ELSE IF NOT SELECT=0 THEN IF TOUCHINGCELL=20 AND TOUCHINGCELL2=0 THEN TOWERS=TOWERS+1 TOWERX(TOWERS)=INT(TOUCH.X/8) TOWERY(TOWERS)=INT(TOUCH.Y/8) TOWER(TOWERS)=SELECT RESTORE TOWERSTATS FOR I=1 TO SELECT-9 READ TOWERSPD(TOWERS),TOWERDMG(TOWERS),TOWERRANGE(TOWERS) NEXT I PLAY 3,40,25 SOUND 6 CASH = CASH - PRICE END IF SPRITE OFF 1 SELECT = 0 END IF RETURN DRAWSTUFF: BG 1 PAL 1 CELL 19,15,22+ROUNDON BG 0 PAL 0 LOCATE 14,14 PRINT LIFE LOCATE 14,15 PRINT CASH LOCATE 18,14 PRINT "00" IF ROUND<10 THEN LOCATE 19,14 ELSE LOCATE 18,14 PRINT ROUND FOR I=1 TO TOWERS PAL TOWER(I)-10 CELL TOWERX(I),TOWERY(I),TOWER(I) NEXT I RETURN GAMEOVER: WAIT 1 TEXT 6,8,"GAMEOVER" DO IF TAP THEN GOTO MENU LOOP VICTORY: WAIT 1 CLS DO PAL RND(7) CELL RND(19),RND(15),10+RND(5) TEXT 6,8,"YOU WIN" IF TAP THEN GOTO MENU WAIT VBL LOOP TOWERPRICES: DATA 50,70,150,100,350,100 TRACKPATH: DATA 88,0,1,64,1,0,32,0,-1,32,-1,0,24,0,-1,72,1,0,56,0,1,32,1,0,1,2,0 TOWERSTATS: DATA 45,1,32, 135,3,50, 8,1,32, 30,2,40, 7,1,75, 0,0,0 WAVES: DATA 5,1,30, 10,1,40, 5,1,15, 15,1,25, 5,2,30, 15,1,15, 10,2,45, 20,1,15, 10,2,30, 25,1,15, 5,2,15, 30,1,20, 8,3,30, 20,2,10, 50,1,8, 15,3,15, 20,2,15, 5,4,45, 15,3,15, 50,1,8, 15,4,20, 30,3,10, 30,2,5, 30,4,40, 20,3,5, 15,4,12, 10,5,40, 12,5,30, 20,4,8, 25,4,5, 15,5,20, 100,3,5, 20,4,5, 30,5,15, 25,5,10, 50,4,5, 30,5,8, 32,4,3, 40,5,5, 20,5,1, 45,4,4, 30,5,1, 50,4,1, 50,5,1, 100,5,8, 60,5,1, 70,5,1, 40,5,10, 30,4,1, 100,5,1, 1,6,1 #1:MAIN PALETTES 003F2A15000C190400383424000F0B03 0B302010003C281400150824002A1500 #2:MAIN CHARACTERS 00000000000000000000000000000000 00183C7E7E3C18000000000000000000 000000000000000000183C7E7E3C1800 00183C7E7E3C180000183C7E7E3C1800 00003C3C3C3C0000007E424242427E00 00183C7E7E3C18000008142A54281000 005A244242245A00005A3C7E7E3C5A00 7E7E7E7E7E7E7E7EFFFFFFFFFFFFFFFF 001F3F7F7F7F7F7EFFFFFFFFFFFFFFFF 00FFFFFFFFFFFF00FFFFFFFFFFFFFFFF 3C66E78181E7663C3C5A99FFFF995A3C C3FF425A5A42FFC3C3FF7E66667EFFC3 007E5A66665A7E007E81A59999A5817E E799A55A5AA599E7E7FFDB6666DBFFE7 105A3C67E63C5A08105A245BDA245A08 00FF81FFFF81FF0000FFFF8181FFFF00 0000183C3C1800000000000000000000 00000000000000FFFFFFFFFFFFFFFF00 006CFEFE7C3810000000000000000000 287EA87C2AFC28000000000000000000 0000000000000000FFFFFFFFFFFFFFFF 00203038302000007CDECEC6CEDE7C00 7CFEFEFEFEFE7C007CD6D6D6D6D67C00 0452CACACA5204000000000000000000 0051CAC4CA5100000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 08080808080008000000000000000000 00000006094830000000000000000000 082C386C386820000000000000000000 041F283E0A7C10000000000000000000 04240808080A10000000000000000000 182420304A4C3A000000000000000000 08080000000000000000000000000000 08103020202010000000000000000000 080404040C0810000000000000000000 000224180C1220000000000000000000 000008083E0808000000000000000000 00000000181808000000000000000000 0000000E700000000000000000000000 00000000001818000000000000000000 04040808080810000000000000000000 18244C54644830000000000000000000 10305010101C60000000000000000000 18242408102438000000000000000000 08142408042810000000000000000000 0818284E780808000000000000000000 0C302038040C30000000000000000000 0C10202E322418000000000000000000 0E320204040808000000000000000000 1C222C12222418000000000000000000 0E12221C040810000000000000000000 00181800001818000000000000000000 00181800001818080000000000000000 04182040201804000000000000000000 001E60000E7000000000000000000000 20180402041820000000000000000000 040A1204080008000000000000000000 1C224E524C211E000000000000000000 0814242C342420000000000000000000 08342438242830000000000000000000 08142020242810000000000000000000 18242424242438000000000000000000 0C30202C302438000000000000000000 0C30202C302020000000000000000000 182440424C4438000000000000000000 0424242C342420000000000000000000 06380808080E38000000000000000000 06380808084830000000000000000000 04242830302824000000000000000000 20202020202C30000000000000000000 08345454545040000000000000000000 0222322A262220000000000000000000 18244444444830000000000000000000 0C342438202020000000000000000000 18244444444834000000000000000000 08142428302824000000000000000000 0C102018040830000000000000000000 021C2808080808000000000000000000 04242424242418000000000000000000 04444444442810000000000000000000 020A2A2A2A2C30000000000000000000 08282810282820000000000000000000 04442828101010000000000000000000 0E320408102638000000000000000000 04181010101418000000000000000000 20201010101008000000000000000000 18280808081820000000000000000000 081C3E41000000000000000000000000 00000000000E70000000000000000000 #3:MAIN BG 00001410140E140E140E0706140E140E 140E140E140E140E140E140E140E140E 140E140E140E140E140E140E140E140E 140E0706140E140E140E140E140E140E 140E140E140E140E140E140E140E140E 140E140E140614061406070614061406 14061406140E14061406140614061406 1406140614061406140E140E14061406 14060706140614061406080609160916 091609160916091609160916080E1406 14061406140614061406070614061406 14060716140614061406140614061406 14061406070E14061406140614061406 14060706140614061406071614061406 140614061406140614061406070E1406 14061406140614061406070614061406 140608160916090E090E080E14061406 14061406070E14061406140614061406 14060706140614061406140614061406 1406071E1406140614061406070E1406 14061406140614061406070614061406 14061406140614061406071E14061406 14061406070E14061406140614061406 14060706140614061406140614061406 1406071E1406140614061406070E1406 140614061406140614060816091E091E 091E091E091E091E091E081E14061406 14061406081609160916090E14061406 14061406140614061406140614061406 14061406140614061406140614061406 14061406140614061406140614061406 14061406140614061406140614061406 140614061406140614061406110E110E 110E110E110E110E110E110E110E110E 110E110E110E110E110E110E110E110E 110E110E0A005500500000000C025100 550050000E0453005500500000011204 0001000100017700000000000B015700 500000010D035100500050000F055100 50005000000113050001000100010001 00011601 #15:MAIN SOUND 2800303A000000001800846C003A0000 08006060000000002800303019FE0000 38002020000000003800505000000000 0800008F01FFF0002800008F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 80404040000240400102404000024040 01024040000340400103404000034040 010340400040404001C0404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 304F00000000304F00000000304F0030 4F00304F00000000304F00304F00304F 00000000304F00304F00304F00000000 304F00304F00000000304F0000000000 0000304F00000000304F00304F00304F 00304F00000000304F00304F00000000 254F00000000254F00000000254F0025 4F00254F00000000254F00254F00254F 00000000254F00254F00254F00000000 254F00254F00000000254F0000000000 0000254F00000000254F00254F00254F 00254F00000000254F00254F00000000 250F0000000000000000000000000000 0000000000000000260F00270F00280F 00000000000000290F002A0F00000000 000000FF0000250F00FF00002A0F0000 0000000000000000000000290F00280F 00270F00000000000000000000000000 2B0F000000000000000000002A0F0000 00000000002B0F00000000FF00002C0F 00FF00002D0F000000002B0F00FF0000 2B0F00FF0000290F0000000000000000 0000270F00000000000000FF0000280F 00FF0000260F00000000000000000000