[NDS][Programación con Palib] 8. Sonido y opciones avanzadas

Lo mas esperado por muchos (puedo oler el icono de carpeta quemada xD): Sonido...

Creo que no hay que explicar que es el sonido, porque la gran mayoria sabemos que es, y los sordos no creo que lo usen en sus aplicaciones...

(MIS DISCULPAS SI EL COMENTARIO ANTERIRO OFENDE A ALGUIEN)

Asi que vamos a empezar...

1. Sonido simple

Los sonidos, los tendremos que convertir a raw antes de trabajar con ellos, explico como.

Usaremos un programa llamado switch.

Click aqui para descargar

En el instalador instalad solo switch, el resto lo quitais.

Saldra una pantalla así:

Imagen


Clickaremos en Add Files(s) (arriba) y buscaremos los sonidos que queramos.

Despues, abajo, en Output folder ponemos donde queremos que heche lo convertido (por defecto mis documentos).
Ahora, en Output format seleccionamos .raw, y clickamos en Encoder settings.

Lo ponemos como en la siguiente imagen:

Imagen

Le damos a ok y se cerrara la ventanita.

Ahora, en la barrita de arriba, donde hay un rayo que pone convert, clickamos hay.

Esperamos a que convierta y nos habra hechado los .raw donde se lo indicamos (Por defecto en mis documentos).

Y ya esta convertido.

Ahora crearemos otra carpeta, (si hemos hecho todos los tutos deveria de ser ej16) y configuramos todo para empezar.
DENTRO DE LA CARPETA ej16 (o la que sea) crearemos otra carpeta llamada data.
EN LA CARPETA DATA meteremos los .raw que hemos sacado antes.

yo he usado una parte de una cancion de tote X-D , y lo he llamado sonido.raw

Bien, ahora vamos al código:
// Includes
#include // Include de las PA_Lib
#include "sonido.h" //Incluyo el sonido, hay que poner el nombre del .raw

// Funcion main
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos PA_Lib
PA_InitVBL(); // Iniciamos VBL
PA_InitSound(); //Iniciamos el sonido

// Reproducimos el sonido
PA_PlaySimpleSound(0, // canal (hay 15, osea, 15 sonidos simultaneos puedes meter)
sonido //nombre del archivo raw
);

// Bucle
while (1)
{

PA_WaitForVBL();
}

return 0;
} // Fin de main


Y nada mas abrir el binario, se escucharia el sonido, ya podemos hacer que se escuche cuando pulsas la tactil, pulsas un boton, etc...
miniejemplo:

while (1)
{ // Si tocamos la pantalla reproducimos el sonido...
if (Stylus.Newpress) PA_PlaySimpleSound(0, sonido);
PA_WaitForVBL();
}

return 0;
} // Fin de main


Y asi cada vez que tocas la pantalla se reproduce el sonido, asi que cuando se acabe, vuelves a tocar y se vuelve a reproducir.


NOTA: En los emuladores se escucha muy rapido, pero en la ds se escucha perfecto.

Descarga:
http://www.megaupload.com/?d=5YYWMK4S

Captura:
No la pongo, porque la pantalla en si esta negra, y en la captura no ves el sonido xDDDD



2. Volumen

Creamos lo mismo que la otra vez, yo uso el mismo sonido, si quereis cambiar alla vosotros.
Ahora vamos ha cambiar el volumen con el pad, y asi vais aprendiendo cosas.

Código:
// Includes
#include // Include de las PA_Lib
#include "sonido.h" //Incluyo el sonido

// a volumen le damos un valor inicial de 50
u8 volumen = 50;

// Funcion main
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos las PA_Lib
PA_InitVBL(); // Iniciamos VBL
PA_InitText(0, 0);

PA_InitSound(); // Iniciamos el sonido

// Reproducimos el sonido
PA_PlaySimpleSound(0, sonido);

// Bucle
while (1)
{

//Mostramos con el texto el volumen
PA_OutputText(0, 10, 12, /*OJO, en este codigo, los valores de la posicion del texto es ditinta,
con poner en coordenadas 50, 50 nos salimos de la pantalla (no me apetece buscar el maximo, pero es poco)*/
"El volumen es : %03d", //hacemos que nos muestre el volumen
volumen //volumen que es 50
);


volumen += //el volumen, que de momento es 50, sube...
Pad.Held.Up //...si pulsamos el pad para arriva
- // y baja...
Pad.Held.Down; // ...si pulsamos del pad para abajo



PA_SetSoundVol // cambiamos el volumen
(volumen //el volumen seria 50
);




PA_WaitForVBL();
}

