Bien ahora veremos como activar los botones de nuestro PSP convinado con el tuto pasado de mostrar texto para que a la hora de pulsar un boton muestre un texto.
Primero como todo programa empezamos cargando las librerias necesarias y estas son.
Code
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
la libreria "pspctrs.h" es la encargada para los controles de la psp.
Despues ponemos la informacion del programa que ya vimos en el tuto pasado.
Code
PSP_MODULE_INFO("Tester", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
Hoy vamos a poner la psp en modo usuario ideal para cuando agamos un juego, ya que al hacer cualquier juego no vamos a usar el modo kernel del psp que es para cosas como correr isos capturas de pantalla etc.. con esto ponemos nuestro psp en modo usuario PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
Ahora definiremos el print para texto (visto en el tuto anterior)
Code
#define printf pspDebugScreenPrintf
Ahora el code para salir con home.
Code
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
/* Llamada thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Configura llamada thread y vuelve a su thread id */
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
Comenzamos nuestro main recuerden que "main" sera lo primero que lee el programa y es la funcion principal.
despues iniciamos la pantalla y la llamada a salida con boton home.
Code
pspDebugScreenInit();
SetupCallbacks();
Ahora viene lo nuevo que es la llamada a los botones y eso lo hacemos con esto.
Ahora para que veamos que nuestro programa se inicio ponemos un texto en pantalla.
Code
printf("Pulsa algun boton\n\n");
printf("Aplicacion gracias a sting18\n\n")
Lo que puse de "\n\n" en estos textos es para darle espacios es como si presionaras "enter" a la hora de escribir en el teclado.
ahora comensemos nuestro bucle infinito esto hace que se repita y lea una y otra vez el codigo ya que si no lo ponemos leera tan rapido el codigo que no nos dara tiempo de presionar un boton pero como se estara leyendo todo el tiempo podremos presionar el boton cuando queramos y sera leido, a esto muchos lo conocen como "loop".
Ahora activamos los controles dentro del bucle o loop recuerden que es importante activarlos fuera del bucle como hicimos arriba y dentro como lo aremos ahora.
Code
sceCtrlReadBufferPositive(&pad, 1);
Si no ponemos eso no servira nuestro programa asi que sigamos todo al pie de la letra, Lo que ahora haremos sera decirle al psp que si nosotros presionamos un boton aga lo que queremos que aga, en este caso le diremos que al presionar un boton nos muestre un texto diciendo que boton estamos presionando.
Code
if(pad.Buttons & PSP_CTRL_CROSS){ //SI PULSAMOS EQUIS!!
pspDebugScreenClear(); //Limpia la pantalla de texto
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n EQUIS");
//imprime EQUIS en pantalla, para decirnos que la hemos pulsado
} //cerramos la funcion del if, de si pulsamos X
if(pad.Buttons & PSP_CTRL_CIRCLE){ //SI PULSAMOS CIRCULO!!
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n CIRCULO");
}
if(pad.Buttons & PSP_CTRL_SQUARE){ //SI PULSAMOS CUADRADO!!
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n CUADRADO");
}
if(pad.Buttons & PSP_CTRL_TRIANGLE){ //SI PULSAMOS TRIANGULO
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n TRIANGULO");
}
if(pad.Buttons & PSP_CTRL_LTRIGGER){ //SI PULSAMOS L
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n L");
}
if(pad.Buttons & PSP_CTRL_RTRIGGER){ //SI PULSAMOS R
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n R");
}
if(pad.Buttons & PSP_CTRL_START){ //SI PULSAMOS START
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n START");
}
if(pad.Buttons & PSP_CTRL_SELECT){ //SI PULSAMOS SELECT
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n SELECT");
}
if(pad.Buttons & PSP_CTRL_UP){ //SI PULSAMOS ARRIBA EN EL PAD
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ARRIBA");
}
if(pad.Buttons & PSP_CTRL_DOWN){ //SI PULSAMOS ABAJO EN EL PAD
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ABAJO");
}
if(pad.Buttons & PSP_CTRL_LEFT){ //SI PULSAMOS IZQUIERDA EN EL PAD
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n IZQUIERDA");
}
if(pad.Buttons & PSP_CTRL_RIGHT){ //SI PULSAMOS DERECHA EN EL PAD
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n DERECHA");
}
if(pad.Buttons & PSP_CTRL_HOME){ //SI PULSAMOS HOME
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n HOME");
}
if(pad.Buttons & PSP_CTRL_HOLD){ //SI LA PONEMOS EN HOLD
pspDebugScreenClear();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n HOLD");
}
} // aqui se cierra el bucle principal o loop.
Ya saben todos los "\n" y los espacios son para darle sentrado el texto despues veremos como usar cordenadas "X,Y" para no tener que ir poniendo muchos "\n" y espacios, y para terminar solo agregamos el final de todos los main.
Ya solo nos quedaria el crear el MakeFile que es practicamente el mismo que la vez pasada solo cambiaremos el nombre a testeador.
Code
TARGET = Testeador
OBJS = main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Testeador
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Es todo espero les sirva cualquier duda o comentario para mejorar este tuto sera bienvenido saludos a todos.
sting18.