00AC: Water level change
Set parameter 0x9 for this sprite category.
Sprite memory
  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00
Control code
X location
Y location
10
20
Speed
Mode
30
40
Range
Start level
End level
50
Parameter

Description
$00 Control code
Type: ushort
Relative address for array pointer of sprite assembly. It is $00AC for water level change.
Elevator speed change also uses same code.

$24 Speed
Type: short
Specify the speed for water level rising or descent by signed 16-bit integer.
When you set positive value, the water level or the elevator will rise. Otherwise, will descend.

$2E Mode
Type: ushort
Specify sprite mode.
Currently, the difference between the modes is unknown.

$42 Range
Type: (byte, byte)
The horizontal range you have to enter to trigger water level change.
Upper byte is for leftward, and lower byte is for rightward.

$4C Start level
Type: ushort
Specify the Y level that triggers change. This value must be matched to WRAM $0D52.
Basically, you should set the most recent water level change end level, or, if it is the first change, you should set initial water level.
Note the actual water level is 256 lower than you set.

$4E End level
Type: ushort
Specify the Y level that finishes change. This value will eventually be written to WRAM $0D52.
Note the actual water level is 256 lower than you set.