return 0;
} // Fin de main


Unas cuantas cosas, primero, que si no os leisteis lo que aconseje leer en el tutorial 6, no os vais a enterar muy bien del codigo, aun asi, he explicado vastantes cosas.
Lo segundo, en un emulador el sonido no cambia, asi que no lo podeis apreciar si no teneis la ds.
Lo tercero, el cambio de volumen es muy poco en cada numero, pero si lo poneis a 000 (no se oye) y despues a 255 (lo maximo) se nota de sobra xD.

Descarga:
Click aquí

Captura:

Imagen



3. Parar/Reproducir

Pues crearemos otro ejercicio, con el mismo sonido (o con otro) en la carpeta data y empezamos.

Vamos a acer que si pulsamos la A, se reproduzca el sonido, y si pulsamos la B, se pare.

Vamos alla:
// Includes
#include // Include de las PA_Lib
#include "sonido.h" // Incluimos el sonido

// Funcion main
int main(int argc, char ** argv)
{
PA_Init(); // Iniciamos las PA_Lib
PA_InitVBL(); // Iniciamos VBL

PA_InitSound(); //Iniciamos sonido



// Bucle
while (1)
{
//Si pulsamos A...
if (Pad.Newpress.A)
{
PA_PlaySimpleSound(0, sonido);//...reproducimos el sonido
}


if (Pad.Newpress.B)//Si pulsamos B...
{
PA_StopSound(//...paramos el sonido...
0); //...que se reproduce en el canal 0
}



PA_WaitForVBL();
}

return 0;
} // Fin de main


Y con esto concluye el tutorial de sonido. Ya llevamos 18 ejercicios... Todavia aguantais eh, no os rendis... xD
Ala, me retiro asta dentro de un año xD (mas bien unas 9h).

Descarga:
Click aquí

Captura:
Aqui tampoco hay...


--------------------------------TAREA-----------------------------------------

Bueno, quiero ver como lo haceis xD, os voy a acer una especie de chantaje.
Quero, que cuando pulses un sprite con la tactil, pase al frame 1 y suene el sonido, y cuando le vuelvas a tocar,que pase al frame 0(primero) y que se pare la musica.
El que lo consigua, (que cuelgue el codigo y el binario) le dejo eleguir tuto.

Salu2
Lo mejor de todo [tadoramo]

6 estrellas ;)
feliz navidad :p hay jente que ha abandonado lo de programar, verdad? xD
Estaran de vacaciones XD

Esta tarde me pongo ha hacer algo ;)

salu2
Plata escribió:feliz navidad :p hay jente que ha abandonado lo de programar, verdad? xD


No, tranquilo... estoy de vacaciones. Luego retorno al tuto 6 >.<
Lo he intentado hacer con una bool como me dijistes ayer, pero he estado un monton intentandolo y nada xD
Luego he visto un ejemplo de los que vienen en el que se usa else, que no lo conocía, asique ese si ha funcionado :D
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "foxy.h"

// Function: main()
int main(int argc, char ** argv)
{
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
   PA_InitSound();
   
   PA_CreateSprite(0, 0, (void*)sprite_Sprite, OBJ_SIZE_64X64, 1, 0, 0, 0);   
   
   
   // Infinite loop to keep the program running
   while (1)
   {
   if ((Stylus.Newpress) && PA_StylusInZone(0, 0, 64, 64))
      if (PA_SoundChannelIsBusy(0)){
         PA_StopSound(0);
         PA_SetSpriteAnim(0, 0, 0);
}         
      else {
         PA_PlaySimpleSound(0, foxy);
         PA_SetSpriteAnim(0, 0, 1);
      }   
      

      PA_WaitForVBL();
   }
   
   return 0;
} // End of main()

Con lo de "el binario" a que te refieres (no se lo que es xD), la carpeta con el vhw, los .nds y los archivos?

EDIT: El compilador me da un warning (me dice "suggest explicit braces to avoid ambiguous 'else'") pero compila y funciona OK
Por si era la carpeta, aquí la tienes, pesa demasiado porque en vez de un sonido he usado una canción, pero bueno. Descarga de megaupload

Que tal está? Recomiendas hacerlo de otra manera?
para esta chorrada si, pero para lo otro es mejor bool.
el codigo que te puse con bool me compila perfecto, asi que es problema tuyo...

y lo segundo, no vale copiar ejemplos [rtfm]

