RANDOMIZE TIMER GAMEPAD 1 BG 1 BG COPY 0,0,20,16 TO 0,0 GLOBAL TOTALDOTS CALL SHOWTOTALDOTS GLOBAL SCORE SCORE=0 CALL SHOWSCORE(0) GLOBAL LEVEL LEVEL=1 GLOBAL LIFE LIFE=3 CALL SHOWLIFE GLOBAL PLAYER,DOT,PILL,PLAYERPASS,PLAYERLEFT,PLAYERRIGHT GLOBAL BONUSEMPTY,BONUSCHERRY PLAYER=23 DOT=22 PILL=21 PLAYERPASS=18 PLAYERLEFT=19 PLAYERRIGHT=20 BONUSEMPTY=25 BONUSCHERRY=26 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(3),YGHOST(3),GHOST(3),DGHOST(I) BG 0 FOR I=1 TO 3 PAL 3+I READ XGHOST(I),YGHOST(I),GHOST(I) DGHOST(I)=1 CELL XGHOST(I),YGHOST(I),GHOST(I) NEXT I DATA 8,7,32,9,7,35,10,7,38 BG 0 PX=9 PY=9 PAL 1 CELL 9,9,PLAYER DO IMOVE=(IMOVE+1) MOD 10 IF IMOVE=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) IF RND(50)=1 THEN CALL ADDBONUS IF RND(75)=1 THEN CALL REMOVEBONUS FOR I=1 TO 3 OK=0 CALL MOVEGHOST(I,OK) NEXT I 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 BG 0 CELL X,Y,0 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 GCOLOR CELL X,Y,GCELL 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>1 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 CALL SHOWTOTALDOTS PLAY 0,90,2 CALL SHOWSCORE(100) 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 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 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 003F0E00003F3300003F0B00003F2A15 #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 FFFFE7C3C3E7FFFFFFE7DBBDBDDBE7FF FFFFDFFFFFFFFFFFFFC3A78F8F87C3FF FFFFE7C3C3C3C3FFFFE7DBBDBDBDBDFF 00000000000000000000000000000000 00000000000000000000000000000000 00002424000000003C7EDBFFFFFFFFA5 00006666660000003C7E99BD99FFFFA5 0000242400000000003C5A7E3C000000 00002424000000003C7EDBFFFFFFFFA5 00006666660000003C7E99BD99FFFFA5 0000242400000000003C5A7E3C000000 00002424000000003C7EDBFFFFFFFFA5 00006666660000003C7E99BD99FFFFA5 0000242400000000003C5A7E3C000000 #3:MAIN BG 00001410010001000100010001000100 01000100010001000100010001000100 01000100010001000100010001001501 16011601160116011601160116011601 16011601160116011601160116011601 15010100010016010100010016010100 01001601010001000100010001000100 01001601010001001601010001001601 16011601160101001601160116011601 16011601160116010100160116011601 16010100010016010100010016010100 16010100010001000100010001001601 01001601010001001601010001001601 16010100160101001601160116011601 16011601160116010100160101001601 16010100010001001601010016010100 16010100010002000200010001001601 01001601010016010100010013011201 16010100160116011601010003000300 03000300010016011601160101001601 12011401010001001601010016010100 16010100010001000100010001001601 01001601010016010100010001001601 16010100160101281601160116011902 19021601160116010100160101001601 16010100010016010100010016010100 16010100010001000100010001001601 01001601010001001601010001001601 16011601160116011601160116011601 16011601160116011601160116011601 16010100010016010100160101001601 01001601010001000100010016010100 16010100160101001601010001001601 01001601010016010100160101000100 01000100160101001601010016010100 16010100010015011601160116011601 16011601160116011601160116011601 16011601160116011501010001000100 01000100010001000100010001000100 01000100010001000100010001000100 01000100