hola amigos.
Alguien me puede ayudar.
Estoy compilando para 3.x
Necesito que cada x segundos se realice una funcion, mientras el hombrew sigue funcionando.
Ahora lo tengo mediante bucle, y eso es lo que quiero evitar.
He encontrado 2 metodos creo. pero tengo problemas.
-------------------------------------------------------------------------------
(metodo 1) (pspsystimer.h:)
He leido algo de timer aqui:
http://forums.ps2dev.org/viewtopic.php?t=7519&highlight=&sid=1b51f3c467127cc45c33bb72698f2bb9
pero la parte que pone:
SysTimerForKernel.S no entiendo como implementarla.
Ahora he implementado la parte final de ese post:(el main.c)
Me compila bien, sin errores, pero cuando le doy a ejecutar la aplicacion(juego) directamtne desde la psp me da el error de que no puede iniciar el juego...
Y si intento arrancar mediante psplink me da error:
Failed to Load/Start module 'host0:/barcos371/xxxxx.prx' Error: 0x8002013C
si al main le quito la linea:
timer =sceSTimerAlloc();
no me da error la aplicacioon, o sea el error me lo da en la funcion : sceSTimerAlloc();
------------------------------------------------------------------------------
(metodo 2)(sceKernelSetVTimerHandler)
main.c
static SceUInt timer_handler(SceUID uid, SceKernelSysClock *c1, SceKernelSysClock *c2, void *common){
SceKernelSysClock clock;
unsigned time;
sceKernelGetSystemTime(&clock);time = clock.low;
return 0;
}
int main(){
const char * name="jose";
struct SceKernelVTimerOptParam * opt;
SceUID timer1;
unsigned int aa; //SceSize
aa=1;SceSize size;// opt.size=aa;
timer1=sceKernelCreateVTimer(name, NULL);
#define SAMPLE_FREQ 1000*1000*10 //10 sec
SceKernelSysClock sc; sc.hi = 0; sc.low = SAMPLE_FREQ;
/*
int thid = sceKernelGetThreadId();
SceKernelThreadInfo info; info.size = sizeof(info);
int ret = sceKernelReferThreadStatus(thid, &info);
setXY(0,6);printf("sceKernelReferThreadStatus1: %i",ret);
if(ret == 0){
*/
void* timer_addr = timer_handler;
// if((info.attr & PSP_THREAD_ATTR_USER) == 0){timer_addr += 0x80000000;}
err = sceKernelSetVTimerHandler(timer1, &sc, timer_addr, NULL);
// }
en este metodo me salta el timer pero solo una vez, y luego ya no me vuelve a saltar el timer o sea no lo hace de forma repetitiva.
------------------------------------------------------------------------------------
No sé si me he explicado bien.
POr favor alguna ayudaaa.
muchas graciasssss.