The water.dat is a plain text file that defines the water tri- and rectangles in SA, the file water1.dat is old and not used by the game.
The water.dat file starts with the word "processed" in the first line, followed by the water shape definitions, one per line. A water shape definition consists of 3 or 4 corner points, and a parameter
|Point1 Point2 Point3 [Point4] Param|
with the points consisting of 7 floats each and the parameter being an integer value. One corner point is built as follows:
|X Y Z F1 F2 F3 F4|
|X, Y, Z:||coordinate|
|F1:||water current speed along X axis|
|F2:||water current speed along Y axis|
|F3:||unknown, influences waves, maximum is 1.0|
The parameter at the end of each line defines the water type, and can have a value from 0 to 3:
All values are separated by simple whitespaces, no commas or anything. Water shapes can be disabled by the use of a '#' character at the beginning of the line, just as in other map files.
Water can only be defined for the normal map area (+/- 3000 on X and Y axis). This area is surrounded by a hardcoded, infinite ocean, with a water surface at 0.0 and a seabed at -70.0 (Z axis). If you define a water shape along the border, the outer corner points will automatically be moved to a level of 0.0, possibly resulting in odd water slopes.
It it possible to define several layers of water, so theoretically a skyscraper with a pool in each floor wouldn't be impossible. You can even define water shapes at a level below zero, I've only tested until -80.0, but I guess -100 won't work anymore.
Very important note: All X and Y coordinates of corner points must be even, rounded numbers (like 1234.0), otherwise the game will crash when you approach the water.
The corner points should be defined in the order NE-NW-SE-SW, or also SW-SE-NW-NE:
|# 2---1 3---4|
# \ \
# \ \
# \ \
# 4---3 1---2
Hope this helps, awaiting your contributions.
Edit: Updated, many thanks to JKM