2016-11-07 16:06:00 +01:00
|
|
|
|
2012-05-11 16:17:39 +02:00
|
|
|
#include "menu.hpp"
|
2012-05-19 23:55:58 +02:00
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
// Source menu
|
2012-09-13 16:54:17 +02:00
|
|
|
s16 m_sourceLblPage;
|
|
|
|
s16 m_sourceBtnPageM;
|
|
|
|
s16 m_sourceBtnPageP;
|
2013-01-15 14:54:33 +01:00
|
|
|
s16 m_sourceBtnBack;
|
2016-06-20 23:03:40 +02:00
|
|
|
s16 m_sourceBtnClear;
|
2012-09-13 16:54:17 +02:00
|
|
|
s16 m_sourceLblTitle;
|
|
|
|
s16 m_sourceBtnSource[12];
|
|
|
|
s16 m_sourceLblUser[4];
|
2012-05-11 16:17:39 +02:00
|
|
|
|
2013-07-23 15:14:51 +02:00
|
|
|
TexData m_sourceBg;
|
|
|
|
|
-updating wiiflow lite to beta 4.3.0
-fixed using categories to hide GC disc 2's. Apparently this has never really worked right for some time or ever.
-fixed deleting the cached cover texture file for plugin games. Delete cover for plugins only deletes the cached texture file (.wfc)
-fixed favorites and adultonly (parental lock) for plugin games. Apparently I may have broke this a few revisions back.
-favorites and adultonly for plugin games now have their own domains in gamecfg1- [FAVORITES_PLUGINS] and [ADULTONLY_PLUGINS]. just makes it more organized.
-only wii, GC, channels are added to [PLAYCOUNT] and [LAST_PLAYED] in gamecfg1.
-now loading gamecfg1 at startup and leaving it loaded till exit. no more loading it and unloading all the time.
-fixed scrolling for game_info synopsis, credits, and help text.
-made source menu buttons wider for wiiflow default. old 80x80, now 100x80. looks better.
-display music info now defaults to off
-screensaver_disabled now defaults to yes
-show GC view button is now on by default no matter what. the only way it is disabled is if you edit wiiflow.ini manually. this is how all the view buttons work.
-removed hiding homebrew button but if wiiflow locked it won't work or in sourceflow it won't show.
-dump_list is now under [GENERAL] instead of each view. Also only works for Wii, GC, and channels.
-sorting only works for Wii, GC, and Channels now. disabled for sourceflow, plugins, homebrew, and combined view.
-now if no games are found a message is shown with the current path so you can see where wiiflow is looking. (except for plugins)
-removed auto create emuNAND for emuNAND view if gamelist is empty. just go to settings>NAND settings if you want to extract or disable it.
-now when no games are found all buttons at bottom are still accessible allowing you to change the view or go to settings and change current partition or path and even extract your NAND to create a EmuNAND. Or go to Home Menu and Install a Wii or GC game.
-removed auto extract NAND to emuNAND when launching a Wii game with EmuNAND save. Now a message is diplayed saying 'emuNAND for saves not found - using real NAND'.
-made the speed at which cover titles fade in/out almost instantly.
-removed update button from Home Menu. online update code is still there but not used and probably won't be used any more as there just isn't a need for it now.
-removed ftp button from Home Menu and all code for the FTP server. I just use WiiXplorer's FTP server. it seems to work better for me.
-disabled keep USB Alive thread for now. i think there's a possibilty it might be the cause of my SD/USB files getting corrupted.
-removed Btn B and - combo to switch partitions. didn't seem useful anymore.
-redid nand emulation settings menu. looks like this now:
pg1
Select EmuNAND
EmuNAND Enulation
Select SaveNAND
SaveNAND Emulation
pg2
Extract Saves All
Missing
Extract NAND
Select Saves Partition
-no longer blocking Select Plugin menu and View icons when using source menu combined view
-now Select Plugins Menu is like switching to plugin view but you get to choose the plugins first
-now [PLUGIN] partition= is the default partition for all plugins. to change individual plugins add 'romPartition=x' to the plugin ini. x is the partition number 0 thru 8 with SD being 0. this is how my usbloadergx plugin mod works.
2016-10-05 01:44:13 +02:00
|
|
|
string source;
|
2013-09-21 18:33:16 +02:00
|
|
|
bool exitSource = false;
|
2013-07-29 23:06:50 +02:00
|
|
|
u8 sourceBtn;
|
|
|
|
u8 selectedBtns;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
static u8 i, j, k;
|
|
|
|
int curPage;
|
|
|
|
int numPages;
|
2013-07-23 15:14:51 +02:00
|
|
|
vector<string> magicNums;
|
2019-10-17 01:22:40 +02:00
|
|
|
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
char btn_selected[16];
|
|
|
|
char current_btn[16];
|
2018-10-01 23:01:43 +02:00
|
|
|
int curflow = 1;
|
|
|
|
bool sm_tier = false;
|
2019-01-09 13:28:59 +01:00
|
|
|
int channels_type;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
|
|
|
|
void CMenu::_sourceFlow()
|
|
|
|
{
|
2019-10-17 01:22:40 +02:00
|
|
|
string numbers;
|
|
|
|
string trs;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
const dir_discHdr *hdr = CoverFlow.getHdr();
|
2019-10-17 01:22:40 +02:00
|
|
|
|
|
|
|
// save source number for return
|
|
|
|
sm_numbers[sm_numbers.size() - 1] = to_string(hdr->settings[0]);
|
|
|
|
numbers = sm_numbers[0];
|
|
|
|
for(u8 i = 1; i < sm_numbers.size(); i++)
|
|
|
|
numbers.append(',' + sm_numbers[i]);
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "numbers", numbers);
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
|
|
|
|
memset(btn_selected, 0, 16);
|
|
|
|
strncpy(btn_selected, fmt("BUTTON_%i", hdr->settings[0]), 15);
|
|
|
|
source = m_source.getString(btn_selected, "source", "");
|
2016-12-01 01:05:39 +01:00
|
|
|
|
|
|
|
if(source == "dml")
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
m_current_view = COVERFLOW_GAMECUBE;
|
|
|
|
else if(source == "emunand")
|
|
|
|
{
|
2019-01-09 13:28:59 +01:00
|
|
|
m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_EMU);
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
m_current_view = COVERFLOW_CHANNEL;
|
|
|
|
}
|
|
|
|
else if(source == "realnand")
|
|
|
|
{
|
2019-01-09 13:28:59 +01:00
|
|
|
m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_REAL);
|
|
|
|
m_current_view = COVERFLOW_CHANNEL;
|
|
|
|
}
|
|
|
|
else if(source == "bothnand")
|
|
|
|
{
|
|
|
|
m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_BOTH);
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
m_current_view = COVERFLOW_CHANNEL;
|
|
|
|
}
|
|
|
|
else if(source == "homebrew")
|
2019-03-04 21:29:46 +01:00
|
|
|
m_current_view = COVERFLOW_HOMEBREW;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
else if(source == "allplugins")
|
|
|
|
{
|
|
|
|
m_current_view = COVERFLOW_PLUGIN;
|
|
|
|
for(k = 0; k < m_numPlugins; ++k)
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, k, 2); /* force enable */
|
|
|
|
}
|
|
|
|
else if(source == "plugin")
|
|
|
|
{
|
|
|
|
magicNums.clear();
|
|
|
|
magicNums = m_source.getStrings(btn_selected, "magic", ',');
|
2018-05-17 01:33:56 +02:00
|
|
|
if(magicNums.size() > 0)
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
{
|
|
|
|
m_current_view = COVERFLOW_PLUGIN;
|
|
|
|
for(k = 0; k < m_numPlugins; ++k)
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, k, 1); /* force disable */
|
|
|
|
for(vector<string>::iterator itr = magicNums.begin(); itr != magicNums.end(); itr++)
|
|
|
|
{
|
|
|
|
s8 exist = m_plugin.GetPluginPosition(strtoul(itr->c_str(), NULL, 16));
|
|
|
|
if(exist >= 0)
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, exist, 2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-09-26 19:48:54 +02:00
|
|
|
else if(source =="new_source")
|
|
|
|
{
|
2018-10-02 01:59:13 +02:00
|
|
|
string fn = m_source.getString(btn_selected, "magic", "");
|
|
|
|
if(fsop_FileExist(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str())))
|
2018-09-26 19:48:54 +02:00
|
|
|
{
|
2018-10-02 01:59:13 +02:00
|
|
|
if(fn == SOURCE_FILENAME)
|
2019-04-10 13:16:32 +02:00
|
|
|
{
|
2018-10-01 23:01:43 +02:00
|
|
|
sm_tier = false;
|
2019-04-10 13:16:32 +02:00
|
|
|
tiers.erase(tiers.begin() + 1, tiers.end());
|
2019-10-17 01:22:40 +02:00
|
|
|
sm_numbers.erase(sm_numbers.begin() + 1, sm_numbers.end());
|
2019-04-10 13:16:32 +02:00
|
|
|
}
|
2018-10-01 23:01:43 +02:00
|
|
|
else
|
2019-04-10 13:16:32 +02:00
|
|
|
{
|
2018-10-01 23:01:43 +02:00
|
|
|
sm_tier = true;
|
2019-04-10 13:16:32 +02:00
|
|
|
tiers.push_back(fn);
|
2019-10-17 01:22:40 +02:00
|
|
|
sm_numbers.push_back("0");
|
2019-04-10 13:16:32 +02:00
|
|
|
}
|
2019-10-17 01:22:40 +02:00
|
|
|
trs = tiers[0];
|
|
|
|
numbers = sm_numbers[0];
|
|
|
|
for(u8 i = 1; i < tiers.size(); i++)
|
|
|
|
{
|
|
|
|
trs.append(',' + tiers[i]);
|
|
|
|
numbers.append(',' + sm_numbers[i]);
|
|
|
|
}
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "tiers", trs);
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "numbers", numbers);
|
|
|
|
|
2018-09-26 19:48:54 +02:00
|
|
|
m_source.unload();
|
2018-10-02 01:59:13 +02:00
|
|
|
m_source.load(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str()));
|
2019-03-27 17:45:43 +01:00
|
|
|
SF_cacheCovers = true;
|
2019-04-10 13:16:32 +02:00
|
|
|
fn.replace(fn.find("."), 4, "_flow");
|
|
|
|
curflow = m_cfg.getInt(SOURCEFLOW_DOMAIN, fn, m_cfg.getInt(SOURCEFLOW_DOMAIN, "last_cf_mode", 1));
|
2018-09-26 19:48:54 +02:00
|
|
|
/* get max source button # */
|
|
|
|
m_max_source_btn = 0;
|
|
|
|
const char *srcDomain = m_source.firstDomain().c_str();
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
if(strlen(srcDomain) < 2)
|
|
|
|
break;
|
|
|
|
if(strrchr(srcDomain, '_') != NULL)
|
|
|
|
{
|
|
|
|
int srcBtnNumber = atoi(strrchr(srcDomain, '_') + 1);
|
|
|
|
if(srcBtnNumber > m_max_source_btn)
|
|
|
|
m_max_source_btn = srcBtnNumber;
|
|
|
|
}
|
|
|
|
srcDomain = m_source.nextDomain().c_str();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2016-12-01 01:05:39 +01:00
|
|
|
else //(source == "wii")
|
|
|
|
m_current_view = COVERFLOW_WII;
|
|
|
|
m_sourceflow = false;
|
|
|
|
m_cfg.setUInt("GENERAL", "sources", m_current_view);
|
|
|
|
m_source_cnt = 1;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
_setSrcOptions();
|
|
|
|
}
|
2013-07-23 15:14:51 +02:00
|
|
|
|
2018-10-01 23:01:43 +02:00
|
|
|
int CMenu::_getSrcFlow(void)
|
|
|
|
{
|
|
|
|
return curflow;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CMenu::_setSrcFlow(int version)
|
|
|
|
{
|
|
|
|
curflow = version;
|
2019-04-10 13:16:32 +02:00
|
|
|
string fn = tiers[tiers.size() - 1];
|
|
|
|
fn.replace(fn.find("."), 4, "_flow");
|
|
|
|
m_cfg.setInt(SOURCEFLOW_DOMAIN, fn, curflow);
|
2018-10-01 23:01:43 +02:00
|
|
|
if(!sm_tier)
|
2019-04-10 13:16:32 +02:00
|
|
|
m_cfg.setInt(SOURCEFLOW_DOMAIN, "last_cf_mode", curflow);
|
2018-10-01 23:01:43 +02:00
|
|
|
}
|
|
|
|
|
2019-05-19 22:33:21 +02:00
|
|
|
bool CMenu::_srcTierBack(bool home)
|
2018-10-08 20:21:56 +02:00
|
|
|
{
|
|
|
|
if(!sm_tier)
|
2019-05-19 22:33:21 +02:00
|
|
|
return false;
|
2018-10-08 20:21:56 +02:00
|
|
|
string fn;
|
|
|
|
if(home)
|
|
|
|
{
|
|
|
|
fn = tiers[0];
|
|
|
|
tiers.erase(tiers.begin() + 1, tiers.end());
|
2019-10-17 01:22:40 +02:00
|
|
|
sm_numbers.erase(sm_numbers.begin() + 1, sm_numbers.end());
|
2018-10-08 20:21:56 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
fn = tiers[tiers.size() - 2];
|
|
|
|
tiers.pop_back();
|
2019-10-17 01:22:40 +02:00
|
|
|
sm_numbers.pop_back();
|
2018-10-08 20:21:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if(fn == SOURCE_FILENAME)
|
|
|
|
sm_tier = false;
|
|
|
|
else
|
|
|
|
sm_tier = true;
|
|
|
|
m_source.unload();
|
|
|
|
m_source.load(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str()));
|
2019-04-10 13:16:32 +02:00
|
|
|
fn.replace(fn.find("."), 4, "_flow");
|
|
|
|
curflow = m_cfg.getInt(SOURCEFLOW_DOMAIN, fn, m_cfg.getInt(SOURCEFLOW_DOMAIN, "last_cf_mode", 1));
|
2018-10-08 20:21:56 +02:00
|
|
|
/* get max source button # */
|
|
|
|
m_max_source_btn = 0;
|
|
|
|
const char *srcDomain = m_source.firstDomain().c_str();
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
if(strlen(srcDomain) < 2)
|
|
|
|
break;
|
|
|
|
if(strrchr(srcDomain, '_') != NULL)
|
|
|
|
{
|
|
|
|
int srcBtnNumber = atoi(strrchr(srcDomain, '_') + 1);
|
|
|
|
if(srcBtnNumber > m_max_source_btn)
|
|
|
|
m_max_source_btn = srcBtnNumber;
|
|
|
|
}
|
|
|
|
srcDomain = m_source.nextDomain().c_str();
|
|
|
|
}
|
2019-10-17 01:22:40 +02:00
|
|
|
if(m_sourceflow)
|
|
|
|
_setSrcFlowBg();
|
|
|
|
else
|
|
|
|
{
|
|
|
|
curPage = stoi(sm_numbers[sm_numbers.size() - 1]) / 12 + 1;
|
|
|
|
numPages = (m_max_source_btn / 12) + 1;
|
|
|
|
}
|
2019-05-19 22:33:21 +02:00
|
|
|
return true;
|
2018-10-13 00:16:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void CMenu::_setSrcFlowBg(void)
|
|
|
|
{
|
2019-03-18 19:39:28 +01:00
|
|
|
TexHandle.Cleanup(sfbgimg);
|
2018-10-13 00:16:52 +02:00
|
|
|
string fn = m_source.getString("general", "background", "");
|
|
|
|
if(fn.length() > 0)
|
|
|
|
{
|
2019-07-24 19:35:51 +02:00
|
|
|
if(TexHandle.fromImageFile(sfbgimg, fmt("%s/backgrounds/%s/%s", m_sourceDir.c_str(), m_themeName.c_str(), fn.c_str())) != TE_OK)
|
2019-02-04 19:08:18 +01:00
|
|
|
{
|
|
|
|
if(TexHandle.fromImageFile(sfbgimg, fmt("%s/backgrounds/%s", m_sourceDir.c_str(), fn.c_str())) != TE_OK)
|
|
|
|
{
|
|
|
|
_setBg(m_mainBg, m_mainBgLQ);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_setBg(sfbgimg, sfbgimg, true);
|
2018-10-13 00:16:52 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
_setBg(m_mainBg, m_mainBgLQ);
|
2018-10-08 20:21:56 +02:00
|
|
|
}
|
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
void CMenu::_hideSource(bool instant)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.hide(m_sourceLblTitle, instant);
|
|
|
|
m_btnMgr.hide(m_sourceLblPage, instant);
|
|
|
|
m_btnMgr.hide(m_sourceBtnPageM, instant);
|
|
|
|
m_btnMgr.hide(m_sourceBtnPageP, instant);
|
2016-06-20 23:03:40 +02:00
|
|
|
m_btnMgr.hide(m_sourceBtnBack, instant);
|
|
|
|
m_btnMgr.hide(m_sourceBtnClear, instant);
|
2012-06-22 15:09:31 +02:00
|
|
|
|
2013-07-29 23:06:50 +02:00
|
|
|
for(i = 0; i < ARRAY_SIZE(m_sourceLblUser); ++i)
|
2012-09-13 16:54:17 +02:00
|
|
|
if(m_sourceLblUser[i] != -1)
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.hide(m_sourceLblUser[i], instant);
|
2012-05-11 16:17:39 +02:00
|
|
|
|
2013-07-29 23:06:50 +02:00
|
|
|
for(i = 0; i < 12; ++i)
|
2012-11-30 21:54:02 +01:00
|
|
|
{
|
2012-08-21 16:30:42 +02:00
|
|
|
m_btnMgr.hide(m_sourceBtnSource[i], instant);
|
2012-11-30 21:54:02 +01:00
|
|
|
m_btnMgr.freeBtnTexture(m_sourceBtnSource[i]);
|
|
|
|
}
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
void CMenu::_showSource(void)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2012-05-25 16:21:43 +02:00
|
|
|
_setBg(m_sourceBg, m_sourceBg);
|
2013-07-29 23:06:50 +02:00
|
|
|
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
for(i = 0; i < ARRAY_SIZE(m_sourceLblUser); ++i)
|
2012-09-13 16:54:17 +02:00
|
|
|
if(m_sourceLblUser[i] != -1)
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.show(m_sourceLblUser[i]);
|
2012-05-11 16:17:39 +02:00
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.show(m_sourceLblTitle);
|
2013-01-15 14:54:33 +01:00
|
|
|
m_btnMgr.show(m_sourceBtnBack);
|
2016-06-20 23:03:40 +02:00
|
|
|
if(m_multisource)
|
|
|
|
m_btnMgr.show(m_sourceBtnClear);
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
void CMenu::_updateSourceBtns(void)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
if(numPages > 1)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
m_btnMgr.setText(m_sourceLblPage, wfmt(L"%i / %i", curPage, numPages));
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.show(m_sourceLblPage);
|
|
|
|
m_btnMgr.show(m_sourceBtnPageM);
|
|
|
|
m_btnMgr.show(m_sourceBtnPageP);
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
2018-09-26 19:48:54 +02:00
|
|
|
else
|
|
|
|
{
|
|
|
|
m_btnMgr.hide(m_sourceLblPage);
|
|
|
|
m_btnMgr.hide(m_sourceBtnPageM);
|
|
|
|
m_btnMgr.hide(m_sourceBtnPageP);
|
|
|
|
}
|
2012-05-18 18:02:36 +02:00
|
|
|
|
2013-07-29 23:06:50 +02:00
|
|
|
sourceBtn = 0;
|
|
|
|
selectedBtns = 0;
|
2018-09-26 19:48:54 +02:00
|
|
|
j = (curPage - 1) * 12;
|
|
|
|
for(i = j; i < (j + 12); ++i)
|
2012-08-06 15:48:57 +02:00
|
|
|
{
|
2018-09-26 19:48:54 +02:00
|
|
|
if(i > m_max_source_btn)
|
|
|
|
m_btnMgr.hide(m_sourceBtnSource[i -j]);
|
|
|
|
else
|
2013-01-15 14:54:33 +01:00
|
|
|
{
|
2018-09-26 19:48:54 +02:00
|
|
|
memset(current_btn, 0, 16);
|
|
|
|
strncpy(current_btn, fmt("BUTTON_%i", i), 15);
|
|
|
|
string btnSource = m_source.getString(current_btn, "source", "");
|
|
|
|
bool src_selected = false;
|
|
|
|
if(btnSource == "")
|
|
|
|
continue;
|
|
|
|
if(m_multisource)
|
2013-07-29 23:06:50 +02:00
|
|
|
{
|
2018-09-26 19:48:54 +02:00
|
|
|
if(btnSource == "allplugins")
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
{
|
2018-09-26 19:48:54 +02:00
|
|
|
const vector<bool> &EnabledPlugins = m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
|
|
|
|
if(EnabledPlugins.size() == 0)//all plugins enabled
|
|
|
|
{
|
|
|
|
if(m_current_view & COVERFLOW_PLUGIN)
|
|
|
|
{
|
|
|
|
sourceBtn = i;
|
|
|
|
selectedBtns++;
|
|
|
|
src_selected = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(btnSource == "plugin")
|
|
|
|
{
|
|
|
|
magicNums.clear();
|
|
|
|
magicNums = m_source.getStrings(current_btn, "magic", ',');
|
|
|
|
u32 magic = strtoul(magicNums.at(0).c_str(), NULL, 16);
|
|
|
|
if(m_plugin.GetEnableStatus(m_cfg, magic))
|
|
|
|
{
|
|
|
|
if(m_current_view & COVERFLOW_PLUGIN)
|
|
|
|
{
|
|
|
|
sourceBtn = i;
|
|
|
|
selectedBtns++;
|
|
|
|
src_selected = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-01-09 13:28:59 +01:00
|
|
|
else if(btnSource == "realnand" && (m_current_view & COVERFLOW_CHANNEL) && (channels_type & CHANNELS_REAL))
|
2018-09-26 19:48:54 +02:00
|
|
|
{
|
2019-01-09 13:28:59 +01:00
|
|
|
sourceBtn = i;
|
|
|
|
selectedBtns++;
|
|
|
|
src_selected = true;
|
|
|
|
}
|
|
|
|
else if(btnSource == "emunand" && (m_current_view & COVERFLOW_CHANNEL) && (channels_type & CHANNELS_EMU))
|
|
|
|
{
|
|
|
|
sourceBtn = i;
|
|
|
|
selectedBtns++;
|
|
|
|
src_selected = true;
|
|
|
|
}
|
|
|
|
else if(btnSource == "bothnand" && (m_current_view & COVERFLOW_CHANNEL) && (channels_type & CHANNELS_BOTH))
|
|
|
|
{
|
|
|
|
sourceBtn = i;
|
|
|
|
selectedBtns++;
|
|
|
|
src_selected = true;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
}
|
2018-09-26 19:48:54 +02:00
|
|
|
else if(btnSource == "dml" || btnSource == "homebrew" || btnSource == "wii")
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
{
|
2018-09-26 19:48:54 +02:00
|
|
|
u8 flow = (btnSource == "dml" ? COVERFLOW_GAMECUBE : (btnSource == "homebrew" ? COVERFLOW_HOMEBREW : COVERFLOW_WII));
|
|
|
|
if(m_current_view & flow)
|
-updating wiiflow lite to beta 4.3.0
-fixed using categories to hide GC disc 2's. Apparently this has never really worked right for some time or ever.
-fixed deleting the cached cover texture file for plugin games. Delete cover for plugins only deletes the cached texture file (.wfc)
-fixed favorites and adultonly (parental lock) for plugin games. Apparently I may have broke this a few revisions back.
-favorites and adultonly for plugin games now have their own domains in gamecfg1- [FAVORITES_PLUGINS] and [ADULTONLY_PLUGINS]. just makes it more organized.
-only wii, GC, channels are added to [PLAYCOUNT] and [LAST_PLAYED] in gamecfg1.
-now loading gamecfg1 at startup and leaving it loaded till exit. no more loading it and unloading all the time.
-fixed scrolling for game_info synopsis, credits, and help text.
-made source menu buttons wider for wiiflow default. old 80x80, now 100x80. looks better.
-display music info now defaults to off
-screensaver_disabled now defaults to yes
-show GC view button is now on by default no matter what. the only way it is disabled is if you edit wiiflow.ini manually. this is how all the view buttons work.
-removed hiding homebrew button but if wiiflow locked it won't work or in sourceflow it won't show.
-dump_list is now under [GENERAL] instead of each view. Also only works for Wii, GC, and channels.
-sorting only works for Wii, GC, and Channels now. disabled for sourceflow, plugins, homebrew, and combined view.
-now if no games are found a message is shown with the current path so you can see where wiiflow is looking. (except for plugins)
-removed auto create emuNAND for emuNAND view if gamelist is empty. just go to settings>NAND settings if you want to extract or disable it.
-now when no games are found all buttons at bottom are still accessible allowing you to change the view or go to settings and change current partition or path and even extract your NAND to create a EmuNAND. Or go to Home Menu and Install a Wii or GC game.
-removed auto extract NAND to emuNAND when launching a Wii game with EmuNAND save. Now a message is diplayed saying 'emuNAND for saves not found - using real NAND'.
-made the speed at which cover titles fade in/out almost instantly.
-removed update button from Home Menu. online update code is still there but not used and probably won't be used any more as there just isn't a need for it now.
-removed ftp button from Home Menu and all code for the FTP server. I just use WiiXplorer's FTP server. it seems to work better for me.
-disabled keep USB Alive thread for now. i think there's a possibilty it might be the cause of my SD/USB files getting corrupted.
-removed Btn B and - combo to switch partitions. didn't seem useful anymore.
-redid nand emulation settings menu. looks like this now:
pg1
Select EmuNAND
EmuNAND Enulation
Select SaveNAND
SaveNAND Emulation
pg2
Extract Saves All
Missing
Extract NAND
Select Saves Partition
-no longer blocking Select Plugin menu and View icons when using source menu combined view
-now Select Plugins Menu is like switching to plugin view but you get to choose the plugins first
-now [PLUGIN] partition= is the default partition for all plugins. to change individual plugins add 'romPartition=x' to the plugin ini. x is the partition number 0 thru 8 with SD being 0. this is how my usbloadergx plugin mod works.
2016-10-05 01:44:13 +02:00
|
|
|
{
|
|
|
|
sourceBtn = i;
|
|
|
|
selectedBtns++;
|
2018-05-08 15:49:43 +02:00
|
|
|
src_selected = true;
|
-updating wiiflow lite to beta 4.3.0
-fixed using categories to hide GC disc 2's. Apparently this has never really worked right for some time or ever.
-fixed deleting the cached cover texture file for plugin games. Delete cover for plugins only deletes the cached texture file (.wfc)
-fixed favorites and adultonly (parental lock) for plugin games. Apparently I may have broke this a few revisions back.
-favorites and adultonly for plugin games now have their own domains in gamecfg1- [FAVORITES_PLUGINS] and [ADULTONLY_PLUGINS]. just makes it more organized.
-only wii, GC, channels are added to [PLAYCOUNT] and [LAST_PLAYED] in gamecfg1.
-now loading gamecfg1 at startup and leaving it loaded till exit. no more loading it and unloading all the time.
-fixed scrolling for game_info synopsis, credits, and help text.
-made source menu buttons wider for wiiflow default. old 80x80, now 100x80. looks better.
-display music info now defaults to off
-screensaver_disabled now defaults to yes
-show GC view button is now on by default no matter what. the only way it is disabled is if you edit wiiflow.ini manually. this is how all the view buttons work.
-removed hiding homebrew button but if wiiflow locked it won't work or in sourceflow it won't show.
-dump_list is now under [GENERAL] instead of each view. Also only works for Wii, GC, and channels.
-sorting only works for Wii, GC, and Channels now. disabled for sourceflow, plugins, homebrew, and combined view.
-now if no games are found a message is shown with the current path so you can see where wiiflow is looking. (except for plugins)
-removed auto create emuNAND for emuNAND view if gamelist is empty. just go to settings>NAND settings if you want to extract or disable it.
-now when no games are found all buttons at bottom are still accessible allowing you to change the view or go to settings and change current partition or path and even extract your NAND to create a EmuNAND. Or go to Home Menu and Install a Wii or GC game.
-removed auto extract NAND to emuNAND when launching a Wii game with EmuNAND save. Now a message is diplayed saying 'emuNAND for saves not found - using real NAND'.
-made the speed at which cover titles fade in/out almost instantly.
-removed update button from Home Menu. online update code is still there but not used and probably won't be used any more as there just isn't a need for it now.
-removed ftp button from Home Menu and all code for the FTP server. I just use WiiXplorer's FTP server. it seems to work better for me.
-disabled keep USB Alive thread for now. i think there's a possibilty it might be the cause of my SD/USB files getting corrupted.
-removed Btn B and - combo to switch partitions. didn't seem useful anymore.
-redid nand emulation settings menu. looks like this now:
pg1
Select EmuNAND
EmuNAND Enulation
Select SaveNAND
SaveNAND Emulation
pg2
Extract Saves All
Missing
Extract NAND
Select Saves Partition
-no longer blocking Select Plugin menu and View icons when using source menu combined view
-now Select Plugins Menu is like switching to plugin view but you get to choose the plugins first
-now [PLUGIN] partition= is the default partition for all plugins. to change individual plugins add 'romPartition=x' to the plugin ini. x is the partition number 0 thru 8 with SD being 0. this is how my usbloadergx plugin mod works.
2016-10-05 01:44:13 +02:00
|
|
|
}
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
}
|
2013-07-29 23:06:50 +02:00
|
|
|
}
|
2018-09-26 19:48:54 +02:00
|
|
|
char btn_image[255];
|
|
|
|
if(src_selected)
|
|
|
|
snprintf(btn_image, sizeof(btn_image), "%s", m_source.getString(current_btn,"image_s", "").c_str());
|
|
|
|
else
|
|
|
|
snprintf(btn_image, sizeof(btn_image), "%s", m_source.getString(current_btn,"image", "").c_str());
|
2018-10-08 13:29:08 +02:00
|
|
|
|
|
|
|
//char btn_image_s[255];
|
|
|
|
//snprintf(btn_image_s, sizeof(btn_image_s), "%s", m_source.getString(current_btn,"image_s", "").c_str());
|
|
|
|
|
2018-09-26 17:28:01 +02:00
|
|
|
TexData texConsoleImg;
|
|
|
|
TexData texConsoleImgs;
|
2019-07-24 19:35:51 +02:00
|
|
|
if(TexHandle.fromImageFile(texConsoleImg, fmt("%s/%s/%s", m_sourceDir.c_str(), m_themeName.c_str(), btn_image)) != TE_OK)
|
2018-09-26 17:28:01 +02:00
|
|
|
{
|
|
|
|
if(TexHandle.fromImageFile(texConsoleImg, fmt("%s/%s", m_sourceDir.c_str(), btn_image)) != TE_OK)
|
|
|
|
TexHandle.fromImageFile(texConsoleImg, fmt("%s/favoriteson.png", m_imgsDir.c_str()));
|
|
|
|
}
|
2019-07-24 19:35:51 +02:00
|
|
|
if(TexHandle.fromImageFile(texConsoleImgs, fmt("%s/%s/%s", m_sourceDir.c_str(), m_themeName.c_str(), btn_image)) != TE_OK)
|
2018-09-26 17:28:01 +02:00
|
|
|
{
|
|
|
|
if(TexHandle.fromImageFile(texConsoleImgs, fmt("%s/%s", m_sourceDir.c_str(), btn_image)) != TE_OK)
|
|
|
|
TexHandle.fromImageFile(texConsoleImgs, fmt("%s/favoritesons.png", m_imgsDir.c_str()));
|
|
|
|
}
|
|
|
|
m_btnMgr.setBtnTexture(m_sourceBtnSource[i - j], texConsoleImg, texConsoleImgs);
|
|
|
|
m_btnMgr.show(m_sourceBtnSource[i - j]);
|
2012-08-06 15:48:57 +02:00
|
|
|
}
|
|
|
|
}
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
|
|
|
|
2012-06-21 14:25:47 +02:00
|
|
|
bool CMenu::_Source()
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2016-06-20 23:03:40 +02:00
|
|
|
bool newSource = false;
|
2013-07-29 23:06:50 +02:00
|
|
|
bool updateSource = false;
|
2013-09-21 18:33:16 +02:00
|
|
|
exitSource = false;
|
2019-10-17 01:22:40 +02:00
|
|
|
curPage = stoi(sm_numbers[sm_numbers.size() - 1]) / 12 + 1;
|
2018-09-26 17:28:01 +02:00
|
|
|
numPages = (m_max_source_btn / 12) + 1;
|
2019-01-09 13:28:59 +01:00
|
|
|
channels_type = m_cfg.getInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_REAL);
|
2013-07-29 23:06:50 +02:00
|
|
|
|
|
|
|
SetupInput();
|
2012-05-25 16:21:43 +02:00
|
|
|
_showSource();
|
2016-04-26 02:43:09 +02:00
|
|
|
_updateSourceBtns();
|
2012-09-09 20:35:15 +02:00
|
|
|
|
|
|
|
while(!m_exit)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2013-07-29 23:06:50 +02:00
|
|
|
updateSource = false;
|
2012-05-11 16:17:39 +02:00
|
|
|
_mainLoopCommon();
|
2019-10-17 01:22:40 +02:00
|
|
|
if(BTN_HOME_PRESSED || BTN_B_PRESSED)
|
2016-04-26 02:43:09 +02:00
|
|
|
{
|
2019-10-17 01:22:40 +02:00
|
|
|
if(!_srcTierBack(BTN_HOME_PRESSED))
|
|
|
|
exitSource = true;
|
|
|
|
else
|
|
|
|
_updateSourceBtns();
|
2016-04-26 02:43:09 +02:00
|
|
|
}
|
2019-10-17 01:22:40 +02:00
|
|
|
if((BTN_A_PRESSED && m_btnMgr.selected(m_sourceBtnBack)) || exitSource)
|
2012-05-25 16:21:43 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
if(!m_multisource) break;
|
2013-07-29 23:06:50 +02:00
|
|
|
if(selectedBtns == 0)
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
{
|
|
|
|
m_current_view = COVERFLOW_WII;
|
2016-12-01 01:05:39 +01:00
|
|
|
m_source_cnt = 1;
|
|
|
|
m_cfg.setUInt("GENERAL", "sources", m_current_view);
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
if(selectedBtns == 1)
|
|
|
|
{
|
|
|
|
memset(btn_selected, 0, 16);
|
|
|
|
strncpy(btn_selected, fmt("BUTTON_%i", sourceBtn), 15);
|
2018-05-17 01:33:56 +02:00
|
|
|
source = m_source.getString(btn_selected, "source", "");
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
_setSrcOptions();
|
2013-09-12 15:04:50 +02:00
|
|
|
}
|
2016-11-07 16:06:00 +01:00
|
|
|
|
2016-12-01 01:05:39 +01:00
|
|
|
m_cfg.setUInt("GENERAL", "sources", m_current_view);
|
|
|
|
m_source_cnt = 0;
|
2019-03-04 21:29:46 +01:00
|
|
|
for(i = 1; i < 32; i <<= 1)
|
2016-12-01 01:05:39 +01:00
|
|
|
if(m_current_view & i)
|
|
|
|
m_source_cnt++;
|
2012-05-11 16:17:39 +02:00
|
|
|
break;
|
2012-05-25 16:21:43 +02:00
|
|
|
}
|
2012-05-11 16:17:39 +02:00
|
|
|
else if(BTN_UP_PRESSED)
|
|
|
|
m_btnMgr.up();
|
|
|
|
else if(BTN_DOWN_PRESSED)
|
|
|
|
m_btnMgr.down();
|
2018-10-08 20:21:56 +02:00
|
|
|
else if((BTN_LEFT_PRESSED && numPages > 1) || (BTN_A_PRESSED && m_btnMgr.selected(m_sourceBtnPageM)))
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
curPage--;
|
|
|
|
if(curPage < 1)
|
|
|
|
curPage = numPages;
|
2013-09-11 20:11:23 +02:00
|
|
|
if(!BTN_A_PRESSED)
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.click(m_sourceBtnPageM);
|
|
|
|
_updateSourceBtns();
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
2018-10-08 20:21:56 +02:00
|
|
|
else if((BTN_RIGHT_PRESSED && numPages > 1) || (BTN_A_PRESSED && m_btnMgr.selected(m_sourceBtnPageP)))
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
curPage++;
|
|
|
|
if(curPage > numPages)
|
|
|
|
curPage = 1;
|
|
|
|
if(!BTN_A_PRESSED)
|
2012-05-25 16:21:43 +02:00
|
|
|
m_btnMgr.click(m_sourceBtnPageP);
|
|
|
|
_updateSourceBtns();
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
2018-10-08 20:21:56 +02:00
|
|
|
else if((BTN_MINUS_PRESSED || BTN_PLUS_PRESSED) && sm_tier)
|
|
|
|
{
|
|
|
|
_srcTierBack(BTN_PLUS_PRESSED);
|
|
|
|
updateSource = true;
|
|
|
|
curPage = 1;
|
|
|
|
numPages = (m_max_source_btn / 12) + 1;
|
|
|
|
}
|
|
|
|
|
2016-06-20 23:03:40 +02:00
|
|
|
else if(BTN_A_PRESSED && m_btnMgr.selected(m_sourceBtnClear))
|
|
|
|
{
|
2016-12-01 01:05:39 +01:00
|
|
|
m_current_view = COVERFLOW_NONE;
|
|
|
|
for(j = 0; m_plugin.PluginExist(j); j++)
|
2016-06-20 23:03:40 +02:00
|
|
|
m_plugin.SetEnablePlugin(m_cfg, j, 1);
|
|
|
|
updateSource = true;
|
|
|
|
}
|
|
|
|
else if(BTN_A_PRESSED)
|
2013-07-29 23:06:50 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
j = (curPage - 1) * 12;
|
2013-07-29 23:06:50 +02:00
|
|
|
for(i = 0; i < 12; ++i)
|
2012-05-18 18:02:36 +02:00
|
|
|
{
|
2012-06-21 14:25:47 +02:00
|
|
|
if(m_btnMgr.selected(m_sourceBtnSource[i]))
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
memset(btn_selected, 0, 16);
|
2018-09-26 17:28:01 +02:00
|
|
|
strncpy(btn_selected, fmt("BUTTON_%i", i + j), 15);
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
source = m_source.getString(btn_selected, "source", "");
|
2016-06-20 23:03:40 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2019-10-17 01:22:40 +02:00
|
|
|
if(!m_multisource && i < 12)
|
2016-06-20 23:03:40 +02:00
|
|
|
{
|
2019-10-17 01:22:40 +02:00
|
|
|
// save source number for return
|
|
|
|
sm_numbers.push_back(to_string(i + j));
|
2016-06-20 23:03:40 +02:00
|
|
|
exitSource = true;
|
|
|
|
m_catStartPage = 1;
|
|
|
|
if(source == "dml")
|
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
m_current_view = COVERFLOW_GAMECUBE;
|
|
|
|
_setSrcOptions();
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
2019-01-09 13:28:59 +01:00
|
|
|
else if(source == "emunand" || source == "realnand" || source == "bothnand")
|
2016-06-20 23:03:40 +02:00
|
|
|
{
|
2019-01-09 13:28:59 +01:00
|
|
|
if(source == "emunand")
|
|
|
|
channels_type = CHANNELS_EMU;
|
|
|
|
else if(source == "realnand")
|
|
|
|
channels_type = CHANNELS_REAL;
|
|
|
|
else if(source == "bothnand")
|
|
|
|
channels_type = CHANNELS_BOTH;
|
2016-11-07 16:06:00 +01:00
|
|
|
m_current_view = COVERFLOW_CHANNEL;
|
|
|
|
_setSrcOptions();
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
|
|
|
else if(source == "homebrew")
|
|
|
|
{
|
2019-03-04 21:29:46 +01:00
|
|
|
m_current_view = COVERFLOW_HOMEBREW;
|
|
|
|
_setSrcOptions();
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
|
|
|
else if(source == "allplugins")
|
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
m_current_view = COVERFLOW_PLUGIN;
|
|
|
|
for(k = 0; k < m_numPlugins; ++k)
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, k, 2); /* force enable */
|
|
|
|
_setSrcOptions();
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
|
|
|
else if(source == "plugin")
|
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
m_current_view = COVERFLOW_PLUGIN;
|
|
|
|
_setSrcOptions();
|
|
|
|
for(k = 0; k < m_numPlugins; ++k)
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, k, 1); /* force disable */
|
|
|
|
magicNums.clear();
|
|
|
|
magicNums = m_source.getStrings(btn_selected, "magic", ',');
|
|
|
|
if(magicNums.size() > 0)
|
2016-06-20 23:03:40 +02:00
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
for(vector<string>::iterator itr = magicNums.begin(); itr != magicNums.end(); itr++)
|
2013-09-04 22:58:22 +02:00
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
s8 exist = m_plugin.GetPluginPosition(strtoul(itr->c_str(), NULL, 16));// make sure magic# is valid
|
|
|
|
if(exist >= 0)
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, exist, 2);
|
2013-09-04 22:58:22 +02:00
|
|
|
}
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
2016-11-07 16:06:00 +01:00
|
|
|
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
|
|
|
|
if(enabledPluginsCount == 0) // no magic #'s or invalid ones so default to first plugin in list
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, 0, 2);
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
2018-09-26 19:48:54 +02:00
|
|
|
else if(source =="new_source")
|
|
|
|
{
|
2018-10-02 01:59:13 +02:00
|
|
|
string fn = m_source.getString(btn_selected, "magic", "");
|
|
|
|
if(fsop_FileExist(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str())))
|
2018-09-26 19:48:54 +02:00
|
|
|
{
|
2018-10-02 01:59:13 +02:00
|
|
|
if(fn == SOURCE_FILENAME)
|
2019-10-17 01:22:40 +02:00
|
|
|
{
|
2018-10-01 23:01:43 +02:00
|
|
|
sm_tier = false;
|
2019-10-17 01:22:40 +02:00
|
|
|
tiers.erase(tiers.begin() + 1, tiers.end());
|
|
|
|
sm_numbers.erase(sm_numbers.begin() + 1, sm_numbers.end());
|
|
|
|
}
|
2018-10-01 23:01:43 +02:00
|
|
|
else
|
2019-10-17 01:22:40 +02:00
|
|
|
{
|
2018-10-01 23:01:43 +02:00
|
|
|
sm_tier = true;
|
2019-10-17 01:22:40 +02:00
|
|
|
tiers.push_back(fn);
|
|
|
|
sm_numbers.push_back("0");
|
|
|
|
}
|
|
|
|
string trs = tiers[0];
|
|
|
|
string numbers = sm_numbers[0];
|
|
|
|
for(u8 i = 1; i < tiers.size(); i++)
|
|
|
|
{
|
|
|
|
trs.append(',' + tiers[i]);
|
|
|
|
numbers.append(',' + sm_numbers[i]);
|
|
|
|
}
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "tiers", trs);
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "numbers", numbers);
|
|
|
|
|
2018-09-26 19:48:54 +02:00
|
|
|
m_source.unload();
|
2018-10-02 01:59:13 +02:00
|
|
|
m_source.load(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str()));
|
2019-04-10 13:16:32 +02:00
|
|
|
fn.replace(fn.find("."), 4, "_flow");
|
|
|
|
curflow = m_cfg.getInt(SOURCEFLOW_DOMAIN, fn, m_cfg.getInt(SOURCEFLOW_DOMAIN, "last_cf_mode", 1));
|
2018-09-26 19:48:54 +02:00
|
|
|
exitSource = false;
|
|
|
|
updateSource = true;
|
|
|
|
/* get max source button # */
|
|
|
|
m_max_source_btn = 0;
|
|
|
|
const char *srcDomain = m_source.firstDomain().c_str();
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
if(strlen(srcDomain) < 2)
|
|
|
|
break;
|
|
|
|
if(strrchr(srcDomain, '_') != NULL)
|
|
|
|
{
|
|
|
|
int srcBtnNumber = atoi(strrchr(srcDomain, '_') + 1);
|
|
|
|
if(srcBtnNumber > m_max_source_btn)
|
|
|
|
m_max_source_btn = srcBtnNumber;
|
|
|
|
}
|
|
|
|
srcDomain = m_source.nextDomain().c_str();
|
|
|
|
}
|
2019-10-17 01:22:40 +02:00
|
|
|
curPage = stoi(sm_numbers[sm_numbers.size() - 1]) / 12 + 1;
|
2018-09-26 19:48:54 +02:00
|
|
|
numPages = (m_max_source_btn / 12) + 1;
|
|
|
|
}
|
|
|
|
}
|
2016-06-20 23:03:40 +02:00
|
|
|
else //if(source == "wii") or source is invalid or empty default to wii
|
|
|
|
{
|
|
|
|
m_current_view = COVERFLOW_WII;
|
|
|
|
_setSrcOptions();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(m_multisource && i < 12) /* m_multisource */
|
|
|
|
{
|
|
|
|
updateSource = true;
|
|
|
|
if(source == "wii")
|
2016-12-01 01:05:39 +01:00
|
|
|
m_current_view ^= COVERFLOW_WII;// toggle on/off
|
2016-06-20 23:03:40 +02:00
|
|
|
else if(source == "dml")
|
2016-12-01 01:05:39 +01:00
|
|
|
m_current_view ^= COVERFLOW_GAMECUBE;
|
2019-01-09 13:28:59 +01:00
|
|
|
else if(source == "emunand")
|
|
|
|
{
|
|
|
|
if(m_current_view & COVERFLOW_CHANNEL)// if cf channel on then swith only emu type
|
|
|
|
channels_type ^= CHANNELS_EMU;
|
|
|
|
else
|
|
|
|
channels_type = CHANNELS_EMU;// if cf channel off then set to only emu type
|
|
|
|
if(channels_type == 0)// if cf channel on and type is set to nothing
|
|
|
|
{
|
|
|
|
channels_type = CHANNELS_REAL;// make sure channels type is set to default REAL
|
|
|
|
m_current_view &= ~COVERFLOW_CHANNEL;// turn off coverflow channels
|
|
|
|
}
|
|
|
|
else
|
|
|
|
m_current_view |= COVERFLOW_CHANNEL;// turn on coverflow channels
|
|
|
|
}
|
|
|
|
else if(source == "realnand")
|
|
|
|
{
|
|
|
|
if(m_current_view & COVERFLOW_CHANNEL)
|
|
|
|
channels_type ^= CHANNELS_REAL;
|
|
|
|
else
|
|
|
|
channels_type = CHANNELS_REAL;
|
|
|
|
if(channels_type == 0)
|
|
|
|
{
|
|
|
|
channels_type = CHANNELS_REAL;
|
|
|
|
m_current_view &= ~COVERFLOW_CHANNEL;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
m_current_view |= COVERFLOW_CHANNEL;
|
|
|
|
}
|
|
|
|
else if(source == "bothnand")
|
|
|
|
{
|
|
|
|
if(m_current_view & COVERFLOW_CHANNEL)
|
|
|
|
channels_type ^= CHANNELS_BOTH;
|
|
|
|
else
|
|
|
|
channels_type = CHANNELS_BOTH;
|
|
|
|
if(channels_type == 0)
|
|
|
|
{
|
|
|
|
channels_type = CHANNELS_REAL;
|
|
|
|
m_current_view &= ~COVERFLOW_CHANNEL;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
m_current_view |= COVERFLOW_CHANNEL;
|
|
|
|
}
|
2016-06-20 23:03:40 +02:00
|
|
|
else if(source == "homebrew")
|
2019-03-04 21:29:46 +01:00
|
|
|
m_current_view ^= COVERFLOW_HOMEBREW;
|
2016-06-20 23:03:40 +02:00
|
|
|
else if(source == "allplugins")
|
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
|
|
|
|
for(j = 0; m_plugin.PluginExist(j); ++j) /* opposite */
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, j, (enabledPluginsCount == 0) ? 2 : 1);
|
2016-12-01 01:05:39 +01:00
|
|
|
m_current_view = enabledPluginsCount == 0 ? (m_current_view | COVERFLOW_PLUGIN) : (m_current_view & ~COVERFLOW_PLUGIN);
|
2016-06-20 23:03:40 +02:00
|
|
|
}
|
|
|
|
else if(source == "plugin")
|
|
|
|
{
|
2016-12-01 01:05:39 +01:00
|
|
|
if(!(m_current_view & COVERFLOW_PLUGIN))
|
2016-06-20 23:03:40 +02:00
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
for(j = 0; m_plugin.PluginExist(j); ++j) /* clear all */
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, j, 1);
|
|
|
|
}
|
|
|
|
magicNums.clear();
|
|
|
|
magicNums = m_source.getStrings(btn_selected, "magic", ',');
|
|
|
|
if(!magicNums.empty())
|
|
|
|
{
|
|
|
|
for(vector<string>::iterator itr = magicNums.begin(); itr != magicNums.end(); itr++)
|
2013-09-04 22:58:22 +02:00
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
s8 exist = m_plugin.GetPluginPosition(strtoul(itr->c_str(), NULL, 16));
|
|
|
|
if(exist >= 0)
|
2013-09-04 22:58:22 +02:00
|
|
|
{
|
2016-11-07 16:06:00 +01:00
|
|
|
bool enabled = m_plugin.GetEnableStatus(m_cfg, strtoul(itr->c_str(), NULL, 16));
|
|
|
|
m_plugin.SetEnablePlugin(m_cfg, exist, enabled ? 1 : 2);
|
2013-01-15 14:54:33 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-11-07 16:06:00 +01:00
|
|
|
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
|
2016-12-01 01:05:39 +01:00
|
|
|
m_current_view = enabledPluginsCount > 0 ? (m_current_view | COVERFLOW_PLUGIN) : (m_current_view & ~COVERFLOW_PLUGIN);
|
2013-01-15 14:54:33 +01:00
|
|
|
}
|
2018-09-26 19:48:54 +02:00
|
|
|
else if(source =="new_source")
|
|
|
|
{
|
2018-10-02 01:59:13 +02:00
|
|
|
string fn = m_source.getString(btn_selected, "magic", "");
|
|
|
|
if(fsop_FileExist(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str())))
|
2018-09-26 19:48:54 +02:00
|
|
|
{
|
2018-10-02 01:59:13 +02:00
|
|
|
if(fn == SOURCE_FILENAME)
|
2018-10-01 23:01:43 +02:00
|
|
|
sm_tier = false;
|
|
|
|
else
|
|
|
|
sm_tier = true;
|
2018-10-08 20:21:56 +02:00
|
|
|
tiers.push_back(fn);
|
2018-09-26 19:48:54 +02:00
|
|
|
m_source.unload();
|
2018-10-02 01:59:13 +02:00
|
|
|
m_source.load(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str()));
|
2019-04-10 13:16:32 +02:00
|
|
|
fn.replace(fn.find("."), 4, "_flow");
|
2019-04-10 13:29:25 +02:00
|
|
|
curflow = m_cfg.getInt(SOURCEFLOW_DOMAIN, fn, m_cfg.getInt(SOURCEFLOW_DOMAIN, "last_cf_mode", 1));
|
2018-09-26 19:48:54 +02:00
|
|
|
exitSource = false;
|
|
|
|
updateSource = true;
|
|
|
|
curPage = 1;
|
|
|
|
/* get max source button # */
|
|
|
|
m_max_source_btn = 0;
|
|
|
|
const char *srcDomain = m_source.firstDomain().c_str();
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
if(strlen(srcDomain) < 2)
|
|
|
|
break;
|
|
|
|
if(strrchr(srcDomain, '_') != NULL)
|
|
|
|
{
|
|
|
|
int srcBtnNumber = atoi(strrchr(srcDomain, '_') + 1);
|
|
|
|
if(srcBtnNumber > m_max_source_btn)
|
|
|
|
m_max_source_btn = srcBtnNumber;
|
|
|
|
}
|
|
|
|
srcDomain = m_source.nextDomain().c_str();
|
|
|
|
}
|
|
|
|
numPages = (m_max_source_btn / 12) + 1;
|
|
|
|
}
|
|
|
|
}
|
2013-01-15 14:54:33 +01:00
|
|
|
}
|
|
|
|
}
|
2013-07-29 23:06:50 +02:00
|
|
|
if(exitSource)
|
2013-01-15 14:54:33 +01:00
|
|
|
{
|
2016-12-01 01:05:39 +01:00
|
|
|
m_cfg.setUInt("GENERAL", "sources", m_current_view);
|
|
|
|
m_source_cnt = 1;
|
2016-06-20 23:03:40 +02:00
|
|
|
newSource = true;
|
2013-07-29 23:06:50 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
if(updateSource)
|
|
|
|
{
|
2016-06-20 23:03:40 +02:00
|
|
|
newSource = true;
|
2013-01-15 14:54:33 +01:00
|
|
|
_updateSourceBtns();
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
|
|
|
}
|
2019-01-09 13:28:59 +01:00
|
|
|
m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", channels_type);
|
2012-05-25 16:21:43 +02:00
|
|
|
_hideSource(true);
|
2016-06-20 23:03:40 +02:00
|
|
|
return newSource;
|
2013-07-29 23:06:50 +02:00
|
|
|
}
|
|
|
|
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
void CMenu::_setSrcOptions(void)
|
|
|
|
{
|
|
|
|
m_catStartPage = m_source.getInt(btn_selected, "cat_page", 1);
|
2016-11-07 16:06:00 +01:00
|
|
|
u8 category = m_source.getInt(btn_selected, "category", 0);
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
if(category > 0)
|
|
|
|
{
|
|
|
|
m_cat.remove("GENERAL", "selected_categories");
|
|
|
|
m_cat.remove("GENERAL", "required_categories");
|
|
|
|
char cCh = static_cast<char>(category + 32);
|
|
|
|
string newSelCats(1, cCh);
|
|
|
|
m_cat.setString("GENERAL", "selected_categories", newSelCats);
|
|
|
|
m_clearCats = false;
|
|
|
|
}
|
|
|
|
if(m_multisource) return;
|
|
|
|
/* autoboot */
|
2019-04-08 19:54:26 +02:00
|
|
|
char autoboot[64];
|
|
|
|
autoboot[63] = '\0';
|
|
|
|
strncpy(autoboot, m_source.getString(btn_selected, "autoboot", "").c_str(), sizeof(autoboot) - 1);
|
|
|
|
if(autoboot[0] != '\0')
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
{
|
|
|
|
m_source_autoboot = true;
|
|
|
|
memset(&m_autoboot_hdr, 0, sizeof(dir_discHdr));
|
|
|
|
if(source == "emunand" || source == "realnand")
|
|
|
|
{
|
2018-05-01 00:31:29 +02:00
|
|
|
m_autoboot_hdr.type = TYPE_CHANNEL;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
memcpy(m_autoboot_hdr.id, autoboot, 4);
|
|
|
|
}
|
|
|
|
else if(source == "wii")
|
|
|
|
{
|
|
|
|
m_autoboot_hdr.type = TYPE_WII_GAME;
|
|
|
|
memcpy(m_autoboot_hdr.id, autoboot, 6);
|
|
|
|
}
|
|
|
|
else if(source == "dml")
|
|
|
|
{
|
|
|
|
m_autoboot_hdr.type = TYPE_GC_GAME;
|
|
|
|
memcpy(m_autoboot_hdr.id, autoboot, 6);
|
|
|
|
}
|
|
|
|
else if(source == "homebrew")
|
|
|
|
{
|
|
|
|
m_autoboot_hdr.type = TYPE_HOMEBREW;
|
|
|
|
mbstowcs(m_autoboot_hdr.title, autoboot, 63);
|
|
|
|
}
|
|
|
|
else if(source == "plugin")
|
|
|
|
{
|
|
|
|
m_autoboot_hdr.type = TYPE_PLUGIN;
|
|
|
|
mbstowcs(m_autoboot_hdr.title, autoboot, 63);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
m_source_autoboot = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-11-03 20:16:03 +01:00
|
|
|
void CMenu::_initSourceMenu()
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2016-04-26 02:43:09 +02:00
|
|
|
m_use_source = false;
|
2018-10-01 23:01:43 +02:00
|
|
|
|
2019-10-17 01:22:40 +02:00
|
|
|
if(!fsop_FileExist(fmt("%s/%s/%s", m_sourceDir.c_str(), m_themeName.c_str(), SOURCE_FILENAME)))// check for source_menu/theme/source_menu.ini
|
2016-04-26 02:43:09 +02:00
|
|
|
{
|
2019-10-17 01:22:40 +02:00
|
|
|
if(!fsop_FileExist(fmt("%s/%s", m_sourceDir.c_str(), SOURCE_FILENAME)))// check for source_menu/source_menu.ini
|
2018-10-15 19:23:02 +02:00
|
|
|
return;// no source_menu.ini so we dont init nor use source menu, just return.
|
2016-04-26 02:43:09 +02:00
|
|
|
}
|
2018-10-01 23:01:43 +02:00
|
|
|
else // if source_menu/theme/source_menu.ini found then change m_sourceDir to source_menu/theme/
|
2019-07-24 19:35:51 +02:00
|
|
|
m_sourceDir = fmt("%s/%s", m_sourceDir.c_str(), m_themeName.c_str());
|
2016-04-26 02:43:09 +02:00
|
|
|
|
2018-10-01 23:01:43 +02:00
|
|
|
/* let wiiflow know source_menu.ini found and we will be using it */
|
2016-04-26 02:43:09 +02:00
|
|
|
m_use_source = true;
|
2018-10-01 23:01:43 +02:00
|
|
|
|
2019-10-17 01:22:40 +02:00
|
|
|
sm_numbers.clear();
|
|
|
|
tiers.clear();
|
|
|
|
sm_numbers = m_cfg.getStrings(SOURCEFLOW_DOMAIN, "numbers");
|
|
|
|
tiers = m_cfg.getStrings(SOURCEFLOW_DOMAIN, "tiers");
|
|
|
|
if(tiers.size() == 0)
|
|
|
|
{
|
|
|
|
tiers.push_back(SOURCE_FILENAME);
|
|
|
|
sm_numbers.push_back("0");
|
|
|
|
}
|
|
|
|
sm_tier = false;
|
|
|
|
if(tiers.size() > 1)
|
|
|
|
sm_tier = true;
|
|
|
|
|
|
|
|
string trs = tiers[0];
|
|
|
|
string numbers = sm_numbers[0];
|
|
|
|
for(u8 i = 1; i < tiers.size(); i++)
|
|
|
|
{
|
|
|
|
trs.append(',' + tiers[i]);
|
|
|
|
numbers.append(',' + sm_numbers[i]);
|
|
|
|
}
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "tiers", trs);
|
|
|
|
m_cfg.setString(SOURCEFLOW_DOMAIN, "numbers", numbers);
|
|
|
|
|
|
|
|
string fn = tiers[tiers.size() - 1];
|
|
|
|
m_source.load(fmt("%s/%s", m_sourceDir.c_str(), fn.c_str()));
|
|
|
|
|
|
|
|
fn.replace(fn.find("."), 4, "_flow");
|
|
|
|
curflow = m_cfg.getInt(SOURCEFLOW_DOMAIN, fn, m_cfg.getInt(SOURCEFLOW_DOMAIN, "last_cf_mode", 1));
|
|
|
|
|
2016-11-07 16:06:00 +01:00
|
|
|
/* get max source button # */
|
2018-09-26 17:28:01 +02:00
|
|
|
m_max_source_btn = 0;
|
2016-11-07 16:06:00 +01:00
|
|
|
const char *srcDomain = m_source.firstDomain().c_str();
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
if(strlen(srcDomain) < 2)
|
|
|
|
break;
|
|
|
|
if(strrchr(srcDomain, '_') != NULL)
|
|
|
|
{
|
|
|
|
int srcBtnNumber = atoi(strrchr(srcDomain, '_') + 1);
|
2018-09-26 17:28:01 +02:00
|
|
|
if(srcBtnNumber > m_max_source_btn)
|
|
|
|
m_max_source_btn = srcBtnNumber;
|
2016-11-07 16:06:00 +01:00
|
|
|
}
|
|
|
|
srcDomain = m_source.nextDomain().c_str();
|
|
|
|
}
|
2018-10-01 23:01:43 +02:00
|
|
|
|
2012-11-03 20:16:03 +01:00
|
|
|
_addUserLabels(m_sourceLblUser, ARRAY_SIZE(m_sourceLblUser), "SOURCE");
|
|
|
|
m_sourceBg = _texture("SOURCE/BG", "texture", theme.bg, false);
|
2018-12-28 01:47:00 +01:00
|
|
|
m_sourceLblTitle = _addLabel("SOURCE/TITLE", theme.titleFont, L"", 0, 10, 640, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
|
2013-11-04 20:46:23 +01:00
|
|
|
m_sourceLblPage = _addLabel("SOURCE/PAGE_BTN", theme.btnFont, L"", 68, 400, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
|
|
|
m_sourceBtnPageM = _addPicButton("SOURCE/PAGE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 20, 400, 48, 48);
|
|
|
|
m_sourceBtnPageP = _addPicButton("SOURCE/PAGE_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 172, 400, 48, 48);
|
|
|
|
m_sourceBtnBack = _addButton("SOURCE/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor);
|
2016-06-20 23:03:40 +02:00
|
|
|
m_sourceBtnClear = _addButton("SOURCE/ALL_BTN", theme.btnFont, L"", 270, 400, 100, 48, theme.btnFontColor);
|
2013-09-03 15:48:30 +02:00
|
|
|
|
2012-05-18 18:02:36 +02:00
|
|
|
int row;
|
|
|
|
int col;
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
for(i = 0; i < 12; ++i)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2012-12-28 15:19:40 +01:00
|
|
|
TexData texConsoleImg;
|
|
|
|
TexData texConsoleImgs;
|
2018-11-05 12:46:35 +01:00
|
|
|
// use favoriteson.png just to initialize the buttons
|
|
|
|
TexHandle.fromImageFile(texConsoleImg, fmt("%s/favoriteson.png", m_imgsDir.c_str()));
|
|
|
|
TexHandle.fromImageFile(texConsoleImgs, fmt("%s/favoritesons.png", m_imgsDir.c_str()));
|
2012-05-25 16:21:43 +02:00
|
|
|
|
2012-08-06 15:48:57 +02:00
|
|
|
row = i / 4;
|
|
|
|
col = i - (row * 4);
|
-updating wiiflow lite to beta 4.3.0
-fixed using categories to hide GC disc 2's. Apparently this has never really worked right for some time or ever.
-fixed deleting the cached cover texture file for plugin games. Delete cover for plugins only deletes the cached texture file (.wfc)
-fixed favorites and adultonly (parental lock) for plugin games. Apparently I may have broke this a few revisions back.
-favorites and adultonly for plugin games now have their own domains in gamecfg1- [FAVORITES_PLUGINS] and [ADULTONLY_PLUGINS]. just makes it more organized.
-only wii, GC, channels are added to [PLAYCOUNT] and [LAST_PLAYED] in gamecfg1.
-now loading gamecfg1 at startup and leaving it loaded till exit. no more loading it and unloading all the time.
-fixed scrolling for game_info synopsis, credits, and help text.
-made source menu buttons wider for wiiflow default. old 80x80, now 100x80. looks better.
-display music info now defaults to off
-screensaver_disabled now defaults to yes
-show GC view button is now on by default no matter what. the only way it is disabled is if you edit wiiflow.ini manually. this is how all the view buttons work.
-removed hiding homebrew button but if wiiflow locked it won't work or in sourceflow it won't show.
-dump_list is now under [GENERAL] instead of each view. Also only works for Wii, GC, and channels.
-sorting only works for Wii, GC, and Channels now. disabled for sourceflow, plugins, homebrew, and combined view.
-now if no games are found a message is shown with the current path so you can see where wiiflow is looking. (except for plugins)
-removed auto create emuNAND for emuNAND view if gamelist is empty. just go to settings>NAND settings if you want to extract or disable it.
-now when no games are found all buttons at bottom are still accessible allowing you to change the view or go to settings and change current partition or path and even extract your NAND to create a EmuNAND. Or go to Home Menu and Install a Wii or GC game.
-removed auto extract NAND to emuNAND when launching a Wii game with EmuNAND save. Now a message is diplayed saying 'emuNAND for saves not found - using real NAND'.
-made the speed at which cover titles fade in/out almost instantly.
-removed update button from Home Menu. online update code is still there but not used and probably won't be used any more as there just isn't a need for it now.
-removed ftp button from Home Menu and all code for the FTP server. I just use WiiXplorer's FTP server. it seems to work better for me.
-disabled keep USB Alive thread for now. i think there's a possibilty it might be the cause of my SD/USB files getting corrupted.
-removed Btn B and - combo to switch partitions. didn't seem useful anymore.
-redid nand emulation settings menu. looks like this now:
pg1
Select EmuNAND
EmuNAND Enulation
Select SaveNAND
SaveNAND Emulation
pg2
Extract Saves All
Missing
Extract NAND
Select Saves Partition
-no longer blocking Select Plugin menu and View icons when using source menu combined view
-now Select Plugins Menu is like switching to plugin view but you get to choose the plugins first
-now [PLUGIN] partition= is the default partition for all plugins. to change individual plugins add 'romPartition=x' to the plugin ini. x is the partition number 0 thru 8 with SD being 0. this is how my usbloadergx plugin mod works.
2016-10-05 01:44:13 +02:00
|
|
|
m_sourceBtnSource[i] = _addPicButton(fmt("SOURCE/SOURCE_BTN_%i", i), texConsoleImg, texConsoleImgs, (100 + 120 * col), (90 + 100 * row), 100, 80);
|
2013-11-04 20:46:23 +01:00
|
|
|
_setHideAnim(m_sourceBtnSource[i], fmt("SOURCE/SOURCE_BTN_%i", i), 0, 0, -2.f, 0.f);
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
- Categories update.
- now you can have as many categories as you want.
- copied the idea of selected, hidden, and required categories from USB Loader GX. Thanks Cyan. Checkmark = selected, X = Hidden, and + = Required.
- redid categories.ini layout and renamed it categories_v4.ini so you can copy and paste settings from the old one to the new one. Each view (USB,DML,EMU,NAND,HOMEBREW) has it's own numcategories, category names, and category settings. All games are now seperated based on the view. Don't forget to add 1 to numcategories for the show All mode.
- Replaced All checkbox with CLEAR button which clears all checkboxes so no category is selected and all games will be shown.
- Added features to the Game Selected Categories Menu. Now the title is the title of the current game. You can now press plus(+) and minus(-) on wiimote to go to the next or previous games without going back to previous screen making it easier to setup categories for your games.
- note: all changes will not be saved in categories_v4.ini unless you exit wiiflow or launch a game.
2012-08-31 19:51:49 +02:00
|
|
|
_setHideAnim(m_sourceLblTitle, "SOURCE/TITLE", 0, 0, -2.f, 0.f);
|
2013-11-04 20:46:23 +01:00
|
|
|
_setHideAnim(m_sourceLblPage, "SOURCE/PAGE_BTN", 0, 0, 1.f, -1.f);
|
|
|
|
_setHideAnim(m_sourceBtnPageM, "SOURCE/PAGE_MINUS", 0, 0, 1.f, -1.f);
|
|
|
|
_setHideAnim(m_sourceBtnPageP, "SOURCE/PAGE_PLUS", 0, 0, 1.f, -1.f);
|
|
|
|
_setHideAnim(m_sourceBtnBack, "SOURCE/BACK_BTN", 0, 0, 1.f, -1.f);
|
2016-06-20 23:03:40 +02:00
|
|
|
_setHideAnim(m_sourceBtnClear, "SOURCE/ALL_BTN", 0, 0, 1.f, -1.f);
|
2012-05-18 18:02:36 +02:00
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
_textSource();
|
|
|
|
_hideSource(true);
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|
|
|
|
|
2012-05-25 16:21:43 +02:00
|
|
|
void CMenu::_textSource(void)
|
2012-05-11 16:17:39 +02:00
|
|
|
{
|
2012-06-18 00:12:03 +02:00
|
|
|
m_btnMgr.setText(m_sourceLblTitle, _t("stup1", L"Select Source"));
|
2013-01-15 14:54:33 +01:00
|
|
|
m_btnMgr.setText(m_sourceBtnBack, _t("cfg10", L"Back"));
|
2016-06-20 23:03:40 +02:00
|
|
|
m_btnMgr.setText(m_sourceBtnClear, _t("cat2", L"Clear"));
|
2012-05-11 16:17:39 +02:00
|
|
|
}
|