GAMEPAD 1 DIM GLOBAL GETCHAR(7,7) DIM GLOBAL MAP(15,15) DIM GLOBAL FIELD(2,3) REM WAS8BIT GLOBAL COMPASS, PX, PY COMPASS=0 REM 0=N, 1=E, 2=S, 3=W DIM GLOBAL COMP$(3),XDIR(3),YDIR(3) COMP$(0)="NORTH" COMP$(1)="EAST " COMP$(2)="SOUTH" COMP$(3)="WEST " FOR I=0 TO 3 READ XDIR(I),YDIR(I) NEXT I DATA 0,-1,1,0,0,1,-1,0 REM DOTS=BULLETS REM PILL=MAGIC ZAPPER THAT FREEZES 1 GHOST REM BONUS=FOOD THAT RESTORES PLAYER, AND INC MAX POWER RANDOMIZE TIMER BG 1 REM WAS8BIT BG COPY 0,0,20,16 TO 0,0 DIM GLOBAL DOOR(7,4),XDOOR(7) FOR I=1 TO 7 READ XDOOR(I) FOR II=1 TO 4 READ DOOR(I,II) NEXT II NEXT I DATA 2,5,4,4,3 DATA 6,3,2,0,0 DATA 8,2,0,0,0 DATA 9,1,1,0,0 DATA 11,2,0,0,0 DATA 12,2,3,0,0 DATA 14,3,4,4,5 REM TOP MAP FOR IY=0 TO 1 FOR IX=0 TO 1 CHNUM=14+IX+IY*16 CALL READCHAR(CHNUM) FOR Y=0 TO 7 FOR X=0 TO 7 XX=X+IX*8 YY=Y+IY*8 MAP(XX,YY)=GETCHAR(X,Y) NEXT X NEXT Y NEXT IX NEXT IY REM BOTTOM MAP FOR IY=0 TO 1 FOR IX=0 TO 1 CHNUM=14+IX+IY*16+32 CALL READCHAR(CHNUM) FOR Y=0 TO 7 FOR X=0 TO 7 XX=X+IX*8 YY=Y+IY*8 M=GETCHAR(X,Y) IF M>0 THEN MAP(XX,YY)=M+3 NEXT X NEXT Y NEXT IX NEXT IY GLOBAL MMX,MMY,IDOTS MMX=9*8 MMY=13*8 PX=13 PY=8 SPRITE 0,MMX+13,MMY+8,49 SPRITE 0 PAL 3 SPRITE 1,MMX,MMY,14 SPRITE 1 SIZE 1 PAL 4 SPRITE 2,MMX,MMY,46 SPRITE 2 PAL 5 SIZE 1 BG 1 TEXT 9,12,"NN" TEXT 8,13,"W" TEXT 8,14,"W" TEXT 11,13,"E" TEXT 11,14,"E" TEXT 9,15,"SS" PAL 6 CELL 16,13,112 IDOTS=0 CALL DODOTS(0) CALL GETVIEW REM MAIN GAME LOOP DO IF BUTTON(0,0) THEN ITEM0=FIELD(1,0) IF ITEM0>0 THEN IF ITEM0=2 THEN PLAY 0,50,1 CALL DODOTS(1) MAP(PX,PY)=0 CALL GETVIEW END IF END IF END IF IF RIGHT(0) THEN ADD COMPASS,1,0 TO 3 CALL GETVIEW PLAY 0,90,1 WAIT 15 ELSE IF LEFT(0) THEN ADD COMPASS,-1,0 TO 3 CALL GETVIEW PLAY 0,90,1 WAIT 15 END IF IF UP(0) THEN CHECK=FIELD(1,1) IF CHECK=0 OR CHECK>1 THEN PLAY 0,70,1 DX=PX+XDIR(COMPASS) DY=PY+YDIR(COMPASS) IF DX>=0 AND DX<=15 AND DY>=0 AND DY<=15 THEN PX=DX PY=DY SPRITE 0,MMX+PX,MMY+PY, CALL GETVIEW END IF WAIT 15 ELSE IF CHECK=-1 THEN FOR S=50 TO 80 STEP 5 PLAY 0,S,1 WAIT VBL NEXT S IF PX=15 THEN PX=0 ELSE IF PX=0 THEN PX=15 IF PY=15 THEN PY=0 ELSE IF PY=0 THEN PY=15 SPRITE 0,MMX+PX,MMY+PY, CALL GETVIEW ELSE PLAY 0,20,1 END IF END IF WAIT VBL LOOP REM GAME SUBS SUB DODOTS(I) IDOTS=IDOTS+I PAL 3 NUMBER 17,13,IDOTS,3 END SUB SUB GETVIEW BG 1 BG FILL 0,12 TO 3,15 CHAR 0 PAL 3 TEXT 7,0,COMP$(COMPASS) IF COMPASS=0 THEN FOR IY=0 TO 3 YY=PY-IY FOR IX=0 TO 2 XX=PX+IX-1 CALL READMAP(XX,YY,FIELD(IX,IY)) TEXT IX,15-IY,STR$(FIELD(IX,IY)) NEXT IX NEXT IY ELSE IF COMPASS=1 THEN FOR IY=0 TO 3 XX=PX+IY FOR IX=0 TO 2 YY=PY+IX-1 CALL READMAP(XX,YY,FIELD(IX,IY)) TEXT IX,15-IY,STR$(FIELD(IX,IY)) NEXT IX NEXT IY ELSE IF COMPASS=2 THEN FOR IY=0 TO 3 YY=PY+IY FOR IX=0 TO 2 XX=PX-IX+1 CALL READMAP(XX,YY,FIELD(IX,IY)) TEXT IX,15-IY,STR$(FIELD(IX,IY)) NEXT IX NEXT IY ELSE IF COMPASS=3 THEN FOR IY=0 TO 3 XX=PX-IY FOR IX=0 TO 2 YY=PY-IX+1 CALL READMAP(XX,YY,FIELD(IX,IY)) TEXT IX,15-IY,STR$(FIELD(IX,IY)) NEXT IX NEXT IY END IF ITEM0=FIELD(1,0) ITEM1=FIELD(1,1) ITEM2=FIELD(1,2) CALL ADDITEM(ITEM2,2) CALL ADDITEM(ITEM1,1) CALL ADDITEM(ITEM0,0) CALL ADDWALL(0) CALL DODOOR(1,FIELD(0,0)) CALL DODOOR(2,FIELD(0,1)) CALL DODOOR(3,FIELD(0,2)) CALL DODOOR(4,FIELD(1,3)) CALL DODOOR(5,FIELD(2,2)) CALL DODOOR(6,FIELD(2,1)) CALL DODOOR(7,FIELD(2,0)) IF FIELD(1,2)=1 THEN CALL ADDWALL(2) IF FIELD(1,2)=-1 THEN CALL ADDWALL(-2) IF FIELD(1,1)=1 THEN CALL ADDWALL(1) IF FIELD(1,1)=-1 THEN CALL ADDWALL(-1) END SUB SUB READMAP(X,Y,R) R=-1 IF X>=0 AND Y>=0 AND X<=15 AND Y<=15 THEN R=MAP(X,Y) END IF IF R=4 THEN R=1 END SUB REM MICRO DATA SUBS SUB READCHAR(ICHAR) SELCHAR=ICHAR AD=$8000+SELCHAR*16 FOR PY=0 TO 7 FOR PX=0 TO 7 BV=2^(7-PX) PV=0 IF PEEK(AD) AND BV THEN PV=1 IF PEEK(AD+8) AND BV THEN PV=PV+2 GETCHAR(PX,PY)=PV NEXT PX AD=AD+1 NEXT PY END SUB SUB WRITECHAR(ICHAR) SELCHAR=ICHAR AD=$8000+SELCHAR*16 FOR BI=1 TO 2 FOR PY=0 TO 7 V=0 FOR PX=0 TO 7 BV=2^(7-PX) IF GETCHAR(PX,PY) AND BI THEN V=V OR BV NEXT PX TRACE " ",V WAIT 1 POKE AD,V AD=AD+1 NEXT PY NEXT BI END SUB REM 3D SUBS SUB DODOOR(IDOOR,SET) IF SET=-1 THEN SET=0 IF SET>1 THEN SET=0 BG 1 X=XDOOR(IDOOR) FOR I=1 TO 4 II=I-1 D=DOOR(IDOOR,I)-1 BG TINT X+II,5-D TO X+II,6+D PAL SET NEXT I END SUB SUB ADDITEM(I,D) IF D=2 THEN CELL 9,7,0 CELL 10,7,0 IF I=2 THEN PAL 6 CELL 9,7,64 CELL 10,7,65 END IF ELSE IF D=1 THEN CELL 9,8,0 CELL 10,8,0 IF I=2 THEN PAL 6 CELL 9,8,80 CELL 10,8,81 END IF ELSE IF D=0 THEN CELL 9,10,0 CELL 10,10,0 IF I=2 THEN PAL 6 CELL 9,10,96 CELL 10,10,97 END IF END IF END SUB SUB ADDWALL(IWALL) BG 0 PAL 1 IF IWALL<0 THEN IWALL=ABS(IWALL) PAL 2 END IF BG FILL 6,3 TO 13,8 CHAR 0 IF IWALL=2 THEN BG FILL 8,4 TO 11,4 CHAR 16 BG FILL 8,5 TO 11,6 CHAR 32 BG FILL 8,7 TO 11,7 CHAR 48 END IF IF IWALL=1 THEN BG FILL 6,3 TO 13,3 CHAR 16 BG FILL 6,4 TO 13,7 CHAR 32 BG FILL 6,8 TO 13,8 CHAR 48 END IF END SUB #1:MAIN PALETTES 00030300000B070700300C3F003F3F00 1007280F00203708003C2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000C0F07CAF0000000000C0F0FC C0F07CAF57AA55AA00C0F0FCFFFFFFFF FFAAD5AAD5AAD5AAFFFFFFFFFFFFFFFF FFAB55AB55AB55ABFFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFC1BDA0ABA88BEA0054004A14421400 7F435D05D515D157002A00AA00AA0428 00000000FFFFFFFF0000000000FFFFFF D5AAD5AAD5AAD5AAFFFFFFFFFFFFFFFF 55AA55AA55AA55AAFFFFFFFFFFFFFFFF D5AAD5AAD5AAD5FFFFFFFFFFFFFFFFFF 55AB55AB55AB55FFFFFFFFFFFFFFFFFF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0AEB88ABA0BDC1FF1400550055025400 40D711D5055D437F1028422852002A00 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 5FBCF0C000000000FCF0C00000000000 55AA55AB5FBCF0C0FFFFFFFFFCF0C000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000001020000001000000001 00000000000080400000000008000080 FFFFFFFF00000000FFFFFF0000000000 80000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 02010000000000000100001000000000 6080000000000000A000000008000000 00000307070300000000000000000000 0000C0E0E0C000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00070F1F1F0F07000000000000000000 00E0F0F8F8F0E0000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0F3F7FFFFF7F3F0F0000000000000000 F0FCFEFFFFFEFCF00000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3C7EFFFFFFFF7E3C0000000000000000 #3:MAIN BG 00001410000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 01000000000000000000000000000000 00000000000000000000000000000108 00000000000000001100020001000000 00000000000000000000000000000000 00000108020811080000000000000000 11001200120002000100000000000000 00000000000001080208120812081108 00000000000000001100120012001200 11000200010000000000010802081108 12081208120811080000000000000000 11001200120012001100120011000300 04001108120811081208120812081108 00000000000000001100120012001200 11001200110013001400110812081108 12081208120811080000000000000000 11001200120012001100220021000000 00002108220811081208120812081108 00000000000000001100120012002200 21000000000000000000000000002108 22081208120811080000000000000000 11002200210000010000000000000000 00000000000000000001210822081108 00000000000000002100000000000000 00000000000000000000000000000000 00000000000021080000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000