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;
}
+
+