RANDOMIZE TIMER PAUSE OFF 'RETROBIT:ROOPERT GAME BY WAS8BIT' DIM GLOBAL X(63),Y(63),DX(63),DY(63),S(63),TDIFF$(2) GLOBAL TOPSCORE, NOWSCORE,GAMEDIFF TDIFF$(0)="EASY" TDIFF$(1)=" OK " TDIFF$(2)="HARD" TOPSCORE=PEEKL($E000) NOWSCORE=0 GAMEPAD 1 NEWGAME: IF NOWSCORE>TOPSCORE THEN TOPSCORE=NOWSCORE POKEL $E000,TOPSCORE END IF DIFF=0 GAMEDIFF=0 SPRITE OFF FOR I=1 TO 63 S(I)=0 NEXT I CALL TITLE NOWSCORE=0 REM 1=PLAYER REM 2=PLAYERBULLET REM 10=ENEMY1 REM 11=ENEMY2 REM 20=ENEMY3 REM 21=ENEMY4 S(0)=1 X(0)=9*8 Y(0)=14*8 SPRITE 0,,,249 SPRITE 0 FLIP 0,1 IPLAY=0 ITURN=3 ATTACK=0 MDIFF=300-GAMEDIFF*145 DO IDIFF=(IDIFF+1) MOD MDIFF IF IDIFF=0 THEN IF DIFF<15 THEN INC DIFF END IF IF IPLAY>0 THEN DEC IPLAY IF IPLAY=0 THEN IF ITURN>0 THEN S(0)=1 X(0)=9*8 Y(0)=14*8 SPRITE 0,X(0),Y(0),249 SPRITE 0 FLIP 0,1 PAL 0 ELSE GOTO NEWGAME END IF END IF END IF RDIFF1=25-DIFF RDIFF2=100-DIFF*4 IF RND(RDIFF1)=0 THEN R=RND(1) IF R=0 THEN CALL ADDSPR(225,1,RND(1)+1,RND(152),0,RND(2)-1,1,10) ELSE CALL ADDSPR(205,0,RND(1)+1,RND(152),0,RND(2)-1,1,11) END IF END IF IF ATTACK=0 THEN IF RND(RDIFF2)=0 THEN CALL ADDSPR(193,1,0,RND(152),0,0,0.25,20) ATTACK=1 ELSE IF RND(RDIFF2)=0 THEN CALL ADDSPR(206,1,0,RND(152),0,0,0.5,21) ATTACK=1 END IF END IF ATTACK=0 ISHOOT=0 IF RIGHT(0) THEN DX(0)=1 ELSE IF LEFT(0) THEN DX(0)=-1 ELSE DX(0)=0 FOR I=0 TO 63 IF S(I)>0 THEN SS=S(I) IF SS>=20 THEN ATTACK=1 X(I)=X(I)+DX(I) Y(I)=Y(I)+DY(I) IF SS=21 AND RND(2)=0 THEN IF X(0)>X(I) THEN INC X(I) IF X(0)152 THEN X(I)=152 ELSE IF SS=2 THEN INC ISHOOT IF Y(I)<-8 OR Y(I)>(16*8) THEN S(I)=0 ELSE IF SS>=10 THEN IF Y(I)>(16*8) THEN IF SS=20 THEN SPRITE OFF 0 S(0)=-1 PLAY 2,40,10 SOUND 2 IPLAY=90 DEC ITURN END IF S(I)=0 PP=SPRITE.A(I) IF PP>15 THEN PP=PP-16 IF SS=10 THEN SCR=10 ELSE SCR=5 NOWSCORE=NOWSCORE-SCR*PP IF NOWSCORE<0 THEN NOWSCORE=0 PLAY 3,90,1 END IF IF X(I)<0 OR X(I)>152 THEN S(I)=0 END IF SPRITE I,X(I),Y(I), IF S(I)=0 THEN SPRITE OFF I END IF IF SPRITE HIT(I) THEN SHIT=S(HIT) IF SS=1 OR SHIT=1 THEN SPRITE OFF 0 S(0)=-1 PLAY 2,40,10 SOUND 2 IPLAY=90 DEC ITURN ELSE IF SS=2 OR SHIT=2 THEN IF SS=2 THEN II=HIT ELSE II=I PP=SPRITE.A(II) IF PP>15 THEN PP=PP-16 SII=S(II) IF SII=10 THEN SCR=5 ELSE IF SII=11 THEN SCR=10 ELSE SCR=0 NOWSCORE=NOWSCORE+SCR*PP IF SII=20 THEN NOWSCORE=NOWSCORE+250 S(HIT)=0 S(I)=0 PLAY 0,70,1 SOUND 0 SPRITE OFF HIT SPRITE OFF I IF SS=10 OR SHIT=10 THEN CALL ADDSPR(205,0,RND(1)+1,X(I),Y(I),-1,1,11) CALL ADDSPR(205,0,RND(1)+1,X(I),Y(I),0,1,11) CALL ADDSPR(205,0,RND(1)+1,X(I),Y(I),1,1,11) END IF IF SS=21 OR SHIT=21 THEN CALL ADDSPR(206,0,0,X(I),Y(I),0,0.5,21) END IF END IF NEXT I IF IPLAY=0 THEN IF BUTTON TAP(0,0) THEN CALL ADDSPR(202,0,0,X(0),Y(0)-4,0,-4,2) END IF IF BUTTON TAP(0,1) THEN ADD X(0),24*((RND(1)*2)-1),0 TO 152 END IF END IF PAL 0 NUMBER 0,15,NOWSCORE,6 NUMBER 19,15,ITURN,1 WAIT VBL LOOP SUB ADDSPR(ISPR,FF,PP,XX,YY,DXX,DYY,TT) FOR I=0 TO 63 IF S(I)=0 THEN SPRITE I,,,ISPR SPRITE I FLIP 0,FF PAL PP S(I)=TT X(I)=XX Y(I)=YY DX(I)=DXX DY(I)=DYY IF TT=2 THEN PLAY 1,20,2 SOUND 1 EXIT END IF NEXT I END SUB SUB TITLE CLS PAL 0 BG FILL 0,0 TO 19,15 CHAR 195 BG FILL 1,1 TO 18,14 CHAR 0 NUMBER 6,5,TOPSCORE,6 NUMBER 6,8,NOWSCORE,6 PAL 1 TEXT 6,2,"ROOPERT" TEXT 8,4,"TOP" TEXT 7,7,"SCORE" TEXT 2,10,"DIFFICULTY (A/B)" TEXT 4,13,"PLAY = PAUSE" WAIT 15 PAL 0 WHILE NOT PAUSE IF BUTTON TAP(0,0) THEN ADD GAMEDIFF,-1,0 TO 2 IF BUTTON TAP(0,1) THEN ADD GAMEDIFF,1,0 TO 2 TEXT 7,11,TDIFF$(GAMEDIFF) WAIT VBL WEND CLS WAIT 15 END SUB #1:MAIN PALETTES 003F3F00000F0F0000333300003F3C00 003F2A15003F2A15003F2A15003F2A15 #15:MAIN SOUND 380030BB0000000038008077003A0000 2A0060BB14B0C0002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000