Nada, no soy capaz de programar nada, se supone que esto:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <psp2/ctrl.h>
#include <psp2/io/fcntl.h>
#include <psp2/kernel/threadmgr.h>
#include <psp2/io/stat.h>
#include <psp2/sysmodule.h>
#include "graphics.h"
#define mostrarMensaje psvDebugScreenPrintf
static unsigned buttons[] = {
SCE_CTRL_SELECT,
SCE_CTRL_START,
SCE_CTRL_UP,
SCE_CTRL_RIGHT,
SCE_CTRL_DOWN,
SCE_CTRL_LEFT,
SCE_CTRL_LTRIGGER,
SCE_CTRL_RTRIGGER,
SCE_CTRL_TRIANGLE,
SCE_CTRL_CIRCLE,
SCE_CTRL_CROSS,
SCE_CTRL_SQUARE,
};
int leerTecla(void) {
static unsigned prev = 0;
SceCtrlData pad;
while (1) {
memset(&pad, 0, sizeof(pad));
sceCtrlPeekBufferPositive(0, &pad, 1);
prev = pad.buttons;
for (int i = 0; i < sizeof(buttons)/sizeof(*buttons); ++i)
if ( buttons[i])
return buttons[i];
sceKernelDelayThread(1000); // 1ms
}
}
int main(){
int tecla = 0;
int salir = 0;
psvDebugScreenInit();
mostrarMensaje("HOLA MUNDO BY RUKA :)");
mostrarMensaje("\nPulsa triangulo para salir");
while ( salir == 0) {
tecla = leerTecla();
switch ( tecla ) {
case SCE_CTRL_CROSS:
mostrarMensaje("HAS PRESIONADO X");
break;
case SCE_CTRL_CIRCLE:
mostrarMensaje("HAS PRESIONADO CIRCULO");
break;
case SCE_CTRL_SQUARE:
mostrarMensaje("HAS PRESIONADO CUADRADO");
break;
case SCE_CTRL_TRIANGLE:
mostrarMensaje("SALIENDO..");
salir = 1;
break;
default:
mostrarMensaje("Este boton no esta programado..");
}
}
}
Debería de funcionar, pues no es casi más que una adaptación del código fuente que han liberado...
Me da este error:
Makefile:46: target `out/./' given more than once in the same rule.
Makefile:46: target `out/./' given more than once in the same rule.
arm-vita-eabi-g++ -c -o out/graphics.o src/graphics.c
arm-vita-eabi-g++ -c -o out/main.o src/main.c
arm-vita-eabi-g++ -Wl,-q -o hello_cpp_world.elf out/font.o out/graphics.o out/main.o
out/graphics.o: In function `psvDebugScreenInit()':
graphics.c:(.text+0x138): undefined reference to `sceDisplaySetFrameBuf'
out/main.o: In function `leerTecla()':
main.c:(.text+0x1a): undefined reference to `sceCtrlPeekBufferPositive'
collect2.exe: error: ld returned 1 exit status
make: *** [hello_cpp_world.elf] Error 1
Y no se por que sí la función sceCtrlPeekBufferPositive y sceDisplaySetFrameBuf están definidas en uno de los archivos incluídos...