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