diff --git a/gui.pnproj b/gui.pnproj index 41d7c9c9..17307eb3 100644 --- a/gui.pnproj +++ b/gui.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/cfg.c b/source/cfg.c index bdb64f21..f099aaf6 100644 --- a/source/cfg.c +++ b/source/cfg.c @@ -39,6 +39,8 @@ u8 languageChoice = 0; u8 viChoice = 0; u8 iosChoice = 0; u8 parentalcontrolChoice = 0; +u8 xflip = 0; +u8 qboot = 0; #define TITLE_MAX 65 @@ -199,6 +201,7 @@ void CFG_Default(int widescreen) // -1 = non forced Mode CFG.parentalcontrol = 0; CFG.maxcharacters = 38; CFG.godmode = 0; + CFG.xflip = 0; //all alignments are left top here THEME.selection_x = 200; @@ -708,6 +711,20 @@ void global_cfg_set(char *name, char *val) } return; } + else if (strcmp(name, "xflip") == 0) { + int i; + if (sscanf(val, "%d", &i) == 1) { + Settings.xflip = i; + } + return; + } + else if (strcmp(name, "qboot") == 0) { + int i; + if (sscanf(val, "%d", &i) == 1) { + Settings.qboot = i; + } + return; + } } // split line to part1 delimiter part2 @@ -873,6 +890,8 @@ bool cfg_save_global()// save global settings fprintf(f, "tooltips = %d\n ", Settings.tooltips); fprintf(f, "password = %s\n ", Settings.unlockCode); fprintf(f, "cios = %d\n ", Settings.cios); + fprintf(f, "xflip = %d\n ", Settings.xflip); + fprintf(f, "qboot = %d\n ", Settings.qboot); fclose(f); return true; } @@ -935,6 +954,7 @@ void game_set(char *name, char *val) game->parentalcontrol = opt_c; } } + } // next opt if (np) p = np + 1; else p = NULL; @@ -984,6 +1004,8 @@ bool cfg_load_global() Settings.vpatch = off; Settings.language = ConsoleLangDefault; Settings.ocarina = off; + Settings.xflip = off; + Settings.qboot = off; Settings.hddinfo = HDDInfo; Settings.sinfo = ((THEME.showID) ? GameID : Neither); Settings.rumble = RumbleOn; diff --git a/source/cfg.h b/source/cfg.h index 20ec8da1..3cfb2230 100644 --- a/source/cfg.h +++ b/source/cfg.h @@ -62,6 +62,7 @@ struct CFG short parentalcontrol; short maxcharacters; short godmode; + short xflip; char unlockCode[20]; char covers_path[100]; char theme_path[100]; @@ -132,6 +133,8 @@ extern u8 languageChoice; extern u8 viChoice; extern u8 iosChoice; extern u8 parentalcontrolChoice; +extern u8 xflip; +extern u8 qboot; struct Game_CFG { @@ -226,12 +229,17 @@ enum { v0, }; +enum { + no, + yes, +}; +/* enum { ParentalControlOff, ParentalControlLevel1, ParentalControlLevel2, ParentalControlLevel3 -}; +};*/ struct SSettings { int video; @@ -242,11 +250,13 @@ struct SSettings { int sinfo; int hddinfo; int rumble; + int xflip; int volume; int tooltips; char unlockCode[20]; int parentalcontrol; int cios; + int qboot; }; void CFG_LoadGlobal(void); diff --git a/source/main.cpp b/source/main.cpp index 706b77da..facd2f89 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -92,7 +92,9 @@ DefaultSettings() Settings.tooltips = TooltipsOn; snprintf(Settings.unlockCode, sizeof(Settings.unlockCode), "ab121b"); Settings.parentalcontrol = 0; - Settings.cios = ios249; + Settings.cios = ios249; + Settings.xflip = no; + Settings.qboot = no; CFG_LoadGlobal(); } diff --git a/source/menu.cpp b/source/menu.cpp index 3adbbe7a..106e4163 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -1043,8 +1043,8 @@ int GameWindowPrompt() choice = 3; promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50); } - - else if(btnRight.GetState() == STATE_CLICKED) {//next game + + else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == no)){//next game promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50); changed = 1; gameSelected = (gameSelected + 1) % gameCnt; @@ -1052,13 +1052,30 @@ int GameWindowPrompt() break; } - else if(btnLeft.GetState() == STATE_CLICKED) {//previous game + else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == no)){//previous game promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50); changed = 2; gameSelected = (gameSelected - 1 + gameCnt) % gameCnt; btnLeft.ResetState(); break; } + + else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == yes)){//next game + promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50); + changed = 1; + gameSelected = (gameSelected - 1 + gameCnt) % gameCnt; + btnRight.ResetState(); + break; + } + + else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == yes)){//previous game + promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50); + changed = 2; + gameSelected = (gameSelected + 1) % gameCnt; + btnLeft.ResetState(); + break; + } + } @@ -2711,8 +2728,101 @@ static int MenuDiscList() strncat(text, "...", 3); } + if (Settings.qboot == yes)//quickboot game + { - bool returnHere = true; + wiilight(0); + + int ios2; + switch(iosChoice) + { + case i249: + ios2 = 0; + break; + + case i222: + ios2 = 1; + break; + + default: + ios2 = 0; + break; + } + + // if we have used the network or cios222 we need to reload the disklist + if(networkisinitialized == 1 || ios2 == 1 || Settings.cios == ios222) { + + WPAD_Flush(0); + WPAD_Disconnect(0); + WPAD_Shutdown(); + + WDVD_Close(); + + USBStorage_Deinit(); + + if(ios2 == 1) { + + ret = IOS_ReloadIOS(222); + if(ret < 0) { + + Wpad_Init(); + WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); + WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight); + + WindowPrompt("You don't have cIOS222!","Loading in cIOS249!","OK", 0); + + WPAD_Flush(0); + WPAD_Disconnect(0); + WPAD_Shutdown(); + + IOS_ReloadIOS(249); + ios2 = 0; + } + + } else { + + ret = IOS_ReloadIOS(249); + + } + + ret = WBFS_Init(WBFS_DEVICE_USB); + + PAD_Init(); + Wpad_Init(); + WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); + WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight); + + ret = Disc_Init(); + ret = WBFS_Open(); + + } + + /* Set USB mode */ + ret = Disc_SetUSB(header->id, ios2); + if (ret < 0) { + sprintf(text, "Error: %i", ret); + WindowPrompt( + "Failed to set USB:", + text, + "OK",0); + } + else { + /* Open disc */ + ret = Disc_Open(); + if (ret < 0) { + sprintf(text, "Error: %i", ret); + WindowPrompt( + "Failed to boot:", + text, + "OK",0); + } + else { + menu = MENU_EXIT; + } + } + } + break; + bool returnHere = true;// prompt to start game while (returnHere) { returnHere = false; @@ -3281,8 +3391,8 @@ static int MenuSettings() sprintf(options2.name[0], "Tooltips"); sprintf(options2.name[1], "Password"); sprintf(options2.name[2], "Boot Loader in"); - sprintf(options2.name[3], " "); - sprintf(options2.name[4], " "); + sprintf(options2.name[3], "Flip X"); + sprintf(options2.name[4], "Quick Boot"); sprintf(options2.name[5], " "); sprintf(options2.name[6], " "); sprintf(options2.name[7], " "); @@ -3399,6 +3509,10 @@ static int MenuSettings() Settings.tooltips = 0; if ( Settings.cios > 1 ) Settings.cios = 0; + if ( Settings.xflip > 1 ) + Settings.xflip = 0; + if ( Settings.qboot > 1 ) + Settings.qboot = 0; if (Settings.tooltips == TooltipsOn) sprintf (options2.value[0],"On"); else if (Settings.tooltips == TooltipsOff) sprintf (options2.value[0],"Off"); @@ -3410,8 +3524,12 @@ static int MenuSettings() if (Settings.cios == ios249) sprintf (options2.value[2],"cIOS 249"); else if (Settings.cios == ios222) sprintf (options2.value[2],"cIOS 222"); - sprintf (options2.value[3]," "); - sprintf (options2.value[4]," "); + if (Settings.xflip == no) sprintf (options2.value[3],"No"); + else if (Settings.xflip == yes) sprintf (options2.value[3],"Yes"); + + if (Settings.qboot == no) sprintf (options2.value[4],"No"); + else if (Settings.qboot == yes) sprintf (options2.value[4],"Yes"); + sprintf (options2.value[5]," "); sprintf (options2.value[6]," "); sprintf (options2.value[7]," "); @@ -3455,6 +3573,12 @@ static int MenuSettings() case 2: Settings.cios++; break; + case 3: + Settings.xflip++; + break; + case 4: + Settings.qboot++; + break; } } @@ -3919,7 +4043,7 @@ int MainMenu(int menu) int currentMenu = menu; char imgPath[100]; - #ifdef HW_RVL + #ifdef HW_RVL snprintf(imgPath, sizeof(imgPath), "%splayer1_point.png", CFG.theme_path); pointer[0] = new GuiImageData(imgPath, player1_point_png); snprintf(imgPath, sizeof(imgPath), "%splayer2_point.png", CFG.theme_path); @@ -4016,7 +4140,6 @@ int MainMenu(int menu) vol = 80; break; } - } diff --git a/source/wpad.c b/source/wpad.c index 2f8df22b..44f46840 100644 --- a/source/wpad.c +++ b/source/wpad.c @@ -69,3 +69,5 @@ u32 Wpad_WaitButtons(void) return buttons; } + +