de todas formas di un tema para el siguiente tuto, si me convence le meto.

P.D: Con binarios me refiero al .nds, .sc.nds (metedmelo pork sino no me rula en la supercard) y el .ds.gba (este ultimo me la trae)
xD
Que tengo mal en el código? Lo he hecho como me explicaste de bool y cuando toco el sprite, se reproduce el sonido pero no se anima, y cuando lo vuelvo a tocar se reinicia el sonido, pero sigue sin animarse...
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "foxy.h"

// Function: main()
int main(int argc, char ** argv)
{
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
   PA_InitSound();
   
   PA_CreateSprite(0, 0, (void*)sprite_Sprite, OBJ_SIZE_64X64, 1, 0, 0, 0);   
   
   bool menu2 = false;
   
   // Infinite loop to keep the program running
   while (1)
   {
   if ((Stylus.Newpress) && PA_StylusInZone(0, 0, 64, 64) && menu2 == false){
      PA_SetSpriteAnim(0, 0, 1);
      PA_PlaySimpleSound(0, foxy);
      menu2 = true;
   }   
   
   if ((Stylus.Newpress) && PA_StylusInZone(0, 0, 64, 64) && menu2 == true){
      PA_StopSound(0);
      PA_SetSpriteAnim(0, 0, 0);
      menu2 = false;
   }   

      PA_WaitForVBL();
   }
   
   return 0;
} // End of main()

Ayuda anda xD
yo creia k te referias a lo de la historia esa...
para esto se usa else if:
// Includes
#include // Include for PA_Lib
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "foxy.h"

// Function: main()
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
PA_LoadSpritePal(0, 0, (void*)sprite0_Pal);
PA_InitSound();

PA_CreateSprite(0, 0, (void*)sprite_Sprite, OBJ_SIZE_64X64, 1, 0, 0, 0);

bool menu2 = false;

// Infinite loop to keep the program running
while (1)
{
if ((Stylus.Newpress) && PA_StylusInZone(0, 0, 64, 64) && menu2 == false){
PA_SetSpriteAnim(0, 0, 1);
PA_PlaySimpleSound(0, foxy);
menu2 = true;
}

else if ((Stylus.Newpress) && PA_StylusInZone(0, 0, 64, 64) && menu2 == true){
PA_StopSound(0);
PA_SetSpriteAnim(0, 0, 0);
menu2 = false;
}

PA_WaitForVBL();
}

return 0;
} // End of main()


ya te digo que usar un bool aqui es una jilipollez, pero en cuanto quieras crear mas de un menu un else a secas no sirve.

salu2
En la historia ya he hecho otro menú más (opciones, con opciones de sonido de este tuto xD) y he usado u8, porque bool solo deja 2 valores no?
Pues si me dejas elegir quiero una de dos: Colisiones o gravedad, si no te parece bien, pues lo que tu quieras.

Animo y sigue con los tutos, te lo agradezco mucho.
yo propongo que hagas tutos en los qeu enseñes los temas de gravedad y colisiones que estoy ahora usandolos y me esta costando entender algunas cosas. Ando con un minijuego en 2D y lo estoy usando pero algunas cosas van a boleo y de momento funcionan.


salu2
Muy buen tutorial, como siempre. Ahora, falta solo el acceso a ficheros [+risas]
Plata escribió:feliz navidad :p hay jente que ha abandonado lo de programar, verdad? xD


Tanto como dejarlo no leche XD, pero la 360 me tiene secuestrado [qmparto][qmparto], cuando se me pase el flipe seguiré con esto [qmparto]
El proximo tuto podrias hacerlo de PAFS o de 3D (esto lo deseo con ansia). Sigue así, que te lo estás currando.


PD: Estas vacaciones he hecho unas librerías para añadir botones y cosas por el estilo a una aplicación de DS(no pone imágenes ni nada, "solo el botón"). Tengo que pulir un par de detalles (documentación, ejem...) y si a alguien le interesa podría darme prisita en acabarla.
ANTONIOND escribió:El proximo tuto podrias hacerlo de PAFS o de 3D (esto lo deseo con ansia). Sigue así, que te lo estás currando.


3D ??? Pero si quedan muchisimas cosas (y complicadas) de 2D !!!!

...no, plata?
judelco escribió:
3D ??? Pero si quedan muchisimas cosas (y complicadas) de 2D !!!!

...no, plata?


Ya... Pero es que tengo tantas ganas... :P He buscado en internet y no hay ni uno decente. Si no queda mas remedio esperere... [buuuaaaa]
PiratePila está baneado por "crearse clones para trollear"
¿ Quieres que haga un hilo recopilatorio ?

