Since I don't have source code for this newer version of Asphyre Sprite Engine I'm asuming that Z is z order property of TSprite which determines which sprites are rendered on top. Also I'm asuming that FZ is internal vriable for storing Z property value.
Now the
Code:
if Z = 0 then Z := 1;
seems realy strange since accessing class property from within a class methods could lead to big problems (infinite loops) and should be therefore avoided if posible or used only for reading the property value.
But what caught my eye even more is that in the code variable FZ (probably internal variable for storin Z property value) is set to 0 twice. Once right before that "if Z = 0" code and again a few lines below. This completly nullifies the efects of "if Z = 0" part of code and FZ is always 0.

What happens if you change the Z property after the Sprite has already been created (set Z of Shore sprite to 1 and ocean sprite to 0 or maybe oposite)?