-fixed changing gamecube games directory and path.

-changed selecting nands type. now only use one source button or the channels.ini plugin for nand channels. goto config settings pg3 to change the nand type - real, emu, or both. this setting will stay that way till you change it. if using old source buttons they will both function the same. 
-added homebrew plugin ini. so now theres wii, gamecube, channels, and homebrew plugin ini files to put in wiiflow/plugins folder and then you can use the plugin select menu as a source menu. you can also add their magic numbers to source buttons and combine them with plugins.
-added support for quakegx mod plugin by oibaff6 and args support added by wiimpathy.
This commit is contained in:
fledge68 2018-04-30 22:31:29 +00:00
parent 9e85032382
commit 7ef28f87f0
8 changed files with 58 additions and 68 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

View File

@ -174,8 +174,8 @@ void Nintendont_SetOptions(const char *gamePath, const char *gameID, const char
snprintf(NinCfg.CheatPath, sizeof(NinCfg.CheatPath), strchr(CheatPath, '/')); snprintf(NinCfg.CheatPath, sizeof(NinCfg.CheatPath), strchr(CheatPath, '/'));
/* GamePath Setup */ /* GamePath Setup */
if(strstr(gamePath, "games") == NULL)// set path for disc if(strcmp(gamePath, "di") == 0)// should check for length of gamePath =2
snprintf(NinCfg.GamePath, sizeof(NinCfg.GamePath), "di"); strncpy(NinCfg.GamePath, gamePath, sizeof(NinCfg.GamePath));
else else
{ {
strncpy(NinCfg.GamePath, strchr(gamePath, '/'), 254); strncpy(NinCfg.GamePath, strchr(gamePath, '/'), 254);

View File

@ -2202,6 +2202,7 @@ bool CMenu::_loadList(void)
{ {
_loadHomebrewList(); _loadHomebrewList();
gprintf("Apps found: %i\n", m_gameList.size()); gprintf("Apps found: %i\n", m_gameList.size());
m_cacheList.Clear();
return m_gameList.size() > 0 ? true : false; return m_gameList.size() > 0 ? true : false;
} }
gprintf("Creating Gamelist\n"); gprintf("Creating Gamelist\n");
@ -2251,7 +2252,6 @@ bool CMenu::_loadHomebrewList()
m_cacheList.CreateList(COVERFLOW_HOMEBREW, currentPartition, gameDir, stringToVector(".dol|.elf", '|'), std::string(), false); m_cacheList.CreateList(COVERFLOW_HOMEBREW, currentPartition, gameDir, stringToVector(".dol|.elf", '|'), std::string(), false);
for(vector<dir_discHdr>::iterator tmp_itr = m_cacheList.begin(); tmp_itr != m_cacheList.end(); tmp_itr++) for(vector<dir_discHdr>::iterator tmp_itr = m_cacheList.begin(); tmp_itr != m_cacheList.end(); tmp_itr++)
m_gameList.push_back(*tmp_itr); m_gameList.push_back(*tmp_itr);
m_cacheList.Clear();
return true; return true;
} }
@ -2308,10 +2308,12 @@ bool CMenu::_loadChannelList(void)
bool CMenu::_loadPluginList() bool CMenu::_loadPluginList()
{ {
bool addHomebrew = false;
bool addGamecube = false; bool addGamecube = false;
bool addWii = false; bool addWii = false;
u8 addChannel = 0; bool addChannel = false;
u8 addEmuChannel = 0; //u8 addChannel = 0;
//u8 addEmuChannel = 0;
bool updateCache = m_cfg.getBool(PLUGIN_DOMAIN, "update_cache"); bool updateCache = m_cfg.getBool(PLUGIN_DOMAIN, "update_cache");
for(u8 i = 0; m_plugin.PluginExist(i); ++i) for(u8 i = 0; m_plugin.PluginExist(i); ++i)
@ -2328,24 +2330,29 @@ bool CMenu::_loadPluginList()
const char *romDir = m_plugin.GetRomDir(i); const char *romDir = m_plugin.GetRomDir(i);
if(strcasecmp(romDir, "scummvm.ini") != 0) if(strcasecmp(romDir, "scummvm.ini") != 0)
{ {
if(strncasecmp(m_plugin.PluginMagicWord, "4E47434D", 8) == 0) if(strncasecmp(m_plugin.PluginMagicWord, "48425257", 8) == 0)//HBRW
{
addHomebrew = true;
continue;
}
if(strncasecmp(m_plugin.PluginMagicWord, "4E47434D", 8) == 0)//NGCM
{ {
addGamecube = true; addGamecube = true;
continue; continue;
} }
if(strncasecmp(m_plugin.PluginMagicWord, "4E574949", 8) == 0) if(strncasecmp(m_plugin.PluginMagicWord, "4E574949", 8) == 0)//NWII
{ {
addWii = true; addWii = true;
continue; continue;
} }
if(strncasecmp(m_plugin.PluginMagicWord, "4E414E44", 8) == 0) if(strncasecmp(m_plugin.PluginMagicWord, "4E414E44", 8) == 0)//NAND
{ {
addChannel = CHANNELS_REAL; addChannel = true; //addChannel = CHANNELS_REAL;
continue; continue;
} }
if(strncasecmp(m_plugin.PluginMagicWord, "454E414E", 8) == 0) if(strncasecmp(m_plugin.PluginMagicWord, "454E414E", 8) == 0)//ENAN
{ {
addEmuChannel = CHANNELS_EMU; addChannel = true; //addEmuChannel = CHANNELS_EMU;
continue; continue;
} }
string gameDir(fmt("%s:/%s", DeviceName[currentPartition], romDir)); string gameDir(fmt("%s:/%s", DeviceName[currentPartition], romDir));
@ -2369,17 +2376,23 @@ bool CMenu::_loadPluginList()
vector<dir_discHdr>().swap(scummvmList); vector<dir_discHdr>().swap(scummvmList);
} }
} }
if(addHomebrew)
_loadHomebrewList();
if(addGamecube) if(addGamecube)
_loadGamecubeList(); _loadGamecubeList();
if(addWii) if(addWii)
_loadWiiList(); _loadWiiList();
if(addChannel || addEmuChannel) if(addChannel)
_loadChannelList();
/*if(addChannel || addEmuChannel)
{ {
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", addChannel | addEmuChannel); m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", addChannel | addEmuChannel);
_loadChannelList(); _loadChannelList();
} }*/
m_cfg.remove(PLUGIN_DOMAIN, "update_cache"); m_cfg.remove(PLUGIN_DOMAIN, "update_cache");
return true; return true;
} }

