Page 1 of 1

LaunchElf and mcInit

Posted: Tue Nov 23, 2004 9:02 am
by radad
When I launch mc_example from ps2sdk using LaunchElf the mcInit fails and returns -120. Any ideas on this?

Posted: Thu Nov 25, 2004 9:20 am
by radad
In mcInit at the line:

Code: Select all

ret = SifCallRpc(&cdata, mcRpcCmd[mcType][MC_RPCCMD_INIT], 0, &mcCmd, 48, rdata, 12, 0, 0)
This passes ok and returns 0, however rdata contains all zeros so that this part fails:

Code: Select all

POPDATA( int, UNCACHED_SEG((rdata+4)), ret, i);
if&#40;ret < 0x205&#41;
    printf&#40;"libmc&#58; mcserv is too old &#40;%x&#41;\n", ret&#41;;
and the memory card fails to initialize.

Any ideas on why this is happening? Is it because rom0:MCSERV is loaded instead of rom0:XMCSERV?

I definately load rom0:XMCSERV but rom0:MCSERV is already loaded by LaunchELF. Does loading rom0:XMCSERV overwrite rom0:MCSERV? Or does the loading of rom0:XMCSERV fail?

If it fails is there a way to unload rom0:MCSERV or even reset the PS2 so that no modules are loaded?

Posted: Fri Nov 26, 2004 6:17 pm
by ole
Look here (how to reset iop): http://forums.ps2dev.org/viewtopic.php?t=13
edit:
or try reset like that:

Code: Select all

void resetIOP&#40;&#41; &#123;

	SifInitRpc&#40;0&#41;;
	SifExitIopHeap&#40;&#41;;
	SifLoadFileExit&#40;&#41;;
	SifExitRpc&#40;&#41;;


	SifIopReset&#40;"rom0&#58;UDNL rom0&#58;EELOADCNF",0&#41;;

	while &#40;!SifIopSync&#40;&#41;&#41; ; 
	SifInitRpc&#40;0&#41;;
&#125;

Posted: Wed Dec 01, 2004 8:53 am
by radad
Got to try this out last night. It worked, thanks for your help.

Should this go into the ps2sdk given that most homebrew noobs, like me, will run their elfs from some launcher?

Or should it be the job of the launcher to return the PS2 to a virgin state before executing the elf?