mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-24 04:09:15 +01:00
-fixed issue with emu nand path string.
-recoded cheats download. it should work but geckocodes.org now uses some browser check which prevents downloads on wii. either manually download via pc or get abz's master pack which contains a lot of cheats. -added comments and minor changes to wait message code.
This commit is contained in:
parent
52ea6f6b99
commit
493e4dc8a9
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB |
@ -553,18 +553,18 @@ void CVideo::render(void)
|
||||
GX_InvalidateTexAll();
|
||||
}
|
||||
|
||||
void * CVideo::_showWaitMessages(void *obj)
|
||||
void * CVideo::_showWaitMessages(void *obj)// wait images thread
|
||||
{
|
||||
CVideo *m = static_cast<CVideo *>(obj);
|
||||
m->m_showingWaitMessages = true;
|
||||
u32 frames = m->m_waitMessageDelay * 50;
|
||||
u32 waitFrames = frames;
|
||||
u32 frames = m->m_waitMessageDelay * 50;// set delay start
|
||||
u32 waitFrames = frames;// set delay counter to delay start
|
||||
|
||||
s8 fadeDirection = 1;
|
||||
s8 PNGfadeDirection = 1;
|
||||
s8 PNGfadeDirection = 1;// set frames movement direction
|
||||
s16 currentLightLevel = 0;
|
||||
|
||||
vector<TexData>::iterator waitItr = m->m_waitMessages.begin();
|
||||
vector<TexData>::iterator waitItr = m->m_waitMessages.begin();// set start frame image
|
||||
m->_clearScreen();
|
||||
|
||||
m->prepare();
|
||||
@ -586,25 +586,25 @@ void * CVideo::_showWaitMessages(void *obj)
|
||||
}
|
||||
wiiLightSetLevel(currentLightLevel);
|
||||
|
||||
if(waitFrames == 0)
|
||||
if(waitFrames == 0)// if delay count reaches 0
|
||||
{
|
||||
m->waitMessage(*waitItr);
|
||||
waitItr += PNGfadeDirection;
|
||||
m->waitMessage(*waitItr);// draw frame image
|
||||
waitItr += PNGfadeDirection;// move to next image
|
||||
if(waitItr + 1 == m->m_waitMessages.end() || waitItr == m->m_waitMessages.begin())
|
||||
PNGfadeDirection *= (-1);
|
||||
waitFrames = frames;
|
||||
PNGfadeDirection *= (-1);// change direction if at beginning or end
|
||||
waitFrames = frames;// reset delay count
|
||||
m->render();
|
||||
}
|
||||
else
|
||||
VIDEO_WaitVSync();
|
||||
waitFrames--;
|
||||
waitFrames--;// decrement delay count
|
||||
}
|
||||
//gprintf("Wait Message Thread: End\n");
|
||||
m->m_showingWaitMessages = false;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void CVideo::hideWaitMessage()
|
||||
void CVideo::hideWaitMessage()// stop wait images and wii disc slot light threads
|
||||
{
|
||||
m_showWaitMessage = false;
|
||||
if(waitThread != LWP_THREAD_NULL)
|
||||
@ -622,7 +622,7 @@ void CVideo::hideWaitMessage()
|
||||
waitThread = LWP_THREAD_NULL;
|
||||
}
|
||||
|
||||
void CVideo::waitMessage(float delay)
|
||||
void CVideo::waitMessage(float delay)// called from main.cpp to show wait animation on wf boot
|
||||
{
|
||||
if(m_defaultWaitMessages.size() == 0)
|
||||
{
|
||||
@ -638,10 +638,10 @@ void CVideo::waitMessage(float delay)
|
||||
for(int i = 0; i < 8; i++)
|
||||
m_defaultWaitMessages.push_back(m_wTextures[i]);
|
||||
}
|
||||
waitMessage(vector<TexData>(), delay);
|
||||
waitMessage(m_defaultWaitMessages, delay);
|
||||
}
|
||||
|
||||
void CVideo::waitMessage(const vector<TexData> &tex, float delay)
|
||||
void CVideo::waitMessage(const vector<TexData> &tex, float delay)// start wait images and wii slot light threads or draw
|
||||
{
|
||||
hideWaitMessage();
|
||||
m_WaitThreadRunning = true;
|
||||
@ -658,19 +658,19 @@ void CVideo::waitMessage(const vector<TexData> &tex, float delay)
|
||||
}
|
||||
|
||||
if(m_waitMessages.size() == 1)
|
||||
waitMessage(m_waitMessages[0]);
|
||||
else if(m_waitMessages.size() > 1)
|
||||
waitMessage(m_waitMessages[0]);// draws frame image using function below (for one frame image only) but no render?
|
||||
else if(m_waitMessages.size() > 1)// if more than one frame
|
||||
{
|
||||
/* changing light */
|
||||
wiiLightSetLevel(0);
|
||||
wiiLightStartThread();
|
||||
wiiLightStartThread();// start thread in gekko.c that pulses the wii disc slot light on and off
|
||||
/* onscreen animation */
|
||||
m_showWaitMessage = true;
|
||||
m_showWaitMessage = true;// start wait images thread to animate them
|
||||
LWP_CreateThread(&waitThread, _showWaitMessages, this, waitMessageStack, waitMessageStackSize, LWP_PRIO_HIGHEST);
|
||||
}
|
||||
}
|
||||
|
||||
void CVideo::waitMessage(const TexData &tex)
|
||||
void CVideo::waitMessage(const TexData &tex)//draw frame image
|
||||
{
|
||||
Mtx modelViewMtx;
|
||||
GXTexObj texObj;
|
||||
@ -715,7 +715,7 @@ s32 CVideo::TakeScreenshot(const char *path)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void DrawTexture(TexData * &tex)
|
||||
void DrawTexture(TexData * &tex)// used by coverflow to draw cover texture. use in mainloopcommon() in menu.cpp
|
||||
{
|
||||
if(tex == NULL)
|
||||
return;
|
||||
@ -758,7 +758,7 @@ void DrawTexture(TexData * &tex)
|
||||
GX_End();
|
||||
}
|
||||
|
||||
void DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color)
|
||||
void DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color)// used by banner window and screen saver below
|
||||
{
|
||||
Mtx modelViewMtx;
|
||||
guMtxIdentity(modelViewMtx);
|
||||
@ -786,7 +786,7 @@ void DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color)
|
||||
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
|
||||
}
|
||||
|
||||
void DrawTexturePos(const TexData *tex)
|
||||
void DrawTexturePos(const TexData *tex)// draws movie frame texture when playing movie in menu_game.cpp
|
||||
{
|
||||
Mtx modelViewMtx;
|
||||
GXTexObj texObj;
|
||||
|
@ -2292,8 +2292,7 @@ bool CMenu::_loadChannelList(void)
|
||||
if(chantypes & CHANNELS_EMU)
|
||||
{
|
||||
NANDemuView = true;
|
||||
string emuPath;
|
||||
int emuPartition = _FindEmuPart(emuPath, false, false);// check if emunand folder exist and on FAT
|
||||
int emuPartition = _FindEmuPart(false, false);// check if emunand folder exist and on FAT
|
||||
if(emuPartition >= 0)
|
||||
{
|
||||
currentPartition = emuPartition;
|
||||
@ -2461,7 +2460,8 @@ void CMenu::_hideWaitMessage()
|
||||
|
||||
void CMenu::_showWaitMessage()
|
||||
{
|
||||
m_vid.waitMessage(_textures("GENERAL", "waitmessage"), m_theme.getFloat("GENERAL", "waitmessage_delay", 0.f));
|
||||
m_vid.waitMessage(0.15f);
|
||||
//m_vid.waitMessage(_textures("GENERAL", "waitmessage"), m_theme.getFloat("GENERAL", "waitmessage_delay", 0.f));
|
||||
}
|
||||
|
||||
typedef struct map_entry
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <ogc/pad.h>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#include "btnmap.h"
|
||||
#include "channel/banner.h"
|
||||
@ -968,7 +969,6 @@ private:
|
||||
void _hideCategorySettings(bool instant = false);
|
||||
void _hideSystem(bool instant = false);
|
||||
void _hideGameInfo(bool instant = false);
|
||||
void _hideCheatDownload(bool instant = false);
|
||||
void _hideNandEmu(bool instant = false);
|
||||
void _hideNandEmuPg();
|
||||
void _hideHome(bool instant = false);
|
||||
@ -1005,7 +1005,6 @@ private:
|
||||
void _showWBFS(WBFS_OP op);
|
||||
void _showCFTheme(u32 curParam, int version, bool wide);
|
||||
void _showGameSettings(void);
|
||||
void _showCheatDownload(void);
|
||||
void _showHome(void);
|
||||
void _showExitTo(void);
|
||||
void _showCoverBanner(void);
|
||||
@ -1178,14 +1177,14 @@ private:
|
||||
void _stopSounds(void);
|
||||
static void * _NandDumper(void *obj);
|
||||
static void * _NandFlasher(void *obj);
|
||||
int _FindEmuPart(string &emuPath, bool searchvalid, bool savesnand);
|
||||
int _FindEmuPart(bool searchvalid, bool savesnand);
|
||||
bool _checkSave(string id, bool nand);
|
||||
bool _TestEmuNand(int epart, const char *path, bool indept);
|
||||
void _checkEmuNandSettings(void);
|
||||
void _FullNandCheck(void);
|
||||
void _listEmuNands(const char *path, vector<string> &emuNands);
|
||||
|
||||
static void * _downloadCheatFileAsync(void *obj);
|
||||
int _downloadCheatFileAsync();
|
||||
int _downloadBannerAsync();
|
||||
static void * _downloadUrlAsync(void *obj);
|
||||
|
||||
|
@ -10,47 +10,17 @@
|
||||
|
||||
u8 m_cheatSettingsPage = 0;
|
||||
|
||||
void CMenu::_hideCheatDownload(bool instant)
|
||||
int CMenu::_downloadCheatFileAsync()
|
||||
{
|
||||
m_btnMgr.hide(m_downloadBtnCancel, instant);
|
||||
m_btnMgr.hide(m_downloadPBar, instant);
|
||||
m_btnMgr.hide(m_downloadLblMessage[0], 0, 0, -2.f, 0.f, instant);
|
||||
m_btnMgr.hide(m_downloadLblMessage[1], 0, 0, -2.f, 0.f, instant);
|
||||
m_thrdTotal = 2;// download and save
|
||||
|
||||
m_thrdMessage = _t("dlmsg1", L"Initializing network...");
|
||||
m_thrdMessageAdded = true;
|
||||
if(_initNetwork() < 0)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
|
||||
void CMenu::_showCheatDownload(void)
|
||||
{
|
||||
_setBg(m_downloadBg, m_downloadBg);
|
||||
m_btnMgr.show(m_downloadBtnCancel);
|
||||
m_btnMgr.show(m_downloadPBar);
|
||||
}
|
||||
|
||||
void * CMenu::_downloadCheatFileAsync(void *obj)
|
||||
{
|
||||
CMenu *m = (CMenu *)obj;
|
||||
if (!m->m_thrdWorking)
|
||||
return 0;
|
||||
|
||||
m->m_thrdStop = false;
|
||||
|
||||
LWP_MutexLock(m->m_mutex);
|
||||
m->_setThrdMsg(m->_t("cfgg23", L"Downloading cheat file..."), 0);
|
||||
LWP_MutexUnlock(m->m_mutex);
|
||||
|
||||
if (m->_initNetwork() < 0)
|
||||
{
|
||||
m->m_thrdWorking = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*u32 bufferSize = 0x080000; // Maximum download size 512kb
|
||||
u8 *buffer = (u8*)MEM2_alloc(bufferSize);
|
||||
if(buffer == NULL)
|
||||
{
|
||||
m->m_thrdWorking = false;
|
||||
return 0;
|
||||
}*/
|
||||
|
||||
const char *id = CoverFlow.getId();
|
||||
//char type = id[0] == 'S' ? 'R' : id[0];
|
||||
|
||||
@ -58,14 +28,11 @@ void * CMenu::_downloadCheatFileAsync(void *obj)
|
||||
|
||||
if(cheatfile.data != NULL && cheatfile.size > 65 && cheatfile.data[0] != '<')
|
||||
{
|
||||
fsop_WriteFile(fmt("%s/%s.txt", m->m_txtCheatDir.c_str(), id), cheatfile.data, cheatfile.size);
|
||||
//free(buffer);
|
||||
m->m_thrdWorking = false;
|
||||
update_pThread(1);//its downloaded
|
||||
fsop_WriteFile(fmt("%s/%s.txt", m_txtCheatDir.c_str(), id), cheatfile.data, cheatfile.size);
|
||||
return 0;
|
||||
}
|
||||
//free(buffer);
|
||||
m->m_thrdWorking = false;
|
||||
return 0;
|
||||
return -3;// download failed
|
||||
}
|
||||
|
||||
void CMenu::_CheatSettings()
|
||||
@ -164,73 +131,41 @@ void CMenu::_CheatSettings()
|
||||
}
|
||||
else if (m_btnMgr.selected(m_cheatBtnDownload))
|
||||
{
|
||||
int msg = 0;
|
||||
wstringEx prevMsg;
|
||||
|
||||
// Download cheat code
|
||||
m_btnMgr.setProgress(m_downloadPBar, 0.f);
|
||||
_hideCheatSettings();
|
||||
_showCheatDownload();
|
||||
m_btnMgr.setText(m_downloadBtnCancel, _t("dl1", L"Cancel"));
|
||||
m_thrdStop = false;
|
||||
m_thrdMessageAdded = false;
|
||||
|
||||
m_thrdWorking = true;
|
||||
lwp_t thread = LWP_THREAD_NULL;
|
||||
LWP_CreateThread(&thread, _downloadCheatFileAsync, this, downloadStack, downloadStackSize, 40);
|
||||
while(m_thrdWorking)
|
||||
bool dl_finished = false;
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if ((BTN_HOME_PRESSED || BTN_B_PRESSED) && !m_thrdWorking)
|
||||
if((BTN_HOME_PRESSED || BTN_B_PRESSED) && dl_finished)
|
||||
{
|
||||
m_btnMgr.hide(m_wbfsPBar);
|
||||
m_btnMgr.hide(m_wbfsLblMessage);
|
||||
m_btnMgr.hide(m_wbfsLblDialog);
|
||||
break;
|
||||
if (BTN_A_PRESSED && !(m_thrdWorking && m_thrdStop))
|
||||
{
|
||||
if (m_btnMgr.selected(m_downloadBtnCancel))
|
||||
{
|
||||
LockMutex lock(m_mutex);
|
||||
m_thrdStop = true;
|
||||
m_thrdMessageAdded = true;
|
||||
m_thrdMessage = _t("dlmsg6", L"Canceling...");
|
||||
}
|
||||
}
|
||||
if (Sys_Exiting())
|
||||
if(!dl_finished)
|
||||
{
|
||||
LockMutex lock(m_mutex);
|
||||
m_thrdStop = true;
|
||||
m_thrdMessageAdded = true;
|
||||
m_thrdMessage = _t("dlmsg6", L"Canceling...");
|
||||
m_thrdWorking = false;
|
||||
}
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 0.f, true);
|
||||
m_btnMgr.setText(m_wbfsLblMessage, L"0%");
|
||||
m_btnMgr.setText(m_wbfsLblDialog, L"");
|
||||
m_btnMgr.show(m_wbfsPBar);
|
||||
m_btnMgr.show(m_wbfsLblMessage);
|
||||
m_btnMgr.show(m_wbfsLblDialog);
|
||||
|
||||
if (m_thrdMessageAdded)
|
||||
{
|
||||
LockMutex lock(m_mutex);
|
||||
m_thrdMessageAdded = false;
|
||||
m_btnMgr.setProgress(m_downloadPBar, m_thrdProgress);
|
||||
if (m_thrdProgress >= 1.f) {
|
||||
// m_btnMgr.setText(m_downloadBtnCancel, _t("dl2", L"Back"));
|
||||
break;
|
||||
}
|
||||
if (prevMsg != m_thrdMessage)
|
||||
{
|
||||
prevMsg = m_thrdMessage;
|
||||
m_btnMgr.setText(m_downloadLblMessage[msg], m_thrdMessage, false);
|
||||
m_btnMgr.hide(m_downloadLblMessage[msg], 0, 0, -1.f, -1.f, true);
|
||||
m_btnMgr.show(m_downloadLblMessage[msg]);
|
||||
msg ^= 1;
|
||||
m_btnMgr.hide(m_downloadLblMessage[msg], 0, 0, -1.f, -1.f);
|
||||
_start_pThread();
|
||||
int ret = _downloadCheatFileAsync();
|
||||
_stop_pThread();
|
||||
if(ret == -1)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg27", L"Not enough memory!"));
|
||||
else if(ret == -2)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg2", L"Network initialization failed!"));
|
||||
else if(ret == -3)
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg12", L"Download failed!"));
|
||||
else
|
||||
m_btnMgr.setText(m_wbfsLblDialog, _t("dlmsg14", L"Done."));
|
||||
dl_finished = true;
|
||||
}
|
||||
}
|
||||
if (m_thrdStop && !m_thrdWorking)
|
||||
break;
|
||||
}
|
||||
if (thread != LWP_THREAD_NULL)
|
||||
{
|
||||
LWP_JoinThread(thread, NULL);
|
||||
thread = LWP_THREAD_NULL;
|
||||
}
|
||||
_hideCheatDownload();
|
||||
|
||||
txtavailable = m_cheatfile.openTxtfile(fmt("%s/%s.txt", m_txtCheatDir.c_str(), id));
|
||||
_showCheatSettings();
|
||||
|
||||
@ -242,9 +177,9 @@ void CMenu::_CheatSettings()
|
||||
if (m_cheatfile.getCnt() == 0)
|
||||
{
|
||||
// cheat code not found, show result
|
||||
char type = id[0] == 'S' ? 'R' : id[0];
|
||||
//char type = id[0] == 'S' ? 'R' : id[0];
|
||||
m_btnMgr.setText(m_cheatLblItem[0], _t("cheat4", L"Download not found."));
|
||||
m_btnMgr.setText(m_cheatLblItem[1], sfmt(GECKOURL, type, id));
|
||||
m_btnMgr.setText(m_cheatLblItem[1], sfmt(GECKOURL, id));
|
||||
m_btnMgr.show(m_cheatLblItem[1]);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ void CMenu::error(const wstringEx &msg)
|
||||
_hideCategorySettings();
|
||||
_hideSystem();
|
||||
_hideGameInfo();
|
||||
_hideCheatDownload();
|
||||
_hideGameSettings();
|
||||
_hideSource();
|
||||
_hideWaitMessage();
|
||||
|
@ -1716,8 +1716,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
||||
|
||||
if(emulate_mode && !dvd && !neek2o())
|
||||
{
|
||||
string emuPath;
|
||||
int emuPart = _FindEmuPart(emuPath, true, true);
|
||||
int emuPart = _FindEmuPart( true, true);
|
||||
if(emuPart == -1)//if savepartition is unusable
|
||||
{
|
||||
_hideWaitMessage();
|
||||
@ -1729,10 +1728,11 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
||||
{
|
||||
bool need_config = false;
|
||||
bool need_miis = false;
|
||||
const char *emuPath = NandHandle.Get_NandPath();
|
||||
|
||||
//char testpath[MAX_FAT_PATH];
|
||||
char basepath[MAX_FAT_PATH];
|
||||
snprintf(basepath, sizeof(basepath), "%s:%s", DeviceName[emuPart], emuPath.c_str());
|
||||
snprintf(basepath, sizeof(basepath), "%s:%s", DeviceName[emuPart], emuPath);
|
||||
|
||||
char testpath[strlen(basepath) + 42];
|
||||
|
||||
// does not check to see if actual tmd exist just if the folder exist
|
||||
|
@ -762,8 +762,7 @@ int CMenu::main(void)
|
||||
const char *ReturnPath = NULL;
|
||||
if(!m_cfg.getBool(CHANNEL_DOMAIN, "neek_return_default", false))
|
||||
{
|
||||
string emuPath;
|
||||
if(_FindEmuPart(emuPath, false, false) >= 0)// make sure emunand folder exists
|
||||
if(_FindEmuPart(false, false) >= 0)// make sure emunand folder exists
|
||||
ReturnPath = NandHandle.Get_NandPath();
|
||||
}
|
||||
Sys_SetNeekPath(ReturnPath);
|
||||
|
@ -197,26 +197,30 @@ void CMenu::_FullNandCheck(void)
|
||||
emulate_mode = m_cfg.getInt(WII_DOMAIN, "save_emulation", 0);
|
||||
if((i == 0 && emulate_mode == 1) || (i == 1 && emulate_mode == 2))//full
|
||||
{
|
||||
string emuPath;
|
||||
int emuPart = _FindEmuPart(emuPath, true, i);
|
||||
int emuPart = _FindEmuPart( true, i);
|
||||
if(emuPart < 0)
|
||||
continue;
|
||||
bool need_config = false;
|
||||
bool need_miis = false;
|
||||
const char *emuPath = NandHandle.Get_NandPath();
|
||||
|
||||
string testpath;
|
||||
string basepath = DeviceName[emuPart] + ':' + emuPath;
|
||||
char basepath[MAX_FAT_PATH];
|
||||
snprintf(basepath, sizeof(basepath), "%s:%s", DeviceName[emuPart], emuPath);
|
||||
|
||||
char testpath[MAX_FAT_PATH + 42];
|
||||
|
||||
//check config files
|
||||
testpath.assign(basepath + "/shared2/sys/SYSCONF");
|
||||
if(!fsop_FileExist(testpath.c_str()))
|
||||
snprintf(testpath, sizeof(testpath), "%s/shared2/sys/SYSCONF", basepath);
|
||||
if(!fsop_FileExist(testpath))
|
||||
need_config = true;
|
||||
testpath.assign(basepath + "/title/00000001/00000002/data/setting.txt");
|
||||
if(!fsop_FileExist(testpath.c_str()))
|
||||
|
||||
snprintf(testpath, sizeof(testpath), "%s/title/00000001/00000002/data/setting.txt", basepath);
|
||||
if(!fsop_FileExist(testpath))
|
||||
need_config = true;
|
||||
|
||||
// Check Mii's
|
||||
testpath.assign(basepath + "/shared2/menu/FaceLib/RFL_DB.dat");
|
||||
if(!fsop_FileExist(testpath.c_str()))
|
||||
snprintf(testpath, sizeof(testpath), "%s/shared2/menu/FaceLib/RFL_DB.dat", basepath);
|
||||
if(!fsop_FileExist(testpath))
|
||||
need_miis = true;
|
||||
|
||||
NandHandle.PreNandCfg(need_miis, need_config);//copy to emunand if needed
|
||||
@ -224,19 +228,19 @@ void CMenu::_FullNandCheck(void)
|
||||
}
|
||||
}
|
||||
|
||||
int CMenu::_FindEmuPart(string &emuPath, bool skipchecks, bool savesnand)
|
||||
int CMenu::_FindEmuPart(bool skipchecks, bool savesnand)
|
||||
{
|
||||
int emuPart;
|
||||
const char *tmpPath = NULL;
|
||||
char tmpPath[MAX_FAT_PATH];
|
||||
if(savesnand)
|
||||
{
|
||||
emuPart = m_cfg.getInt(WII_DOMAIN, "savepartition");
|
||||
tmpPath = fmt("/%s/%s", emu_nands_dir, m_cfg.getString(WII_DOMAIN, "current_save_emunand").c_str());
|
||||
snprintf(tmpPath, sizeof(tmpPath), "/%s/%s", emu_nands_dir, m_cfg.getString(WII_DOMAIN, "current_save_emunand").c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
emuPart = m_cfg.getInt(CHANNEL_DOMAIN, "partition");
|
||||
tmpPath = fmt("/%s/%s", emu_nands_dir, m_cfg.getString(CHANNEL_DOMAIN, "current_emunand").c_str());
|
||||
snprintf(tmpPath, sizeof(tmpPath), "/%s/%s", emu_nands_dir, m_cfg.getString(CHANNEL_DOMAIN, "current_emunand").c_str());
|
||||
}
|
||||
if(!DeviceHandle.PartitionUsableForNandEmu(emuPart))
|
||||
return -1;
|
||||
@ -244,7 +248,6 @@ int CMenu::_FindEmuPart(string &emuPath, bool skipchecks, bool savesnand)
|
||||
{
|
||||
NandHandle.SetNANDEmu(emuPart);
|
||||
NandHandle.SetPaths(tmpPath, DeviceName[emuPart]);
|
||||
emuPath = tmpPath;
|
||||
return emuPart;
|
||||
}
|
||||
return -2;
|
||||
@ -584,8 +587,7 @@ int CMenu::_NandEmuCfg(void)
|
||||
}
|
||||
else if(BTN_A_PRESSED && (m_btnMgr.selected(m_nandemuBtnNandDump) || m_btnMgr.selected(m_nandemuBtnAll) || m_btnMgr.selected(m_nandemuBtnMissing)))
|
||||
{
|
||||
string emuPath;
|
||||
int emuPart = _FindEmuPart(emuPath, true, !m_fulldump);
|
||||
int emuPart = _FindEmuPart(true, !m_fulldump);
|
||||
if(emuPart < 0)
|
||||
{
|
||||
_hideNandEmu(true);
|
||||
@ -702,8 +704,7 @@ int CMenu::_NandEmuCfg(void)
|
||||
|
||||
int CMenu::_FlashSave(string gameId)
|
||||
{
|
||||
string emuPath;
|
||||
if(_FindEmuPart(emuPath, false, true) < 0)// if savenand not found
|
||||
if(_FindEmuPart(false, true) < 0)// if savenand not found
|
||||
return 0;
|
||||
|
||||
if(!_checkSave(gameId, false))// if save not on savenand
|
||||
@ -772,8 +773,7 @@ int CMenu::_FlashSave(string gameId)
|
||||
|
||||
int CMenu::_AutoExtractSave(string gameId)// called from wii game config menu or launching wii game
|
||||
{
|
||||
string emuPath;
|
||||
int emuPart = _FindEmuPart(emuPath, false, true);
|
||||
int emuPart = _FindEmuPart(false, true);
|
||||
if(m_forceext && emuPart == -1)// if game config force extract and savenand partition unusable
|
||||
{
|
||||
m_forceext = false;
|
||||
@ -781,7 +781,7 @@ int CMenu::_AutoExtractSave(string gameId)// called from wii game config menu or
|
||||
}
|
||||
/*else if(emuPart == -2)// emunand folder not found so make it
|
||||
{
|
||||
emuPart = _FindEmuPart(emuPath, true, true);
|
||||
emuPart = _FindEmuPart(true, true);
|
||||
char basepath[MAX_FAT_PATH];
|
||||
snprintf(basepath, sizeof(basepath), "%s:%s", DeviceName[emuPart], emuPath.c_str());
|
||||
NandHandle.CreatePath("%s/import", basepath);
|
||||
@ -893,21 +893,21 @@ void * CMenu::_NandFlasher(void *obj)
|
||||
char source[MAX_FAT_PATH];
|
||||
char dest[ISFS_MAXPATH];
|
||||
|
||||
string emuPath;
|
||||
int emuPartition = m._FindEmuPart(emuPath, true, true);
|
||||
int emuPartition = m._FindEmuPart(true, true);
|
||||
|
||||
const char *SaveGameID = m.m_saveExtGameId.c_str();
|
||||
int flashID = SaveGameID[0] << 24 | SaveGameID[1] << 16 | SaveGameID[2] << 8 | SaveGameID[3];
|
||||
const char *emuPath = NandHandle.Get_NandPath();
|
||||
|
||||
/* we know it exist on emunand just need to figure out which folder */
|
||||
if(_saveExists(fmt("%s:%s/title/00010000/%08x", DeviceName[emuPartition], emuPath.c_str(), flashID)))
|
||||
if(_saveExists(fmt("%s:%s/title/00010000/%08x", DeviceName[emuPartition], emuPath, flashID)))
|
||||
{
|
||||
snprintf(source, sizeof(source), "%s:%s/title/00010000/%08x", DeviceName[emuPartition], emuPath.c_str(), flashID);
|
||||
snprintf(source, sizeof(source), "%s:%s/title/00010000/%08x", DeviceName[emuPartition], emuPath, flashID);
|
||||
snprintf(dest, sizeof(dest), "/title/00010000/%08x", flashID);
|
||||
}
|
||||
else //if(_saveExists(fmt("%s:%s/title/00010004/%08x", DeviceName[emuPartition], emuPath.c_str(), flashID)))
|
||||
else //if(_saveExists(fmt("%s:%s/title/00010004/%08x", DeviceName[emuPartition], emuPath, flashID)))
|
||||
{
|
||||
snprintf(source, sizeof(source), "%s:%s/title/00010004/%08x", DeviceName[emuPartition], emuPath.c_str(), flashID);
|
||||
snprintf(source, sizeof(source), "%s:%s/title/00010004/%08x", DeviceName[emuPartition], emuPath, flashID);
|
||||
snprintf(dest, sizeof(dest), "/title/00010004/%08x", flashID);
|
||||
}
|
||||
NandHandle.ResetCounters();
|
||||
@ -939,10 +939,10 @@ void * CMenu::_NandDumper(void *obj)
|
||||
|
||||
NandHandle.ResetCounters();
|
||||
|
||||
string emuPath;
|
||||
int emuPartition = m._FindEmuPart(emuPath, true, !m_fulldump);
|
||||
int emuPartition = m._FindEmuPart(true, !m_fulldump);
|
||||
const char *emuPath = NandHandle.Get_NandPath();
|
||||
char basepath[64];
|
||||
snprintf(basepath, sizeof(basepath), "%s:%s", DeviceName[emuPartition], emuPath.c_str());
|
||||
snprintf(basepath, sizeof(basepath), "%s:%s", DeviceName[emuPartition], emuPath);
|
||||
/* create basepath in case it doesn't exist */
|
||||
NandHandle.CreatePath("%s", basepath);
|
||||
|
||||
|
@ -444,7 +444,7 @@ void CMenu::_Wad(const char *wad_path)
|
||||
int emuPart = 0;
|
||||
if(!mios)
|
||||
{
|
||||
emuPart = _FindEmuPart(emuPath, false, false);
|
||||
emuPart = _FindEmuPart(false, false);
|
||||
if(emuPart < 0)
|
||||
{
|
||||
//cfgne8=No valid FAT partition found for NAND Emulation!
|
||||
|
Loading…
Reference in New Issue
Block a user