View File

@ -106,12 +106,6 @@ int CMenu::_config3(void)
s8 direction = m_btnMgr.selected(m_config3BtnChannelsTypeP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_config3BtnChannelsTypeP) ? 1 : -1;
m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", 1 + (int)loopNum((u32)m_cfg.getInt(CHANNEL_DOMAIN, "channels_type", 1) - 1 + direction, ARRAY_SIZE(CMenu::_ChannelsType))); m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", 1 + (int)loopNum((u32)m_cfg.getInt(CHANNEL_DOMAIN, "channels_type", 1) - 1 + direction, ARRAY_SIZE(CMenu::_ChannelsType)));
_showConfig3(); _showConfig3();
m_cfg.setBool(PLUGIN_ENABLED, "4e414e44", false);
m_cfg.setBool(PLUGIN_ENABLED, "454e414e", false);
if(m_cfg.getInt(CHANNEL_DOMAIN, "channels_type") & CHANNELS_REAL)
m_cfg.setBool(PLUGIN_ENABLED, "4e414e44", true);
if(m_cfg.getInt(CHANNEL_DOMAIN, "channels_type") & CHANNELS_EMU)
m_cfg.setBool(PLUGIN_ENABLED, "454e414e", true);
if(m_current_view & COVERFLOW_CHANNEL || m_current_view & COVERFLOW_PLUGIN) if(m_current_view & COVERFLOW_CHANNEL || m_current_view & COVERFLOW_PLUGIN)
m_refreshGameList = true; m_refreshGameList = true;
} }

View File

@ -426,7 +426,7 @@ int CMenu::_initNetwork()
if (!_isNetworkAvailable()) return -2; if (!_isNetworkAvailable()) return -2;
char ip[16]; char ip[16];
int val = if_config(ip, NULL, NULL, true); int val = if_config(ip, NULL, NULL, true, 0);
networkInit = !val; networkInit = !val;
return val; return val;

View File

