[Problema] sceKernelLoadExec(); & Varios

Buenas.
Tengo un problema. Ayer actualize a 3.90m33 (Ya era hora) y probando simples programas me di cuenta que el comando para cargar un archivo no me iba, es decir el sceKernelLoadExec.

He revisado el code y no veo nada mal... Al hacer Make, no me da ningun error tampoco...
Haber si le podeis echar un vistazo, ya que no se porque no me funciona.

#include <pspkernel.h>
#include <pspctrl.h>
#include <pspdebug.h>
#include <psploadexec.h>

PSP_MODULE_INFO("example", 0x1000, 1, 0);
PSP_MAIN_THREAD_ATTR(0);

int main()
{
SceCtrlData pad;
pspDebugScreenInit();
pspDebugScreenPrintf("X == PBP, O == PRX, [] == EXIT.");

sceCtrlReadBufferPositive(&pad, 1);

if(pad.Buttons & PSP_CTRL_CROSS)
sceKernelLoadExec("ms0:/eboot.pbp", NULL);
else if(pad.Buttons & PSP_CTRL_CIRCLE)
sceKernelLoadExec("ms0:/plugin.prx", NULL);
else if(pad.Buttons & PSP_CTRL_SQUARE)
sceKernelExitGame();

sceKernelSleepThread();
return 0;
}


Y este el Makefile

TARGET = Prueba
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LDFLAGS =

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Prueba

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak


Simplemente me aparece el texto en la pantalla. Pero no me funciona Ni el sceKernelExitGame(); ni el sceKernelLoadExec();

Espero que me podais ayudar. Ya que en 3.52M33 no tenia ningun problema con estas cosas...
Lo que estás compilando es un VSH elf que funciona en el kernel 1.50 pero no en el 3.90 ¿has instalado el addon de kernel 1.50? ¿En qué carpeta guardas tu eboot para probarlo?
dev_eddie escribió:Lo que estás compilando es un VSH elf que funciona en el kernel 1.50 pero no en el 3.90 ¿has instalado el addon de kernel 1.50? ¿En qué carpeta guardas tu eboot para probarlo?


Si, tengo instalado el Addon Kernel 1.50
Lo guardo en GAME150, ya que si lo ejecuto desde GAME me da un error de IMPOSIBLE INICIAR EL JUEGO.

Que tendria que hacer para que funcionara en 3.90?
tampoco va en 3.80-2 con el addon. puedes probar con sceKernelLoadExecVSH/sceKernelLoadExecVSHMs1/sceKernelLoadExecVSHMs2

sceKernelLoadExec en 1.50 solo carga desde la ms en modo kernel (en modo usuario solo desde umd) y fue eliminado como export en 2.60. En algún ejemplo he visto que se le pasa 0 en vez de null como segundo parámetro, el siguiente bloque sugiere que debes cambiarlo, pero yo no he probado.:
psptypes.h escribió:0028 #ifndef NULL
00029 #ifdef __cplusplus
00030 #define NULL 0
00031 #else
00032 #define NULL ((void *) 0)
00033 #endif /* __cplusplus */
00034 #endif


El código que posteaste aquí, el de Becus, ¿Lo probaste en el kernel 1.50 o en algún custom anterior?
Parece problema del Makefile.. Pero nosa sabria decirte
el mismo source que el no... Pero era practicamente lo mismo. Probare los otros modulos que me has puesto. Pero de todas formas el Exitgame() tampoco funciona...
Escribe

while(1)
{

delante del if(pad.Buttons & PSP_CTRL_CROSS) y cierra el bucle detrás de sceKernelExitGame(); .
Que yo sepa deberia funcionar :-p .
El principal problema es que sceKernelLoadExec() no funciona bajo custom firmwares [+risas]

Es un problema conocido, incluso hay varios juegos que utilizan esta funcion que no podian ser arrancados desde irshell porque usaban esa funcion para cargar (esde el xmb es ora historia, a saber lo que hace dax).

Aunque ahman logro solucionarlo en la ultima version no se sabe como, pero seguro que sencillo no fue.

Como te han dicho lo mejor es usar sceKernelLoadExecVSHMs2
7 respuestas