mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
- added framebuffer video width game option taken from usblgx. thanks to wiidev/blackb0x. #345
This commit is contained in:
parent
b878b9e2ee
commit
1239b90751
Binary file not shown.
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 4.4 MiB After Width: | Height: | Size: 4.4 MiB |
@ -206,7 +206,7 @@ u32 LoadChannel(u64 title, bool dol, u32 *IOS)
|
||||
}
|
||||
|
||||
void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio,
|
||||
u32 returnTo, u8 private_server, const char *server_addr, bool patchFix480p, u8 deflicker, u8 bootType)
|
||||
u32 returnTo, u8 private_server, const char *server_addr, u8 videoWidth, bool patchFix480p, u8 deflicker, u8 bootType)
|
||||
{
|
||||
u8 vfilter_off[7] = {0, 0, 21, 22, 21, 0, 0};
|
||||
u8 vfilter_low[7] = {4, 4, 16, 16, 16, 4, 4};
|
||||
@ -232,6 +232,9 @@ void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryStrin
|
||||
if(hooktype != 0 && hookpatched == false)
|
||||
hookpatched = dogamehooks(dolchunkoffset[i], dolchunksize[i], true);
|
||||
|
||||
if (videoWidth == WIDTH_FRAMEBUFFER)
|
||||
patch_width(dolchunkoffset[i], dolchunksize[i]);
|
||||
|
||||
if (deflicker == DEFLICKER_ON_LOW)
|
||||
{
|
||||
patch_vfilters(dolchunkoffset[i], dolchunksize[i], vfilter_low);
|
||||
|
@ -14,7 +14,7 @@ typedef struct _dolheader
|
||||
} ATTRIBUTE_PACKED dolheader;
|
||||
|
||||
void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio,
|
||||
u32 returnTo, u8 private_server, const char *server_addr, bool patchFix480p, u8 deflicker, u8 bootType);
|
||||
u32 returnTo, u8 private_server, const char *server_addr, u8 videoWidth, bool patchFix480p, u8 deflicker, u8 bootType);
|
||||
u32 LoadChannel(u64 title, bool dol, u32 *IOS);
|
||||
|
||||
extern bool isForwarder;
|
||||
|
@ -49,6 +49,7 @@ struct the_CFG {
|
||||
s8 aspectRatio;
|
||||
bool patchFix480p;
|
||||
u8 deflicker;
|
||||
u8 videoWidth;
|
||||
u8 private_server;
|
||||
char server_addr[24];
|
||||
u8 *cheats;
|
||||
|
@ -26,8 +26,8 @@ static u8 *appldr = (u8*)0x81200000;
|
||||
static const char *GameID = (const char*)0x80000000;
|
||||
|
||||
/* Constants */
|
||||
#define APPLDR_OFFSET 0x910
|
||||
#define APPLDR_CODE 0x918
|
||||
#define APPLDR_OFFSET 0x910// usblgx uses 0x2440 -huh?
|
||||
#define APPLDR_CODE 0x918// usblgx uses APPLDR_OFFSET + 0x20 - huh?
|
||||
|
||||
void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio,
|
||||
u32 returnTo, bool patchregion, u8 private_server, const char *server_addr, u8 deflicker, u8 bootType);
|
||||
@ -39,18 +39,19 @@ static void NewSuperMarioBrosPatch();
|
||||
static void Patch_23400_and_MKWii_vulnerability();
|
||||
bool hookpatched = false;
|
||||
|
||||
// wiiflow uses a struct to hold the appldr hdr and usblgx uses a u32 buffer[32] array to hold it.
|
||||
/* Thanks Tinyload */
|
||||
static struct
|
||||
{
|
||||
char revision[16];
|
||||
void *entry;
|
||||
s32 size;
|
||||
s32 trailersize;
|
||||
s32 padding;
|
||||
} apploader_hdr ATTRIBUTE_ALIGN(32);
|
||||
char revision[16];//[0-3] 16 divided by 4 bytes = 4
|
||||
void *entry;// [4] 4 bytes
|
||||
s32 size;//[5] 4 bytes
|
||||
s32 trailersize;// [6] 4 bytes
|
||||
s32 padding;// [7] 4 bytes
|
||||
} apploader_hdr ATTRIBUTE_ALIGN(32);// 16+4+4+4+4=32 bytes
|
||||
|
||||
u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo,
|
||||
bool patchregion , u8 private_server, const char *server_addr, bool patchFix480p, u8 deflicker, u8 bootType)
|
||||
bool patchregion , u8 private_server, const char *server_addr, u8 videoWidth, bool patchFix480p, u8 deflicker, u8 bootType)
|
||||
{
|
||||
//! Disable private server for games that still have official servers.
|
||||
if(memcmp(GameID, "SC7", 3) == 0 || memcmp(GameID, "RJA", 3) == 0 ||
|
||||
@ -118,6 +119,12 @@ u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryStrin
|
||||
prog(20);
|
||||
}
|
||||
free_wip();
|
||||
|
||||
patch_kirby((u8 *)0x80000000);// can't be done during maindolpatches.
|
||||
|
||||
if(videoWidth == WIDTH_FRAMEBUFFER)
|
||||
patch_width((void*)0x80000000, 0x900000);
|
||||
|
||||
if(hooktype != 0 && hookpatched)
|
||||
ocarina_do_code();
|
||||
|
||||
@ -153,36 +160,28 @@ void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipa
|
||||
u8 vfilter_medium[7] = {4, 8, 12, 16, 12, 8, 4};
|
||||
u8 vfilter_high[7] = {8, 8, 10, 12, 10, 8, 8};
|
||||
|
||||
patch_kirby((u8 *)0x80000000);
|
||||
do_wip_code((u8 *)dst, len);
|
||||
Remove_001_Protection(dst, len);
|
||||
if(CurrentIOS.Type == IOS_TYPE_WANIN && CurrentIOS.Revision < 13)
|
||||
Anti_002_fix(dst, len);
|
||||
if((CurrentIOS.Type == IOS_TYPE_WANIN && CurrentIOS.Revision < 13) || CurrentIOS.Type == IOS_TYPE_HERMES)
|
||||
patch_NoDiscinDrive(dst, len);
|
||||
patchVideoModes(dst, len, vidMode, vmode, patchVidModes, bootType);
|
||||
|
||||
if(debuggerselect == 2)
|
||||
Patch_fwrite(dst, len);
|
||||
if(hooktype != 0 && hookpatched == false)
|
||||
hookpatched = dogamehooks(dst, len, false);
|
||||
if(patchVidModes > 0)
|
||||
PatchVideoSneek(dst, len);
|
||||
if(vipatch)
|
||||
vidolpatcher(dst, len);
|
||||
if(patchVidModes > 0)
|
||||
PatchVideoSneek(dst, len);
|
||||
if(configbytes[0] != 0xCD)
|
||||
langpatcher(dst, len);
|
||||
if(countryString)
|
||||
PatchCountryStrings(dst, len); // Country Patch by WiiPower
|
||||
if(aspectRatio != -1)
|
||||
PatchAspectRatio(dst, len, aspectRatio);
|
||||
if(returnTo)
|
||||
PatchReturnTo(dst, len, returnTo);
|
||||
do_wip_code((u8 *)dst, len);
|
||||
Remove_001_Protection(dst, len);
|
||||
if(CurrentIOS.Type == IOS_TYPE_WANIN && CurrentIOS.Revision < 13)
|
||||
Anti_002_fix(dst, len);
|
||||
if((CurrentIOS.Type == IOS_TYPE_WANIN && CurrentIOS.Revision < 13) || CurrentIOS.Type == IOS_TYPE_HERMES)
|
||||
patch_NoDiscinDrive(dst, len);
|
||||
if(patchregion)
|
||||
PatchRegion(dst, len);
|
||||
if(private_server)
|
||||
PrivateServerPatcher(dst, len, private_server, serverAddr);
|
||||
|
||||
if(deflicker == DEFLICKER_ON_LOW)
|
||||
{
|
||||
patch_vfilters(dst, len, vfilter_low);
|
||||
@ -206,6 +205,12 @@ void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipa
|
||||
if (deflicker == DEFLICKER_OFF_EXTENDED)
|
||||
deflicker_patch(dst, len);
|
||||
}
|
||||
if(returnTo)
|
||||
PatchReturnTo(dst, len, returnTo);
|
||||
if(aspectRatio != -1)
|
||||
PatchAspectRatio(dst, len, aspectRatio);
|
||||
if(private_server)
|
||||
PrivateServerPatcher(dst, len, private_server, serverAddr);
|
||||
}
|
||||
|
||||
static void patch_NoDiscinDrive(void *buffer, u32 len)
|
||||
|
@ -7,7 +7,7 @@ extern "C" {
|
||||
|
||||
/* Prototypes */
|
||||
u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo,
|
||||
bool patchregion, u8 private_server, const char * server_addr, bool patchFix480p, u8 deflicker, u8 bootType);
|
||||
bool patchregion, u8 private_server, const char * server_addr, u8 videoWidth, bool patchFix480p, u8 deflicker, u8 bootType);
|
||||
|
||||
enum
|
||||
{
|
||||
@ -28,6 +28,13 @@ enum
|
||||
DEFLICKER_ON_HIGH
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
WIDTH_AUTO,
|
||||
WIDTH_FRAMEBUFFER,
|
||||
WIDTH_MAX
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
@ -107,8 +107,8 @@ int main()
|
||||
if(normalCFG.vidMode == 5)
|
||||
normalCFG.patchVidMode = 1; //progressive mode requires this
|
||||
vmode = Disc_SelectVMode(normalCFG.vidMode, &vmode_reg);// requires Disc_ID[3]
|
||||
AppEntrypoint = Apploader_Run(normalCFG.vidMode, vmode, normalCFG.vipatch, normalCFG.countryString, normalCFG.patchVidMode, normalCFG.aspectRatio,
|
||||
normalCFG.returnTo, normalCFG.patchregion, normalCFG.private_server, normalCFG.server_addr, normalCFG.patchFix480p, normalCFG.deflicker, normalCFG.BootType);
|
||||
AppEntrypoint = Apploader_Run(normalCFG.vidMode, vmode, normalCFG.vipatch, normalCFG.countryString, normalCFG.patchVidMode, normalCFG.aspectRatio, normalCFG.returnTo,
|
||||
normalCFG.patchregion, normalCFG.private_server, normalCFG.server_addr, normalCFG.videoWidth, normalCFG.patchFix480p, normalCFG.deflicker, normalCFG.BootType);
|
||||
WDVD_Close();
|
||||
}
|
||||
else if(normalCFG.BootType == TYPE_CHANNEL)
|
||||
@ -118,7 +118,7 @@ int main()
|
||||
ISFS_Deinitialize();
|
||||
vmode = Disc_SelectVMode(normalCFG.vidMode, &vmode_reg);// requires Disc_ID[3]
|
||||
PatchChannel(normalCFG.vidMode, vmode, normalCFG.vipatch, normalCFG.countryString, normalCFG.patchVidMode, normalCFG.aspectRatio,
|
||||
normalCFG.returnTo, normalCFG.private_server, normalCFG.server_addr, normalCFG.patchFix480p, normalCFG.deflicker, normalCFG.BootType);
|
||||
normalCFG.returnTo, normalCFG.private_server, normalCFG.server_addr, normalCFG.videoWidth, normalCFG.patchFix480p, normalCFG.deflicker, normalCFG.BootType);
|
||||
}
|
||||
gprintf("Entrypoint: %08x, Requested Game IOS: %i\n", AppEntrypoint, GameIOS);
|
||||
setprog(320);
|
||||
|
@ -1337,7 +1337,7 @@ u32 do_new_wiimmfi() {
|
||||
// Deflicker filter patching by wiidev (blackb0x @ GBAtemp)
|
||||
void patch_vfilters(void *addr, u32 len, u8 *vfilter)
|
||||
{
|
||||
u8 *addr_start = addr;
|
||||
u8 *addr_start = (u8 *)addr;
|
||||
while (len >= sizeof(GXRModeObj))
|
||||
{
|
||||
GXRModeObj *vidmode = (GXRModeObj *)addr_start;
|
||||
@ -1369,8 +1369,8 @@ void patch_vfilters_rogue(void *addr, u32 len, u8 *vfilter)
|
||||
{4, 4, 16, 16, 16, 4, 4},
|
||||
{2, 2, 17, 22, 17, 2, 2}
|
||||
};
|
||||
u8 *addr_start = addr;
|
||||
u8 *addr_end = addr + len - 8;
|
||||
u8 *addr_start = (u8 *)addr;
|
||||
u8 *addr_end = addr_start + len - 8;
|
||||
while (addr_start <= addr_end)
|
||||
{
|
||||
u8 known_vfilter[7];
|
||||
@ -1400,8 +1400,8 @@ void deflicker_patch(void *addr, u32 len)
|
||||
0x508BC00E, 0x99498000, 0x500CC00E,
|
||||
0x90698000, 0x99498000, 0x90E98000,
|
||||
0x99498000, 0x91098000, 0x41820040};
|
||||
u8 *addr_start = addr;
|
||||
u8 *addr_end = addr + len - sizeof(SearchPattern);
|
||||
u8 *addr_start = (u8 *)addr;
|
||||
u8 *addr_end = addr_start + len - sizeof(SearchPattern);
|
||||
while (addr_start <= addr_end)
|
||||
{
|
||||
if (memcmp(addr_start, SearchPattern, sizeof(SearchPattern)) == 0)
|
||||
@ -1413,3 +1413,51 @@ void deflicker_patch(void *addr, u32 len)
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
||||
void patch_width(void *addr, u32 len)
|
||||
{
|
||||
u8 SearchPattern[32] = {
|
||||
0x40, 0x82, 0x00, 0x08, 0x48, 0x00, 0x00, 0x1C,
|
||||
0x28, 0x09, 0x00, 0x03, 0x40, 0x82, 0x00, 0x08,
|
||||
0x48, 0x00, 0x00, 0x10, 0x2C, 0x03, 0x00, 0x00,
|
||||
0x40, 0x82, 0x00, 0x08, 0x54, 0xA5, 0x0C, 0x3C};
|
||||
u8 *addr_start = (u8 *)addr;
|
||||
u8 *addr_end = addr_start + len - sizeof(SearchPattern);
|
||||
while (addr_start <= addr_end)
|
||||
{
|
||||
if (memcmp(addr_start, SearchPattern, sizeof(SearchPattern)) == 0)
|
||||
{
|
||||
if (addr_start[-0x70] == 0xA0 && addr_start[-0x6E] == 0x00 && addr_start[-0x6D] == 0x0A)
|
||||
{
|
||||
if (addr_start[-0x44] == 0xA0 && addr_start[-0x42] == 0x00 && addr_start[-0x41] == 0x0E)
|
||||
{
|
||||
u8 reg_a = (addr_start[-0x6F] >> 5);
|
||||
u8 reg_b = (addr_start[-0x43] >> 5);
|
||||
|
||||
// Patch to the framebuffer resolution
|
||||
addr_start[-0x41] = 0x04;
|
||||
|
||||
// Center the image
|
||||
void *offset = addr_start - 0x70;
|
||||
|
||||
u32 old_heap_ptr = *(u32 *)0x80003110;
|
||||
*(u32 *)0x80003110 = old_heap_ptr - 0x40;
|
||||
u32 heap_space = old_heap_ptr - 0x40;
|
||||
|
||||
u32 org_address = (addr_start[-0x70] << 24) | (addr_start[-0x6F] << 16);
|
||||
*(u32 *)(heap_space + 0x00) = org_address | 4;
|
||||
*(u32 *)(heap_space + 0x04) = 0x200002D0 | (reg_b << 21) | (reg_a << 16);
|
||||
*(u32 *)(heap_space + 0x08) = 0x38000002 | (reg_a << 21);
|
||||
*(u32 *)(heap_space + 0x0C) = 0x7C000396 | (reg_a << 21) | (reg_b << 16) | (reg_a << 11);
|
||||
|
||||
*(u32 *)offset = 0x48000000 + ((heap_space - (u32)offset) & 0x3ffffff);
|
||||
*(u32 *)(heap_space + 0x10) = 0x48000000 + ((((u32)offset + 0x04) - (heap_space + 0x10)) & 0x3ffffff);
|
||||
|
||||
gprintf("Patched resolution. Branched from 0x%x to 0x%x\n", offset, heap_space);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
addr_start += 4;
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ extern u8 configbytes[2];
|
||||
void deflicker_patch(void *addr, u32 len);
|
||||
void patch_vfilters(void *addr, u32 len, u8 *vfilter);
|
||||
void patch_vfilters_rogue(void *addr, u32 len, u8 *vfilter);
|
||||
void patch_width(void *addr, u32 len);
|
||||
bool dogamehooks(void *addr, u32 len, bool channel);
|
||||
void langpatcher(void *addr, u32 len);
|
||||
void vidolpatcher(void *addr, u32 len);
|
||||
|
@ -49,6 +49,7 @@ struct the_CFG {
|
||||
s8 aspectRatio;
|
||||
bool patchFix480p;
|
||||
u8 deflicker;
|
||||
u8 videoWidth;
|
||||
u8 private_server;
|
||||
char server_addr[24];
|
||||
u8 *cheats;
|
||||
|
@ -62,7 +62,7 @@ u8 *booter_ptr = NULL;
|
||||
u32 booter_size = 0;
|
||||
|
||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, s8 aspectRatio, u8 private_server, const char *server_addr,
|
||||
bool patchFix480p, u8 deflicker, u32 returnTo, u8 BootType, bool use_led)
|
||||
u8 videoWidth, bool patchFix480p, u8 deflicker, u32 returnTo, u8 BootType, bool use_led)
|
||||
{
|
||||
normalCFG.vidMode = vidMode;
|
||||
normalCFG.vipatch = vipatch;
|
||||
@ -73,6 +73,7 @@ void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 pat
|
||||
strncpy(normalCFG.server_addr, server_addr, 23);
|
||||
normalCFG.patchFix480p = patchFix480p;
|
||||
normalCFG.deflicker = deflicker;
|
||||
normalCFG.videoWidth = videoWidth;
|
||||
normalCFG.returnTo = returnTo;
|
||||
normalCFG.configbytes[0] = configbytes[0];
|
||||
normalCFG.configbytes[1] = configbytes[1];
|
||||
|
@ -29,7 +29,7 @@ extern u32 hooktype;
|
||||
#endif
|
||||
|
||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, s8 aspectRatio, u8 private_server, const char *server_addr,
|
||||
bool patchFix480p, u8 deflicker, u32 returnTo, u8 BootType, bool use_led);
|
||||
u8 videoWidth, bool patchFix480p, u8 deflicker, u32 returnTo, u8 BootType, bool use_led);
|
||||
bool ExternalBooter_LoadBins(const char *binDir);
|
||||
void ExternalBooter_ChannelSetup(u64 title, bool dol);
|
||||
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, bool patchregion, const char *ID);
|
||||
|
@ -1018,6 +1018,8 @@ private:
|
||||
static const SOption _languages[11];
|
||||
static const SOption _GlobalDeflickerOptions[6];
|
||||
static const SOption _DeflickerOptions[7];
|
||||
static const SOption _GlobalVideoWidths[2];
|
||||
static const SOption _VideoWidths[3];
|
||||
static const SOption _AspectRatio[3];
|
||||
static const SOption _WidescreenWiiu[3];
|
||||
static const SOption _vidModePatch[4];
|
||||
|
@ -48,6 +48,17 @@ const CMenu::SOption CMenu::_DeflickerOptions[7] = {
|
||||
{ "df_high", L"On (High)" },
|
||||
};
|
||||
|
||||
const CMenu::SOption CMenu::_GlobalVideoWidths[2] = {
|
||||
{ "vw_auto", L"Auto" },
|
||||
{ "vw_frmbuf", L"Framebuffer" },
|
||||
};
|
||||
|
||||
const CMenu::SOption CMenu::_VideoWidths[3] = {
|
||||
{ "vw_def", L"Default" },
|
||||
{ "vw_auto", L"Auto" },
|
||||
{ "vw_frmbuf", L"Framebuffer" },
|
||||
};
|
||||
|
||||
const CMenu::SOption CMenu::_languages[11] = {
|
||||
{ "lngdef", L"Default" },// next should be console
|
||||
{ "lngjap", L"Japanese" },
|
||||
@ -253,7 +264,6 @@ void CMenu::_showConfigGame()
|
||||
}
|
||||
else
|
||||
i = 0;
|
||||
|
||||
if(i > 0)
|
||||
m_btnMgr.setText(m_configLbl2Val, wfmt(L"%i", i));
|
||||
else
|
||||
@ -396,17 +406,20 @@ void CMenu::_showConfigGame()
|
||||
}
|
||||
else if(m_configGamePage == 5)
|
||||
{
|
||||
m_btnMgr.setText(m_configLbl1, _t("cfgg38", L"Activity LED"));
|
||||
m_btnMgr.setText(m_configBtn1, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0)));
|
||||
m_btnMgr.show(m_configLbl1);
|
||||
m_btnMgr.show(m_configBtn1);
|
||||
|
||||
m_btnMgr.setText(m_configLbl2, _t("cfgg45", L"Private Server"));
|
||||
m_btnMgr.setText(m_configLbl1, _t("cfgg45", L"Private Server"));
|
||||
i = min(m_gcfg2.getUInt(id, "private_server", 0), ARRAY_SIZE(CMenu::_privateServer) - 1u);
|
||||
if(i < 3)
|
||||
m_btnMgr.setText(m_configLbl2Val, _t(CMenu::_privateServer[i].id, CMenu::_privateServer[i].text));
|
||||
m_btnMgr.setText(m_configLbl1Val, _t(CMenu::_privateServer[i].id, CMenu::_privateServer[i].text));
|
||||
else
|
||||
m_btnMgr.setText(m_configLbl2Val, custom_servers[i - 3]);//wstringEx()
|
||||
m_btnMgr.setText(m_configLbl1Val, custom_servers[i - 3]);//wstringEx()
|
||||
m_btnMgr.show(m_configLbl1);
|
||||
m_btnMgr.show(m_configLbl1Val);
|
||||
m_btnMgr.show(m_configBtn1P);
|
||||
m_btnMgr.show(m_configBtn1M);
|
||||
|
||||
m_btnMgr.setText(m_configLbl2, _t("cfgg65", L"Video Width"));
|
||||
i = min(m_gcfg2.getUInt(id, "video_width", 0), ARRAY_SIZE(CMenu::_VideoWidths) - 1u);
|
||||
m_btnMgr.setText(m_configLbl2Val, _t(CMenu::_VideoWidths[i].id, CMenu::_VideoWidths[i].text));
|
||||
m_btnMgr.show(m_configLbl2);
|
||||
m_btnMgr.show(m_configLbl2Val);
|
||||
m_btnMgr.show(m_configBtn2P);
|
||||
@ -444,6 +457,13 @@ void CMenu::_showConfigGame()
|
||||
m_btnMgr.show(m_configBtn2P);
|
||||
m_btnMgr.show(m_configBtn2M);
|
||||
}
|
||||
else // wii only
|
||||
{
|
||||
m_btnMgr.setText(m_configLbl2, _t("cfgg38", L"Activity LED"));
|
||||
m_btnMgr.setText(m_configBtn2, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0)));
|
||||
m_btnMgr.show(m_configLbl2);
|
||||
m_btnMgr.show(m_configBtn2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -739,20 +759,22 @@ void CMenu::_configGame(const dir_discHdr *hdr, bool disc)
|
||||
}
|
||||
else if(m_configGamePage == 5)
|
||||
{
|
||||
if(m_btnMgr.selected(m_configBtn1))
|
||||
if(m_btnMgr.selected(m_configBtn1P) || m_btnMgr.selected(m_configBtn1M))
|
||||
{
|
||||
m_gcfg2.setBool(id, "led", !m_gcfg2.getBool(id, "led", 0));
|
||||
m_btnMgr.setText(m_configBtn1, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0)));
|
||||
s8 direction = m_btnMgr.selected(m_configBtn1P) ? 1 : -1;
|
||||
i = loopNum(m_gcfg2.getUInt(id, "private_server") + direction, ARRAY_SIZE(CMenu::_privateServer) + custom_servers.size());
|
||||
m_gcfg2.setUInt(id, "private_server", i);
|
||||
if(i < 3)
|
||||
m_btnMgr.setText(m_configLbl1Val, _t(CMenu::_privateServer[i].id, CMenu::_privateServer[i].text));
|
||||
else
|
||||
m_btnMgr.setText(m_configLbl1Val, custom_servers[i - 3]);//wstringEx()
|
||||
}
|
||||
else if(m_btnMgr.selected(m_configBtn2P) || m_btnMgr.selected(m_configBtn2M))
|
||||
{
|
||||
s8 direction = m_btnMgr.selected(m_configBtn2P) ? 1 : -1;
|
||||
i = loopNum(m_gcfg2.getUInt(id, "private_server") + direction, ARRAY_SIZE(CMenu::_privateServer) + custom_servers.size());
|
||||
m_gcfg2.setUInt(id, "private_server", i);
|
||||
if(i < 3)
|
||||
m_btnMgr.setText(m_configLbl2Val, _t(CMenu::_privateServer[i].id, CMenu::_privateServer[i].text));
|
||||
else
|
||||
m_btnMgr.setText(m_configLbl2Val, custom_servers[i - 3]);//wstringEx()
|
||||
i = loopNum(m_gcfg2.getUInt(id, "video_width") + direction, ARRAY_SIZE(CMenu::_VideoWidths));
|
||||
m_gcfg2.setInt(id, "video_width", i);
|
||||
m_btnMgr.setText(m_configLbl2Val, _t(CMenu::_VideoWidths[i].id, CMenu::_VideoWidths[i].text));
|
||||
}
|
||||
else if(m_btnMgr.selected(m_configBtn3P) || m_btnMgr.selected(m_configBtn3M))
|
||||
{
|
||||
@ -798,13 +820,18 @@ void CMenu::_configGame(const dir_discHdr *hdr, bool disc)
|
||||
_error(_t("dlmsg14", L"Done."));
|
||||
_showConfigGame();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_configBtn2P) || m_btnMgr.selected(m_configBtn2M))
|
||||
else if(m_btnMgr.selected(m_configBtn2P) || m_btnMgr.selected(m_configBtn2M))// wii u only
|
||||
{
|
||||
s8 direction = m_btnMgr.selected(m_configBtn2P) ? 1 : -1;
|
||||
i = loopNum(m_gcfg2.getUInt(id, "widescreen_wiiu", 0) + direction, ARRAY_SIZE(CMenu::_WidescreenWiiu));
|
||||
m_gcfg2.setInt(id, "widescreen_wiiu", i);
|
||||
m_btnMgr.setText(m_configLbl2Val, _t(CMenu::_WidescreenWiiu[i].id, CMenu::_WidescreenWiiu[i].text));
|
||||
}
|
||||
else if(m_btnMgr.selected(m_configBtn2))// wii only
|
||||
{
|
||||
m_gcfg2.setBool(id, "led", !m_gcfg2.getBool(id, "led", 0));
|
||||
m_btnMgr.setText(m_configBtn2, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -122,7 +122,6 @@ void CMenu::_showConfigMain()
|
||||
{
|
||||
m_btnMgr.show(m_configLbl1);
|
||||
m_btnMgr.show(m_configLbl3);
|
||||
if(mainCfg_curPage != 14)
|
||||
m_btnMgr.show(m_configLbl4);
|
||||
}
|
||||
|
||||
@ -409,6 +408,9 @@ void CMenu::_showConfigMain()
|
||||
m_btnMgr.show(m_configLbl3Val);
|
||||
m_btnMgr.show(m_configBtn3M);
|
||||
m_btnMgr.show(m_configBtn3P);
|
||||
m_btnMgr.show(m_configLbl4Val);
|
||||
m_btnMgr.show(m_configBtn4M);
|
||||
m_btnMgr.show(m_configBtn4P);
|
||||
m_btnMgr.setText(m_configLbl1, _t("cfg729", L"Use system proxy settings"));
|
||||
m_btnMgr.setText(m_configBtn1, m_cfg.getBool("PROXY", "proxy_use_system") ? _t("on", L"On") : _t("off", L"Off"));
|
||||
m_btnMgr.setText(m_configLbl2, _t("cfg730", L"Always show main icons"));
|
||||
@ -416,6 +418,9 @@ void CMenu::_showConfigMain()
|
||||
m_btnMgr.setText(m_configLbl3, _t("cfgg61", L"Deflicker Filter"));
|
||||
int i = min(max(0, m_cfg.getInt("GENERAL", "deflicker_wii", 0)), (int)ARRAY_SIZE(CMenu::_GlobalDeflickerOptions) - 1);
|
||||
m_btnMgr.setText(m_configLbl3Val, _t(CMenu::_GlobalDeflickerOptions[i].id, CMenu::_GlobalDeflickerOptions[i].text));
|
||||
m_btnMgr.setText(m_configLbl4, _t("cfgg65", L"Video Width"));
|
||||
i = min(max(0, m_cfg.getInt("GENERAL", "video_width", 0)), (int)ARRAY_SIZE(CMenu::_GlobalVideoWidths) - 1);
|
||||
m_btnMgr.setText(m_configLbl4Val, _t(CMenu::_GlobalVideoWidths[i].id, CMenu::_GlobalVideoWidths[i].text));
|
||||
}
|
||||
}
|
||||
|
||||
@ -961,6 +966,13 @@ void CMenu::_configMain(void)
|
||||
int val = m_cfg.getInt("GENERAL", "deflicker_wii");
|
||||
m_btnMgr.setText(m_configLbl3Val, _t(CMenu::_GlobalDeflickerOptions[val].id, CMenu::_GlobalDeflickerOptions[val].text));
|
||||
}
|
||||
else if(m_btnMgr.selected(m_configBtn4P) || m_btnMgr.selected(m_configBtn4M))
|
||||
{
|
||||
s8 direction = m_btnMgr.selected(m_configBtn4P) ? 1 : -1;
|
||||
m_cfg.setInt("GENERAL", "video_width", loopNum(m_cfg.getUInt("GENERAL", "video_width") + direction, ARRAY_SIZE(CMenu::_GlobalVideoWidths)));
|
||||
int val = m_cfg.getInt("GENERAL", "video_width");
|
||||
m_btnMgr.setText(m_configLbl4Val, _t(CMenu::_GlobalVideoWidths[val].id, CMenu::_GlobalVideoWidths[val].text));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -861,6 +861,9 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
||||
u8 deflicker = min(m_gcfg2.getUInt(id, "deflicker_wii", 0), ARRAY_SIZE(CMenu::_DeflickerOptions) - 1u);
|
||||
deflicker = (deflicker == 0) ? min(m_cfg.getUInt("GENERAL", "deflicker_wii", 0), ARRAY_SIZE(CMenu::_GlobalDeflickerOptions) - 1u) : deflicker - 1;
|
||||
|
||||
u8 videoWidth = min(m_gcfg2.getUInt(id, "video_width", 0), ARRAY_SIZE(CMenu::_VideoWidths) - 1u);
|
||||
videoWidth = (videoWidth == 0) ? min(m_cfg.getUInt("GENERAL", "video_width", 0), ARRAY_SIZE(CMenu::_GlobalVideoWidths) - 1u) : videoWidth-1;
|
||||
|
||||
u8 private_server = m_gcfg2.getUInt(id, "private_server", 0);
|
||||
string server_addr = "";
|
||||
if(private_server > 2)
|
||||
@ -1010,7 +1013,7 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
||||
|
||||
ExternalBooter_ChannelSetup(gameTitle, use_dol);
|
||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, private_server, server_addr.c_str(),
|
||||
fix480p, deflicker, 0, TYPE_CHANNEL, use_led);
|
||||
videoWidth, fix480p, deflicker, 0, TYPE_CHANNEL, use_led);
|
||||
|
||||
Sys_Exit();
|
||||
}
|
||||
@ -1116,6 +1119,9 @@ void CMenu::_launchWii(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
||||
u8 deflicker = min(m_gcfg2.getUInt(id, "deflicker_wii", 0), ARRAY_SIZE(CMenu::_DeflickerOptions) - 1u);
|
||||
deflicker = (deflicker == 0) ? min(m_cfg.getUInt("GENERAL", "deflicker_wii", 0), ARRAY_SIZE(CMenu::_GlobalDeflickerOptions) - 1u) : deflicker-1;
|
||||
|
||||
u8 videoWidth = min(m_gcfg2.getUInt(id, "video_width", 0), ARRAY_SIZE(CMenu::_VideoWidths) - 1u);
|
||||
videoWidth = (videoWidth == 0) ? min(m_cfg.getUInt("GENERAL", "video_width", 0), ARRAY_SIZE(CMenu::_GlobalVideoWidths) - 1u) : videoWidth-1;
|
||||
|
||||
u8 private_server = m_gcfg2.getUInt(id, "private_server", 0);
|
||||
string server_addr = "";
|
||||
if(private_server > 2)
|
||||
@ -1331,7 +1337,7 @@ void CMenu::_launchWii(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
||||
|
||||
ExternalBooter_WiiGameSetup(wbfs_partition, dvd, patchregion, id.c_str());
|
||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, private_server, server_addr.c_str(),
|
||||
fix480p, deflicker, returnTo, TYPE_WII_GAME, use_led);
|
||||
videoWidth, fix480p, deflicker, returnTo, TYPE_WII_GAME, use_led);
|
||||
|
||||
Sys_Exit();
|
||||
}
|
||||
|
@ -164,6 +164,7 @@ cfgg57=Não permitido para disco!
|
||||
cfgg58=Somente adultos
|
||||
cfgg59=Emulação BBA
|
||||
cfgg60=Perfil BBA Net
|
||||
cfgg65=Video Width
|
||||
cfgg4=Patch strings de países
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -478,6 +479,9 @@ vmpall=Todas
|
||||
vmpmore=Mais
|
||||
vmpnone=Nenhum
|
||||
vmpnormal=Normal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Instalar WAD
|
||||
wad2=Ok
|
||||
wad3=
|
||||
|
@ -167,6 +167,7 @@ cfgg57=Niet toegestaan voor schijf!
|
||||
cfgg58=Alleen volwassenen
|
||||
cfgg59=BBA-emulatie
|
||||
cfgg60=BBA Net Profile
|
||||
cfgg65=Video Width
|
||||
cfgg4=Landinstellingenpatch
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -483,6 +484,9 @@ vmpall=Alles
|
||||
vmpmore=Meer
|
||||
vmpnone=Geen
|
||||
vmpnormal=Normaal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=WAD installeren
|
||||
wad2=Starten
|
||||
wad3=
|
||||
|
@ -169,6 +169,7 @@ cfgg61=Deflicker Filter
|
||||
cfgg62=Reload cached cover
|
||||
cfgg63=Converting cover please wait...
|
||||
cfgg64=Reset Settings to Defaults
|
||||
cfgg65=Video Width
|
||||
cfgg4=Patch country strings
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -487,6 +488,9 @@ vmpall=All
|
||||
vmpmore=More
|
||||
vmpnone=None
|
||||
vmpnormal=Normal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Install WAD
|
||||
wad2=Go
|
||||
wad3=
|
||||
|
@ -164,6 +164,7 @@ cfgg57=Non-Autorisé pour ce Disque!
|
||||
cfgg58=Résérvé aux Adultes
|
||||
cfgg59=Emulation BBA
|
||||
cfgg60=Profil Net BBA
|
||||
cfgg65=Video Width
|
||||
cfgg4=Patcher Jeux Import
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -469,6 +470,9 @@ vmpall=Tout
|
||||
vmpmore=Plus
|
||||
vmpnone=Aucun
|
||||
vmpnormal=Normal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Installer WAD
|
||||
wad2=Aller
|
||||
wad3=
|
||||
|
@ -168,6 +168,7 @@ cfgg58=Nur für Erwachsene
|
||||
cfgg59=BBA-Emulation
|
||||
cfgg60=BBA-Netzprofil
|
||||
cfgg61=Entflimmer-Filter
|
||||
cfgg65=Video Width
|
||||
cfgg4=Länder-Strings patchen
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -500,6 +501,9 @@ vmpall=Alle
|
||||
vmpmore=Mehr
|
||||
vmpnone=Keinen
|
||||
vmpnormal=Normal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=WAD Installieren
|
||||
wad2=Start
|
||||
wad3=
|
||||
|
@ -160,6 +160,7 @@ cfgg57=Non consentito per i dischi!
|
||||
cfgg58=solo adulti
|
||||
cfgg59=Emulazione BBA
|
||||
cfgg60=BBA Profilo di Rete
|
||||
cfgg65=Video Width
|
||||
cfgg7=Vipatch
|
||||
cfgg8=Indietro
|
||||
cfghb1=Impostazioni Homebrew
|
||||
@ -462,6 +463,9 @@ vmpall=Tutte
|
||||
vmpmore=Di più
|
||||
vmpnone=Nessuna
|
||||
vmpnormal=Normale
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Installa WAD
|
||||
wad2=Avvia
|
||||
wad3=Selezionato %s, dopo l'installazione ritornerai all'explorer
|
||||
|
@ -168,6 +168,7 @@ cfgg58=성인용
|
||||
cfgg59=BBA 에뮬레이션
|
||||
cfgg60=BBA 넷 프로파일
|
||||
cfgg61=디플리커 필터
|
||||
cfgg65=Video Width
|
||||
cfgg4=국가 문자열 패치
|
||||
cfgg5=오카리나
|
||||
cfgg6=
|
||||
@ -491,6 +492,9 @@ vmpall=모두
|
||||
vmpmore=더 많은
|
||||
vmpnone=없음
|
||||
vmpnormal=보통
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=WAD 설치
|
||||
wad2=가기
|
||||
wad3=
|
||||
|
@ -167,6 +167,7 @@ cfgg57=Niedozwolone przez płytę!
|
||||
cfgg58=Ustaw znacznik tylko dla dorosłych
|
||||
cfgg59=Emulacja BBA
|
||||
cfgg60=Profil Net BBA
|
||||
cfgg65=Video Width
|
||||
cfgg4=Spatchuj ustawienia kraju
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -481,6 +482,9 @@ vmpall=Wszystkie
|
||||
vmpmore=Więcej
|
||||
vmpnone=Żadne
|
||||
vmpnormal=Normal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Zainstaluj plik WAD
|
||||
wad2=Rozpocznij
|
||||
wad3=
|
||||
|
@ -169,6 +169,7 @@ cfgg61=Фильтр подавления мерцания
|
||||
cfgg62=Перезагрузить кэшированную обложку
|
||||
cfgg63=Конвертирование обложки, подождите...
|
||||
cfgg64=Сбросить настройки до значений по умолчанию
|
||||
cfgg65=Video Width
|
||||
cfgg4=Патч Country Strings
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -487,6 +488,9 @@ vmpall=Все
|
||||
vmpmore=Больше
|
||||
vmpnone=Отсутствует
|
||||
vmpnormal=Обычное
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Установить WAD
|
||||
wad2=Перейти
|
||||
wad3=
|
||||
|
@ -165,6 +165,7 @@ cfgg58=Solo para adultos
|
||||
cfgg59=Emulación BBA
|
||||
cfgg60=Perfil de red BBA
|
||||
cfgg61=Filtro Antiparpadeo de video
|
||||
cfgg65=Video Width
|
||||
cfgg4=Parchar cadenas de país
|
||||
cfgg5=Ocarina
|
||||
cfgg6=
|
||||
@ -480,6 +481,9 @@ vmpall=Todos
|
||||
vmpmore=Más
|
||||
vmpnone=Ninguno
|
||||
vmpnormal=Normal
|
||||
vw_auto=Auto
|
||||
vw_def=Default
|
||||
vw_frmbuf=Framebuffer
|
||||
wad1=Instalar WAD
|
||||
wad2=Empezar
|
||||
wad3=
|
||||
|
Loading…
Reference in New Issue
Block a user