'TITLE: LAST BULLET ' 'MADE BY NOUSERNAME010 'NOTES ' 'SPRITE LIST '0 - PLAYER CHAR 1-8 '1 - BULLET CHAR 16-17 '2-17 - ENEMIES '18-33 - ENEMY BULLETS ' 'MUSIC (NO SOUND YET) 'MAIN MUSIC - ROM15 ' 'CODE 'BULLET DIRECTIONS: '0 = RIGHT '1 = UP '2 = LEFT '3 = DOWN ' 'MISC 'I LOVE AND HATE THIS LANGUAGE SO MUCH... RANDOMIZE TIMER GAMEPAD 1 GLOBAL TRUE, FALSE TRUE=0 FALSE=-1 'INIT GLOBAL ENEMYTIMER GLOBAL GAMETIMER GLOBAL COMBO,SCORE GLOBAL HAD_GAME 'PLAYER VARIABLES GLOBAL PX,PY PX=76 PY=60 PDIR=2 DIM GLOBAL PSPRITES(7) FOR I=0 TO 7 PSPRITES(I) = I+1 NEXT I 'BULLET VARIABLES GLOBAL ISBULLET,BX,BY,BSTATE,BDIR,BROT ISBULLET=FALSE BX=0 BY=0 BSTATE=0 BDIR=0 BROT=0 DIM GLOBAL BSPRITES(7) FOR I=0 TO 1 BSPRITES(I) = I+16 NEXT I 'ENEMIES DIM GLOBAL ENEMIES(15,4) '0 - STATE (0=INACTIVE) '1 - SPRITE NUM '2 - START X '3 - START Y '4 - SPEED FOR I=0 TO 15 ENEMIES(I,1)=I+2 NEXT I HAD_GAME=FALSE INTRO: PRIO 0 DO SPRITE VIEW OFF CLS PAL 2 CALL CENTERTEXT("THE LAST BULLET",1) IF ((TIMER/45) MOD 2)+1=1 THEN CALL CENTERTEXT("PRESS ANY BUTTON",8) END IF IF HAD_GAME=TRUE THEN CALL CENTERTEXT("LAST SCORE:",10) CALL CENTERTEXT(STR$(SCORE),11) END IF IF BUTTON TAP(0) THEN GOTO GAME WAIT VBL LOOP GAME: 'GAME START PX=80 PY=64 PDIR=0 ISBULLET=FALSE BG 0 COMBO=0 SCORE=0 GAMETIMER = 0 ENEMYTIMER=30 SOUND SOURCE ROM(14) 'NECESSARY WAIT SINCE SHOOT GETS ACTIVATED WITHOUT IT WAIT VBL DO 'SPRITE VIEW OFF CLS PRIO 0 BG COPY 0,0,20,16 TO 0,0 PRIO 1 CALL DRAWHUD 'PLAYER MOVEMENT IF UP(0) THEN DEC PY PDIR=1 ELSE IF DOWN(0) THEN INC PY PDIR=3 ELSE IF LEFT(0) THEN DEC PX PDIR=2 ELSE IF RIGHT(0) THEN INC PX PDIR=0 END IF SPRITE 0,PX,PY,PSPRITES(((GAMETIMER/30) MOD 2)+(PDIR*2)) SPRITE 0 PAL 2 IF ISBULLET=FALSE THEN IF BUTTON TAP(0,0) THEN CALL SHOOTBULLET(PX,PY,PDIR) ELSE IF ISBULLET=TRUE THEN CALL UPDATEBULLET END IF CALL UPDENEMIES WAIT VBL INC GAMETIMER DEC ENEMYTIMER IF ENEMYTIMER=0 THEN ENEMYTIMER=RND(180)+60 CALL SPAWNENEMY END IF LOOP SUB SHOOTBULLET(X,Y,DIR) ISBULLET = TRUE BSTATE=0 BX=X BY=Y IF DIR=0 THEN ADD BX,8 ELSE IF DIR=1 THEN ADD BY,-8 ELSE IF DIR=2 THEN ADD BX,-8 ELSE IF DIR=3 THEN ADD BY,8 END IF BDIR=DIR BROT=3 SPRITE 1,BX,BY,16 SPRITE 1 PAL 2 PLAY 0,25 SOUND 0 END SUB SUB SPAWNENEMY EDIR=RND(3) ESLOT=-1 REPEAT VALIDSLOT=FALSE INC ESLOT IF ESLOT<16 THEN IF ENEMIES(ESLOT,0)=0 THEN VALIDSLOT=TRUE END IF UNTIL ESLOT>15 OR VALIDSLOT=TRUE IF ESLOT<16 THEN ENEMIES(ESLOT,2)=0 ENEMIES(ESLOT,3)=0 IF EDIR=0 OR EDIR=2 THEN ENEMIES(ESLOT,3)=RND(120) ELSE IF EDIR=1 OR EDIR=3 THEN ENEMIES(ESLOT,2)=RND(152) END IF IF EDIR=2 THEN ENEMIES(ESLOT,2)=152 IF EDIR=0 THEN ENEMIES(ESLOT,3)=120 ENEMIES(ESLOT,4)=(RND(29)+21)/100 ENEMIES(ESLOT,0)=1 ENEMIES(ESLOT,1)=ESLOT+2 END IF END SUB SUB UPDENEMIES FOR I=0 TO 15 IF ENEMIES(I,0)<>0 THEN ESPR=ENEMIES(I,1) EX=ENEMIES(I,2) EY=ENEMIES(I,3) ESPEED=ENEMIES(I,4) IF PXEX THEN EX=EX+ESPEED IF PYEY THEN EY=EY+ESPEED ENEMIES(I,2)=EX ENEMIES(I,3)=EY SPRITE ESPR,EX,EY,32 SPRITE ESPR PAL 2 'PLAYER COLLISION IF SPRITE HIT(ENEMIES(I,1),0) THEN CALL GAMEOVER END IF NEXT I END SUB SUB UPDATEBULLET 'BULLET MOVEMENT IF BSTATE=0 THEN IF BDIR=0 THEN BX=BX+2 IF BDIR=1 THEN BY=BY-2 IF BDIR=2 THEN BX=BX-2 IF BDIR=3 THEN BY=BY+2 END IF 'CONTROLS THE BULLET IF BUTTON TAP(0) AND BSTATE=0 THEN DEC BROT IF BROT>-1 THEN IF BUTTON TAP(0,0) THEN IF BDIR<3 THEN INC BDIR ELSE BDIR=0 ELSE IF BUTTON TAP(0,1) THEN IF BDIR>0 THEN DEC BDIR ELSE BDIR=3 END IF PLAY 0,25 SOUND 3 ELSE CALL BULLETSTOP END IF END IF 'BULLET STOPS IF HITS PLAYER IF SPRITE HIT(1,0) THEN ISBULLET=FALSE PLAY 0,49 SOUND 4 END IF 'BULLET STOPS IF HITS EDGE OF SCREEN IF BX+7>160 THEN BX=152 CALL BULLETSTOP END IF IF BX<0 THEN BX=0 CALL BULLETSTOP END IF IF BY+7>128 THEN BY=120 CALL BULLETSTOP END IF IF BY<0 THEN BY=0 CALL BULLETSTOP END IF 'ENEMY COLLISION IF SPRITE HIT(1,2 TO 17) AND BSTATE=0 THEN FOR I=0 TO 15 IF ENEMIES(I,1)=HIT THEN ENEMIES(I,0)=0 INC COMBO ADD SCORE,(250*COMBO) SPRITE OFF HIT BROT=3 END IF NEXT I END IF SPRITE 1,BX,BY,BSPRITES(BSTATE) IF ISBULLET=FALSE THEN SPRITE OFF 1 END SUB SUB BULLETSTOP BSTATE=1 COMBO=0 PLAY 0,25 SOUND 1 END SUB SUB GAMEOVER SPRITE OFF 0 TO 63 FOR I=0 TO 15 ENEMIES(I,0)=0 NEXT I CALL CENTERTEXT("GAME OVER",8) WAIT 180 HAD_GAME=TRUE GOTO INTRO END SUB SUB CENTERTEXT(T$,Y) TEXT 10-(LEN(T$)/2),Y,T$ END SUB SUB DRAWHUD 'GENERAL HUD PRINT "SCORE:";SCORE IF COMBO>0 THEN CALL CENTERTEXT("COMBO:"+STR$(COMBO),12) 'BULLET RELATED HUD IF ISBULLET=FALSE AND COMBO<1 THEN CALL CENTERTEXT("YOU HAVE ONE LAST", 13) CALL CENTERTEXT("BULLET", 14) ELSE IF ISBULLET=TRUE THEN 'DISPLAYS ROTATIONS LEFT IF BSTATE=0 THEN CALL CENTERTEXT(STR$(BROT), 2) END IF END SUB #1:MAIN PALETTES 003F2F0000383400003C3410003F3C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 183C18000E080000183C00181E181824 00183C180E08000000183C001E181824 183C180004040000183C00181C1C1824 00183C180404000000183C001C1C1824 183C180060000000183C001878181824 00183C186000000000183C0078181824 183C180020200000183C001838381824 00183C182020000000183C0038381824 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00001824241800000000001818000000 00060E1C3870200000000C0400000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 001818001C100000000000181C181824 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 00000000000000004000040020000800 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 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 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 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 183C3C3C3C183C181824242424182418 6CFEFE7E240000006C92925A24000000 247EFF7E7EFF7E24245A815A5A815A24 083E7F7E3F7F3E080836414631413608 62F7FE7C3E7FEF4662959A742E59A946 1C3E7E7EFFFE7F3A1C224A46919A453A 183C3C78300000001824244830000000 0C1E3C78783C1E0C0C1224484824120C 30783C1E1E3C78303048241212244830 00247E7EFF7E7E2400245A6681665A24 00183C7EFF7E3C180018246681662418 000000183C3C78300000001824244830 0000007EFF7E00000000007E817E0000 00000000183C3C180000000018242418 060F1E3C78F0E040060912244890A040 3C7EFFFFFFFF7E3C3C4299918999423C 183C7C3C3C7EFF7E182444242466817E 3C7EFF7E3C7EFF7E3C429972244E817E 3C7EFF7E6FFF7E3C3C4299726999423C 66FFFFFF7F0F0F066699998179090906 7EFFFEFE7F7FFE7C7E819E827979827C 1C3E7CFEFFFF7E3C1C224C829999423C 7EFF7F1E3C7878307E81791224484830 3C7EFF7EFFFF7E3C3C4299429999423C 3C7EFF7F7FFF7E3C3C4299417999423C 0000183C183C18000000182418241800 0000183C183C78300000182418244830 000C1E3C783C1E0C000C12244824120C 00007EFF7EFF7E0000007E817E817E00 0030783C1E3C78300030482412244830 3C7EFF7E3C183C183C42997224182418 3C7EFFFFFFFE7E3C3C429991919E423C 183C7EFFFFFFFF661824429981999966 7CFEFFFEFFFFFE7C7C8299829999827C 3C7EFFF6F6FF7E3C3C4299969699423C 78FCFEFFFFFEFC787884929999928478 7EFFFEFCF8FEFF7E7E819E84989E817E 7EFFFEFCF8F0F0607E819E8498909060 3C7EFEFFFFFF7E3C3C429E919999423C 66FFFFFFFFFFFF666699998199999966 3C7E3C3C3C3C7E3C3C4224242424423C 1E3F1F0F6FFF7E3C1E2119096999423C 66FFFEFCFCFEFF666699928484929966 60F0F0F0F0FEFF7E60909090909E817E 42E7FFFFFFFFFF6642A5998181999966 66FFFFFFFFFFFF666699898191999966 3C7EFFFFFFFF7E3C3C4299999999423C 7CFEFFFEFCF0F0607C8299829C909060 3C7EFFFFFFFE7F3E3C4299999592413E 7CFEFFFEFCFEFF667C82998284929966 3E7FFE7E3F7FFE7C3E419E423979827C 7EFF7E3C3C3C3C187E81662424242418 66FFFFFFFFFF7E3C669999999999423C 66FFFFFFFF7E3C186699999999422418 66FFFFFFFFFFE742669999818199A542 66FF7E3C7EFFFF666699422442999966 66FFFF7E3C3C3C186699994224242418 7EFF7E3C78FEFF7E7E817224489E817E 3C7E7C78787C7E3C3C424C48484C423C 60F0783C1E0F07026090482412090502 3C7E3E1E1E3E7E3C3C4232121232423C 183C7EFF660000001824429966000000 00000000007EFF7E00000000007E817E #3:MAIN BG 00001410000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000400200000000 00000000000000004002000000000000 00000000400200000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000004002 00000000000000000000000000000000 00000000000000004002000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000400200000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00004002000000000000000000004002 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000004002000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000 #14:SFX 7808F058000000006F08F05800000000 08006060000000002800303019FE0000 28002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 #15:MAIN SOUND 2800303A000000001800846C003A0000 08006060000000002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 00014040020340404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 40404040404040404040404040404040 311F0000000000000000000000000000 00000000000000003D1F000000000000 000000003B1F00000000000000391F00 381F0000000000000000000000000000 00000000000000000000000000000000 00000000381F00311F00381F003C1F00 2C080000000000000000000000000000 00000000000000003008000000000000 00000000000000000000000000000000 31080000000000000000000000000000 00000000000000000000000000000000 00000000000000000000310800340800 421F00000000000000000000401F0000 00000000000000003F1F000000000000 000000003D1F003B1F003D1F003B1F00 00000000000000000000000000000000 00000000000000000000000000000000 00FF0000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00FF0000000000000000000000000000