Buenas, yo lo único que te puedo decir que lo de create sprite si lo haces muchas veces, no le acaba de gustar mucho a las PALib. Lo tengo comprobado con mi juego. Yo te recomendaria que en vez de usar un CreateSprite, uses lo siguiente:
u16 PA_CreateGfx ( bool screen,
void * obj_data,
u8 obj_shape,
u8 obj_size,
u8 color_mode
)
Con eso crearias el recurso gráfico en cuestion, una sola vez (Ten en cuenta que el crear el recurso, no quiere decir que lo pinte por pantalla, por eso no recibe coordenadas). Una vez creado el recurso, ya puedes utilizar la siguiente función:
inline void PA_CreateSpriteFromGfx ( bool screen,
u8 obj_number,
u16 obj_gfx,
u8 obj_shape,
u8 obj_size,
u8 color_mode,
u8 palette,
s16 x,
s16 y
) [inline]
Esa función ya si que crearía y dibujaría un sprite en pantalla a partir de ese recurso. De todas formas aun así tampoco es una solución realmente buena. Lo que deberias hacer es crear una vez el sprite, y luego moverlo si te interesa con un:
inline void PA_SetSpriteXY ( bool screen,
u8 sprite,
s16 x,
s16 y
) [inline]
Cuentanos si has logrado solucionarlo. Saludos.