Allow wifi-gecko to work close to game launch

This commit is contained in:
yardape8000 2012-05-11 03:37:56 +00:00
parent 40266a8909
commit 32cd3b0cd2
4 changed files with 27 additions and 3 deletions

View File

@ -286,8 +286,10 @@ s32 Disc_Wait(void)
s32 Disc_SetUSB(const u8 *id) s32 Disc_SetUSB(const u8 *id)
{ {
//gprintf("Trying set_frag_list\n");
if (id) return set_frag_list((u8 *) id); if (id) return set_frag_list((u8 *) id);
//gprintf("Trying WDVD_SetUSBMode\n");
return WDVD_SetUSBMode(wbfsDev, (u8 *) id, -1); return WDVD_SetUSBMode(wbfsDev, (u8 *) id, -1);
} }

View File

@ -335,6 +335,12 @@ s32 WDVD_SetFragList(int device, void *fraglist, int size)
inbuf[2] = (u32)fraglist; inbuf[2] = (u32)fraglist;
inbuf[3] = size; inbuf[3] = size;
//int i;
//for (i = 0; i < 8; i++)
// gprintf("inbuf[%d] = %X\n", i, inbuf[i]);
//ghexdump(fraglist, size);
//gprintf("\n");
DCFlushRange(fraglist, size); DCFlushRange(fraglist, size);
s32 ret = IOS_Ioctl(di_fd, IOCTL_DI_SETFRAG, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf)); s32 ret = IOS_Ioctl(di_fd, IOCTL_DI_SETFRAG, inbuf, sizeof(inbuf), outbuf, sizeof(outbuf));
if (ret < 0) return ret; if (ret < 0) return ret;

View File

@ -28,9 +28,10 @@ void CMenu::error(const wstringEx &msg)
_hideWaitMessage(); _hideWaitMessage();
m_btnMgr.setText(m_errorLblMessage, msg, true); m_btnMgr.setText(m_errorLblMessage, msg, true);
_showError(); _showError();
gprintf(msg.toUTF8().c_str());
do do
{ {
gprintf(msg.toUTF8().c_str());
_mainLoopCommon(); _mainLoopCommon();
} while (!BTN_B_PRESSED && !BTN_A_PRESSED && !BTN_HOME_PRESSED); } while (!BTN_B_PRESSED && !BTN_A_PRESSED && !BTN_HOME_PRESSED);
_hideError(false); _hideError(false);

View File

@ -18,6 +18,9 @@
#include "channel_launcher.h" #include "channel_launcher.h"
#include "devicemounter/sdhc.h" #include "devicemounter/sdhc.h"
#include <network.h>
#include <errno.h>
#include "loader/frag.h" #include "loader/frag.h"
#include "loader/fst.h" #include "loader/fst.h"
@ -508,7 +511,7 @@ void CMenu::_game(bool launch)
Playlog_Delete(); Playlog_Delete();
} }
gprintf("Launching game\n"); gprintf("Launching game %s\n", id.c_str());
_launch(hdr); _launch(hdr);
if(m_exit || bootHB) break; if(m_exit || bootHB) break;
@ -793,6 +796,8 @@ int CMenu::_loadIOS(u8 ios, string id)
int gameIOS = 0; int gameIOS = 0;
int userIOS = 0; int userIOS = 0;
gprintf("Game ID# %s requested IOS %d\n", id.c_str(), ios);
if (m_gcfg2.getInt(id, "ios", &userIOS) && _installed_cios.size() > 0) if (m_gcfg2.getInt(id, "ios", &userIOS) && _installed_cios.size() > 0)
{ {
for(CIOSItr itr = _installed_cios.begin(); itr != _installed_cios.end(); itr++) for(CIOSItr itr = _installed_cios.begin(); itr != _installed_cios.end(); itr++)
@ -995,6 +1000,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
{ {
string id = string((const char *) hdr->hdr.id); string id = string((const char *) hdr->hdr.id);
Nand::Instance()->Disable_Emu(); Nand::Instance()->Disable_Emu();
bool using_wifi_gecko = m_cfg.getBool("DEBUG", "wifi_gecko");
if (dvd) if (dvd)
{ {
@ -1195,7 +1201,8 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
app_gameconfig_load((u8 *) &hdr->hdr.id, gameconfig.get(), gameconfigSize); app_gameconfig_load((u8 *) &hdr->hdr.id, gameconfig.get(), gameconfigSize);
ocarina_load_code((u8 *) &hdr->hdr.id, cheatFile.get(), cheatSize); ocarina_load_code((u8 *) &hdr->hdr.id, cheatFile.get(), cheatSize);
net_wc24cleanup(); if (!using_wifi_gecko)
net_wc24cleanup();
bool iosLoaded = false; bool iosLoaded = false;
@ -1208,6 +1215,12 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
iosLoaded = true; iosLoaded = true;
} }
if (iosLoaded && using_wifi_gecko)
{
_initAsyncNetwork();
while(net_get_status() == -EBUSY);
}
if(emuSave) if(emuSave)
{ {
if(iosLoaded) ISFS_Deinitialize(); if(iosLoaded) ISFS_Deinitialize();
@ -1273,7 +1286,9 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
} }
} }
while(net_get_status() == -EBUSY);
cleanup(); cleanup();
// wifi-gecko can no longer function after cleanup
Close_Inputs(); Close_Inputs();
USBStorage_Deinit(); USBStorage_Deinit();
if(currentPartition == 0) if(currentPartition == 0)