The actual loop is now just a handful of multiplies and adds, and two array lookups. For 500 rings, this means that I've gone from 6fps (the original, unoptimised version) to 32fps and these final optimisations take it to 48fps. Thats about eight and a half times faster. [grin]
With this new-found speed Rescue Squad now runs at 60fps with the water ripples turned on, which is nice.
They need some more tweeking on the animation side of things, but already they add a certain degree of solidity to the water plane that wasn't really there before.