Es que son unos tutoriales muy buenos, no hay que dejar que se pierdan.

¿ De que será el proximo ?

Este fin de semana empezaré a estudiar tus tutoriales, a ver si dentro al final puedo hacer algun "jueguecillo" para NDS.
PiratePila escribió:¿ Quieres que haga un hilo recopilatorio ?

Es que son unos tutoriales muy buenos, no hay que dejar que se pierdan.

¿ De que será el proximo ?

Este fin de semana empezaré a estudiar tus tutoriales, a ver si dentro al final puedo hacer algun "jueguecillo" para NDS.



http://www.elotrolado.net/hilo_-Programacion-en-NDS--Recopilacion-de-tutoriales-Palib-y-Vocabulario-_905471

Allí tienes tu recopilación.... [qmparto]
PiratePila está baneado por "crearse clones para trollear"


No sabía que al final la había hecho.

Gracias por el link. [oki]
ANTONIOND escribió:El proximo tuto podrias hacerlo de PAFS o de 3D (esto lo deseo con ansia). Sigue así, que te lo estás currando.


PD: Estas vacaciones he hecho unas librerías para añadir botones y cosas por el estilo a una aplicación de DS(no pone imágenes ni nada, "solo el botón"). Tengo que pulir un par de detalles (documentación, ejem...) y si a alguien le interesa podría darme prisita en acabarla.


no merece la pena 3d con palib.
lo mas que puedes hacer es un cuadrado y rotar la camara -.-
Plata escribió:
no merece la pena 3d con palib.
lo mas que puedes hacer es un cuadrado y rotar la camara -.-


?

Y los juegos tipo "supermario 64 DS" como lo hicieron? (YA SE que con PaLiB no, pero con que programa programan los de nintendo ?

[maszz]
nintendo tendra sus propias librerias...
nose...
para eso recomiendo mas las libnds...
Plata escribió:nintendo tendra sus propias librerias...
nose...
para eso recomiendo mas las libnds...


Curioso, verdad? .... enfin... a ver si descubrimos con que programa o librerias hacen nintendo sus juegos y aprendemos a programar con ellas, no? Asi nos servirá para un "posible" futuro laboral... xDDDDDD
Plata escribió:
no merece la pena 3d con palib.
lo mas que puedes hacer es un cuadrado y rotar la camara -.-

Y eso con las versiones viejas... He mirado en los archivos y ni siquiera están esas funciones. Con las últimas solo se pueden sprites 3D... Estoy buscando tutoriales de libnds para las 3D, porque la verdad es que las palib dejan mucho que desear en ese aspecto. [buuuaaaa]

PD: En el tutorial de los foros de palib lo dicen... No funciona con las versiones nuevas...

PD2: http://lazmike.nintendev.com/tutorials/
No están mal.
judelco escribió:
Curioso, verdad? .... enfin... a ver si descubrimos con que programa o librerias hacen nintendo sus juegos y aprendemos a programar con ellas, no? Asi nos servirá para un "posible" futuro laboral... xDDDDDD


como no le hackees el ordenador a un programador de nintendo... xD
Plata escribió:
como no le hackees el ordenador a un programador de nintendo... xD


Solo eso? Bah! Entonces dalo por hecho!

(Es broma [qmparto] )
Pues según tenía yo entendido muchos de los primeros juegos los hicieron con un tal NitroSDK, y creo que una vez incluso lo descargué pero no lo llegué a probar xD
_SuBCeRo_ escribió:Pues según tenía yo entendido muchos de los primeros juegos los hicieron con un tal NitroSDK, y creo que una vez incluso lo descargué pero no lo llegué a probar xD


Bueno, por algo se empieza, no? Ya tenemos algo de información.
Habia cosas que no entendia y he copiado algo pero por lo menos lo tengo hecho, es una radio XD

radio
Actualizado un error del juego
_SuBCeRo_ escribió:Pues según tenía yo entendido muchos de los primeros juegos los hicieron con un tal NitroSDK, y creo que una vez incluso lo descargué pero no lo llegué a probar xD


si el sdk si... pero las librerias no estan...
Plata ya he hecho la tarea que mandaste y no has dicho nada Oooh
eolpxw escribió:Plata ya he hecho la tarea que mandaste y no has dicho nada Oooh


Jaj, estará ocupado haciendo el Tuto 9 [360º]
eolpxw escribió:Plata ya he hecho la tarea que mandaste y no has dicho nada Oooh


lo vi, xD, pero se me paso responder.
weno, dime una propuesta para el siguiente, pero tampoco os flipeis, no os voy a enseñar 3d ni fat sin pasar por 2d.

salu2
Podría venir bien un capítulo sobre animar sprites (mas a fondo, combinarlo con el pad... no se...). O, como han dicho unos posts antes, colisiones, gravedad, etc. Tambien hay funciones facilitas de usar que no se si habras dicho, las del hora, numeros aleatorios, datos del jugador...
PiratePila está baneado por "crearse clones para trollear"
Plata escribió:
lo vi, xD, pero se me paso responder.
weno, dime una propuesta para el siguiente, pero tampoco os flipeis, no os voy a enseñar 3d ni fat sin pasar por 2d.

salu2


Yo puedo decir varias cosas, ideas que tengo en mente (aunque aún me faltan leer tus dos ultimos tutoriales).

Podrías hacer en este siguiente tuto un menú (aunque sea sencillo), para que captaramos un poco el sistema.

Por cierto, ya estoy empezando a hacer mis "tonterías" (igual que mi hermano) aquí abrí un hilo, pasate y me dices que te parece, aunque quiero ir poco a poco mejorando y al final hacer algo en condiciones.

Aquí te dejo el link -> http://www.elotrolado.net/hilo_-Homebrew--PuzzleDS_927545

Lo del menú te lo dije por que me surgió mientras programaba esto. También podrías ampliar un poco más la explicación de los botones, por ejemplo, como hacer que todo se pause al presionar el botón START o cosas así.

Como te he dicho no me he leído aún tus dos ultimos tutoriales por que me gusta practicar bastante cada vez que acabo uno para aprenderme los comandos así que no se si algo de lo que propongo se ha dicho pero creo que no.

Un saludo y gracias por todo Plata. ;)
con menu te refieres a algo como esto? (mas abajo)
salu2

