Thanks Dave, I've sorted it mate.
All I needed to was cast the last parameter to an unsigned char*;
from:
ChangeSprite( 0, &my_sprite, ship_data[ frame ] );
to:
ChangeSprite( 0, &my_sprite, (unsigned char*)ship_data[ frame ] );
Strange really as the last parameter is described as an APTR pointer on the net.
Thanks again mate