well, i suggest using 16x16 tiles...
Here is how it should generally go..
Code:
DIM Tileset(NumberofTiles, ((16*16)\2)+1) AS INTEGER
DIM Map(15, 15) AS INTEGER
FOR mpx% = 0 to 15
FOR mpy% = 0 to 15
READ tileindex%
Map(mpx%, mpy%) = tileindex%
NEXT mpy%, mpx%
DO
'This code needs to be modified to accept correct keyboard handling
IF keyboard = UP THEN
MapShowY = MapShowY - 1
If MapShowY < 1 THEN MapShowY = 1
END IF
IF keyboard = DOWN THEN
MapShowY = MapShowY + 1
If MapShowY > 15 THEN MapShowY = (15 - NotilesVertically)
END IF
IF keyboard = LEFT THEN
MapShowX = MapShowX - 1
If MapShowX < 1 THEN MapShowX = 1
END IF
IF keyboard = Right THEN
MapShowX = MapShowX + 1
If MapShowX < 1 THEN MapShowX = (15 - NotilesHorizontally)
END IF
FOR Smx% = MapShowX to MapShowX + NoTilesHorizontally
FOR Smy% = MapShowY to MapShowY + NoTilesVertically
PUT ((Smx% - MapShowX) + 1, (Smy% - MapShowY) + 1), Tileset(Map(Smx%, Smy%), 0), PSET
NEXT Smy%, Smx%
Loop until Keyboard = ESC
END
MapStuff:
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
DATA 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00