RANDOMIZE TIMER GAMEPAD 1 PAUSE OFF GLOBAL SCORE, LEVEL, LIFE GLOBAL PLAYER,DOT,PILL,PLAYERPASS,PLAYERLEFT,PLAYERRIGHT GLOBAL BONUSEMPTY,BONUSCHERRY,BONUSLIFE PLAYER=23 DOT=22 PILL=21 PLAYERPASS=18 PLAYERLEFT=19 PLAYERRIGHT=20 BONUSEMPTY=25 BONUSCHERRY=26 BONUSLIFE=27 DIM GLOBAL XDIR(4),YDIR(4) FOR I=1 TO 4 READ XDIR(I),YDIR(I) NEXT I DATA 1,0,0,1,-1,0,0,-1 DIM GLOBAL XGHOST(4),YGHOST(4),GHOST(4),DGHOST(4),IGHOST(4) RESET: RESTORE RESETGHOSTS CLS PLAY 0,30,45 WAIT 60 BG 0 FOR I=1 TO 4 PAL 3+I READ XGHOST(I),YGHOST(I),GHOST(I) DGHOST(I)=1 CELL XGHOST(I),YGHOST(I),GHOST(I) IGHOST(I)=0 NEXT I RESETGHOSTS: DATA 8,7,32,9,7,32,10,7,32,11,7,32 REM IGHOST REM 0=ATTACK REM 1=RUN REM 2=EATEN BG 0 PX=9 PY=11 PAL 1 CELL 9,11,PLAYER LEVEL=1 LIFE=3 CALL SHOWLIFE(0) SCORE=0 CALL SHOWSCORE(0) BG 1 BG COPY 0,0,20,16 TO 0,0 GLOBAL TOTALDOTS CALL SHOWTOTALDOTS DO IMOVE=(IMOVE+1) MOD 10 IF IMOVE=0 THEN IF LIFE>0 THEN UD=UP(0) OR DOWN(0) LR=LEFT(0) OR RIGHT(0) IF RIGHT(0) AND NOT UD THEN CALL MOVEPLAYER(PX,PY,1,0) IF LEFT(0) AND NOT UD THEN CALL MOVEPLAYER(PX,PY,-1,0) IF DOWN(0) AND NOT LR THEN CALL MOVEPLAYER(PX,PY,0,1) IF UP(0) AND NOT LR THEN CALL MOVEPLAYER(PX,PY,0,-1) END IF IF RND(25)=1 THEN CALL ADDBONUS IF RND(75)=1 THEN CALL REMOVEBONUS FOR I=1 TO 4 OK=0 CALL MOVEGHOST(I,OK) NEXT I IF LIFE=0 AND PAUSE THEN GOTO RESET END IF WAIT VBL LOOP SUB MOVEGHOST(I,OK) REM ALWAYS CHECK D D0, D-1 DM, D+1 DP X=XGHOST(I) Y=YGHOST(I) D=DGHOST(I) D0=DGHOST(I) DM=DGHOST(I)-1 DP=DGHOST(I)+1 IF DM<1 THEN DM=4 IF DP>4 THEN DP=1 XCHECKM=X+XDIR(DM) YCHECKM=Y+YDIR(DM) XCHECK0=X+XDIR(D0) YCHECK0=Y+YDIR(D0) XCHECKP=X+XDIR(DP) YCHECKP=Y+YDIR(DP) BG 1 CELLCHECK10=CELL.C(XCHECK0,YCHECK0) CELLCHECK1M=CELL.C(XCHECKM,YCHECKM) CELLCHECK1P=CELL.C(XCHECKP,YCHECKP) BG 0 CELLCHECK00=CELL.C(XCHECK0,YCHECK0) CELLCHECK0M=CELL.C(XCHECKM,YCHECKM) CELLCHECK0P=CELL.C(XCHECKP,YCHECKP) GCOLOR=CELL.A(X,Y) GCELL=CELL.C(X,Y) IF CELLCHECK10=1 OR CELLCHECK10=18 OR CELLCHECK00<>0 THEN OK0=0 ELSE OK0=-1 IF CELLCHECK1M=1 OR CELLCHECK1M=18 OR CELLCHECK0M<>0 THEN OKM=0 ELSE OKM=-1 IF CELLCHECK1P=1 OR CELLCHECK1P=18 OR CELLCHECK0P<>0 THEN OKP=0 ELSE OKP=-1 IF CELLCHECK00=23 OR CELLCHECK00=24 THEN PGOT00=-1 ELSE PGOT00=0 IF CELLCHECK0M=23 OR CELLCHECK0M=24 THEN PGOT0M=-1 ELSE PGOT0M=0 IF CELLCHECK0P=23 OR CELLCHECK0P=24 THEN PGOT0P=-1 ELSE PGOT0P=0 BG 0 CELL X,Y,0 REM CHECK FOR PLAYER NEARBY IF PGOT00 OR PGOT0M OR PGOT0P THEN PLAY 0,90,5 IF IGHOST(I)=0 THEN BG 0 PAL 1 IF PGOT00 THEN CELL XCHECK0,YCHECK0,30 ELSE IF PGOT0M THEN CELL XCHECKM,YCHECKM,30 ELSE IF PGOT0P THEN CELL XCHECKP,YCHECKP,30 END IF CALL SHOWLIFE(-1) ELSE IF IGHOST(I)=1 THEN IGHOST(I)=2 END IF END IF REM LOOK AROUND FIRST IGO=99 IWANT=RND(2)-1 IF IWANT=0 AND OK0 THEN IGO=0 IF IWANT=-1 AND OKM THEN IGO=-1 IF IWANT=1 AND OKP THEN IGO=1 IF IGO=0 THEN X=XCHECK0 Y=YCHECK0 D=D0 ELSE IF IGO=-1 THEN X=XCHECKM Y=YCHECKM D=DM ELSE IF IGO=1 THEN X=XCHECKP Y=YCHECKP D=DP ELSE REM AUTO MOVE IF OK0 THEN X=XCHECK0 Y=YCHECK0 D=D0 ELSE R=RND(1) IF R=0 AND OKM THEN X=XCHECKM Y=YCHECKM D=DM ELSE IF R=1 AND OKP THEN X=XCHECKP Y=YCHECKP D=DP ELSE IF OKM THEN X=XCHECKM Y=YCHECKM D=DM ELSE IF OKP THEN X=XCHECKP Y=YCHECKP D=DP ELSE REM STUCK... D=D+1 IF D>4 THEN D=1 END IF END IF END IF BG 0 PAL I+3 IF IGHOST(I)=1 THEN PAL 7 CELL X,Y,32+IGHOST(I) XGHOST(I)=X YGHOST(I)=Y DGHOST(I)=D END SUB SUB MOVEPLAYER(X,Y,MX,MY) XCHECK=X+MX YCHECK=Y+MY BG 1 CELLCHECK1=CELL.C(XCHECK,YCHECK) BG 0 CELLCHECK0=CELL.C(XCHECK,YCHECK) IF ((CELLCHECK1>17 AND CELLCHECK1<=31) OR CELLCHECK1=0) AND CELLCHECK0=0 THEN CELL X,Y,0 X=X+MX Y=Y+MY IF CELLCHECK1=PLAYERLEFT THEN X=19 IF CELLCHECK1=PLAYERRIGHT THEN X=0 IF MX<0 OR MY<0 THEN XFLIP=1 ELSE XFLIP=0 PAL 1 CELL X,Y,PLAYER+XFLIP IF CELLCHECK1=BONUSCHERRY THEN BG 1 PAL 2 CELL X,Y,BONUSEMPTY PLAY 0,90,2 CALL SHOWSCORE(100) END IF IF CELLCHECK1=BONUSLIFE THEN BG 1 PAL 2 CELL X,Y,BONUSEMPTY PLAY 0,90,2 CALL SHOWLIFE(1) END IF IF CELLCHECK1=DOT THEN BG 1 CELL X,Y,0 CALL SHOWTOTALDOTS PLAY 0,70,1 CALL SHOWSCORE(10) END IF END IF END SUB SUB SHOWTOTALDOTS TOTALDOTS=0 BG 1 FOR Y=0 TO 15 FOR X=0 TO 19 IF CELL.C(X,Y)=22 THEN INC TOTALDOTS NEXT X NEXT Y BG 0 PAL 1 NUMBER 8,0,TOTALDOTS,3 END SUB SUB SHOWSCORE(PLUS) SCORE=SCORE+PLUS BG 0 PAL 3 NUMBER 13,0,SCORE,7 END SUB SUB SHOWLIFE(PLUS) LIFE=LIFE+PLUS IF LIFE<0 THEN LIFE=0 IF LIFE>5 THEN LIFE=5 BG 0 PAL 1 FOR I=1 TO 5 IF LIFE>=I THEN CHARNUM=16 ELSE CHARNUM=17 CELL I-1,0,CHARNUM NEXT I END SUB SUB ADDBONUS IADD=0 BG 1 PAL 2 FOR Y=0 TO 15 FOR X=0 TO 19 IF CELL.C(X,Y)=BONUSEMPTY AND IADD=0 THEN CELL X,Y,BONUSCHERRY IF RND(1)=0 THEN CELL X,Y,BONUSLIFE IADD=1 END IF NEXT X NEXT Y END SUB SUB REMOVEBONUS IREMOVE=0 BG 1 PAL 2 FOR Y=0 TO 15 FOR X=0 TO 19 IF CELL.C(X,Y)=BONUSCHERRY AND IREMOVE=0 THEN CELL X,Y,BONUSEMPTY IREMOVE=1 END IF NEXT X NEXT Y END SUB #1:MAIN PALETTES 00070302003C281400302010003F3F00 003F0E00003F3300003F0B00003F3B00 #2:MAIN CHARACTERS 00000000000000000000000000000000 007E7E7E7E7E7E00FFFFFFE7E7FFFFFF FFFFE7DBDBE7FFFFFFFFFFE7E7FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 003C787070783C000000200000000000 003C787070783C00003C787070783C00 0018245A5A24180000183C66663C1800 000010307E3010000000000000000000 0000080C7E0C08000000000000000000 00182442422418000000183C3C180000 00000018180000000000000000000000 3E7CF8F0F0F87C3E0020200000000000 7C3E1F0F0F1F3E7C0004040000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF9F6F6F97EDEDF3F0ED9B9BFBF3F3FF FFFFDFFFFFFFFFFFFFC3A78F8F87C3FF FFFFE7C3C3E7FFFFFFE7DBBDBDDBE7FF FFFFE7C3C3C3C3FFFFE7DBBDBDBDBDFF 0081C3E7FFFF7E3C0000000020702000 00000000000000000000000000000000 00002424000000003C7EDBFFFFFFFFA5 00002466660000003C7EDBBD99FFE781 0000242400000000003C5A7E3C000000 00002424000000003C7EDBFFFFFFFFA5 00002466660000003C7EDBBD99FFE781 0000242400000000003C5A7E3C000000 00002424000000003C7EDBFFFFFFFFA5 00002466660000003C7EDBBD99FFE781 0000242400000000003C5A7E3C000000 #3:MAIN BG 00001410010001000100010001000100 01000100010001000100010001000100 01000100010001000100010001001501 16011601160116011601160116011601 16011601160116011601160116011601 15010100010016010100010016010100 01001601010001000100010001000100 01001601010001001601010001001601 16011601160101001601160116011601 16011601160116010100160116011601 16010100010016010100010016010100 16010100010001000100010001001601 01001601010001001601010001001601 16010100160101001601160116011601 16011601160116010100160101001601 16010100010001001601010016010100 16010200020002000200020002001601 01001601010016010100010013011201 16010100160116011601020003000300 03000300020016011601160101001601 12011401010001001601010016010100 16010200020002000200020002001601 01001601010016010100010001001601 16010100160101281601160116011902 19021601160116010100160101001601 16010100010016010100010016010100 16010100120112011201120101001601 01001601010001001601010001001601 16011601160116011601160112010000 00001201160116011601160116011601 16010100010016010100160101001601 01001601120112011201120116010100 16010100160101001601010001001601 01001601010016010100160101000001 00010100160101001601010016010100 16010100010015011601160116011601 16011601160116011601160116011601 16011601160116011501010001000100 01000100010001000100010001000100 01000100010001000100010001000100 01000100