Error en Palib compilando una aplicacion de sonido.

Hola estaba siguiendo el tuto de sonido de Plata y al hacer mi aplicacion con sonido medio estos errores.
main.c
c:/devkitPro/programas/Nuevo1/source/main.c: In function 'main':
c:/devkitPro/programas/Nuevo1/source/main.c:11: warning: implicit declaration of function 'PA_InitSound'
c:/devkitPro/programas/Nuevo1/source/main.c:21:33: error: macro "PA_PlaySimpleSound" passed 2 arguments, but takes just 1
c:/devkitPro/programas/Nuevo1/source/main.c:21: error: 'PA_PlaySimpleSound' undeclared (first use in this function)
c:/devkitPro/programas/Nuevo1/source/main.c:21: error: (Each undeclared identifier is reported only once
c:/devkitPro/programas/Nuevo1/source/main.c:21: error: for each function it appears in.)
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

Y creyendo que el error era de el codigo copie el ejemplo de Plata y lo puse con el sonido suyo y medio el mismo error.
¿Alguien sabe como se puede arreglar esto?
Es mucho más fácil si además de poner el error pones el código donde aparece la función del sonido, porque adivinos no somos. ¬_¬

Por la info del error, estás utilizando mal la función, porque te dice que necesita un sólo parámetro cuando le estás pasando dos. El modo de uso correcto es PA_PlaySimpleSound(sonido); donde sonido es el nombre del sonido.raw que utilizas. Y no olvides declarar el sonido al principio con un #include "sonido.h"

Saludos
El codigo es este:
// Includes
#include <PA9.h>       // 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

He probado a poner esto PA_PlaySimpleSound (sonido); en vez de esto PA_PlaySimpleSound(0, sonido); y sale otro error:
main.c
c:/devkitPro/programas/Nuevo1/source/main.c: In function 'main':
c:/devkitPro/programas/Nuevo1/source/main.c:11: warning: implicit declaration of function 'PA_InitSound'
arm-eabi-g++ -g -mthumb-interwork -mno-fpu -L/C/devkitPro/palib/lib/lib -Wl -specs=ds_arm9.specs sonido.o main.o -L/C/devkitPro/palib/lib/lib -lpa9 -L/c/devkitPro/libnds/lib -lfat -lnds9 -ldswifi9 -o build.elf
main.o: In function `main':
c:/devkitPro/programas/Nuevo1/source/main.c:11: undefined reference to `PA_InitSound'
collect2: ld returned 1 exit status
make[1]: *** [/c/devkitPro/programas/Nuevo1/Nuevo1.elf] Error 1
make: *** [build] Error 2
Sustituye el
PA_InitSound();

por
PA_InitASLibForSounds(AS_MODE_SURROUND | AS_MODE_16CH);
AS_SetDefaultSettings(AS_PCM_16BIT, 11025, AS_SURROUND);

y prueba a ver.

Es que se que cambiaron lo del InitSound, pero tampoco me enteré mucho en su momento xDD
Yo me decante por mirar la documentacion y ponia esto...

ChangeLog PAlib escribió:Updated Oldies
--------------

[Installer] Updated the PAlib installer. All items are now optional and the root path is user-selectable.

[AS_Lib/Sound] Noda provided a new AS_Lib version and defines for EFS were removed. Using ASlib with EFSlib v2 now only requires including the efs_lib.c/.h files in your project.

[Sound] PA_InitASLibForSounds, PA_InitASLibForMP3 and PA_InitSound have been removed. You should now use the following methods to initialize AS_Lib in the mode you desire:

/* Init AS_Lib for mp3s */
PA_VBLFunctionInit(AS_SoundVBL); // easy way to make sure that AS_SoundVBL() is called every frame
AS_Init(AS_MODE_MP3 | AS_MODE_SURROUND | AS_MODE_16CH); // initializes AS_Lib
AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND); // or your preferred default sound settings

or

/* Init AS_Lib for sounds only */
AS_Init(AS_MODE_SURROUND | AS_MODE_16CH); // initializes AS_Lib
AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND); // or your preferred default sound settings
PA_PlaySimpleSound(sonido);

En su dia, hicieron que no se necesitase poner que canal usar para el sonido. Despues volvieron a actualizar con noseke movidas y tal, y como sonido no lo uso mucho ya me perdi xDD Cuando lo vuelva a usar pa algun proyecto ya actualizare el tuto.
Acabo de poner
AS_Init(AS_MODE_SURROUND | AS_MODE_16CH); // initializes AS_Lib
   AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND); // or your preferred default sound settings

y ya parece que funcion pero se escucha ronco(no se si sera por la musica o por otra cosa)
Pero esta vez he modificado y he puesto que al mantener pulsada un boton se escuche la cancion y al soltarlo no se escuche pero , el resultado ha sido que al pulsarlo se escucha al soltarlo se sigue escuchando.
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "sonido.h"
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"


// Function: main()
int main(int argc, char ** argv)
{
   PA_Init();    // Initializes PA_Lib
   PA_InitVBL(); // Initializes a standard VBL
   AS_Init(AS_MODE_SURROUND | AS_MODE_16CH); // initializes AS_Lib
   AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND); // or your preferred default sound settings

   PA_LoadSpritePal(0,0,(void*)sprite0_Pal);
   PA_CreateSprite(0,0,(void*)boton_Sprite,OBJ_SIZE_32X32,1,0,0,0);

   // Infinite loop to keep the program running
   while (1)
   {
      if((Stylus.Held) && PA_StylusInZone(0, 0, 32, 32)){
         PA_PlaySimpleSound(sonido);
         PA_SetSpriteAnim(0,0,1);


      }
       if((Stylus.Released)){
          PA_SetSpriteAnim(0,0,0);
          PA_StopSound(0);
       }   
      PA_WaitForVBL();
   }
   
   return 0;
} // End of main()
Hey y alguien sabe como detener un PA_PlaySoundRepeat(sonido.raw);
porque he intentado con el PA_StopSound(canal); y nada que podria usar
esque en mi juego uso muchas canciones donde una uso la de repetir y otra solo simple.
Nota:
Estoy usando las Aslib
7 respuestas