-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, '/'));
/* GamePath Setup */
if(strstr(gamePath, "games") == NULL)// set path for disc
snprintf(NinCfg.GamePath, sizeof(NinCfg.GamePath), "di");
if(strcmp(gamePath, "di") == 0)// should check for length of gamePath =2
strncpy(NinCfg.GamePath, gamePath, sizeof(NinCfg.GamePath));
else
{
strncpy(NinCfg.GamePath, strchr(gamePath, '/'), 254);

View File

@ -2202,6 +2202,7 @@ bool CMenu::_loadList(void)
{
_loadHomebrewList();
gprintf("Apps found: %i\n", m_gameList.size());
m_cacheList.Clear();
return m_gameList.size() > 0 ? true : false;
}
gprintf("Creating Gamelist\n");
@ -2251,7 +2252,6 @@ bool CMenu::_loadHomebrewList()
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++)
m_gameList.push_back(*tmp_itr);
m_cacheList.Clear();
return true;
}
@ -2308,10 +2308,12 @@ bool CMenu::_loadChannelList(void)
bool CMenu::_loadPluginList()
{
bool addHomebrew = false;
bool addGamecube = false;
bool addWii = false;
u8 addChannel = 0;
u8 addEmuChannel = 0;
bool addChannel = false;
//u8 addChannel = 0;
//u8 addEmuChannel = 0;
bool updateCache = m_cfg.getBool(PLUGIN_DOMAIN, "update_cache");
for(u8 i = 0; m_plugin.PluginExist(i); ++i)
@ -2328,24 +2330,29 @@ bool CMenu::_loadPluginList()
const char *romDir = m_plugin.GetRomDir(i);
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;
continue;
}
if(strncasecmp(m_plugin.PluginMagicWord, "4E574949", 8) == 0)
if(strncasecmp(m_plugin.PluginMagicWord, "4E574949", 8) == 0)//NWII
{
addWii = true;
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;
}
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;
}
string gameDir(fmt("%s:/%s", DeviceName[currentPartition], romDir));
@ -2369,17 +2376,23 @@ bool CMenu::_loadPluginList()
vector<dir_discHdr>().swap(scummvmList);
}
}
if(addHomebrew)
_loadHomebrewList();
if(addGamecube)
_loadGamecubeList();
if(addWii)
_loadWiiList();
if(addChannel || addEmuChannel)
if(addChannel)
_loadChannelList();
/*if(addChannel || addEmuChannel)
{
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", addChannel | addEmuChannel);
_loadChannelList();
}
}*/
m_cfg.remove(PLUGIN_DOMAIN, "update_cache");
return true;
}

View File

@ -106,12 +106,6 @@ int CMenu::_config3(void)
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)));
_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)
m_refreshGameList = true;
}

View File

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

View File

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

View File

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

View File

@ -46,12 +46,10 @@ void CMenu::_sourceFlow()
else if(source == "emunand")
{
m_current_view = COVERFLOW_CHANNEL;
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_EMU);
}
else if(source == "realnand")
{
m_current_view = COVERFLOW_CHANNEL;
m_cfg.setUInt(CHANNEL_DOMAIN, "channels_type", CHANNELS_REAL);
}
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)) ||
(btnSource == "emunand" && (m_cfg.getUInt(CHANNEL_DOMAIN, "channels_type") & CHANNELS_EMU)))
else if(btnSource == "realnand" || btnSource == "emunand")
{
if(m_current_view & COVERFLOW_CHANNEL)
{
@ -323,7 +320,6 @@ bool CMenu::_Source()
}
if(!m_multisource && i <12)
{
m_current_view = COVERFLOW_NONE;
exitSource = true;
m_catStartPage = 1;
if(source == "dml")
@ -333,10 +329,6 @@ bool CMenu::_Source()
}
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;
_setSrcOptions();
}
@ -351,6 +343,7 @@ bool CMenu::_Source()
}
else
{
m_prev_view = m_current_view;
m_current_view = COVERFLOW_HOMEBREW;
_setSrcOptions();
}
@ -397,27 +390,7 @@ bool CMenu::_Source()
else if(source == "dml")
m_current_view ^= COVERFLOW_GAMECUBE;
else if(source == "emunand" || source == "realnand")
{
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
}
m_current_view ^= COVERFLOW_CHANNEL;
else if(source == "homebrew")
{
error(_t("errsource2", L"Homebrew in multisource not allowed!"));
@ -482,7 +455,7 @@ static const char sideCovers[4][9] = {
"57493634" //Wii64
};
static const char shortCovers[12][9] = {
static const char shortCovers[19][9] = {
"474d4254", //Gambatte
"474d4264", //Gambatte GB
"474d4274", //Gambatte GBC
@ -494,7 +467,14 @@ static const char shortCovers[12][9] = {
"4d45445e", //WiiMednafen GB
"4d45446e", //WiiMednafen GBC
"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)
@ -513,7 +493,7 @@ bool CMenu::_shortCover(const char *magic)
{
if(magic == NULL)
return false;
for(i = 0; i < 12; i++)
for(i = 0; i < 15; i++)
{
if(strncasecmp(magic, shortCovers[i], 8) == 0)
return true;
@ -543,10 +523,7 @@ void CMenu::_setSrcOptions(void)
memset(&m_autoboot_hdr, 0, sizeof(dir_discHdr));
if(source == "emunand" || source == "realnand")
{
if(source == "realnand")
m_autoboot_hdr.type = TYPE_CHANNEL;
else
m_autoboot_hdr.type = TYPE_EMUCHANNEL;
m_autoboot_hdr.type = TYPE_CHANNEL;
memcpy(m_autoboot_hdr.id, autoboot, 4);
}
else if(source == "wii")