Looks good - applied with r564. Thanks for the help.
consx10, your turn again. ;)
Printable View
Looks good - applied with r564. Thanks for the help.
consx10, your turn again. ;)
Great. :) I'll be tagging/releasing PS2rd 0.5.3 later today.
There's another problem affecting ps2rd, try to do the following:
ps2link->ps2rd->uLE->ps2link->ps2rd->uLE
uLE will not execute, and this also happen with every program used instead of uLE, and also when eliminating ps2link from the loop...
EDIT;
I attached a patch for elfldr that solves different problems:
- the feezing mentionned above (please look my comment in elfldr's _init() function)
- the LoadExecPS2 hook is now able to reset IOP with appropriate modules for 3 devices; "cdrom", "mc" and "mass".
- the LoadExecPS2 hook now does full systemRestart, as the real syscall does.
- again about the LoadExecPS2 hook, it now places stack pointer on top of user memory (after taking care of preserving args), so that it should solves some problem with some games using "LoadExecPS2".
- the systemRestart init function also take care of preventing some modchips to allow memory to be cleared (those modchip are patching a0 inside kernel's InitializeUserMemory() rendering sbv_patch_user_mem_clear() useless.
OK, I think I found a second urgent fix to apply before to release.
_init and _fini or NOT in their respective .init and .fini section when explicitely declared in the erls.
With need to add this to engine, debugger, videomod and elfldr ERLs in order to constraint these function to their sections:
If not doing so, then liberl add all our ERLs _init and _fini to global symbols (which cause elfldr _fini call to call the _fini from videomod :crazy: ).Code:/* keep _init() and _fini() in their respective section */
int _init(void) __attribute__((section(".init")));
int _fini(void) __attribute__((section(".fini")));
EDIT:
I've produced 2 maps for elfldr so that you can check that.
In elfldr-without.map _init and _fini are in .text section.
OK, I'll add those patches to 0.5.4.
I cannot seem to load games with ifcaro's opl r499 (froze on red screen) with ps2rd (the latest download version available at github's) here.
I only have the cheat engine enabled and debugger disabled.
It was working for me on the last version of crazyc's opl fork.
Does anyone have the same problem here?
Please try with that patch on r505, and report if it at least passes the red screen.
To apply it, you clone the revision 505, put the patch above in a file named saying "opl.patch", in the open-ps2-loader sources directory.Code:diff -r 25542bdd00cb loader/syshook.c
--- a/loader/syshook.c Thu Dec 09 20:37:29 2010 +0100
+++ b/loader/syshook.c Fri Dec 10 13:05:24 2010 +0100
@@ -287,7 +287,7 @@
err:
GS_BGCOLOUR = 0x0000ff; // hangs on red screen
- while (1) {;}
+ //while (1) {;}
}
// ------------------------------------------------------------------------
@@ -345,13 +345,13 @@
DPRINTF("t_loadElf: elf path = '%s'\n", g_ElfPath);
DPRINTF("t_loadElf: System Restart...\n");
- DIntr();
+ /*DIntr();
ee_kmode_enter();
systemRestart();
while (!(*(vu32 *)R_EE_SBUS_SMFLAG & SBUS_CTRL_MSINT)) {;}
*(vu32 *)R_EE_SBUS_SMFLAG = SBUS_CTRL_MSINT;
ee_kmode_exit();
- EIntr();
+ EIntr();*/
if(!DisableDebug)
GS_BGCOLOUR = 0x00ff00;
cd open-ps2-loader
patch -p1 <opl.patch
Then recompile and test :)
Thanks for taking care of this. I'll be testing it too.
Sorry for the late reply guys.
I manage to load games from opl with ps2rd yesterday by changing
toCode:sdklibs: {
install = true;
addr = 0x000c0000;
};
in ps2rd.conf since i didn't need to use the debugger with opl.Code:sdklibs: {
install = true;
addr = 0x00090000;
};
Works great after that. :)