mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-24 10:51:55 +01:00
-fixed wii savegame emulation (derp)
-fixed wii games were unable to get online -automatically update the internal nand save if the wiiflow.ini got changed
This commit is contained in:
parent
45441ded06
commit
ef9ebea794
@ -83,6 +83,8 @@ void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 pat
|
|||||||
/* Copy in booter */
|
/* Copy in booter */
|
||||||
memcpy(EXT_ADDR, booter, booter_size);
|
memcpy(EXT_ADDR, booter, booter_size);
|
||||||
DCFlushRange(EXT_ADDR, booter_size);
|
DCFlushRange(EXT_ADDR, booter_size);
|
||||||
|
/* Wii Games will need it */
|
||||||
|
net_wc24cleanup();
|
||||||
/* Boot it */
|
/* Boot it */
|
||||||
JumpToEntry(EXT_ENTRY);
|
JumpToEntry(EXT_ENTRY);
|
||||||
}
|
}
|
||||||
@ -111,6 +113,7 @@ void ShutdownBeforeExit(bool KeepPatches)
|
|||||||
DeviceHandle.UnMountAll();
|
DeviceHandle.UnMountAll();
|
||||||
NandHandle.DeInit_ISFS(KeepPatches);
|
NandHandle.DeInit_ISFS(KeepPatches);
|
||||||
WDVD_Close();
|
WDVD_Close();
|
||||||
|
Close_Inputs();
|
||||||
/* Deinit network */
|
/* Deinit network */
|
||||||
if(networkInit == true)
|
if(networkInit == true)
|
||||||
{
|
{
|
||||||
|
@ -169,10 +169,13 @@ void NandSave::LoadIOS()
|
|||||||
free(file);
|
free(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NandSave::SaveIOS(const ios_settings_t settings)
|
void NandSave::SaveIOS(u8 ios, bool use_ios)
|
||||||
{
|
{
|
||||||
if(loaded == false)
|
if(loaded == false)
|
||||||
return;
|
return;
|
||||||
|
memset(&ios_settings, 0, sizeof(ios_settings_t));
|
||||||
|
ios_settings.cios = ios;
|
||||||
|
ios_settings.use_cios = use_ios;
|
||||||
gprintf("Saving IOS Settings to NAND\n");
|
gprintf("Saving IOS Settings to NAND\n");
|
||||||
memset(&ISFS_Path, 0, ISFS_MAXPATH);
|
memset(&ISFS_Path, 0, ISFS_MAXPATH);
|
||||||
strcpy(ISFS_Path, IOS_SAVE_PATH);
|
strcpy(ISFS_Path, IOS_SAVE_PATH);
|
||||||
@ -180,7 +183,7 @@ void NandSave::SaveIOS(const ios_settings_t settings)
|
|||||||
fd = ISFS_Open(ISFS_Path, ISFS_OPEN_WRITE);
|
fd = ISFS_Open(ISFS_Path, ISFS_OPEN_WRITE);
|
||||||
if(fd < 0)
|
if(fd < 0)
|
||||||
return;
|
return;
|
||||||
ret = ISFS_Write(fd, &settings, sizeof(ios_settings_t));
|
ret = ISFS_Write(fd, &ios_settings, sizeof(ios_settings_t));
|
||||||
ISFS_Close(fd);
|
ISFS_Close(fd);
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
ISFS_Delete(ISFS_Path);
|
ISFS_Delete(ISFS_Path);
|
||||||
|
@ -31,12 +31,13 @@ public:
|
|||||||
NandSave();
|
NandSave();
|
||||||
bool CheckSave();
|
bool CheckSave();
|
||||||
void LoadIOS();
|
void LoadIOS();
|
||||||
void SaveIOS(const ios_settings_t settings);
|
void SaveIOS(u8 ios, bool use_ios);
|
||||||
private:
|
private:
|
||||||
s32 fd;
|
s32 fd;
|
||||||
s32 ret;
|
s32 ret;
|
||||||
bool loaded;
|
bool loaded;
|
||||||
char ISFS_Path[ISFS_MAXPATH];
|
char ISFS_Path[ISFS_MAXPATH];
|
||||||
|
ios_settings_t ios_settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern NandSave InternalSave;
|
extern NandSave InternalSave;
|
||||||
|
@ -80,7 +80,6 @@ bool loadIOS(int ios, bool MountDevices)
|
|||||||
if(ios != CurIOS && IOS_GetType(ios) != IOS_TYPE_STUB)
|
if(ios != CurIOS && IOS_GetType(ios) != IOS_TYPE_STUB)
|
||||||
{
|
{
|
||||||
WDVD_Close();
|
WDVD_Close();
|
||||||
Close_Inputs();
|
|
||||||
NandHandle.Patch_AHB(); //No AHBPROT for the next IOS
|
NandHandle.Patch_AHB(); //No AHBPROT for the next IOS
|
||||||
gprintf("Reloading into IOS %i from %i...\n", ios, CurIOS);
|
gprintf("Reloading into IOS %i from %i...\n", ios, CurIOS);
|
||||||
ShutdownBeforeExit();
|
ShutdownBeforeExit();
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "fonts.h"
|
#include "fonts.h"
|
||||||
#include "banner/BannerWindow.hpp"
|
#include "banner/BannerWindow.hpp"
|
||||||
#include "channel/nand.hpp"
|
#include "channel/nand.hpp"
|
||||||
|
#include "channel/nand_save.hpp"
|
||||||
#include "fileOps/fileOps.h"
|
#include "fileOps/fileOps.h"
|
||||||
#include "gc/gc.hpp"
|
#include "gc/gc.hpp"
|
||||||
#include "gui/Gekko.h"
|
#include "gui/Gekko.h"
|
||||||
@ -216,6 +217,8 @@ void CMenu::init()
|
|||||||
init_network = (m_cfg.getBool("GENERAL", "async_network") || has_enabled_providers() || m_use_wifi_gecko);
|
init_network = (m_cfg.getBool("GENERAL", "async_network") || has_enabled_providers() || m_use_wifi_gecko);
|
||||||
_netInit();
|
_netInit();
|
||||||
/* Check if we want a cIOS loaded */
|
/* Check if we want a cIOS loaded */
|
||||||
|
u8 prevCios = mainIOS;
|
||||||
|
bool prevForceCIOS = useMainIOS;
|
||||||
int ForceIOS = min(m_cfg.getInt("GENERAL", "force_cios_rev", 0), 254);
|
int ForceIOS = min(m_cfg.getInt("GENERAL", "force_cios_rev", 0), 254);
|
||||||
if(ForceIOS > 0)
|
if(ForceIOS > 0)
|
||||||
{
|
{
|
||||||
@ -223,6 +226,8 @@ void CMenu::init()
|
|||||||
mainIOS = ForceIOS;
|
mainIOS = ForceIOS;
|
||||||
}
|
}
|
||||||
useMainIOS = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
useMainIOS = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
||||||
|
if(prevCios != mainIOS || prevForceCIOS != useMainIOS)
|
||||||
|
InternalSave.SaveIOS(mainIOS, useMainIOS);
|
||||||
/* Do our USB HDD Checks */
|
/* Do our USB HDD Checks */
|
||||||
bool onUSB = m_cfg.getBool("GENERAL", "data_on_usb", strncmp(drive, "usb", 3) == 0);
|
bool onUSB = m_cfg.getBool("GENERAL", "data_on_usb", strncmp(drive, "usb", 3) == 0);
|
||||||
drive = check; //reset the drive variable for the check
|
drive = check; //reset the drive variable for the check
|
||||||
@ -527,8 +532,6 @@ void CMenu::cleanup()
|
|||||||
CoverFlow.shutdown();
|
CoverFlow.shutdown();
|
||||||
|
|
||||||
wiiLightOff();
|
wiiLightOff();
|
||||||
Close_Inputs();
|
|
||||||
|
|
||||||
LWP_MutexDestroy(m_mutex);
|
LWP_MutexDestroy(m_mutex);
|
||||||
m_mutex = 0;
|
m_mutex = 0;
|
||||||
|
|
||||||
|
@ -28,8 +28,6 @@ s16 m_bootLblCurCIOSrev;
|
|||||||
s16 m_bootLblCIOSrevM;
|
s16 m_bootLblCIOSrevM;
|
||||||
s16 m_bootLblCIOSrevP;
|
s16 m_bootLblCIOSrevP;
|
||||||
|
|
||||||
ios_settings_t settings;
|
|
||||||
|
|
||||||
static void showBoot(void)
|
static void showBoot(void)
|
||||||
{
|
{
|
||||||
m_btnMgr.show(m_bootLblTitle);
|
m_btnMgr.show(m_bootLblTitle);
|
||||||
@ -98,12 +96,7 @@ void CMenu::_Boot(void)
|
|||||||
bool cur_load = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
bool cur_load = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
||||||
u8 cur_ios = min(m_cfg.getInt("GENERAL", "force_cios_rev", 0), 254);
|
u8 cur_ios = min(m_cfg.getInt("GENERAL", "force_cios_rev", 0), 254);
|
||||||
if(prev_load != cur_load || prev_ios != cur_ios)
|
if(prev_load != cur_load || prev_ios != cur_ios)
|
||||||
{
|
InternalSave.SaveIOS(cur_ios, cur_load);
|
||||||
memset(&settings, 0, sizeof(ios_settings_t));
|
|
||||||
settings.cios = min(m_cfg.getInt("GENERAL", "force_cios_rev", 0), 254);
|
|
||||||
settings.use_cios = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
|
||||||
InternalSave.SaveIOS(settings);
|
|
||||||
}
|
|
||||||
hideBoot(false);
|
hideBoot(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1263,9 +1263,13 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
|||||||
NandHandle.CreatePath("%s:/wiiflow/nandemu", DeviceName[emuPartition]);
|
NandHandle.CreatePath("%s:/wiiflow/nandemu", DeviceName[emuPartition]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Init NAND Emu Settings */
|
||||||
|
NANDemuView = true;
|
||||||
|
NandHandle.SetNANDEmu(emuPartition);
|
||||||
|
NandHandle.SetPaths(emuPath.c_str(), DeviceName[emuPartition]);
|
||||||
|
/* Set them */
|
||||||
m_cfg.setInt(WII_DOMAIN, "savepartition", emuPartition);
|
m_cfg.setInt(WII_DOMAIN, "savepartition", emuPartition);
|
||||||
m_cfg.setString(WII_DOMAIN, "savepath", emuPath);
|
m_cfg.setString(WII_DOMAIN, "savepath", emuPath);
|
||||||
|
|
||||||
if(emulate_mode == 2 || emulate_mode > 3)
|
if(emulate_mode == 2 || emulate_mode > 3)
|
||||||
{
|
{
|
||||||
if(emulate_mode == 2)
|
if(emulate_mode == 2)
|
||||||
@ -1332,9 +1336,6 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
|||||||
}
|
}
|
||||||
if(emulate_mode && !neek2o() && CurrentIOS.Type == IOS_TYPE_D2X)
|
if(emulate_mode && !neek2o() && CurrentIOS.Type == IOS_TYPE_D2X)
|
||||||
{
|
{
|
||||||
NANDemuView = true;
|
|
||||||
NandHandle.SetNANDEmu(emuPartition); /* Init NAND Emu */
|
|
||||||
NandHandle.SetPaths(emuPath.c_str(), DeviceName[emuPartition]);
|
|
||||||
/* Enable our Emu NAND */
|
/* Enable our Emu NAND */
|
||||||
DeviceHandle.UnMountAll();
|
DeviceHandle.UnMountAll();
|
||||||
if(emulate_mode == 3)
|
if(emulate_mode == 3)
|
||||||
|
Loading…
Reference in New Issue
Block a user