Vale, no sabía esa diferencia entre Held y Newpress. Por cierto, ¿sabes dónde puedo encontrar una lista con todas esas funciones? Te lo agradecería mucho.
Ahora estoy rallándome con otra cosa. Si dejo el código como me has dicho, funciona, sí, pero el mensaje de "toca la pantalla" no aparece hasta que pulsas una vez y dejas de pulsar. Lo he invertido para que la condición falsa esté al principio y muestre el mensaje de primeras y ahora sí que funciona. El caso es que ahora me "estropea" los sprites y no sé por qué. Es decir, funciona todo correctamente, pero los sprites se ven mezclados y parpadeantes. :S
while (1)
{
PA_SetSpriteXY(0,0,Stylus.X-16,Stylus.Y-16);
if(Stylus.Held==0) // He tenido que usar el Held porque con el released no me lo muestra al principio hasta que no toco y suelto
{
PA_DeleteSprite(0,1);
PA_OutputSimpleText(0,5,1,"Toca la pantalla");
}
else if (Stylus.Newpress)
{
PA_CreateSprite(0,1,(void*)ok_Sprite,OBJ_SIZE_64X64,1,0,50,50);
PA_OutputSimpleText(0,5,1,"Bien hecho! ");
}
PA_WaitForVBL();
}
EDITO:
Vale, ya está corregido. Se trataba de poner el PA_OutputSimpleText(0,5,1,"Toca la pantalla"); fuera del bucle. Al final queda así y va perfecto:
// Includes
#include <PA9.h> // Include for PA_Lib
#include "gfx/all_gfx.h"
#include "gfx/all_gfx.c"
// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
//Iniciamos los fondos
PA_EasyBgLoad(1,2,bg0); //Fondo de la pantalla superior
//Iniciamos Textos
PA_InitText(1,1);
PA_InitText(0,0);
PA_SetTextTileCol(1,3);
PA_OutputSimpleText(1,20,1,"By Pruch");
//Iniciamos la paleta
PA_LoadSpritePal(0,0,(void*)paleta_Pal);
//Creamos el sprite del cursor
PA_CreateSprite(0,0,(void*)fairy_Sprite,OBJ_SIZE_32X32,1,0,50,50);
//Lo animamos
PA_StartSpriteAnim(0,0,0,1,8);
PA_OutputSimpleText(0,5,1,"Toca la pantalla");
// Infinite loop to keep the program running
while (1)
{
PA_SetSpriteXY(0,0,Stylus.X-16,Stylus.Y-16);
if (Stylus.Newpress)
{
PA_CreateSprite(0,1,(void*)ok_Sprite,OBJ_SIZE_64X64,1,0,50,50);
PA_OutputSimpleText(0,5,1,"Bien hecho! ");
}
else if (Stylus.Released)
{
PA_DeleteSprite(0,1);
PA_OutputSimpleText(0,5,1,"Toca la pantalla");
}
PA_WaitForVBL();
}
return 0;
} // End of main()
Así queda el programa:
Gracias por la ayuda