Bueno Retomando lecciones anteriores como la de lectura de controles le he añadido mas cosas para hacer este tutorial Espero sea de utilidad para todos ustedes.
Así que vamos a ello.
Algunas ya no las explicare pues se habrá visto en temas anteriores solo explicaré lo nuevo que he añadido.
#include <oslib/oslib.h> PSP_MODULE_INFO("Musica y Sonidos", 0, 1, 1); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
declaramos los punteros de la musica y sonidos.
OSL_SOUND *musica, *sonido;
Ahora iremos al metodo main o la parte principal del programa :D.
int main() { oslInit(0); oslInitGfx(OSL_PF_8888, 0); oslInitConsole(); int oslInitAudio();
Cargamos los sonidos en memoria.
si cargamos la musica en stream, requerira mas CPU pero si la metemos en memoria perderemos parte de esta.
musica = oslLoadSoundFile("musica.wav", OSL_FMT_STREAM); sonido = oslLoadSoundFile("sonido.wav", OSL_FMT_NONE);
Ahora haremos la comprobación de que el archivo se encuentra y si no mandara un mensaje de error que personalizaremos a antojo.
Para ello usamos la sentencia if
if (!musica || !sonido) oslDebug("Ha sido imposible cargar todos los sonidos.\nRevisa que todos los archivos se encuentren junto al eboot.pbp");
Ahora el bucle principal :D
while (!osl_quit) { oslStartDrawing(); oslReadKeys(); oslCls(); //con oslPrintf_xy le decimos, en pixels, donde queremos escribir oslPrintf_xy(40,20,"Leccion 4: Cargando archivos de audio"); oslPrintf_xy(40,28,"-------------------------------------"); oslPrintf_xy(40,48,"Aprieta el Triangulo escuchar la musica de fondo"); oslPrintf_xy(40,40,"Aprieta X para parar la musica de fondo."); oslPrintf_xy(40,56,"Aprieta el Cuadrado para pausar la musica de fondo."); oslPrintf_xy(40,64,"Aprieta O para escuchar el efecto de sonido.");
if (osl_keys->held.cross) oslStopSound(musica);//parar la musica if (osl_keys->held.square) oslPauseSound(musica, -1);//0 = pausar, 1 = resumir, -1 = alternar if (osl_keys->held.circle) oslPlaySound(sonido, 1);//canal 1 if (osl_keys->held.triangle) { oslPlaySound(musica, 0);//canal 0 oslSetSoundLoop(musica, 1);//define si el audio musica tiene loop o no }
oslEndDrawing(); oslSyncFrame(); oslAudioVSync();//oslEndFrame llama a esta funcion asi que si la usamos en nuestro code ya no hara falta que usemos oslAudioVSync } oslEndGfx(); oslQuit(); return 0; }
TARGET = Musica OBJS = main.o INCDIR = CFLAGS = -G4 -Wall -O2 CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS = $(CFLAGS) LIBDIR = LDFLAGS = STDLIBS= -losl -lpng -lz \ -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm LIBS=$(STDLIBS)$(YOURLIBS) EXTRA_TARGETS = EBOOT.PBP PSP_EBOOT_TITLE = Leccion 4: OSLIB Musica y Sonido. PSPSDK=$(shell psp-config --pspsdk-path) include $(PSPSDK)/lib/build.mak
Y Como Costumbre les dejo el Main completo :D saludos igual con cosas explicadas por si no recuerdan lo de tomos anteriores ñ_ñ
//importamos la libreria //SRC creado por klozz Team MEX Homebrew y desarrollo. // MEX. #include <oslib/oslib.h> PSP_MODULE_INFO("Musica y Sonidos", 0, 1, 1); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU); //declaramos los punteros de la musica y sonidos OSL_SOUND *musica, *sonido; int main() { //con esta linea la libreria ya se encarga de todos los callbacks //que haciamos antes (la parte 'rara' que os decia) y ya no nos tenemos que preocupar por esa historia oslInit(0); //iniciamos la parte grafica indicando el formato de pixels que queremos usar y si keremos usar doble buffer //void oslInitGfx(int pixelFormat, int bDoubleBuffer); //usaremos OSL_PF_8888 para una pantalla de 32 bits o OSL_PF_5650 para 16 //0 para buffer simple, 1 para buffer doble oslInitGfx(OSL_PF_8888, 0); //iniciamos la pantalla para poder escribir en ella oslInitConsole(); //iniciamos el sistema de sonido. void oslDeinitAudio() para pararlo int oslInitAudio(); //cargamos los sonidos en memoria musica = oslLoadSoundFile("musica.wav", OSL_FMT_STREAM);//si cargamos la musica en stream, requerira mas CPU sonido = oslLoadSoundFile("sonido.wav", OSL_FMT_NONE);//pero si la metemos en memoria perderemos parte de esta //y comprovamos que todos los archivos estan ok if (!musica || !sonido) oslDebug("Ha sido imposible cargar todos los sonidos."); //while principal while (!osl_quit) { //Nos permite pintar en la pantalla oslStartDrawing(); //leemos los botones oslReadKeys(); //limpiamos la pantalla oslCls(); //con oslPrintf_xy le decimos, en pixels, donde queremos escribir oslPrintf_xy(40,20,"Leccion 4: Cargando archivos de audio"); oslPrintf_xy(40,28,"-------------------------------------"); oslPrintf_xy(40,48,"Aprieta el Triangulo escuchar la musica de fondo"); oslPrintf_xy(40,40,"Aprieta X para parar la musica de fondo."); oslPrintf_xy(40,56,"Aprieta el Cuadrado para pausar la musica de fondo."); oslPrintf_xy(40,64,"Aprieta O para escuchar el efecto de sonido."); if (osl_keys->held.cross) oslStopSound(musica);//parar la musica if (osl_keys->held.square) oslPauseSound(musica, -1);//0 = pausar, 1 = resumir, -1 = alternar if (osl_keys->held.circle) oslPlaySound(sonido, 1);//canal 1 if (osl_keys->held.triangle) { oslPlaySound(musica, 0);//canal 0 oslSetSoundLoop(musica, 1);//define si el audio musica tiene loop o no } //cerramos el modo dibujo //lo usaremos siempre al final de las operaciones de pintar oslEndDrawing(); //sincronizamos la pantalla oslSyncFrame(); //sincronizamos el audio oslAudioVSync();//oslEndFrame llama a esta funcion asi que si la usamos en nuestro code ya no hara falta que usemos oslAudioVSync } //finaliza la parte grafica oslEndGfx(); //sale directamente al menu de la psp oslQuit(); return 0; }
Captura:
Compilando:
Capturas desde la psp:D
Descarga el codigo Fuente. y eboot compilado ñ_ñ
Por megaupload ya que el servidor de Scenebeta no me dejo marcaba error en la subida D:
http://www.megaupload.com/?d=C9DY0VG9
TEAM MEX Homebrew y desarrollo PSP
Metal TrooperV.Pre-Alpha (15%)Lua , 10% C .
Ubunshell VProof. (45%)C
RPG Magues (35%)Lua , 5% C
Android development for Xperia X8 ^^ mis roms en XDA-Developers ya que en Scenebeta no las publican xD
Xperience | MIUI Pikachu | Semc debrand engine | Froyexp | Xperience walkman mod | Android 4.0.4 CN9 Crema de nieve
-- KLOZZ
Muy bien klozz ya con esto
Muy bien klozz ya con esto pueden hacer un juego mas o menos decente :D.