DIM GLOBAL GAMEDATA(4) '0 TICK '1 SHUTTLE ITERATION '2 PROJECTILE ITERATION '3 EXPLOSION ITERATION '4 PROGRESS DIM GLOBAL SHTLDATA(7,5) '!,? ID '?,0 TYPE '?,1 HEALTH '?,2 BLAST COOLDOWN '?,3 DIRECTION (0/1) '?,4 DESTINATION X '?,5 DESTINATION Y DIM GLOBAL PROJDATA(7,2) '!,? ID '?,0 TYPE '?,1 DIRECTION (0/1) '?,2 TARGET (0/1) DIM GLOBAL EXPLDATA(11,2) '!,? ID '?,0 DAMAGE '?,1 VECTOR X '?,2 VECTOR Y DIM GLOBAL SHTLTEMP(6,3) '!,? TYPE '?,0 SPRITE '?,1 SIZE '?,2 HEALTH '?,3 BLAST COOLDOWN DIM GLOBAL PROJTEMP(3,3) '!,? TYPE '?,0 SPRITE '?,1 PALETTE '?,2 DAMAGE '?,3 DAMAGE TYPE (0/1/2) '------------------------------- SHTLTEMP(1,0)=64 SHTLTEMP(1,2)=1 SHTLTEMP(1,3)=180 SHTLTEMP(2,0)=65 SHTLTEMP(2,1)=1 SHTLTEMP(2,2)=4 SHTLTEMP(2,3)=60 SHTLTEMP(3,0)=67 SHTLTEMP(3,1)=1 SHTLTEMP(3,2)=7 SHTLTEMP(3,3)=60 SHTLTEMP(4,0)=69 SHTLTEMP(4,1)=1 SHTLTEMP(4,2)=5 SHTLTEMP(4,3)=10 SHTLTEMP(5,0)=71 SHTLTEMP(5,1)=1 SHTLTEMP(5,2)=7 SHTLTEMP(5,3)=120 SHTLTEMP(6,0)=73 SHTLTEMP(6,1)=1 SHTLTEMP(6,2)=7 SHTLTEMP(6,3)=40 PROJTEMP(1,0)=78 PROJTEMP(1,1)=3 PROJTEMP(1,2)=1 PROJTEMP(1,3)=0 PROJTEMP(2,0)=79 PROJTEMP(2,1)=3 PROJTEMP(2,2)=2 PROJTEMP(2,3)=1 PROJTEMP(3,0)=80 PROJTEMP(3,1)=2 PROJTEMP(3,2)=1 PROJTEMP(3,3)=2 '------------------------------- CALL SETGAME ON VBL CALL UPDGAME ON RASTER CALL UPDBGFX TITLE: CALL SETTITLEUI CALL SETBG CALL SETSHTL(0,2) CALL SETFLAME(0) SPRITE 2,60,60,18 SPRITE 2 PAL 1 SIZE 0 SPRITE 3,92,60,18 SPRITE 3 PAL 1 SIZE 0 FLIP 1,0 PAUSE OFF DO CALL UPDTITLEUI CALL UPDBG CALL UPDFLAME(0) SPRITE 2,61-COS(GAMEDATA(0)/8)*2,, SPRITE 3,92+COS(GAMEDATA(0)/8)*2,, IF BUTTON TAP(0,0) AND SHTLDATA(0,0)<=GAMEDATA(4)+2 THEN GOTO GAME IF LEFT TAP(0) THEN ADD SHTLDATA(0,0),-1,2 TO 6 IF RIGHT TAP(0) THEN ADD SHTLDATA(0,0),1,2 TO 6 SPRITE 0,,,SHTLTEMP(SHTLDATA(0,0),0) WAIT VBL LOOP GAME: GAMEDATA(1)=1 CALL SETGAMEUI CALL SETSHTL(0,SHTLDATA(0,0)) SPRITE 2,,180,0 SPRITE 3,,180,0 SPRITE 3 FLIP 0,0 PAUSE ON DO CALL UPDGAMEUI CALL UPDBG IF INT(RND(180))=0 AND SHTLDATA(GAMEDATA(1),0)=0 THEN CALL SETSHTL(GAMEDATA(1),1) ADD GAMEDATA(1),1,1 TO 7 ELSE IF INT(RND(1500))=0 AND SHTLDATA(GAMEDATA(1),0)=0 THEN CALL SETSHTL(GAMEDATA(1),2) CALL SETFLAME(GAMEDATA(1)) ADD GAMEDATA(1),1,1 TO 7 ELSE IF INT(RND(2000))=0 AND GAMEDATA(4)>=1 AND SHTLDATA(GAMEDATA(1),0)=0 THEN CALL SETSHTL(GAMEDATA(1),3) CALL SETFLAME(GAMEDATA(1)) ADD GAMEDATA(1),1,1 TO 7 ELSE IF INT(RND(2000))=0 AND GAMEDATA(4)>=2 AND SHTLDATA(GAMEDATA(1),0)=0 THEN CALL SETSHTL(GAMEDATA(1),4) CALL SETFLAME(GAMEDATA(1)) ADD GAMEDATA(1),1,1 TO 7 ELSE IF INT(RND(2000))=0 AND GAMEDATA(4)>=3 AND SHTLDATA(GAMEDATA(1),0)=0 THEN CALL SETSHTL(GAMEDATA(1),5) CALL SETFLAME(GAMEDATA(1)) ADD GAMEDATA(1),1,1 TO 7 ELSE IF INT(RND(2000))=0 AND GAMEDATA(4)>=4 AND SHTLDATA(GAMEDATA(1),0)=0 THEN CALL SETSHTL(GAMEDATA(1),6) CALL SETFLAME(GAMEDATA(1)) ADD GAMEDATA(1),1,1 TO 7 END IF FOR ID=0 TO 7 CALL UPDSHTL(ID) CALL UPDFLAME(ID) CALL UPDPROJ(ID) NEXT ID FOR EXPL=0 TO 11 CALL UPDEXPL(EXPL) NEXT EXPL WAIT VBL LOOP '------------------------------- SUB SETGAME RANDOMIZE TIMER GAMEPAD 1 GAMEDATA(4)=PEEK($E000) SOUND SOURCE ROM(5) MUSIC END SUB SUB UPDGAME ADD GAMEDATA(0),1,0 TO 59 END SUB SUB SETTITLEUI BG 0 BG SOURCE ROM(3) BG COPY 0,0,14,2 TO 3,2 END SUB SUB UPDTITLEUI BG 0 BG SOURCE ROM(3) BG FILL 8,10 TO 10,10 CHAR 0 IF SHTLDATA(0,0)<=GAMEDATA(4)+2 AND SHTLDATA(0,0)<>2 THEN BG COPY 16,0,3,1 TO 8,10 ELSE IF SHTLDATA(0,0)<>2 THEN BG COPY 14,0,2,1 TO 9,10 END IF IF GAMEDATA(0) MOD 59=0 THEN BG COPY 0,2,16,1 TO 2,13 ELSE IF GAMEDATA(0) MOD 29=0 THEN BG FILL 2,13 TO 17,13 CHAR 0 END IF END SUB SUB SETGAMEUI CLS 0 CALL UPDGAMEUI END SUB SUB UPDGAMEUI BG 0 BG SOURCE ROM(3) PAL 1 BG FILL 0,15 TO 19,15 CHAR 0 FOR POINT=1 TO SHTLDATA(0,1) IF GAMEDATA(0) MOD 60=0 AND POINT=SHTLDATA(0,1) THEN CELL POINT-1,15,17 CELL 20-POINT,15,17 ELSE CELL POINT-1,15,16 CELL 20-POINT,15,16 END IF NEXT POINT END SUB SUB SETBG BG 1 BG SOURCE ROM(4) BG COPY 0,0,20,16 TO 0,0 BG COPY 0,0,20,16 TO 0,16 END SUB SUB UPDBG BG 1 BG SOURCE ROM(4) FOR POINT=0 TO 20 POINTX=RND(16) POINTY=RND(32) IF RND>0.5 THEN BG COPY POINTX,POINTY MOD 16,1,1 TO POINTX,POINTY ELSE CELL POINTX,POINTY,0 END IF NEXT POINT SCROLL 1,SCROLL.X(1),SCROLL.Y(1)-1 END SUB SUB UPDBGFX SCROLL 1,COS(RASTER/16)*4,SCROLL.Y(1) END SUB '------------------------------- SUB SETSHTL(ID,TEMP) IF ID=0 THEN SPRITE 0,76-SHTLTEMP(TEMP,1)*4,60-SHTLTEMP(TEMP,1)*4,SHTLTEMP(TEMP,0) ELSE SPRITE ID,40+RND(156-SHTLTEMP(TEMP,1)*4),-8-SHTLTEMP(TEMP,1)*4,SHTLTEMP(TEMP,0) END IF SPRITE ID PAL 2 SIZE SHTLTEMP(TEMP,1) FLIP 0,SHTLDATA(ID,3) SHTLDATA(ID,0)=TEMP SHTLDATA(ID,1)=SHTLTEMP(TEMP,2) SHTLDATA(ID,4)=INT(RND(156)) SHTLDATA(ID,5)=INT(RND(32)) END SUB SUB UPDSHTL(ID) IF ID=0 THEN IF UP(0) AND SPRITE.Y(0)>0 THEN SPRITE 0,,SPRITE.Y(0)-1, IF DOWN(0) AND SPRITE.Y(0)<112 THEN SPRITE 0,,SPRITE.Y(0)+1, IF LEFT(0) AND SPRITE.X(0)>-2 THEN SPRITE 0,SPRITE.X(0)-1,, IF RIGHT(0) AND SPRITE.X(0)<146 THEN SPRITE 0,SPRITE.X(0)+1,, IF SHTLDATA(ID,0)=2 THEN CALL SHTL2SHOOT(0) ELSE IF SHTLDATA(ID,0)=3 THEN CALL SHTL3SHOOT(0) ELSE IF SHTLDATA(ID,0)=4 THEN CALL SHTL4SHOOT(0) ELSE IF SHTLDATA(ID,0)=5 THEN CALL SHTL5SHOOT(0) ELSE IF SHTLDATA(ID,0)=6 THEN CALL SHTL6SHOOT(0) END IF IF SHTLDATA(0,1)<=0 THEN SPRITE OFF 1 TO 35 FOR FX=0 TO 5 IF FX MOD 2=0 THEN SPRITE 0,,,0 SPRITE 0 SIZE 0 ELSE SPRITE 0,,,SHTLTEMP(SHTLDATA(0,0),0) SPRITE 0 SIZE 1 END IF WAIT 32 NEXT FX GOTO TITLE END IF IF SPRITE HIT(0,0 TO 7) AND SPRITE.C(HIT)=43 THEN IF SHTLTEMP(SHTLDATA(0,0),2)>SHTLDATA(0,1) THEN INC SHTLDATA(0,1) SPRITE OFF HIT ELSE IF SPRITE HIT(0,0 TO 7) AND SPRITE.C(HIT)=44 THEN INC GAMEDATA(4) POKE $E000,GAMEDATA(4) SPRITE OFF HIT END IF ELSE IF SHTLDATA(ID,0)<>0 THEN IF SHTLTEMP(SHTLDATA(ID,0),1)=0 THEN IF SPRITE.X(ID)=SHTLDATA(ID,4) AND SPRITE.Y(ID)=SHTLDATA(ID,5) THEN SHTLDATA(ID,4)=INT(RND(156)) SHTLDATA(ID,5)=SPRITE.Y(ID)+INT(RND(32))-12 ELSE SPRITE ID,SPRITE.X(ID)+(SHTLDATA(ID,4)-SPRITE.X(ID))/64,SPRITE.Y(ID)+(SHTLDATA(ID,5)-SPRITE.Y(ID))/64, IF (SHTLDATA(ID,4)-SPRITE.X(ID))/64<1 THEN SPRITE ID,SPRITE.X(ID)+SGN(SHTLDATA(ID,4)-SPRITE.X(ID)),, IF (SHTLDATA(ID,5)-SPRITE.Y(ID))/64<1 THEN SPRITE ID,,SPRITE.Y(ID)+SGN(SHTLDATA(ID,5)-SPRITE.Y(ID)), END IF ELSE IF SHTLTEMP(SHTLDATA(ID,0),1)=1 THEN IF SPRITE.X(0)SPRITE.X(ID) THEN SPRITE ID,SPRITE.X(ID)+(GAMEDATA(0) MOD 2),, END IF IF INT(SPRITE.Y(0)/2)SPRITE.Y(ID) THEN SPRITE ID,,SPRITE.Y(ID)+(GAMEDATA(0) MOD 2), END IF IF SPRITE HIT(ID,1 TO 7) AND SHTLDATA(ID,0)>1 AND HIT<>ID AND SPRITE.C(HIT)<>43 AND SPRITE.C(HIT)<>44 THEN IF SPRITE.X(HIT)<=SPRITE.X(ID) THEN SPRITE ID,SPRITE.X(ID)+1,, ELSE IF SPRITE.X(HIT)>SPRITE.X(ID) THEN SPRITE ID,SPRITE.X(ID)-1,, END IF END IF END IF IF SPRITE.Y(0)+SHTLTEMP(SHTLDATA(0,0),1)*4SPRITE.Y(ID) THEN SHTLDATA(ID,3)=1 END IF SPRITE ID FLIP 0,SHTLDATA(ID,3) IF SHTLDATA(ID,1)<=0 THEN CALL SETEXPL(0,(SHTLTEMP(SHTLDATA(ID,0),1)+1)*2,SPRITE.X(ID),SPRITE.Y(ID)) IF SHTLDATA(ID,0)<>1 THEN IF INT(RND*6)=0 AND SHTLDATA(ID,0)=GAMEDATA(4)+2 THEN SPRITE ID,,,44 SPRITE ID PAL 1 SIZE 0 FLIP 0,0 ELSE SPRITE ID,,,43 SPRITE ID PAL 1 SIZE 0 FLIP 0,0 END IF ELSE SPRITE OFF ID END IF SPRITE OFF ID+8 SHTLDATA(ID,0)=0 END IF IF SHTLDATA(ID,0)=1 AND INT(RND(180))=0 THEN CALL SHTL1SHOOT(ID) ELSE IF SHTLDATA(ID,0)=2 AND INT(RND(60))=0 THEN CALL SHTL2SHOOT(ID) ELSE IF SHTLDATA(ID,0)=3 AND INT(RND(60))=0 THEN CALL SHTL3SHOOT(ID) ELSE IF SHTLDATA(ID,0)=4 THEN CALL SHTL4SHOOT(ID) ELSE IF SHTLDATA(ID,0)=5 AND INT(RND(60))=0 THEN CALL SHTL5SHOOT(ID) ELSE IF SHTLDATA(ID,0)=6 THEN CALL SHTL6SHOOT(ID) END IF IF SPRITE.Y(ID)>128 THEN SPRITE OFF ID SHTLDATA(ID,0)=0 END IF END IF DEC SHTLDATA(ID,2) END SUB SUB SETFLAME(ID) IF SHTLTEMP(SHTLDATA(ID,0),1)=1 THEN IF SHTLDATA(ID,3)=0 THEN SPRITE ID+8,SPRITE.X(ID)+4,SPRITE.Y(ID)+16,75 ELSE IF SHTLDATA(ID,3)=1 THEN SPRITE ID+8,SPRITE.X(ID)+4,SPRITE.Y(ID)-8,75 END IF SPRITE ID+8 PAL 3 FLIP 0,SHTLDATA(ID,3) END IF END SUB SUB UPDFLAME(ID) IF SHTLTEMP(SHTLDATA(ID,0),1)=1 THEN IF SHTLDATA(ID,3)=0 THEN SPRITE ID+8,SPRITE.X(ID)+4,SPRITE.Y(ID)+16,75+(GAMEDATA(0) MOD 6)/3 ELSE IF SHTLDATA(ID,3)=1 THEN SPRITE ID+8,SPRITE.X(ID)+4,SPRITE.Y(ID)-8,75+(GAMEDATA(0) MOD 6)/3 END IF SPRITE ID+8 FLIP 0,SHTLDATA(ID,3) END IF END SUB SUB SETPROJ(ID,TEMP,X,Y) SPRITE ID+16,X,Y,PROJTEMP(TEMP,0) SPRITE ID+16 PAL PROJTEMP(TEMP,1) PROJDATA(ID,0)=TEMP IF PROJTEMP(TEMP,3)=2 THEN PLAY 3,34+RND(5) SOUND 3 ELSE PLAY 3,44+RND(2) SOUND 2 END IF END SUB SUB UPDPROJ(ID) SPRITE ID+16,,SPRITE.Y(ID+16)+(PROJDATA(ID,1)*2-1)*3, IF SPRITE HIT(ID+16,0 TO 7) THEN IF ((HIT=0 AND PROJDATA(ID,2)=0) OR (HIT>0 AND PROJDATA(ID,2)=1)) AND (SPRITE.C(HIT)<>43 AND SPRITE.C(HIT)<>44) THEN ADD SHTLDATA(HIT,1),PROJTEMP(PROJDATA(ID,0),2)*-1 IF PROJTEMP(PROJDATA(ID,0),3)=2 THEN CALL SETEXPL(PROJTEMP(PROJDATA(ID,0),2),6,SPRITE.X(ID+16),SPRITE.Y(ID+16)) IF PROJTEMP(PROJDATA(ID,0),3)=1 THEN SPRITE ID+16,,SPRITE.Y(ID+16)+(PROJDATA(ID,1)*2-1)*13, ELSE SPRITE OFF ID+16 END IF PLAY 3,34+RND(2) SOUND 4 END IF ELSE IF SPRITE.Y(ID+16)<-8 OR SPRITE.Y(ID+16)>128 THEN SPRITE OFF ID+16 END IF END SUB SUB SETEXPL(DAM,VIO,X,Y) FOR PART=0 TO VIO SPRITE GAMEDATA(3)+24,X+RND(8)-4,Y+RND(8)-4,91+INT(RND*1.25) TRACE X,Y SPRITE GAMEDATA(3)+24 PAL 3 FLIP RND*1.1,RND*1.1 EXPLDATA(GAMEDATA(3),0)=DAM EXPLDATA(GAMEDATA(3),1)=X-SPRITE.X(GAMEDATA(3)+24) EXPLDATA(GAMEDATA(3),2)=Y-SPRITE.Y(GAMEDATA(3)+24) ADD GAMEDATA(3),1,0 TO 11 NEXT PART END SUB SUB UPDEXPL(ID) SPRITE ID+24,SPRITE.X(ID+24)+EXPLDATA(ID,1),SPRITE.Y(ID+24)+EXPLDATA(ID,2),INT(RND*1.5)*(91+INT(RND*1.25)) IF SPRITE HIT(ID+24,0 TO 7) THEN SHTLDATA(HIT,1)=SHTLDATA(HIT,1)-EXPLDATA(ID,0) END IF EXPLDATA(ID,1)=EXPLDATA(ID,1)*0.8 EXPLDATA(ID,2)=EXPLDATA(ID,2)*0.8 IF ABS(EXPLDATA(ID,1))<0.05 AND ABS(EXPLDATA(ID,2))<0.05 THEN SPRITE OFF ID+24 END SUB '------------------------------- SUB SHTL1SHOOT(ID) IF SHTLDATA(ID,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID),SPRITE.Y(ID)) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(ID,2)=180 END IF END SUB SUB SHTL2SHOOT(ID) IF ID=0 THEN IF BUTTON TAP(0,0) AND SHTLDATA(0,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+1,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+8,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(0,2)=15 END IF ELSE IF SHTLDATA(ID,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+1,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+8,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(ID,2)=15 END IF END SUB SUB SHTL3SHOOT(ID) IF ID=0 THEN IF BUTTON TAP(0,0) AND SHTLDATA(0,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),2,SPRITE.X(0)+1,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),2,SPRITE.X(0)+8,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(0,2)=15 END IF ELSE IF SHTLDATA(ID,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),2,SPRITE.X(ID)+1,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),2,SPRITE.X(ID)+8,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(ID,2)=15 END IF END SUB SUB SHTL4SHOOT(ID) IF ID=0 THEN IF BUTTON(0,0) AND SHTLDATA(0,2)<=0 THEN IF INT(RND*1.5)=0 THEN IF INT(RND*1.5)=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+1,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 ELSE CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+9,SPRITE.Y(0)+3) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 END IF ELSE IF INT(RND*1.5)=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+8,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 ELSE CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0),SPRITE.Y(0)+3) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 END IF END IF SHTLDATA(0,2)=8 END IF ELSE IF SHTLDATA(ID,2)<=0 THEN IF INT(RND*1.5)=0 THEN IF INT(RND*1.5)=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+1,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 ELSE CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+9,SPRITE.Y(ID)+13) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 END IF ELSE IF INT(RND*1.5)=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+8,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 ELSE CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID),SPRITE.Y(ID)+13) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 END IF END IF SHTLDATA(ID,2)=10 END IF END SUB SUB SHTL5SHOOT(ID) IF ID=0 THEN IF BUTTON TAP(0,0) AND SHTLDATA(0,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),3,SPRITE.X(0)+1,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),3,SPRITE.X(0)+8,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(0,2)=30 END IF ELSE IF SHTLDATA(ID,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),3,SPRITE.X(ID)+1,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),3,SPRITE.X(ID)+8,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(ID,2)=30 END IF END SUB SUB SHTL6SHOOT(ID) IF ID=0 THEN IF BUTTON TAP(0,0) AND SHTLDATA(0,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+1,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+8,SPRITE.Y(0)) PROJDATA(GAMEDATA(2),1)=0 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(0,2)=10 END IF IF BUTTON TAP(0,1) AND SHTLDATA(0,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0),SPRITE.Y(0)+11) PROJDATA(GAMEDATA(2),1)=1 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(0)+9,SPRITE.Y(0)+11) PROJDATA(GAMEDATA(2),1)=1 PROJDATA(GAMEDATA(2),2)=1 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(0,2)=10 END IF ELSE IF SHTLDATA(ID,2)<=0 THEN CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+1,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 CALL SETPROJ(GAMEDATA(2),1,SPRITE.X(ID)+8,SPRITE.Y(ID)+16) PROJDATA(GAMEDATA(2),1)=SHTLDATA(ID,3) PROJDATA(GAMEDATA(2),2)=0 ADD GAMEDATA(2),1,0 TO 7 SHTLDATA(ID,2)=18 END IF END SUB '------------------------------- #1:PALETTES 00200802003F2A00003D2A25003D3413 00000000000000000000000000000000 #2:CHARACTERS 00000000000000000000000000000000 80000000000000000000000000000000 00000000000000008000000000000000 80000000000000008000000000000000 3F7F60606060607F0000000000000000 FCFE0606000000FC0000000000000000 606060606060607F0000000000000000 06060606060606FE0000000000000000 60606060606060600000000000000000 06060606060606060000000000000000 7F7F0101010101010000000000000000 FEFE8080808080800000000000000000 60606060606060600000000000000000 00000000000000000000000000000000 7F7F60606060607F0000000000000000 FEFE0000000000800000000000000000 00003C3C3C3C00000000000000000000 007E7E7E7E7E7E000000000000000000 020F3CF0F03C0F020000000000000000 070F0C0C0C0F0E0F0000000000000000 3F00000060607F3F0000000000000000 FE0606060606FEFC0000000000000000 7F606060606060600000000000000000 FE060606060606060000000000000000 6060606060607F3F0000000000000000 060606060606FEFC0000000000000000 01010101010101010000000000000000 80808080808080800000000000000000 6060606060607F7F0000000000000000 000000000000FEFE0000000000000000 7F60606060607F7F0000000000000000 800000000000FEFE0000000000000000 01030303000000000000000000000000 F8FC0C0C0C0F0E0F0000000000000000 0000000000F070F00000000000000000 7C42427C404040400004040000000000 7C42427C504844420004040020100804 7E4040704040407E0000000800000000 3C42403C0202423C0024200004002400 7E8199A5BDA5817E007E665A425A7E00 7C101010101010100208080808080808 3C4242424242423C0024000000002400 3C42427E424242420024000000000000 0018187E7E1818000000000000000000 381838187E667E180000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3C4299A5A599423C247EFFE7E7FF7E3C 070C28111214141303072F1F1E1C1C1F E0301488482828C8C0E0F4F8783838F8 070E1C1932121310030303173E1E1F1F E07038984C48C808C0C0C0E87C78F8F8 070C08183010101103070F172F1F1F1F E03010180C080888C0E0F0E8F4F8F8F8 1C1C221120101112001C3E1F3F1F1F1E 383844880408884800387CF8FCF8F878 070C08112214141303070F1F3E1C1C1F E0301088442828C8C0E0F0F87C3838F8 18381008100000000000281810000000 10081000000000000818100000000000 08000000000000001800000000000000 10101010101000100000000000001010 10383810103800100000002828281010 00102810102828000010382828382800 101F101F102F08071F1F1F1F1F2F0F07 08F808F808F410E0F8F8F8F8F8F4F0E0 3310131033100B073F1F1F1F3F1F0F07 CC08C808CC08D0E0FCF8F8F8FCF8F0E0 32141413300F04073E1C1C1F3F0F0707 4C2828C80CF020E07C3838F8FCF0E0E0 14141212110804031C1C1E1E1F0F0703 28284848881020C038387878F8F0E0C0 1412112010180C071C1E1F3F1F0F0707 28488804081830E03878F8FCF8F0E0E0 02053B1E4EB4440802073F0272FC4C08 002E703EF95E0000003E6CCE87791E00 #3:UI 00001410040105010601070108010901 0A010B010A010B010C010D010E010F01 13011309200121012201000014011501 16011701180119011A011B011A011B01 1C011D011E011F010000000000000000 00000000230124012501260126010000 27010000280129010000260128012A01 24012801000000000000000000000000 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 00000000 #4:BACKGROUND 00001410000000000308000000000000 00000000000000000000000000000000 00000000000001000000000000000000 00000108000000000000000000000000 01100000000000000100000001080000 00000000000000000000000000000000 00000110000000000000000001000000 00000000000000000118000000000100 00000000010000000000030800000000 00000100000000000310000000000100 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 01000300020800000000000000000100 00000000000000000208000000000118 01000000000000000000010800000110 02100308000000000000000000000118 00000000000000000000000000000000 00000000000000000218000000000000 01000000000000000210000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000003180000000000000000 01000000000001000000000000000000 03100000000000000210000000000000 00000000000000000000000000000000 00000000000000000000000000000000 02080000000001080118000000000000 01080000000000000100000000000000 00000000000000000100000000000100 02000000000000000000000000000000 00000000000001000000011000000000 00000000030000000000000000000000 00000000000000000000000000000000 00000118000000000100000000000100 00000000000000000118020000000100 00000000000000000000020000000000 00000000000000000000000000000318 01000000000000000000000000000000 00000000000000000000010000000000 00000000 #5:SOUND 08006066000000003800500007000000 2A00505001FE00003A00808003FFA600 3800303019FE00000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00404040800140400001404000010240 000102400001024000810C4040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 190F0000000000000000000000000000 0000190F000000000000000000000000 000000001A0F00000000000000000000 190F0000000000000000000000000000 0000190F000000000000000000000000 000000001D0F000000001D0F00000000 000000000000000000000000161F0000 0000000000000000000000000000161F 00000000161C00161F00000000000000 000000000000000000000000161F0000 0000000000000000000000000000161F 00000000161F000A1C00161F00000000 250F00FF000000000000000000000000 0000250F00000000260F00260F00FF00 00000000000000000000000000000000 00000000000000000000000000000000 00002A0F00000000260F00000000250F 00000000260F00290F00000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000002529 00000000252900000000262900000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 251F0000000000000000000000000000 0000251F00000000000000000000251F 00000000000000000000251F00000000 000000000000251F0000000000000000 0000251F00000000000000000000251F 00000000000000000000251F00000000 000000000000251F0000000000000000 0000251F00000000000000000000251F 00000000000000000000251F00000000 000000000000251F0000000000000000 0000251F00000000000000000000251F 00000000000000000000251F00000000 350F00000000000000000000310F0000 0000000000000000340F000000000000 00000000300F00000000000000000000 000000000000000000000000250F0000 0000000000000000220F000000000000 00000000240F00000000000000000000 410F000000000000000000003D0F0000 0000000000000000400F000000000000 000000003C0F00000000000000000000 0000000000000000000000002E0F0000 00000000000000002E0F000000000000 000000002E0F00000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000000000000000252F 00000000252F00000000000000000000 00000000000000000000000000000000 0000000000000000000000000000252F 00000000252F00252F00000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000000000000000252F 00000000252F00000000262F00000000