mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-30 15:14:18 +01:00
- beta 4
- added 'no SSL only' as a private server choice (issue #217). this allows you to patch games on your own with other wifi server url's besides wiimmfi. - added private server as an option for nand wiiware games. - added 480p pixel patch as option for nand wiiware/vc games. seems to only work if apploader is set to ON. loading via main dol is broke for the time being.
This commit is contained in:
parent
96a89ba708
commit
ff94e73be8
Binary file not shown.
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 4.1 MiB |
@ -150,7 +150,8 @@ u32 LoadChannel(u64 title, bool dol, u32 *IOS)
|
|||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u8 bootType)
|
void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio,
|
||||||
|
u8 private_server, bool patchFix480p, u8 bootType)
|
||||||
{
|
{
|
||||||
bool hookpatched = false;
|
bool hookpatched = false;
|
||||||
for(u8 i = 0; i < dolchunkcount; i++)
|
for(u8 i = 0; i < dolchunkcount; i++)
|
||||||
@ -164,6 +165,8 @@ void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryStrin
|
|||||||
PatchCountryStrings(dolchunkoffset[i], dolchunksize[i]);
|
PatchCountryStrings(dolchunkoffset[i], dolchunksize[i]);
|
||||||
if(aspectRatio != -1)
|
if(aspectRatio != -1)
|
||||||
PatchAspectRatio(dolchunkoffset[i], dolchunksize[i], aspectRatio);
|
PatchAspectRatio(dolchunkoffset[i], dolchunksize[i], aspectRatio);
|
||||||
|
if(private_server)
|
||||||
|
PrivateServerPatcher(dolchunkoffset[i], dolchunksize[i], private_server);
|
||||||
if(hooktype != 0 && hookpatched == false)
|
if(hooktype != 0 && hookpatched == false)
|
||||||
hookpatched = dogamehooks(dolchunkoffset[i], dolchunksize[i], true);
|
hookpatched = dogamehooks(dolchunkoffset[i], dolchunksize[i], true);
|
||||||
DCFlushRange(dolchunkoffset[i], dolchunksize[i]);
|
DCFlushRange(dolchunkoffset[i], dolchunksize[i]);
|
||||||
@ -172,4 +175,7 @@ void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryStrin
|
|||||||
}
|
}
|
||||||
if(hookpatched)
|
if(hookpatched)
|
||||||
ocarina_do_code();
|
ocarina_do_code();
|
||||||
|
|
||||||
|
if(patchFix480p)
|
||||||
|
PatchFix480p();
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ typedef struct _dolheader
|
|||||||
} ATTRIBUTE_PACKED dolheader;
|
} ATTRIBUTE_PACKED dolheader;
|
||||||
|
|
||||||
void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString,
|
void PatchChannel(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString,
|
||||||
u8 patchVidModes, int aspectRatio, u8 bootType);
|
u8 patchVidModes, int aspectRatio, u8 private_server, bool patchFix480p, u8 bootType);
|
||||||
u32 LoadChannel(u64 title, bool dol, u32 *IOS);
|
u32 LoadChannel(u64 title, bool dol, u32 *IOS);
|
||||||
|
|
||||||
#endif /* __CHANHANDLE_HPP_ */
|
#endif /* __CHANHANDLE_HPP_ */
|
||||||
|
@ -30,31 +30,31 @@ struct the_CFG {
|
|||||||
u8 GameBootType;
|
u8 GameBootType;
|
||||||
WIP_Code *wip_list;
|
WIP_Code *wip_list;
|
||||||
u32 wip_count;
|
u32 wip_count;
|
||||||
bool use_led;
|
u32 *gameconf;
|
||||||
|
u32 gameconfsize;
|
||||||
|
void *codelist;
|
||||||
|
u8 *codelistend;
|
||||||
bool patchregion;
|
bool patchregion;
|
||||||
bool private_server;
|
|
||||||
bool patchFix480p;
|
|
||||||
/* needed for channels */
|
/* needed for channels */
|
||||||
u64 title;
|
u64 title;
|
||||||
bool use_dol;
|
bool use_dol;
|
||||||
/* General Stuff */
|
/* needed for both channels and wii games */
|
||||||
IOS_Info IOS;
|
IOS_Info IOS;
|
||||||
u8 BootType;
|
u8 BootType;
|
||||||
|
u8 configbytes[2];// [0] used for language. [1] not used
|
||||||
|
u8 countryString;
|
||||||
u8 vidMode;
|
u8 vidMode;
|
||||||
u8 patchVidMode;
|
u8 patchVidMode;
|
||||||
u8 configbytes[2];
|
|
||||||
u8 debugger;
|
|
||||||
u8 vipatch;
|
u8 vipatch;
|
||||||
u8 countryString;
|
s8 aspectRatio;
|
||||||
int aspectRatio;
|
bool patchFix480p;
|
||||||
void *codelist;
|
u8 private_server;
|
||||||
u8 *codelistend;
|
|
||||||
u8 *cheats;
|
u8 *cheats;
|
||||||
u32 cheatSize;
|
u32 cheatSize;
|
||||||
|
u8 debugger;
|
||||||
u32 hooktype;
|
u32 hooktype;
|
||||||
u32 *gameconf;
|
|
||||||
u32 gameconfsize;
|
|
||||||
u32 returnTo;
|
u32 returnTo;
|
||||||
|
bool use_led;
|
||||||
} ATTRIBUTE_PACKED;
|
} ATTRIBUTE_PACKED;
|
||||||
|
|
||||||
#endif /* _CFG_HPP_ */
|
#endif /* _CFG_HPP_ */
|
||||||
|
@ -29,13 +29,13 @@ static const char *GameID = (const char*)0x80000000;
|
|||||||
#define APPLDR_CODE 0x918
|
#define APPLDR_CODE 0x918
|
||||||
|
|
||||||
void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipatch,
|
void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipatch,
|
||||||
bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo, bool patchregion, bool private_server, u8 bootType);
|
bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo, bool patchregion, u8 private_server, u8 bootType);
|
||||||
static void patch_NoDiscinDrive(void *buffer, u32 len);
|
static void patch_NoDiscinDrive(void *buffer, u32 len);
|
||||||
static void Anti_002_fix(void *Address, int Size);
|
static void Anti_002_fix(void *Address, int Size);
|
||||||
static bool Remove_001_Protection(void *Address, int Size);
|
static bool Remove_001_Protection(void *Address, int Size);
|
||||||
static void PrinceOfPersiaPatch();
|
static void PrinceOfPersiaPatch();
|
||||||
static void NewSuperMarioBrosPatch();
|
static void NewSuperMarioBrosPatch();
|
||||||
static void MarioKartWiiWiimmfiPatch( bool server);
|
static void MarioKartWiiWiimmfiPatch(u8 server);
|
||||||
bool hookpatched = false;
|
bool hookpatched = false;
|
||||||
|
|
||||||
/* Thanks Tinyload */
|
/* Thanks Tinyload */
|
||||||
@ -49,7 +49,7 @@ static struct
|
|||||||
} apploader_hdr ATTRIBUTE_ALIGN(32);
|
} apploader_hdr ATTRIBUTE_ALIGN(32);
|
||||||
|
|
||||||
u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo,
|
u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo,
|
||||||
bool patchregion , bool private_server, bool patchFix480p, u8 bootType)
|
bool patchregion , u8 private_server, bool patchFix480p, u8 bootType)
|
||||||
{
|
{
|
||||||
PrinceOfPersiaPatch();
|
PrinceOfPersiaPatch();
|
||||||
NewSuperMarioBrosPatch();
|
NewSuperMarioBrosPatch();
|
||||||
@ -95,8 +95,12 @@ u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryStrin
|
|||||||
{
|
{
|
||||||
/* Read data from DVD */
|
/* Read data from DVD */
|
||||||
WDVD_Read(dst, len, offset);
|
WDVD_Read(dst, len, offset);
|
||||||
maindolpatches(dst, len, vidMode, vmode, vipatch, countryString,
|
// if server is wiimmfi and game is mario kart wii don't use private server. use MarioKartWiiWiimmfiPatch below
|
||||||
patchVidModes, aspectRatio, returnTo, patchregion, private_server, bootType);
|
if(private_server == PRIVSERV_WIIMMFI && memcmp("RMC", GameID, 3) == 0)// 2= wiimmfi
|
||||||
|
maindolpatches(dst, len, vidMode, vmode, vipatch, countryString, patchVidModes, aspectRatio, returnTo, patchregion, 0, bootType);
|
||||||
|
else
|
||||||
|
maindolpatches(dst, len, vidMode, vmode, vipatch, countryString, patchVidModes, aspectRatio, returnTo, patchregion, private_server, bootType);
|
||||||
|
|
||||||
DCFlushRange(dst, len);
|
DCFlushRange(dst, len);
|
||||||
ICInvalidateRange(dst, len);
|
ICInvalidateRange(dst, len);
|
||||||
prog(20);
|
prog(20);
|
||||||
@ -108,13 +112,13 @@ u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryStrin
|
|||||||
if(patchFix480p)
|
if(patchFix480p)
|
||||||
PatchFix480p();
|
PatchFix480p();
|
||||||
|
|
||||||
MarioKartWiiWiimmfiPatch(private_server);
|
MarioKartWiiWiimmfiPatch(private_server);// only done if wiimfi server and game is mario kart wii
|
||||||
|
|
||||||
/* Set entry point from apploader */
|
/* Set entry point from apploader */
|
||||||
return (u32)appldr_final();
|
return (u32)appldr_final();
|
||||||
}
|
}
|
||||||
|
|
||||||
void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo, bool patchregion , bool private_server, u8 bootType)
|
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, u8 bootType)
|
||||||
{
|
{
|
||||||
do_wip_code((u8 *)dst, len);
|
do_wip_code((u8 *)dst, len);
|
||||||
Remove_001_Protection(dst, len);
|
Remove_001_Protection(dst, len);
|
||||||
@ -143,7 +147,7 @@ void maindolpatches(void *dst, int len, u8 vidMode, GXRModeObj *vmode, bool vipa
|
|||||||
if(patchregion)
|
if(patchregion)
|
||||||
PatchRegion(dst, len);
|
PatchRegion(dst, len);
|
||||||
if(private_server)
|
if(private_server)
|
||||||
PrivateServerPatcher(dst,len);
|
PrivateServerPatcher(dst,len, private_server);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void patch_NoDiscinDrive(void *buffer, u32 len)
|
static void patch_NoDiscinDrive(void *buffer, u32 len)
|
||||||
@ -175,9 +179,9 @@ static void Anti_002_fix(void *Address, int Size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MarioKartWiiWiimmfiPatch( bool server) {
|
static void MarioKartWiiWiimmfiPatch(u8 server) {
|
||||||
if(memcmp("RMC", GameID, 3) != 0) return; // This isn't MKWii
|
if(memcmp("RMC", GameID, 3) != 0) return; // This isn't MKWii
|
||||||
if(server == 0) return; // no Wiimmfi patch wanted
|
if(server != PRIVSERV_WIIMMFI) return; // no Wiimmfi patch wanted
|
||||||
|
|
||||||
do_new_wiimmfi();
|
do_new_wiimmfi();
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,16 @@ extern "C" {
|
|||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo,
|
u32 Apploader_Run(u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo,
|
||||||
bool patchregion, bool private_server, bool patchFix480p, u8 bootType);
|
bool patchregion, u8 private_server, bool patchFix480p, u8 bootType);
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PRIVSERV_OFF,
|
||||||
|
PRIVSERV_NOSSL,
|
||||||
|
PRIVSERV_WIIMMFI,
|
||||||
|
PRIVSERV_MAX_CHOICE
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -117,8 +117,8 @@ int main()
|
|||||||
*Disc_ID = TITLE_LOWER(normalCFG.title);
|
*Disc_ID = TITLE_LOWER(normalCFG.title);
|
||||||
vmode = Disc_SelectVMode(normalCFG.vidMode, &vmode_reg);
|
vmode = Disc_SelectVMode(normalCFG.vidMode, &vmode_reg);
|
||||||
AppEntrypoint = LoadChannel(normalCFG.title, normalCFG.use_dol, &GameIOS);
|
AppEntrypoint = LoadChannel(normalCFG.title, normalCFG.use_dol, &GameIOS);
|
||||||
PatchChannel(normalCFG.vidMode, vmode, normalCFG.vipatch, normalCFG.countryString,
|
PatchChannel(normalCFG.vidMode, vmode, normalCFG.vipatch, normalCFG.countryString, normalCFG.patchVidMode, normalCFG.aspectRatio,
|
||||||
normalCFG.patchVidMode, normalCFG.aspectRatio, normalCFG.BootType);
|
normalCFG.private_server, normalCFG.patchFix480p, normalCFG.BootType);
|
||||||
ISFS_Deinitialize();
|
ISFS_Deinitialize();
|
||||||
}
|
}
|
||||||
gprintf("Entrypoint: %08x, Requested Game IOS: %i\n", AppEntrypoint, GameIOS);
|
gprintf("Entrypoint: %08x, Requested Game IOS: %i\n", AppEntrypoint, GameIOS);
|
||||||
@ -129,6 +129,9 @@ int main()
|
|||||||
if(normalCFG.BootType == TYPE_CHANNEL && AppEntrypoint != 0x3400)
|
if(normalCFG.BootType == TYPE_CHANNEL && AppEntrypoint != 0x3400)
|
||||||
Disc_SetLowMemChan(); /* Real DOL without appldr */
|
Disc_SetLowMemChan(); /* Real DOL without appldr */
|
||||||
|
|
||||||
|
/* Enable front LED if requested */
|
||||||
|
if(normalCFG.use_led) *HW_GPIOB_OUT |= 0x20;
|
||||||
|
|
||||||
/* Set an appropriate video mode */
|
/* Set an appropriate video mode */
|
||||||
Disc_SetVMode(vmode, vmode_reg);
|
Disc_SetVMode(vmode, vmode_reg);
|
||||||
|
|
||||||
@ -137,9 +140,6 @@ int main()
|
|||||||
__IOS_ShutdownSubsystems();
|
__IOS_ShutdownSubsystems();
|
||||||
__exception_closeall();
|
__exception_closeall();
|
||||||
|
|
||||||
/* Enable front LED if requested */
|
|
||||||
if(normalCFG.use_led) *HW_GPIOB_OUT |= 0x20;
|
|
||||||
|
|
||||||
/* Originally from tueidj - taken from NeoGamma (thx) */
|
/* Originally from tueidj - taken from NeoGamma (thx) */
|
||||||
*(vu32*)0xCC003024 = 1;
|
*(vu32*)0xCC003024 = 1;
|
||||||
|
|
||||||
|
@ -643,7 +643,7 @@ void PatchRegion(void *Address, int Size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Patch URLs for private Servers - Thanks to ULGX **/
|
/** Patch URLs for private Servers - Thanks to ULGX **/
|
||||||
void PrivateServerPatcher(void *addr, u32 len)
|
void PrivateServerPatcher(void *addr, u32 len, u8 private_server)
|
||||||
{
|
{
|
||||||
// Patch protocol https -> http
|
// Patch protocol https -> http
|
||||||
char *cur = (char *)addr;
|
char *cur = (char *)addr;
|
||||||
@ -659,6 +659,7 @@ void PrivateServerPatcher(void *addr, u32 len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (++cur < end);
|
while (++cur < end);
|
||||||
|
if(private_server == PRIVSERV_WIIMMFI)
|
||||||
domainpatcher(addr, len, "wiimmfi.de");
|
domainpatcher(addr, len, "wiimmfi.de");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -852,7 +853,7 @@ u32 do_new_wiimmfi() {
|
|||||||
strncpy(patched, (char *)&patcher, 42);
|
strncpy(patched, (char *)&patcher, 42);
|
||||||
|
|
||||||
// Do the plain old patching with the string search
|
// Do the plain old patching with the string search
|
||||||
PrivateServerPatcher((void*)0x80004000, 0x385200);
|
PrivateServerPatcher((void*)0x80004000, 0x385200, PRIVSERV_WIIMMFI);
|
||||||
|
|
||||||
// Replace some URLs for Wiimmfi's new update system
|
// Replace some URLs for Wiimmfi's new update system
|
||||||
char newURL1[] = "http://ca.nas.wiimmfi.de/ca";
|
char newURL1[] = "http://ca.nas.wiimmfi.de/ca";
|
||||||
|
@ -42,7 +42,7 @@ s32 BlockIOSReload(void);
|
|||||||
void PatchRegion(void *Address, int Size);
|
void PatchRegion(void *Address, int Size);
|
||||||
void PatchFix480p();
|
void PatchFix480p();
|
||||||
u32 do_new_wiimmfi();
|
u32 do_new_wiimmfi();
|
||||||
void PrivateServerPatcher(void *addr, u32 len);
|
void PrivateServerPatcher(void *addr, u32 len, u8 private_server);
|
||||||
void domainpatcher(void *addr, u32 len, const char* domain);
|
void domainpatcher(void *addr, u32 len, const char* domain);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -30,31 +30,31 @@ struct the_CFG {
|
|||||||
u8 GameBootType;
|
u8 GameBootType;
|
||||||
WIP_Code *wip_list;
|
WIP_Code *wip_list;
|
||||||
u32 wip_count;
|
u32 wip_count;
|
||||||
bool use_led;
|
u32 *gameconf;
|
||||||
|
u32 gameconfsize;
|
||||||
|
void *codelist;
|
||||||
|
u8 *codelistend;
|
||||||
bool patchregion;
|
bool patchregion;
|
||||||
bool private_server;
|
|
||||||
bool patchFix480p;
|
|
||||||
/* needed for channels */
|
/* needed for channels */
|
||||||
u64 title;
|
u64 title;
|
||||||
bool use_dol;
|
bool use_dol;
|
||||||
/* General Stuff */
|
/* needed for both channels and wii games */
|
||||||
IOS_Info IOS;
|
IOS_Info IOS;
|
||||||
u8 BootType;
|
u8 BootType;
|
||||||
|
u8 configbytes[2];// [0] used for language. [1] not used
|
||||||
|
u8 countryString;
|
||||||
u8 vidMode;
|
u8 vidMode;
|
||||||
u8 patchVidMode;
|
u8 patchVidMode;
|
||||||
u8 configbytes[2];
|
|
||||||
u8 debugger;
|
|
||||||
u8 vipatch;
|
u8 vipatch;
|
||||||
u8 countryString;
|
s8 aspectRatio;
|
||||||
int aspectRatio;
|
bool patchFix480p;
|
||||||
void *codelist;
|
u8 private_server;
|
||||||
u8 *codelistend;
|
|
||||||
u8 *cheats;
|
u8 *cheats;
|
||||||
u32 cheatSize;
|
u32 cheatSize;
|
||||||
|
u8 debugger;
|
||||||
u32 hooktype;
|
u32 hooktype;
|
||||||
u32 *gameconf;
|
|
||||||
u32 gameconfsize;
|
|
||||||
u32 returnTo;
|
u32 returnTo;
|
||||||
|
bool use_led;
|
||||||
} ATTRIBUTE_PACKED;
|
} ATTRIBUTE_PACKED;
|
||||||
|
|
||||||
#endif /* _CFG_HPP_ */
|
#endif /* _CFG_HPP_ */
|
||||||
|
@ -61,14 +61,16 @@ extern u32 *gameconf;
|
|||||||
u8 *booter_ptr = NULL;
|
u8 *booter_ptr = NULL;
|
||||||
u32 booter_size = 0;
|
u32 booter_size = 0;
|
||||||
|
|
||||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode,
|
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, s8 aspectRatio, u8 private_server, bool patchFix480p,
|
||||||
int aspectRatio, u32 returnTo, u8 BootType, bool use_led)
|
u32 returnTo, u8 BootType, bool use_led)
|
||||||
{
|
{
|
||||||
normalCFG.vidMode = vidMode;
|
normalCFG.vidMode = vidMode;
|
||||||
normalCFG.vipatch = vipatch;
|
normalCFG.vipatch = vipatch;
|
||||||
normalCFG.countryString = countryString;
|
normalCFG.countryString = countryString;
|
||||||
normalCFG.patchVidMode = patchVidMode;
|
normalCFG.patchVidMode = patchVidMode;
|
||||||
normalCFG.aspectRatio = aspectRatio;
|
normalCFG.aspectRatio = aspectRatio;
|
||||||
|
normalCFG.private_server = private_server;
|
||||||
|
normalCFG.patchFix480p = patchFix480p;
|
||||||
normalCFG.returnTo = returnTo;
|
normalCFG.returnTo = returnTo;
|
||||||
normalCFG.configbytes[0] = configbytes[0];
|
normalCFG.configbytes[0] = configbytes[0];
|
||||||
normalCFG.configbytes[1] = configbytes[1];
|
normalCFG.configbytes[1] = configbytes[1];
|
||||||
@ -124,7 +126,7 @@ bool ExternalBooter_LoadBins(const char *binDir)
|
|||||||
extern FragList *frag_list;
|
extern FragList *frag_list;
|
||||||
extern s32 wbfsDev;
|
extern s32 wbfsDev;
|
||||||
extern u32 wbfs_part_idx;
|
extern u32 wbfs_part_idx;
|
||||||
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, bool patchregion, bool private_server, bool patchFix480p, const char *ID)
|
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, bool patchregion, const char *ID)
|
||||||
{
|
{
|
||||||
memset(&normalCFG, 0, sizeof(the_CFG));
|
memset(&normalCFG, 0, sizeof(the_CFG));
|
||||||
normalCFG.GameBootType = dvd ? TYPE_WII_DISC : (wbfs ? TYPE_WII_WBFS : TYPE_WII_WBFS_EXT);
|
normalCFG.GameBootType = dvd ? TYPE_WII_DISC : (wbfs ? TYPE_WII_WBFS : TYPE_WII_WBFS_EXT);
|
||||||
@ -133,8 +135,6 @@ void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, bool patchregion, bool pri
|
|||||||
normalCFG.wbfsDevice = wbfsDev;
|
normalCFG.wbfsDevice = wbfsDev;
|
||||||
normalCFG.wbfsPart = wbfs_part_idx;
|
normalCFG.wbfsPart = wbfs_part_idx;
|
||||||
normalCFG.patchregion = patchregion;
|
normalCFG.patchregion = patchregion;
|
||||||
normalCFG.private_server = private_server;
|
|
||||||
normalCFG.patchFix480p = patchFix480p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalBooter_ChannelSetup(u64 title, bool dol)
|
void ExternalBooter_ChannelSetup(u64 title, bool dol)
|
||||||
|
@ -28,11 +28,11 @@ extern u32 hooktype;
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode,
|
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, s8 aspectRatio, u8 private_server, bool patchFix480p,
|
||||||
int aspectRatio, u32 returnTo, u8 BootType, bool use_led);
|
u32 returnTo, u8 BootType, bool use_led);
|
||||||
bool ExternalBooter_LoadBins(const char *binDir);
|
bool ExternalBooter_LoadBins(const char *binDir);
|
||||||
void ExternalBooter_ChannelSetup(u64 title, bool dol);
|
void ExternalBooter_ChannelSetup(u64 title, bool dol);
|
||||||
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, bool patchregion, bool private_server, bool patchFix480p, const char *ID);
|
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, bool patchregion, const char *ID);
|
||||||
void ShutdownBeforeExit(void);
|
void ShutdownBeforeExit(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#define APP_NAME "WiiFlow WFL"
|
#define APP_NAME "WiiFlow WFL"
|
||||||
#define APP_VERSION "5.4.9 beta 2"
|
#define APP_VERSION "5.4.9 beta 4"
|
||||||
|
|
||||||
#define APP_DATA_DIR "wiiflow"
|
#define APP_DATA_DIR "wiiflow"
|
||||||
#define APPS_DIR "apps/wiiflow"
|
#define APPS_DIR "apps/wiiflow"
|
||||||
|
@ -583,7 +583,9 @@ private:
|
|||||||
s16 m_gameSettingsBtnCountryPatch;
|
s16 m_gameSettingsBtnCountryPatch;
|
||||||
|
|
||||||
s16 m_gameSettingsLblPrivateServer;
|
s16 m_gameSettingsLblPrivateServer;
|
||||||
s16 m_gameSettingsBtnPrivateServer;
|
s16 m_gameSettingsLblPrivateServerVal;
|
||||||
|
s16 m_gameSettingsBtnPrivateServerM;
|
||||||
|
s16 m_gameSettingsBtnPrivateServerP;
|
||||||
|
|
||||||
s16 m_gameSettingsLblFix480p;
|
s16 m_gameSettingsLblFix480p;
|
||||||
s16 m_gameSettingsBtnFix480p;
|
s16 m_gameSettingsBtnFix480p;
|
||||||
@ -1307,6 +1309,7 @@ private:
|
|||||||
static const SOption _debugger[3];
|
static const SOption _debugger[3];
|
||||||
static const SOption _hooktype[8];
|
static const SOption _hooktype[8];
|
||||||
static const SOption _exitTo[3];
|
static const SOption _exitTo[3];
|
||||||
|
static const SOption _privateServer[3];
|
||||||
|
|
||||||
static int _version[9];
|
static int _version[9];
|
||||||
static const SCFParamDesc _cfParams[];
|
static const SCFParamDesc _cfParams[];
|
||||||
|
@ -12,6 +12,158 @@ u8 GCLoader = 0;
|
|||||||
int videoScale, videoOffset;
|
int videoScale, videoOffset;
|
||||||
const dir_discHdr *GameHdr;
|
const dir_discHdr *GameHdr;
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GlobalVideoModes[6] = {
|
||||||
|
{ "vidgame", L"Game" },
|
||||||
|
{ "vidsys", L"System" },
|
||||||
|
{ "vidp50", L"PAL 50Hz" },
|
||||||
|
{ "vidp60", L"PAL 60Hz" },
|
||||||
|
{ "vidntsc", L"NTSC" },
|
||||||
|
{ "vidprog", L"Progressive" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_VideoModes[7] = {
|
||||||
|
{ "viddef", L"Default" },
|
||||||
|
{ "vidgame", L"Game" },
|
||||||
|
{ "vidsys", L"System" },
|
||||||
|
{ "vidp50", L"PAL 50Hz" },
|
||||||
|
{ "vidp60", L"PAL 60Hz" },
|
||||||
|
{ "vidntsc", L"NTSC" },
|
||||||
|
{ "vidprog", L"Progressive" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GlobalGCvideoModes[6] = {
|
||||||
|
{ "vidgame", L"Game" },
|
||||||
|
{ "vidp50", L"PAL 50Hz" },
|
||||||
|
{ "vidp60", L"PAL 60Hz" },
|
||||||
|
{ "vidntsc", L"NTSC" },
|
||||||
|
{ "DMLmpal", L"MPAL" },
|
||||||
|
{ "vidprog", L"Progressive" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GCvideoModes[7] = {
|
||||||
|
{ "viddef", L"Default" },
|
||||||
|
{ "vidgame", L"Game" },
|
||||||
|
{ "vidp50", L"PAL 50Hz" },
|
||||||
|
{ "vidp60", L"PAL 60Hz" },
|
||||||
|
{ "vidntsc", L"NTSC" },
|
||||||
|
{ "DMLmpal", L"MPAL" },
|
||||||
|
{ "vidprog", L"Progressive" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_languages[11] = {
|
||||||
|
{ "lngdef", L"Default" },// next should be console
|
||||||
|
{ "lngjap", L"Japanese" },
|
||||||
|
{ "lngeng", L"English" },
|
||||||
|
{ "lngger", L"German" },
|
||||||
|
{ "lngfre", L"French" },
|
||||||
|
{ "lngspa", L"Spanish" },
|
||||||
|
{ "lngita", L"Italian" },
|
||||||
|
{ "lngdut", L"Dutch" },
|
||||||
|
{ "lngsch", L"S. Chinese" },
|
||||||
|
{ "lngtch", L"T. Chinese" },
|
||||||
|
{ "lngkor", L"Korean" }
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GlobalGClanguages[7] = {
|
||||||
|
{ "lngsys", L"System" },
|
||||||
|
{ "lngeng", L"English" },
|
||||||
|
{ "lngger", L"German" },
|
||||||
|
{ "lngfre", L"French" },
|
||||||
|
{ "lngspa", L"Spanish" },
|
||||||
|
{ "lngita", L"Italian" },
|
||||||
|
{ "lngdut", L"Dutch" }
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GClanguages[8] = {
|
||||||
|
{ "lngdef", L"Default" },
|
||||||
|
{ "lngsys", L"System" },
|
||||||
|
{ "lngeng", L"English" },
|
||||||
|
{ "lngger", L"German" },
|
||||||
|
{ "lngfre", L"French" },
|
||||||
|
{ "lngspa", L"Spanish" },
|
||||||
|
{ "lngita", L"Italian" },
|
||||||
|
{ "lngdut", L"Dutch" }
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_ChannelsType[3] = {
|
||||||
|
{ "ChanReal", L"Real NAND" },
|
||||||
|
{ "ChanEmu", L"Emu NAND" },
|
||||||
|
{ "ChanBoth", L"Both" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_NandEmu[2] = {
|
||||||
|
{ "NANDpart", L"Partial" },
|
||||||
|
{ "NANDfull", L"Full" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GlobalSaveEmu[3] = {
|
||||||
|
{ "SaveOffG", L"Off" },
|
||||||
|
{ "SavePartG", L"Game save" },
|
||||||
|
{ "SaveFullG", L"Full" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_SaveEmu[4] = {
|
||||||
|
{ "SaveDef", L"Default" },
|
||||||
|
{ "SaveOff", L"Off" },
|
||||||
|
{ "SavePart", L"Game save" },
|
||||||
|
{ "SaveFull", L"Full" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_AspectRatio[3] = {
|
||||||
|
{ "aspectDef", L"Default" },
|
||||||
|
{ "aspect43", L"Force 4:3" },
|
||||||
|
{ "aspect169", L"Force 16:9" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_NinEmuCard[5] = {
|
||||||
|
{ "NinMCDef", L"Default" },
|
||||||
|
{ "NinMCOff", L"Disabled" },
|
||||||
|
{ "NinMCon", L"Enabled" },
|
||||||
|
{ "NinMCMulti", L"Multi Saves" },
|
||||||
|
{ "NinMCdebug", L"Debug" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GlobalGCLoaders[2] = {
|
||||||
|
{ "GC_Devo", L"Devolution" },
|
||||||
|
{ "GC_Nindnt", L"Nintendont" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_GCLoader[3] = {
|
||||||
|
{ "GC_Def", L"Default" },
|
||||||
|
{ "GC_Devo", L"Devolution" },
|
||||||
|
{ "GC_Nindnt", L"Nintendont" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_vidModePatch[4] = {
|
||||||
|
{ "vmpnone", L"None" },
|
||||||
|
{ "vmpnormal", L"Normal" },
|
||||||
|
{ "vmpmore", L"More" },
|
||||||
|
{ "vmpall", L"All" }
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_hooktype[8] = {
|
||||||
|
{ "hook_auto", L"AUTO" },
|
||||||
|
{ "hooktype1", L"VBI" },
|
||||||
|
{ "hooktype2", L"KPAD read" },
|
||||||
|
{ "hooktype3", L"Joypad" },
|
||||||
|
{ "hooktype4", L"GXDraw" },
|
||||||
|
{ "hooktype5", L"GXFlush" },
|
||||||
|
{ "hooktype6", L"OSSleepThread" },
|
||||||
|
{ "hooktype7", L"AXNextFrame" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_debugger[3] = {
|
||||||
|
{ "disabled", L"Disabled" },
|
||||||
|
{ "dbg_gecko", L"Gecko" },
|
||||||
|
{ "dbgfwrite", L"OSReport" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const CMenu::SOption CMenu::_privateServer[3] = {
|
||||||
|
{ "off", L"Off" },
|
||||||
|
{ "ps_nossl", L"No SSL only" },
|
||||||
|
{ "ps_wiimmfi", L"wiimmfi" },
|
||||||
|
};
|
||||||
|
|
||||||
template <class T> static inline T loopNum(T i, T s)
|
template <class T> static inline T loopNum(T i, T s)
|
||||||
{
|
{
|
||||||
return (i + s) % s;
|
return (i + s) % s;
|
||||||
@ -77,7 +229,9 @@ void CMenu::_hideGameSettingsPg(bool instant)
|
|||||||
m_btnMgr.hide(m_gameSettingsLblFlashSave, instant);
|
m_btnMgr.hide(m_gameSettingsLblFlashSave, instant);
|
||||||
m_btnMgr.hide(m_gameSettingsBtnFlashSave, instant);
|
m_btnMgr.hide(m_gameSettingsBtnFlashSave, instant);
|
||||||
m_btnMgr.hide(m_gameSettingsLblPrivateServer, instant);
|
m_btnMgr.hide(m_gameSettingsLblPrivateServer, instant);
|
||||||
m_btnMgr.hide(m_gameSettingsBtnPrivateServer, instant);
|
m_btnMgr.hide(m_gameSettingsLblPrivateServerVal, instant);
|
||||||
|
m_btnMgr.hide(m_gameSettingsBtnPrivateServerP, instant);
|
||||||
|
m_btnMgr.hide(m_gameSettingsBtnPrivateServerM, instant);
|
||||||
m_btnMgr.hide(m_gameSettingsLblFix480p, instant);
|
m_btnMgr.hide(m_gameSettingsLblFix480p, instant);
|
||||||
m_btnMgr.hide(m_gameSettingsBtnFix480p, instant);
|
m_btnMgr.hide(m_gameSettingsBtnFix480p, instant);
|
||||||
//All
|
//All
|
||||||
@ -406,14 +560,16 @@ void CMenu::_showGameSettings()
|
|||||||
m_btnMgr.show(m_gameSettingsLblLED);
|
m_btnMgr.show(m_gameSettingsLblLED);
|
||||||
m_btnMgr.show(m_gameSettingsBtnLED);
|
m_btnMgr.show(m_gameSettingsBtnLED);
|
||||||
|
|
||||||
if(GameHdr->type == TYPE_WII_GAME)
|
//if(GameHdr->type == TYPE_WII_GAME)
|
||||||
{
|
//{
|
||||||
m_btnMgr.show(m_gameSettingsLblPrivateServer);
|
m_btnMgr.show(m_gameSettingsLblPrivateServer);
|
||||||
m_btnMgr.show(m_gameSettingsBtnPrivateServer);
|
m_btnMgr.show(m_gameSettingsLblPrivateServerVal);
|
||||||
|
m_btnMgr.show(m_gameSettingsBtnPrivateServerP);
|
||||||
|
m_btnMgr.show(m_gameSettingsBtnPrivateServerM);
|
||||||
|
|
||||||
m_btnMgr.show(m_gameSettingsLblFix480p);
|
m_btnMgr.show(m_gameSettingsLblFix480p);
|
||||||
m_btnMgr.show(m_gameSettingsBtnFix480p);
|
m_btnMgr.show(m_gameSettingsBtnFix480p);
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(m_gameSettingsPage == 6)
|
if(m_gameSettingsPage == 6)
|
||||||
@ -482,7 +638,9 @@ void CMenu::_showGameSettings()
|
|||||||
{
|
{
|
||||||
m_btnMgr.setText(m_gameSettingsBtnVipatch, _optBoolToString(m_gcfg2.getOptBool(id, "vipatch", 0)));
|
m_btnMgr.setText(m_gameSettingsBtnVipatch, _optBoolToString(m_gcfg2.getOptBool(id, "vipatch", 0)));
|
||||||
m_btnMgr.setText(m_gameSettingsBtnCountryPatch, _optBoolToString(m_gcfg2.getOptBool(id, "country_patch", 0)));
|
m_btnMgr.setText(m_gameSettingsBtnCountryPatch, _optBoolToString(m_gcfg2.getOptBool(id, "country_patch", 0)));
|
||||||
m_btnMgr.setText(m_gameSettingsBtnPrivateServer, _optBoolToString(m_gcfg2.getOptBool(id, "private_server", 0)));
|
i = min(m_gcfg2.getUInt(id, "private_server", 0), ARRAY_SIZE(CMenu::_privateServer) - 1u);
|
||||||
|
m_btnMgr.setText(m_gameSettingsLblPrivateServerVal, _t(CMenu::_privateServer[i].id, CMenu::_privateServer[i].text));
|
||||||
|
|
||||||
m_btnMgr.setText(m_gameSettingsBtnFix480p, _optBoolToString(m_gcfg2.getOptBool(id, "fix480p", 2)));
|
m_btnMgr.setText(m_gameSettingsBtnFix480p, _optBoolToString(m_gcfg2.getOptBool(id, "fix480p", 2)));
|
||||||
m_btnMgr.setText(m_gameSettingsBtnCustom, _optBoolToString(m_gcfg2.getOptBool(id, "custom", 0)));
|
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_gameSettingsBtnLaunchNK, _optBoolToString(m_gcfg2.getOptBool(id, "useneek", 0)));
|
||||||
@ -828,9 +986,10 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc)
|
|||||||
m_gcfg2.setInt(id, "net_profile", loopNum(m_gcfg2.getInt(id, "net_profile") + direction, 4));
|
m_gcfg2.setInt(id, "net_profile", loopNum(m_gcfg2.getInt(id, "net_profile") + direction, 4));
|
||||||
_showGameSettings();
|
_showGameSettings();
|
||||||
}
|
}
|
||||||
else if(m_btnMgr.selected(m_gameSettingsBtnPrivateServer))
|
else if(m_btnMgr.selected(m_gameSettingsBtnPrivateServerP) || m_btnMgr.selected(m_gameSettingsBtnPrivateServerM))
|
||||||
{
|
{
|
||||||
m_gcfg2.setBool(id, "private_server", !m_gcfg2.getBool(id, "private_server", 0));
|
s8 direction = m_btnMgr.selected(m_gameSettingsBtnPrivateServerP) ? 1 : -1;
|
||||||
|
m_gcfg2.setInt(id, "private_server", loopNum(m_gcfg2.getUInt(id, "private_server") + direction, ARRAY_SIZE(CMenu::_privateServer)));
|
||||||
_showGameSettings();
|
_showGameSettings();
|
||||||
}
|
}
|
||||||
else if(m_btnMgr.selected(m_gameSettingsBtnFix480p))
|
else if(m_btnMgr.selected(m_gameSettingsBtnFix480p))
|
||||||
@ -1005,7 +1164,9 @@ void CMenu::_initGameSettingsMenu()
|
|||||||
m_gameSettingsBtnLED = _addButton("GAME_SETTINGS/LED_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor);
|
m_gameSettingsBtnLED = _addButton("GAME_SETTINGS/LED_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor);
|
||||||
|
|
||||||
m_gameSettingsLblPrivateServer = _addLabel("GAME_SETTINGS/PRIVATE_SERVER", theme.lblFont, L"", 20, 185, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
m_gameSettingsLblPrivateServer = _addLabel("GAME_SETTINGS/PRIVATE_SERVER", theme.lblFont, L"", 20, 185, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||||
m_gameSettingsBtnPrivateServer = _addButton("GAME_SETTINGS/PRIVATE_SERVER_BTN", theme.btnFont, L"", 420, 190, 200, 48, theme.btnFontColor);
|
m_gameSettingsLblPrivateServerVal = _addLabel("GAME_SETTINGS/PRIVATE_SERVER_BTN", theme.btnFont, L"", 468, 190, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
||||||
|
m_gameSettingsBtnPrivateServerM = _addPicButton("GAME_SETTINGS/PRIVATE_SERVER_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 420, 190, 48, 48);
|
||||||
|
m_gameSettingsBtnPrivateServerP = _addPicButton("GAME_SETTINGS/PRIVATE_SERVER_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 572, 190, 48, 48);
|
||||||
|
|
||||||
m_gameSettingsLblFix480p = _addLabel("GAME_SETTINGS/FIX480P", theme.lblFont, L"", 20, 245, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
m_gameSettingsLblFix480p = _addLabel("GAME_SETTINGS/FIX480P", theme.lblFont, L"", 20, 245, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||||
m_gameSettingsBtnFix480p = _addButton("GAME_SETTINGS/FIX480P_BTN", theme.btnFont, L"", 420, 250, 200, 48, theme.btnFontColor);
|
m_gameSettingsBtnFix480p = _addButton("GAME_SETTINGS/FIX480P_BTN", theme.btnFont, L"", 420, 250, 200, 48, theme.btnFontColor);
|
||||||
@ -1067,7 +1228,9 @@ void CMenu::_initGameSettingsMenu()
|
|||||||
_setHideAnim(m_gameSettingsBtnCountryPatch, "GAME_SETTINGS/COUNTRY_PATCH_BTN", -50, 0, 1.f, 0.f);
|
_setHideAnim(m_gameSettingsBtnCountryPatch, "GAME_SETTINGS/COUNTRY_PATCH_BTN", -50, 0, 1.f, 0.f);
|
||||||
|
|
||||||
_setHideAnim(m_gameSettingsLblPrivateServer, "GAME_SETTINGS/PRIVATE_SERVER", 50, 0, -2.f, 0.f);
|
_setHideAnim(m_gameSettingsLblPrivateServer, "GAME_SETTINGS/PRIVATE_SERVER", 50, 0, -2.f, 0.f);
|
||||||
_setHideAnim(m_gameSettingsBtnPrivateServer, "GAME_SETTINGS/PRIVATE_SERVER_BTN", -50, 0, 1.f, 0.f);
|
_setHideAnim(m_gameSettingsLblPrivateServerVal, "GAME_SETTINGS/PRIVATE_SERVER_BTN", -50, 0, 1.f, 0.f);
|
||||||
|
_setHideAnim(m_gameSettingsBtnPrivateServerM, "GAME_SETTINGS/PRIVATE_SERVER_MINUS", -50, 0, 1.f, 0.f);
|
||||||
|
_setHideAnim(m_gameSettingsBtnPrivateServerP, "GAME_SETTINGS/PRIVATE_SERVER_PLUS", -50, 0, 1.f, 0.f);
|
||||||
|
|
||||||
_setHideAnim(m_gameSettingsLblFix480p, "GAME_SETTINGS/FIX480P", 50, 0, -2.f, 0.f);
|
_setHideAnim(m_gameSettingsLblFix480p, "GAME_SETTINGS/FIX480P", 50, 0, -2.f, 0.f);
|
||||||
_setHideAnim(m_gameSettingsBtnFix480p, "GAME_SETTINGS/FIX480P_BTN", -50, 0, 1.f, 0.f);
|
_setHideAnim(m_gameSettingsBtnFix480p, "GAME_SETTINGS/FIX480P_BTN", -50, 0, 1.f, 0.f);
|
||||||
@ -1233,7 +1396,7 @@ void CMenu::_textGameSettings(void)
|
|||||||
|
|
||||||
m_btnMgr.setText(m_gameSettingsLblFlashSave, _t("cfgg32", L"Flash Save to NAND"));
|
m_btnMgr.setText(m_gameSettingsLblFlashSave, _t("cfgg32", L"Flash Save to NAND"));
|
||||||
m_btnMgr.setText(m_gameSettingsBtnFlashSave, _t("cfgg33", L"Flash"));
|
m_btnMgr.setText(m_gameSettingsBtnFlashSave, _t("cfgg33", L"Flash"));
|
||||||
m_btnMgr.setText(m_gameSettingsLblPrivateServer, _t("cfgg45", L"Private Server (Wiimmfi)"));
|
m_btnMgr.setText(m_gameSettingsLblPrivateServer, _t("cfgg45", L"Private Server"));
|
||||||
m_btnMgr.setText(m_gameSettingsLblFix480p, _t("cfgg49", L"480p Pixel Patch"));
|
m_btnMgr.setText(m_gameSettingsLblFix480p, _t("cfgg49", L"480p Pixel Patch"));
|
||||||
m_btnMgr.setText(m_gameSettingsLblWidth, _t("cfgg54", L"Video Width"));
|
m_btnMgr.setText(m_gameSettingsLblWidth, _t("cfgg54", L"Video Width"));
|
||||||
m_btnMgr.setText(m_gameSettingsLblPos, _t("cfgg55", L"Video Position"));
|
m_btnMgr.setText(m_gameSettingsLblPos, _t("cfgg55", L"Video Position"));
|
||||||
|
@ -18,152 +18,6 @@ s16 m_gameLblSnapBg;
|
|||||||
s16 m_gameLblSnapFrame;
|
s16 m_gameLblSnapFrame;
|
||||||
s16 m_gameLblBannerFrame;
|
s16 m_gameLblBannerFrame;
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GlobalVideoModes[6] = {
|
|
||||||
{ "vidgame", L"Game" },
|
|
||||||
{ "vidsys", L"System" },
|
|
||||||
{ "vidp50", L"PAL 50Hz" },
|
|
||||||
{ "vidp60", L"PAL 60Hz" },
|
|
||||||
{ "vidntsc", L"NTSC" },
|
|
||||||
{ "vidprog", L"Progressive" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_VideoModes[7] = {
|
|
||||||
{ "viddef", L"Default" },
|
|
||||||
{ "vidgame", L"Game" },
|
|
||||||
{ "vidsys", L"System" },
|
|
||||||
{ "vidp50", L"PAL 50Hz" },
|
|
||||||
{ "vidp60", L"PAL 60Hz" },
|
|
||||||
{ "vidntsc", L"NTSC" },
|
|
||||||
{ "vidprog", L"Progressive" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GlobalGCvideoModes[6] = {
|
|
||||||
{ "vidgame", L"Game" },
|
|
||||||
{ "vidp50", L"PAL 50Hz" },
|
|
||||||
{ "vidp60", L"PAL 60Hz" },
|
|
||||||
{ "vidntsc", L"NTSC" },
|
|
||||||
{ "DMLmpal", L"MPAL" },
|
|
||||||
{ "vidprog", L"Progressive" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GCvideoModes[7] = {
|
|
||||||
{ "viddef", L"Default" },
|
|
||||||
{ "vidgame", L"Game" },
|
|
||||||
{ "vidp50", L"PAL 50Hz" },
|
|
||||||
{ "vidp60", L"PAL 60Hz" },
|
|
||||||
{ "vidntsc", L"NTSC" },
|
|
||||||
{ "DMLmpal", L"MPAL" },
|
|
||||||
{ "vidprog", L"Progressive" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_languages[11] = {
|
|
||||||
{ "lngdef", L"Default" },// next should be console
|
|
||||||
{ "lngjap", L"Japanese" },
|
|
||||||
{ "lngeng", L"English" },
|
|
||||||
{ "lngger", L"German" },
|
|
||||||
{ "lngfre", L"French" },
|
|
||||||
{ "lngspa", L"Spanish" },
|
|
||||||
{ "lngita", L"Italian" },
|
|
||||||
{ "lngdut", L"Dutch" },
|
|
||||||
{ "lngsch", L"S. Chinese" },
|
|
||||||
{ "lngtch", L"T. Chinese" },
|
|
||||||
{ "lngkor", L"Korean" }
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GlobalGClanguages[7] = {
|
|
||||||
{ "lngsys", L"System" },
|
|
||||||
{ "lngeng", L"English" },
|
|
||||||
{ "lngger", L"German" },
|
|
||||||
{ "lngfre", L"French" },
|
|
||||||
{ "lngspa", L"Spanish" },
|
|
||||||
{ "lngita", L"Italian" },
|
|
||||||
{ "lngdut", L"Dutch" }
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GClanguages[8] = {
|
|
||||||
{ "lngdef", L"Default" },
|
|
||||||
{ "lngsys", L"System" },
|
|
||||||
{ "lngeng", L"English" },
|
|
||||||
{ "lngger", L"German" },
|
|
||||||
{ "lngfre", L"French" },
|
|
||||||
{ "lngspa", L"Spanish" },
|
|
||||||
{ "lngita", L"Italian" },
|
|
||||||
{ "lngdut", L"Dutch" }
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_ChannelsType[3] = {
|
|
||||||
{ "ChanReal", L"Real NAND" },
|
|
||||||
{ "ChanEmu", L"Emu NAND" },
|
|
||||||
{ "ChanBoth", L"Both" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_NandEmu[2] = {
|
|
||||||
{ "NANDpart", L"Partial" },
|
|
||||||
{ "NANDfull", L"Full" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GlobalSaveEmu[3] = {
|
|
||||||
{ "SaveOffG", L"Off" },
|
|
||||||
{ "SavePartG", L"Game save" },
|
|
||||||
{ "SaveFullG", L"Full" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_SaveEmu[4] = {
|
|
||||||
{ "SaveDef", L"Default" },
|
|
||||||
{ "SaveOff", L"Off" },
|
|
||||||
{ "SavePart", L"Game save" },
|
|
||||||
{ "SaveFull", L"Full" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_AspectRatio[3] = {
|
|
||||||
{ "aspectDef", L"Default" },
|
|
||||||
{ "aspect43", L"Force 4:3" },
|
|
||||||
{ "aspect169", L"Force 16:9" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_NinEmuCard[5] = {
|
|
||||||
{ "NinMCDef", L"Default" },
|
|
||||||
{ "NinMCOff", L"Disabled" },
|
|
||||||
{ "NinMCon", L"Enabled" },
|
|
||||||
{ "NinMCMulti", L"Multi Saves" },
|
|
||||||
{ "NinMCdebug", L"Debug" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GlobalGCLoaders[2] = {
|
|
||||||
{ "GC_Devo", L"Devolution" },
|
|
||||||
{ "GC_Nindnt", L"Nintendont" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_GCLoader[3] = {
|
|
||||||
{ "GC_Def", L"Default" },
|
|
||||||
{ "GC_Devo", L"Devolution" },
|
|
||||||
{ "GC_Nindnt", L"Nintendont" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_vidModePatch[4] = {
|
|
||||||
{ "vmpnone", L"None" },
|
|
||||||
{ "vmpnormal", L"Normal" },
|
|
||||||
{ "vmpmore", L"More" },
|
|
||||||
{ "vmpall", L"All" }
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_hooktype[8] = {
|
|
||||||
{ "hook_auto", L"AUTO" },
|
|
||||||
{ "hooktype1", L"VBI" },
|
|
||||||
{ "hooktype2", L"KPAD read" },
|
|
||||||
{ "hooktype3", L"Joypad" },
|
|
||||||
{ "hooktype4", L"GXDraw" },
|
|
||||||
{ "hooktype5", L"GXFlush" },
|
|
||||||
{ "hooktype6", L"OSSleepThread" },
|
|
||||||
{ "hooktype7", L"AXNextFrame" },
|
|
||||||
};
|
|
||||||
|
|
||||||
const CMenu::SOption CMenu::_debugger[3] = {
|
|
||||||
{ "disabled", L"Disabled" },
|
|
||||||
{ "dbg_gecko", L"Gecko" },
|
|
||||||
{ "dbgfwrite", L"OSReport" },
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline int loopNum(int i, int s)
|
static inline int loopNum(int i, int s)
|
||||||
{
|
{
|
||||||
return (i + s) % s;
|
return (i + s) % s;
|
||||||
|
@ -777,7 +777,10 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
|||||||
language = (language == 0) ? min(m_cfg.getUInt("GENERAL", "game_language", 0), ARRAY_SIZE(CMenu::_languages) - 1u) : language;
|
language = (language == 0) ? min(m_cfg.getUInt("GENERAL", "game_language", 0), ARRAY_SIZE(CMenu::_languages) - 1u) : language;
|
||||||
|
|
||||||
u8 patchVidMode = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
|
u8 patchVidMode = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
|
||||||
int aspectRatio = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1) - 1;// -1,0,1
|
s8 aspectRatio = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1) - 1;// -1,0,1
|
||||||
|
u8 private_server = m_gcfg2.getUInt(id, "private_server", 0);
|
||||||
|
int fix480pVal = m_gcfg2.getOptBool(id, "fix480p", 2);
|
||||||
|
bool fix480p = fix480pVal == 0 ? false : (fix480pVal == 1 ? true : m_cfg.getBool(WII_DOMAIN, "fix480p", false));
|
||||||
|
|
||||||
u32 returnTo = 0;
|
u32 returnTo = 0;
|
||||||
const char *rtrn = m_cfg.getString("GENERAL", "returnto").c_str();
|
const char *rtrn = m_cfg.getString("GENERAL", "returnto").c_str();
|
||||||
@ -906,7 +909,7 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
|
|||||||
Identify(gameTitle);
|
Identify(gameTitle);
|
||||||
|
|
||||||
ExternalBooter_ChannelSetup(gameTitle, use_dol);
|
ExternalBooter_ChannelSetup(gameTitle, use_dol);
|
||||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, 0, TYPE_CHANNEL, use_led);
|
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, private_server, fix480p, 0, TYPE_CHANNEL, use_led);
|
||||||
}
|
}
|
||||||
Sys_Exit();
|
Sys_Exit();
|
||||||
}
|
}
|
||||||
@ -979,7 +982,7 @@ void CMenu::_launchWii(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
|||||||
_launchShutdown();
|
_launchShutdown();
|
||||||
bool vipatch = m_gcfg2.getBool(id, "vipatch", false);
|
bool vipatch = m_gcfg2.getBool(id, "vipatch", false);
|
||||||
bool countryPatch = m_gcfg2.getBool(id, "country_patch", false);
|
bool countryPatch = m_gcfg2.getBool(id, "country_patch", false);
|
||||||
bool private_server = m_gcfg2.getBool(id, "private_server", false);
|
u8 private_server = m_gcfg2.getUInt(id, "private_server", 0);
|
||||||
int fix480pVal = m_gcfg2.getOptBool(id, "fix480p", 2);
|
int fix480pVal = m_gcfg2.getOptBool(id, "fix480p", 2);
|
||||||
bool fix480p = fix480pVal == 0 ? false : (fix480pVal == 1 ? true : m_cfg.getBool(WII_DOMAIN, "fix480p", false));
|
bool fix480p = fix480pVal == 0 ? false : (fix480pVal == 1 ? true : m_cfg.getBool(WII_DOMAIN, "fix480p", false));
|
||||||
|
|
||||||
@ -995,7 +998,7 @@ void CMenu::_launchWii(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
|||||||
if(strlen(rtrn) == 4)
|
if(strlen(rtrn) == 4)
|
||||||
returnTo = rtrn[0] << 24 | rtrn[1] << 16 | rtrn[2] << 8 | rtrn[3];
|
returnTo = rtrn[0] << 24 | rtrn[1] << 16 | rtrn[2] << 8 | rtrn[3];
|
||||||
|
|
||||||
int aspectRatio = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1u) - 1;
|
s8 aspectRatio = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1u) - 1;
|
||||||
u8 patchVidMode = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
|
u8 patchVidMode = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
|
||||||
|
|
||||||
u8 emulate_mode = min(m_gcfg2.getUInt(id, "emulate_save", 0), ARRAY_SIZE(CMenu::_SaveEmu) - 1u);
|
u8 emulate_mode = min(m_gcfg2.getUInt(id, "emulate_save", 0), ARRAY_SIZE(CMenu::_SaveEmu) - 1u);
|
||||||
@ -1167,8 +1170,8 @@ void CMenu::_launchWii(dir_discHdr *hdr, bool dvd, bool disc_cfg)
|
|||||||
MEM2_free(gameconfig);
|
MEM2_free(gameconfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalBooter_WiiGameSetup(wbfs_partition, dvd, patchregion, private_server, fix480p, id.c_str());
|
ExternalBooter_WiiGameSetup(wbfs_partition, dvd, patchregion, id.c_str());
|
||||||
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, returnTo, TYPE_WII_GAME, use_led);
|
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, private_server, fix480p, returnTo, TYPE_WII_GAME, use_led);
|
||||||
|
|
||||||
Sys_Exit();
|
Sys_Exit();
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ cfgg41=Gerenciar
|
|||||||
cfgg42=Controle USB
|
cfgg42=Controle USB
|
||||||
cfgg43=Controle nativo
|
cfgg43=Controle nativo
|
||||||
cfgg44=Deflicker de vídeo
|
cfgg44=Deflicker de vídeo
|
||||||
cfgg45=Servidor privado (Wiimmfi)
|
cfgg45=Servidor privado
|
||||||
cfgg46=Tela estendida WiiU
|
cfgg46=Tela estendida WiiU
|
||||||
cfgg47=MemCard emulado
|
cfgg47=MemCard emulado
|
||||||
cfgg48=Modo Arcade Triforce
|
cfgg48=Modo Arcade Triforce
|
||||||
|
@ -151,7 +151,7 @@ cfgg41=Manage
|
|||||||
cfgg42=USB-HID Controller
|
cfgg42=USB-HID Controller
|
||||||
cfgg43=Native Control
|
cfgg43=Native Control
|
||||||
cfgg44=Video Deflicker
|
cfgg44=Video Deflicker
|
||||||
cfgg45=Private Server (Wiimmfi)
|
cfgg45=Private Server
|
||||||
cfgg46=WiiU Widescreen
|
cfgg46=WiiU Widescreen
|
||||||
cfgg47=Emulated MemCard
|
cfgg47=Emulated MemCard
|
||||||
cfgg48=Triforce Arcade Mode
|
cfgg48=Triforce Arcade Mode
|
||||||
@ -439,6 +439,8 @@ part4=Plugins Default Partition
|
|||||||
part5=Partitions Settings
|
part5=Partitions Settings
|
||||||
players=Players
|
players=Players
|
||||||
prii=Priiloader
|
prii=Priiloader
|
||||||
|
ps_nossl=No SSL only
|
||||||
|
ps_wiimmfi
|
||||||
real=Real Nand
|
real=Real Nand
|
||||||
SaveDef=Default
|
SaveDef=Default
|
||||||
SaveFull=Full
|
SaveFull=Full
|
||||||
|
@ -148,7 +148,7 @@ cfgg41=Gérer
|
|||||||
cfgg42=Manette USB-HID
|
cfgg42=Manette USB-HID
|
||||||
cfgg43=Controle Natif
|
cfgg43=Controle Natif
|
||||||
cfgg44=Lissage Vidéo
|
cfgg44=Lissage Vidéo
|
||||||
cfgg45=Serveur Privé(Wiimmfi)
|
cfgg45=Serveur Privé
|
||||||
cfgg46=Plein écran WiiU
|
cfgg46=Plein écran WiiU
|
||||||
cfgg47=Carte Mémoire emulée
|
cfgg47=Carte Mémoire emulée
|
||||||
cfgg48=Mode Arcade TriForce
|
cfgg48=Mode Arcade TriForce
|
||||||
|
@ -151,7 +151,7 @@ cfgg41=Einstellen
|
|||||||
cfgg42=USB-HID-Controller
|
cfgg42=USB-HID-Controller
|
||||||
cfgg43=Native Control
|
cfgg43=Native Control
|
||||||
cfgg44=Video-Deflicker
|
cfgg44=Video-Deflicker
|
||||||
cfgg45=Privater Server (Wiimmfi)
|
cfgg45=Privater Server
|
||||||
cfgg46=Wii U Widescreen
|
cfgg46=Wii U Widescreen
|
||||||
cfgg47=Emulierte MemCard
|
cfgg47=Emulierte MemCard
|
||||||
cfgg48=Triforce Arcade Modus
|
cfgg48=Triforce Arcade Modus
|
||||||
|
@ -151,7 +151,7 @@ cfgg41=관리
|
|||||||
cfgg42=USB-HID 컨트롤러
|
cfgg42=USB-HID 컨트롤러
|
||||||
cfgg43=네이티브 컨트롤
|
cfgg43=네이티브 컨트롤
|
||||||
cfgg44=비디오 디플리커
|
cfgg44=비디오 디플리커
|
||||||
cfgg45=사설 서버 (Wiimmfi)
|
cfgg45=사설 서버
|
||||||
cfgg46=WiiU 와이드스크린
|
cfgg46=WiiU 와이드스크린
|
||||||
cfgg47=에뮬레이트 된 메모리카드
|
cfgg47=에뮬레이트 된 메모리카드
|
||||||
cfgg48=트라이포스 아케이드 모드
|
cfgg48=트라이포스 아케이드 모드
|
||||||
|
@ -151,7 +151,7 @@ cfgg41=Zarządzaj
|
|||||||
cfgg42=Kontroler USB-HID
|
cfgg42=Kontroler USB-HID
|
||||||
cfgg43=Natywna kontrola
|
cfgg43=Natywna kontrola
|
||||||
cfgg44=Deflicker Video
|
cfgg44=Deflicker Video
|
||||||
cfgg45=Prywatny serwer (Wiimmfi)
|
cfgg45=Prywatny serwer
|
||||||
cfgg46=WiiU Widescreen
|
cfgg46=WiiU Widescreen
|
||||||
cfgg47=Emulowany MemCard
|
cfgg47=Emulowany MemCard
|
||||||
cfgg48=Tryb Triforce Arcade
|
cfgg48=Tryb Triforce Arcade
|
||||||
|
@ -151,7 +151,7 @@ cfgg41=Gestionar
|
|||||||
cfgg42=Control USB-HID
|
cfgg42=Control USB-HID
|
||||||
cfgg43=Control nativo
|
cfgg43=Control nativo
|
||||||
cfgg44=Antiparpadeo de video
|
cfgg44=Antiparpadeo de video
|
||||||
cfgg45=Servidor privado (Wiimmfi)
|
cfgg45=Servidor privado
|
||||||
cfgg46=Pantalla ancha en Wii U
|
cfgg46=Pantalla ancha en Wii U
|
||||||
cfgg47=Tarjeta de memoria emulada
|
cfgg47=Tarjeta de memoria emulada
|
||||||
cfgg48=Modo arcade Triforce
|
cfgg48=Modo arcade Triforce
|
||||||
|
Loading…
Reference in New Issue
Block a user