you're a bit off with the scaling and distance from ground, everything is a bit too much strectched.
try this edit of your code:
Rem Project: AdvTerrDemo
Rem Created: 29.04.2007 21:58:49
Rem ***** Main Source File *****
`movement variables
g_fSpeed# = 0.5
g_fTurn# = 0.3
`program init stuff
hide mouse
sync on : sync rate 60
backdrop on
autocam off
set camera range 0.5, 30000
`load the texturemap
load image "texturemap.bmp", 1
`load the detailed texture
load image "detail.tga", 2
`make the terrain object
make object terrain 1
`model it according to the heightmap
set terrain heightmap 1, "heightmap.bmp"
`set the scale of the terrain
set terrain scale 1, 50, 5, 50
`set split value (number of limbs for culling)
set terrain split 1, 8
`detail of the map tiling
set terrain tiling 1, 1
`set light
set terrain light 1, 0.6, 0.6, 0.6, 1.0, 1.0, 0.9, 0.9
`texture the terrain
set terrain texture 1, 1, 2
`build it!
build terrain 1
`position the camera
position camera 385, 23, 100
`main game loop
do
`stats and movement routines
gosub movement_routine
gosub stats
`get the height of the terrain at the current camera position
terrheight# = get terrain ground height(1, camera position x(), camera position z())
`position the camera slightly above the terrain
position camera camera position x(), terrheight# + 100, camera position z()
`let the terrain handle some internal work
update terrain
`final screen update
sync
loop
movement_routine:
`simple mouse and keyboard movement
`move around with arrow keys
control camera using arrowkeys 0, g_fSpeed#, g_fTurn#
`store old camera angle
OldCamAngleY# = CameraAngleY#
OldCamAngleX# = CameraAngleX#
`store new camera angle
CameraAngleY# = wrapvalue ( CameraAngleY# + mousemovez ( ) * 0.4 )
CameraAngleX# = wrapvalue ( CameraAngleX# + mousemovey ( ) * 0.4 )
`rotate camera
yrotate camera curveangle ( CameraAngleY#, OldCamAngleY#, 24 )
zrotate camera curveangle ( CameraAngleX#, OldCamAngleX#, 24 )
`speed up movement
if inkey$ ( ) = "+"
if g_fSpeed# < 1000
g_fSpeed# = g_fSpeed# + 0.01
endif
endif
`slow down movement
if inkey$ ( ) = "-"
if g_fSpeed# > 0.002
g_fSpeed# = g_fSpeed# - 0.001
endif
endif
return
stats:
`show some information
`start printing at top of screen
set cursor 0, 0
`show frame rate
print "fps = " + str$ ( screen fps ( ) )
print ""
`current camera position
print ""
print "x = " + str$ ( camera position x ( ) )
print "y = " + str$ ( camera position y ( ) )
print "z = " + str$ ( camera position z ( ) )
print ""
`finally the polygon count
print "polygon count = " + str$ ( statistic ( 1 ) )
print ""
return
delete memblock 1