Compilation - code cleanup to remove all compilation warnings

GC - updated nintendont config support to version 0x00000003
Internals - added Wii / vWii identification capability
GC - fixed wide screen support in vWii for nintendont
GC - added nintendont memory card sizing
GC - added nintnedont shared memory card support
Internals - added "mem_card_emu" and "mem_card_size" keys for games configs in "settings.cfg"
Build - added revision number to version as suffix ".<rev>" (70r78.8)
This commit is contained in:
Nitraiolo 2015-03-15 06:03:08 +00:00
parent a7a54c7439
commit 947c835269
11 changed files with 204 additions and 54 deletions

View File

@ -1242,6 +1242,9 @@ msgstr "Emu NAND:"
msgid "NMM:"
msgstr "NMM:"
msgid "MC size:"
msgstr "Dimensione MC:"
msgid ""
"NOTE: CIOS249 before rev10:\n"
"Loading games from SDHC not supported!"
@ -1417,6 +1420,9 @@ msgstr "Corse Fuoristrada"
msgid "On"
msgstr "Attivato"
msgid "Shared"
msgstr "Condiviso"
msgid "Online"
msgstr "Online"

View File

@ -15,7 +15,7 @@ include $(DEVKITPPC)/wii_rules
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
VERSION := 70r78
VERSION := 70r78.8
RELEASE := release
# to override RELEASE use: make announce RELEASE=beta
ifeq ($(findstring compat,$(VERSION)),compat)

View File

