//DKC2_HDMAWater_Counter is a number between 0 and 15, you want to increment this every other frame.
if(enable_effect)
{
int tempcv = ((DKC2_HDMAWater_Counter + (16 - (top_of_camera_y & 0x0F))) & 0x0F);
for(int block = (tempcv - 16); block != (tempcv+224); block+=16)
{
//Copy from bitmap image onto itself.
//sourceX, sourceY, destinationX, destinationY, W, H
blit(dest_bitmap, dest_bitmap, 0, block+0x0A, 0, block+0x0B, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x09, 0, block+0x0A, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x08, 0, block+0x09, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x07, 0, block+0x08, 256, 1);
//////////////////////////////////////////////////////
blit(dest_bitmap, dest_bitmap, 0, block+0x06, -1, block+0x07, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x05, -1, block+0x06, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x04, -1, block+0x05, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x03, -1, block+0x04, 256, 1);
//////////////////////////////////////////////////////
blit(dest_bitmap, dest_bitmap, 0, block+0x00, -1, block+0x00, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x01, -1, block+0x01, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x02, -1, block+0x02, 256, 1);
blit(dest_bitmap, dest_bitmap, 0, block+0x03, -1, block+0x03, 256, 1);
}
}