Там проблема не readmap, а в "квалификации" программиста.
Во-первых, двумерный массив заполняется по строкам, а не по столбцам:
For i = 0 to m
For j = o to n
matrix(i, j) = ... ; не matrix(j, i)
Next
Next
Во-вторых,
нельзя в качестве индексов массива использовать вещественные переменные.
В-третьих, если работаешь не в Паскале, начинай нумерацию массивов с нуля. Из твоего же кода:
For z = 1 To gridz
For x = 1 To gridx
map(x,z)\brush=CreateBrush() ; неверный порядок индексов
;...
Next
Next
;...
For z#=0 To tilez-1
u=0
For x#=0 To tilex-1
h1#=map(x,z)\y
;...
Next
Next
;А это вообще ужас
Когда поправишь код, тогда можно начинать анализировать ошибки в readmap.