diff --git a/data/help/english.txt b/data/help/english.txt index 62a90f89..1216d1b7 100644 --- a/data/help/english.txt +++ b/data/help/english.txt @@ -12,15 +12,15 @@ Controls: -- B+A = Launch game immediately -- B+Left / B+Right = Change Song -- B+UP / B+DOWN = Previous / next game in sorted list (alpha default) --- B+Minus = Boot a random game of the current coverflow +-- B+Minus = Boot or select a random game of the current coverflow -- B+Plus = Select sort type (alpha, wifi, players, playcount, etc...) -- Z / ZR = Take Screenshot -- A on Onscreen Arrows = Fast skip through games -- B on Onscreen Arrows = previous / next game in sorted list (alpha default) -- A on Star Icon = Favorites --- B on Star Icon = Categories --- A on Gear Icon = WiiFlow settings +-- A on Categories Icon = Select categories to use +-- A on Gear Icon = Main settings menu -- A on USB(Wii), GC, Channels, Plugin, or Homebrew Icon = Switch to that source -- A on Home Icon = Open Home Menu / Exit WiiFlow -- A on Disc Icon (Game Disc in Drive) = Launch game disc @@ -29,7 +29,7 @@ Controls: -- A on box = Flip Cover -- A out of screen = Launch game -- A on Star Icon = Toggle Favorite (Yellow = Favorite) --- B on Star Icon = Set Categories for game +-- A on Categories Icon = Set Categories for current game -- A on Hand Icon = Parental Lock (Red = locked) -- A on Gear Icon = Game Settings -- A on X Icon = Delete Game @@ -47,7 +47,7 @@ Controls: -- Plus = Zoom in -- Minus = Zoom out -- Settings menus: +- All Settings menus: -- Minus / Plus = Previous / next page -- Left / Right = Previous / next page -- Up / Down = Previous / next button diff --git a/out/boot.dol b/out/boot.dol index 86a2a5e8..531e8fc1 100644 Binary files a/out/boot.dol and b/out/boot.dol differ diff --git a/out/imgs/btncat.png b/out/imgs/btncat.png new file mode 100644 index 00000000..31b245ed Binary files /dev/null and b/out/imgs/btncat.png differ diff --git a/out/imgs/btncats.png b/out/imgs/btncats.png new file mode 100644 index 00000000..881d87df Binary files /dev/null and b/out/imgs/btncats.png differ diff --git a/source/gui/coverflow.cpp b/source/gui/coverflow.cpp index e2f6b392..9d2a509a 100644 --- a/source/gui/coverflow.cpp +++ b/source/gui/coverflow.cpp @@ -1637,7 +1637,7 @@ bool CCoverFlow::_setCurPosToID(const char *id, bool instant, bool path) { //homebrew folder or rom title.ext const char *name = strrchr(m_items[i].hdr->path, '/'); - if(name != NULL && strcmp(name + 1, id) == 0) + if(name != NULL && strcasecmp(name + 1, id) == 0) break; else if(strcmp(m_items[i].hdr->path, id) == 0)// scummvm break; @@ -2659,6 +2659,9 @@ bool CCoverFlow::_loadCoverTexPNG(u32 i, bool box, bool hq, bool blankBoxCover) if(!m_loadingCovers) return false; + if(box && m_smallBox)// prevent full cover for smallbox mode + return false; + /* get path to cover png or jpg */ const char *path = box ? (blankBoxCover ? mainMenu.getBlankCoverPath(m_items[i].hdr) : mainMenu.getBoxPath(m_items[i].hdr)) : mainMenu.getFrontPath(m_items[i].hdr); @@ -2733,10 +2736,18 @@ bool CCoverFlow::_loadCoverTexPNG(u32 i, bool box, bool hq, bool blankBoxCover) if(wfcCoverDir != NULL) { fsop_MakeFolder(fmt("%s/%s", m_cachePath.c_str(), wfcCoverDir));// will make subfolders if needed - strncpy(full_path, fmt("%s/%s/%s.wfc", m_cachePath.c_str(), wfcCoverDir, wfcTitle), MAX_FAT_PATH); + if(m_smallBox) + strncpy(full_path, fmt("%s/%s/%s_small.wfc", m_cachePath.c_str(), wfcCoverDir, wfcTitle), MAX_FAT_PATH); + else + strncpy(full_path, fmt("%s/%s/%s.wfc", m_cachePath.c_str(), wfcCoverDir, wfcTitle), MAX_FAT_PATH); } else - strncpy(full_path, fmt("%s/%s.wfc", m_cachePath.c_str(), wfcTitle), MAX_FAT_PATH); + { + if(m_smallBox) + strncpy(full_path, fmt("%s/%s_small.wfc", m_cachePath.c_str(), wfcTitle), MAX_FAT_PATH); + else + strncpy(full_path, fmt("%s/%s.wfc", m_cachePath.c_str(), wfcTitle), MAX_FAT_PATH); + } DCFlushRange(full_path, MAX_FAT_PATH+1); @@ -2855,9 +2866,19 @@ CCoverFlow::CLRet CCoverFlow::_loadCoverTex(u32 i, bool box, bool hq, bool blank /* set full path of wfc file */ if(wfcCoverDir != NULL) - strncpy(full_path, fmt("%s/%s/%s.wfc", m_cachePath.c_str(), wfcCoverDir, wfcTitle), MAX_FAT_PATH); + { + if(m_smallBox) + strncpy(full_path, fmt("%s/%s/%s_small.wfc", m_cachePath.c_str(), wfcCoverDir, wfcTitle), MAX_FAT_PATH); + else + strncpy(full_path, fmt("%s/%s/%s.wfc", m_cachePath.c_str(), wfcCoverDir, wfcTitle), MAX_FAT_PATH); + } else - strncpy(full_path, fmt("%s/%s.wfc", m_cachePath.c_str(), wfcTitle), MAX_FAT_PATH); + { + if(m_smallBox) + strncpy(full_path, fmt("%s/%s_small.wfc", m_cachePath.c_str(), wfcTitle), MAX_FAT_PATH); + else + strncpy(full_path, fmt("%s/%s.wfc", m_cachePath.c_str(), wfcTitle), MAX_FAT_PATH); + } DCFlushRange(full_path, MAX_FAT_PATH+1); diff --git a/source/menu/menu.cpp b/source/menu/menu.cpp index 402c04fc..80c5431f 100644 --- a/source/menu/menu.cpp +++ b/source/menu/menu.cpp @@ -1990,11 +1990,6 @@ void CMenu::_initCF(void) strcat(tmp1, tmp2); id = tmp1;*/ } - else if(m_current_view == COVERFLOW_HOMEBREW) - { - CoverFlow.addItem(&(*hdr), 0, 0); - continue; - } else if(hdr->type == TYPE_HOMEBREW) { wcstombs(id, hdr->title, 63); @@ -2012,7 +2007,7 @@ void CMenu::_initCF(void) favDomain = "FAVORITES_PLUGINS"; adultDomain = "ADULTONLY_PLUGINS"; } - else + else // wii, gc, channels { strcpy(id, hdr->id); if(hdr->type == TYPE_GC_GAME && hdr->settings[0] == 1) /* disc 2 */ @@ -2138,9 +2133,9 @@ void CMenu::_initCF(void) } /* remove them if false to keep file short */ if(!m_gcfg1.getBool(favDomain, id)) - m_cfg.remove(favDomain, id); + m_gcfg1.remove(favDomain, id); if(!m_gcfg1.getBool(adultDomain, id)) - m_cfg.remove(adultDomain, id); + m_gcfg1.remove(adultDomain, id); } if(dumpGameLst) @@ -2150,42 +2145,47 @@ void CMenu::_initCF(void) } CoverFlow.setSorting(m_source_cnt > 1 ? (Sorting)0 : (Sorting)m_cfg.getInt(_domainFromView(), "sort", 0)); - if(m_current_view == COVERFLOW_HOMEBREW) + + if(!m_sourceflow) { - CoverFlow.setBoxMode(m_cfg.getBool(HOMEBREW_DOMAIN, "box_mode", true)); - CoverFlow.setSmallBoxMode(m_cfg.getBool(HOMEBREW_DOMAIN, "smallbox", false)); + if(m_current_view == COVERFLOW_HOMEBREW) + { + CoverFlow.setBoxMode(m_cfg.getBool(HOMEBREW_DOMAIN, "box_mode", true)); + CoverFlow.setSmallBoxMode(m_cfg.getBool(HOMEBREW_DOMAIN, "smallbox", false)); + } + else if(m_current_view == COVERFLOW_PLUGIN) + { + m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount); + if(enabledPluginsCount == 1 && m_cfg.getBool(PLUGIN_ENABLED, "48425257") && m_cfg.getBool(HOMEBREW_DOMAIN, "smallbox")) + CoverFlow.setSmallBoxMode(true); + else + CoverFlow.setSmallBoxMode(false); + int boxmode_cnt = 0; + for(u8 i = 0; m_plugin.PluginExist(i); ++i) + { + if(m_plugin.GetEnableStatus(m_cfg, m_plugin.getPluginMagic(i))) + { + if(m_plugin.GetBoxMode(i)) + boxmode_cnt++; + } + } + if(boxmode_cnt == 0) + CoverFlow.setBoxMode(false); + else + CoverFlow.setBoxMode(true); + } + else + { + CoverFlow.setBoxMode(m_cfg.getBool("GENERAL", "box_mode", true)); + CoverFlow.setSmallBoxMode(false); + } } - else if(m_sourceflow) + else // sourceflow { CoverFlow.setBoxMode(m_cfg.getBool(SOURCEFLOW_DOMAIN, "box_mode", true)); CoverFlow.setSmallBoxMode(m_cfg.getBool(SOURCEFLOW_DOMAIN, "smallbox", false)); } - else if(m_current_view != COVERFLOW_PLUGIN) - { - CoverFlow.setBoxMode(m_cfg.getBool("GENERAL", "box_mode", true)); - CoverFlow.setSmallBoxMode(false); - } - else - { - m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount); - if(enabledPluginsCount == 1 && m_cfg.getBool(PLUGIN_ENABLED, "48425257") && m_cfg.getBool(HOMEBREW_DOMAIN, "smallbox")) - CoverFlow.setSmallBoxMode(true); - else - CoverFlow.setSmallBoxMode(false); - int boxmode_cnt = 0; - for(u8 i = 0; m_plugin.PluginExist(i); ++i) - { - if(m_plugin.GetEnableStatus(m_cfg, m_plugin.getPluginMagic(i))) - { - if(m_plugin.GetBoxMode(i)) - boxmode_cnt++; - } - } - if(boxmode_cnt == 0) - CoverFlow.setBoxMode(false); - else - CoverFlow.setBoxMode(true); - } + CoverFlow.setBufferSize(m_cfg.getInt("GENERAL", "cover_buffer", 20)); CoverFlow.setHQcover(m_cfg.getBool("GENERAL", "cover_use_hq", true)); CoverFlow.start(m_imgsDir); @@ -2195,7 +2195,7 @@ void CMenu::_initCF(void) bool path = false; char cur_item[64]; cur_item[63] = '\0'; - if(m_current_view == COVERFLOW_PLUGIN) + if(m_current_view == COVERFLOW_PLUGIN && !m_sourceflow) { strncpy(m_plugin.PluginMagicWord, m_cfg.getString(PLUGIN_DOMAIN, "cur_magic").c_str(), 8); if(!m_cfg.getBool("PLUGINS_ENABLED", m_plugin.PluginMagicWord, false)) @@ -2247,13 +2247,6 @@ bool CMenu::_loadList(void) m_cacheList.Clear(); return true; } - if(m_current_view == COVERFLOW_HOMEBREW) - { - _loadHomebrewList(HOMEBREW_DIR); - gprintf("Apps found: %i\n", m_gameList.size()); - m_cacheList.Clear(); - return m_gameList.size() > 0 ? true : false; - } gprintf("Creating Gamelist\n"); if(m_current_view & COVERFLOW_PLUGIN) _loadPluginList(); @@ -2267,6 +2260,9 @@ bool CMenu::_loadList(void) if(m_current_view & COVERFLOW_GAMECUBE) _loadGamecubeList(); + if(m_current_view & COVERFLOW_HOMEBREW) + _loadHomebrewList(HOMEBREW_DIR); + m_cacheList.Clear(); gprintf("Games found: %i\n", m_gameList.size()); diff --git a/source/menu/menu.hpp b/source/menu/menu.hpp index d26ecc8a..7358f1c9 100644 --- a/source/menu/menu.hpp +++ b/source/menu/menu.hpp @@ -192,6 +192,7 @@ private: TexData m_mainBgLQ; //Main Coverflow + s16 m_mainBtnCategories; s16 m_mainBtnConfig; s16 m_mainBtnHome; s16 m_mainBtnFavoritesOn; @@ -413,8 +414,7 @@ private: }; s16 m_gameBtnFavoriteOn; s16 m_gameBtnFavoriteOff; - s16 m_gameBtnAdultOn; - s16 m_gameBtnAdultOff; + s16 m_gameBtnCategories; s16 m_gameBtnDelete; s16 m_gameBtnSettings; s16 m_gameBtnPlay; @@ -569,8 +569,8 @@ private: s16 m_gameSettingsLblCheat; s16 m_gameSettingsBtnCheat; - s16 m_gameSettingsLblCategoryMain; - s16 m_gameSettingsBtnCategoryMain; + s16 m_gameSettingsLblAdultOnly; + s16 m_gameSettingsBtnAdultOnly; s16 m_gameSettingsLblGameIOS; s16 m_gameSettingsLblIOS; diff --git a/source/menu/menu_config.cpp b/source/menu/menu_config.cpp index 21035813..4fb906c9 100644 --- a/source/menu/menu_config.cpp +++ b/source/menu/menu_config.cpp @@ -3,7 +3,7 @@ #include "channel/nand.hpp" #include "loader/nk.h" -const int CMenu::_nbCfgPages = 11; +const int CMenu::_nbCfgPages = 12; void CMenu::_hideConfigCommon(bool instant) { @@ -91,19 +91,7 @@ void CMenu::_config(int page) case 6: change = _configScreen(); break; - case 7: - change = _config7(page); - break; - case 8: - change = _config7(page); - break; - case 9: - change = _config7(page); - break; - case 10: - change = _config7(page); - break; - case 11: + default: change = _config7(page); break; } @@ -115,7 +103,7 @@ void CMenu::_config(int page) page += change; if (page > _nbCfgPages) page = 1; - else if (page < 0) + else if (page <= 0) page = _nbCfgPages; } } diff --git a/source/menu/menu_config7.cpp b/source/menu/menu_config7.cpp index 5747cb90..e963640a 100644 --- a/source/menu/menu_config7.cpp +++ b/source/menu/menu_config7.cpp @@ -66,21 +66,31 @@ void CMenu::_showConfig7(int curPage) if(m_config7LblUser[i] != -1) m_btnMgr.show(m_config7LblUser[i]); - m_btnMgr.show(m_config7Lbl1); - m_btnMgr.show(m_config7Btn1); - m_btnMgr.show(m_config7Lbl2); - m_btnMgr.show(m_config7Btn2); - m_btnMgr.show(m_config7Lbl3); - m_btnMgr.show(m_config7Btn3); - m_btnMgr.show(m_config7Lbl4); - - if(curPage == 7 || curPage == 11) - m_btnMgr.show(m_config7Btn4); + if(curPage == 12) + { + m_btnMgr.show(m_config7Lbl1); + m_btnMgr.show(m_config7Btn1); + //m_btnMgr.show(m_config7Lbl2); + //m_btnMgr.show(m_config7Btn2); + } else { - m_btnMgr.show(m_config7Lbl4Val); - m_btnMgr.show(m_config7Btn4M); - m_btnMgr.show(m_config7Btn4P); + m_btnMgr.show(m_config7Lbl1); + m_btnMgr.show(m_config7Btn1); + m_btnMgr.show(m_config7Lbl2); + m_btnMgr.show(m_config7Btn2); + m_btnMgr.show(m_config7Lbl3); + m_btnMgr.show(m_config7Btn3); + m_btnMgr.show(m_config7Lbl4); + + if(curPage == 7 || curPage == 11) + m_btnMgr.show(m_config7Btn4); + else + { + m_btnMgr.show(m_config7Lbl4Val); + m_btnMgr.show(m_config7Btn4M); + m_btnMgr.show(m_config7Btn4P); + } } if(curPage == 7) @@ -127,7 +137,7 @@ void CMenu::_showConfig7(int curPage) m_btnMgr.setText(m_config7Lbl4, _t("cfg716", L"Music fade rate")); m_btnMgr.setText(m_config7Lbl4Val, wfmt(L"%i", m_cfg.getInt("GENERAL", "music_fade_rate", 8))); } - else // page 11 + else if(curPage == 11) { m_btnMgr.setText(m_config7Lbl1, _t("cfg717", L"Random game boot or select")); m_btnMgr.setText(m_config7Btn1, m_cfg.getBool("GENERAL", "random_select") ? _t("select", L"Select") : _t("boot", L"Boot")); @@ -138,6 +148,13 @@ void CMenu::_showConfig7(int curPage) m_btnMgr.setText(m_config7Lbl4, _t("cfg721", L"Play GC default sound")); m_btnMgr.setText(m_config7Btn4, m_cfg.getBool(GC_DOMAIN, "play_default_sound") ? _t("yes", L"Yes") : _t("no", L"No")); } + else // page 12 + { + m_btnMgr.setText(m_config7Lbl1, _t("cfg722", L"Homebrew settings")); + m_btnMgr.setText(m_config7Btn1, _t("cfg14", L"Set")); + //m_btnMgr.setText(m_config7Lbl2, _t("cfg723", L"Source menu settings")); + //m_btnMgr.setText(m_config7Btn2, _t("cfg14", L"Set")); + } } int CMenu::_config7(int curPage) @@ -285,6 +302,21 @@ int CMenu::_config7(int curPage) m_gc_play_default_sound = m_cfg.getBool(GC_DOMAIN, "play_default_sound", true); } } + if(curPage == 12) + { + if(m_btnMgr.selected(m_config7Btn1)) + { + _hideConfig7(); + _CfgHB(); + _showConfig7(12); + } + /*else if(m_btnMgr.selected(m_config7Btn2)) + { + _hideConfig7(); + _CfgSrc(); + _showConfig7(12); + }*/ + } } } if(rand_music != m_cfg.getBool("GENERAL", "randomize_music")) diff --git a/source/menu/menu_config_game.cpp b/source/menu/menu_config_game.cpp index 1cb3c792..1dd80baf 100644 --- a/source/menu/menu_config_game.cpp +++ b/source/menu/menu_config_game.cpp @@ -81,8 +81,8 @@ void CMenu::_hideGameSettingsPg(bool instant) //All m_btnMgr.hide(m_gameSettingsLblManage, instant); m_btnMgr.hide(m_gameSettingsBtnManage, instant); - m_btnMgr.hide(m_gameSettingsBtnCategoryMain, instant); - m_btnMgr.hide(m_gameSettingsLblCategoryMain, instant); + m_btnMgr.hide(m_gameSettingsBtnAdultOnly, instant); + m_btnMgr.hide(m_gameSettingsLblAdultOnly, instant); m_btnMgr.hide(m_gameSettingsLblGameLanguage, instant); m_btnMgr.hide(m_gameSettingsLblLanguage, instant); m_btnMgr.hide(m_gameSettingsBtnLanguageP, instant); @@ -148,7 +148,29 @@ void CMenu::_hideGameSettingsPg(bool instant) void CMenu::_showGameSettings() { u32 i; - const char *id = GameHdr->id; + char id[74]; + char catID[64]; + memset(id, 0, 74); + memset(catID, 0, 64); + + if(GameHdr->type == TYPE_HOMEBREW) + wcstombs(id, GameHdr->title, 63); + else if(GameHdr->type == TYPE_PLUGIN) + { + strncpy(m_plugin.PluginMagicWord, fmt("%08x", GameHdr->settings[0]), 8); + if(strrchr(GameHdr->path, '/') != NULL) + wcstombs(catID, GameHdr->title, 63); + else + strncpy(catID, GameHdr->path, 63);// scummvm + strcpy(id, m_plugin.PluginMagicWord); + strcat(id, fmt("/%s", catID)); + } + else + { + strcpy(id, GameHdr->id); + if(GameHdr->type == TYPE_GC_GAME && GameHdr->settings[0] == 1) /* disc 2 */ + strcat(id, "_2"); + } _setBg(m_gameSettingsBg, m_gameSettingsBg); for(i = 0; i < ARRAY_SIZE(m_gameSettingsLblUser); ++i) @@ -165,8 +187,12 @@ void CMenu::_showGameSettings() if(GameHdr->type == TYPE_PLUGIN || GameHdr->type == TYPE_HOMEBREW) { - m_btnMgr.show(m_gameSettingsBtnCategoryMain); - m_btnMgr.show(m_gameSettingsLblCategoryMain); + m_btnMgr.show(m_gameSettingsBtnAdultOnly); + m_btnMgr.show(m_gameSettingsLblAdultOnly); + if(GameHdr->type == TYPE_PLUGIN) + m_btnMgr.setText(m_gameSettingsBtnAdultOnly, m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false) ? _t("yes", L"Yes") : _t("no", L"No")); + else + m_btnMgr.setText(m_gameSettingsBtnAdultOnly, m_gcfg1.getBool("ADULTONLY", id, false) ? _t("yes", L"Yes") : _t("no", L"No")); return; } @@ -187,8 +213,8 @@ void CMenu::_showGameSettings() if(m_gameSettingsPage == 1) { - m_btnMgr.show(m_gameSettingsBtnCategoryMain); - m_btnMgr.show(m_gameSettingsLblCategoryMain); + m_btnMgr.show(m_gameSettingsBtnAdultOnly); + m_btnMgr.show(m_gameSettingsLblAdultOnly); if(GameHdr->type == TYPE_GC_GAME) { @@ -376,6 +402,7 @@ void CMenu::_showGameSettings() } } + m_btnMgr.setText(m_gameSettingsBtnAdultOnly, m_gcfg1.getBool("ADULTONLY", id, false) ? _t("yes", L"Yes") : _t("no", L"No")); m_btnMgr.setText(m_gameSettingsBtnOcarina, _optBoolToString(m_gcfg2.getOptBool(id, "cheat", 0))); m_btnMgr.setText(m_gameSettingsBtnLED, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0))); @@ -465,7 +492,30 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc) { m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str())); GameHdr = hdr;// - const char *id = GameHdr->id; + char id[74]; + char catID[64]; + memset(id, 0, 74); + memset(catID, 0, 64); + + if(GameHdr->type == TYPE_HOMEBREW) + wcstombs(id, GameHdr->title, 63); + else if(GameHdr->type == TYPE_PLUGIN) + { + strncpy(m_plugin.PluginMagicWord, fmt("%08x", GameHdr->settings[0]), 8); + if(strrchr(GameHdr->path, '/') != NULL) + wcstombs(catID, GameHdr->title, 63); + else + strncpy(catID, GameHdr->path, 63);// scummvm + strcpy(id, m_plugin.PluginMagicWord); + strcat(id, fmt("/%s", catID)); + } + else + { + strcpy(id, GameHdr->id); + if(GameHdr->type == TYPE_GC_GAME && GameHdr->settings[0] == 1) /* disc 2 */ + strcat(id, "_2"); + } + if(GameHdr->type == TYPE_GC_GAME) { videoScale = m_gcfg2.getInt(id, "nin_width", 127); @@ -736,22 +786,16 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc) m_gcfg2.setBool(id, "private_server", !m_gcfg2.getBool(id, "private_server", 0)); _showGameSettings(); } - else if(m_btnMgr.selected(m_gameSettingsBtnCategoryMain)) + else if(m_btnMgr.selected(m_gameSettingsBtnAdultOnly)) { if(disc) error(_t("cfgg57", L"Not allowed for disc!")); else { - _hideGameSettings(); - _CategorySettings(true); - // update these in case the user changed games while in cat menu - id = CoverFlow.getId(); - GameHdr = CoverFlow.getHdr(); - if(GameHdr->type == TYPE_GC_GAME) - { - videoScale = m_gcfg2.getInt(id, "nin_width", 127); - videoOffset = m_gcfg2.getInt(id, "nin_pos", 127); - } + if(GameHdr->type == TYPE_PLUGIN) + m_gcfg1.setBool("ADULTONLY_PLUGINS", id, !m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false)); + else + m_gcfg1.setBool("ADULTONLY", id, !m_gcfg1.getBool("ADULTONLY", id, false)); } _showGameSettings(); } @@ -785,8 +829,8 @@ void CMenu::_initGameSettingsMenu() m_gameSettingsLblTitle = _addLabel("GAME_SETTINGS/TITLE", theme.titleFont, L"", 0, 10, 640, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE); // Page 1 - m_gameSettingsLblCategoryMain = _addLabel("GAME_SETTINGS/CAT_MAIN", theme.lblFont, L"", 20, 125, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); - m_gameSettingsBtnCategoryMain = _addButton("GAME_SETTINGS/CAT_MAIN_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor); + m_gameSettingsLblAdultOnly = _addLabel("GAME_SETTINGS/ADULT_ONLY", theme.lblFont, L"", 20, 125, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); + m_gameSettingsBtnAdultOnly = _addButton("GAME_SETTINGS/ADULT_ONLY_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor); m_gameSettingsLblGameIOS = _addLabel("GAME_SETTINGS/IOS", theme.lblFont, L"", 20, 185, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); m_gameSettingsLblIOS = _addLabel("GAME_SETTINGS/IOS_BTN", theme.btnFont, L"", 468, 190, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC); @@ -1056,8 +1100,8 @@ void CMenu::_initGameSettingsMenu() _setHideAnim(m_gameSettingsLblFlashSave, "GAME_SETTINGS/FLASH_SAVE", 50, 0, -2.f, 0.f); _setHideAnim(m_gameSettingsBtnFlashSave, "GAME_SETTINGS/FLASH_SAVE_BTN", -50, 0, 1.f, 0.f); - _setHideAnim(m_gameSettingsLblCategoryMain, "GAME_SETTINGS/CAT_MAIN", 50, 0, -2.f, 0.f); - _setHideAnim(m_gameSettingsBtnCategoryMain, "GAME_SETTINGS/CAT_MAIN_BTN", -50, 0, 1.f, 0.f); + _setHideAnim(m_gameSettingsLblAdultOnly, "GAME_SETTINGS/ADULT_ONLY", 50, 0, -2.f, 0.f); + _setHideAnim(m_gameSettingsBtnAdultOnly, "GAME_SETTINGS/ADULT_ONLY_BTN", -50, 0, 1.f, 0.f); _setHideAnim(m_gameSettingsLblPage, "GAME_SETTINGS/PAGE_BTN", 0, 0, 1.f, -1.f); _setHideAnim(m_gameSettingsBtnPageM, "GAME_SETTINGS/PAGE_MINUS", 0, 0, 1.f, -1.f); @@ -1075,8 +1119,7 @@ void CMenu::_textGameSettings(void) m_btnMgr.setText(m_gameSettingsLblManage, _t("cfgg40", L"Manage Cover and Banner")); m_btnMgr.setText(m_gameSettingsBtnManage, _t("cfgg41", L"Manage")); - m_btnMgr.setText(m_gameSettingsLblCategoryMain, _t("cfgg17", L"Categories")); - m_btnMgr.setText(m_gameSettingsBtnCategoryMain, _t("cfgg16", L"Select")); + m_btnMgr.setText(m_gameSettingsLblAdultOnly, _t("cfgg58", L"Adult only")); m_btnMgr.setText(m_gameSettingsLblGCLoader, _t("cfgg35", L"GameCube Loader")); m_btnMgr.setText(m_gameSettingsLblGameVideo, _t("cfgg2", L"Video mode")); m_btnMgr.setText(m_gameSettingsLblGameLanguage, _t("cfgg3", L"Language")); diff --git a/source/menu/menu_config_hb.cpp b/source/menu/menu_config_hb.cpp index ee86f4aa..e130f140 100644 --- a/source/menu/menu_config_hb.cpp +++ b/source/menu/menu_config_hb.cpp @@ -5,8 +5,8 @@ s16 m_cfghbLblTitle; s16 m_cfghbBtnBack; s16 m_cfghbLblUser[4]; -s16 m_cfghbLblAdjustCF; -s16 m_cfghbBtnAdjustCF; +s16 m_cfghbLblHideHB; +s16 m_cfghbBtnHideHB; s16 m_cfghbLblSmallbox; s16 m_cfghbBtnSmallbox; @@ -29,8 +29,8 @@ static void _showCfgHB(void) if(m_cfghbLblUser[i] != -1) m_btnMgr.show(m_cfghbLblUser[i]); - m_btnMgr.show(m_cfghbLblAdjustCF); - m_btnMgr.show(m_cfghbBtnAdjustCF); + m_btnMgr.show(m_cfghbLblHideHB); + m_btnMgr.show(m_cfghbBtnHideHB); m_btnMgr.show(m_cfghbLblSmallbox); m_btnMgr.show(m_cfghbBtnSmallbox); @@ -53,8 +53,8 @@ static void _hideCfgHB(bool instant) if(m_cfghbLblUser[i] != -1) m_btnMgr.hide(m_cfghbLblUser[i], instant); - m_btnMgr.hide(m_cfghbLblAdjustCF, instant); - m_btnMgr.hide(m_cfghbBtnAdjustCF, instant); + m_btnMgr.hide(m_cfghbLblHideHB, instant); + m_btnMgr.hide(m_cfghbBtnHideHB, instant); m_btnMgr.hide(m_cfghbLblSmallbox, instant); m_btnMgr.hide(m_cfghbBtnSmallbox, instant); @@ -70,6 +70,7 @@ static void _hideCfgHB(bool instant) void CMenu::_CfgHB(void) { + m_btnMgr.setText(m_cfghbBtnHideHB, m_cfg.getBool(HOMEBREW_DOMAIN, "disable", false) ? _t("yes", L"Yes") : _t("no", L"No")); m_btnMgr.setText(m_cfghbBtnSmallbox, m_cfg.getBool(HOMEBREW_DOMAIN, "smallbox") ? _t("on", L"On") : _t("off", L"Off")); m_btnMgr.setText(m_cfghbBtnBoxMode, m_cfg.getBool(HOMEBREW_DOMAIN, "box_mode") ? _t("on", L"On") : _t("off", L"Off")); @@ -94,12 +95,10 @@ void CMenu::_CfgHB(void) { if(m_btnMgr.selected(m_cfghbBtnBack)) break; - else if (m_btnMgr.selected(m_cfghbBtnAdjustCF)) + else if (m_btnMgr.selected(m_cfghbBtnHideHB)) { - m_refreshGameList = true; - _hideCfgHB(true); - _cfTheme(); - _showCfgHB(); + m_cfg.setBool(HOMEBREW_DOMAIN, "disable", !m_cfg.getBool(HOMEBREW_DOMAIN, "disable")); + m_btnMgr.setText(m_cfghbBtnHideHB, m_cfg.getBool(HOMEBREW_DOMAIN, "disable") ? _t("yes", L"Yes") : _t("no", L"No")); } else if (m_btnMgr.selected(m_cfghbBtnSmallbox)) { @@ -134,8 +133,8 @@ void CMenu::_initCfgHB(void) m_cfghbLblTitle = _addLabel("CFG_HB/TITLE", theme.titleFont, L"", 0, 10, 640, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE); m_cfghbBtnBack = _addButton("CFG_HB/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor); - m_cfghbLblAdjustCF = _addLabel("CFG_HB/ADJUST_CF", theme.lblFont, L"", 20, 125, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); - m_cfghbBtnAdjustCF = _addButton("CFG_HB/ADJUST_CF_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor); + m_cfghbLblHideHB = _addLabel("CFG_HB/HIDE_HB", theme.lblFont, L"", 20, 125, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); + m_cfghbBtnHideHB = _addButton("CFG_HB/HIDE_HB_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor); m_cfghbLblSmallbox = _addLabel("CFG_HB/HB_SMALLBOX", theme.lblFont, L"", 20, 185, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); m_cfghbBtnSmallbox = _addButton("CFG_HB/HB_SMALLBOX_BTN", theme.btnFont, L"", 420, 190, 200, 48, theme.btnFontColor); @@ -151,8 +150,8 @@ void CMenu::_initCfgHB(void) _setHideAnim(m_cfghbLblTitle, "CFG_HB/TITLE", 0, 0, -2.f, 0.f); _setHideAnim(m_cfghbBtnBack, "CFG_HB/BACK_BTN", 0, 0, 1.f, -1.f); - _setHideAnim(m_cfghbLblAdjustCF, "CFG_HB/ADJUST_CF", -50, 0, -2.f, 0.f); - _setHideAnim(m_cfghbBtnAdjustCF, "CFG_HB/ADJUST_CF_BTN", -50, 0, 1.f, 0.f); + _setHideAnim(m_cfghbLblHideHB, "CFG_HB/HIDE_HB", -50, 0, -2.f, 0.f); + _setHideAnim(m_cfghbBtnHideHB, "CFG_HB/HIDE_HB_BTN", -50, 0, 1.f, 0.f); _setHideAnim(m_cfghbLblSmallbox, "CFG_HB/HB_SMALLBOX", -50, 0, -2.f, 0.f); _setHideAnim(m_cfghbBtnSmallbox, "CFG_HB/HB_SMALLBOX_BTN", -50, 0, 1.f, 0.f); @@ -172,8 +171,7 @@ void CMenu::_initCfgHB(void) void CMenu::_textCfgHB(void) { m_btnMgr.setText(m_cfghbLblTitle, _t("cfghb1", L"Homebrew Settings")); - m_btnMgr.setText(m_cfghbLblAdjustCF, _t("cfgc4", L"Adjust Coverflow")); - m_btnMgr.setText(m_cfghbBtnAdjustCF, _t("cfgc5", L"Go")); + m_btnMgr.setText(m_cfghbLblHideHB, _t("cfghb5", L"Hide homebrew button")); m_btnMgr.setText(m_cfghbLblSmallbox, _t("cfghb2", L"Coverflow Smallbox")); m_btnMgr.setText(m_cfghbLblBoxMode, _t("cfghb4", L"Box Mode")); m_btnMgr.setText(m_cfghbLblPartition, _t("cfghb3", L"Homebrew Partition")); diff --git a/source/menu/menu_config_source.cpp b/source/menu/menu_config_source.cpp index 6610af50..391be0a7 100644 --- a/source/menu/menu_config_source.cpp +++ b/source/menu/menu_config_source.cpp @@ -120,14 +120,14 @@ void CMenu::_CfgSrc(void) else if(m_btnMgr.selected(m_cfgsrcBtnSmallbox)) { m_refreshGameList = true; - fsop_deleteFolder(fmt("%s/sourceflow", m_cacheDir.c_str())); + //fsop_deleteFolder(fmt("%s/sourceflow", m_cacheDir.c_str())); m_cfg.setBool(SOURCEFLOW_DOMAIN, "smallbox", !m_cfg.getBool(SOURCEFLOW_DOMAIN, "smallbox", false)); m_btnMgr.setText(m_cfgsrcBtnSmallbox, m_cfg.getBool(SOURCEFLOW_DOMAIN, "smallbox") ? _t("on", L"On") : _t("off", L"Off")); } else if(m_btnMgr.selected(m_cfgsrcBtnBoxMode)) { m_refreshGameList = true; - fsop_deleteFolder(fmt("%s/sourceflow", m_cacheDir.c_str())); + //fsop_deleteFolder(fmt("%s/sourceflow", m_cacheDir.c_str())); m_cfg.setBool(SOURCEFLOW_DOMAIN, "box_mode", !m_cfg.getBool(SOURCEFLOW_DOMAIN, "box_mode", false)); m_btnMgr.setText(m_cfgsrcBtnBoxMode, m_cfg.getBool(SOURCEFLOW_DOMAIN, "box_mode") ? _t("on", L"On") : _t("off", L"Off")); } diff --git a/source/menu/menu_game.cpp b/source/menu/menu_game.cpp index cc0f44aa..4fe3cbc9 100644 --- a/source/menu/menu_game.cpp +++ b/source/menu/menu_game.cpp @@ -308,8 +308,7 @@ void CMenu::_hideGame(bool instant) m_btnMgr.hide(m_gameBtnToggleFull, instant); m_btnMgr.hide(m_gameBtnFavoriteOn, instant); m_btnMgr.hide(m_gameBtnFavoriteOff, instant); - m_btnMgr.hide(m_gameBtnAdultOn, instant); - m_btnMgr.hide(m_gameBtnAdultOff, instant); + m_btnMgr.hide(m_gameBtnCategories, instant); for(u8 i = 0; i < ARRAY_SIZE(m_gameLblUser); ++i) if(m_gameLblUser[i] != -1) m_btnMgr.hide(m_gameLblUser[i], instant); @@ -542,29 +541,6 @@ void CMenu::_game(bool launch) coverFlipped = false; m_banner.SetShowBanner(true); } - /* if B on favorites btn goto game categories */ - else if(m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff)) - { - _hideGame(); - if(m_locked) - { - m_banner.SetShowBanner(false); - error(_t("errgame15", L"WiiFlow locked! Unlock WiiFlow to use this feature.")); - m_banner.SetShowBanner(true); - } - else - { - // the mainloop handles drawing banner while in settings - m_banner.ToggleZoom();//zoom to full - m_banner.ToggleGameSettings();// dim brightness - _CategorySettings(true); - m_banner.ToggleGameSettings();//reset brightness - m_banner.ToggleZoom();//de zoom to small - } - _showGame(); - if(m_newGame) - startGameSound = -10; - } /* exit game selected menu */ else { @@ -661,8 +637,6 @@ void CMenu::_game(bool launch) m_banner.ToggleZoom();//de zoom to small } _showGame(); - if(m_newGame) - startGameSound = -10; } else if(m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff)) { @@ -673,24 +647,27 @@ void CMenu::_game(bool launch) if(m_favorites) m_refreshGameList = true; } - else if(m_btnMgr.selected(m_gameBtnAdultOn) || m_btnMgr.selected(m_gameBtnAdultOff)) + else if(m_btnMgr.selected(m_gameBtnCategories)) { if(m_locked) { m_banner.SetShowBanner(false); error(_t("errgame15", L"WiiFlow locked! Unlock WiiFlow to use this feature.")); m_banner.SetShowBanner(true); - _showGame(); } else { - if(hdr->type == TYPE_PLUGIN) - m_gcfg1.setBool("ADULTONLY_PLUGINS", id, !m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false)); - else - m_gcfg1.setBool("ADULTONLY", id, !m_gcfg1.getBool("ADULTONLY", id, false)); - if(m_locked) - m_refreshGameList = true; + _hideGame(); + // the mainloop handles drawing banner while in settings + m_banner.ToggleZoom();//zoom to full + m_banner.ToggleGameSettings();// dim brightness + _CategorySettings(true); + m_banner.ToggleGameSettings();//reset brightness + m_banner.ToggleZoom();//de zoom to small } + _showGame(); + if(m_newGame) + startGameSound = -10; } else if(m_btnMgr.selected(m_gameBtnBack) || m_btnMgr.selected(m_gameBtnBackFull)) { @@ -879,6 +856,7 @@ void CMenu::_game(bool launch) m_btnMgr.show(m_gameBtnBack); m_btnMgr.show(m_gameBtnSettings); m_btnMgr.show(m_gameBtnDelete); + m_btnMgr.show(m_gameBtnCategories); bool b; if(hdr->type == TYPE_PLUGIN) b = m_gcfg1.getBool("FAVORITES_PLUGINS", id, false); @@ -886,12 +864,6 @@ void CMenu::_game(bool launch) b = m_gcfg1.getBool("FAVORITES", id, false); m_btnMgr.show(b ? m_gameBtnFavoriteOn : m_gameBtnFavoriteOff); m_btnMgr.hide(b ? m_gameBtnFavoriteOff : m_gameBtnFavoriteOn); - if(hdr->type == TYPE_PLUGIN) - b = m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false); - else - b = m_gcfg1.getBool("ADULTONLY", id, false); - m_btnMgr.show(b ? m_gameBtnAdultOn : m_gameBtnAdultOff); - m_btnMgr.hide(b ? m_gameBtnAdultOff : m_gameBtnAdultOn); for(u8 i = 0; i < ARRAY_SIZE(m_gameLblUser) - 2; ++i)// #4 is used for banner frame if(m_gameLblUser[i] != -1) m_btnMgr.show(m_gameLblUser[i]); @@ -900,8 +872,7 @@ void CMenu::_game(bool launch) { m_btnMgr.hide(m_gameBtnFavoriteOn); m_btnMgr.hide(m_gameBtnFavoriteOff); - m_btnMgr.hide(m_gameBtnAdultOn); - m_btnMgr.hide(m_gameBtnAdultOff); + m_btnMgr.hide(m_gameBtnCategories); m_btnMgr.hide(m_gameBtnSettings); m_btnMgr.hide(m_gameBtnDelete); m_btnMgr.hide(m_gameBtnPlay); @@ -936,8 +907,7 @@ void CMenu::_game(bool launch) m_btnMgr.hide(m_gameBtnFavoriteOn); m_btnMgr.hide(m_gameBtnFavoriteOff); - m_btnMgr.hide(m_gameBtnAdultOn); - m_btnMgr.hide(m_gameBtnAdultOff); + m_btnMgr.hide(m_gameBtnCategories); m_btnMgr.hide(m_gameBtnSettings); m_btnMgr.hide(m_gameBtnDelete); m_btnMgr.hide(m_gameBtnPlay); @@ -963,6 +933,7 @@ void CMenu::_game(bool launch) m_btnMgr.show(m_gameBtnBack); m_btnMgr.show(m_gameBtnSettings); m_btnMgr.show(m_gameBtnDelete); + m_btnMgr.show(m_gameBtnCategories); bool b; if(hdr->type == TYPE_PLUGIN) b = m_gcfg1.getBool("FAVORITES_PLUGINS", id, false); @@ -970,12 +941,6 @@ void CMenu::_game(bool launch) b = m_gcfg1.getBool("FAVORITES", id, false); m_btnMgr.show(b ? m_gameBtnFavoriteOn : m_gameBtnFavoriteOff); m_btnMgr.hide(b ? m_gameBtnFavoriteOff : m_gameBtnFavoriteOn); - if(hdr->type == TYPE_PLUGIN) - b = m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false); - else - b = m_gcfg1.getBool("ADULTONLY", id, false); - m_btnMgr.show(b ? m_gameBtnAdultOn : m_gameBtnAdultOff); - m_btnMgr.hide(b ? m_gameBtnAdultOff : m_gameBtnAdultOn); for(u8 i = 0; i < ARRAY_SIZE(m_gameLblUser) - 2; ++i)// don't include small banner frame if(m_gameLblUser[i] != -1) m_btnMgr.show(m_gameLblUser[i]); @@ -984,8 +949,7 @@ void CMenu::_game(bool launch) { m_btnMgr.hide(m_gameBtnFavoriteOn); m_btnMgr.hide(m_gameBtnFavoriteOff); - m_btnMgr.hide(m_gameBtnAdultOn); - m_btnMgr.hide(m_gameBtnAdultOff); + m_btnMgr.hide(m_gameBtnCategories); m_btnMgr.hide(m_gameBtnSettings); m_btnMgr.hide(m_gameBtnDelete); m_btnMgr.hide(m_gameBtnPlay); @@ -2035,10 +1999,8 @@ void CMenu::_initGameMenu() TexData texGameFavOnSel; TexData texGameFavOff; TexData texGameFavOffSel; - TexData texAdultOn; - TexData texAdultOnSel; - TexData texAdultOff; - TexData texAdultOffSel; + TexData texCategories; + TexData texCategoriesSel; TexData texDelete; TexData texDeleteSel; TexData texSettings; @@ -2050,14 +2012,12 @@ void CMenu::_initGameMenu() TexHandle.fromImageFile(texGameFavOnSel, fmt("%s/gamefavons.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texGameFavOff, fmt("%s/gamefavoff.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texGameFavOffSel, fmt("%s/gamefavoffs.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texAdultOn, fmt("%s/stopkidon.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texAdultOnSel, fmt("%s/stopkidons.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texAdultOff, fmt("%s/stopkidoff.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texAdultOffSel, fmt("%s/stopkidoffs.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texCategories, fmt("%s/btncat.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texCategoriesSel, fmt("%s/btncats.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texDelete, fmt("%s/delete.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texDeleteSel, fmt("%s/deletes.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texSettings, fmt("%s/btngamecfg.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texSettingsSel, fmt("%s/btngamecfgs.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texSettings, fmt("%s/btnconfig.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texSettingsSel, fmt("%s/btnconfigs.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texToggleBanner, fmt("%s/blank.png", m_imgsDir.c_str())); _addUserLabels(m_gameLblUser, ARRAY_SIZE(m_gameLblUser), "GAME"); @@ -2069,8 +2029,7 @@ void CMenu::_initGameMenu() m_gameBtnBack = _addButton("GAME/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor); m_gameBtnFavoriteOn = _addPicButton("GAME/FAVORITE_ON", texGameFavOn, texGameFavOnSel, 460, 200, 48, 48); m_gameBtnFavoriteOff = _addPicButton("GAME/FAVORITE_OFF", texGameFavOff, texGameFavOffSel, 460, 200, 48, 48); - m_gameBtnAdultOn = _addPicButton("GAME/ADULTONLY_ON", texAdultOn, texAdultOnSel, 532, 200, 48, 48); - m_gameBtnAdultOff = _addPicButton("GAME/ADULTONLY_OFF", texAdultOff, texAdultOffSel, 532, 200, 48, 48); + m_gameBtnCategories = _addPicButton("GAME/CATEGORIES_BTN", texCategories, texCategoriesSel, 532, 200, 48, 48); m_gameBtnSettings = _addPicButton("GAME/SETTINGS_BTN", texSettings, texSettingsSel, 460, 272, 48, 48); m_gameBtnDelete = _addPicButton("GAME/DELETE_BTN", texDelete, texDeleteSel, 532, 272, 48, 48); m_gameBtnBackFull = _addButton("GAME/BACK_FULL_BTN", theme.btnFont, L"", 100, 390, 200, 56, theme.btnFontColor); @@ -2088,8 +2047,7 @@ void CMenu::_initGameMenu() _setHideAnim(m_gameBtnBack, "GAME/BACK_BTN", 0, 0, 1.f, -1.f); _setHideAnim(m_gameBtnFavoriteOn, "GAME/FAVORITE_ON", 0, 0, 1.f, -1.f); _setHideAnim(m_gameBtnFavoriteOff, "GAME/FAVORITE_OFF", 0, 0, 1.f, -1.f); - _setHideAnim(m_gameBtnAdultOn, "GAME/ADULTONLY_ON", 0, 0, 1.f, -1.f); - _setHideAnim(m_gameBtnAdultOff, "GAME/ADULTONLY_OFF", 0, 0, 1.f, -1.f); + _setHideAnim(m_gameBtnCategories, "GAME/CATEGORIES_BTN", 0, 0, 1.f, -1.f); _setHideAnim(m_gameBtnSettings, "GAME/SETTINGS_BTN", 0, 0, 1.f, -1.f); _setHideAnim(m_gameBtnDelete, "GAME/DELETE_BTN", 0, 0, 1.f, -1.f); _setHideAnim(m_gameBtnPlayFull, "GAME/PLAY_FULL_BTN", 0, 0, 1.f, 0.f); diff --git a/source/menu/menu_main.cpp b/source/menu/menu_main.cpp index 5cc21f6e..7e78986f 100644 --- a/source/menu/menu_main.cpp +++ b/source/menu/menu_main.cpp @@ -23,6 +23,7 @@ void CMenu::_hideMain(bool instant) { m_btnMgr.hide(m_mainBtnNext, instant); m_btnMgr.hide(m_mainBtnPrev, instant); + m_btnMgr.hide(m_mainBtnCategories, instant); m_btnMgr.hide(m_mainBtnConfig, instant); m_btnMgr.hide(m_mainBtnHome, instant); m_btnMgr.hide(m_mainBtnHomebrew, instant); @@ -281,6 +282,7 @@ int CMenu::main(void) bool show_channel = !m_cfg.getBool(CHANNEL_DOMAIN, "disable", false); bool show_plugin = !m_cfg.getBool(PLUGIN_DOMAIN, "disable", false); bool show_gamecube = !m_cfg.getBool(GC_DOMAIN, "disable", false); + bool show_homebrew = !m_cfg.getBool(HOMEBREW_DOMAIN, "disable", false); m_multisource = m_cfg.getBool("GENERAL", "multisource", false); bool m_source_on_start = m_cfg.getBool("GENERAL", "source_on_start", false); bool bheld = false;// bheld to indicate btn b was pressed or held @@ -292,7 +294,7 @@ int CMenu::main(void) m_prev_view = 0; m_current_view = m_cfg.getUInt("GENERAL", "sources", COVERFLOW_WII); m_source_cnt = 0; - for(u8 i = 1; i < 16; i <<= 1)//not including coverflow_homebrew + for(u8 i = 1; i < 32; i <<= 1) if(m_current_view & i) m_source_cnt++; @@ -396,24 +398,16 @@ int CMenu::main(void) } _showMain(); } - /* homebrew flow config menu */ - else if(m_current_view == COVERFLOW_HOMEBREW) - { - _CfgHB(); - if(BTN_B_HELD) - { - bheld = true; - bUsed = true; - } - _showMain(); - } /* Home menu */ else { if(_Home()) break;// exit wiiflow if(BTN_B_HELD) + { + bheld = true; bUsed = true; + } _showMain(); } } @@ -436,16 +430,20 @@ int CMenu::main(void) } _showMain(); } - else if(m_btnMgr.selected(m_mainBtnChannel) || m_btnMgr.selected(m_mainBtnWii) || m_btnMgr.selected(m_mainBtnGamecube) || m_btnMgr.selected(m_mainBtnPlugin)) + else if(m_btnMgr.selected(m_mainBtnChannel) || m_btnMgr.selected(m_mainBtnWii) || m_btnMgr.selected(m_mainBtnGamecube) + || m_btnMgr.selected(m_mainBtnPlugin) || m_btnMgr.selected(m_mainBtnHomebrew)) { /* change source via view button on main menu */ if(m_current_view == COVERFLOW_WII) - m_current_view = show_gamecube ? COVERFLOW_GAMECUBE : (show_channel ? COVERFLOW_CHANNEL : (show_plugin ? COVERFLOW_PLUGIN : COVERFLOW_WII)); + m_current_view = show_gamecube ? COVERFLOW_GAMECUBE : (show_channel ? COVERFLOW_CHANNEL : + (show_plugin ? COVERFLOW_PLUGIN : (show_homebrew ? COVERFLOW_HOMEBREW : COVERFLOW_WII))); else if(m_current_view == COVERFLOW_GAMECUBE) - m_current_view = show_channel ? COVERFLOW_CHANNEL : (show_plugin ? COVERFLOW_PLUGIN : COVERFLOW_WII); + m_current_view = show_channel ? COVERFLOW_CHANNEL : (show_plugin ? COVERFLOW_PLUGIN : (show_homebrew ? COVERFLOW_HOMEBREW : COVERFLOW_WII)); else if(m_current_view == COVERFLOW_CHANNEL) - m_current_view = show_plugin ? COVERFLOW_PLUGIN : COVERFLOW_WII; - else if(m_current_view == COVERFLOW_PLUGIN || m_source_cnt > 1) + m_current_view = show_plugin ? COVERFLOW_PLUGIN : (show_homebrew ? COVERFLOW_HOMEBREW : COVERFLOW_WII); + else if(m_current_view == COVERFLOW_PLUGIN) + m_current_view = show_homebrew ? COVERFLOW_HOMEBREW : COVERFLOW_WII; + else if(m_current_view == COVERFLOW_HOMEBREW || m_source_cnt > 1) m_current_view = COVERFLOW_WII; m_source_cnt = 1; m_cfg.setUInt("GENERAL", "sources", m_current_view); @@ -476,12 +474,44 @@ int CMenu::main(void) show_gamecube = !m_cfg.getBool(GC_DOMAIN, "disable", false); _showMain(); } - else if(m_btnMgr.selected(m_mainBtnHomebrew)) + else if(m_btnMgr.selected(m_mainBtnCategories)) { - /* launch homebrew flow */ - if(m_locked && m_cfg.getBool(HOMEBREW_DOMAIN, "parental", false)) + _hideMain(); + _CategorySettings(); + if(BTN_B_HELD)// returned using the b btn { - error(_t("errgame15", L"WiiFlow locked! Unlock WiiFlow to use this feature.")); + bheld = true; + bUsed = true; + } + _setMainBg(); + if(m_refreshGameList) + { + m_refreshGameList = false; + _initCF(); + } + } + else if(m_btnMgr.selected(m_mainBtnDVD)) + { + if(disc_check & 0x2) + { + /* Boot DVD in drive */ + _hideMain(true); + /* Create Fake Header */ + dir_discHdr hdr; + memset(&hdr, 0, sizeof(dir_discHdr)); + memcpy(&hdr.id, "dvddvd", 6);//this must be set for neek2o + /* Boot the Disc */ + _launchGame(&hdr, true, BTN_B_HELD); + if(BTN_B_HELD) + { + bheld = true; + bUsed = true; + } + _showCF(false); + } + else + { + error(_t("main8", L"No disc in drive!")); if(BTN_B_HELD) { bheld = true; @@ -489,29 +519,6 @@ int CMenu::main(void) } _showMain(); } - else - { - m_prev_view = m_current_view; - m_current_view = COVERFLOW_HOMEBREW; - _showCF(true); - } - } - else if(m_btnMgr.selected(m_mainBtnDVD)) - { - /* Boot DVD in drive */ - _hideMain(true); - /* Create Fake Header */ - dir_discHdr hdr; - memset(&hdr, 0, sizeof(dir_discHdr)); - memcpy(&hdr.id, "dvddvd", 6);//this must be set for neek2o - /* Boot the Disc */ - _launchGame(&hdr, true, BTN_B_HELD); - if(BTN_B_HELD) - { - bheld = true; - bUsed = true; - } - _showCF(false); } else if(m_btnMgr.selected(m_mainBtnFavoritesOn) || m_btnMgr.selected(m_mainBtnFavoritesOff)) { @@ -533,7 +540,7 @@ int CMenu::main(void) } else { - _game(BTN_B_HELD || m_current_view == COVERFLOW_HOMEBREW); + _game(BTN_B_HELD); if(m_exit) break; if(BTN_B_HELD) @@ -556,26 +563,7 @@ int CMenu::main(void) else if(BTN_B_PRESSED) { bheld = true; - /* Show Categories */ - if(m_btnMgr.selected(m_mainBtnFavoritesOn) || m_btnMgr.selected(m_mainBtnFavoritesOff)) - { - _hideMain(); - _CategorySettings(); - if(BTN_B_HELD)// returned using the b btn - { - bheld = true; - bUsed = true; - } - else - bheld = false; - _setMainBg(); - if(m_refreshGameList) - { - m_refreshGameList = false; - _initCF(); - } - } - else if(m_btnMgr.selected(m_mainBtnNext) || m_btnMgr.selected(m_mainBtnPrev)) + if(m_btnMgr.selected(m_mainBtnNext) || m_btnMgr.selected(m_mainBtnPrev)) { bUsed = true; const char *domain = _domainFromView(); @@ -792,21 +780,21 @@ int CMenu::main(void) } } /*zones, showing and hiding buttons */ - if(!m_gameList.empty() && m_show_zone_prev && !m_sourceflow && m_current_view != COVERFLOW_HOMEBREW) + if(!m_gameList.empty() && m_show_zone_prev && !m_sourceflow) m_btnMgr.show(m_mainBtnPrev); else m_btnMgr.hide(m_mainBtnPrev); - if(!m_gameList.empty() && m_show_zone_next && !m_sourceflow && m_current_view != COVERFLOW_HOMEBREW) + if(!m_gameList.empty() && m_show_zone_next && !m_sourceflow) m_btnMgr.show(m_mainBtnNext); else m_btnMgr.hide(m_mainBtnNext); - if(m_show_zone_main && !m_sourceflow && m_current_view != COVERFLOW_HOMEBREW) + if(m_show_zone_main && !m_sourceflow) { m_btnMgr.show(m_mainLblUser[0]); m_btnMgr.show(m_mainLblUser[1]); - m_btnMgr.show(m_mainBtnHomebrew); + m_btnMgr.show(m_mainBtnCategories); m_btnMgr.show(m_mainBtnConfig); m_btnMgr.show(m_mainBtnHome); static bool change = m_favorites; @@ -819,12 +807,12 @@ int CMenu::main(void) m_btnMgr.hide(m_mainLblUser[0]); m_btnMgr.hide(m_mainLblUser[1]); m_btnMgr.hide(m_mainBtnConfig); - m_btnMgr.hide(m_mainBtnHomebrew); + m_btnMgr.hide(m_mainBtnCategories); m_btnMgr.hide(m_mainBtnHome); m_btnMgr.hide(m_mainBtnFavoritesOn); m_btnMgr.hide(m_mainBtnFavoritesOff); } - if(!m_cfg.getBool("GENERAL", "hideviews", false) && m_show_zone_main2 && !m_sourceflow && m_current_view != COVERFLOW_HOMEBREW) + if(!m_cfg.getBool("GENERAL", "hideviews", false) && m_show_zone_main2 && !m_sourceflow) { switch(m_current_view) { @@ -835,6 +823,8 @@ int CMenu::main(void) m_btnMgr.show(m_mainBtnChannel); else if(show_plugin) m_btnMgr.show(m_mainBtnPlugin); + else if(show_homebrew) + m_btnMgr.show(m_mainBtnHomebrew); else m_btnMgr.show(m_mainBtnWii); break; @@ -843,12 +833,22 @@ int CMenu::main(void) m_btnMgr.show(m_mainBtnChannel); else if(show_plugin) m_btnMgr.show(m_mainBtnPlugin); + else if(show_homebrew) + m_btnMgr.show(m_mainBtnHomebrew); else m_btnMgr.show(m_mainBtnWii); break; case COVERFLOW_CHANNEL: if(show_plugin) m_btnMgr.show(m_mainBtnPlugin); + else if(show_homebrew) + m_btnMgr.show(m_mainBtnHomebrew); + else + m_btnMgr.show(m_mainBtnWii); + break; + case COVERFLOW_PLUGIN: + if(show_homebrew) + m_btnMgr.show(m_mainBtnHomebrew); else m_btnMgr.show(m_mainBtnWii); break; @@ -865,10 +865,11 @@ int CMenu::main(void) m_btnMgr.hide(m_mainBtnWii); m_btnMgr.hide(m_mainBtnGamecube); m_btnMgr.hide(m_mainBtnPlugin); + m_btnMgr.hide(m_mainBtnHomebrew); m_btnMgr.hide(m_mainLblUser[2]); m_btnMgr.hide(m_mainLblUser[3]); } - if((disc_check & 0x2) && m_show_zone_main3 && !m_sourceflow && m_current_view != COVERFLOW_HOMEBREW) + if(m_show_zone_main3 && !m_sourceflow) { m_btnMgr.show(m_mainBtnDVD); m_btnMgr.show(m_mainLblUser[4]); @@ -906,6 +907,8 @@ int CMenu::main(void) void CMenu::_initMainMenu() { + TexData texCategories; + TexData texCategoriesS; TexData texHome; TexData texHomeS; TexData texConfig; @@ -937,7 +940,9 @@ void CMenu::_initMainMenu() if(m_theme.loaded() && TexHandle.fromImageFile(bgLQ, fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString("MAIN/BG", "texture").c_str()), GX_TF_CMPR, 64, 64) == TE_OK) m_mainBgLQ = bgLQ; - TexHandle.fromImageFile(texHome, fmt("%s/btnquit.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texCategories, fmt("%s/btncat.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texCategoriesS, fmt("%s/btncats.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texHome, fmt("%s/btnquit.png", m_imgsDir.c_str()));// home button TexHandle.fromImageFile(texHomeS, fmt("%s/btnquits.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texConfig, fmt("%s/btnconfig.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texConfigS, fmt("%s/btnconfigs.png", m_imgsDir.c_str())); @@ -957,29 +962,32 @@ void CMenu::_initMainMenu() TexHandle.fromImageFile(texPrevS, fmt("%s/btnprevs.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texNext, fmt("%s/btnnext.png", m_imgsDir.c_str())); TexHandle.fromImageFile(texNextS, fmt("%s/btnnexts.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texFavOn, fmt("%s/favoriteson.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texFavOnS, fmt("%s/favoritesons.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texFavOff, fmt("%s/favoritesoff.png", m_imgsDir.c_str())); - TexHandle.fromImageFile(texFavOffS, fmt("%s/favoritesoffs.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texFavOn, fmt("%s/gamefavon.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texFavOnS, fmt("%s/gamefavons.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texFavOff, fmt("%s/gamefavoff.png", m_imgsDir.c_str())); + TexHandle.fromImageFile(texFavOffS, fmt("%s/gamefavoffs.png", m_imgsDir.c_str())); _addUserLabels(m_mainLblUser, ARRAY_SIZE(m_mainLblUser), "MAIN"); - m_mainBtnConfig = _addPicButton("MAIN/CONFIG_BTN", texConfig, texConfigS, 70, 400, 48, 48); - m_mainBtnHome = _addPicButton("MAIN/QUIT_BTN", texHome, texHomeS, 570, 400, 48, 48); - m_mainBtnChannel = _addPicButton("MAIN/CHANNEL_BTN", texChannel, texChannels, 520, 400, 48, 48); - m_mainBtnHomebrew = _addPicButton("MAIN/HOMEBREW_BTN", texHomebrew, texHomebrews, 20, 400, 48, 48); - m_mainBtnWii = _addPicButton("MAIN/USB_BTN", texWii, texWiis, 520, 400, 48, 48); - m_mainBtnGamecube = _addPicButton("MAIN/DML_BTN", texGamecube, texGamecubes, 520, 400, 48, 48); - m_mainBtnPlugin = _addPicButton("MAIN/EMU_BTN", texPlugin, texPlugins, 520, 400, 48, 48); - m_mainBtnDVD = _addPicButton("MAIN/DVD_BTN", texDVD, texDVDs, 470, 400, 48, 48); + m_mainBtnCategories = _addPicButton("MAIN/CATEGORIES_BTN", texCategories, texCategoriesS, 126, 400, 48, 48); + m_mainBtnFavoritesOn = _addPicButton("MAIN/FAVORITES_ON", texFavOn, texFavOnS, 194, 400, 48, 48); + m_mainBtnFavoritesOff = _addPicButton("MAIN/FAVORITES_OFF", texFavOff, texFavOffS, 194, 400, 48, 48); + m_mainBtnConfig = _addPicButton("MAIN/CONFIG_BTN", texConfig, texConfigS, 262, 400, 48, 48); + m_mainBtnHome = _addPicButton("MAIN/QUIT_BTN", texHome, texHomeS, 330, 400, 48, 48); + m_mainBtnChannel = _addPicButton("MAIN/CHANNEL_BTN", texChannel, texChannels,398, 400, 48, 48); + m_mainBtnHomebrew = _addPicButton("MAIN/HOMEBREW_BTN", texHomebrew, texHomebrews, 398, 400, 48, 48); + m_mainBtnWii = _addPicButton("MAIN/USB_BTN", texWii, texWiis, 398, 400, 48, 48); + m_mainBtnGamecube = _addPicButton("MAIN/DML_BTN", texGamecube, texGamecubes, 398, 400, 48, 48); + m_mainBtnPlugin = _addPicButton("MAIN/EMU_BTN", texPlugin, texPlugins, 398, 400, 48, 48); + m_mainBtnDVD = _addPicButton("MAIN/DVD_BTN", texDVD, texDVDs, 466, 400, 48, 48); + m_mainBtnNext = _addPicButton("MAIN/NEXT_BTN", texNext, texNextS, 540, 146, 80, 80); m_mainBtnPrev = _addPicButton("MAIN/PREV_BTN", texPrev, texPrevS, 20, 146, 80, 80); - m_mainBtnFavoritesOn = _addPicButton("MAIN/FAVORITES_ON", texFavOn, texFavOnS, 288, 400, 64, 64); - m_mainBtnFavoritesOff = _addPicButton("MAIN/FAVORITES_OFF", texFavOff, texFavOffS, 288, 400, 64, 64); + m_mainLblMessage = _addLabel("MAIN/MESSAGE", theme.lblFont, L"", 40, 40, 560, 140, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE); m_mainLblLetter = _addLabel("MAIN/LETTER", theme.titleFont, L"", 540, 40, 80, 80, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, emptyTex); m_mainLblNotice = _addLabel("MAIN/NOTICE", theme.txtFont, L"", 340, 40, 280, 80, theme.titleFontColor, FTGX_JUSTIFY_RIGHT | FTGX_ALIGN_MIDDLE); - m_mainLblCurMusic = _addLabel("MAIN/MUSIC", theme.btnFont, L"", 0, 40, 640, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC); + m_mainLblCurMusic = _addLabel("MAIN/MUSIC", theme.txtFont, L"", 0, 10, 640, 32, theme.txtFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC); //#ifdef SHOWMEM m_mem1FreeSize = _addLabel("MEM1", theme.btnFont, L"", 40, 300, 480, 56, theme.btnFontColor, FTGX_JUSTIFY_LEFT, emptyTex); m_mem2FreeSize = _addLabel("MEM2", theme.btnFont, L"", 40, 356, 480, 56, theme.btnFontColor, FTGX_JUSTIFY_LEFT, emptyTex); @@ -1017,6 +1025,7 @@ void CMenu::_initMainMenu() // _setHideAnim(m_mainBtnNext, "MAIN/NEXT_BTN", 0, 0, 0.f, 0.f); _setHideAnim(m_mainBtnPrev, "MAIN/PREV_BTN", 0, 0, 0.f, 0.f); + _setHideAnim(m_mainBtnCategories, "MAIN/CATEGORIES_BTN", 0, 40, 0.f, 0.f); _setHideAnim(m_mainBtnConfig, "MAIN/CONFIG_BTN", 0, 40, 0.f, 0.f); _setHideAnim(m_mainBtnHome, "MAIN/QUIT_BTN", 0, 40, 0.f, 0.f); _setHideAnim(m_mainBtnChannel, "MAIN/CHANNEL_BTN", 0, 40, 0.f, 0.f); diff --git a/source/menu/menu_source.cpp b/source/menu/menu_source.cpp index 75715ad2..0f24967c 100644 --- a/source/menu/menu_source.cpp +++ b/source/menu/menu_source.cpp @@ -60,17 +60,7 @@ void CMenu::_sourceFlow() m_current_view = COVERFLOW_CHANNEL; } else if(source == "homebrew") - { - if(m_locked && m_cfg.getBool(HOMEBREW_DOMAIN, "parental", false)) - { - error(_t("errsource1", L"Homebrew locked!")); - m_current_view = COVERFLOW_WII;// or return - } - else - { - m_current_view = COVERFLOW_HOMEBREW; - } - } + m_current_view = COVERFLOW_HOMEBREW; else if(source == "allplugins") { strncpy(single_sourcebtn, btn_selected, 16); @@ -421,7 +411,7 @@ bool CMenu::_Source() m_cfg.setUInt("GENERAL", "sources", m_current_view); m_source_cnt = 0; - for(i = 1; i < 16; i <<= 1)//not including coverflow_homebrew + for(i = 1; i < 32; i <<= 1) if(m_current_view & i) m_source_cnt++; break; @@ -499,19 +489,8 @@ bool CMenu::_Source() } else if(source == "homebrew") { - if(m_locked && m_cfg.getBool(HOMEBREW_DOMAIN, "parental", false)) - { - _hideSource(); - error(_t("errsource1", L"Homebrew locked!")); - exitSource = false; - _showSource(); - _updateSourceBtns(); - } - else - { - m_current_view = COVERFLOW_HOMEBREW; - _setSrcOptions(); - } + m_current_view = COVERFLOW_HOMEBREW; + _setSrcOptions(); } else if(source == "allplugins") { @@ -634,13 +613,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(); - _updateSourceBtns(); - } + m_current_view ^= COVERFLOW_HOMEBREW; else if(source == "allplugins") { m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount); diff --git a/wii/wiiflow/Languages/english.ini b/wii/wiiflow/Languages/english.ini index b3a44c7d..95f500e8 100644 --- a/wii/wiiflow/Languages/english.ini +++ b/wii/wiiflow/Languages/english.ini @@ -154,6 +154,7 @@ cfgg54=Video Width cfgg55=Video Position cfgg56=Patch PAL50 cfgg57=Not allowed for disc! +cfgg58=Adult only cfgg4=Patch country strings cfgg5=Ocarina cfgg6= @@ -226,7 +227,7 @@ cfghb1=Homebrew Settings cfghb2=Coverflow Smallbox cfghb3=Homebrew Partition cfghb4=Box Mode -cfghb5=Download Covers +cfghb5=Hide homebrew button ChanReal=Real NAND ChanEmu=Emu NAND ChanBoth=Both @@ -393,6 +394,7 @@ main4=No apps found in main5=No roms/items found. main6=No plugins Selected. main7=Total Games: %u +main8=No disc in drive! mastersystem=Sega Master System menu=System Menu NANDfull=Full