hmmm if you want more FPS...I suggest you use only one matrix, but for the water, the code will need to be modified, but if your game is gonna run in fast PC's or you want higher detail, you can use 2 matrixes: one for the land, and other for the water (ghosted if you want), so the earth matrix can be textured (for example) grass above the water and dirt (yeah, some blueish dirt) in the tiles that are below the water to add some realism...it's just thing of FPS and detail...
EDIT: oh, in the codebase and the code snippets forum there are some water codes out there...I've seen one using RND (or RAND, can't remember now) for setting the water height...mmm something is going on my head now...I'll write something here and in some hours perhaps I can do you an example or perhaps someone can make an aexample out of it...
Thing going on my head

(IT WILL NOT COMPILE, I don't have DB here right now, but perhaps you'll get the idea...:
dim MatrixHeight(19)
dim MatrixInc(19)
rem 20
sync on
sync rate 30
MakeWaterMatrix(30,2)
do
sync
loop
function MakeWaterMatrix(MaxWaterHeight,WaterHeightInc)
make matrix 1,100,100,20,20
rem or perhaps 19,19...
randomize matrix 1,MaxWaterHeight
for a=0 to 19
MatrixHeight(a)=MatrixHeight(a)+MatrixInc(a)
if MatrixHeight(a)>=MaxWaterHeight
if MatrixInc(a)=WaterHeightInc then MatrixInc(a)=0-MaxHeightInc
if MatrixInc(a)=0-WaterHeightInc then MatrixInc(a)=MaxHeightInc
endif
rem CODE FOR SETTING THE MATRIX TILE HEIGHT HERE...somewhat like
rem set matrix tile height 1,a,MatrixHeight(a)
rem I'm not sure if SET MATRIX TILE HEIGHT exists, just find a
rem function that does that...can't remember right now...
next a
rem let's update the matrix...
update matrix 1
endfunction
well...I hope this let you to do somewhat like I mean...what it does is slowly setting the height of the tiles of the matrix instead of randomizing it each loop.
I hope this'll be useful to you
-DARKGuy
:: Pentium 300 Mhz, old 8Mb video card, 64Mb RAM, 5 gb & 1.6 gb HD's, W98 SE, Sound Blaster AWE 32 ::