this is a file format exported from "tiled" editor
there must be exactly 3 standard layers: object, collision and background
you can expand this easy ...
cheers
// ------------------------------------------------------------- //
// --- TFlareFile ---
// ------------------------------------------------------------- //
TYPE TFlareFile
backgroundLayer%[]
collisionLayer%[]
objectLayer%[]
width%
height%
FUNCTION Load: filename$
LOCAL chn% = GENFILE()
LOCAL buffer$
IF OPENFILE(chn, filename$, 1) = FALSE THEN END
READLINE chn, buffer$
READLINE chn, buffer$
buffer$ = LTRIM$ (buffer$,"width=")
self.width = INTEGER(buffer$)
READLINE chn, buffer$
buffer$ = LTRIM$ (buffer$,"height=")
self.height = INTEGER(buffer$)
DIM self.backgroundLayer[self.width][self.height]
DIM self.collisionLayer[self.width][self.height]
DIM self.objectLayer[self.width][self.height]
LOCAL x%
READLINE chn, buffer$
READLINE chn, buffer$
READLINE chn, buffer$
READLINE chn, buffer$
FOR y = 0 TO self.height-1
x=0
buffer$ = self.zReadLine$(chn)
LOCAL tiles$[]
SPLITSTR (buffer$, tiles$[], ",")
FOREACH tile IN tiles$[]
self.backgroundLayer[x][y] = INTEGER (tile)
INC x
NEXT
NEXT
READLINE chn, buffer$
READLINE chn, buffer$
READLINE chn, buffer$
READLINE chn, buffer$
FOR y = 0 TO self.height-1
x=0
buffer$ = zReadLine$(chn)
LOCAL tiles$[]
SPLITSTR (buffer$, tiles$[], ",")
FOREACH tile IN tiles$[]
self.collisionLayer[x][y] = INTEGER (tile)
INC x
NEXT
NEXT
READLINE chn, buffer$
READLINE chn, buffer$
READLINE chn, buffer$
READLINE chn, buffer$
FOR y = 0 TO self.height-1
x=0
buffer$ = self.zReadLine$(chn)
LOCAL tiles$[]
SPLITSTR (buffer$, tiles$[], ",")
FOREACH tile IN tiles$[]
self.objectLayer[x][y] = INTEGER (tile)
INC x
NEXT
NEXT
CLOSEFILE chn
ENDFUNCTION
FUNCTION zReadLine$: chn
LOCAL chda$, L$=""
REPEAT
IF ENDOFFILE(chn) THEN BREAK
READSTR chn, chda$, 1
L$=L$+chda$
UNTIL ASC(chda$)=10
L$=TRIM$(L$)
RETURN L$
ENDFUNCTION
ENDTYPE
Good going.