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 6 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,12,112 CELL 16,13,114 CELL 16,14,116 IDOTS=0 CALL DODOTS(0) CALL GETVIEW FLASHCHAR=50 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 CHX=PX MOD 8 CHY=PY MOD 8 IF PX>7 AND PY>7 THEN CH=31 IF PX<8 AND PY<8 THEN CH=14 IF PX>7 AND PY<8 THEN CH=15 IF PX<7 AND PY>8 THEN CH=30 CALL READCHAR(CH) GETCHAR(CHX,CHY)=0 CALL WRITECHAR(CH) 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 IFLASH=(IFLASH+1) MOD 15 IF IFLASH=0 THEN ADD FLASHCHAR,1,50 TO 51 COPY $8000+(16*FLASHCHAR),16 TO $8000+(16*49) END IF WAIT VBL LOOP REM GAME SUBS SUB DODOTS(I) IDOTS=IDOTS+I PAL 3 NUMBER 17,12,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 IPY=0 TO 7 FOR IPX=0 TO 7 BV=2^(7-IPX) PV=0 IF PEEK(AD) AND BV THEN PV=1 IF PEEK(AD+8) AND BV THEN PV=PV+2 GETCHAR(IPX,IPY)=PV NEXT IPX AD=AD+1 NEXT IPY END SUB SUB WRITECHAR(ICHAR) SELCHAR=ICHAR AD=$8000+SELCHAR*16 FOR BI=1 TO 2 FOR IPY=0 TO 7 V=0 FOR IPX=0 TO 7 BV=2^(7-IPX) IF GETCHAR(IPX,IPY) AND BI THEN V=V OR BV NEXT IPX TRACE " ",V WAIT 1 POKE AD,V AD=AD+1 NEXT IPY 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 1007280F00203708003C0F30003F2A15 #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 80000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 02010000000000000100001000000000 6080000000000000A000000008000000 00000307070300000000000000000000 0000C0E0E0C000000000000000000000 00000000000000000008030707030800 00000000000000000010C0E0E0C01000 00000103030300000000010303030000 000080C0C0C00000000080C0C0C00000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00070F1F1F0F07000000000000000000 00E0F0F8F8F0E0000000000000000000 000000000000000010270C1B1B0C2710 000000000000000008E430D8D830E408 0003070D0F0F0F000003070D0F0F0F00 00C0E0B0F0F0F00000C0E0B0F0F0F000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0F3F7FFFFF7F3F0F0000000000000000 F0FCFEFFFFFEFCF00000000000000000 0000000000000000479C3B37373B9C47 0000000000000000E239DCECECDC39E2 071F37373C3C3F2A071F37373C3C3F2A E0F8DCDC7C7CFCD4E0F8DCDC7C7CFCD4 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 3C7EFFFFFFFF7E3C0000000000000000 00000000000000000000000000000000 00000000000000004299245A5A249942 00000000000000000000000000000000 3C7EDBFFE7FFFFAB3C7EDBFFE7FFFFAB #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