mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-25 03:11:58 +01:00
-improved homebrew boot compatility
This commit is contained in:
parent
088ae57074
commit
bcfae365b1
@ -6,8 +6,6 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "gecko/gecko.h"
|
#include "gecko/gecko.h"
|
||||||
#include "memory/mem2.hpp"
|
|
||||||
#include "memory/smartptr.hpp"
|
|
||||||
|
|
||||||
#define EXECUTE_ADDR ((u8 *)0x92000000)
|
#define EXECUTE_ADDR ((u8 *)0x92000000)
|
||||||
#define BOOTER_ADDR ((u8 *)0x93000000)
|
#define BOOTER_ADDR ((u8 *)0x93000000)
|
||||||
@ -28,16 +26,17 @@ u32 buffer_size = 0;
|
|||||||
|
|
||||||
static vector<string> Arguments;
|
static vector<string> Arguments;
|
||||||
|
|
||||||
bool IsDollZ (u8 *buff)
|
static bool IsDollZ(u8 *buf)
|
||||||
{
|
{
|
||||||
u8 dollz_stamp[] = {0x3C};
|
u8 cmp1[] = {0x3C};
|
||||||
int dollz_offs = 0x100;
|
return memcmp(&buf[0x100], cmp1, sizeof(cmp1)) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
int ret = memcmp (&buff[dollz_offs], dollz_stamp, sizeof(dollz_stamp));
|
static bool IsSpecialELF(u8 *buf)
|
||||||
if (ret == 0)
|
{
|
||||||
return true;
|
u32 cmp1[] = {0x7F454C46};
|
||||||
|
u8 cmp2[] = {0x00};
|
||||||
return false;
|
return memcmp(buf, cmp1, sizeof(cmp1)) == 0 && memcmp(&buf[0x24], cmp2, sizeof(cmp2)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddBootArgument(const char * argv)
|
void AddBootArgument(const char * argv)
|
||||||
@ -119,8 +118,10 @@ void writeStub()
|
|||||||
int BootHomebrew()
|
int BootHomebrew()
|
||||||
{
|
{
|
||||||
struct __argv args;
|
struct __argv args;
|
||||||
if (!IsDollZ(EXECUTE_ADDR))
|
if(!IsDollZ(EXECUTE_ADDR) && !IsSpecialELF(EXECUTE_ADDR))
|
||||||
SetupARGV(&args);
|
SetupARGV(&args);
|
||||||
|
else
|
||||||
|
gprintf("Homebrew Boot Arguments disabled\n");
|
||||||
|
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user