diff --git a/out/boot.dol b/out/boot.dol
index 6ea4b629..441095b5 100644
Binary files a/out/boot.dol and b/out/boot.dol differ
diff --git a/source/menu/menu.cpp b/source/menu/menu.cpp
index 17f9a3d8..4b5cb8b3 100644
--- a/source/menu/menu.cpp
+++ b/source/menu/menu.cpp
@@ -2174,11 +2174,38 @@ void CMenu::_initCF(void)
if(!CoverFlow.empty())
{
bool path = false;
- if(m_sourceflow || m_current_view == COVERFLOW_HOMEBREW ||
- (m_source_cnt > 1 && m_cfg.getInt("MULTI", "current_item_type", TYPE_PLUGIN) == TYPE_PLUGIN) ||
- (m_source_cnt == 1 && m_current_view == COVERFLOW_PLUGIN && m_cfg.getInt(PLUGIN_DOMAIN, "current_item_type", TYPE_PLUGIN) == TYPE_PLUGIN))
+ char cur_item[64];
+ cur_item[63] = '\0';
+ if(m_current_view == COVERFLOW_PLUGIN)
+ {
+ strncpy(m_plugin.PluginMagicWord, m_cfg.getString(PLUGIN_DOMAIN, "cur_magic").c_str(), 8);
+ if(!m_cfg.getBool("PLUGINS_ENABLED", m_plugin.PluginMagicWord, false))
+ {
+ for(u8 i = 0; m_plugin.PluginExist(i); ++i)
+ {
+ if(m_plugin.GetEnableStatus(m_cfg, m_plugin.getPluginMagic(i)))// sets m_plugin.PluginMagicWord
+ {
+ m_cfg.setString(PLUGIN_DOMAIN, "cur_magic", m_plugin.PluginMagicWord);
+ break;
+ }
+ }
+ }
path = true;
- if(!CoverFlow.findId(m_cfg.getString(_domainFromView(), "current_item").c_str(), true, path))
+ if(strncasecmp(m_plugin.PluginMagicWord, "4E47434D", 8) == 0)//NGCM
+ path = false;
+ if(strncasecmp(m_plugin.PluginMagicWord, "4E574949", 8) == 0)//NWII
+ path = false;
+ if(strncasecmp(m_plugin.PluginMagicWord, "4E414E44", 8) == 0)//NAND
+ path = false;
+ strncpy(cur_item, m_cfg.getString("plugin_item", m_plugin.PluginMagicWord).c_str(), 63);
+ }
+ else
+ {
+ if(m_sourceflow || m_current_view == COVERFLOW_HOMEBREW || (m_source_cnt > 1 && m_cfg.getInt("MULTI", "current_item_type", TYPE_PLUGIN) == TYPE_PLUGIN))
+ path = true;
+ strncpy(cur_item, m_cfg.getString(_domainFromView(), "current_item").c_str(), 63);
+ }
+ if(!CoverFlow.findId(cur_item, true, path))
CoverFlow.defaultLoad();
CoverFlow.startCoverLoader();
}
diff --git a/source/menu/menu_error.cpp b/source/menu/menu_error.cpp
index aca1f42a..eba1cb33 100644
--- a/source/menu/menu_error.cpp
+++ b/source/menu/menu_error.cpp
@@ -25,7 +25,6 @@ void CMenu::error(const wstringEx &msg)
_hideCategorySettings();
_hideGameInfo();
_hideGameSettings();
- _hideSource();
_hideWaitMessage();
m_btnMgr.setText(m_errorLblMessage, msg, true);
_showError();
diff --git a/source/menu/menu_game.cpp b/source/menu/menu_game.cpp
index a849e53a..32ceed47 100644
--- a/source/menu/menu_game.cpp
+++ b/source/menu/menu_game.cpp
@@ -264,11 +264,28 @@ void CMenu::_extractBnr(const dir_discHdr *hdr)
void CMenu::_setCurrentItem(const dir_discHdr *hdr)
{
const char *title = CoverFlow.getFilenameId(hdr, true);// with extension
- m_cfg.setString(_domainFromView(), "current_item", title);
- if(m_current_view == COVERFLOW_PLUGIN && m_source_cnt == 1)
- m_cfg.setInt(PLUGIN_DOMAIN, "current_item_type", hdr->type);
- if(m_source_cnt > 1)
- m_cfg.setInt("MULTI", "current_item_type", hdr->type);
+ if(m_current_view == COVERFLOW_PLUGIN)
+ {
+ if(hdr->type == TYPE_PLUGIN)
+ strncpy(m_plugin.PluginMagicWord, fmt("%08x", hdr->settings[0]), 8);
+ else
+ {
+ if(hdr->type == TYPE_WII_GAME)
+ strncpy(m_plugin.PluginMagicWord, "4E574949", 9);
+ else if(hdr->type == TYPE_GC_GAME)
+ strncpy(m_plugin.PluginMagicWord, "4E47434D", 9);
+ else
+ strncpy(m_plugin.PluginMagicWord, "4E414E44", 9);
+ }
+ m_cfg.setString(PLUGIN_DOMAIN, "cur_magic", m_plugin.PluginMagicWord);
+ m_cfg.setString("plugin_item", m_plugin.PluginMagicWord, title);
+ }
+ else
+ {
+ m_cfg.setString(_domainFromView(), "current_item", title);
+ if(m_source_cnt > 1)
+ m_cfg.setInt("MULTI", "current_item_type", hdr->type);
+ }
}
void CMenu::_hideGame(bool instant)
diff --git a/source/menu/menu_source.cpp b/source/menu/menu_source.cpp
index a94faac6..c3e95ee2 100644
--- a/source/menu/menu_source.cpp
+++ b/source/menu/menu_source.cpp
@@ -472,6 +472,7 @@ bool CMenu::_Source()
{
if(m_locked && m_cfg.getBool(HOMEBREW_DOMAIN, "parental", false))
{
+ _hideSource();
error(_t("errsource1", L"Homebrew locked!"));
exitSource = false;
_showSource();
@@ -565,6 +566,7 @@ bool CMenu::_Source()
m_current_view ^= COVERFLOW_CHANNEL;
else if(source == "homebrew")
{
+ _hideSource();
error(_t("errsource2", L"Homebrew in multisource not allowed!"));
updateSource = false;
_showSource();
diff --git a/wiiflow.pnproj b/wiiflow.pnproj
index 649c5e42..b5455c2b 100644
--- a/wiiflow.pnproj
+++ b/wiiflow.pnproj
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/wiiflow.pnps b/wiiflow.pnps
index fa8ca8d1..2c9a0b6a 100644
--- a/wiiflow.pnps
+++ b/wiiflow.pnps
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file