REM SPACE PATROL REM WAS8BIT GAMEPAD 1 RANDOMIZE TIMER 'ARRAYS FOR X,Y DIRECTIONS DIM GLOBAL XDIR(4),YDIR(4) FOR I=1 TO 4 READ XDIR(I),YDIR(I) NEXT I DATA 0,-1,1,0,0,1,-1,0 'GAME TITLE PLAY 3,1,60 SOUND 3 BG COPY 0,0,20,16 TO 0,0 FOR I=79 TO 94 COPY $8000+I*16,16 TO $8000+69*16 WAIT 7 NEXT I FOR J=1 TO 25 FOR I=95 TO 93 STEP -1 COPY $8000+I*16,16 TO $8000+69*16 WAIT 2 NEXT I NEXT J WAIT 60 CLS 'STARRY BACKGROUND BG 1 FOR IX=0 TO 31 FOR IY=0 TO 31 FLIP RND(1),RND(1) CELL IX,IY,RND(3) NEXT IY NEXT IX 'SHIP AND BULLET ARRAYS DIM GLOBAL D(62),X(62),Y(62),S(62) REM D=DIRECTION, X,Y=POSITION, S=STATUS REM 0=PLAYER SHIP REM 1-29=ENEMY SHIP REM 30=PLAYER BULLET REM 31-59=ENEMY BULLET 'SET UP PLAYER D(0)=1 SPRITE 0,76,60,64 GLOBAL XSCROLL,YSCROLL,SHIPCELL GLOBAL TOTALSHIPS,SCORE SCORE=0 YSCROLL=0 XSCROLL=0 ISHIP=0 NEXTSHIP: INC ISHIP SHIPCELL=ISHIP*4-1 SHIPCOLOR=ISHIP MOD 7 FOR I=1 TO 29 D(I)=RND(3)+1 X(I)=RND(32*8) Y(I)=RND(32*8) S(I)=I SPRITE I,X(I),Y(I),SHIPCELL+D(I) SPRITE I PAL SHIPCOLOR NEXT I 'MAIN GAME LOOP BG 0 FLIP 0,0 TEXT 0,0,"SHIPS= SCORE=" TEXT 5,15,"LEVEL=" NUMBER 11,15,ISHIP,2 DO BG 0 NUMBER 6,0,TOTALSHIPS,2 NUMBER 15,0,SCORE,5 CALL DOPLAYERCONTROLS CALL DOBULLETS CALL DOSHIPS 'SIMULATE PLAYER MOVEMENT THRU SPACE SCROLL 1,XSCROLL,YSCROLL YSCROLL=YSCROLL+YDIR(D(0)) XSCROLL=XSCROLL+XDIR(D(0)) WAIT VBL LOOP SUB DOSHIPS DD=RND(1)*2-1 TOTALSHIPS=0 IF SPRITE HIT(0,1 TO 29) THEN SCORE=SCORE-1 IF SCORE<0 THEN SCORE=0 SPRITE 0,,,0 S(0)=-10 PLAY 3,20,15 SOUND 2 PLAY 0,40,15 SOUND 1 S(HIT)=0 SPRITE HIT,,,0 END IF FOR I=1 TO 29 IF S(I)>0 THEN INC TOTALSHIPS IF RND(100)=0 THEN ADD D(I),DD,1 TO 4 IF RND(100)=0 THEN S(I+30)=100 D(I+30)=D(I) X(I+30)=X(I)+XDIR(D(I)) Y(I+30)=Y(I)+YDIR(D(I)) SPRITE I+30,X(I+30),Y(I+30),52 END IF X(I)=X(I)+XDIR(D(I)) Y(I)=Y(I)+YDIR(D(I)) PX=X(I)-XSCROLL PY=Y(I)-YSCROLL SPRITE I,PX,PY,SHIPCELL+D(I) END IF NEXT I END SUB SUB DOPLAYERCONTROLS IF S(0)<0 THEN INC S(0) ELSE IF S(0)=0 THEN S(0)=1 SPRITE 0,,,63+D(0) SPRITE 0 PAL 7 ELSE IF BUTTON(0,0) AND S(30)<95 THEN PLAY 3,80,5 SOUND 0 D(30)=D(0) X(30)=X(0)+XDIR(D(0))+76 Y(30)=Y(0)+YDIR(D(0))+60 S(30)=100 SPRITE 30,X(30),Y(30),68 END IF IF LEFT(0) THEN D(0)=4 SPRITE 0,,,63+D(0) ELSE IF RIGHT(0) THEN D(0)=2 SPRITE 0,,,63+D(0) ELSE IF UP(0) THEN D(0)=1 SPRITE 0,,,63+D(0) ELSE IF DOWN(0) THEN D(0)=3 SPRITE 0,,,63+D(0) END IF END IF END SUB SUB DOBULLETS FOR I=30 TO 59 IF S(I)>0 THEN DEC S(I) X(I)=X(I)+XDIR(D(I)) Y(I)=Y(I)+YDIR(D(I)) SPRITE I,X(I),Y(I), SPRITE I PAL 7 IF S(I)=0 THEN SPRITE I,,,0 REM PLAYERS BULLET IF I=30 THEN IF SPRITE HIT(30,1 TO 29) THEN S(30)=0 SPRITE 30,,,0 S(HIT)=0 SPRITE HIT,,,0 PLAY 0,40,15 SOUND 1 ADD SCORE,10,0 TO 99999 END IF ELSE IF SPRITE HIT (I,0) THEN PLAY 3,20,15 SOUND 2 SCORE=SCORE-1 IF SCORE<0 THEN SCORE=0 SPRITE 0,,,0 S(0)=-10 S(I)=0 SPRITE I,,,0 END IF END IF END IF NEXT I END SUB #1:MAIN PALETTES 003F2A1500303E3800382A1500082A15 00242A15000B2A1500232A15002B362E #2:MAIN CHARACTERS 00000000000000000000000000000000 00004000000000000000000000000000 00000000000000000000000008000000 20000000000000002000000000000000 0000547C544444000000000000000000 007C081C087C00000000000000000000 0022222A3E2A00000000000000000000 00003E1038103E000000000000000000 183C665A7E6642000000000000000000 007C361B1B367C000000000000000000 0042667E5A663C180000000000000000 003E6CD8D86C3E000000000000000000 00002A3E3E3622000000000000000000 00007C381C387C000000000000000000 00446C7C7C5400000000000000000000 003E1C381C3E00000000000000000000 00181818183C7E000000000000000000 0040607E7E6040000000000000000000 007E3C18181818000000000000000000 0002067E7E0602000000000000000000 00001824424200000000000000000000 00300804040830000000000000000000 00004242241800000000000000000000 000C102020100C000000000000000000 08082A1C3E1422000000000000000000 000054381F3854000000000000000000 0044287C385410100000000000000000 002A1CF81C2A00000000000000000000 243C3C183C6666420000000000000000 00E0771E1E77E0000000000000000000 4266663C183C3C240000000000000000 0007EE7878EE07000000000000000000 001818183C6666000000000000000000 0060701E1E7060000000000000000000 0066663C181818000000000000000000 00060E78780E06000000000000000000 001010386C4400000000000000000000 0030180E183000000000000000000000 000022361C0808000000000000000000 00000C1870180C000000000000000000 10383828282828000000000000000000 00007E077E0000000000000000000000 00141414141C1C080000000000000000 0000007EE07E00000000000000000000 00183C66240000000000000000000000 00081C06061C08000000000000000000 00000024663C18000000000000000000 00103860603810000000000000000000 00007E7E424200000000000000000000 003C0C0C0C0C3C000000000000000000 000042427E7E00000000000000000000 003C303030303C000000000000000000 00000000000000000000102810000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 1010387C381038000000000000000000 00085C7F5C0800000000000000000000 001C081C3E1C08080000000000000000 0000103AFE3A10000000000000000000 00001028100000000000102810000000 FFC3A58181A5C3FF0000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000010000000000000000000000000 00000010080000000000000000000000 00000018180000000000000000000000 00002018180400000000000000000000 00002418182400000000000000000000 00003C3C3C3C00000000000000000000 00423C3C3C3C42000000000000000000 00667E3C3C7E66000000000000000000 007E7E7E7E7E7E000000000000000000 817E7E7E7E7E7E810000000000000000 C3FF7E7E7E7EFFC30000000000000000 E7FFFF7E7EFFFFE70000000000000000 F7FFFFFE7FFFFFEF0000000000000000 FFFFFFFFFFFFFFFF0000000000000000 0000000000000000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF #3:MAIN BG 00001410000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 45014501450145014501000045014501 45010000000045010000000045014501 00000000000045010000000000000000 00000000000045010000000045010000 45010000450100004501000000004501 00000000000000000000000000004501 00000000450145014501000045014501 00000000000000004501450145014501 00000000000045010000000045010000 45010000450100004501000000000000 00000000000000004501000000004501 00000000450100004501000045010000 45010000000000000000000000000000 45010000000000000000000000000000 00000000000000000000000000004501 45014501450145010000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000004501 45014501450145010000000000000000 00000000000000000000000000000000 00000000000045010000000000000000 00000000450145014501000045014501 00000000450145014501000000004501 00000000000000000000000000004501 00000000450100004501000045010000 00000000000045014501450145010000 00000000000045010000000045014501 00000000450145010000000000004501 00000000000000000000000000004501 00000000450100004501000045010000 00000000000045010000000000000000 00000000450145014501000045010000 45010000450145014501000000004501 00000000000000000000000000000000 00000000000000000000000000000000 00000000 #15:MAIN SOUND 230030AA14CFC0003800F09900FF0000 2400F0AA14F230002200F0CC11F0C000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000