mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-28 12:51:52 +01:00
-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:
parent
9e85032382
commit
7ef28f87f0
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 3.1 MiB |
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user