mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
-added new option in wiiflow.ini, "force_cios_load", if it is
enabled wiiflow will always reload to the cIOS even if a normal IOS with AHBPROT is found (disabled by default) -enabled skip_list_check by default -cleaned up a bit
This commit is contained in:
parent
99a2f9faad
commit
526d94a360
@ -30,6 +30,8 @@
|
||||
|
||||
#include "gc/gc.hpp"
|
||||
#include "fat.h"
|
||||
#include "devicemounter/sdhc.h"
|
||||
#include "devicemounter/usbstorage_libogc.h"
|
||||
#include "gecko/gecko.h"
|
||||
#include "fileOps/fileOps.h"
|
||||
#include "loader/utils.h"
|
||||
@ -212,7 +214,7 @@ void DEVO_GetLoader(const char *loader)
|
||||
void DEVO_SetOptions(const char *isopath, const char *partition, const char *gameID, bool memcard_emu)
|
||||
{
|
||||
// re-mount device we need
|
||||
fatMountSimple(partition, strncasecmp(partition, "sd", 2) ? &__io_usbstorage : &__io_wiisd);
|
||||
fatMountSimple(partition, strncasecmp(partition, "sd", 2) ? &__io_usbstorage_ogc : &__io_sdhc);
|
||||
|
||||
//start writing cfg to mem
|
||||
struct stat st;
|
||||
|
@ -81,23 +81,24 @@ void load_dip_249()
|
||||
|
||||
bool loadIOS(int ios, bool launch_game, bool emu_channel)
|
||||
{
|
||||
bool ret = true;
|
||||
m_music.Stop();
|
||||
Close_Inputs();
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
WDVD_Close();
|
||||
USBStorage2_Deinit();
|
||||
|
||||
#ifndef DOLPHIN
|
||||
bool iosOK = true;
|
||||
mload_close();
|
||||
if(ios != IOS_GetVersion())
|
||||
{
|
||||
m_music.Stop();
|
||||
Close_Inputs();
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
WDVD_Close();
|
||||
USBStorage2_Deinit();
|
||||
mload_close();
|
||||
|
||||
gprintf("Reloading into IOS %i from %i...\n", ios, IOS_GetVersion());
|
||||
Nand::Instance()->DeInit_ISFS();
|
||||
iosOK = IOS_ReloadIOS(ios) == 0;
|
||||
ret = IOS_ReloadIOS(ios) == 0;
|
||||
Nand::Instance()->Init_ISFS();
|
||||
gprintf("AHBPROT after IOS Reload: %u\n", (*HW_AHBPROT == 0xFFFFFFFF));
|
||||
}
|
||||
#endif
|
||||
|
||||
IOS_GetCurrentIOSInfo();
|
||||
if(CurrentIOS.Type == IOS_TYPE_HERMES)
|
||||
@ -120,9 +121,5 @@ bool loadIOS(int ios, bool launch_game, bool emu_channel)
|
||||
Open_Inputs();
|
||||
}
|
||||
}
|
||||
|
||||
return iosOK;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
@ -38,6 +38,7 @@ void Close_Inputs(void);
|
||||
|
||||
extern void __exception_setreload(int t);
|
||||
extern int mainIOS;
|
||||
extern bool useMainIOS;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "memory/memory.h"
|
||||
|
||||
CMenu *mainMenu;
|
||||
bool useMainIOS;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
@ -34,7 +35,6 @@ int main(int argc, char **argv)
|
||||
|
||||
Nand::Instance()->Init_ISFS();
|
||||
MEM2_init(47); //Should be safe to use
|
||||
vid.waitMessage(0.15f);
|
||||
gprintf(" \nWelcome to %s (%s-r%s)!\nThis is the debug output.\n", APP_NAME, APP_VERSION, SVN_REV);
|
||||
|
||||
char *gameid = NULL;
|
||||
@ -92,56 +92,47 @@ int main(int argc, char **argv)
|
||||
Sys_Init();
|
||||
Sys_ExitTo(EXIT_TO_HBC);
|
||||
|
||||
int ret = 1;
|
||||
|
||||
while(ret == 1)
|
||||
{
|
||||
Open_Inputs(); //(re)init wiimote
|
||||
Open_Inputs(); //(re)init wiimote
|
||||
#ifndef DOLPHIN
|
||||
const DISC_INTERFACE *handle = DeviceHandler::GetUSB0Interface();
|
||||
bool deviceAvailable = false;
|
||||
u8 timeout = 0;
|
||||
while(!deviceAvailable && timeout++ != 20)
|
||||
{
|
||||
deviceAvailable = (handle->startup() && handle->isInserted());
|
||||
if(deviceAvailable)
|
||||
break;
|
||||
usleep(50000);
|
||||
}
|
||||
#endif
|
||||
DeviceHandler::Instance()->MountAll();
|
||||
if(DeviceHandler::Instance()->IsInserted(SD))
|
||||
deviceAvailable = true;
|
||||
bool dipOK = Disc_Init() >= 0;
|
||||
|
||||
mainMenu = new CMenu(vid);
|
||||
mainMenu->init();
|
||||
|
||||
if(!iosOK)
|
||||
{
|
||||
mainMenu->terror("errboot1", L"No cIOS found!\ncIOS d2x 249 base 56 and 250 base 57 are enough for all your games.");
|
||||
const DISC_INTERFACE *handle = DeviceHandler::GetUSB0Interface();
|
||||
bool deviceAvailable = false;
|
||||
u8 timeout = time(NULL);
|
||||
while(!deviceAvailable && time(NULL) - timeout < 20)
|
||||
{
|
||||
deviceAvailable = (handle->startup() && handle->isInserted());
|
||||
if(deviceAvailable)
|
||||
break;
|
||||
}
|
||||
else if(!deviceAvailable)
|
||||
{
|
||||
mainMenu->terror("errboot2", L"Could not find a device to save configuration files on!");
|
||||
break;
|
||||
}
|
||||
else if(!dipOK)
|
||||
{
|
||||
mainMenu->terror("errboot3", L"Could not initialize the DIP module!");
|
||||
break;
|
||||
}
|
||||
else if(gameid != NULL && strlen(gameid) == 6)
|
||||
mainMenu->directlaunch(gameid);
|
||||
else
|
||||
{
|
||||
if(Emulator_boot)
|
||||
mainMenu->m_Emulator_boot = true;
|
||||
ret = mainMenu->main();
|
||||
}
|
||||
usleep(50000);
|
||||
}
|
||||
#endif
|
||||
DeviceHandler::Instance()->MountAll();
|
||||
if(DeviceHandler::Instance()->IsInserted(SD))
|
||||
deviceAvailable = true;
|
||||
vid.waitMessage(0.15f);
|
||||
bool dipOK = Disc_Init() >= 0;
|
||||
|
||||
mainMenu = new CMenu(vid);
|
||||
mainMenu->init();
|
||||
if(CurrentIOS.Version != mainIOS && useMainIOS)
|
||||
iosOK = loadIOS(mainIOS, false, false) && CustomIOS(CurrentIOS.Type);
|
||||
|
||||
if(!iosOK)
|
||||
mainMenu->terror("errboot1", L"No cIOS found!\ncIOS d2x 249 base 56 and 250 base 57 are enough for all your games.");
|
||||
else if(!deviceAvailable)
|
||||
mainMenu->terror("errboot2", L"Could not find a device to save configuration files on!");
|
||||
else if(!dipOK)
|
||||
mainMenu->terror("errboot3", L"Could not initialize the DIP module!");
|
||||
else if(gameid != NULL && strlen(gameid) == 6)
|
||||
mainMenu->directlaunch(gameid);
|
||||
else
|
||||
{
|
||||
if(Emulator_boot)
|
||||
mainMenu->m_Emulator_boot = true;
|
||||
mainMenu->main();
|
||||
}
|
||||
|
||||
mainMenu->cleanup();
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
Nand::Instance()->DeInit_ISFS();
|
||||
Sys_Exit();
|
||||
exit(1);
|
||||
|
@ -213,7 +213,7 @@ void CMenu::init(void)
|
||||
WriteToSD = m_cfg.getBool("DEBUG", "sd_write_log", false);
|
||||
bufferMessages = WriteToSD;
|
||||
}
|
||||
|
||||
useMainIOS = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
||||
bool onUSB = m_cfg.getBool("GENERAL", "data_on_usb", strncmp(drive, "usb", 3) == 0);
|
||||
|
||||
drive = check; //reset the drive variable for the check
|
||||
@ -417,7 +417,7 @@ void CMenu::init(void)
|
||||
m_loc.load(fmt("%s/%s.ini", m_languagesDir.c_str(), m_curLanguage.c_str()));
|
||||
}
|
||||
bool extcheck = m_cfg.getBool("GENERAL", "extended_list_check", false);
|
||||
bool skipcheck = m_cfg.getBool("GENERAL", "skip_list_check", false);
|
||||
bool skipcheck = m_cfg.getBool("GENERAL", "skip_list_check", true);
|
||||
m_tempView = false;
|
||||
|
||||
m_gameList.Init(m_listCacheDir, m_settingsDir, m_loc.getString(m_curLanguage, "gametdb_code", "EN"), m_DMLgameDir, extcheck, skipcheck);
|
||||
@ -492,7 +492,7 @@ void CMenu::init(void)
|
||||
|
||||
bool cleaned_up = false;
|
||||
|
||||
void CMenu::cleanup(bool hb)
|
||||
void CMenu::cleanup()
|
||||
{
|
||||
if(cleaned_up)
|
||||
return;
|
||||
@ -508,8 +508,6 @@ void CMenu::cleanup(bool hb)
|
||||
SoundHandler::DestroyInstance();
|
||||
soundDeinit();
|
||||
|
||||
if(!hb)
|
||||
DeviceHandler::DestroyInstance();
|
||||
m_vid.cleanup();
|
||||
m_cf.shutdown();
|
||||
|
||||
|
@ -28,10 +28,7 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern u8 currentPartition;
|
||||
}
|
||||
extern "C" { extern u8 currentPartition; }
|
||||
|
||||
class CMenu
|
||||
{
|
||||
@ -43,7 +40,7 @@ public:
|
||||
void terror(const char *key, const wchar_t *msg) { error(_fmt(key, msg)); }
|
||||
void exitHandler(int ExitTo);
|
||||
int main(void);
|
||||
void cleanup(bool hb = false);
|
||||
void cleanup(void);
|
||||
u8 m_current_view;
|
||||
private:
|
||||
struct SZone
|
||||
|
@ -866,6 +866,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
m_cfg.save(true);
|
||||
cleanup();
|
||||
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
#ifndef DOLPHIN
|
||||
USBStorage2_Deinit();
|
||||
USB_Deinitialize();
|
||||
@ -898,10 +899,10 @@ void CMenu::_launchHomebrew(const char *filepath, vector<string> arguments)
|
||||
m_cfg.save(true);
|
||||
|
||||
Playlog_Delete();
|
||||
cleanup(true); // wifi and sd gecko doesnt work anymore after cleanup
|
||||
|
||||
cleanup(); // wifi and sd gecko doesnt work anymore after cleanup
|
||||
LoadHomebrew(filepath);
|
||||
DeviceHandler::DestroyInstance(); //homebrew loaded, we can unmount devices now
|
||||
DeviceHandler::Instance()->UnMountAll(); //homebrew loaded, we can unmount devices now
|
||||
|
||||
AddBootArgument(filepath);
|
||||
for(u32 i = 0; i < arguments.size(); ++i)
|
||||
AddBootArgument(arguments[i].c_str());
|
||||
@ -988,6 +989,12 @@ int CMenu::_loadIOS(u8 gameIOS, int userIOS, string id, bool emu_channel)
|
||||
}
|
||||
return LOAD_IOS_SUCCEEDED;
|
||||
}
|
||||
else
|
||||
{
|
||||
DeviceHandler::Instance()->Mount(currentPartition);
|
||||
DeviceHandler::Instance()->Open_WBFS(currentPartition);
|
||||
Disc_Init();
|
||||
}
|
||||
return LOAD_IOS_NOT_NEEDED;
|
||||
}
|
||||
|
||||
@ -1087,6 +1094,7 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
||||
m_gcfg2.save(true);
|
||||
m_cat.save(true);
|
||||
m_cfg.save(true);
|
||||
cleanup();
|
||||
|
||||
if(useNK2o && !emu_disabled)
|
||||
{
|
||||
@ -1095,17 +1103,16 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
||||
error(_t("errneek1", L"Cannot launch neek2o. Verify your neek2o setup"));
|
||||
Sys_LoadMenu();
|
||||
}
|
||||
cleanup();
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
Launch_nk(gameTitle, emuPath.c_str());
|
||||
while(1);
|
||||
}
|
||||
else
|
||||
cleanup();
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
|
||||
if(!forwarder)
|
||||
{
|
||||
if(!emu_disabled)
|
||||
{
|
||||
{
|
||||
Nand::Instance()->Init(emuPath.c_str(), emuPartition, false);
|
||||
Nand::Instance()->Enable_Emu();
|
||||
}
|
||||
@ -1366,6 +1373,8 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
||||
m_cat.save(true);
|
||||
m_cfg.save(true);
|
||||
cleanup(); // wifi and sd gecko doesnt work anymore after cleanup
|
||||
DeviceHandler::Instance()->UnMountAll();
|
||||
|
||||
#ifndef DOLPHIN
|
||||
bool iosLoaded = false;
|
||||
if(!dvd || neek2o())
|
||||
|
Loading…
Reference in New Issue
Block a user