P.D: En el emulador va MAL

Adjuntos

Plata escribió:P.D: En el emulador va MAL


Menos mal que avisas, que si no podría haberlo probado en la DS en lugar de el emulador (como he hecho XD).

Si es q no me fijo en las cosas...

Por cierto, está muy bien, y eso que es un simple menu :P.
es un SO, solo falta implementar aplicaciones y unos cuantos menus de opciones, pero aunque no se muestre, lo importante esta ya hecho.
Ya, he visto la calculadora.
Y lo del menú ya es fácil de continuar. Una vez que tienes lo principal el resto es copiar y pegar con alguna modificación (menos las aplicaciones, claro está).
PiratePila está baneado por "crearse clones para trollear"
Plata escribió:con menu te refieres a algo como esto? (mas abajo)


Sí, aunque yo me referia a algo mas sencillo.

Tipo cuando empiezas un juego que pone:

[ Empezar Partida ]

[ Cargar Partida ]

[ Opciones ]

[ Salir ]

Y cada opción te lleva a un sitio distinto. A eso me referia.

Otra cosa que también podrías hacer un tu proximo tutorial (o aquí mismo) es explicar como hacer para poner un texto y que tocando la pantalla con el stylus se pase. Lo tipico de "Toca la pantalla tactil para empezar". Esto lo he intentado hacer yo pero no he tenido mucho exito.

Todo esto claro esta, cuando tengas tiempo. Te agradezco todo lo que haces (gracias a ti estoy aprendiendo).

Un saludo !
Puedes pasarte por aquí y leer mi post y la respuesta de plata, con eso conseguí yo hacer menus multiples (usando otra variable cualquiera que no sea bool).
Plata escribió:
lo vi, xD, pero se me paso responder.
weno, dime una propuesta para el siguiente, pero tampoco os flipeis, no os voy a enseñar 3d ni fat sin pasar por 2d.

salu2

Nose... quizas las colisiones o los sistemas de salida avanzados... de todas formas no me importa :D

salu2
PiratePila está baneado por "crearse clones para trollear"
polo_polo escribió:Puedes pasarte por aquí y leer mi post y la respuesta de plata, con eso conseguí yo hacer menus multiples (usando otra variable cualquiera que no sea bool).


¿ Podrías pasarme algún ejemplo hecho ?

Es que no se si es exactamente lo que busco.
FaG está baneado por "clon de usuario baneado"
Ami tambien me gustaria ver un ejemplo, y saber como se hacen menus.
Este tiene más cosas que solo el menú, pero con fijaros en lo que queréis valdrá (made in polo) :P
http://www.megaupload.com/es/?d=NM4AQD6Y

