Don't know why you are so hesitant to go with hex tiles. I use hex tiles and have made maps that are 1000 x 1000 hexes in size, with no loss of performance.
My hex tiles are 64X64 with the point at the top.
/\
||
\/
You need a few key functions.
TilePlotter(x,y) function:
[/code]
function TilePlotter(x,y)
ptMap.x = x*gTileWidth+(y and 1)*gTileWidth/2
ptMap.y = y*gHexRowHeight
`gHexRowHeight is a global set to 3/4 of the tile height
endfunction
ShowMapPanel() function:
function ShowMapPanel()
`set current bitmap MainDrawBitmap(0)
ink rgb(0,0,50),0
box MapPanel.left,MapPanel.top,MapPanel.right,MapPanel.bottom
` above used to clear with color the map panel
for index = 0 to gNumLayers
for mapy = 0 to gMapHeight
for mapx = 0 to gMapWidth
TilePlotter(mapx,mapy)
if TileMap(mapx,mapy,index) <> gBlank
if (ptMap.x+(MapPanel.left+gScrollX)) =< MapPanel.right and (ptMap.x+(MapPanel.left+gScrollX)) >= MapPanel.left
if (ptMap.y+(MapPanel.top+gScrollY)) =< MapPanel.bottom and (ptMap.y+(MapPanel.top+gScrollY)) >= MapPanel.top
paste image TileMap(mapx,mapy,index),ptMap.x+(MapPanel.left+gScrollX),ptMap.y+(MapPanel.top+gScrollY),1
endif
endif
endif
next mapx
next mapy
next index
`**********************Scroll Map Panel************************************************
if leftkey() = 1 and gScrollX > (((gMapWidth*gTileWidth)-screen width())*-1)
dec gScrollX,gTileWidth
endif
if rightkey()=1 and gScrollX < 0
inc gScrollX,gTileWidth
endif
if upkey() = 1 and gScrollY > (((gMapHeight*gHexRowHeight)-screen height())*-1)
dec gScrollY,(gHexRowHeight*2)
endif
if downkey()=1 and gScrollY < 0
inc gScrollY,(gHexRowHeight*2)
endif
endfunction
[code]
Hope this helps. I cannot go into as much depth as needed, because I'm at work.