Este mensaje lo e escrito basandome en otro de este post y no pretendo para nada quitarle méritos a otro post, simplemente que este post lo cree en mi página PSWorld.es y lo pongo aquí a modo de información, si no lo queréis borradlo o decírmelo y lo borro. El post es este:
Aquí creo este post para ayudar a todos los developers, empezaremos con unas cuantas funciones y luego iremos añadiendo con las aportaciones de todos los users.
Ahí va:
-pspDebugScreenPrintf
Esta funcion basicamente es lo mismo que el printf del C, por tanto casi viene mejor definir al principio del programa la funcion así:
#define printf pspDebugScreenPrintf; para poder usar printf como lo hemos hecho siempre.
Un ejemplo despues de haberla definido como hicimos anteriormente es:
printf ("Hola Mundo: \n"); lo cual nos imprimiría por pantalla Hola Mundo. Otra forma de hacerlo sin definir printf sería:
pspDebugScreenPrintf ("Hola Mundo: \n");
-SceCtrlData
(una parte de la funcion)
De esta función solo os puedo poner lo poco que se de eya, que es como hacer if's al pulsar un boton. Para ello primero debemos definir arriba de todo la libreria pspctrl de esta forma: #include
En el int main debemos definir la variable pad de esta forma: SceCtrlData pad; , y tras esto haremos un while de forma que se repita siempre asi:
while(1) {
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_CROSS) {
}
Es necesario escribirlo así para que funcione, no entiendo del todo porque funciona así, si alguién nos lo explica mejor. El ejemplo que escribi arriba es un if si pulsamos la X y ocurrira lo que le metamos entre los corchetes del if. Si en ves de pulsar la X queremos que sea con otra tecla escribimos en ves de PSP_CTRL_CROSS cualquiera de estas:
PSP_CTRL_SELECT Select button.
PSP_CTRL_START Start button.
PSP_CTRL_UP Up D-Pad button.
PSP_CTRL_RIGHT Right D-Pad button.
PSP_CTRL_DOWN Down D-Pad button.
PSP_CTRL_LEFT Left D-Pad button.
PSP_CTRL_LTRIGGER Left trigger.
PSP_CTRL_RTRIGGER Right trigger.
PSP_CTRL_TRIANGLE Triangle button.
PSP_CTRL_CIRCLE Circle button.
PSP_CTRL_CROSS Cross button.
PSP_CTRL_SQUARE Square button.
PSP_CTRL_HOME Home button.
PSP_CTRL_HOLD Hold button.
PSP_CTRL_NOTE Music Note button.
PSP_CTRL_SCREEN Screen button.
PSP_CTRL_VOLUP Volume up button.
PSP_CTRL_VOLDOWN Volume down button.
PSP_CTRL_WLAN_UP Wlan switch up.
PSP_CTRL_REMOTE Remote hold position.
PSP_CTRL_DISC Disc present.
PSP_CTRL_MS Memory stick present.
-pspDebugScreenClear
Esto es una función muy simple que nos sirve para poner la pantalla sin nada. Simplemente escribis pspDebugScreenClear(); y la pantalla se ''limpiará''
-pspDebugScreenInit
Esta función nos sirve para empezar el programa y debemos añadirla al principio de el y así poder imrpimr algo por pantaya. Simplemente escribiremos pspDebugScreenInit(); debajo del int main.
-pspDebugScreenSetBackColor
Con esta podremos cambiar el color de fondo del programa. Para hacerlo debemos de escribir esto pspDebugScreenSetBackColor(color); poniendo en color el valor del mismo en hexadecimal, por ejemplo pspDebugScreenSetBackColor(0x00FF00);
-pspDebugScreenSetXY
Con esta funcion empezaremos a escribir en la posición que le marquemos. Para ello escrbiriemos esto pspDebugScreenSetXY(int x,int y); y recordad que en int x e int y deberemos escribir dos valores enteros que representan el numero de celdas y que cada celda es igual a 8 pixeles. Si la pantalla de la psp es de 480x272 pixeles debéis vosotrs hacer las cuentas para escribir donde queráis xD
Ahora os dejo lo poco que se sobre las callbacks que sirven para que funcione salir del programas usando home, el modo sleep... Recordad poner esta linea al principio del programa para que funcionen, SetupCallbacks();
Lo único que tenemos que hacer para que nos vayan estas funciones es escribir las siguientes setup callbacks.
-Setup Callbacks:
Os dejo las líneas de codigo que debéis de copias en vuestro int main, son estas:
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its 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;
}
PD: puede ser que la información de este post esté mal puesto que no soy un gran programador y me estoy iniciando aun en esto, solo pretendo ayudar al resto de la gente que también pretende empezar.