Sábado, 21/Dic/2024, 6:53 AM
                          Inicio

Registrarse

Entrada
Le saludo Huésped | RSS
[ Mensajes nuevos · Participantes · Reglas del foro · Búsqueda · RSS ]
  • Página 1 de 1
  • 1
Activar botones de psp [uso de las pulsaciones]
sting18Fecha: Viernes, 09/Sep/2011, 7:11 PM | Mensaje # 1
Generalísimo
Grupo: Administradores
Mensajes: 26
Reputación: 32767
Estatus: Offline
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.

Code
int main()  
{


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.

Code
SceCtrlData pad;


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".

Code
while(1) {


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.

Code
return 0;
}


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.
 
  • Página 1 de 1
  • 1
Búscar:

Copyright MyCorp © 2024 Hacer un sitio web gratis con uCoz