Ok, Ok...
I've decided to go back to basics, Bellow is my base engine that I'll be using for my terrain project.
Currently...

Application automaticaly sets its resoulution and aspect from the desktop to the closest supported by the hardware.

Camera movement using standard cursor keys,[W][A][S][D] and the mouse.

Application just displays a flat matrix 64x64. Which, as the camera moves, auto centers every set distance Size/Segment. This will allow movement in X&Z direction limited only by the extents of a float value while keeping the matrix size low.
To do list...

Limit the camera X rotation.

Generate the procedural terrain heightmap in realtime.

Set normals for the matrix each update.

Add Texturing dependant on height/slope. (probably GG's shader)

Improve/optomize the matrix.

Add animated cloud and oceans (probably using shaders).

Implement support for cliffs and overhangs.

Add support for surface materials, sand,gravel,rock,grass,snow etc.
At present I have completly lost all my code, so I have to rewrite it from scratch.
My Procedural.dll isn't as good as I'd like it to be, so I'm going to rewrite it also (found some better code samples). I'm also toying with the idea of using a prerendered height map as the basis then using RMF() to iterrate the values between each pixel. this should give me a terrain in the shape I want that has infinite detail.
`*******************************************************************************
` Filename : Main.dba `
` Version : 1.0a `
` Date : June 2007 `
` Description : Procedural Terrain Project `
` Author: Tintin `
` Copyright © 2007, all rights reserved. `
`*******************************************************************************
` Constants.
`*******************************************************************************
#Constant False 0
#Constant True not False
#Constant cBar (128<<24)||(0<<16)||(0<<8)||(255)
#Constant WinTitle "Procedural Terrain Demo v1.0a"
Type tDisp
hWnd as dWord
hDC as dWord
Width as dWord
Height as dWord
Depth as dWord
EndType
Global Desktop as tDisp
Type tP3D
X as float
Y as float
Z as float
EndType
Global Cam as tP3D
`*******************************************************************************
` Main Loop.
`*******************************************************************************
If Initialised(800,600,32)
A$=" Auto Resolution Set To "+Str$(Screen Width())+" x "+Str$(Screen Height())+" x "+Str$(Screen Depth())+" "
Center text Screen Width()/2,(Screen Height()-Text Height("|"))/4,A$ : FastSync
Make_Environment()
Cls : Position Mouse Screen Width()/2, Screen Height()/2
Do
`Camera Movement
If KeyState(17) or UpKey() Then Position Camera Camera Position X()+(Sin(Camera Angle Y())*.0318),Camera Position Y(),Camera Position Z()+(Cos(Camera Angle Y())*.0318) `MF
If KeyState(31) or DownKey() Then Position Camera Camera Position X()-(Sin(Camera Angle Y())*.0318),Camera Position Y(),Camera Position Z()-(Cos(Camera Angle Y())*.0318) `MB
If KeyState(30) or LeftKey() Then YRotate Camera WrapValue(Camera Angle Y()-0.5)`TL
If KeyState(32) or RightKey() Then YRotate Camera WrapValue(Camera Angle Y()+0.5)`TR
YRotate Camera (WrapValue(MouseMoveX()+Camera Angle Y()))
` XRotate needs to be limited to +- 90 degrees
XRotate Camera (WrapValue(MouseMoveY()+Camera Angle X()))
`Move Matrix
XM=0 : If (Camera Position X()-Cam.X) >= 4 Then XM=1
If (Camera Position X()-Cam.X) <= -4 Then XM=-1
ZM=0 : If (Camera Position Z()-Cam.Z) >= 4 Then ZM=1
If (Camera Position Z()-Cam.Z) <= -4 Then ZM=-1
If XM<>0 Then Cam.X = Camera Position X()
If ZM<>0 Then Cam.Z = Camera Position Z()
Update_Matrix(XM,ZM)
`Show Information
Information()
Loop
Clearup()
EndIf
End
`*******************************************************************************
` Initialised() Function.
`*******************************************************************************
Function Initialised(W,H,D)
Flush Video Memory
` Get Current Desktop Resolution
Load Dll "User32.dll",1
Load Dll "GDI32.dll",2
Desktop.hWnd = Call Dll(1,"GetDesktopWindow")
Desktop.hDC = Call Dll(1,"GetDC",0)
Desktop.Width = Call Dll(1,"GetSystemMetrics",0)
Desktop.Height = Call Dll(1,"GetSystemMetrics",1)
Desktop.Depth = Call Dll(2,"GetDeviceCaps",Desktop.hDC,12)
Call Dll 1,"ReleaseDC",0,Desktop.hDC
Delete Dll 2
Delete Dll 1
`Find nearest supported resolution to requirements
Empty Checklist : Perform Checklist For Display Modes
P=(Desktop.Width*Desktop.Height)^2 : Q=0
For I=1 to Checklist Quantity()
If ((Checklist Value B(I)*1.0)/(Checklist Value A(I)*1.0)) = ((Desktop.Height*1.0)/(Desktop.Width*1.0)) and Checklist Value C(I) = D
If ABS((Checklist Value A(I)*Checklist Value B(I))-(W*H))<= P Then P = ABS((Checklist Value A(I)*Checklist Value B(I))-(W*H)): Q=I
EndIf
Next
If Q>0 Then W = Checklist Value A(Q) : H = Checklist Value B(Q)
` Check resolution
If Check Display Mode(W,H,D)
Set Display Mode W,H,D : Set Window Off : Set Window Title WinTitle
Sync Rate 0 : Sync On : FastSync : Color Backdrop RGB(192,192,255)
Hide Mouse : Position Mouse Screen Width()/2, Screen Height()/2
AutoCam Off : Position Camera 0,2,0 : Set Camera Aspect ((Screen Width()*1.0)/(Screen Height()*1.0))
Center Text Screen Width()/2,(Screen Height()-Text Height("|"))/2,"Loading Data..."
Show Window
bRet = True
EndIf
EndFunction bRet
`*******************************************************************************
` Information() Function.
`*******************************************************************************
Function Information()
Ink RGB(255,255,255),0
Box 0,0,Screen Width(),Text Height("|"),cBar,cBar,cBar,cBar
Text 0,0,Str$(Screen FPS())+" FPS "
Center Text Screen Width()/2,0,WinTitle
A$=" "+Str$(Statistic(1))+" Polys" : Text Screen Width()-Text Width(A$),0,A$
A$="By TinTin"
Text Screen Width()-Text Width(A$),Screen Height()-Text Height(A$),A$
`
`Text 0,14," Desktop : "+Str$(Desktop.Width)+" x "+Str$(Desktop.Height)+" x "+Str$(Desktop.Depth)+" @ "+Str$((Desktop.Height*1.0)/(Desktop.Width*1.0),2)+":1 "
`A$=" Window : "+Str$(Screen Width())+" x "+Str$(Screen Height())+" x "+Str$(Screen Depth())+" @ "+Str$((Screen Height()*1.0)/(Screen Width()*1.0),2)+":1 "
`Text Screen Width()-Text Width(A$),14,A$
`
`If ScanCode()>0 then Text 0,14,Str$(ScanCode())+" "
Sync
EndFunction
`*******************************************************************************
` Clearup() Function
`*******************************************************************************
Function Clearup()
For I=1 to 1000
If Bitmap Exist(I) Then Delete Bitmap I
If Image Exist(I) Then Delete Image I
If Object Exist(I) Then Delete Object I
If Matrix Exist(I) Then Delete Matrix I
Next
Flush Video Memory
EndFunction
`*******************************************************************************
` Make_Environment() Function.
`*******************************************************************************
Function Make_Environment()
T=Timer()+500
Create Bitmap 1,128,128
Set Current Bitmap 1
Cls RGB(0,64,0)
For I=1 to 128*128
Dot Rnd(128),Rnd(128),RGB(Rnd(64),Rnd(64)+32,Rnd(16))
Next
Ink RGB(0,32,0),0
Line 0,0,128,0
Line 0,0,0,128
Get Image 1,0,0,128,128
Cls
Set Current Bitmap 0
`
Make Matrix 1,128,128,32,32 : Position Matrix 1,-64,0,-64
Prepare Matrix Texture 1,1,1,1 : Update Matrix 1
`
Fog On : Fog Distance 64*.66 : Fog Color RGB(192,192,255)
Set Camera Range .5,64*.66
Repeat : Until T<Timer()
EndFunction
`*******************************************************************************
` Update_Matrix() Function.
`*******************************************************************************
Function Update_Matrix(XM,ZM)
IF XM<>0 or ZM<>0
Set Current Bitmap 1
Get Image 2,0,0,32,32
Lock Pixels
Cls
Paste Image 2,XM,ZM
For P=0 to 32
If XM>0 Then Dot 0, P,RMF( 0, P)
If XM<0 Then Dot 32, P,RMF(32, P)
If ZM>0 Then Dot P, 0,RMF( P, 0)
If ZM<0 Then Dot P,32,RMF( P,32)
Next
For X=0 to 32
For Z=0 to 32
CV = Point(X,Z)
Set Matrix Height 1,X,Z,RGBR(CV)
Next
Next
Unlock Pixels
Set Current Bitmap 0
EndIf
Position Matrix 1,-64+Cam.X,0,-64+Cam.Z
Update Matrix 1
EndFunction
`*******************************************************************************
` RMF() Function.
`*******************************************************************************
Function RMF(X,Z)
`Dummy Function...
`This will be used to call the RigidMultiFractal function
`X & Z need to be scaled along with the Cam. position to fit the RigidMultifractal
dwRet as dWord
dwRet = RGB(0,0,0)
EndFunction dwRet
`*******************************************************************************
` End
`*******************************************************************************
Cyberspace was becoming overcrowded and slummy so I decided to move. These nice chaps gave me a lift.