mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
-we should read in the loader.bin before closing the devices :P
This commit is contained in:
parent
aeafda53a0
commit
b4dbfeaa1d
@ -126,7 +126,9 @@ void DML_New_WriteOptions()
|
||||
|
||||
|
||||
// Devolution
|
||||
u8 *loader_bin = NULL;
|
||||
static gconfig *DEVO_CONFIG = (gconfig*)0x80000020;
|
||||
#define LAUNCH() ((void(*)(void))loader_bin)()
|
||||
|
||||
bool DEVO_Installed(const char* path)
|
||||
{
|
||||
@ -142,8 +144,23 @@ bool DEVO_Installed(const char* path)
|
||||
return devo;
|
||||
}
|
||||
|
||||
void DEVO_SetOptions(const char *path, const char *partition)
|
||||
{
|
||||
void DEVO_SetOptions(const char *path, const char *partition, const char* loader)
|
||||
{
|
||||
//Read in loader.bin
|
||||
char loader_path[256];
|
||||
snprintf(loader_path, sizeof(loader_path), "%s/loader.bin", loader);
|
||||
FILE *f = fopen(loader_path, "rb");
|
||||
if(f)
|
||||
{
|
||||
fseek(f, 0, SEEK_END);
|
||||
u32 size = ftell(f);
|
||||
rewind(f);
|
||||
loader_bin = (u8*)MEM2_alloc(size);
|
||||
fread(loader_bin, 1, size, f);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
//start writing cfg to mem
|
||||
struct stat st;
|
||||
char full_path[256];
|
||||
int data_fd;
|
||||
@ -204,24 +221,11 @@ void DEVO_SetOptions(const char *path, const char *partition)
|
||||
DCFlushRange(lowmem, 64);
|
||||
}
|
||||
|
||||
u8 *loader_bin = NULL;
|
||||
#define LAUNCH() ((void(*)(void))loader_bin)()
|
||||
|
||||
void DEVO_Boot(const char* path)
|
||||
void DEVO_Boot()
|
||||
{
|
||||
char loader_path[256];
|
||||
snprintf(loader_path, sizeof(loader_path), "%s/loader.bin", path);
|
||||
FILE *f = fopen(loader_path, "rb");
|
||||
if(f)
|
||||
{
|
||||
fseek(f, 0, SEEK_END);
|
||||
u32 size = ftell(f);
|
||||
rewind(f);
|
||||
loader_bin = (u8*)MEM2_alloc(size);
|
||||
fread(loader_bin, 1, size, f);
|
||||
puts((const char*)loader_bin + 4);
|
||||
LAUNCH();
|
||||
}
|
||||
// the Devolution blob has an ID string at offset 4
|
||||
puts((const char*)loader_bin + 4);
|
||||
LAUNCH();
|
||||
}
|
||||
|
||||
|
||||
|
@ -64,8 +64,8 @@ typedef struct global_config
|
||||
} gconfig;
|
||||
|
||||
bool DEVO_Installed(const char* path);
|
||||
void DEVO_SetOptions(const char* path, const char *partition);
|
||||
void DEVO_Boot(const char* path);
|
||||
void DEVO_SetOptions(const char* path, const char *partition, const char *loader);
|
||||
void DEVO_Boot();
|
||||
|
||||
|
||||
// General
|
||||
|
@ -801,7 +801,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool DML)
|
||||
DMLvideoMode = 2;
|
||||
|
||||
if(m_devo_installed && strcasestr(path.c_str(), "boot.bin") == NULL)
|
||||
DEVO_SetOptions(path.c_str(), DeviceName[currentPartition]);
|
||||
DEVO_SetOptions(path.c_str(), DeviceName[currentPartition], m_dataDir.c_str());
|
||||
else if(DML)
|
||||
{
|
||||
m_cfg.setString("DML", "current_item", id);
|
||||
@ -814,13 +814,11 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool DML)
|
||||
nodisc = (nodisc == 0) ? m_cfg.getInt("DML", "no_disc_patch", 0) : nodisc-1;
|
||||
bool cheats = m_gcfg2.testOptBool(id, "cheat", m_cfg.getBool("DML", "cheat", false));
|
||||
bool DML_debug = m_gcfg2.getBool(id, "debugger", false);
|
||||
|
||||
if(cheats)
|
||||
{
|
||||
snprintf(CheatPath, sizeof(CheatPath), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", id.c_str()));
|
||||
snprintf(NewCheatPath, sizeof(NewCheatPath), "%s/%s/%s", fmt(DML_DIR, "sd"), path.c_str(), fmt("%s.gct", id.c_str()));
|
||||
}
|
||||
|
||||
string newPath;
|
||||
if(strcasestr(path.c_str(), "boot.bin") != NULL)
|
||||
{
|
||||
@ -863,7 +861,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool DML)
|
||||
Sys_LoadMenu();
|
||||
}
|
||||
else
|
||||
DEVO_Boot(m_dataDir.c_str());
|
||||
DEVO_Boot();
|
||||
}
|
||||
|
||||
void CMenu::_launchHomebrew(const char *filepath, vector<string> arguments)
|
||||
|
Loading…
Reference in New Issue
Block a user