DIM GLOBAL BX(60), BY(60), ITEMX(10), ITEMN(3), BBX(10), BBY(10), EX(3), EY(3), EWALK(3), SMEGGX(3), SMEGG(3), MBUTT(3), MBUL(3) HIG=PEEKW($E000) GLOBAL SCORE START: MMBUL=0 MMWAIT=0 MMBUTT=54 SPRITE OFF GAMEPAD 1 ATTR (0,,,,) DO CLS ATTR (0,,,,) SPRITE.A 25,(,,,,1) SPRITE 25,12,10,128 SPRITE.A 26,(,,,,1) SPRITE 26,83,10,130 TEXT 3,2,"HICKEN" TEXT 12,2,"LASTER" SPRITE 4,65,35,MMBUTT SPRITE 5,75,35,MMBUTT SPRITE 6,85,35,MMBUTT MMBUTT=MMBUL+54 MMBUL=MMBUL MOD 4 MMWAIT=(MMWAIT+1) MOD 4 IF MMWAIT=0 THEN MMBUL=MMBUL+1 SPRITE 1,,,MMBUTT END IF IF MMBUL >7 THEN MMBUL=0 ATTR (1,,,,) TEXT 2,9," HIGHSCORE:"+STR$(HIG) ATTR (7,,,,) TEXT 2,10,"PRESS A TO START" IF BUTTON TAP(0,0) THEN GOTO GAME WAIT VBL LOOP GAME: PAUSE OFF GLOBAL SCORE SCORE=0 ATTR(2,,,,) SPRITE OFF SPRITE.A 1,(0,,,,) X=75 Y=110 CX=75 CY=30 N=50 DEL=0 HEALTH=3 BHEALTH=2000 BOSSM=1 ATTACK=0 SPECIAL=0 ITEM=0 COOL=0 EGG=0 INV=0 SHOT=0 SHIELD=0 SH=0 BWALK=64 WALK=0 CYC=0 U=0 O=0 BN=8 MEGAB=0 GBX=0 GBY=0 BULL=0 MINION1=0 MINION2=1 MINION3=0 MINI=0 GLOBAL EGGX EX(0)=75 EX(1)=65 EX(2)=85 SPRITE 12,EX(0),0,14 SPRITE 13,EX(1),0,14 SPRITE 14,EX(2),0,14 IBUL=1 BWAIT=0 IBUTT=64 EBUTT=48 EWAIT=0 EBUL=0 SWAIT=0 SBUL=0 SBUTT=96 MWAIT=0 MBUTT(0)=52 MBUTT(1)=52 MBUTT(2)=52 GWAIT=0 GBUTT=104 GBUL=1 BBUTT=41 BBUL=0 BBWAIT=0 AW=1 GLOBAL AW DO CLS RANDOMIZE TIMER ATTR (2,,,,) IF PAUSE THEN GOSUB GAMEPAUSE SPRITE.A 61,(2,,,,) SPRITE.A 62,(2,,,,) SPRITE.A 63,(2,,,,) IF HEALTH=2.5 THEN SPRITE 61,141,120,6 ELSE IF HEALTH>2.5 THEN SPRITE 61,141,120,5 ELSE SPRITE OFF 61 END IF END IF IF HEALTH=1.5 THEN SPRITE 62,133,120,6 ELSE IF HEALTH>1.5 THEN SPRITE 62,133,120,5 ELSE SPRITE OFF 62 END IF END IF IF HEALTH=0.5 THEN SPRITE 63,125,120,6 ELSE IF HEALTH>0.5 THEN SPRITE 63,125,120,5 ELSE SPRITE OFF 63 END IF END IF IF INV=0 AND SPRITE HIT (1,2 TO 3) AND SHIELD<=0 THEN INV=1 HEALTH=HEALTH-0.25 ELSE INV=0 END IF SPRITE.A 46,(5,,,,) SPRITE.A 47,(5,,,,) SPRITE.A 48,(5,,,,) IF SHOT>=1 THEN SPRITE 46,10,120,8 ELSE SPRITE OFF 46 END IF IF SHOT>=2 THEN SPRITE 47,18,120,8 ELSE SPRITE OFF 47 END IF IF SHOT=3 THEN SPRITE 48,26,120,8 ELSE SPRITE OFF 48 END IF IF SHOT>3 THEN SHOT=3 IF SH=1 THEN SPRITE 49,75,120,10 ELSE SPRITE OFF 49 SPRITE.A 45,(5,,,,1) IF SHOT=0 THEN SPRITE 45,36,120,21 IF SHOT=1 THEN SPRITE 45,36,120,23 IF SHOT=2 THEN SPRITE 45,36,120,25 IF SHOT=3 THEN SPRITE 45,36,120,27 IF MEGAB=1 THEN SPRITE 45,36,120,29 CALL UPBU 'PLAYER IF LEFT(0) OR RIGHT(0) THEN SPRITE 1,X,Y,EBUTT ELSE SPRITE 1,X,Y,48 IF UP(0) AND NOT LEFT(0) AND NOT RIGHT(0) AND U<20 THEN U=U+1 IF SH=1 AND U>10 THEN SHIELD=300 SH=0 SBUL=1 END IF IF SH=1 AND U>10 THEN SHIELD=300 SH=0 END IF IF U>0 THEN U=U-0.25 IF DOWN(0) AND NOT LEFT(0) AND NOT RIGHT(0) AND O<20 THEN O=O+1 IF O>0 THEN O=O-0.25 IF O>10 AND SHOT=3 THEN MEGAB=1 SHOT=0 END IF EWAIT=(EWAIT+1) MOD 6 IF X<20 THEN X=20 IF LEFT(0) AND X>20 THEN DEC X IF EWAIT=0 THEN DEC EBUTT END IF IF EBUTT<48 THEN EBUTT=51 IF EBUTT>51 THEN EBUTT=48 IF RIGHT(0) AND X<120 THEN INC X IF EWAIT=0 THEN INC EBUTT END IF IF DEL<=0 AND BUTTON(0,0) THEN GOSUB SHOOT DEL=7 END IF DEL=DEL-1 IF SHOT>0 AND BUTTON TAP(0,1) AND MEGAB<>1 THEN GOSUB BIGB SHOT=SHOT-1 END IF IF MEGAB=1 AND BUTTON(0,1) THEN BULL=1 GBX=X+0 GBY=Y+0 MEGAB=0 END IF SPRITE.A 11,(2,,,,1) IF BULL=1 AND GBY>-10 THEN SPRITE 11,GBX,GBY, ELSE SPRITE OFF 11 GBY=GBY-4 IF GBX>CX THEN GBX=GBX-0.5 IF GBX-8 THEN BBY(I)=BBY(I)-3 SPRITE I,BBX(I),BBY(I),BBUTT SPRITE.A I,(,,,,0) ELSE SPRITE OFF I END IF BBWAIT=(BBWAIT+1) MOD 6 BBUTT=BBUL+40 IF BBWAIT=0 THEN BBUL=BBUL+1 SPRITE I,,,BBUTT IF BBUL>4 THEN BBUL=1 END IF NEXT I IF BBX(BN)CX THEN BBX(BN)=BBX(BN)-0.25 SPRITE.A N,(2,,,,) SPRITE.A 2,(3,,,,1) SPRITE 2,CX,CY,IBUTT IF SPRITE HIT(2,8 TO 10) THEN SPRITE OFF HIT BHEALTH=BHEALTH-3 END IF GBUTT=GBUL+103 GWAIT=(GWAIT+1) MOD 9 IF GWAIT=0 THEN GBUL=GBUL+2 SPRITE.A 11,(2,,,,) SPRITE 11,,,GBUTT IF GBUL>8 THEN GBUL=1 END IF IBUTT=IBUL+63 IF SPRITE.C(2)=63 THEN IBUL=1 BWAIT=(BWAIT+1) MOD 5 IF BWAIT=0 AND IBUL>0 THEN IBUL=IBUL+2 SPRITE.A 3,(7,,,,) SPRITE 2,,,IBUTT IF IBUL>10 THEN IBUL=1 END IF IF SPRITE HIT (2,50 TO 60) THEN SPRITE.A 2,(2,,,,) BHEALTH=BHEALTH-1 SCORE=SCORE+10 SPRITE OFF HIT END IF IF BHEALTH>1500 THEN SCORE=SCORE-2 IF BHEALTH>0 THEN SCORE=SCORE-1 PRINT BHEALTH IF BOSSM=1 THEN CX=CX+1.25 IF BOSSM=2 THEN CX=CX-1.25 IF CX>=X+25 THEN BOSSM=2 IF CX<=X-25 THEN BOSSM=1 IF CYC=0 THEN CYC=1 IF COOL=0 AND SPRITE.X (2)>=X-1 AND SPRITE.X (2)<=X+1 THEN ATTACK=ATTACK+0.5 COOL=1 ELSE COOL=0 END IF IF SPECIAL<>3 AND ATTACK=3 THEN EGG=CY+0 SPRITE.A 3,(,,,,0) SPRITE 3,CX+0,EGG,12 ATTACK=0 SPECIAL=SPECIAL+1 END IF IF SPECIAL=3 THEN EGG=CY+0 SPRITE.A 3,(,,,,1) EGGX=CX+0 SPRITE 3,EGGX,EGG,142 ITEM=RND (6) SPECIAL=0 END IF SPRITE 3,,EGG, IF SPRITE.Y (3)>=150 THEN SPRITE OFF 3 EGG=EGG+5 SPRITE.A 4,(2,,,,) SPRITE.A 5,(5,,,,) IF ITEM=1 OR ITEM=6 THEN IF SPRITE.Y (3)>=110 THEN SPRITE 3,,,70 ITEMX(1)=EGGX+0 SPRITE 4,ITEMX(1),110,7 ITEM=0 END IF END IF IF SPRITE HIT(1) THEN IF HIT=4 THEN HEALTH= HEALTH+ 1 SPRITE OFF 4 END IF END IF IF HEALTH>3 THEN HEALTH=3 IF ITEM=2 OR ITEM=5 THEN IF SPRITE.Y (3)>=110 THEN ITEMX(2)=EGGX+0 SPRITE 5,ITEMX(2),110,9 ITEM=0 END IF END IF IF SPRITE HIT(1) THEN IF HIT=5 THEN SHOT=SHOT+1 SPRITE OFF 5 END IF END IF IF ITEM=3 THEN IF SPRITE.Y (3)>=110 THEN ITEMX(3)=EGGX+0 SPRITE 6,ITEMX(3),110,11 ITEM=0 END IF END IF IF SPRITE HIT(1) THEN IF HIT=6 THEN SH=1 SPRITE OFF 6 END IF END IF IF SHIELD>0 THEN SPRITE.A 7,(,,,,1) SPRITE 7,X-4,Y-3,SBUTT IF SHIELD>0 THEN SHIELD=SHIELD-1 ELSE SPRITE OFF 7 END IF SBUTT=SBUL+95 SWAIT=(SWAIT+1) MOD 7 IF SWAIT=0 AND SBUL>0 THEN SBUL=SBUL+2 SPRITE.A 7,(0,,,,) SPRITE 7,,,SBUTT IF SBUL>8 THEN SBUL=1 END IF IF SPRITE HIT(7,3) THEN SPRITE OFF 3 IF SPRITE HIT(7,15) THEN SMEGG(0)=130 IF SPRITE HIT(7,16) THEN SMEGG(1)=130 IF SPRITE HIT(7,17) THEN SMEGG(2)=130 IF BHEALTH<=1000 THEN MINI=1 SPRITE.A 12,(3,,,,) ELSE SPRITE.A 12,(7,,,,) SPRITE 12,,,12 END IF IF BHEALTH<=800 THEN MINI=2 SPRITE.A 13,(3,,,,) ELSE SPRITE.A 13,(7,,,,) SPRITE 13,,,12 END IF IF BHEALTH<=700 THEN MINI=3 SPRITE.A 14,(3,,,,) SPRITE OFF 35 SPRITE OFF 36 SPRITE OFF 37 SPRITE OFF 38 ELSE SPRITE.A 14,(7,,,,) SPRITE 14,,,12 SPRITE 35,63,5,60 SPRITE 36,71,5,61 SPRITE 37,79,5,62 SPRITE 38,87,5,63 END IF SPRITE.A 35,(6,,,,) SPRITE.A 36,(6,,,,) SPRITE.A 37,(6,,,,) SPRITE.A 38,(6,,,,) SPRITE.A 15,(1,,,,) SPRITE.A 16,(1,,,,) SPRITE.A 17,(1,,,,) IF MINI>=1 THEN SPRITE 12,EX(0),EY(0),MBUTT(0) IF SPRITE.X (12)>X-1 AND SPRITE.X (12)=2 THEN SPRITE 13,EX(1),EY(1),MBUTT(1) IF SPRITE.X (13)>X-1 AND SPRITE.X (13)X-1 AND SPRITE.X (14)=1 THEN MBUL(0)=MBUL(0)+1 SPRITE 12,,,MBUTT(0) END IF IF MWAIT=0 AND MINI>=2 THEN MBUL(1)=MBUL(1)+1 SPRITE 13,,,MBUTT(1) END IF IF MWAIT=0 AND MINI>=3 THEN MBUL(2)=MBUL(2)+1 SPRITE 14,,,MBUTT(2) END IF IF CYC=0 THEN EWALK(0)=13 ELSE EWALK(0)=12 IF CYC=0 THEN EWALK(1)=12 ELSE EWALK(1)=13 IF CYC=0 THEN EWALK(2)=13 ELSE EWALK(2)=12 SMEGG(0)=SMEGG(0)+5 SMEGG(1)=SMEGG(1)+5 SMEGG(2)=SMEGG(2)+5 IF SMEGG(0)>130 THEN SPRITE OFF 15 IF SMEGG(1)>130 THEN SPRITE OFF 16 IF SMEGG(2)>130 THEN SPRITE OFF 17 IF SPRITE HIT(1,15 TO 17) AND SHIELD<=0 THEN HEALTH= HEALTH- 0.5 IF MINI>=1 AND MINION1=0 THEN EX(0)=EX(0)+0.5 IF EX(0)>110 THEN MINION1=1 IF MINI>=1 AND MINION1=1 THEN EX(0)=EX(0)-0.5 IF EX(0)<15 THEN MINION1=0 IF MINI>=2 AND MINION2=0 THEN EX(1)=EX(1)+1 IF EX(1)>120 THEN MINION2=1 IF MINI>=2 AND MINION2=1 THEN EX(1)=EX(1)-1 IF EX(1)<10 THEN MINION2=0 IF MINI>=3 AND MINION3=0 THEN EX(2)=EX(2)+1.5 IF EX(2)>125 THEN MINION3=1 IF MINI>=3 AND MINION3=1 THEN EX(2)=EX(2)-1.5 IF EX(2)<5 THEN MINION3=0 IF HEALTH<=0 THEN GOTO GAMEOVER IF BHEALTH<=0 THEN GOTO WIN WAIT VBL LOOP SHOOT: N=N+1 IF N=60 THEN N=50 BX(N)=X+2 BY(N)=Y-2 RETURN BIGB: BN=BN+1 IF BN>10 THEN BN=8 BBX(BN)=X+1 BBY(BN)=Y-2 RETURN SUB UPBU FOR I=50 TO 60 IF BY(I)>-8 THEN BY(I)=BY(I)-2 SPRITE I,BX(I),BY(I),3 ELSE SPRITE OFF I END IF NEXT I END SUB GAMEOVER: TRFY=PEEK($E000) HIG=PEEKW ($E000) FOR I=50 TO 60 BY(I)=-8 NEXT I IBUL=0 GLOBAL BWAIT UI=0 SPRITE OFF 3 TO 63 DO CLS IMT=RND (7) UI=UI+1 IF UI>30 AND SPRITE.C(1)>=48 AND SPRITE.C (1)<=52 THEN IBUL=1 BWAIT=(BWAIT+1) MOD 6 IF BWAIT=0 AND IBUL>0 THEN IBUL=IBUL+1 SPRITE.A 1,(4,,,,) SPRITE 1,,,IBUL+31 IF IBUL=9 THEN IBUL=0 END IF ATTR (7,,,,) TEXT 5,8,("SCORE "+STR$(SCORE)) IF HIG=3 THEN SCORE=SCORE+300 IF HEALTH=2 THEN SCORE=SCORE+200 IF HEALTH=1 THEN SCORE=SCORE+100 IBUL=0 GLOBAL BWAIT UI=0 SPRITE OFF 4 TO 63 FOR I=50 TO 60 BY(I)=-8 NEXT I HIG=PEEKW ($E000) SPRITE 2,,,74 DO CLS IMT=RND (7) UI=UI+1 IF UI>60 AND SPRITE.C(2)=74 THEN IBUL=1 BWAIT=(BWAIT+1) MOD 6 IF BWAIT=0 AND IBUL>0 THEN IBUL=IBUL+2 SPRITE.A 2,(4,,,,) SPRITE 2,,,IBUL+159 IF IBUL>14 THEN IBUL=0 END IF ATTR (7,,,,) TEXT 5,8,("SCORE "+STR$(SCORE)) IF HIG