mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
- added Nintendont BBA emulation and Net Profile options to Game Settings.
This commit is contained in:
parent
4761d0ce84
commit
e29894d629
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.6 MiB After Width: | Height: | Size: 3.6 MiB |
@ -79,7 +79,7 @@ since wiiflow lite doesn't support versions less than v3.358
|
||||
we will use argsboot and version detection every time. */
|
||||
|
||||
void Nintendont_SetOptions(const char *gamePath, const char *gameID, const char *CheatPath, u8 lang,
|
||||
u32 n_cfg, u32 n_vm, s8 vidscale, s8 vidoffset)
|
||||
u32 n_cfg, u32 n_vm, s8 vidscale, s8 vidoffset, u8 netprofile)
|
||||
{
|
||||
memset(&NinCfg, 0, sizeof(NIN_CFG));
|
||||
NinCfg.Magicbytes = 0x01070CF6;
|
||||
@ -123,6 +123,8 @@ void Nintendont_SetOptions(const char *gamePath, const char *gameID, const char
|
||||
NIN_cfg_version = 6;
|
||||
else if(NINRev >= 424 && NINRev < 431)
|
||||
NIN_cfg_version = 7;
|
||||
else if(NINRev >= 431 && NINRev < 487)
|
||||
NIN_cfg_version = 8;
|
||||
|
||||
NinCfg.Version = NIN_cfg_version;
|
||||
|
||||
@ -135,6 +137,9 @@ void Nintendont_SetOptions(const char *gamePath, const char *gameID, const char
|
||||
NinCfg.VideoScale = vidscale;
|
||||
NinCfg.VideoOffset = vidoffset;
|
||||
|
||||
/* bba network profile */
|
||||
NinCfg.NetworkProfile = netprofile;
|
||||
|
||||
/* language setup */
|
||||
if(lang == 0)
|
||||
lang = get_wii_language();
|
||||
|
@ -26,7 +26,7 @@
|
||||
bool Nintendont_Installed();
|
||||
bool Nintendont_GetLoader();
|
||||
void Nintendont_SetOptions(const char *gamePath, const char *gameID, const char *CheatPath, u8 lang, u32 n_cfg,
|
||||
u32 n_vm, s8 vidscale, s8 vidoffset);
|
||||
u32 n_vm, s8 vidscale, s8 vidoffset, u8 netprofile);
|
||||
|
||||
// Devolution
|
||||
#define DEVO_LOADER_PATH "%s/loader.bin"
|
||||
|
@ -2,7 +2,7 @@
|
||||
#ifndef __COMMON_CONFIG_H__
|
||||
#define __COMMON_CONFIG_H__
|
||||
|
||||
#define NIN_CFG_VERSION 0x00000008
|
||||
#define NIN_CFG_VERSION 0x00000009
|
||||
#define NIN_CFG_MAXPAD 4
|
||||
#define MEM_CARD_MAX (5)
|
||||
#define MEM_CARD_CODE(x) (1<<(x+2))
|
||||
@ -13,7 +13,7 @@
|
||||
typedef struct NIN_CFG
|
||||
{
|
||||
unsigned int Magicbytes; // 0x01070CF6
|
||||
unsigned int Version; // v3 since rev135, v4 since v3.354, v5 since v3.358, v6 since v3.368, v7 since v4.424, v8 since v4.431
|
||||
unsigned int Version; // v3 since rev135, v4 since v3.354, v5 since v3.358, v6 since v3.368, v7 since v4.424, v8 since v4.431, v9 since v6.487
|
||||
unsigned int Config;
|
||||
unsigned int VideoMode;
|
||||
unsigned int Language;
|
||||
@ -24,7 +24,7 @@ typedef struct NIN_CFG
|
||||
unsigned char MemCardBlocks;
|
||||
signed char VideoScale; // 40 to 120 or 0 for auto, is added to 600 for 640 to 720
|
||||
signed char VideoOffset;// -20 to 20 or 0 for center
|
||||
unsigned char Unused;
|
||||
unsigned char NetworkProfile;
|
||||
} NIN_CFG;
|
||||
|
||||
// NIN_CFG_REMLIMIT is disc read speed limt enabled by default. It keeps loading speed at GC speed.
|
||||
@ -51,6 +51,7 @@ enum ninconfig
|
||||
NIN_CFG_ARCADE_MODE = (1<<16), // v4.424 cfg version 7
|
||||
NIN_CFG_BIT_CC_RUMBLE = (1<<17), // v4.431 cfg version 8
|
||||
NIN_CFG_SKIP_IPL = (1<<18), // v4.435 cfg version 8
|
||||
NIN_CFG_BBA_EMU = (1<<19), // v6.487 cfg version 9
|
||||
};
|
||||
|
||||
enum ninvideomode
|
||||
|
@ -532,6 +532,14 @@ private:
|
||||
s16 m_gameSettingsBtnPosP;
|
||||
s16 m_gameSettingsBtnPosM;
|
||||
|
||||
s16 m_gameSettingsLblBBA;
|
||||
s16 m_gameSettingsBtnBBA;
|
||||
|
||||
s16 m_gameSettingsLblNetProf;
|
||||
s16 m_gameSettingsLblNetProfVal;
|
||||
s16 m_gameSettingsBtnNetProfP;
|
||||
s16 m_gameSettingsBtnNetProfM;
|
||||
|
||||
s16 m_gameSettingsLblGCLoader;
|
||||
s16 m_gameSettingsLblGCLoader_Val;
|
||||
s16 m_gameSettingsBtnGCLoader_P;
|
||||
|
@ -138,6 +138,12 @@ void CMenu::_hideGameSettingsPg(bool instant)
|
||||
m_btnMgr.hide(m_gameSettingsLblPos, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnPosP, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnPosM, instant);
|
||||
m_btnMgr.hide(m_gameSettingsLblBBA, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnBBA, instant);
|
||||
m_btnMgr.hide(m_gameSettingsLblNetProfVal, instant);
|
||||
m_btnMgr.hide(m_gameSettingsLblNetProf, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnNetProfP, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnNetProfM, instant);
|
||||
// Channels only
|
||||
m_btnMgr.hide(m_gameSettingsLblApploader, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnApploader, instant);
|
||||
@ -206,8 +212,13 @@ void CMenu::_showGameSettings()
|
||||
}
|
||||
|
||||
m_gameSettingsMaxPgs = 5;
|
||||
if(GameHdr->type == TYPE_GC_GAME && GCLoader == DEVOLUTION)
|
||||
m_gameSettingsMaxPgs = 2;
|
||||
if(GameHdr->type == TYPE_GC_GAME)
|
||||
{
|
||||
if(GCLoader == DEVOLUTION)
|
||||
m_gameSettingsMaxPgs = 2;
|
||||
else
|
||||
m_gameSettingsMaxPgs = 6;
|
||||
}
|
||||
|
||||
m_btnMgr.setText(m_gameSettingsLblPage, wfmt(L"%i / %i", m_gameSettingsPage, m_gameSettingsMaxPgs));
|
||||
m_btnMgr.show(m_gameSettingsLblPage);
|
||||
@ -401,11 +412,22 @@ void CMenu::_showGameSettings()
|
||||
{
|
||||
m_btnMgr.show(m_gameSettingsLblPrivateServer);
|
||||
m_btnMgr.show(m_gameSettingsBtnPrivateServer);
|
||||
|
||||
m_btnMgr.show(m_gameSettingsLblFix480p);
|
||||
m_btnMgr.show(m_gameSettingsBtnFix480p);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(m_gameSettingsPage == 6)
|
||||
{
|
||||
m_btnMgr.show(m_gameSettingsLblBBA);
|
||||
m_btnMgr.show(m_gameSettingsBtnBBA);
|
||||
|
||||
m_btnMgr.show(m_gameSettingsLblNetProfVal);
|
||||
m_btnMgr.show(m_gameSettingsLblNetProf);
|
||||
m_btnMgr.show(m_gameSettingsBtnNetProfP);
|
||||
m_btnMgr.show(m_gameSettingsBtnNetProfM);
|
||||
}
|
||||
|
||||
m_btnMgr.setText(m_gameSettingsBtnAdultOnly, m_gcfg1.getBool("ADULTONLY", id, false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_gameSettingsBtnOcarina, _optBoolToString(m_gcfg2.getOptBool(id, "cheat", 0)));
|
||||
@ -426,6 +448,13 @@ void CMenu::_showGameSettings()
|
||||
m_btnMgr.setText(m_gameSettingsBtnArcade, _optBoolToString(m_gcfg2.getOptBool(id, "triforce_arcade", 0)));
|
||||
m_btnMgr.setText(m_gameSettingsBtnSkip_IPL, _optBoolToString(m_gcfg2.getOptBool(id, "skip_ipl", 0)));
|
||||
m_btnMgr.setText(m_gameSettingsBtnPatch50, _optBoolToString(m_gcfg2.getOptBool(id, "patch_pal50", 0)));
|
||||
m_btnMgr.setText(m_gameSettingsBtnBBA, _optBoolToString(m_gcfg2.getOptBool(id, "bba_emu", 0)));
|
||||
|
||||
u8 netprofile = m_gcfg2.getUInt(id, "net_profile", 0);
|
||||
if(netprofile == 0)
|
||||
m_btnMgr.setText(m_gameSettingsLblNetProfVal, _t("GC_Auto", L"Auto"));
|
||||
else
|
||||
m_btnMgr.setText(m_gameSettingsLblNetProfVal, wfmt(L"%i", netprofile));
|
||||
|
||||
if(videoScale == 0)
|
||||
m_btnMgr.setText(m_gameSettingsLblWidthVal, _t("GC_Auto", L"Auto"));
|
||||
@ -788,6 +817,17 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc)
|
||||
m_gcfg2.setBool(id, "patch_pal50", !m_gcfg2.getBool(id, "patch_pal50", 0));
|
||||
_showGameSettings();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_gameSettingsBtnBBA))
|
||||
{
|
||||
m_gcfg2.setBool(id, "bba_emu", !m_gcfg2.getBool(id, "bba_emu", 0));
|
||||
_showGameSettings();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_gameSettingsBtnNetProfP) || m_btnMgr.selected(m_gameSettingsBtnNetProfM))
|
||||
{
|
||||
s8 direction = m_btnMgr.selected(m_gameSettingsBtnNetProfP) ? 1 : -1;
|
||||
m_gcfg2.setInt(id, "net_profile", loopNum(m_gcfg2.getInt(id, "net_profile") + direction, 4));
|
||||
_showGameSettings();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_gameSettingsBtnPrivateServer))
|
||||
{
|
||||
m_gcfg2.setBool(id, "private_server", !m_gcfg2.getBool(id, "private_server", 0));
|
||||
@ -983,6 +1023,15 @@ void CMenu::_initGameSettingsMenu()
|
||||
m_gameSettingsLblPatch50 = _addLabel("GAME_SETTINGS/PATCH_PAL50", theme.lblFont, L"", 20, 305, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_gameSettingsBtnPatch50 = _addButton("GAME_SETTINGS/PATCH_PAL50_BTN", theme.btnFont, L"", 420, 310, 200, 48, theme.btnFontColor);
|
||||
|
||||
//Page 6 GC only
|
||||
m_gameSettingsLblBBA = _addLabel("GAME_SETTINGS/BBA", theme.lblFont, L"", 20, 125, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_gameSettingsBtnBBA = _addButton("GAME_SETTINGS/BBA_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor);
|
||||
|
||||
m_gameSettingsLblNetProf = _addLabel("GAME_SETTINGS/NET_PROFILE", theme.lblFont, L"", 20, 185, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_gameSettingsLblNetProfVal = _addLabel("GAME_SETTINGS/NET_PROFILE_BTN", theme.btnFont, L"", 468, 190, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
||||
m_gameSettingsBtnNetProfM = _addPicButton("GAME_SETTINGS/NET_PROFILE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 420, 190, 48, 48);
|
||||
m_gameSettingsBtnNetProfP = _addPicButton("GAME_SETTINGS/NET_PROFILE_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 572, 190, 48, 48);
|
||||
|
||||
//Footer
|
||||
m_gameSettingsLblPage = _addLabel("GAME_SETTINGS/PAGE_BTN", theme.btnFont, L"", 68, 400, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
||||
m_gameSettingsBtnPageM = _addPicButton("GAME_SETTINGS/PAGE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 20, 400, 48, 48);
|
||||
@ -1092,6 +1141,14 @@ void CMenu::_initGameSettingsMenu()
|
||||
_setHideAnim(m_gameSettingsBtnPosM, "GAME_SETTINGS/NIN_POS_MINUS", -50, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnPosP, "GAME_SETTINGS/NIN_POS_PLUS", -50, 0, 1.f, 0.f);
|
||||
|
||||
_setHideAnim(m_gameSettingsLblBBA, "GAME_SETTINGS/BBA", 50, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnBBA, "GAME_SETTINGS/BBA_BTN", -50, 0, 1.f, 0.f);
|
||||
|
||||
_setHideAnim(m_gameSettingsLblNetProf, "GAME_SETTINGS/NET_PROFILE", 50, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsLblNetProfVal, "GAME_SETTINGS/NET_PROFILE_BTN", -50, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnNetProfM, "GAME_SETTINGS/NET_PROFILE_MINUS", -50, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnNetProfP, "GAME_SETTINGS/NET_PROFILE_PLUS", -50, 0, 1.f, 0.f);
|
||||
|
||||
_setHideAnim(m_gameSettingsLblGCLoader, "GAME_SETTINGS/GC_LOADER", 50, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsLblGCLoader_Val, "GAME_SETTINGS/GC_LOADER_BTN", -50, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnGCLoader_P, "GAME_SETTINGS/GC_LOADER_PLUS", -50, 0, 1.f, 0.f);
|
||||
@ -1162,6 +1219,8 @@ void CMenu::_textGameSettings(void)
|
||||
m_btnMgr.setText(m_gameSettingsLblNATIVE_CTL, _t("cfgg43", L"Native Control"));
|
||||
m_btnMgr.setText(m_gameSettingsLblSkip_IPL, _t("cfgg53", L"Skip IPL BIOS"));
|
||||
m_btnMgr.setText(m_gameSettingsLblPatch50, _t("cfgg56", L"Patch PAL50"));
|
||||
m_btnMgr.setText(m_gameSettingsLblBBA, _t("cfgg59", L"BBA Emulation"));
|
||||
m_btnMgr.setText(m_gameSettingsLblNetProf, _t("cfgg60", L"BBA Net Profile"));
|
||||
|
||||
m_btnMgr.setText(m_gameSettingsLblArcade, _t("cfgg48", L"Triforce Arcade Mode"));
|
||||
m_btnMgr.setText(m_gameSettingsLblEmulation, _t("cfgg24", L"NAND Emulation"));
|
||||
|
@ -338,7 +338,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
|
||||
u8 GClanguage = min(m_gcfg2.getUInt(id, "language", 0), ARRAY_SIZE(CMenu::_GClanguages) - 1u);
|
||||
GClanguage = (GClanguage == 0) ? min(m_cfg.getUInt(GC_DOMAIN, "game_language", 0), ARRAY_SIZE(CMenu::_GlobalGClanguages) - 1u) : GClanguage-1;
|
||||
// language selection only works for PAL games
|
||||
// language selection only works for PAL games. E and J are always set to english.
|
||||
if(id[3] == 'E' || id[3] == 'J')
|
||||
GClanguage = 1; //=english
|
||||
|
||||
@ -362,6 +362,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
bool deflicker = m_gcfg2.getBool(id, "deflicker", false);
|
||||
bool tri_arcade = m_gcfg2.getBool(id, "triforce_arcade", false);
|
||||
bool ipl = m_gcfg2.getBool(id, "skip_ipl", false);
|
||||
bool bba = m_gcfg2.getBool(id, "bba_emu", false);
|
||||
bool patch_pal50 = m_gcfg2.getBool(id, "patch_pal50", false);
|
||||
bool NIN_Debugger = (m_gcfg2.getInt(id, "debugger", 0) == 2);
|
||||
bool cheats = m_gcfg2.getBool(id, "cheat", false);
|
||||
@ -372,6 +373,9 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
s8 vidoffset = m_gcfg2.getInt(id, "nin_pos", 127);
|
||||
if(vidoffset == 127)
|
||||
vidoffset = m_cfg.getInt(GC_DOMAIN, "nin_pos", 0);
|
||||
u8 netprofile = 0;
|
||||
if(!IsOnWiiU())
|
||||
netprofile = m_gcfg2.getUInt(id, "net_profile", 0);
|
||||
|
||||
/* configs no longer needed */
|
||||
m_gcfg1.save(true);
|
||||
@ -459,6 +463,9 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
if(ipl)
|
||||
n_config |= NIN_CFG_SKIP_IPL;
|
||||
|
||||
if(bba)
|
||||
n_config |= NIN_CFG_BBA_EMU;
|
||||
|
||||
/* set memcard options */
|
||||
if(emuMC > 0 || IsOnWiiU() == true) //force memcardemu for wii u vwii
|
||||
n_config |= NIN_CFG_MEMCARDEMU;
|
||||
@ -518,7 +525,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
break;
|
||||
}
|
||||
|
||||
Nintendont_SetOptions(path, id, CheatPath, GClanguage, n_config, n_videomode, vidscale, vidoffset);
|
||||
Nintendont_SetOptions(path, id, CheatPath, GClanguage, n_config, n_videomode, vidscale, vidoffset, netprofile);
|
||||
|
||||
loadIOS(58, false); //nintendont NEEDS ios58 and AHBPROT disabled
|
||||
/* should be a check for error loading IOS58 and AHBPROT disabled */
|
||||
|
@ -160,6 +160,8 @@ cfgg55=Video Position
|
||||
cfgg56=Patch PAL50
|
||||
cfgg57=Not allowed for disc!
|
||||
cfgg58=Adult only
|
||||
cfgg59=BBA Emulation
|
||||
cfgg60=BBA Net Profile
|
||||
cfgg4=Patch country strings
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
|
Loading…
Reference in New Issue
Block a user