@ -5,7 +5,7 @@
//#include "NintendontVersion.h"
//#include "Metadata.h"
#define NIN_CFG_VERSION 0x00000002
#define NIN_CFG_VERSION 0x00000003
#define NIN_CFG_MAXPAD 4
@ -20,36 +20,88 @@ typedef struct NIN_CFG
char CheatPath[255];
unsigned int MaxPads;
unsigned int GameID;
unsigned int MemCardBlocks;
} NIN_CFG;
enum ninconfigbitpos
{
NIN_CFG_BIT_CHEATS = (0),
NIN_CFG_BIT_DEBUGGER = (1), // Only for Wii Version
NIN_CFG_BIT_DEBUGWAIT = (2), // Only for Wii Version
NIN_CFG_BIT_MEMCARDEMU = (3),
NIN_CFG_BIT_CHEAT_PATH = (4),
NIN_CFG_BIT_FORCE_WIDE = (5),
NIN_CFG_BIT_FORCE_PROG = (6),
NIN_CFG_BIT_AUTO_BOOT = (7),
NIN_CFG_BIT_HID = (8),
NIN_CFG_BIT_OSREPORT = (9),
NIN_CFG_BIT_USB = (10),
NIN_CFG_BIT_LED = (11),
NIN_CFG_BIT_LOG = (12),
NIN_CFG_BIT_LAST = (13),
NIN_CFG_BIT_MC_MULTI = (13),
NIN_CFG_BIT_NATIVE_SI = (14),
NIN_CFG_BIT_WIIU_WIDE = (15),
};
enum ninconfig
{
NIN_CFG_CHEATS = (1<<0),
NIN_CFG_DEBUGGER = (1<<1), // Only for Wii Version
NIN_CFG_DEBUGWAIT = (1<<2), // Only for Wii Version
NIN_CFG_MEMCARDEMU = (1<<3),
NIN_CFG_CHEAT_PATH = (1<<4),
NIN_CFG_FORCE_WIDE = (1<<5),
NIN_CFG_FORCE_PROG = (1<<6),
NIN_CFG_AUTO_BOOT = (1<<7),
NIN_CFG_HID = (1<<8),
NIN_CFG_OSREPORT = (1<<9),
NIN_CFG_USB = (1<<10),
NIN_CFG_LED = (1<<11),
NIN_CFG_CHEATS = (1<<NIN_CFG_BIT_CHEATS),
NIN_CFG_DEBUGGER = (1<<NIN_CFG_BIT_DEBUGGER), // Only for Wii Version
NIN_CFG_DEBUGWAIT = (1<<NIN_CFG_BIT_DEBUGWAIT), // Only for Wii Version
NIN_CFG_MEMCARDEMU = (1<<NIN_CFG_BIT_MEMCARDEMU),
NIN_CFG_CHEAT_PATH = (1<<NIN_CFG_BIT_CHEAT_PATH),
NIN_CFG_FORCE_WIDE = (1<<NIN_CFG_BIT_FORCE_WIDE),
NIN_CFG_FORCE_PROG = (1<<NIN_CFG_BIT_FORCE_PROG),
NIN_CFG_AUTO_BOOT = (1<<NIN_CFG_BIT_AUTO_BOOT),
NIN_CFG_HID = (1<<NIN_CFG_BIT_HID),
NIN_CFG_OSREPORT = (1<<NIN_CFG_BIT_OSREPORT),
NIN_CFG_USB = (1<<NIN_CFG_BIT_USB),
NIN_CFG_LED = (1<<NIN_CFG_BIT_LED),
NIN_CFG_LOG = (1<<NIN_CFG_BIT_LOG),
NIN_CFG_MC_MULTI = (1<<NIN_CFG_BIT_MC_MULTI),
NIN_CFG_NATIVE_SI = (1<<NIN_CFG_BIT_NATIVE_SI),
NIN_CFG_WIIU_WIDE = (1<<NIN_CFG_BIT_WIIU_WIDE),
};
enum ninextrasettings
{
NIN_SETTINGS_MAX_PADS = NIN_CFG_BIT_LAST,
NIN_SETTINGS_LANGUAGE,
NIN_SETTINGS_VIDEO,
NIN_SETTINGS_VIDEOMODE,
NIN_SETTINGS_MEMCARDBLOCKS,
NIN_SETTINGS_MEMCARDMULTI,
NIN_SETTINGS_NATIVE_SI,
NIN_SETTINGS_LAST,
};
enum ninvideomodeindex
{
NIN_VID_INDEX_AUTO = (0),
NIN_VID_INDEX_FORCE = (1),
NIN_VID_INDEX_NONE = (2),
NIN_VID_INDEX_FORCE_DF = (4),
NIN_VID_INDEX_FORCE_PAL50 = (0),
NIN_VID_INDEX_FORCE_PAL60 = (1),
NIN_VID_INDEX_FORCE_NTSC = (2),
NIN_VID_INDEX_FORCE_MPAL = (3),
};
enum ninvideomode
{
NIN_VID_AUTO = (0<<16),
NIN_VID_FORCE = (1<<16),
NIN_VID_NONE = (2<<16),
NIN_VID_AUTO = (NIN_VID_INDEX_AUTO <<16),
NIN_VID_FORCE = (NIN_VID_INDEX_FORCE <<16),
NIN_VID_NONE = (NIN_VID_INDEX_NONE <<16),
NIN_VID_FORCE_DF = (NIN_VID_INDEX_FORCE_DF<<16),
NIN_VID_MASK = NIN_VID_AUTO|NIN_VID_FORCE|NIN_VID_NONE,
NIN_VID_MASK = NIN_VID_AUTO|NIN_VID_FORCE|NIN_VID_NONE|NIN_VID_FORCE_DF,
NIN_VID_FORCE_PAL50 = (1<<0),
NIN_VID_FORCE_PAL60 = (1<<1),
NIN_VID_FORCE_NTSC = (1<<2),
NIN_VID_FORCE_MPAL = (1<<3),
NIN_VID_FORCE_PAL50 = (1<<NIN_VID_INDEX_FORCE_PAL50),
NIN_VID_FORCE_PAL60 = (1<<NIN_VID_INDEX_FORCE_PAL60),
NIN_VID_FORCE_NTSC = (1<<NIN_VID_INDEX_FORCE_NTSC),
NIN_VID_FORCE_MPAL = (1<<NIN_VID_INDEX_FORCE_MPAL),
NIN_VID_FORCE_MASK = NIN_VID_FORCE_PAL50|NIN_VID_FORCE_PAL60|NIN_VID_FORCE_NTSC|NIN_VID_FORCE_MPAL,
@ -65,6 +117,8 @@ enum ninlanguage
NIN_LAN_ITALIAN = 4,
NIN_LAN_DUTCH = 5,
NIN_LAN_FIRST = 0,
NIN_LAN_LAST = 6,
/* Auto will use English for E/P region codes and
only other languages when these region codes are used: D/F/S/I/J */
@ -79,7 +133,16 @@ enum VideoModes
GCVideoModePROG = 3,
};
#define NIN_RAW_MEMCARD_SIZE 2*1024*1024 //2MB
#define NIN_MEMCARD_BLOCKS 0x00000010 //251 Blocks
//Mem0059 = 0, 0x04, 0x0080000
//Mem0123 = 1, 0x08, 0x0100000
//Mem0251 = 2, 0x10, 0x0200000
//Mem0507 = 3, 0x20, 0x0400000
//Mem1019 = 4, 0x40, 0x0800000
//Mem2043 = 5, 0x80, 0x1000000
#define MEM_CARD_MAX (5)
#define MEM_CARD_CODE(x) (1<<(x+2))
#define MEM_CARD_SIZE(x) (1<<(x+19))
#define MEM_CARD_BLOCKS(x) ((1<<(x+6))-5)
#endif

