' ' GAME ' RANDOMIZE TIMER GAMEPAD 1 PAL 1 BG 1 REM WAS8BIT DIM GLOBAL DX(4),DY(4),CHR(4) GLOBAL PX,PY,PDIR,REFRESH,POWER FOR I=1 TO 4 READ DX(I),DY(I),CHR(I) NEXT I DATA 0,-1,4,1,0,5,0,1,6,-1,0,7 BG FILL 0,0 TO 19,15 CHAR 2 BG FILL 1,1 TO 17,14 CHAR 1 'DOORWAYS CALL DOORS(5,4,1,0,0,1) CALL DOORS(9,4,1,1,0,1) CALL DOORS(13,4,1,1,0,0) CALL DOORS(5,8,1,0,1,1) CALL DOORS(9,8,1,1,1,1) CALL DOORS(13,8,1,1,1,0) CALL DOORS(5,12,0,0,0,1) CALL DOORS(9,12,0,1,0,1) CALL DOORS(13,12,0,1,0,0) CELL 5,13+RND(1),2 CELL 9,13+RND(1),2 CELL 13,13+RND(1),2 'WALLS CALL RNDWALL(5,4,1,0,0,1) CALL RNDWALL(9,4,1,1,0,1) CALL RNDWALL(13,4,1,1,0,0) CALL RNDWALL(5,8,1,0,1,1) CALL RNDWALL(9,8,1,1,1,1) CALL RNDWALL(13,8,1,1,1,0) CALL RNDWALL(5,12,0,0,1,1) CALL RNDWALL(9,12,0,1,1,1) CALL RNDWALL(13,12,0,1,1,0) PAL 3 CELL 17,14,4 PX=17 PY=14 PDIR=1 POWER=1 RUNES=0 PAL 2 FOR I=1 TO 5 C=99 WHILE C<>1 X=RND(19) Y=RND(15) C=CELL.C(X,Y) WEND CELL X,Y,3 NEXT I PAL 5 FOR I=1 TO 5 C=99 WHILE C<>1 X=RND(19) Y=RND(15) C=CELL.C(X,Y) WEND CELL X,Y,7+I NEXT I REFRESH=1 DO IF UP(0) THEN CALL PSHOW(1) ELSE IF RIGHT(0) THEN CALL PSHOW(2) ELSE IF DOWN(0) THEN CALL PSHOW(3) ELSE IF LEFT(0) THEN CALL PSHOW(4) IF BUTTON TAP (0,0) THEN REFRESH=1 CHX=PX+DX(PDIR) CHY=PY+DY(PDIR) CH=CELL.C(CHX,CHY) IF CH=1 THEN CELL PX,PY,1 PX=CHX PY=CHY CALL PSHOW(0) END IF END IF IF BUTTON TAP(0,1) THEN CX=PX+DX(PDIR) CY=PY+DY(PDIR) CH=CELL.C(CX,CY) IF CH=3 THEN PLAY 0,90,1 CELL CX,CY,1 INC POWER REFRESH=1 ELSE IF CH>=8 THEN PLAY 0,70,1 CELL CX,CY,1 INC RUNES REFRESH=1 END IF END IF IF REFRESH=1 THEN BG TINT 0,0 TO 19,15 PAL 0 IF PDIR=1 OR PDIR=3 THEN GOSUB VREFRESH ELSE GOSUB HREFRESH TINT PX,PY PAL 3 REFRESH=0 BG 0 PAL 4 TEXT 0,0," /5" NUMBER 0,0,POWER-1,1 PAL 4 TEXT 17,0," /5" NUMBER 17,0,RUNES,1 BG 1 END IF WAIT VBL LOOP VREFRESH: P=POWER S=DY(PDIR) FOR W=1 TO 3 WX=W-2 PP=1 PHIT=0 FOR Y=S TO S*P STEP S CH=CELL.C(PX+WX,PY+Y) IF CH=2 THEN PP=0 IF PHIT=0 THEN TINT PX+WX,PY+Y PAL 1 PHIT=1 ELSE IF CH=3 THEN IF PP>0 THEN TINT PX+WX,PY+Y PAL 2 ELSE IF CH>=8 THEN IF PP>0 THEN TINT PX+WX,PY+Y PAL 5 ELSE TINT PX+WX,PY+Y PAL PP END IF NEXT Y NEXT W RETURN HREFRESH: P=POWER S=DX(PDIR) FOR W=1 TO 3 WY=W-2 PP=1 PHIT=0 FOR X=S TO S*P STEP S CH=CELL.C(PX+X,PY+WY) IF CH=2 THEN PP=0 IF PHIT=0 THEN TINT PX+X,PY+WY PAL 1 PHIT=1 ELSE IF CH=3 THEN IF PP>0 THEN TINT PX+X,PY+WY PAL 2 ELSE IF CH>=8 THEN IF PP>0 THEN TINT PX+X,PY+WY PAL 5 ELSE TINT PX+X,PY+WY PAL PP END IF NEXT X NEXT W RETURN ' 'SUBS ' SUB PSHOW(I) IF I>0 THEN PDIR=I PAL 3 CELL PX,PY,CHR(PDIR) REFRESH=1 END SUB ' SUB DOORS(X,Y,A,B,C,D) IF A=1 THEN CALL DOOR(X,Y,1) IF B=1 THEN CALL DOOR(X,Y,2) IF C=1 THEN CALL DOOR(X,Y,3) IF D=1 THEN CALL DOOR(X,Y,4) END SUB ' SUB RNDWALL(X,Y,A,B,C,D) Z=0 WHILE Z=0 R=RND(3)+1 IF R=1 AND A=1 THEN Z=1 IF R=2 AND B=1 THEN Z=2 IF R=3 AND C=1 THEN Z=3 IF R=4 AND D=1 THEN Z=4 WEND CALL WALL(X,Y,Z) END SUB ' SUB WALL(X,Y,I) EX=0 EY=0 IF I=1 THEN EY=-1 ELSE IF I=2 THEN EX=1 ELSE IF I=3 THEN EY=1 ELSE IF I=4 THEN EX=-1 FOR I=0 TO 4 CELL X+EX*I,Y+EY*I,2 NEXT I END SUB ' SUB DOOR(X,Y,I) EX=0 EY=0 IF I=1 THEN EY=-1 ELSE IF I=2 THEN EX=1 ELSE IF I=3 THEN EY=1 ELSE IF I=4 THEN EX=-1 D=0 FOR I=0 TO 4 IF RND(2)=0 AND I<3 AND I>0 AND D=0 THEN D=1 ELSE IF I=3 AND D=0 THEN D=1 ELSE CELL X+EX*I,Y+EY*I,2 END IF NEXT I END SUB ' 'DATA FILES ' #1:MAIN PALETTES 00000000002014100028141000070212 0015150000090410003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 18C00630810C6003E73FF9CF7EF39FFC FFE7DBC3C3C3E7FFFFFFE7FFFFFFFFFF FFE7E5C3A7E799FFFFFDFFFFFFFFFFFF FFE7EFE3E7E799FFFFFFF7FDFFFFFFFF FFE7FF83E5E799FFFFFFE7FFBFFFFFFF FFE7F7C7E7E799FFFFFFEFBFFFFFFFFF FFFFC7839383C7FFFFFFFFFFEFFFFFFF FFFFC7938393C7FFFFFFFFEFFFEFFFFF FFFFC79383ABC7FFFFFFFFEFFFD7FFFF FFFFC793AB93C7FFFFFFFFEFD7EFFFFF FFFFC7A3D78BC7FFFFFFFFDFABF7FFFF