mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
-added new option to the game settings, Activity LED, with this
enabled you can toggle the drive led for wii and gc games -updated english.ini
This commit is contained in:
parent
b700d056b8
commit
c49d88586b
@ -30,6 +30,7 @@ struct the_CFG {
|
||||
u8 GameBootType;
|
||||
WIP_Code *wip_list;
|
||||
u32 wip_count;
|
||||
bool use_led;
|
||||
/* needed for channels */
|
||||
u64 title;
|
||||
bool use_dol;
|
||||
|
@ -135,6 +135,9 @@ int main()
|
||||
__IOS_ShutdownSubsystems();
|
||||
__exception_closeall();
|
||||
|
||||
/* Enable front LED if requested */
|
||||
if(normalCFG.use_led) *HW_GPIOB_OUT |= 0x20;
|
||||
|
||||
/* Originally from tueidj - taken from NeoGamma (thx) */
|
||||
*(vu32*)0xCC003024 = 1;
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
#define Priiloader_CFG2 ((vu32*)0x817FEFF0)
|
||||
|
||||
#define HW_GPIO_OUT ((vu32*)0xCD8000E0)
|
||||
#define HW_GPIOB_OUT ((vu32*)0xCD8000C0)
|
||||
#define HW_AHBPROT ((vu32*)0xCD800064)
|
||||
#define MEM_PROT ((vu32)0xCD8B420A)
|
||||
|
||||
|
@ -30,6 +30,7 @@ struct the_CFG {
|
||||
u8 GameBootType;
|
||||
WIP_Code *wip_list;
|
||||
u32 wip_count;
|
||||
bool use_led;
|
||||
/* needed for channels */
|
||||
u64 title;
|
||||
bool use_dol;
|
||||
|
@ -53,7 +53,8 @@ extern u32 gameconfsize;
|
||||
extern u32 *gameconf;
|
||||
|
||||
the_CFG normalCFG;
|
||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, int aspectRatio, u32 returnTo, u8 BootType)
|
||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode,
|
||||
int aspectRatio, u32 returnTo, u8 BootType, bool use_led)
|
||||
{
|
||||
normalCFG.vidMode = vidMode;
|
||||
normalCFG.vipatch = vipatch;
|
||||
@ -73,6 +74,7 @@ void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 pat
|
||||
normalCFG.gameconf = gameconf;
|
||||
normalCFG.gameconfsize = gameconfsize;
|
||||
normalCFG.BootType = BootType;
|
||||
normalCFG.use_led = use_led;
|
||||
normalCFG.wip_list = get_wip_list();
|
||||
normalCFG.wip_count = get_wip_count();
|
||||
|
||||
|
@ -29,7 +29,7 @@ extern u32 hooktype;
|
||||
#endif
|
||||
|
||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode,
|
||||
int aspectRatio, u32 returnTo, u8 BootType);
|
||||
int aspectRatio, u32 returnTo, u8 BootType, bool use_led);
|
||||
void ExternalBooter_ChannelSetup(u64 title, bool dol);
|
||||
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, const char *ID);
|
||||
void ShutdownBeforeExit(bool KeepPatches = false);
|
||||
|
@ -26,14 +26,13 @@
|
||||
#include <gccore.h>
|
||||
|
||||
#include "Gekko.h"
|
||||
#include "memory/memory.h"
|
||||
|
||||
#define HW_GPIOB_OUT 0xCD0000C0;
|
||||
#define DISC_SLOT_LED 0x20
|
||||
|
||||
lwp_t light_thread = LWP_THREAD_NULL;
|
||||
|
||||
void *light_loop();
|
||||
vu32 *light_reg = (u32*)HW_GPIOB_OUT;
|
||||
bool light_on = false;
|
||||
u8 light_level = 0;
|
||||
|
||||
@ -54,7 +53,7 @@ void wiiLightOff()
|
||||
light_level = 0;
|
||||
LWP_JoinThread(light_thread, NULL);
|
||||
light_thread = LWP_THREAD_NULL;
|
||||
*light_reg &= ~DISC_SLOT_LED;
|
||||
*HW_GPIOB_OUT &= ~DISC_SLOT_LED;
|
||||
}
|
||||
|
||||
void wiiLightSetLevel(int level)
|
||||
@ -90,11 +89,11 @@ void *light_loop()
|
||||
timeon = light_timeon;
|
||||
timeoff = light_timeoff;
|
||||
// Turn on the light and sleep for a bit
|
||||
*light_reg |= DISC_SLOT_LED;
|
||||
*HW_GPIOB_OUT |= DISC_SLOT_LED;
|
||||
nanosleep(&timeon);
|
||||
// Turn off the light (if required) and sleep for a bit
|
||||
if(timeoff.tv_nsec > 0)
|
||||
*light_reg &= ~DISC_SLOT_LED;
|
||||
*HW_GPIOB_OUT &= ~DISC_SLOT_LED;
|
||||
nanosleep(&timeoff);
|
||||
}
|
||||
return NULL;
|
||||
|
@ -29,6 +29,7 @@
|
||||
#define Priiloader_CFG2 ((vu32*)0x817FEFF0)
|
||||
|
||||
#define HW_GPIO_OUT ((vu32*)0xCD8000E0)
|
||||
#define HW_GPIOB_OUT ((vu32*)0xCD8000C0)
|
||||
#define HW_AHBPROT ((vu32*)0xCD800064)
|
||||
#define MEM_PROT ((vu32)0xCD8B420A)
|
||||
|
||||
|
@ -17,6 +17,9 @@ u8 m_gameSettingsPage = 0;
|
||||
s16 m_gameSettingsLblApploader;
|
||||
s16 m_gameSettingsBtnApploader;
|
||||
|
||||
s16 m_gameSettingsLblLED;
|
||||
s16 m_gameSettingsBtnLED;
|
||||
|
||||
void CMenu::_hideGameSettings(bool instant)
|
||||
{
|
||||
m_btnMgr.hide(m_gameSettingsLblPage, instant);
|
||||
@ -102,6 +105,8 @@ void CMenu::_hideGameSettings(bool instant)
|
||||
m_btnMgr.hide(m_gameSettingsBtnFlashSave, instant);
|
||||
m_btnMgr.hide(m_gameSettingsLblApploader, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnApploader, instant);
|
||||
m_btnMgr.hide(m_gameSettingsLblLED, instant);
|
||||
m_btnMgr.hide(m_gameSettingsBtnLED, instant);
|
||||
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_gameSettingsLblUser); ++i)
|
||||
if(m_gameSettingsLblUser[i] != -1)
|
||||
@ -132,20 +137,11 @@ void CMenu::_showGameSettings(void)
|
||||
m_btnMgr.show(m_gameSettingsBtnPageP);
|
||||
m_btnMgr.show(m_gameSettingsBtnBack);
|
||||
m_btnMgr.show(m_gameSettingsLblTitle);
|
||||
if(CoverFlow.getHdr()->type == TYPE_GC_GAME)
|
||||
{
|
||||
if(m_new_dml)
|
||||
g_numGCfPages = 3;
|
||||
else
|
||||
g_numGCfPages = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(CoverFlow.getHdr()->type == TYPE_WII_GAME && _checkSave(string((const char *)CoverFlow.getHdr()->id), false))
|
||||
g_numGCfPages = 5;
|
||||
else
|
||||
g_numGCfPages = 4;
|
||||
}
|
||||
|
||||
if(CoverFlow.getHdr()->type == TYPE_WII_GAME && _checkSave(string((const char *)CoverFlow.getHdr()->id), false))
|
||||
g_numGCfPages = 5;
|
||||
else
|
||||
g_numGCfPages = 4;
|
||||
|
||||
if (m_gameSettingsPage == 1)
|
||||
{
|
||||
@ -235,7 +231,6 @@ void CMenu::_showGameSettings(void)
|
||||
m_btnMgr.show(m_gameSettingsBtnHooktypeM);
|
||||
m_btnMgr.show(m_gameSettingsBtnHooktypeP);
|
||||
}
|
||||
|
||||
m_btnMgr.show(m_gameSettingsLblOcarina);
|
||||
m_btnMgr.show(m_gameSettingsBtnOcarina);
|
||||
|
||||
@ -256,14 +251,13 @@ void CMenu::_showGameSettings(void)
|
||||
m_btnMgr.hide(m_gameSettingsBtnHooktypeM);
|
||||
m_btnMgr.hide(m_gameSettingsBtnHooktypeP);
|
||||
}
|
||||
|
||||
m_btnMgr.hide(m_gameSettingsLblOcarina);
|
||||
m_btnMgr.hide(m_gameSettingsBtnOcarina);
|
||||
|
||||
m_btnMgr.hide(m_gameSettingsLblCheat);
|
||||
m_btnMgr.hide(m_gameSettingsBtnCheat);
|
||||
}
|
||||
if (m_gameSettingsPage == 3)
|
||||
if(m_gameSettingsPage == 3)
|
||||
{
|
||||
if(CoverFlow.getHdr()->type != TYPE_GC_GAME)
|
||||
{
|
||||
@ -356,7 +350,7 @@ void CMenu::_showGameSettings(void)
|
||||
m_btnMgr.hide(m_gameSettingsBtnDM_Widescreen);
|
||||
}
|
||||
}
|
||||
if (m_gameSettingsPage == 4)
|
||||
if(m_gameSettingsPage == 4)
|
||||
{
|
||||
if(CoverFlow.getHdr()->type == TYPE_CHANNEL)
|
||||
{
|
||||
@ -384,6 +378,9 @@ void CMenu::_showGameSettings(void)
|
||||
m_btnMgr.show(m_gameSettingsLblIOS);
|
||||
m_btnMgr.show(m_gameSettingsBtnIOSP);
|
||||
m_btnMgr.show(m_gameSettingsBtnIOSM);
|
||||
|
||||
m_btnMgr.show(m_gameSettingsLblLED);
|
||||
m_btnMgr.show(m_gameSettingsBtnLED);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -404,6 +401,9 @@ void CMenu::_showGameSettings(void)
|
||||
|
||||
m_btnMgr.hide(m_gameSettingsLblExtractSave);
|
||||
m_btnMgr.hide(m_gameSettingsBtnExtractSave);
|
||||
|
||||
m_btnMgr.hide(m_gameSettingsLblLED);
|
||||
m_btnMgr.hide(m_gameSettingsBtnLED);
|
||||
}
|
||||
if (m_gameSettingsPage == 5)
|
||||
{
|
||||
@ -456,6 +456,7 @@ void CMenu::_showGameSettings(void)
|
||||
m_btnMgr.setText(m_gameSettingsBtnCustom, _optBoolToString(m_gcfg2.getOptBool(id, "custom", 0)));
|
||||
m_btnMgr.setText(m_gameSettingsBtnLaunchNK, _optBoolToString(m_gcfg2.getOptBool(id, "useneek", 0)));
|
||||
m_btnMgr.setText(m_gameSettingsBtnApploader, _optBoolToString(m_gcfg2.getOptBool(id, "apploader", 0)));
|
||||
m_btnMgr.setText(m_gameSettingsBtnLED, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0)));
|
||||
}
|
||||
|
||||
int j = 0;
|
||||
@ -680,6 +681,11 @@ void CMenu::_gameSettings(void)
|
||||
m_gcfg2.setBool(id, "apploader", !m_gcfg2.getBool(id, "apploader", 0));
|
||||
_showGameSettings();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_gameSettingsBtnLED))
|
||||
{
|
||||
m_gcfg2.setBool(id, "led", !m_gcfg2.getBool(id, "led", 0));
|
||||
_showGameSettings();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_gameSettingsBtnCategoryMain) && !m_locked)
|
||||
{
|
||||
_hideGameSettings();
|
||||
@ -830,6 +836,9 @@ void CMenu::_initGameSettingsMenu()
|
||||
m_gameSettingsLblExtractSave = _addLabel("GAME_SETTINGS/EXTRACT_SAVE", theme.lblFont, L"", 40, 310, 290, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_gameSettingsBtnExtractSave = _addButton("GAME_SETTINGS/EXTRACT_SAVE_BTN", theme.btnFont, L"", 330, 310, 270, 56, theme.btnFontColor);
|
||||
|
||||
m_gameSettingsLblLED = _addLabel("GAME_SETTINGS/LED", theme.lblFont, L"", 40, 250, 290, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_gameSettingsBtnLED = _addButton("GAME_SETTINGS/LED_BTN", theme.btnFont, L"", 330, 250, 270, 56, theme.btnFontColor);
|
||||
|
||||
//Page 5
|
||||
m_gameSettingsLblFlashSave = _addLabel("GAME_SETTINGS/FLASH_SAVE", theme.lblFont, L"", 40, 130, 290, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_gameSettingsBtnFlashSave = _addButton("GAME_SETTINGS/FLASH_SAVE_BTN", theme.btnFont, L"", 330, 130, 270, 56, theme.btnFontColor);
|
||||
@ -902,6 +911,9 @@ void CMenu::_initGameSettingsMenu()
|
||||
_setHideAnim(m_gameSettingsLblApploader, "GAME_SETTINGS/APPLDR", -200, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnApploader, "GAME_SETTINGS/APPLDR_BTN", 200, 0, 1.f, 0.f);
|
||||
|
||||
_setHideAnim(m_gameSettingsLblLED, "GAME_SETTINGS/LED", -200, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnLED, "GAME_SETTINGS/LED_BTN", 200, 0, 1.f, 0.f);
|
||||
|
||||
_setHideAnim(m_gameSettingsLblNMM, "GAME_SETTINGS/DML_NMM", -200, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsLblNMM_Val, "GAME_SETTINGS/DML_NMM_BTN", 200, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_gameSettingsBtnNMM_P, "GAME_SETTINGS/DML_NMM_PLUS", 200, 0, 1.f, 0.f);
|
||||
@ -992,4 +1004,5 @@ void CMenu::_textGameSettings(void)
|
||||
m_btnMgr.setText(m_gameSettingsLblGCLoader, _t("cfgg35", L"GameCube Loader"));
|
||||
m_btnMgr.setText(m_gameSettingsLblDM_Widescreen, _t("cfgg36", L"DM Widescreen Patch"));
|
||||
m_btnMgr.setText(m_gameSettingsLblApploader, _t("cfgg37", L"Boot Apploader"));
|
||||
m_btnMgr.setText(m_gameSettingsLblLED, _t("cfgg38", L"Activity LED"));
|
||||
}
|
||||
|
@ -892,7 +892,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
bool cheats = m_gcfg2.testOptBool(id, "cheat", m_cfg.getBool(GC_DOMAIN, "cheat", false));
|
||||
bool DML_debug = m_gcfg2.getBool(id, "debugger", false);
|
||||
bool DM_Widescreen = m_gcfg2.getBool(id, "dm_widescreen", false);
|
||||
bool activity_led = m_cfg.getBool(GC_DOMAIN, "dml_activity_led", true);
|
||||
bool activity_led = m_gcfg2.getBool(id, "led", false);
|
||||
/* Generate gct path */
|
||||
char GC_Path[1024];
|
||||
GC_Path[1023] = '\0';
|
||||
@ -1102,6 +1102,7 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
||||
int userIOS = m_gcfg2.getInt(id, "ios", 0);
|
||||
u64 gameTitle = TITLE_ID(hdr->settings[0],hdr->settings[1]);
|
||||
bool useNK2o = (m_gcfg2.getBool(id, "useneek", false) && !neek2o());
|
||||
bool use_led = m_gcfg2.getBool(id, "led", false);
|
||||
|
||||
m_gcfg1.save(true);
|
||||
m_gcfg2.save(true);
|
||||
@ -1165,7 +1166,7 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
||||
NandHandle.Patch_AHB(); /* Identify may takes it */
|
||||
Identify(gameTitle);
|
||||
ExternalBooter_ChannelSetup(gameTitle, use_dol);
|
||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, 0, TYPE_CHANNEL);
|
||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, 0, TYPE_CHANNEL, use_led);
|
||||
}
|
||||
Sys_Exit();
|
||||
}
|
||||
@ -1316,6 +1317,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
||||
else
|
||||
emulate_mode = 0;
|
||||
|
||||
bool use_led = m_gcfg2.getBool(id, "led", false);
|
||||
bool cheat = m_gcfg2.testOptBool(id, "cheat", m_cfg.getBool(WII_DOMAIN, "cheat", false));
|
||||
debuggerselect = m_gcfg2.getBool(id, "debugger", false) ? 1 : 0; // debuggerselect is defined in fst.h
|
||||
if(id == "RPWE41" || id == "RPWZ41" || id == "SPXP41") // Prince of Persia, Rival Swords
|
||||
@ -1344,7 +1346,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
||||
|
||||
if(strlen(rtrn) == 4)
|
||||
returnTo = rtrn[0] << 24 | rtrn[1] << 16 | rtrn[2] << 8 | rtrn[3];
|
||||
int userIOS = m_gcfg2.getInt(id, "ios", 0);
|
||||
int userIOS = m_gcfg2.getInt(id, "ios", 0);
|
||||
int gameIOS = dvd && !neek2o() ? userIOS : GetRequestedGameIOS(hdr);
|
||||
|
||||
m_gcfg1.save(true);
|
||||
@ -1401,7 +1403,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
||||
free(gameconfig);
|
||||
}
|
||||
ExternalBooter_WiiGameSetup(wbfs_partition, dvd, id.c_str());
|
||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, returnTo, TYPE_WII_GAME);
|
||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, returnTo, TYPE_WII_GAME, use_led);
|
||||
}
|
||||
|
||||
void CMenu::_initGameMenu()
|
||||
|
@ -88,6 +88,8 @@ cfgg33=Flash
|
||||
cfgg34=Devolution Memcard Emulator
|
||||
cfgg35=GameCube Loader
|
||||
cfgg36=DM Widescreen Patch
|
||||
cfgg37=Boot Apploader
|
||||
cfgg38=Activity LED
|
||||
cfgg4=Patch country strings
|
||||
cfgg5=Ocarina
|
||||
cfgg7=Vipatch
|
||||
|
Loading…
Reference in New Issue
Block a user