@ -421,6 +421,8 @@ void CMenu::_game(bool launch)
dir_discHdr *hdr = (dir_discHdr*)MEM2_alloc(sizeof(dir_discHdr)); dir_discHdr *hdr = (dir_discHdr*)MEM2_alloc(sizeof(dir_discHdr));
memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr)); memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr));
if(hdr->type == TYPE_HOMEBREW)
launch = true;
_setCurrentItem(hdr); _setCurrentItem(hdr);
const char *id = NULL; const char *id = NULL;
@ -1111,7 +1113,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
/* Get game settings */ /* Get game settings */
const char *path = NULL; const char *path = NULL;
if(disc) if(disc)
path = fmt("%s:/", DeviceName[currentPartition]); path = "di";
else else
path = hdr->path; path = hdr->path;
@ -1189,21 +1191,24 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
/* Generate Game Cheat path - usb1:/games/title [id]/ */ /* Generate Game Cheat path - usb1:/games/title [id]/ */
char GC_Path[256]; char GC_Path[256];
GC_Path[255] = '\0'; GC_Path[255] = '\0';
strncpy(GC_Path, path, 255); if(!disc)
if(strcasestr(path, "boot.bin") != NULL)//usb1:/games/title [id]/sys/boot.bin
{ {
*strrchr(GC_Path, '/') = '\0'; //erase /boot.bin strncpy(GC_Path, path, 255);
*(strrchr(GC_Path, '/')+1) = '\0'; //erase sys folder if(strcasestr(path, "boot.bin") != NULL)//usb1:/games/title [id]/sys/boot.bin
{
*strrchr(GC_Path, '/') = '\0'; //erase /boot.bin
*(strrchr(GC_Path, '/')+1) = '\0'; //erase sys folder
}
else //usb1:/games/title [id]/game.iso
*(strrchr(GC_Path, '/')+1) = '\0'; //erase game.iso
} }
else //usb1:/games/title [id]/game.iso
*(strrchr(GC_Path, '/')+1) = '\0'; //erase game.iso
//use wiiflow cheat path if on same partition as game //use wiiflow cheat folder if is a disc or is on same partition as game folder
if(strncasecmp(m_cheatDir.c_str(), DeviceName[currentPartition], strlen(DeviceName[currentPartition])) == 0) if(disc || strncasecmp(m_cheatDir.c_str(), DeviceName[currentPartition], strlen(DeviceName[currentPartition])) == 0)
snprintf(CheatPath, sizeof(CheatPath), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", id)); snprintf(CheatPath, sizeof(CheatPath), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", id));
else else
{ {
// else copy cheat file to Game Cheat path above // otherwise copy cheat file from wiiflow cheat folder to Game folder
snprintf(CheatPath, sizeof(CheatPath), "%s%s.gct", GC_Path, id); snprintf(CheatPath, sizeof(CheatPath), "%s%s.gct", GC_Path, id);
fsop_CopyFile(fmt("%s/%s.gct", m_cheatDir.c_str(), id), CheatPath, NULL, NULL); fsop_CopyFile(fmt("%s/%s.gct", m_cheatDir.c_str(), id), CheatPath, NULL, NULL);
//might add err msg here if copy error //might add err msg here if copy error

View File

@ -71,7 +71,7 @@ void CMenu::_showCF(bool refreshList)
switch(m_autoboot_hdr.type) switch(m_autoboot_hdr.type)
{ {
case TYPE_CHANNEL: case TYPE_CHANNEL:
case TYPE_EMUCHANNEL: //case TYPE_EMUCHANNEL:
case TYPE_WII_GAME: case TYPE_WII_GAME:
case TYPE_GC_GAME: case TYPE_GC_GAME:
if(strcmp(m_autoboot_hdr.id, element->id) == 0) if(strcmp(m_autoboot_hdr.id, element->id) == 0)
@ -281,6 +281,7 @@ int CMenu::main(void)
if(m_current_view == COVERFLOW_HOMEBREW) if(m_current_view == COVERFLOW_HOMEBREW)
{ {
m_current_view = m_prev_view; m_current_view = m_prev_view;
m_cfg.setUInt("GENERAL", "sources", m_current_view);
_showCF(true); _showCF(true);
continue; continue;
} }

View File

@ -46,12 +46,10 @@ void CMenu::_sourceFlow()
else if(source == "emunand") else if(source == "emunand")
{ {
m_current_view = COVERFLOW_CHANNEL; m_current_view = COVERFLOW_CHANNEL;
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_EMU);
} }
else if(source == "realnand") else if(source == "realnand")
{ {
m_current_view = COVERFLOW_CHANNEL; m_current_view = COVERFLOW_CHANNEL;
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_REAL);
} }
else if(source == "homebrew") else if(source == "homebrew")
{ {
@ -184,8 +182,7 @@ void CMenu::_updateSourceBtns(void)
} }
} }
} }
else if((btnSource == "realnand" && (m_cfg.getUInt(CHANNEL_DOMAIN, "channels_type") & CHANNELS_REAL)) || else if(btnSource == "realnand" || btnSource == "emunand")
(btnSource == "emunand" && (m_cfg.getUInt(CHANNEL_DOMAIN, "channels_type") & CHANNELS_EMU)))
{ {
if(m_current_view & COVERFLOW_CHANNEL) if(m_current_view & COVERFLOW_CHANNEL)
{ {
@ -323,7 +320,6 @@ bool CMenu::_Source()
} }
if(!m_multisource && i <12) if(!m_multisource && i <12)
{ {
m_current_view = COVERFLOW_NONE;
exitSource = true; exitSource = true;
m_catStartPage = 1; m_catStartPage = 1;
if(source == "dml") if(source == "dml")
@ -333,10 +329,6 @@ bool CMenu::_Source()
} }
else if(source == "emunand" || source == "realnand") else if(source == "emunand" || source == "realnand")
{ {
if(source == "emunand")
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_EMU);
else
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_REAL);
m_current_view = COVERFLOW_CHANNEL; m_current_view = COVERFLOW_CHANNEL;
_setSrcOptions(); _setSrcOptions();
} }
@ -351,6 +343,7 @@ bool CMenu::_Source()
} }
else else
{ {
m_prev_view = m_current_view;
m_current_view = COVERFLOW_HOMEBREW; m_current_view = COVERFLOW_HOMEBREW;
_setSrcOptions(); _setSrcOptions();
} }
@ -397,27 +390,7 @@ bool CMenu::_Source()
else if(source == "dml") else if(source == "dml")
m_current_view ^= COVERFLOW_GAMECUBE; m_current_view ^= COVERFLOW_GAMECUBE;
else if(source == "emunand" || source == "realnand") else if(source == "emunand" || source == "realnand")
{ m_current_view ^= COVERFLOW_CHANNEL;
u8 chantype = m_cfg.getUInt(CHANNEL_DOMAIN, "channels_type");
if(source == "realnand")
{
if(m_current_view & COVERFLOW_CHANNEL)
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", (chantype ^= CHANNELS_REAL));
else
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_REAL);
}
else
{
if(m_current_view & COVERFLOW_CHANNEL)
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", (chantype ^= CHANNELS_EMU));
else
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_EMU);
}
if(m_cfg.getUInt(CHANNEL_DOMAIN, "channels_type") & CHANNELS_BOTH)
m_current_view |= COVERFLOW_CHANNEL; //set on
else
m_current_view &= ~COVERFLOW_CHANNEL;// clear off
}
else if(source == "homebrew") else if(source == "homebrew")
{ {
error(_t("errsource2", L"Homebrew in multisource not allowed!")); error(_t("errsource2", L"Homebrew in multisource not allowed!"));
@ -482,7 +455,7 @@ static const char sideCovers[4][9] = {
"57493634" //Wii64 "57493634" //Wii64
}; };
static const char shortCovers[12][9] = { static const char shortCovers[19][9] = {
"474d4254", //Gambatte "474d4254", //Gambatte
"474d4264", //Gambatte GB "474d4264", //Gambatte GB
"474d4274", //Gambatte GBC "474d4274", //Gambatte GBC
@ -494,7 +467,14 @@ static const char shortCovers[12][9] = {
"4d45445e", //WiiMednafen GB "4d45445e", //WiiMednafen GB
"4d45446e", //WiiMednafen GBC "4d45446e", //WiiMednafen GBC
"4d45447e", //WiiMednafen GBA "4d45447e", //WiiMednafen GBA
"57495358" //WiiSX - playstation "57495358", //WiiSX - playstation
"51304d30", //QuakeGX Modloader ID
"51304d31", //QuakeGX Modloader hipnotic
"51304d32", //QuakeGX Modloader scourge
"51304d51", //QuakeGX Modloader Q
"51304d58", //QuakeGX Modloader X
"51304d59", //QuakeGX Modloader Y
"51304d5a" //QuakeGX Modloader Z
}; };
bool CMenu::_sideCover(const char *magic) bool CMenu::_sideCover(const char *magic)
@ -513,7 +493,7 @@ bool CMenu::_shortCover(const char *magic)
{ {
if(magic == NULL) if(magic == NULL)
return false; return false;
for(i = 0; i < 12; i++) for(i = 0; i < 15; i++)
{ {
if(strncasecmp(magic, shortCovers[i], 8) == 0) if(strncasecmp(magic, shortCovers[i], 8) == 0)
return true; return true;
@ -543,10 +523,7 @@ void CMenu::_setSrcOptions(void)
memset(&m_autoboot_hdr, 0, sizeof(dir_discHdr)); memset(&m_autoboot_hdr, 0, sizeof(dir_discHdr));
if(source == "emunand" || source == "realnand") if(source == "emunand" || source == "realnand")
{ {
if(source == "realnand") m_autoboot_hdr.type = TYPE_CHANNEL;
m_autoboot_hdr.type = TYPE_CHANNEL;
else
m_autoboot_hdr.type = TYPE_EMUCHANNEL;
memcpy(m_autoboot_hdr.id, autoboot, 4); memcpy(m_autoboot_hdr.id, autoboot, 4);
} }
else if(source == "wii") else if(source == "wii")