Anuncios Google

[C]¿Por qué no sirve sceLoadExec();?[C]

Bien pues eso, a la hora de ejecutar el loadexec en un main, se queda la pantalla en negro al ejecutar el Eboot, les dejo mi code.

#include <pspkernel.h>
#include <pspdebug.h>
#include <psploadexec.h>
#include <pspctrl.h>
#include <pspthreadman.h>
 
#define printf pspDebugScreenPrintf
 
PSP_MODULE_INFO("Autobot",1,0,0);
 
/* Llamada de salida */
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;		  
}
 
int main(){
		pspDebugScreenInit();
		SetupCallbacks();
		printf("Presiona X");
		SceCtrlData pad;
			while(1){
					sceCtrlReadBufferPositive(&pad,1);
						if (pad.Buttons & PSP_CTRL_CROSS){
								pspDebugScreenClear();
								printf("Ejecutando...\n");
								sceKernelDelayThread(2*1000*1000);
								pspDebugScreenClear();
								sceKernelLoadExec("ms0:/PSP/GAME/Claw/EBOOT.PBP");
						}
			}
		sceKernelSleepThread();
		return 0;
	}		

He leido que esa funcion da muchos problemas, y que posiblemente seá la funcion y no mi code, pero entonces, que puedo usar para ejecutar Eboots en C?.

Gracias por adelantado.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de moikop

en el sceKernelLoadExec te

en el sceKernelLoadExec te falta un parámetro al final. NULL en tu caso serviría ;)
Revisa la docu del SDK para más info :P 

PD: Si no sabes los errores que te dá el compilador, primero estudia un poco más... porque la info que te da el compilador es fundamental para debugear la app...


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.

Imagen de sting18

Lo importante es el entorno

Lo importante es el entorno de programacion si tienes bien eso todo puedes hacer ;).

de lo otro ya te dije que no es tan facil programar en C no es como lua XD mira te digo como ejecutar un eboot como la gente XD.

primero asegurate de llamar las librerias kernel

#include <psploadexec.h>
#include <psploadexec_kernel.h>

y despues una function que hice basada en la estructura 2 del sdk.

void Correr_PBP(){
 
	struct SceKernelLoadExecVSHParam param;
	int apitype = 0x141;
	char *program = "ms0:/PSP/GAME/aereo_TeamMex/EBOOT.PBP";
 
	memset(¶m, 0, sizeof(param));
	param.size = sizeof(param);
	param.args = strlen(program)+1;
	param.argp = program;
	param.key = "game";
 
	sctrlKernelLoadExecVSHWithApitype(apitype, program, ¶m);
} 

puedes leer todo lo del el entorno de programacion y ver las estructuras a ver con cual te identificas mas y se te hace mas facil ya solo agregas la funcion a cuando preciones X y listo espero te aya ayudado 

PD: las librerias kernel no vienen con el kid de programacion para torpes buscalas no recuerdo de donde las sake la verdad XD.


Imagen de barney77

Gracias sting oye y en donde

Gracias sting oye y en donde me recomiendas aprender?

EDITO: El kit que tengo si tiene las librerias, y mira lo he compilado, este:

#include <pspkernel.h>
#include <pspdebug.h>
#include <psploadexec.h>
#include <pspctrl.h>
#include <pspthreadman.h>
#include <psploadexec_kernel.h>
 
#define printf pspDebugScreenPrintf
 
PSP_MODULE_INFO("Autobot",1,0,0);
 
/* Llamada de salida */
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;		  
}
 
void runeboot{
 
	struct SceKernelLoadExecVSHParam param;
	int apitype = 0x141;
	char *program = "ms0:/PSP/GAME/Claw/EBOOT.PBP";
 
	memset(¶m, 0, sizeof(param));
	param.size = sizeof(param);
	param.args = strlen(program)+1;
	param.argp = program;
	param.key = "game";
 
	sctrlKernelLoadExecVSHWithApitype(apitype, program, ¶m);
} 
 
int main(){
		pspDebugScreenInit();
		SetupCallbacks();
		printf("Presiona X");
		SceCtrlData pad;
			while(1){
					sceCtrlReadBufferPositive(&pad,1);
						if (pad.Buttons & PSP_CTRL_CROSS){
								pspDebugScreenClear();
								printf("Ejecutando...\n");
								sceKernelDelayThread(2*1000*1000);
								pspDebugScreenClear();
								runeboot();
						}
			}
		sceKernelSleepThread();
		return 0;
	}

Y me marca errores(como 3) en la linea 48 y 54, la verdad esque no entiendo los errores xD, pero creo que lo mejor será empezar por algo más leve, como tu dices no es tan facil, pero de nuevo la pregunta, de donde aprendo?, esque los tutos de aqui de PSP no me parecen tan buenos, creo que se complican un poco más la vida.

Imagen de sting18

La verdad si pero es porque

La verdad si pero es porque los tutoriales no estan actualizados es como por decir los tutos de dioni en lua para DS el los empezo pero los hace un poco como te dire MMMM no muy redactados o no de la mejor manera pero si son funcionales que es lo que importa(sin ofender dioni) y pues te recomiendo aprender en pspstation hay hay mas bariedad de cosas para programar en C y esta mas explicado sabes que cuentas conmigo doble 7 que aunque no tengo mucho tiempo ahorita si pòdre resolverte varias de las dudas que tengas suerte amigo.


Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.