ill paste it all.
Code:
DECLARE SUB loadsprites ()
DECLARE SUB tileassign ()
DECLARE SUB movement ()
DECLARE SUB redrawmap1 ()
DECLARE SUB map2load ()
DIM SHARED grass(16, 16), wall(16, 16), water(16, 16), portal(16, 16)
DIM SHARED guy(16, 16), guymask(16, 16)
DIM SHARED enemy(16, 16), enemymask(16, 16)
DIM SHARED map1(20, 12)
DIM SHARED map2(20, 12)
SCREEN 13
guyx = 4
guyy = 5
erow% = 4
ecol% = 6
CALL loadsprites
CALL tileassign
DO
a$ = INKEY$
CALL movement
IF map1(guyx, guyy) = 4 THEN CALL map2load
CALL redrawmap1
LOOP UNTIL a$ = "q"
IF a$ = "q" THEN END
'grass
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,10,02,02,02,02,02,10,02,02,02,02,10,02,02
DATA 02,02,02,10,02,02,02,10,10,02,02,02,10,02,02,02
DATA 02,02,02,10,02,10,02,10,10,02,02,10,02,02,02,02
DATA 10,02,02,02,10,10,02,10,02,02,10,10,02,02,02,02
DATA 02,10,02,02,10,10,02,02,02,02,02,10,02,02,02,02
DATA 02,10,02,02,02,02,02,02,02,10,02,02,02,02,10,02
DATA 02,02,10,02,02,02,02,02,10,10,02,02,02,10,02,02
DATA 02,10,02,02,02,02,10,02,02,02,02,02,02,10,02,02
DATA 02,10,10,10,02,10,10,02,02,02,02,02,10,02,02,02
DATA 02,02,10,10,02,02,02,10,02,02,02,02,02,02,02,02
DATA 02,02,02,02,02,02,02,02,10,02,02,02,02,02,10,02
DATA 10,02,02,02,02,02,02,02,02,02,02,02,02,10,02,02
DATA 02,10,10,02,02,02,02,02,02,02,02,02,02,02,02,02
DATA 02,02,10,02,02,02,02,02,02,02,02,02,02,02,02,02
'wall
DATA 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,07,07,07,07,07,07,07,07,07,07,07,07,08,07
DATA 07,08,08,08,08,08,08,08,08,08,08,08,08,08,08,07
DATA 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07
'water
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,09,01,01,09,01,01,09,01,01,01,01,01,01,01,01
DATA 01,01,09,09,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,09,01,01,01,09,01,01
DATA 01,01,01,01,01,01,01,01,01,01,09,09,09,01,01,01
DATA 01,01,01,01,09,01,09,01,09,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,09,01,01,01,01,01,01,01,01
DATA 09,01,01,01,01,01,01,01,01,01,01,01,01,09,01,01
DATA 01,01,01,01,01,01,01,01,09,01,01,09,01,01,01,01
DATA 01,01,01,09,01,01,01,01,01,09,09,01,01,01,01,01
DATA 01,01,01,01,09,09,09,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
'portal
DATA 00,00,00,00,01,01,01,01,01,01,01,01,00,00,00,00
DATA 00,00,00,01,00,00,00,00,00,00,00,00,01,00,00,00
DATA 00,00,00,01,00,00,01,01,01,01,00,00,01,00,00,00
DATA 00,00,01,00,00,01,00,00,00,00,01,00,00,01,00,00
DATA 00,00,01,00,00,01,00,01,01,00,01,00,00,01,00,00
DATA 00,01,00,00,01,00,01,00,01,00,00,01,00,00,01,00
DATA 00,01,00,00,01,00,01,00,00,01,00,01,00,00,01,00
DATA 00,01,00,01,00,01,00,00,00,01,00,00,01,00,01,00
DATA 00,01,00,01,00,01,00,01,00,00,01,00,01,00,01,00
DATA 00,01,00,01,00,00,01,00,01,00,01,00,01,00,01,00
DATA 00,01,00,00,01,00,01,00,01,00,01,00,01,00,01,00
DATA 00,00,01,00,01,00,00,01,00,01,00,01,00,00,01,00
DATA 00,00,01,00,00,01,00,00,00,01,00,01,00,01,00,00
DATA 00,00,00,01,00,01,01,01,01,00,01,00,00,01,00,00
DATA 00,00,00,01,00,00,00,00,00,00,01,00,01,00,00,00
DATA 00,00,00,00,01,01,01,01,01,01,00,00,00,00,00,00
'guy
DATA 0,0,0,5,5,5,5,5,5,5,5,5,5,5,0,0
DATA 0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,0
DATA 0,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5
DATA 0,5,5,6,6,6,6,5,5,5,5,6,5,0,5,5
DATA 0,0,5,6,6,0,6,6,6,0,6,6,5,5,0,0
DATA 0,0,0,6,6,0,6,6,6,0,6,6,0,0,0,0
DATA 0,0,0,0,6,6,6,6,6,6,6,0,0,0,0,0
DATA 0,0,4,4,4,6,6,6,6,6,4,6,0,0,0,0
DATA 0,4,4,4,4,4,4,4,4,4,4,6,6,0,0,0
DATA 6,6,6,4,4,4,4,4,4,4,6,6,6,6,0,0
DATA 6,6,6,0,4,4,4,4,4,4,6,6,6,6,0,0
DATA 6,6,6,0,1,4,4,4,4,4,4,6,6,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0
DATA 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0
DATA 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
'guymask
DATA 255,255,255,5,5,5,5,5,5,5,5,5,5,5,255,255
DATA 255,255,5,5,5,5,5,5,5,5,5,5,5,5,5,255
DATA 255,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5
DATA 255,5,5,6,6,6,6,5,5,5,5,6,5,255,5,5
DATA 255,255,5,6,6,0,6,6,6,0,6,6,5,5,255,255
DATA 255,255,255,6,6,0,6,6,6,0,6,6,255,255,255,255
DATA 255,255,255,255,6,6,6,6,6,6,6,255,255,255,255,255
DATA 255,255,4,4,4,6,6,6,6,6,4,6,255,255,255,255
DATA 255,4,4,4,4,4,4,4,4,4,4,6,6,255,255,255
DATA 6,6,6,4,4,4,4,4,4,4,6,6,6,6,255,255
DATA 6,6,6,255,4,4,4,4,4,4,6,6,6,6,255,255
DATA 6,6,6,255,1,4,4,4,4,4,4,6,6,255,255,255
DATA 255,255,255,255,1,1,1,1,1,1,1,1,1,255,255,255
DATA 255,255,255,255,1,1,1,1,1,1,1,1,255,255,255,255
DATA 255,255,255,255,255,1,1,1,1,255,255,255,255,255,255,255
DATA 255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255
'enemy
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,8,8,8,0,0,0,0,0,0
DATA 0,0,0,0,0,0,8,0,0,0,8,0,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,4,0,4,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,0,8,0,0,0,0,0,8,0,0,0,0
DATA 0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0
DATA 0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0
DATA 0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0
DATA 0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0
DATA 0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0
DATA 0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0
DATA 0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8
'enemy mask
DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
DATA 255,255,255,255,255,255,255,8,8,8,255,255,255,255,255,255
DATA 255,255,255,255,255,255,8,0,0,0,8,255,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,4,0,4,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,255,8,0,0,0,0,0,8,255,255,255,255
DATA 255,255,255,255,8,0,0,0,0,0,0,0,8,255,255,255
DATA 255,255,255,255,8,0,0,0,0,0,0,0,8,255,255,255
DATA 255,255,255,255,8,0,0,0,0,0,0,0,8,255,255,255
DATA 255,255,255,8,0,0,0,0,0,0,0,0,0,8,255,255
DATA 255,255,255,8,0,0,0,0,0,0,0,0,0,8,255,255
DATA 255,255,8,0,0,0,0,0,0,0,0,0,0,0,8,255
DATA 255,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8
'map1
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA 2,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,1,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,1,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,1,1,1,1,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,2,2,1,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,3,2,1,3,1,1,1,4,1,2
DATA 2,1,1,1,1,1,1,3,3,2,3,2,1,1,1,2,2,2,2,2
DATA 2,1,1,1,1,1,1,3,3,2,3,3,2,2,2,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,3,3,3,3,3,3,3,3,3,2
DATA 2,1,1,1,1,1,1,3,3,2,3,3,3,3,3,3,3,3,3,2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
'map2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA 2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,2
DATA 2,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,3,3,2,3,1,1,1,2,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,3,3,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1
DATA 2,2,3,3,2,1,1,1,2,2,2,2,1,1,1,1,1,1,1,2
DATA 2,1,2,2,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,1,1,1,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2
DATA 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
SUB loadsprites
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), grass
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), wall
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), water
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), portal
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guy
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guymask
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemy
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemymask
FOR y = 1 TO 12
FOR x = 1 TO 20
READ map1(x, y)
NEXT x: NEXT y
FOR y = 1 TO 12
FOR x = 1 TO 20
READ map2(x, y)
RESTORE
NEXT x: NEXT y
END SUB
SUB map2load
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), grass
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), wall
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), water
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), portal
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guy
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), guymask
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemy
FOR y = 1 TO 16
FOR x = 1 TO 16
READ pixel
PSET (x, y), pixel
NEXT x: NEXT y
GET (1, 1)-(16, 16), enemymask
FOR y = 1 TO 12
FOR x = 1 TO 20
READ map1(x, y)
NEXT x: NEXT y
FOR y = 1 TO 12
FOR x = 1 TO 20
READ map2(x, y)
RESTORE
NEXT x: NEXT y
CLS
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map2(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map2(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map2(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map2(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y
PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR
DO
a$ = INKEY$
IF a$ = "w" AND map2(guyx, guyy - 1) <> 2 THEN
IF map2(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF
IF a$ = "s" AND map2(guyx, guyy + 1) <> 2 THEN
IF map2(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF
IF a$ = "a" AND map2(guyx - 1, guyy) <> 2 THEN
IF map2(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF
IF a$ = "d" AND map2(guyx + 1, guyy) <> 2 THEN
IF map2(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF
IF map2(guyx, guyy) = 4 THEN END
IF oldguyx <> guyx OR oldguyy <> guyy THEN
oldguyy = guyy
oldguyx = guyx
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map2(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map2(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map2(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map2(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y
PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR
END IF
LOOP UNTIL a$ = "q"
END SUB
SUB movement
IF a$ = "w" AND map1(guyx, guyy - 1) <> 2 THEN
IF map1(guyx, guyy - 1) <> 3 THEN
guyy = guyy - 1
END IF
END IF
IF a$ = "s" AND map1(guyx, guyy + 1) <> 2 THEN
IF map1(guyx, guyy + 1) <> 3 THEN
guyy = guyy + 1
END IF
END IF
IF a$ = "a" AND map1(guyx - 1, guyy) <> 2 THEN
IF map1(guyx - 1, guyy) <> 3 THEN
guyx = guyx - 1
END IF
END IF
IF a$ = "d" AND map1(guyx + 1, guyy) <> 2 THEN
IF map1(guyx + 1, guyy) <> 3 THEN
guyx = guyx + 1
END IF
END IF
IF oldguyx <> guyx OR oldguyy <> guyy THEN
oldguyy = guyy
oldguyx = guyx
END IF
END SUB
SUB redrawmap1
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y
PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR
END SUB
SUB tileassign
FOR y = 1 TO 12
FOR x = 1 TO 20
IF map1(x, y) = 1 THEN PUT (x * 16 - 16, y * 16 - 16), grass, PSET
IF map1(x, y) = 2 THEN PUT (x * 16 - 16, y * 16 - 16), wall, PSET
IF map1(x, y) = 3 THEN PUT (x * 16 - 16, y * 16 - 16), water, PSET
IF map1(x, y) = 4 THEN PUT (x * 16 - 16, y * 16 - 16), portal, PSET
NEXT x: NEXT y
'PUT (guyx * 16 - 16, guyy * 16 - 16), guymask, AND
'PUT (guyx * 16 - 16, guyy * 16 - 16), guy, OR
'PUT (erow% * 16 - 16, ecol% * 16 - 16), enemymask, AND
'PUT (erow% * 16 - 16, ecol% * 16 - 16), enemy, AND
END SUB
there it all is.