------------ O ------------

Plata, ya tengo otro problema xD
Se me ha ocurrido una forma casera y facil de hacer colisiones, y va bien, pero al terminar el recorrido (recto xD) y llegar a la meta, quiero que al pulsar start vuelva al principio, pero se ve como el sprite movil vuelve a la posición que le digo y el texto desaparece, pero solo momentaneamente :S
Te dejo la parte de los ifs a ver si me puedes ayudar xD
   //Mover Sprite
   if (menu == 1){
   x += Pad.Held.Right*2 - Pad.Held.Left*2;
   y += Pad.Held.Down*2 - Pad.Held.Up*2;
   PA_SetSpriteXY(0, 0, x, y);
}   
   
   //Colisiones (Izda)
   if ((x <= 64) && (menu == 1)){
      (x += +2);
   }   
   
   //Colisiones (Dcha)
   if ((x >= 160) && (menu == 1)){
      (x += -2);
   }   
   
   //Colisiones (Arriba)
   if ((y <= -1) && (menu == 1)){
      (y += +2);
   }
   
   //Funcion de meta
   if ((y >= 162) && (menu == 1)){
   PA_OutputSimpleText(1, 11, 9, "Has Ganado!");
   PA_OutputSimpleText(1, 3, 15, "Pulsa START para reiniciar");
   menu = 0;
}   

   if ((menu == 0) && (Pad.Newpress.Start)){   
      PA_ClearTextBg(1);
      PA_SetSpriteXY(0, 0, 112, 0);
      menu = 1;
}       
   
      PA_WaitForVBL();
   }
   
   return 0;
} // End of main()

Gracias!
PiratePila está baneado por "crearse clones para trollear"
polo_polo escribió:Este tiene más cosas que solo el menú, pero con fijaros en lo que queréis valdrá (made in polo) :P
http://www.megaupload.com/es/?d=NM4AQD6Y


Es justo lo que quiero hacer, un menú de ese tipo. Echandole un vistazo al codigo parece complicado. No se si conseguiré hacer algo pero estos días voy a intentarlo, a ver si consigo formar un menú.
PiratePila escribió:
Es justo lo que quiero hacer, un menú de ese tipo. Echandole un vistazo al codigo parece complicado. No se si conseguiré hacer algo pero estos días voy a intentarlo, a ver si consigo formar un menú.

Que va, no lo es, te lo intento explicar detalladamente.
Te voy a poner un ejemplo para hacer un menú con una sola opción, que si lo entiendes serás capaz de hacerlo con varias...
Defines una variable (puede ser la que quieras, en este caso vamos a usar bool porque permite solo dos valores y consume muy poco).
La defines como false (o 0, que es lo mismo) "bool menu = false" y en la condición añades que para que se cumpla menu tiene que ser falso (o cero).
//defines la variable de nombre menu
bool menu = false

if ((PA_StylusInZone(x, y, X, Y)//zona del botón tactil
&& (menu == false)){ //y menu está en falso, realiza lo siguiente:
PA_DeleteSprite(.....); //borras el botón que has pulsado
.
.    //Todo lo que quieres que se borre y lo que aparezca
.    //en el siguiente sitio (nuevos sprites, texto...)
menu = true; /*cambia menu a verdadero (o 1, lo que prefieras para que la condición anterior no se vuelva a cumplir*/
}                   

Si quieres hacer mas menus pues usas una variable que permita mas de dos datos (u8, por ejemplo).

Que mi duda no se pierda, esta unos posts mas arriba xD
Hola, creo q lo he puesto en el hilo recopilatorio de estos tutos sobre palib, pero lo repito aqui x si el autor no lo ha leido:
Muchisimas gracias x todo el curso, esta bastante bien.
Solo faltan 2 lecciones para mi importantisimas, a ver si puedes añadirlas.
1. Colision de sprites, cajas o colores.
2. Guardar partida, datos, puntos, etc(creo q en los ejemplos lo trata como fat o algo asi).

A ver si lo añade y crea el pdf final de referencia offline.
1saludo y muchas gracias
Ya he encontrado una solución a mi problema, por si a alguien más le ocurre --> en vez de usar PA_SetSpriteXY, volví a cambiar X e Y por la posición inicial otra vez (x = 112; y = 0) , ya que sino, le decia que colocara el sprite ahi, pero a la vez le decía que siguiera donde había acabado xD
78 respuestas
1, 2