I've never used matedit, or whatever it is, so I remmed out that code and replaced it with a normal matrix - and as you can see, it appears to work fine:
`--------
`INCLUDES
`--------
`include the MatEdit LoadMatrix files
`#include "LoadMatrix.dba"
`------
`ARRAYS
`------
`declare the MatEdit variables
Dim BigMatrix(600,600,1)
Dim StartLoc_X(1): Dim StartLoc_Z(1):Dim Info(2)
Dim TArrayX(1): Dim TArrayZ(1): Dim FKey(10,1)
Dim ColData(100): Dim ZoneData(100): Dim Tiles(500,500)
Dim OverTexture$(100): Dim OverName$(20): Dim ReplaceTex(100)
Dim MOffsetX(25): Dim MOffsetY(25)
Dim MWire(20): Dim MGhost(20): Dim Lock(20)
Dim MatX#(20): Dim MatY#(20): Dim MatZ#(20)
Dim MatWidth#(20): Dim MatHeight#(20)
Dim TilesX(20): Dim TilesZ(20)
Dim MatHi#(20): Dim MatLo#(20)
`----------------------------------
`Initialize Arena Scaling Variables
`----------------------------------
ArenaXYZ_SF = 15000
LightXZ_SF# = .46
LightY_SF# = .55
dim xSpeed#(4)
dim ySpeed#(4)
dim zSpeed#(4)
dim friction#(4)
dim moveDist#(4)
dim gravity#(0) :gravity#(0)= 0.1
`set up the program
sync on
sync rate 40
hide mouse
autocam off
`load the matrix
`LoadMatrix("map",1)
`temporary load level info
`load object "media/arena.x",100
`load object "media/arena_light.x",101
`scale the arena
`scale object 100, ArenaXYZ_SF, ArenaXYZ_SF, ArenaXYZ_SF
`scale object 101, ArenaXYZ_SF*LightXZ_SF#, ArenaXYZ_SF*LightY_SF#, ArenaXYZ_SF*LightXZ_SF#
`position arena
`position object 100,247,188,247
`position object 101,247,188,247
`add mip-mapping
make matrix 1,20,20,20,20
`set matrix texture 1,2,1
`set object texture 100,0,1
`set object texture 101,2,1
`set fake light properties
`set object 101,1,1,0,1,0,0,1
`ghost object on 101
`set fog properties
`fog on
`fog distance 2000
`fog color RGB(128,0,0)
`set amobient light amount
`set ambient light 10
`colour main light
`color light 0,RGB(0,0,160)
`make a light
`make light 1
`set point light 1,250,200,250
`color light 1,RGB(255,255,100)
`--------------
`Player loading
`---------------
make object cube 1,1
position object 1,10,1,10
friction#(1)= 0.97
moveDist#(1)= 0.065
xSpeed#(1)= 0
zSpeed#(1)= 0
`---------
`MAIN LOOP
`---------
main:
do
yAng#=object angle y(1)
`the following is temporary. There will be more but it will made later
`get keyboard input for movement
if upkey()=1 then forward= 1 else forward= 0
if downkey()=1 then backward= 1 else backward= 0
if leftkey()=1 then left= 1 else left= 0
if rightkey()=1 then right= 1 else right= 0
`update the player
move_player(1,forward,backward,left,right)
`update chase camera
chase_cam(1)
`update the screen
sync
loop
`--------------
`FUNCTIONS
`--------------
`---------
`chase cam
`---------
function chase_cam(id)
`work out the angle of the object being chased
`180 so camera faces back
yAng#= wrapvalue(object angle y(id)+180)
`grab the current positons of the object being chased
xPos#= object position x(id)
ypos#= object position y(id)
zPos#= object position z(id)
camDist= 15
camHeight= 3
`work out the chase cam positions
xCamPos#= newxvalue(xPos#,yAng#,camDist)
zCamPos#= newzvalue(zPos#,yAng#,camDist)
`work out camera height
yCamPos#= get ground height(1,xCamPos#,zCampos#)+camHeight
if yCamPos#<ypos# + camHeight then yCamPos# = ypos# + camHeight
`update camera position
position camera xCamPos#,yCamPos#,zCamPos#
point camera xPos#,ypos# + camHeight,zPos#
endfunction
`-----------
`move player
`-----------
function move_player(id, forward, backward, left, right)
`grab object properties
xPos#= object position x(id)
yPos#= object position y(id)
zPos#= object position z(id)
yAng#= object angle y(id)
`apply forward movement
if forward= 1
xSpeed#(id)= xSpeed#(id) + newxvalue(0,yAng#,moveDist#(id))
zSpeed#(id)= zSpeed#(id) + newzvalue(0,yAng#,moveDist#(id))
endif
`apply backward movement
if backward= 1
xSpeed#(id)= xSpeed#(id) + newxvalue(0,yAng#,moveDist#(id)*-1)
zSpeed#(id)= zSpeed#(id) + newzvalue(0,yAng#,moveDist#(id)*-1)
endif
`apply left rotation
if left= 1
yrotate object id, wrapvalue(yAng#-4)
endif
`apply right rotation
if right= 1
yrotate object id, wrapvalue(yAng#+4)
endif
`---------------------------------------------------
`sort out friction and other physiscs related things
`----------------------------------------------------
`work out value with friction
xSpeed#(id)= xSpeed#(id) * friction#(id)
zSpeed#(id)= zSpeed#(id) * friction#(id)
`add gravity value
ySpeed#(id)= ySpeed#(id) + gravity#(0)
`work out the new position
xPos#= xPos# + xSpeed#(id)
zPos#= zPos# + zSpeed#(id)
yPos#= ypos# - ySpeed#(id)
`work out height of player
if yPos#< get ground height(1,xPos#,zPos#)
ySpeed#(id)= ySpeed#(id) + (yPos#-get ground height(1,xPos#,zPos#))
yPos#= get ground height(1,xPos#,zPos#)
endif
`reposition the player
position object id, xPos#, yPos#, zPos#
`debug code - show the position of the player
text 5,5, "X Position = " + str$(xPos#)
text 5,25, "Y Position = " + str$(yPos#)
text 5,45, "Z Position = " + str$(zPos#)
text 5,65, "FPS Rate = " + str$(screen fps())
endfunction
Perhaps, then, it's something to do with your loaded matrix.