View File

@ -60,11 +60,12 @@ const u8 es_set_ahbprot_patch[] = { 0x01 };
u32 IOSPATCH_Apply() {
u32 count = 0;
s32 ret = 0;
//s32 ret = 0;
if (HAVE_AHBPROT) {
disable_memory_protection();
ret = apply_patch("es_set_ahbprot", es_set_ahbprot_pattern, sizeof(es_set_ahbprot_pattern), es_set_ahbprot_patch, sizeof(es_set_ahbprot_patch), 25);
//ret = apply_patch("es_set_ahbprot", es_set_ahbprot_pattern, sizeof(es_set_ahbprot_pattern), es_set_ahbprot_patch, sizeof(es_set_ahbprot_patch), 25);
apply_patch("es_set_ahbprot", es_set_ahbprot_pattern, sizeof(es_set_ahbprot_pattern), es_set_ahbprot_patch, sizeof(es_set_ahbprot_patch), 25);
}
//if (ret) {
// IOS_ReloadIOS(IOS_GetVersion());

View File

@ -290,6 +290,17 @@ struct TextMap map_gc_boot[] =
{ NULL, -1 }
};
struct TextMap map_mem_card_size[] =
{
{ " 59 blocks", 0 }, // 512KB
{ " 123 blocks", 1 }, // 1MB
{ " 251 blocks", 2 }, // 2MB
{ " 507 blocks", 3 }, // 4MB
{ "1019 blocks", 4 }, // 8MB
{ "2043 blocks", 5 }, // 16MB
{ NULL, -1 }
};
struct playStat {
char id[7];
s32 playCount;
@ -2272,6 +2283,8 @@ void cfg_set_game(char *name, char *val, struct Game_CFG *game_cfg)
cfg_bool("vidtv", &game_cfg->vidtv);
cfg_bool("country_patch", &game_cfg->country_patch);
cfg_int_max("mem_card_emu", &game_cfg->mem_card_emu, 2);
cfg_int_max("mem_card_size", &game_cfg->mem_card_size, 5);
cfg_bool("clear_patches", &game_cfg->clean);
cfg_map("clear_patches", "all", &game_cfg->clean, CFG_CLEAN_ALL);
cfg_bool("fix_002", &game_cfg->fix_002);
@ -3003,6 +3016,12 @@ bool CFG_Save_Settings(int verbose)
SAVE_BOOL(ntsc_j_patch);
SAVE_BOOL(nodisc);
SAVE_BOOL(screenshot);
if (game_cfg-> mem_card_emu == 2) {
SAVE_NUM(mem_card_emu);
} else {
SAVE_BOOL(mem_card_emu);
}
SAVE_NUM(mem_card_size);
SAVE_BOOL(country_patch);
SAVE_BOOL(fix_002);
s = ios_str(game_cfg->ios_idx);

View File

@ -248,6 +248,8 @@ struct Game_CFG
int nodisc;
int screenshot;
int country_patch;
int mem_card_emu;
int mem_card_size;
int fix_002;
int ios_idx;
int block_ios_reload;
@ -363,6 +365,7 @@ struct CFG
int device;
char partition[16];
int hide_header;
int vwii_mode;
// simple variants:
int confirm_start;
int hide_hddinfo;
@ -724,6 +727,7 @@ extern struct TextMap map_ios[];
extern struct TextMap map_nand_emu[];
extern struct TextMap map_channel_boot[];
extern struct TextMap map_gc_boot[];
extern struct TextMap map_mem_card_size[];
extern char *names_vpatch[CFG_VIDEO_PATCH_NUM];
extern u8 cIOS_base[];

View File

@ -653,15 +653,20 @@ void Nintendont_set_options(struct discHdr *header, char *CheatPath, char *NewCh
ncfg.Magicbytes = 0x01070CF6;
ncfg.Version = NIN_CFG_VERSION;
ncfg.MemCardBlocks = CFG.game.mem_card_size;
if (CFG.game.ocarina)
ncfg.Config |= NIN_CFG_CHEATS;
if (CFG.game.country_patch) //country_patch contains NMM setting
if (CFG.game.mem_card_emu)
ncfg.Config |= NIN_CFG_MEMCARDEMU;
if (CFG.game.mem_card_emu == 2)
ncfg.Config |= NIN_CFG_MC_MULTI;
if (CFG.game.ocarina)
ncfg.Config |= NIN_CFG_CHEAT_PATH;
if (CFG.game.wide_screen)
ncfg.Config |= NIN_CFG_FORCE_WIDE;
if (CFG.game.wide_screen && CFG.vwii_mode)
ncfg.Config |= NIN_CFG_WIIU_WIDE;
if (CFG.game.video == 4 || CFG.game.video == 5)
ncfg.Config |= NIN_CFG_FORCE_PROG;
ncfg.Config |= NIN_CFG_AUTO_BOOT;

View File

@ -457,6 +457,8 @@ struct W_GameCfg
Widget *video_patch;
Widget *vidtv;
Widget *country_patch;
Widget *mem_card_emu;
Widget *mem_card_size;
Widget *ios_idx;
Widget *block_ios_reload;
Widget *fix_002;
@ -744,7 +746,8 @@ void update_gameopt_state()
gameopt_inactive(cond, wgame.language, CFG_LANG_CONSOLE);
gameopt_inactive(cond, wgame.video, CFG_VIDEO_GAME);
gameopt_inactive(cond, wgame.vidtv, 0);
gameopt_inactive(cond, wgame.country_patch, 0);
gameopt_inactive(cond, wgame.mem_card_emu, 0);
gameopt_inactive(cond, wgame.mem_card_size, 0);
gameopt_inactive(cond, wgame.channel_boot, 0);
gameopt_inactive(cond, wgame.ocarina, 0);
gameopt_inactive(cond, wgame.wide_screen, 0);
@ -973,6 +976,10 @@ void InitGameOptionsPage(Widget *pp, int bh)
int num_gc_boot = map_get_num(map_gc_boot);
char *names_gc_boot[num_gc_boot];
num_gc_boot = map_to_list(map_gc_boot, num_gc_boot, names_gc_boot);
int num_mem_card_size = map_get_num(map_mem_card_size);
char *names_mem_card_size[num_mem_card_size];
num_mem_card_size = map_to_list(map_mem_card_size, num_mem_card_size, names_mem_card_size);
ww = wgui_add_game_opt(op, gt("Language:"), CFG_LANG_NUM, languages);
BIND_OPT(language);
@ -984,23 +991,27 @@ void InitGameOptionsPage(Widget *pp, int bh)
ww = wgui_add_game_opt(op, gt("Video Patch:"), 3, str_block);
BIND_OPT(block_ios_reload);
ww = wgui_add_game_opt(op, gt("NMM:"), 2, NULL);
BIND_OPT(country_patch);
char *str_nmm[3] = { gt("Off"), gt("On"), gt("Shared") };
ww = wgui_add_game_opt(op, gt("NMM:"), 3, str_nmm);
BIND_OPT(mem_card_emu);
ww = wgui_add_game_opt(op, gt("MC size:"), num_mem_card_size, names_mem_card_size);
BIND_OPT(mem_card_size);
ww = wgui_add_game_opt(op, gt("Wide Screen:"), 2, NULL);
BIND_OPT(wide_screen);
ww = wgui_add_game_opt(op, gt("Ocarina (cheats):"), 2, NULL);
BIND_OPT(ocarina);
ww = wgui_add_game_opt(op, gt("Boot Method:"), num_gc_boot, names_gc_boot);
BIND_OPT(channel_boot);
/////////////////
op = wgui_add_page(pp, w_opt_page, pos_wh(SIZE_FULL, -bh), "opt");
op->render = NULL;
ww = wgui_add_game_opt(op, gt("Boot Method:"), num_gc_boot, names_gc_boot);
BIND_OPT(channel_boot);
ww = wgui_add_game_opt(op, gt("PAD HOOK"), 2, NULL);
BIND_OPT(hooktype);
@ -1018,6 +1029,11 @@ void InitGameOptionsPage(Widget *pp, int bh)
ww = wgui_add_game_opt(op, gt("Screenshot:"), 2, NULL);
BIND_OPT(screenshot);
/////////////////
op = wgui_add_page(pp, w_opt_page, pos_wh(SIZE_FULL, -bh), "opt");
op->render = NULL;
ww = wgui_add_game_opt(op, gt("Alt Button Cfg:"), 2, NULL);
BIND_OPT(alt_controller_cfg);

View File

@ -189,11 +189,21 @@ char *str_channel_boot[2] =
char *str_gc_boot[4] =
{
gts("Default"),
gts("DIOS MIOS")
gts("Devolution")
gts("DIOS MIOS"),
gts("Devolution"),
gts("Nintendont")
};
char *str_mem_card_size[6] =
{
gts(" 59 blocks"),
gts(" 123 blocks"),
gts(" 251 blocks"),
gts(" 507 blocks"),
gts("1019 blocks"),
gts("2043 blocks")
};
int Menu_Global_Options();
int Menu_Game_Options();
void Switch_Favorites(bool enable);
@ -1818,7 +1828,7 @@ int Menu_Boot_Options(struct discHdr *header, bool disc) {
int opt_saved;
//int opt_ios_reload;
int opt_language, opt_video, opt_video_patch, opt_vidtv, opt_padhook, opt_nand_emu;
int opt_country_patch, opt_anti_002, opt_ocarina, opt_wide_screen, opt_nodisc, opt_ntsc_j_patch, opt_screenshot;
int opt_mem_card_emu, opt_mem_card_size, opt_country_patch, opt_anti_002, opt_ocarina, opt_wide_screen, opt_nodisc, opt_ntsc_j_patch, opt_screenshot;
f32 size = 0.0;
int redraw_cover = 0;
int i;
@ -1865,7 +1875,7 @@ int Menu_Boot_Options(struct discHdr *header, bool disc) {
struct Menu menu;
int NUM_OPT = 19;
if (header->magic == GC_GAME_ON_DRIVE) NUM_OPT = 16;
if (header->magic == GC_GAME_ON_DRIVE) NUM_OPT = 17;
if (header->magic == CHANNEL_MAGIC) NUM_OPT = 19;
char active[NUM_OPT];
menu_init(&menu, NUM_OPT);
@ -1898,6 +1908,8 @@ int Menu_Boot_Options(struct discHdr *header, bool disc) {
opt_video_patch = game_cfg->video_patch;
opt_vidtv = game_cfg->vidtv;
opt_country_patch = game_cfg->country_patch;
opt_mem_card_emu = game_cfg->mem_card_emu;
opt_mem_card_size = game_cfg->mem_card_size;
opt_anti_002 = game_cfg->fix_002;
opt_wide_screen = game_cfg->wide_screen;
opt_nodisc = game_cfg->nodisc;
@ -1913,6 +1925,8 @@ int Menu_Boot_Options(struct discHdr *header, bool disc) {
opt_video_patch = CFG_VIDEO_PATCH_OFF;
opt_vidtv = 0;
opt_country_patch = 0;
opt_mem_card_emu = 0;
opt_mem_card_size = 2;
opt_anti_002 = 0;
opt_ocarina = 0;
opt_ntsc_j_patch = 0;
@ -2014,8 +2028,15 @@ int Menu_Boot_Options(struct discHdr *header, bool disc) {
}
if (menu_window_mark(&menu))
PRINT_OPT_B(gt("LED:"), opt_vidtv);
if (menu_window_mark(&menu)) {
if (opt_mem_card_emu == 2) {
PRINT_OPT_S(gt("NMM:"), gt("Shared"));
} else {
PRINT_OPT_B(gt("NMM:"), opt_mem_card_emu);
}
}
if (menu_window_mark(&menu))
PRINT_OPT_B(gt("NMM:"), opt_country_patch);
PRINT_OPT_S(gt("MC size::"), gt(str_mem_card_size[opt_mem_card_size]));
if (menu_window_mark(&menu))
PRINT_OPT_B(gt("Ocarina (cheats):"), opt_ocarina);
if (menu_window_mark(&menu))
@ -2197,40 +2218,43 @@ int Menu_Boot_Options(struct discHdr *header, bool disc) {
CHANGE(game_cfg->vidtv, 1);
break;
case 5:
CHANGE(game_cfg->country_patch, 1);
CHANGE(game_cfg->mem_card_emu, 2);
break;
case 6:
CHANGE(game_cfg->ocarina, 1);
CHANGE(game_cfg->mem_card_size, 5);
break;
case 7:
Menu_Cheats(header);
CHANGE(game_cfg->ocarina, 1);
break;
case 8:
Menu_Cheats(header);
break;
case 9:
printf("\n\n");
Download_Cover((char*)header->id, change > 0, true);
Cache_Invalidate();
Gui_DrawCover(header->id);
Menu_PrintWait();
break;
case 9: // Wide Screen
case 10: // Wide Screen
CHANGE(game_cfg->wide_screen, 1);
break;
case 10: // NoDisc+
case 11: // NoDisc+
CHANGE(game_cfg->ntsc_j_patch, 1);
break;
case 11: // NoDisc+
case 12: // NoDisc+
CHANGE(game_cfg->nodisc, 1);
break;
case 12: // PAD HOOK)
case 13: // PAD HOOK)
CHANGE(game_cfg->hooktype, 1);
break;
case 13: // gc Boot Method
case 14: // gc Boot Method
CHANGE(game_cfg->channel_boot, 3);
break;
case 14: // Screenshot
case 15: // Screenshot
CHANGE(game_cfg->screenshot, 1);
break;
case 15: // Alt Button Cfg
case 16: // Alt Button Cfg
CHANGE(game_cfg->alt_controller_cfg, 1);
break;
}
@ -4863,7 +4887,7 @@ L_repaint:
snprintf(devoPath, sizeof(devoPath), "%s/game.iso", header->path);
DEVO_SetOptions(devoPath, CFG.game.country_patch);
DEVO_SetOptions(devoPath, CFG.game.mem_card_emu);
snprintf(D_S(loaderPath), "%s/loader.bin", USBLOADER_PATH);
sleep(1);
@ -4914,10 +4938,10 @@ L_repaint:
if (CFG.dml == CFG_DML_R51) {
DML_Old_SetOptions(header->path, cheatPath, newCheatPath, CFG.game.ocarina);
} else {
DML_New_SetOptions(header->path, cheatPath, newCheatPath, CFG.game.ocarina, false, CFG.game.country_patch, CFG.game.nodisc, CFG.game.vidtv, CFG.game.video, CFG.game.wide_screen, CFG.game.hooktype, CFG.game.block_ios_reload, CFG.game.screenshot);
DML_New_SetOptions(header->path, cheatPath, newCheatPath, CFG.game.ocarina, false, CFG.game.mem_card_emu, CFG.game.nodisc, CFG.game.vidtv, CFG.game.video, CFG.game.wide_screen, CFG.game.hooktype, CFG.game.block_ios_reload, CFG.game.screenshot);
}
} else if (CFG.dml >= CFG_DML_1_2) {
DML_New_SetBootDiscOption(cheatPath, newCheatPath, CFG.game.ocarina, CFG.game.country_patch, CFG.game.vidtv, CFG.game.video);
DML_New_SetBootDiscOption(cheatPath, newCheatPath, CFG.game.ocarina, CFG.game.mem_card_emu, CFG.game.vidtv, CFG.game.video);
}
if (CFG.game.ntsc_j_patch)

View File

@ -639,7 +639,7 @@ int filter_search(struct discHdr *list, int cnt, char *search_field, bool notuse
int kept_cnt = 0;
struct gameXMLinfo *g;
char temp_str[200];
int search_int;
int search_int = 0;
int rec_int;
bool keep_record;

View File

@ -24,6 +24,8 @@
#include "rcstub.h"
#define HW_PROCESSOR ((vu32*)0xCD8005A0)
// libogc < 1.8.5 can hang if wiimote is initialized multiple times
// (in case ios is reload 2x) so we delay wpad to later
// libogc = 1.8.5 can crash if started with 2+ wiimotes
@ -89,6 +91,16 @@ int main(int argc, char **argv)
mem_init();
Sys_Init();
/* Identify if we are on WII or WIIU in crediar way, Thanks! */
if((*HW_PROCESSOR >> 16) == 0xCAFE)
{
dbg_printf("vWii Mode\n");
CFG.vwii_mode = true;
} else {
dbg_printf("Legacy Wii Mode\n");
CFG.vwii_mode = false;
}
cfg_parsearg_early(argc, argv);
InitDebug();
// reset in 60 seconds in case an exception (CODE DUMP) occurs