mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-24 19:01:56 +01:00
-changed homebrew loading yet again, not as safe as previous
way but maybe working better for bigger homebrew
This commit is contained in:
parent
5a2efc4e3b
commit
cc7c5a9917
@ -24,8 +24,8 @@ extern const u32 stub_bin_size;
|
|||||||
typedef void (*entrypoint) (void);
|
typedef void (*entrypoint) (void);
|
||||||
extern "C" { void __exception_closeall(); }
|
extern "C" { void __exception_closeall(); }
|
||||||
|
|
||||||
u8 *tmpbuffer = NULL;
|
u32 buffer_size = 0;
|
||||||
u32 tmpbuffer_size = 0;
|
|
||||||
static vector<string> Arguments;
|
static vector<string> Arguments;
|
||||||
|
|
||||||
static u32 stubtitlepositions[8] = { 0x80001bf2, 0x80001bf3, 0x80001c06, 0x80001c07,
|
static u32 stubtitlepositions[8] = { 0x80001bf2, 0x80001bf3, 0x80001c06, 0x80001c07,
|
||||||
@ -62,9 +62,9 @@ int LoadHomebrew(const char *filepath)
|
|||||||
u32 filesize = ftell(file);
|
u32 filesize = ftell(file);
|
||||||
rewind(file);
|
rewind(file);
|
||||||
|
|
||||||
tmpbuffer_size = filesize;
|
buffer_size = filesize;
|
||||||
tmpbuffer = (u8*)MEM1_alloc(tmpbuffer_size);
|
fread(EXECUTE_ADDR, 1, buffer_size, file);
|
||||||
fread(tmpbuffer, 1, tmpbuffer_size, file);
|
DCFlushRange(EXECUTE_ADDR, buffer_size);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -141,16 +141,12 @@ int BootHomebrew(u64 chan_title)
|
|||||||
{
|
{
|
||||||
writeStub(chan_title);
|
writeStub(chan_title);
|
||||||
struct __argv args;
|
struct __argv args;
|
||||||
if (!IsDollZ(tmpbuffer))
|
if (!IsDollZ(EXECUTE_ADDR))
|
||||||
SetupARGV(&args);
|
SetupARGV(&args);
|
||||||
|
|
||||||
memcpy(BOOTER_ADDR, app_booter_bin, app_booter_bin_size);
|
memcpy(BOOTER_ADDR, app_booter_bin, app_booter_bin_size);
|
||||||
DCFlushRange(BOOTER_ADDR, app_booter_bin_size);
|
DCFlushRange(BOOTER_ADDR, app_booter_bin_size);
|
||||||
|
|
||||||
memcpy(EXECUTE_ADDR, tmpbuffer, tmpbuffer_size);
|
|
||||||
DCFlushRange(EXECUTE_ADDR, tmpbuffer_size);
|
|
||||||
MEM1_free(tmpbuffer);
|
|
||||||
|
|
||||||
entrypoint entry = (entrypoint)BOOTER_ADDR;
|
entrypoint entry = (entrypoint)BOOTER_ADDR;
|
||||||
|
|
||||||
memmove(ARGS_ADDR, &args, sizeof(args));
|
memmove(ARGS_ADDR, &args, sizeof(args));
|
||||||
|
@ -886,7 +886,7 @@ void CMenu::_launchHomebrew(const char *filepath, vector<string> arguments)
|
|||||||
|
|
||||||
ISFS_Deinitialize();
|
ISFS_Deinitialize();
|
||||||
USBStorage_Deinit();
|
USBStorage_Deinit();
|
||||||
MEM2_clear();
|
//MEM2_clear();
|
||||||
BootHomebrew(title);
|
BootHomebrew(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user