diff --git a/gui.pnproj b/gui.pnproj
index 215be797..77c31d0b 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/PromptWindows.cpp b/source/PromptWindows.cpp
new file mode 100644
index 00000000..d019b2fe
--- /dev/null
+++ b/source/PromptWindows.cpp
@@ -0,0 +1,2438 @@
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "menu.h"
+#include "filelist.h"
+#include "sys.h"
+#include "wpad.h"
+#include "wbfs.h"
+#include "wdvd.h"
+#include "language.h"
+#include "libwiigui/gui.h"
+#include "libwiigui/gui_diskcover.h"
+#include "fatmounter.h"
+#include "listfiles.h"
+#include "updater.h"
+#include "http.h"
+#include "partition.h"
+#include "getentries.h"
+
+/*** Variables that are also used extern ***/
+char missingFiles[500][12];
+int cntMissFiles = 0;
+int networkisinitialized;
+
+/*** Variables used only in this file ***/
+static GuiText prTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+static GuiText timeTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+static GuiText sizeTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+static GuiImageData progressbar(progressbar_png);
+static GuiImage progressbarImg(&progressbar);
+
+/*** Extern variables ***/
+extern GuiWindow * mainWindow;
+extern GuiSound * bgMusic;
+extern u32 gameCnt;
+extern s32 gameSelected, gameStart;
+extern float gamesize;
+extern struct discHdr * gameList;
+extern u8 shutdown;
+extern u8 reset;
+extern int vol;
+
+/*** Extern functions ***/
+extern void ResumeGui();
+extern void HaltGui();
+
+/****************************************************************************
+ * OnScreenKeyboard
+ *
+ * Opens an on-screen keyboard window, with the data entered being stored
+ * into the specified variable.
+ ***************************************************************************/
+int OnScreenKeyboard(char * var, u32 maxlen, int min)
+{
+ int save = -1;
+ int keyset = 0;
+ if (Settings.keyset == us) keyset = 0;
+ else if (Settings.keyset == dvorak) keyset = 1;
+ else if (Settings.keyset == euro) keyset = 2;
+ else if (Settings.keyset == azerty) keyset = 3;
+
+ GuiKeyboard keyboard(var, maxlen, min, keyset);
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[50];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigB;
+ trigB.SetSimpleTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+
+ GuiText okBtnTxt(LANGUAGE.ok, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage okBtnImg(&btnOutline);
+ if (Settings.wsprompt == yes){
+ okBtnTxt.SetWidescreen(CFG.widescreen);
+ okBtnImg.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton okBtn(&okBtnImg,&okBtnImg, 0, 4, 5, 15, &trigA, &btnSoundOver, &btnClick,1);
+ okBtn.SetLabel(&okBtnTxt);
+ GuiText cancelBtnTxt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage cancelBtnImg(&btnOutline);
+ if (Settings.wsprompt == yes){
+ cancelBtnTxt.SetWidescreen(CFG.widescreen);
+ cancelBtnImg.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton cancelBtn(&cancelBtnImg,&cancelBtnImg, 1, 4, -5, 15, &trigA, &btnSoundOver, &btnClick,1);
+ cancelBtn.SetLabel(&cancelBtnTxt);
+ cancelBtn.SetTrigger(&trigB);
+
+ keyboard.Append(&okBtn);
+ keyboard.Append(&cancelBtn);
+
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&keyboard);
+ mainWindow->ChangeFocus(&keyboard);
+ ResumeGui();
+
+ while(save == -1)
+ {
+ VIDEO_WaitVSync();
+
+ if(okBtn.GetState() == STATE_CLICKED)
+ save = 1;
+ else if(cancelBtn.GetState() == STATE_CLICKED)
+ save = 0;
+ }
+
+ if(save)
+ {
+ snprintf(var, maxlen, "%s", keyboard.kbtextstr);
+ }
+
+ HaltGui();
+ mainWindow->Remove(&keyboard);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+ return save;
+}
+
+/****************************************************************************
+ * WindowCredits
+ * Display credits
+ ***************************************************************************/
+void WindowCredits()
+{
+ int angle = 0;
+ GuiSound * creditsMusic = NULL;
+
+ s32 thetimeofbg = bgMusic->GetPlayTime();
+ StopOgg();
+
+ creditsMusic = new GuiSound(credits_music_ogg, credits_music_ogg_size, SOUND_OGG, 55);
+ creditsMusic->SetVolume(55);
+ creditsMusic->SetLoop(1);
+ creditsMusic->Play();
+
+ bool exit = false;
+ int i = 0;
+ int y = 20;
+
+ GuiWindow creditsWindow(screenwidth,screenheight);
+ GuiWindow creditsWindowBox(580,448);
+ creditsWindowBox.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+
+ GuiImageData creditsBox(credits_bg_png);
+ GuiImage creditsBoxImg(&creditsBox);
+ creditsBoxImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ creditsWindowBox.Append(&creditsBoxImg);
+
+ GuiImageData star(little_star_png);
+ GuiImage starImg(&star);
+ starImg.SetWidescreen(CFG.widescreen); //added
+ starImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ starImg.SetPosition(505,350);
+
+ int numEntries = 25;
+ GuiText * txt[numEntries];
+
+ txt[i] = new GuiText(LANGUAGE.Credits, 26, (GXColor){255, 255, 255, 255});
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,12); i++;
+
+ char SvnRev[10];
+ snprintf(SvnRev, 10, "Rev%s", SVN_REV);
+
+ txt[i] = new GuiText(SvnRev, 18, (GXColor){255, 255, 255, 255});
+ txt[i]->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); txt[i]->SetPosition(-30,y); i++; y+=34;
+
+ txt[i] = new GuiText("USB Loader GX", 24, (GXColor){255, 255, 255, 255});
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y); i++; y+=26;
+
+ txt[i] = new GuiText(": http://code.google.com/p/usbloader-gui/", 20, (GXColor){255, 255, 255, 255});
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(50,y); i++; //y+=28;
+
+ txt[i] = new GuiText(LANGUAGE.OfficialSite, 20, (GXColor){255, 255, 255, 255});
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(-180,y); i++; y+=28;
+
+ GuiText::SetPresets(22, (GXColor){255, 255, 255, 255}, 0, GuiText::WRAP,
+ FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP, ALIGN_LEFT, ALIGN_TOP);
+
+ txt[i] = new GuiText("Coding:");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(170,y);
+ i++;
+
+ txt[i] = new GuiText("dimok");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("nIxx");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("hungyip84");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("giantpune");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=22;
+ txt[i] = new GuiText("ardi");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=24;
+
+ txt[i] = new GuiText("Design:");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(170,y);
+ i++;
+
+ txt[i] = new GuiText("cyrex");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("NeoRame");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("WiiShizza");
+ txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
+ i++;
+ y+=28;
+
+ txt[i] = new GuiText(LANGUAGE.Specialthanksto);
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(-50,y);
+ i++;
+
+ txt[i] = new GuiText(":");
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(30,y+3);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("Fishears/Nuke Ocarina & WiiPower Vidpatch");
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
+ i++;
+
+ txt[i] = new GuiText(LANGUAGE.For);
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(-80,y);
+ txt[i]->SetPosition(-80, y);
+ i++;
+ txt[i] = new GuiText(LANGUAGE.For);
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(130,y);
+ txt[i]->SetPosition(130, y);
+ i++;
+
+ y+=22;
+
+ txt[i] = new GuiText("Tantric libwiigui");
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
+ i++;
+ txt[i] = new GuiText(LANGUAGE.For);
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); //txt[i]->SetPosition(-3,y);
+ txt[i]->SetPosition(-3, y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText("Waninkoko & Kwiirk USB Loader");
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
+ i++;
+ txt[i] = new GuiText(LANGUAGE.For);
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(30,y);
+ txt[i]->SetPosition(30, y);
+ i++;
+ y+=22;
+
+ txt[i] = new GuiText(LANGUAGE.theUSBLoaderandreleasingthesourcecode);
+ txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
+ i++;
+ y+=22;
+
+ for(i=0; i < numEntries; i++)
+ creditsWindowBox.Append(txt[i]);
+
+
+ creditsWindow.Append(&creditsWindowBox);
+ creditsWindow.Append(&starImg);
+
+ creditsWindow.SetEffect(EFFECT_FADE, 30);
+
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&creditsWindow);
+ ResumeGui();
+
+ while(!exit)
+ {
+ angle++;
+ if(angle > 360)
+ angle = 0;
+ usleep(12000);
+ starImg.SetAngle(angle);
+ if(ButtonsPressed() != 0)
+ exit = true;
+
+ }
+
+ creditsMusic->Stop();
+
+ delete creditsMusic;
+
+ creditsWindow.SetEffect(EFFECT_FADE, -30);
+ while(creditsWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ mainWindow->Remove(&creditsWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ for(i=0; i < numEntries; i++) {
+ delete txt[i];
+ txt[i] = NULL;
+ }
+ ResumeGui();
+
+ if(!strcmp("", Settings.oggload_path) || !strcmp("notset", Settings.ogg_path)) {
+ bgMusic->Play();
+ } else {
+ bgMusic->PlayOggFile(Settings.ogg_path);
+ }
+ bgMusic->SetPlayTime(thetimeofbg);
+ SetVolumeOgg(255*(vol/100.0));
+}
+
+/****************************************************************************
+ * WindowPrompt
+ *
+ * Displays a prompt window to user, with information, an error message, or
+ * presenting a user with a choice of up to 4 Buttons.
+ *
+ * Give him 1 Titel, 1 Subtitel and 4 Buttons
+ * If titel/subtitle or one of the buttons is not needed give him a 0 on that
+ * place.
+ ***************************************************************************/
+int
+WindowPrompt(const char *title, const char *msg, const char *btn1Label,
+ const char *btn2Label, const char *btn3Label,
+ const char *btn4Label)
+{
+ int choice = -1;
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+ char imgPath[50];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigB;
+ trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);
+ }
+
+ GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,55);
+ GuiText msgTxt(msg, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ msgTxt.SetPosition(0,-40);
+ msgTxt.SetMaxWidth(430);
+
+ GuiText btn1Txt(btn1Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn1Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn1Txt.SetWidescreen(CFG.widescreen);
+ btn1Img.SetWidescreen(CFG.widescreen);
+ }
+
+ GuiButton btn1(&btn1Img, &btn1Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
+ btn1.SetLabel(&btn1Txt);
+ btn1.SetState(STATE_SELECTED);
+
+ GuiText btn2Txt(btn2Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn2Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn2Txt.SetWidescreen(CFG.widescreen);
+ btn2Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn2(&btn2Img, &btn2Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
+ btn2.SetLabel(&btn2Txt);
+ if(!btn3Label && !btn4Label)
+ btn2.SetTrigger(&trigB);
+
+ GuiText btn3Txt(btn3Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn3Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn3Txt.SetWidescreen(CFG.widescreen);
+ btn3Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn3(&btn3Img, &btn3Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
+ btn3.SetLabel(&btn3Txt);
+ if(!btn4Label)
+ btn3.SetTrigger(&trigB);
+
+ GuiText btn4Txt(btn4Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn4Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn4Txt.SetWidescreen(CFG.widescreen);
+ btn4Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn4(&btn4Img, &btn4Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
+ btn4.SetLabel(&btn4Txt);
+ if(btn4Label)
+ btn4.SetTrigger(&trigB);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
+ msgTxt.SetMaxWidth(330);
+
+ if(btn2Label && !btn3Label && !btn4Label)
+ {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(70, -80);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-70, -80);
+ btn3.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn3.SetPosition(-70, -55);
+ btn4.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn4.SetPosition(70, -55);
+ } else if(btn2Label && btn3Label && !btn4Label) {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(70, -120);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-70, -120);
+ btn3.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn3.SetPosition(0, -55);
+ btn4.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn4.SetPosition(70, -55);
+ } else if(btn2Label && btn3Label && btn4Label) {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(70, -120);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-70, -120);
+ btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn3.SetPosition(70, -55);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-70, -55);
+ } else if(!btn2Label && btn3Label && btn4Label) {
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -120);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-70, -120);
+ btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn3.SetPosition(70, -55);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-70, -55);
+ } else {
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -80);
+ btn2.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn2.SetPosition(70, -120);
+ btn3.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn3.SetPosition(-70, -55);
+ btn4.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn4.SetPosition(70, -55);
+ }
+ } else {
+
+ if(btn2Label && !btn3Label && !btn4Label) {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(40, -45);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-40, -45);
+ btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn3.SetPosition(50, -65);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-50, -65);
+ } else if(btn2Label && btn3Label && !btn4Label) {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(50, -120);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-50, -120);
+ btn3.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn3.SetPosition(0, -65);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-50, -65);
+ } else if(btn2Label && btn3Label && btn4Label) {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(50, -120);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-50, -120);
+ btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn3.SetPosition(50, -65);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-50, -65);
+ } else if(!btn2Label && btn3Label && btn4Label) {
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -120);
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-50, -120);
+ btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn3.SetPosition(50, -65);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-50, -65);
+ } else {
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -45);
+ btn2.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn2.SetPosition(50, -120);
+ btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn3.SetPosition(50, -65);
+ btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn4.SetPosition(-50, -65);
+ }
+
+ }
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&msgTxt);
+
+ if(btn1Label)
+ promptWindow.Append(&btn1);
+ if(btn2Label)
+ promptWindow.Append(&btn2);
+ if(btn3Label)
+ promptWindow.Append(&btn3);
+ if(btn4Label)
+ promptWindow.Append(&btn4);
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+
+ while(choice == -1)
+ {
+ VIDEO_WaitVSync();
+ if(shutdown == 1)
+ {
+ wiilight(0);
+ Sys_Shutdown();
+ }
+ if(reset == 1)
+ Sys_Reboot();
+ if(btn1.GetState() == STATE_CLICKED) {
+ choice = 1;
+ }
+ else if(btn2.GetState() == STATE_CLICKED) {
+ if(!btn3Label)
+ choice = 0;
+ else
+ choice = 2;
+ }
+ else if(btn3.GetState() == STATE_CLICKED) {
+ if(!btn4Label)
+ choice = 0;
+ else
+ choice = 3;
+ }
+ else if(btn4.GetState() == STATE_CLICKED) {
+ choice = 0;
+ }
+ }
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ while(promptWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+ return choice;
+}
+
+/****************************************************************************
+ * WindowExitPrompt
+ *
+ * Displays a prompt window to user, with information, an error message, or
+ * presenting a user with a choice of up to 4 Buttons.
+ *
+ * Give him 1 Titel, 1 Subtitel and 4 Buttons
+ * If titel/subtitle or one of the buttons is not needed give him a 0 on that
+ * place.
+ ***************************************************************************/
+int
+WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
+ const char *btn2Label, const char *btn3Label,
+ const char *btn4Label)
+{
+ GuiSound * homein = NULL;
+ homein = new GuiSound(menuin_ogg, menuin_ogg_size, SOUND_OGG, vol);
+ homein->SetVolume(vol);
+ homein->SetLoop(0);
+ homein->Play();
+
+ GuiSound * homeout = NULL;
+ homeout = new GuiSound(menuout_ogg, menuout_ogg_size, SOUND_OGG, vol);
+ homeout->SetVolume(vol);
+ homeout->SetLoop(0);
+
+ int choice = -1;
+ char imgPath[100];
+ u8 HBC=0;
+ GuiWindow promptWindow(640,480);
+ promptWindow.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ promptWindow.SetPosition(0, 0);
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ GuiImageData top(exit_top_png);
+ GuiImageData topOver(exit_top_over_png);
+ GuiImageData bottom(exit_bottom_png);
+ GuiImageData bottomOver(exit_bottom_over_png);
+ GuiImageData button(exit_button_png);
+ GuiImageData wiimote(wiimote_png);
+ GuiImageData close(closebutton_png);
+
+ snprintf(imgPath, sizeof(imgPath), "%sbattery_white.png", CFG.theme_path);
+ GuiImageData battery(imgPath, battery_white_png);
+ snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path);
+ GuiImageData batteryRed(imgPath, battery_red_png);
+ snprintf(imgPath, sizeof(imgPath), "%sbattery_bar_white.png", CFG.theme_path);
+ GuiImageData batteryBar(imgPath, battery_bar_white_png);
+
+ #ifdef HW_RVL
+ int i = 0, ret = 0, level;
+ char txt[3];
+ GuiText * batteryTxt[4];
+ GuiImage * batteryImg[4];
+ GuiImage * batteryBarImg[4];
+ GuiButton * batteryBtn[4];
+
+ for(i=0; i < 4; i++)
+ {
+
+ if(i == 0)
+ sprintf(txt, "P%d", i+1);
+ else
+ sprintf(txt, "P%d", i+1);
+
+ batteryTxt[i] = new GuiText(txt, 22, (GXColor){255,255,255, 255});
+ batteryTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ batteryImg[i] = new GuiImage(&battery);
+ batteryImg[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ batteryImg[i]->SetPosition(36, 0);
+ batteryImg[i]->SetTile(0);
+ batteryBarImg[i] = new GuiImage(&batteryBar);
+ batteryBarImg[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ batteryBarImg[i]->SetPosition(33, 0);
+
+ batteryBtn[i] = new GuiButton(40, 20);
+ batteryBtn[i]->SetLabel(batteryTxt[i]);
+ batteryBtn[i]->SetImage(batteryBarImg[i]);
+ batteryBtn[i]->SetIcon(batteryImg[i]);
+ batteryBtn[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ batteryBtn[i]->SetRumble(false);
+ batteryBtn[i]->SetAlpha(70);
+ batteryBtn[i]->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
+ }
+
+ batteryBtn[0]->SetPosition(180,150);
+ batteryBtn[1]->SetPosition(284, 150);
+ batteryBtn[2]->SetPosition(388, 150);
+ batteryBtn[3]->SetPosition(494, 150);
+
+
+ char * sig = (char *)0x80001804;
+ if(
+ sig[0] == 'S' &&
+ sig[1] == 'T' &&
+ sig[2] == 'U' &&
+ sig[3] == 'B' &&
+ sig[4] == 'H' &&
+ sig[5] == 'A' &&
+ sig[6] == 'X' &&
+ sig[7] == 'X')
+ HBC=1; // Exit to HBC
+ #endif
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigB;
+ trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+ GuiTrigger trigHome;
+ trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
+
+ GuiText titleTxt(LANGUAGE.Homemenu, 36, (GXColor){255, 255, 255, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(-180,40);
+ titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+
+ GuiText closeTxt(LANGUAGE.Close, 28, (GXColor){0, 0, 0, 255});
+ closeTxt.SetPosition(10,3);
+ GuiImage closeImg(&close);
+ if (Settings.wsprompt == yes){
+ closeTxt.SetWidescreen(CFG.widescreen);
+ closeImg.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton closeBtn(close.GetWidth(), close.GetHeight());
+ closeBtn.SetImage(&closeImg);
+ closeBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ closeBtn.SetPosition(190,30);
+ closeBtn.SetLabel(&closeTxt);
+ closeBtn.SetRumble(false);
+ closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+
+ GuiImage btn1Img(&top);
+ GuiImage btn1OverImg(&topOver);
+ GuiButton btn1(&btn1Img,&btn1OverImg, 0, 3, 0, 0, &trigA, &btnSoundOver, &btnClick,0);
+ btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+
+ GuiText btn2Txt(btn1Label, 28, (GXColor){0, 0, 0, 255});
+ GuiImage btn2Img(&button);
+ if (Settings.wsprompt == yes){
+ btn2Txt.SetWidescreen(CFG.widescreen);
+ btn2Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn2(&btn2Img,&btn2Img, 2, 5, -150, 0, &trigA, &btnSoundOver, &btnClick,1);
+ btn2.SetLabel(&btn2Txt);
+ btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
+ btn2.SetRumble(false);
+ if (HBC==1){btn2.SetPosition(-150, 0);}
+
+ GuiText btn3Txt(btn2Label, 28, (GXColor){0, 0, 0, 255});
+ GuiImage btn3Img(&button);
+ if (Settings.wsprompt == yes){
+ btn3Txt.SetWidescreen(CFG.widescreen);
+ btn3Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn3(&btn3Img,&btn3Img, 2, 5, 150, 0, &trigA, &btnSoundOver, &btnClick,1);
+ btn3.SetLabel(&btn3Txt);
+ btn3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 50);
+ btn3.SetRumble(false);
+ if (HBC==1){btn3.SetPosition(150, 0);}
+ else {btn3.SetPosition(0,0);}
+
+ GuiImage btn4Img(&bottom);
+ GuiImage btn4OverImg(&bottomOver);
+ GuiButton btn4(&btn4Img,&btn4OverImg, 0, 4, 0, 0, &trigA, &btnSoundOver, &btnClick,0);
+ btn4.SetTrigger(&trigB);
+ btn4.SetTrigger(&trigHome);
+ btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
+
+ GuiImage wiimoteImg(&wiimote);
+ if (Settings.wsprompt == yes){wiimoteImg.SetWidescreen(CFG.widescreen);}
+ wiimoteImg.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ wiimoteImg.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
+ wiimoteImg.SetPosition(50,210);
+
+ if (HBC==1){promptWindow.Append(&btn2);}
+ promptWindow.Append(&btn3);
+ promptWindow.Append(&btn4);
+ promptWindow.Append(&btn1);
+ promptWindow.Append(&closeBtn);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&wiimoteImg);
+
+ #ifdef HW_RVL
+ promptWindow.Append(batteryBtn[0]);
+ promptWindow.Append(batteryBtn[1]);
+ promptWindow.Append(batteryBtn[2]);
+ promptWindow.Append(batteryBtn[3]);
+ #endif
+
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+
+ while(choice == -1)
+ {
+ VIDEO_WaitVSync();
+
+ #ifdef HW_RVL
+ for(i=0; i < 4; i++)
+ {
+ if(WPAD_Probe(i, NULL) == WPAD_ERR_NONE) // controller connected
+ {
+ level = (userInput[i].wpad.battery_level / 100.0) * 4;
+ if(level > 4) level = 4;
+ batteryImg[i]->SetTile(level);
+
+ if(level == 0)
+ batteryBarImg[i]->SetImage(&batteryRed);
+ else
+ batteryBarImg[i]->SetImage(&batteryBar);
+
+ batteryBtn[i]->SetAlpha(255);
+ }
+ else // controller not connected
+ {
+ batteryImg[i]->SetTile(0);
+ batteryImg[i]->SetImage(&battery);
+ batteryBtn[i]->SetAlpha(70);
+ }
+ }
+ #endif
+
+
+ if(shutdown == 1)
+ {
+ wiilight(0);
+ Sys_Shutdown();
+ }
+ if(reset == 1)
+ Sys_Reboot();
+ if(btn1.GetState() == STATE_CLICKED) {
+ choice = 1;
+ btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
+ btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
+ btn3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
+ titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ wiimoteImg.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
+ #ifdef HW_RVL
+ for (int i = 0; i < 4; i++)
+ batteryBtn[i]->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
+ #endif
+ }
+ else if(btn4.GetState() == STATE_SELECTED)
+ {
+ wiimoteImg.SetPosition(50,165);
+ }
+ else if(btn2.GetState() == STATE_CLICKED) {
+ ret = WindowPrompt(LANGUAGE.Areyousure, 0, LANGUAGE.Yes, LANGUAGE.No, 0, 0);
+ if (ret == 1) {
+ choice = 2;
+ }
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ promptWindow.SetState(STATE_DEFAULT);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+ btn2.ResetState();
+ }
+ else if(btn3.GetState() == STATE_CLICKED) {
+ ret = WindowPrompt(LANGUAGE.Areyousure, 0, LANGUAGE.Yes, LANGUAGE.No, 0, 0);
+ if (ret == 1) {
+ choice = 3;
+ }
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ promptWindow.SetState(STATE_DEFAULT);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+ btn3.ResetState();
+ }
+ else if(btn4.GetState() == STATE_CLICKED) {
+ btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
+ btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
+ btn3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
+ titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ wiimoteImg.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
+ #ifdef HW_RVL
+ for (int i = 0; i < 4; i++)
+ batteryBtn[i]->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
+ #endif
+ choice = 0;
+ }
+ else if(btn4.GetState() != STATE_SELECTED)
+ {
+ wiimoteImg.SetPosition(50,210);
+ }
+ }
+ homeout->Play();
+ while(btn1.GetEffect() > 0) usleep(50);
+ while(promptWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ homein->Stop();
+ delete homein;
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ while(homeout->IsPlaying() > 0) usleep(50);
+ homeout->Stop();
+ delete homeout;
+ ResumeGui();
+ return choice;
+}
+
+/****************************************************************************
+ * GameWindowPrompt
+ *
+ * Displays a prompt window to user, with information, an error message, or
+ * presenting a user with a choice
+ ***************************************************************************/
+int GameWindowPrompt()
+{
+ int choice = -1, angle = 0;
+ f32 size = 0.0;
+ char ID[5];
+ char IDFull[7];
+
+ u8 faveChoice = 0;
+ u16 playCount = 0;
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+
+ snprintf(imgPath, sizeof(imgPath), "%sfavorite.png", CFG.theme_path);
+ GuiImageData imgFavorite(imgPath, favorite_png);
+ snprintf(imgPath, sizeof(imgPath), "%snot_favorite.png", CFG.theme_path);
+ GuiImageData imgNotFavorite(imgPath, not_favorite_png);
+
+ snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_left.png", CFG.theme_path);
+ GuiImageData imgLeft(imgPath, startgame_arrow_left_png);
+ snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_right.png", CFG.theme_path);
+ GuiImageData imgRight(imgPath, startgame_arrow_right_png);
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigB;
+ trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+ GuiTrigger trigL;
+ trigL.SetButtonOnlyTrigger(-1, WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT, PAD_BUTTON_LEFT);
+ GuiTrigger trigR;
+ trigR.SetButtonOnlyTrigger(-1, WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT, PAD_BUTTON_RIGHT);
+ GuiTrigger trigPlus;
+ trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
+ GuiTrigger trigMinus;
+ trigMinus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0);
+
+ if (CFG.widescreen)
+ snprintf(imgPath, sizeof(imgPath), "%swdialogue_box_startgame.png", CFG.theme_path);
+ else
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box_startgame.png", CFG.theme_path);
+
+ GuiImageData dialogBox(imgPath, CFG.widescreen ? wdialogue_box_startgame_png : dialogue_box_startgame_png);
+ GuiImage dialogBoxImg(&dialogBox);
+
+ GuiTooltip nameBtnTT(LANGUAGE.RenameGameonWBFS);
+ if (Settings.wsprompt == yes)
+ nameBtnTT.SetWidescreen(CFG.widescreen);
+ GuiText nameTxt("", 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ if (Settings.wsprompt == yes)
+ nameTxt.SetWidescreen(CFG.widescreen);
+ nameTxt.SetMaxWidth(350, GuiText::SCROLL);
+ GuiButton nameBtn(120,50);
+ nameBtn.SetLabel(&nameTxt);
+// nameBtn.SetLabelOver(&nameTxt);
+ nameBtn.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ nameBtn.SetPosition(0,-122);
+ nameBtn.SetSoundOver(&btnSoundOver);
+ nameBtn.SetSoundClick(&btnClick);
+ nameBtn.SetToolTip(&nameBtnTT,24,-30, ALIGN_LEFT);
+
+ if (Settings.godmode == 1){
+ nameBtn.SetTrigger(&trigA);
+ nameBtn.SetEffectGrow();
+ }
+
+ GuiText sizeTxt(NULL, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //TODO: get the size here
+ sizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
+ sizeTxt.SetPosition(-60,70);
+
+// GuiImage diskImg;
+ GuiDiskCover diskImg;
+ diskImg.SetWidescreen(CFG.widescreen);
+ diskImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ diskImg.SetAngle(angle);
+ GuiDiskCover diskImg2;
+ diskImg2.SetWidescreen(CFG.widescreen);
+ diskImg2.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ diskImg2.SetPosition(0, -20);
+ diskImg2.SetAngle(angle);
+ diskImg2.SetBeta(180);
+
+ GuiText playcntTxt(NULL, 18, (GXColor){THEME.info_r, THEME.info_g, THEME.info_b, 255});
+ playcntTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ playcntTxt.SetPosition(-115,45);
+
+ GuiButton btn1(160, 160);
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ btn1.SetPosition(0, -20);
+ btn1.SetImage(&diskImg);
+
+ btn1.SetSoundOver(&btnSoundOver);
+ btn1.SetSoundClick(&btnClick);
+ btn1.SetTrigger(&trigA);
+ btn1.SetState(STATE_SELECTED);
+
+ GuiText btn2Txt(LANGUAGE.Back, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn2Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn2Txt.SetWidescreen(CFG.widescreen);
+ btn2Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn2(&btn2Img,&btn2Img, 1, 5, 0, 0, &trigA, &btnSoundOver, &btnClick,1);
+ if (Settings.godmode == 1)
+ {
+ btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
+ btn2.SetPosition(-50, -40);
+ }
+ else
+ {
+ btn2.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn2.SetPosition(0, -40);
+ }
+
+ btn2.SetLabel(&btn2Txt);
+ btn2.SetTrigger(&trigB);
+
+ GuiText btn3Txt(LANGUAGE.settings, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn3Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn3Txt.SetWidescreen(CFG.widescreen);
+ btn3Img.SetWidescreen(CFG.widescreen);}
+ GuiButton btn3(&btn3Img,&btn3Img, 0, 4, 50, -40, &trigA, &btnSoundOver, &btnClick,1);
+ btn3.SetLabel(&btn3Txt);
+
+ GuiImage btnFavoriteImg;
+ btnFavoriteImg.SetWidescreen(CFG.widescreen);
+ //GuiButton btnFavorite(&btnFavoriteImg,&btnFavoriteImg, 2, 5, -125, -60, &trigA, &btnSoundOver, &btnClick,1);
+ GuiButton btnFavorite(imgFavorite.GetWidth(), imgFavorite.GetHeight());
+ btnFavorite.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ btnFavorite.SetPosition(-125, -60);
+ btnFavorite.SetImage(&btnFavoriteImg);
+ btnFavorite.SetSoundOver(&btnSoundOver);
+ btnFavorite.SetSoundClick(&btnClick);
+ btnFavorite.SetTrigger(&trigA);
+ btnFavorite.SetEffectGrow();
+
+ GuiImage btnLeftImg(&imgLeft);
+ if (Settings.wsprompt == yes)
+ {
+ btnLeftImg.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btnLeft(&btnLeftImg,&btnLeftImg, 0, 5, 20, 0, &trigA, &btnSoundOver, &btnClick,1);
+ btnLeft.SetTrigger(&trigL);
+ btnLeft.SetTrigger(&trigMinus);
+
+ GuiImage btnRightImg(&imgRight);
+ if (Settings.wsprompt == yes)
+ {
+ btnRightImg.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btnRight(&btnRightImg,&btnRightImg, 1, 5, -20, 0, &trigA, &btnSoundOver, &btnClick,1);
+ btnRight.SetTrigger(&trigR);
+ btnRight.SetTrigger(&trigPlus);
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&nameBtn);
+ promptWindow.Append(&sizeTxt);
+ promptWindow.Append(&playcntTxt);
+ promptWindow.Append(&btn2);
+ promptWindow.Append(&btnLeft);
+ promptWindow.Append(&btnRight);
+ promptWindow.Append(&btnFavorite);
+
+ //check if unlocked
+ if (Settings.godmode == 1)
+ {
+ promptWindow.Append(&btn3);
+ }
+
+ promptWindow.Append(&diskImg2);
+ promptWindow.Append(&btn1);
+
+ short changed = -1;
+ GuiImageData * diskCover = NULL;
+ GuiImageData * diskCover2 = NULL;
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+
+ while (changed)
+ {
+ if (changed == 1){
+ promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
+ }
+ else if (changed == 2){
+ promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 50);
+ }
+ else if (changed == 3 || changed == 4)
+ {
+ if(diskCover2)
+ delete diskCover2;
+ diskCover2 = NULL;
+ if(diskCover)
+ diskCover2 = diskCover;
+ diskCover = NULL;
+ }
+
+ //load disc image based or what game is seleted
+ struct discHdr * header = &gameList[gameSelected];
+
+ snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]);
+ snprintf (IDFull,sizeof(IDFull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
+
+ if (diskCover)
+ delete diskCover;
+
+ snprintf(imgPath,sizeof(imgPath),"%s%s.png", Settings.disc_path, IDFull); //changed to current full id
+ diskCover = new GuiImageData(imgPath,0);
+
+ if (!diskCover->GetImage())
+ {
+ delete diskCover;
+ snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.disc_path, ID); //changed to current id
+ diskCover = new GuiImageData(imgPath, 0);
+
+
+ if (!diskCover->GetImage())
+ { snprintf (ID,sizeof(ID),"%c%c%c%c", header->id[0], header->id[1], header->id[2], header->id[3]);
+
+ delete diskCover;
+ snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.disc_path, ID); //changed to current id
+ diskCover = new GuiImageData(imgPath, 0);
+ if (!diskCover->GetImage())
+ {
+ delete diskCover;
+ snprintf(imgPath, sizeof(imgPath), "%snodisc.png", Settings.disc_path); //changed to nodisc.png
+ diskCover = new GuiImageData(imgPath,nodisc_png);
+ }
+ }
+ }
+
+
+
+ if (changed == 3){
+ diskImg.SetImage(diskCover2);
+ diskImg.SetBeta(0);
+ diskImg.SetBetaRotateEffect(-90, 15);
+ diskImg2.SetImage(diskCover);
+ diskImg2.SetAngle(diskImg.GetAngle());
+ diskImg2.SetBeta(180);
+ diskImg2.SetBetaRotateEffect(-90, 15);
+ sizeTxt.SetEffect(EFFECT_FADE, -17);
+ nameTxt.SetEffect(EFFECT_FADE, -17);
+ ResumeGui();
+ while(nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect()) usleep(50);
+ HaltGui();
+ diskImg.SetImage(diskCover);
+ diskImg.SetBeta(90);
+ diskImg.SetBetaRotateEffect(-90, 15);
+ diskImg2.SetImage(diskCover2);
+ diskImg2.SetBeta(270);
+ diskImg2.SetBetaRotateEffect(-90, 15);
+ sizeTxt.SetEffect(EFFECT_FADE, 17);
+ nameTxt.SetEffect(EFFECT_FADE, 17);
+ }
+ else if (changed == 4){
+ diskImg.SetImage(diskCover2);
+ diskImg.SetBeta(0);
+ diskImg.SetBetaRotateEffect(90, 15);
+ diskImg2.SetImage(diskCover);
+ diskImg2.SetAngle(diskImg.GetAngle());
+ diskImg2.SetBeta(180);
+ diskImg2.SetBetaRotateEffect(90, 15);
+ sizeTxt.SetEffect(EFFECT_FADE, -17);
+ nameTxt.SetEffect(EFFECT_FADE, -17);
+ ResumeGui();
+ while(nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect()) usleep(50);
+ HaltGui();
+ diskImg.SetImage(diskCover);
+ diskImg.SetBeta(270);
+ diskImg.SetBetaRotateEffect(90, 15);
+ diskImg2.SetImage(diskCover2);
+ diskImg2.SetBeta(90);
+ diskImg2.SetBetaRotateEffect(90, 15);
+ sizeTxt.SetEffect(EFFECT_FADE, 17);
+ nameTxt.SetEffect(EFFECT_FADE, 17);
+ }
+ else
+ diskImg.SetImage(diskCover);
+
+ WBFS_GameSize(header->id, &size);
+ sizeTxt.SetTextf("%.2fGB", size); //set size text;
+ nameTxt.SetText(get_title(header));
+
+ struct Game_NUM* game_num = CFG_get_game_num(header->id);
+ if (game_num) {
+ playCount = game_num->count;
+ faveChoice = game_num->favorite;
+ } else {
+ playCount = 0;
+ faveChoice = 0;
+ }
+ playcntTxt.SetTextf("%s: %i",LANGUAGE.Plays, playCount);
+ btnFavoriteImg.SetImage(faveChoice ? &imgFavorite : &imgNotFavorite);
+
+ nameTxt.SetPosition(0, 1);
+
+ if(changed != 3 && changed != 4) // changed==3 or changed==4 --> only Resume the GUI
+ {
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ }
+ ResumeGui();
+
+ changed = 0;
+ while(choice == -1)
+ {
+ diskImg.SetSpin(btn1.GetState() == STATE_SELECTED);
+ diskImg2.SetSpin(btn1.GetState() == STATE_SELECTED);
+ if(shutdown == 1) //for power button
+ {
+ wiilight(0);
+ Sys_Shutdown();
+ }
+ if(reset == 1) //for reset button
+ Sys_Reboot();
+
+ if(btn1.GetState() == STATE_CLICKED) { //boot
+ //////////save game play count////////////////
+ extern u8 favorite;
+ extern u16 count;
+ struct Game_NUM* game_num = CFG_get_game_num(header->id);
+ if (game_num)
+ {
+ favorite = game_num->favorite;
+ count = game_num->count;//count+=1;
+ }count+=1;
+ if(isSdInserted()) {
+ if (CFG_save_game_num(header->id))
+ {
+ //WindowPrompt(LANGUAGE.SuccessfullySaved, 0, LANGUAGE.ok, 0,0,0);
+ }
+ else
+ {
+ //WindowPrompt(LANGUAGE.SaveFailed, 0, LANGUAGE.ok, 0,0,0);
+ }
+ }
+ ////////////end save play count//////////////
+
+ choice = 1;
+ SDCard_deInit();
+ }
+
+ else if(btn2.GetState() == STATE_CLICKED) { //back
+ choice = 0;
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ mainWindow->SetState(STATE_DEFAULT);
+ wiilight(0);
+ }
+
+ else if(btn3.GetState() == STATE_CLICKED) { //settings
+ choice = 2;
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ }
+
+ else if(nameBtn.GetState() == STATE_CLICKED) { //rename
+ choice = 3;
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ }
+
+ else if(btnFavorite.GetState() == STATE_CLICKED){//switch favorite
+ if(isSdInserted()) {
+ faveChoice = !faveChoice;
+ btnFavoriteImg.SetImage(faveChoice ? &imgFavorite : &imgNotFavorite);
+ extern u8 favorite;
+ extern u8 count;
+ struct Game_NUM* game_num = CFG_get_game_num(header->id);
+ if (game_num) {
+ favorite = game_num->favorite;
+ count = game_num->count;
+ }
+ favorite = faveChoice;
+ CFG_save_game_num(header->id);
+ }
+ btnFavorite.ResetState();
+ }
+
+ // this next part is long because nobody could agree on what the left/right buttons should do
+ else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == no)){//next game
+ promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
+ changed = 1;
+ btnClick.Play();
+ gameSelected = (gameSelected + 1) % gameCnt;
+ btnRight.ResetState();
+ break;
+ }
+
+ else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == no)){//previous game
+ promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
+ changed = 2;
+ btnClick.Play();
+ gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
+ btnLeft.ResetState();
+ break;
+ }
+
+ else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == yes)){//previous game
+ promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
+ changed = 2;
+ btnClick.Play();
+ gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
+ btnRight.ResetState();
+ break;
+ }
+
+ else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == yes)){//netx game
+ promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
+ changed = 1;
+ btnClick.Play();
+ gameSelected = (gameSelected + 1) % gameCnt;
+ btnLeft.ResetState();
+ break;
+ }
+
+ else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == sysmenu)){//previous game
+ promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
+ changed = 2;
+ btnClick.Play();
+ gameSelected = (gameSelected + 1) % gameCnt;
+ btnRight.ResetState();
+ break;
+ }
+
+ else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == sysmenu)){//netx game
+ promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
+ changed = 1;
+ btnClick.Play();
+ gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
+ btnLeft.ResetState();
+ break;
+ }
+
+ else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == wtf)){//previous game
+ promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
+ changed = 1;
+ btnClick.Play();
+ gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
+ btnRight.ResetState();
+ break;
+ }
+
+ else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == wtf)){//netx game
+ promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
+ changed = 2;
+ btnClick.Play();
+ gameSelected = (gameSelected + 1) % gameCnt;
+ btnLeft.ResetState();
+ break;
+ }
+
+ else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == disk3d)){//next game
+// diskImg.SetBetaRotateEffect(45, 90);
+ changed = 3;
+ btnClick.Play();
+ gameSelected = (gameSelected + 1) % gameCnt;
+ btnRight.ResetState();
+ break;
+ }
+
+ else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == disk3d)){//previous game
+// diskImg.SetBetaRotateEffect(-45, 90);
+// promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 1/*50*/);
+ changed = 4;
+ btnClick.Play();
+ gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
+ btnLeft.ResetState();
+ break;
+ }
+ }
+
+
+ while(promptWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ if(changed != 3 && changed != 4) // changed==3 or changed==4 --> only Halt the GUI
+ {
+ mainWindow->Remove(&promptWindow);
+ ResumeGui();
+ }
+ }
+ delete diskCover;
+ delete diskCover2;
+
+ return choice;
+}
+
+/****************************************************************************
+ * DiscWait
+ ***************************************************************************/
+int
+DiscWait(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, int IsDeviceWait)
+{
+ int i = 30, ret = 0;
+ u32 cover = 0;
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigB;
+ trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);
+ }
+
+ GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,60);
+ GuiText msgTxt(msg, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ msgTxt.SetPosition(0,-40);
+ msgTxt.SetMaxWidth(430);
+
+ GuiText btn1Txt(btn1Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn1Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn1Txt.SetWidescreen(CFG.widescreen);
+ btn1Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn1(&btn1Img,&btn1Img, 1, 5, 0, 0, &trigA, &btnSoundOver, &btnClick,1);
+
+ if(btn2Label)
+ {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn1.SetPosition(40, -45);
+ }
+ else
+ {
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -45);
+ }
+
+ btn1.SetLabel(&btn1Txt);
+ btn1.SetTrigger(&trigB);
+ btn1.SetState(STATE_SELECTED);
+
+ GuiText btn2Txt(btn2Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn2Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn2Txt.SetWidescreen(CFG.widescreen);
+ btn2Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn2(&btn2Img,&btn2Img, 1, 4, -20, -25, &trigA, &btnSoundOver, &btnClick,1);
+ btn2.SetLabel(&btn2Txt);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
+ msgTxt.SetMaxWidth(380);
+ if(btn2Label)
+ {
+ btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ btn2.SetPosition(-70, -80);
+ btn1.SetPosition(70, -80);
+ }
+ else
+ {
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -80);
+ }
+ }
+
+ GuiText timerTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ timerTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ timerTxt.SetPosition(0,160);
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&msgTxt);
+
+ if(btn1Label)
+ promptWindow.Append(&btn1);
+ if(btn2Label)
+ promptWindow.Append(&btn2);
+ if(IsDeviceWait)
+ promptWindow.Append(&timerTxt);
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+
+ if(IsDeviceWait) {
+ while(i >= 0)
+ {
+ timerTxt.SetTextf("%u %s", i,LANGUAGE.secondsleft);
+ VIDEO_WaitVSync();
+ if(Settings.cios == ios222) {
+ ret = IOS_ReloadIOS(222);
+ } else {
+ ret = IOS_ReloadIOS(249);
+ }
+ sleep(1);
+ ret = WBFS_Init(WBFS_DEVICE_USB);
+ if(ret>=0)
+ break;
+
+ i--;
+ }
+ } else {
+ while(!(cover & 0x2))
+ {
+ VIDEO_WaitVSync();
+ if(btn1.GetState() == STATE_CLICKED) {
+ btn1.ResetState();
+ break;
+ }
+ ret = WDVD_GetCoverStatus(&cover);
+ if (ret < 0)
+ break;
+ }
+ }
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ while(promptWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+ return ret;
+}
+
+/****************************************************************************
+ * FormatingPartition
+ ***************************************************************************/
+int
+FormatingPartition(const char *title, partitionEntry *entry)
+{
+ int ret;
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);
+ }
+
+ GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,60);
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+
+ VIDEO_WaitVSync();
+ ret = WBFS_Format(entry->sector, entry->size);
+
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ while(promptWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+ return ret;
+}
+
+
+/****************************************************************************
+ * NetworkInit
+ ***************************************************************************/
+int NetworkInitPromp(int choice2)
+{
+ char hostip[16];
+ char * IP = NULL;
+ s32 ret = -1;
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);
+ }
+
+ GuiText titleTxt(LANGUAGE.InitializingNetwork, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,60);
+
+ char msg[20] = " ";
+ GuiText msgTxt(msg, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ msgTxt.SetPosition(0,-40);
+
+ GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn1Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn1Txt.SetWidescreen(CFG.widescreen);
+ btn1Img.SetWidescreen(CFG.widescreen);
+ }
+ GuiButton btn1(&btn1Img,&btn1Img, 2, 4, 0, -45, &trigA, &btnSoundOver, &btnClick,1);
+ btn1.SetLabel(&btn1Txt);
+ btn1.SetState(STATE_SELECTED);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
+ btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btn1.SetPosition(0, -80);
+ }
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&msgTxt);
+ promptWindow.Append(&btn1);
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+
+ ResumeGui();
+
+ while (!IP)
+ {
+
+ VIDEO_WaitVSync();
+
+ ret = Net_Init(hostip);
+
+ if (ret > 0) {
+ IP = hostip;
+ }
+
+ if (ret <= 0) {
+ msgTxt.SetText(LANGUAGE.Couldnotinitializenetwork);
+ }
+
+ if (IP && ret > 0) {
+ msgTxt.SetTextf("IP: %s", IP);
+ cntMissFiles = 0;
+ u32 i = 0;
+ char filename[11];
+
+ bool found1 = false;/////add Ids of games that are missing covers to cntMissFiles
+ bool found2 = false;
+ for (i = 0; i < gameCnt && cntMissFiles < 500; i++)
+ {
+ struct discHdr* header = &gameList[i];
+ if (choice2 != 3) {
+
+ snprintf (filename,sizeof(filename),"%c%c%c.png", header->id[0], header->id[1], header->id[2]);
+ found2 = findfile(filename, Settings.covers_path);
+ snprintf(filename,sizeof(filename),"%c%c%c%c%c%c.png",header->id[0], header->id[1], header->id[2],
+ header->id[3], header->id[4], header->id[5]); //full id
+ found1 = findfile(filename, Settings.covers_path);
+ if (!found1 && !found2) //if could not find any image
+ {
+ snprintf(missingFiles[cntMissFiles],11,"%s",filename);
+ cntMissFiles++;
+ }
+ }
+ else if (choice2 == 3) {
+ snprintf (filename,sizeof(filename),"%c%c%c.png", header->id[0], header->id[1], header->id[2]);
+ found2 = findfile(filename, Settings.disc_path);
+ snprintf(filename,sizeof(filename),"%c%c%c%c%c%c.png",header->id[0], header->id[1], header->id[2],
+ header->id[3], header->id[4], header->id[5]); //full id
+ found1 = findfile(filename,Settings.disc_path);
+ if (!found1 && !found2)
+ {
+ snprintf(missingFiles[cntMissFiles],11,"%s",filename);
+ cntMissFiles++;
+ }
+ }
+ }
+ break;
+ }
+
+ if(btn1.GetState() == STATE_CLICKED) {
+ IP = 0;
+ ret = -1;
+ break;
+ }
+
+ }
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ while(promptWindow.GetEffect() > 0) usleep(50);
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+
+ networkisinitialized = 1;
+
+ return ret;
+}
+
+/****************************************************************************
+ * ShowProgress
+ *
+ * Updates the variables used by the progress window for drawing a progress
+ * bar. Also resumes the progress window thread if it is suspended.
+ ***************************************************************************/
+void
+ShowProgress (s32 done, s32 total)
+{
+
+ static time_t start;
+ static u32 expected;
+
+ u32 d, h, m, s;
+
+ //first time
+ if (!done) {
+ start = time(0);
+ expected = 300;
+ }
+
+ //Elapsed time
+ d = time(0) - start;
+
+ if (done != total) {
+ //Expected time
+ if (d)
+ expected = (expected * 3 + d * total / done) / 4;
+
+ //Remaining time
+ d = (expected > d) ? (expected - d) : 0;
+ }
+
+ //Calculate time values
+ h = d / 3600;
+ m = (d / 60) % 60;
+ s = d % 60;
+
+ //Calculate percentage/size
+ f32 percent = (done * 100.0) / total;
+
+ prTxt.SetTextf("%0.2f", percent);
+
+ timeTxt.SetTextf("%s %d:%02d:%02d",LANGUAGE.Timeleft,h,m,s);
+
+ f32 gamesizedone = gamesize * done/total;
+
+ sizeTxt.SetTextf("%0.2fGB/%0.2fGB", gamesizedone, gamesize);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){
+ progressbarImg.SetTile((int)(80*done/total));}
+ else {progressbarImg.SetTile((int)(100*done/total));}
+
+}
+
+/****************************************************************************
+ * ProgressWindow
+ *
+ * Opens a window, which displays progress to the user. Can either display a
+ * progress bar showing % completion, or a throbber that only shows that an
+ * action is in progress.
+ ***************************************************************************/
+int
+ProgressWindow(const char *title, const char *msg)
+{
+
+ wbfs_t * hdd = NULL;
+ hdd = GetHddInfo();
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);}
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar_outline.png", CFG.theme_path);
+ GuiImageData progressbarOutline(imgPath, progressbar_outline_png);
+
+ GuiImage progressbarOutlineImg(&progressbarOutline);
+ if (Settings.wsprompt == yes){
+ progressbarOutlineImg.SetWidescreen(CFG.widescreen);}
+ progressbarOutlineImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarOutlineImg.SetPosition(25, 40);
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar_empty.png", CFG.theme_path);
+ GuiImageData progressbarEmpty(imgPath, progressbar_empty_png);
+ GuiImage progressbarEmptyImg(&progressbarEmpty);
+ progressbarEmptyImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarEmptyImg.SetPosition(25, 40);
+ progressbarEmptyImg.SetTile(100);
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar.png", CFG.theme_path);
+ GuiImageData progressbar(imgPath, progressbar_png);
+
+ progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarImg.SetPosition(25, 40);
+
+ GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,60);
+ GuiText msgTxt(msg, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ msgTxt.SetPosition(0,120);
+
+ GuiText prsTxt("%", 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ prsTxt.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
+ prsTxt.SetPosition(-188,40);
+
+ timeTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ timeTxt.SetPosition(275,-50);
+
+ sizeTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
+ sizeTxt.SetPosition(50, -50);
+
+ prTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ prTxt.SetPosition(200, 40);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
+ progressbarOutlineImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ progressbarOutlineImg.SetPosition(0, 40);
+ progressbarEmptyImg.SetPosition(80,40);
+ progressbarEmptyImg.SetTile(78);
+ progressbarImg.SetPosition(80, 40);
+ msgTxt.SetMaxWidth(380);
+
+ timeTxt.SetPosition(250,-50);
+ timeTxt.SetFontSize(22);
+ sizeTxt.SetPosition(90, -50);
+ sizeTxt.SetFontSize(22);
+ }
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&msgTxt);
+ promptWindow.Append(&progressbarEmptyImg);
+ promptWindow.Append(&progressbarImg);
+ promptWindow.Append(&progressbarOutlineImg);
+ promptWindow.Append(&prTxt);
+ promptWindow.Append(&prsTxt);
+ promptWindow.Append(&timeTxt);
+
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+ promptWindow.Append(&prTxt);
+ promptWindow.Append(&sizeTxt);
+
+ s32 ret;
+
+ __Disc_SetLowMem();
+
+ ret = wbfs_add_disc(hdd, __WBFS_ReadDVD, NULL, ShowProgress, ONLY_GAME_PARTITION, 0);
+
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+ if (ret < 0) {
+ return ret;
+ }
+ return 0;
+}
+
+/****************************************************************************
+ * ProgressWindow
+ *
+ * Opens a window, which displays progress to the user. Can either display a
+ * progress bar showing % completion, or a throbber that only shows that an
+ * action is in progress.
+ ***************************************************************************/
+int
+ProgressDownloadWindow(int choice2)
+{
+
+ int i = 0, cntNotFound = 0;
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);}
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar_outline.png", CFG.theme_path);
+ GuiImageData progressbarOutline(imgPath, progressbar_outline_png);
+ GuiImage progressbarOutlineImg(&progressbarOutline);
+ if (Settings.wsprompt == yes){
+ progressbarOutlineImg.SetWidescreen(CFG.widescreen);}
+ progressbarOutlineImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarOutlineImg.SetPosition(25, 40);
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar_empty.png", CFG.theme_path);
+ GuiImageData progressbarEmpty(imgPath, progressbar_empty_png);
+ GuiImage progressbarEmptyImg(&progressbarEmpty);
+ progressbarEmptyImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarEmptyImg.SetPosition(25, 40);
+ progressbarEmptyImg.SetTile(100);
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar.png", CFG.theme_path);
+ GuiImageData progressbar(imgPath, progressbar_png);
+ progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarImg.SetPosition(25, 40);
+
+ GuiText titleTxt(LANGUAGE.Downloadingfile, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,60);
+
+ GuiText msgTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ msgTxt.SetPosition(0,130);
+
+ GuiText msg2Txt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ msg2Txt.SetPosition(0,100);
+
+ prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ prTxt.SetPosition(0, 40);
+
+ GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn1Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn1Txt.SetWidescreen(CFG.widescreen);
+ btn1Img.SetWidescreen(CFG.widescreen);}
+ GuiButton btn1(&btn1Img,&btn1Img, 2, 4, 0, -45, &trigA, &btnSoundOver, &btnClick,1);
+ btn1.SetLabel(&btn1Txt);
+ btn1.SetState(STATE_SELECTED);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
+ progressbarOutlineImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ progressbarOutlineImg.SetPosition(0, 40);
+ progressbarEmptyImg.SetPosition(80,40);
+ progressbarEmptyImg.SetTile(78);
+ progressbarImg.SetPosition(80, 40);
+ }
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&msgTxt);
+ promptWindow.Append(&msg2Txt);
+ promptWindow.Append(&progressbarEmptyImg);
+ promptWindow.Append(&progressbarImg);
+ promptWindow.Append(&progressbarOutlineImg);
+ promptWindow.Append(&prTxt);
+ promptWindow.Append(&btn1);
+
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+
+ //check if directory exist and if not create one
+ struct stat st;
+ if(stat(Settings.covers_path, &st) != 0) {
+ char dircovers[100];
+ snprintf(dircovers,strlen(Settings.covers_path),"%s",Settings.covers_path);
+ if (mkdir(dircovers, 0777) == -1) {
+ if(subfoldercheck(dircovers) != 1) {
+ WindowPrompt(LANGUAGE.Error,LANGUAGE.Cantcreatedirectory,LANGUAGE.ok,0,0,0);
+ cntMissFiles = 0;
+ }
+ }
+ }
+ if(stat(Settings.disc_path,&st) != 0) {
+ char dirdiscs[100];
+ snprintf(dirdiscs,strlen(Settings.disc_path),"%s",Settings.disc_path);
+ if (mkdir(dirdiscs, 0777) == -1) {
+ if(subfoldercheck(dirdiscs) != 1) {
+ WindowPrompt(LANGUAGE.Error,LANGUAGE.Cantcreatedirectory,LANGUAGE.ok,0,0,0);
+ cntMissFiles = 0;
+ }
+ }
+ }
+
+ while (i < cntMissFiles)
+ {
+
+ prTxt.SetTextf("%i%%", 100*i/cntMissFiles);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen))
+ {
+ //adjust for widescreen
+ progressbarImg.SetPosition(80,40);
+ progressbarImg.SetTile(80*i/cntMissFiles);
+ }
+ else
+ {
+ progressbarImg.SetTile(100*i/cntMissFiles);
+ }
+
+ msgTxt.SetTextf("%i %s", cntMissFiles - i, LANGUAGE.filesleft);
+ msg2Txt.SetTextf("%s", missingFiles[i]);
+
+ //download boxart image
+ char imgPath[100];
+ char URLFile[100];
+ if (choice2 == 2)
+ {
+ sprintf(URLFile,"http://www.theotherzone.com/wii/3d/176/248/%s",missingFiles[i]); // For 3D Covers
+ sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[i]);
+ }
+ if(choice2 == 3)
+ {
+ sprintf(URLFile,"http://www.theotherzone.com/wii/diskart/160/160/%s",missingFiles[i]);
+ sprintf(imgPath,"%s%s", Settings.disc_path, missingFiles[i]);
+ }
+ if(choice2 == 1)
+ {
+ sprintf(URLFile,"http://www.theotherzone.com/wii/resize/160/224/%s",missingFiles[i]);
+ sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[i]);
+ }
+
+ struct block file = downloadfile(URLFile);//reject known bad images
+
+ if (file.size == 36864 || file.size <= 1024 || file.size == 7386 || file.data == NULL) {
+ cntNotFound++;
+ i++;
+ }
+ else
+ {
+ if(file.data != NULL)
+ {
+ // save png to sd card
+ FILE *pfile=NULL;
+ if((pfile = fopen(imgPath, "wb"))!=NULL)
+ {
+ fwrite(file.data,1,file.size,pfile);
+ fclose (pfile);
+ }
+ free(file.data);
+ }
+ i++;
+ }
+
+ if(btn1.GetState() == STATE_CLICKED)
+ {
+ cntNotFound = cntMissFiles-i+cntNotFound;
+ break;
+ }
+ }
+
+ /**Temporary redownloading 1st image because of a fucking corruption bug **/
+
+ char URLFile[100];
+ if (choice2 == 2) {
+ sprintf(URLFile,"http://www.theotherzone.com/wii/3d/176/248/%s",missingFiles[0]); // For 3D Covers
+ sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[0]);
+ }
+ if(choice2 == 3) {
+ sprintf(URLFile,"http://www.theotherzone.com/wii/diskart/160/160/%s",missingFiles[0]);
+ sprintf(imgPath,"%s%s", Settings.disc_path, missingFiles[0]);
+ }
+ if(choice2 == 1) {
+ sprintf(URLFile,"http://www.theotherzone.com/wii/resize/160/224/%s",missingFiles[0]);
+ sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[0]);
+ }
+
+ struct block file = downloadfile(URLFile);
+
+ if (file.size == 36864 || file.size <= 1024 || file.size == 7386 || file.data == NULL) {
+ } else {
+ if(file.data != NULL)
+ {
+ // save png to sd card
+ FILE *pfile;
+ pfile = fopen(imgPath, "wb");
+ fwrite(file.data,1,file.size,pfile);
+ fclose (pfile);
+ free(file.data);
+ }
+ }
+
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+
+ if (cntNotFound != 0) {
+ return cntNotFound;
+ } else {
+ return 0;
+ }
+}
+
+/****************************************************************************
+ * ProgressWindow
+ *
+ * Opens a window, which displays progress to the user. Can either display a
+ * progress bar showing % completion, or a throbber that only shows that an
+ * action is in progress.
+ ***************************************************************************/
+int
+ProgressUpdateWindow()
+{
+
+ int ret = 0, failed = 0;
+ const unsigned int blocksize = 1024;
+ char hostip[16];
+ char * IP = NULL;
+ u8 blockbuffer[blocksize] ATTRIBUTE_ALIGN(32);
+
+ GuiWindow promptWindow(472,320);
+ promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ promptWindow.SetPosition(0, -10);
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
+ GuiImageData dialogBox(imgPath, dialogue_box_png);
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+
+ GuiImage dialogBoxImg(&dialogBox);
+ if (Settings.wsprompt == yes){
+ dialogBoxImg.SetWidescreen(CFG.widescreen);}
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar_outline.png", CFG.theme_path);
+ GuiImageData progressbarOutline(imgPath, progressbar_outline_png);
+ GuiImage progressbarOutlineImg(&progressbarOutline);
+ if (Settings.wsprompt == yes){
+ progressbarOutlineImg.SetWidescreen(CFG.widescreen);}
+ progressbarOutlineImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarOutlineImg.SetPosition(25, 7);
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar_empty.png", CFG.theme_path);
+ GuiImageData progressbarEmpty(imgPath, progressbar_empty_png);
+ GuiImage progressbarEmptyImg(&progressbarEmpty);
+ progressbarEmptyImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarEmptyImg.SetPosition(25, 7);
+ progressbarEmptyImg.SetTile(100);
+
+ snprintf(imgPath, sizeof(imgPath), "%sprogressbar.png", CFG.theme_path);
+ GuiImageData progressbar(imgPath, progressbar_png);
+ progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
+ progressbarImg.SetPosition(25, 7);
+
+ char title[50];
+ sprintf(title, "%s", LANGUAGE.CheckingforUpdates);
+ GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,50);
+ char msg[50];
+ sprintf(msg, "%s", LANGUAGE.InitializingNetwork);
+ GuiText msgTxt(msg, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ msgTxt.SetPosition(0,140);
+ char msg2[50] = " ";
+ GuiText msg2Txt(msg2, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ msg2Txt.SetPosition(0, 50);
+
+ prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ prTxt.SetPosition(0, 7);
+
+ GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ GuiImage btn1Img(&btnOutline);
+ if (Settings.wsprompt == yes){
+ btn1Txt.SetWidescreen(CFG.widescreen);
+ btn1Img.SetWidescreen(CFG.widescreen);}
+ GuiButton btn1(&btn1Img,&btn1Img, 2, 4, 0, -40, &trigA, &btnSoundOver, &btnClick,1);
+ btn1.SetLabel(&btn1Txt);
+ btn1.SetState(STATE_SELECTED);
+
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
+ progressbarOutlineImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
+ progressbarOutlineImg.SetPosition(0, 7);
+ progressbarEmptyImg.SetPosition(80,7);
+ progressbarEmptyImg.SetTile(78);
+ progressbarImg.SetPosition(80, 7);
+ }
+
+ promptWindow.Append(&dialogBoxImg);
+ promptWindow.Append(&titleTxt);
+ promptWindow.Append(&msgTxt);
+ promptWindow.Append(&msg2Txt);
+ promptWindow.Append(&btn1);
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
+
+ HaltGui();
+ mainWindow->SetState(STATE_DISABLED);
+ mainWindow->Append(&promptWindow);
+ mainWindow->ChangeFocus(&promptWindow);
+ ResumeGui();
+
+ struct stat st;
+ if(stat(Settings.update_path, &st) != 0) {
+ char dir[100];
+ snprintf(dir,strlen(Settings.update_path),"%s",Settings.update_path);
+ if (mkdir(dir, 0777) == -1) {
+ if(subfoldercheck(dir) != 1) {
+ WindowPrompt(LANGUAGE.Error,LANGUAGE.Cantcreatedirectory,LANGUAGE.ok,0,0,0);
+ ret = -1;
+ failed = -1;
+ }
+ }
+ }
+
+ char dolpath[150];
+ char dolpathsuccess[150];
+ snprintf(dolpath, sizeof(dolpath), "%sbootnew.dol", Settings.update_path);
+ snprintf(dolpathsuccess, sizeof(dolpathsuccess), "%sboot.dol", Settings.update_path);
+
+ while (!IP && !(ret < 0)) {
+
+ VIDEO_WaitVSync();
+
+ ret = Net_Init(hostip);
+
+ if (ret > 0) {
+ IP = hostip;
+ msgTxt.SetText(IP);
+ }
+
+ if (ret <= 0) {
+ msgTxt.SetText(LANGUAGE.Couldnotinitializenetwork);
+ }
+
+ if(btn1.GetState() == STATE_CLICKED) {
+ IP = 0;
+ ret = -1;
+ failed = -1;
+ btn1.ResetState();
+ break;
+ }
+ }
+
+ if(IP && ret >= 0) {
+
+ networkisinitialized = 1;
+
+ int revnumber = 0;
+ int currentrev = atoi(SVN_REV);
+
+/// SDCard_deInit();
+ struct block file = downloadfile("http://www.techjawa.com/usbloadergx/rev.txt");
+ FILE *pfile;
+/// SDCard_Init();
+
+ if(file.data != NULL)
+ {
+ char revtxt[10];
+ pfile = fopen("SD:/rev.txt", "w");
+ fwrite(file.data,1,file.size,pfile);
+ fclose(pfile);
+ //has to be repeated or it isnt working (first file download bug)
+ pfile = fopen("SD:/rev.txt", "w");
+ fwrite(file.data,1,file.size,pfile);
+ fclose(pfile);
+ //"w+" doesnt work, needs to be reopened as "r"
+ pfile = fopen("SD:/rev.txt", "r");
+ int c = 0, i = 0;
+ while(c != EOF || i < 10) {
+ c = fgetc(pfile);
+ if (c != EOF) {
+ revtxt[i] = c;
+ } else {
+ revtxt[i] = 0x00;
+ break;
+ }
+ i++;
+ }
+ fclose(pfile);
+ revnumber = atoi(revtxt);
+ remove("SD:/rev.txt");
+ free(file.data);
+ }
+
+ if(revnumber > currentrev) {
+ sprintf(msg, "Rev%i %s.", revnumber, LANGUAGE.available);
+ int choice = WindowPrompt(msg, LANGUAGE.Doyouwanttoupdate, LANGUAGE.Updatedol, LANGUAGE.Updateall, LANGUAGE.Cancel, 0);
+ if(choice == 1 || choice == 2) {
+ titleTxt.SetTextf("%s USB Loader GX", LANGUAGE.updating);
+ msgTxt.SetPosition(0,100);
+ promptWindow.Append(&progressbarEmptyImg);
+ promptWindow.Append(&progressbarImg);
+ promptWindow.Append(&progressbarOutlineImg);
+ promptWindow.Append(&prTxt);
+ msgTxt.SetTextf("%s Rev%i", LANGUAGE.Updateto, revnumber);
+ int filesize = downloadrev("http://www.techjawa.com/usbloadergx/boot.dol");
+ if(filesize > 0) {
+ pfile = fopen(dolpath, "wb");
+ for (int i = 0; i < filesize; i += blocksize) {
+ prTxt.SetTextf("%i%%", 100*i/filesize);
+ if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
+ progressbarImg.SetTile(80*i/filesize);
+ } else {
+ progressbarImg.SetTile(100*i/filesize);
+ }
+ msg2Txt.SetTextf("%iKB/%iKB", i/1024, filesize/1024);
+
+ if(btn1.GetState() == STATE_CLICKED) {
+ fclose(pfile);
+ remove(dolpath);
+ failed = -1;
+ btn1.ResetState();
+ break;
+ }
+
+ u32 blksize;
+ blksize = (u32)(filesize - i);
+ if (blksize > blocksize)
+ blksize = blocksize;
+
+ ret = network_read(blockbuffer, blksize);
+ if ((u32)ret != blksize) {
+ failed = -1;
+ ret = -1;
+ fclose(pfile);
+ remove(dolpath);
+ break;
+ }
+ fwrite(blockbuffer,1,blksize, pfile);
+ }
+ fclose(pfile);
+ if(!failed) {
+ //remove old
+ if(checkfile(dolpathsuccess)){
+ remove(dolpathsuccess);
+ }
+ //rename new to old
+ rename(dolpath, dolpathsuccess);
+
+ if(choice == 2) {
+ //get the icon.png and the meta.xml
+ char xmliconpath[150];
+ file = downloadfile("http://www.techjawa.com/usbloadergx/meta.file");
+ if(file.data != NULL){
+ sprintf(xmliconpath, "%smeta.xml", Settings.update_path);
+ pfile = fopen(xmliconpath, "wb");
+ fwrite(file.data,1,file.size,pfile);
+ fclose(pfile);
+ free(file.data);
+ }
+ file = downloadfile("http://www.techjawa.com/usbloadergx/icon.png");
+ if(file.data != NULL){
+ sprintf(xmliconpath, "%sicon.png", Settings.update_path);
+ pfile = fopen(xmliconpath, "wb");
+ fwrite(file.data,1,file.size,pfile);
+ fclose(pfile);
+ free(file.data);
+ }
+ }
+ }
+ } else {
+ failed = -1;
+ }
+ } else {
+ ret = -1;
+ }
+
+ } else {
+ WindowPrompt(LANGUAGE.Nonewupdates, 0, LANGUAGE.ok, 0, 0, 0);
+ ret = -1;
+ }
+
+ }
+
+ CloseConnection();
+
+ if(!failed && ret >= 0) {
+ WindowPrompt(LANGUAGE.Successfullyupdated , LANGUAGE.Restarting, LANGUAGE.ok, 0, 0, 0);
+ Sys_BackToLoader();
+ }
+
+ promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ while(promptWindow.GetEffect() > 0) usleep(50);
+
+ HaltGui();
+ mainWindow->Remove(&promptWindow);
+ mainWindow->SetState(STATE_DEFAULT);
+ ResumeGui();
+
+ if(failed != 0)
+ return failed;
+
+ return 1;
+}
diff --git a/source/PromptWindows.h b/source/PromptWindows.h
new file mode 100644
index 00000000..56430195
--- /dev/null
+++ b/source/PromptWindows.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ * PromptWindows
+ * USB Loader GX 2009
+ *
+ * PromptWindows.h
+ ***************************************************************************/
+
+#ifndef _PROMPTWINDOWS_H_
+#define _PROMPTWINDOWS_H_
+
+#include "partition.h"
+
+void WindowCredits();
+int OnScreenKeyboard(char * var, u32 maxlen, int min);
+int WindowPrompt(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, const char *btn3Label, const char *btn4Label);
+int WindowExitPrompt(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, const char *btn3Label, const char *btn4Label);
+int GameWindowPrompt();
+int DiscWait(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, int IsDeviceWait);
+int FormatingPartition(const char *title, partitionEntry *entry);
+int NetworkInitPromp(int choice2);
+int ProgressWindow(const char *title, const char *msg);
+int ProgressDownloadWindow(int choice2);
+int ProgressUpdateWindow();
+
+#endif
diff --git a/source/Settings.cpp b/source/Settings.cpp
new file mode 100644
index 00000000..0eb59e54
--- /dev/null
+++ b/source/Settings.cpp
@@ -0,0 +1,1341 @@
+#include
+
+#include "menu.h"
+#include "filelist.h"
+#include "sys.h"
+#include "wbfs.h"
+#include "language.h"
+#include "libwiigui/gui.h"
+#include "libwiigui/gui_customoptionbrowser.h"
+#include "fatmounter.h"
+#include "PromptWindows.h"
+#include "getentries.h"
+
+/*** Extern functions ***/
+extern void ResumeGui();
+extern void HaltGui();
+
+/*** Extern variables ***/
+extern GuiWindow * mainWindow;
+extern GuiSound * bgMusic;
+extern GuiImage * bgImg;
+extern GuiImageData * pointer[4];
+extern GuiImageData * background;
+extern u8 shutdown;
+extern u8 reset;
+extern int vol;
+
+/****************************************************************************
+ * MenuSettings
+ ***************************************************************************/
+int MenuSettings()
+{
+ int menu = MENU_NONE;
+ int ret;
+ int choice = 0;
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%ssettings_background.png", CFG.theme_path);
+ GuiImageData settingsbg(imgPath, settings_background_png);
+ snprintf(imgPath, sizeof(imgPath), "%stab_bg1.png", CFG.theme_path);
+ GuiImageData tab1(imgPath, tab_bg1_png);
+ snprintf(imgPath, sizeof(imgPath), "%stab_bg2.png", CFG.theme_path);
+ GuiImageData tab2(imgPath, tab_bg2_png);
+ snprintf(imgPath, sizeof(imgPath), "%stab_bg3.png", CFG.theme_path);
+ GuiImageData tab3(imgPath, tab_bg3_png);
+ snprintf(imgPath, sizeof(imgPath), "%supdateRev.png", CFG.theme_path);
+ GuiImageData updateRevImgData(imgPath, updateRev_png);
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigHome;
+ trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
+ GuiTrigger trigB;
+ trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+ GuiTrigger trigL;
+ trigL.SetButtonOnlyTrigger(-1, WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT, PAD_BUTTON_LEFT);
+ GuiTrigger trigR;
+ trigR.SetButtonOnlyTrigger(-1, WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT, PAD_BUTTON_RIGHT);
+ GuiTrigger trigMinus;
+ trigMinus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0);
+ GuiTrigger trigPlus;
+ trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
+
+ GuiText titleTxt(LANGUAGE.settings, 28, (GXColor){0, 0, 0, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(0,40);
+
+ GuiImage settingsbackground(&settingsbg);
+ GuiButton settingsbackgroundbtn(settingsbackground.GetWidth(), settingsbackground.GetHeight());
+ settingsbackgroundbtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ settingsbackgroundbtn.SetPosition(0, 0);
+ settingsbackgroundbtn.SetImage(&settingsbackground);
+
+ GuiText backBtnTxt(LANGUAGE.Back , 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
+ GuiImage backBtnImg(&btnOutline);
+ if (Settings.wsprompt == yes){
+ backBtnTxt.SetWidescreen(CFG.widescreen);
+ backBtnImg.SetWidescreen(CFG.widescreen);}
+ GuiButton backBtn(&backBtnImg,&backBtnImg, 2, 3, -180, 400, &trigA, &btnSoundOver, &btnClick,1);
+ backBtn.SetLabel(&backBtnTxt);
+ backBtn.SetTrigger(&trigB);
+
+ GuiButton homo(1,1);
+ homo.SetTrigger(&trigHome);
+ homo.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ homo.SetPosition(0,0);
+
+ GuiImage tab1Img(&tab1);
+ GuiImage tab2Img(&tab2);
+ GuiImage tab3Img(&tab3);
+ GuiButton tabBtn(tab1.GetWidth(), tab1.GetHeight());
+ tabBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ tabBtn.SetPosition(-202, 90);
+ tabBtn.SetImage(&tab1Img);
+ tabBtn.SetRumble(false);
+
+ GuiButton page1Btn(40, 96);
+ page1Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ page1Btn.SetPosition(-202, 90);
+ page1Btn.SetSoundOver(&btnSoundOver);
+ page1Btn.SetSoundClick(&btnClick);
+ page1Btn.SetTrigger(0, &trigA);
+
+ GuiButton page2Btn(40, 96);
+ page2Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ page2Btn.SetPosition(-202, 186);
+ page2Btn.SetSoundOver(&btnSoundOver);
+ page2Btn.SetSoundClick(&btnClick);
+ page2Btn.SetTrigger(0, &trigA);
+ page2Btn.SetTrigger(1, &trigR);
+ page2Btn.SetTrigger(2, &trigPlus);
+
+ GuiButton page3Btn(40, 96);
+ page3Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ page3Btn.SetPosition(-202, 282);
+ page3Btn.SetSoundOver(&btnSoundOver);
+ page3Btn.SetSoundClick(&btnClick);
+ page3Btn.SetTrigger(0, &trigA);
+ page3Btn.SetTrigger(1, &trigR);
+ page3Btn.SetTrigger(2, &trigPlus);
+
+ const char * text = LANGUAGE.Unlock;
+ if (Settings.godmode == 1)
+ text = LANGUAGE.Lock;
+ GuiText lockBtnTxt(text, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ lockBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
+ GuiImage lockBtnImg(&btnOutline);
+ lockBtnImg.SetWidescreen(CFG.widescreen);
+ GuiButton lockBtn(&lockBtnImg,&lockBtnImg, 2, 3, 180, 400, &trigA, &btnSoundOver, &btnClick,1);
+ lockBtn.SetLabel(&lockBtnTxt);
+
+ GuiImage updateBtnImg(&updateRevImgData);
+ updateBtnImg.SetWidescreen(CFG.widescreen);
+ GuiButton updateBtn(&updateBtnImg,&updateBtnImg, 2, 3, 70, 400, &trigA, &btnSoundOver, &btnClick,1);
+ updateBtn.SetVisible(false);
+ updateBtn.SetClickable(false);
+
+ GuiImageData logo(credits_button_png);
+ GuiImage logoImg(&logo);
+ GuiImageData logoOver(credits_button_over_png);
+ GuiImage logoImgOver(&logoOver);
+
+ GuiButton btnLogo(logoImg.GetWidth(), logoImg.GetHeight());
+ btnLogo.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
+ btnLogo.SetPosition(0, -35);
+ btnLogo.SetImage(&logoImg);
+ btnLogo.SetImageOver(&logoImgOver);
+ btnLogo.SetEffectGrow();
+ btnLogo.SetSoundOver(&btnSoundOver);
+ btnLogo.SetSoundClick(&btnClick);
+ btnLogo.SetTrigger(&trigA);
+
+ customOptionList options2(9);
+ GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, CFG.theme_path, "bg_options_settings.png", bg_options_settings_png, 0, 150);
+ optionBrowser2.SetPosition(0, 90);
+ optionBrowser2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ GuiWindow w(screenwidth, screenheight);
+
+ int pageToDisplay = 1;
+ while ( pageToDisplay > 0) //set pageToDisplay to 0 to quit
+ {
+ menu = MENU_NONE;
+ if ( pageToDisplay == 1)
+ {
+
+ options2.SetName(0, "%s",LANGUAGE.VideoMode);
+ options2.SetName(1, "%s",LANGUAGE.VIDTVPatch);
+ options2.SetName(2, "%s",LANGUAGE.Language);
+
+ options2.SetName(3, "Ocarina");
+
+ options2.SetName(4,"%s", LANGUAGE.Display);
+ options2.SetName(5,"%s", LANGUAGE.Clock); //CLOCK
+ options2.SetName(6,"%s", LANGUAGE.Rumble); //RUMBLE
+ options2.SetName(7,"%s", LANGUAGE.Volume);
+ options2.SetName(8,"%s", LANGUAGE.Tooltips);
+
+ HaltGui();
+ w.Append(&settingsbackgroundbtn);
+ w.Append(&titleTxt);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ w.Append(&btnLogo);
+ w.Append(&homo);
+ //set triggers for tabs
+ page1Btn.RemoveTrigger(1);
+ page1Btn.RemoveTrigger(2);
+ page2Btn.RemoveTrigger(1);
+ page2Btn.RemoveTrigger(2);
+ page3Btn.RemoveTrigger(1);
+ page3Btn.RemoveTrigger(2);
+ page2Btn.SetTrigger(1, &trigPlus);
+ page2Btn.SetTrigger(2, &trigR);
+ page3Btn.SetTrigger(1, &trigMinus);
+ page3Btn.SetTrigger(2, &trigL);
+
+
+ mainWindow->Append(&w);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&page3Btn);
+
+
+ ResumeGui();
+ }
+ else if ( pageToDisplay == 2 )
+ {
+ page1Btn.RemoveTrigger(1);
+ page1Btn.RemoveTrigger(2);
+ page2Btn.RemoveTrigger(1);
+ page2Btn.RemoveTrigger(2);
+ page3Btn.RemoveTrigger(1);
+ page3Btn.RemoveTrigger(2);
+ page1Btn.SetTrigger(1, &trigMinus);
+ page1Btn.SetTrigger(2, &trigL);
+ page3Btn.SetTrigger(1, &trigPlus);
+ page3Btn.SetTrigger(2, &trigR);
+
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page3Btn);
+
+ options2.SetName(0,"%s", LANGUAGE.Password);
+ options2.SetName(1,"%s", LANGUAGE.BootStandard);
+ options2.SetName(2,"%s", LANGUAGE.FlipX);
+ options2.SetName(3,"%s", LANGUAGE.QuickBoot);
+ options2.SetName(4,"%s", LANGUAGE.PromptsButtons);
+ options2.SetName(5,"%s", LANGUAGE.Parentalcontrol);
+ options2.SetName(6,"%s", LANGUAGE.CoverPath);
+ options2.SetName(7,"%s", LANGUAGE.DiscimagePath);
+ options2.SetName(8,"%s", LANGUAGE.ThemePath);
+ }
+ else if ( pageToDisplay == 3 )
+ {
+ page1Btn.RemoveTrigger(1);
+ page1Btn.RemoveTrigger(2);
+ page2Btn.RemoveTrigger(1);
+ page2Btn.RemoveTrigger(2);
+ page3Btn.RemoveTrigger(1);
+ page3Btn.RemoveTrigger(2);
+ page2Btn.SetTrigger(1, &trigMinus);
+ page2Btn.SetTrigger(2, &trigL);
+ page1Btn.SetTrigger(1, &trigPlus);
+ page1Btn.SetTrigger(2, &trigR);
+
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page3Btn);
+
+ options2.SetName(0, "%s",LANGUAGE.Titlestxtpath);
+ options2.SetName(1, "%s",LANGUAGE.AppLanguage);
+ options2.SetName(2, "%s",LANGUAGE.keyboard);
+ options2.SetName(3, "%s",LANGUAGE.Unicodefix);
+ options2.SetName(4, "%s",LANGUAGE.Backgroundmusic);
+ options2.SetName(5, "%s",LANGUAGE.Wiilight);
+ options2.SetName(6, "%s",LANGUAGE.Updatepath);
+ options2.SetName(7, "%s",LANGUAGE.Patchcountrystrings);
+ options2.SetName(8, "%s",LANGUAGE.Defaultsettings);
+
+ }
+ while(menu == MENU_NONE)
+ {
+ VIDEO_WaitVSync ();
+
+ if ( pageToDisplay == 1 )
+ {
+ if(Settings.video >= settings_video_max)
+ Settings.video = 0;
+ if(Settings.language >= settings_language_max)
+ Settings.language = 0;
+ if(Settings.ocarina >= settings_off_on_max)
+ Settings.ocarina = 0;
+ if(Settings.vpatch >= settings_off_on_max)
+ Settings.vpatch = 0;
+ if(Settings.sinfo >= settings_sinfo_max)
+ Settings.sinfo = 0;
+ if(Settings.hddinfo >= settings_clock_max)
+ Settings.hddinfo = 0; //CLOCK
+ if(Settings.rumble >= settings_rumble_max)
+ Settings.rumble = 0; //RUMBLE
+ if(Settings.volume >= settings_volume_max)
+ Settings.volume = 0;
+ if (Settings.tooltips >= settings_tooltips_max)
+ Settings.tooltips = 0;
+
+ if (Settings.video == discdefault) options2.SetValue(0,"%s",LANGUAGE.DiscDefault);
+ else if (Settings.video == systemdefault) options2.SetValue(0,"%s",LANGUAGE.SystemDefault);
+ else if (Settings.video == patch) options2.SetValue(0,"%s",LANGUAGE.AutoPatch);
+ else if (Settings.video == pal50) options2.SetValue(0,"%s PAL50",LANGUAGE.Force);
+ else if (Settings.video == pal60) options2.SetValue(0,"%s PAL60",LANGUAGE.Force);
+ else if (Settings.video == ntsc) options2.SetValue(0,"%s NTSC",LANGUAGE.Force);
+
+ if (Settings.vpatch == on) options2.SetValue(1,"%s",LANGUAGE.ON);
+ else if (Settings.vpatch == off) options2.SetValue(1,"%s",LANGUAGE.OFF);
+
+ if (Settings.language == ConsoleLangDefault) options2.SetValue(2,"%s",LANGUAGE.ConsoleDefault);
+ else if (Settings.language == jap) options2.SetValue(2,"%s",LANGUAGE.Japanese);
+ else if (Settings.language == ger) options2.SetValue(2,"%s",LANGUAGE.German);
+ else if (Settings.language == eng) options2.SetValue(2,"%s",LANGUAGE.English);
+ else if (Settings.language == fren) options2.SetValue(2,"%s",LANGUAGE.French);
+ else if (Settings.language == esp) options2.SetValue(2,"%s",LANGUAGE.Spanish);
+ else if (Settings.language == it) options2.SetValue(2,"%s",LANGUAGE.Italian);
+ else if (Settings.language == dut) options2.SetValue(2,"%s",LANGUAGE.Dutch);
+ else if (Settings.language == schin) options2.SetValue(2,"%s",LANGUAGE.SChinese);
+ else if (Settings.language == tchin) options2.SetValue(2,"%s",LANGUAGE.TChinese);
+ else if (Settings.language == kor) options2.SetValue(2,"%s",LANGUAGE.Korean);
+
+ if (Settings.ocarina == on) options2.SetValue(3,"%s",LANGUAGE.ON);
+ else if (Settings.ocarina == off) options2.SetValue(3,"%s",LANGUAGE.OFF);
+
+ if (Settings.sinfo == GameID) options2.SetValue(4,"%s",LANGUAGE.GameID);
+ else if (Settings.sinfo == GameRegion) options2.SetValue(4,"%s",LANGUAGE.GameRegion);
+ else if (Settings.sinfo == Both) options2.SetValue(4,"%s",LANGUAGE.Both);
+ else if (Settings.sinfo == Neither) options2.SetValue(4,"%s",LANGUAGE.Neither);
+
+ if (Settings.hddinfo == hr12) options2.SetValue(5,"12 %s",LANGUAGE.hour);
+ else if (Settings.hddinfo == hr24) options2.SetValue(5,"24 %s",LANGUAGE.hour);
+ else if (Settings.hddinfo == Off) options2.SetValue(5,"%s",LANGUAGE.OFF);
+
+ if (Settings.rumble == RumbleOn) options2.SetValue(6,"%s",LANGUAGE.ON);
+ else if (Settings.rumble == RumbleOff) options2.SetValue(6,"%s",LANGUAGE.OFF);
+
+ if (Settings.volume == v10) options2.SetValue(7,"10");
+ else if (Settings.volume == v20) options2.SetValue(7,"20");
+ else if (Settings.volume == v30) options2.SetValue(7,"30");
+ else if (Settings.volume == v40) options2.SetValue(7,"40");
+ else if (Settings.volume == v50) options2.SetValue(7,"50");
+ else if (Settings.volume == v60) options2.SetValue(7,"60");
+ else if (Settings.volume == v70) options2.SetValue(7,"70");
+ else if (Settings.volume == v80) options2.SetValue(7,"80");
+ else if (Settings.volume == v90) options2.SetValue(7,"90");
+ else if (Settings.volume == v100) options2.SetValue(7,"100");
+ else if (Settings.volume == v0) options2.SetValue(7,"%s",LANGUAGE.OFF);
+
+
+ if (Settings.tooltips == TooltipsOn) options2.SetValue(8,"%s",LANGUAGE.ON);
+ else if (Settings.tooltips == TooltipsOff) options2.SetValue(8,"%s",LANGUAGE.OFF);
+
+ ret = optionBrowser2.GetClickedOption();
+
+ switch (ret)
+ {
+ case 0:
+ Settings.video++;
+ break;
+ case 1:
+ Settings.vpatch++;
+ break;
+ case 2:
+ Settings.language++;
+ break;
+ case 3:
+ Settings.ocarina++;
+ break;
+ case 4: // Game Code and Region
+ Settings.sinfo++;
+ break;
+ case 5: //CLOCK
+ Settings.hddinfo++;
+ break;
+ case 6: //Rumble
+ Settings.rumble++;
+ break;
+ case 7:
+ Settings.volume++;
+ break;
+ case 8:
+ Settings.tooltips++;
+ break;
+ }
+ }
+
+ if ( pageToDisplay == 2 )
+ {
+ if ( Settings.cios >= settings_cios_max)
+ Settings.cios = 0;
+ if ( Settings.xflip >= settings_xflip_max)
+ Settings.xflip = 0;
+ if ( Settings.qboot > 1 )
+ Settings.qboot = 0;
+ if ( Settings.wsprompt > 1 )
+ Settings.wsprompt = 0;
+ if (Settings.parentalcontrol > 3 )
+ Settings.parentalcontrol = 0;
+
+
+ if ( Settings.godmode != 1) options2.SetValue(0, "********");
+ else if (!strcmp("", Settings.unlockCode)) options2.SetValue(0, "%s",LANGUAGE.notset);
+ else options2.SetValue(0, Settings.unlockCode);
+
+ if (Settings.godmode != 1) options2.SetValue(1, "********");
+ else if (Settings.cios == ios249) options2.SetValue(1,"cIOS 249");
+ else if (Settings.cios == ios222) options2.SetValue(1,"cIOS 222");
+
+ if (Settings.xflip == no) options2.SetValue(2,"%s/%s",LANGUAGE.Right,LANGUAGE.Next);
+ else if (Settings.xflip == yes) options2.SetValue(2,"%s/%s",LANGUAGE.Left,LANGUAGE.Prev);
+ else if (Settings.xflip == sysmenu) options2.SetValue(2,"%s", LANGUAGE.LikeSysMenu);
+ else if (Settings.xflip == wtf) options2.SetValue(2,"%s/%s",LANGUAGE.Right,LANGUAGE.Prev);
+ else if (Settings.xflip == disk3d) options2.SetValue(2,"DiskFlip");
+
+ if (Settings.qboot == no) options2.SetValue(3,"%s",LANGUAGE.No);
+ else if (Settings.qboot == yes) options2.SetValue(3,"%s",LANGUAGE.Yes);
+
+ if (Settings.wsprompt == no) options2.SetValue(4,"%s",LANGUAGE.Normal);
+ else if (Settings.wsprompt == yes) options2.SetValue(4,"%s",LANGUAGE.WidescreenFix);
+
+ if (Settings.godmode != 1) options2.SetValue(5, "********");
+ else if(Settings.parentalcontrol == 0) options2.SetValue(5, "0");
+ else if(Settings.parentalcontrol == 1) options2.SetValue(5, "1");
+ else if(Settings.parentalcontrol == 2) options2.SetValue(5, "2");
+ else if(Settings.parentalcontrol == 3) options2.SetValue(5, "3");
+
+ options2.SetValue(6, "%s", Settings.covers_path);
+ options2.SetValue(7, "%s", Settings.disc_path);
+ options2.SetValue(8, "%s", CFG.theme_path);
+
+ ret = optionBrowser2.GetClickedOption();
+
+ switch (ret)
+ {
+
+ case 0: // Modify Password
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[20] = "";
+ strncpy(entered, Settings.unlockCode, sizeof(entered));
+ int result = OnScreenKeyboard(entered, 20,0);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ {
+ strncpy(Settings.unlockCode, entered, sizeof(Settings.unlockCode));
+ WindowPrompt(LANGUAGE.PasswordChanged,LANGUAGE.Passwordhasbeenchanged,LANGUAGE.ok,0,0,0);
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.Passwordchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ }
+ break;
+ case 1:
+ if ( Settings.godmode == 1)
+ Settings.cios++;
+ break;
+ case 2:
+ Settings.xflip++;
+ break;
+ case 3:
+ Settings.qboot++;
+ break;
+ case 4:
+ Settings.wsprompt++;
+ break;
+ case 5:
+ if ( Settings.godmode == 1)
+ Settings.parentalcontrol++;
+ break;
+ case 6:
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[43] = "";
+ strncpy(entered, Settings.covers_path, sizeof(entered));
+ int result = OnScreenKeyboard(entered,43,4);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ {
+ int len = (strlen(entered)-1);
+ if(entered[len] !='/')
+ strncat (entered, "/", 1);
+ strncpy(Settings.covers_path, entered, sizeof(Settings.covers_path));
+ WindowPrompt(LANGUAGE.CoverpathChanged,0,LANGUAGE.ok,0,0,0);
+ if(!isSdInserted()) {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
+ }
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.Coverpathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ }
+ break;
+ case 7:
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[43] = "";
+ strncpy(entered, Settings.disc_path, sizeof(entered));
+ int result = OnScreenKeyboard(entered, 43,4);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ {
+ int len = (strlen(entered)-1);
+ if(entered[len] !='/')
+ strncat (entered, "/", 1);
+ strncpy(Settings.disc_path, entered, sizeof(Settings.disc_path));
+ WindowPrompt(LANGUAGE.DiscpathChanged,0,LANGUAGE.ok,0,0,0);
+ if(!isSdInserted()) {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
+ }
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.Discpathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ }
+ break;
+ case 8:
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[43] = "";
+ strncpy(entered, CFG.theme_path, sizeof(entered));
+ int result = OnScreenKeyboard(entered, 43,4);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ {
+ int len = (strlen(entered)-1);
+ if(entered[len] !='/')
+ strncat (entered, "/", 1);
+ strncpy(CFG.theme_path, entered, sizeof(CFG.theme_path));
+ WindowPrompt(LANGUAGE.ThemepathChanged,0,LANGUAGE.ok,0,0,0);
+ if(!isSdInserted()) {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
+ } else {
+ cfg_save_global();
+ }
+ mainWindow->Remove(bgImg);
+ CFG_Load();
+ CFG_LoadGlobal();
+ menu = MENU_SETTINGS;
+ #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);
+ pointer[1] = new GuiImageData(imgPath, player2_point_png);
+ snprintf(imgPath, sizeof(imgPath), "%splayer3_point.png", CFG.theme_path);
+ pointer[2] = new GuiImageData(imgPath, player3_point_png);
+ snprintf(imgPath, sizeof(imgPath), "%splayer4_point.png", CFG.theme_path);
+ pointer[3] = new GuiImageData(imgPath, player4_point_png);
+ #endif
+ if (CFG.widescreen)
+ snprintf(imgPath, sizeof(imgPath), "%swbackground.png", CFG.theme_path);
+ else
+ snprintf(imgPath, sizeof(imgPath), "%sbackground.png", CFG.theme_path);
+
+ background = new GuiImageData(imgPath, CFG.widescreen? wbackground_png : background_png);
+
+ bgImg = new GuiImage(background);
+ mainWindow->Append(bgImg);
+ mainWindow->Append(&w);
+
+ w.Append(&settingsbackgroundbtn);
+ w.Append(&titleTxt);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ w.Append(&btnLogo);
+
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.Themepathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ }
+ break;
+ }
+ }
+ if (pageToDisplay == 3)
+ {
+
+ if ( Settings.keyset >= settings_keyset_max)
+ Settings.keyset = 0;
+ if ( Settings.unicodefix > 2 )
+ Settings.unicodefix = 0;
+ if ( Settings.wiilight > 2 )
+ Settings.wiilight = 0;
+ if ( Settings.patchcountrystrings > 1)
+ Settings.patchcountrystrings = 0;
+
+ options2.SetValue(0, "%s", Settings.titlestxt_path);
+
+ options2.SetValue(1, "%s", Settings.language_path);
+
+ if (Settings.keyset == us) options2.SetValue(2,"QWERTY");
+ else if (Settings.keyset == dvorak) options2.SetValue(2,"DVORAK");
+ else if (Settings.keyset == euro) options2.SetValue(2,"QWERTZ");
+ else if (Settings.keyset == azerty) options2.SetValue(2,"AZERTY");
+
+ if (Settings.unicodefix == 0) options2.SetValue(3,"%s",LANGUAGE.OFF);
+ else if (Settings.unicodefix == 1) options2.SetValue(3,"%s",LANGUAGE.TChinese);
+ else if (Settings.unicodefix == 2) options2.SetValue(3,"%s",LANGUAGE.SChinese);
+
+ if(!strcmp("notset", Settings.ogg_path) || !strcmp("",Settings.oggload_path))
+ options2.SetValue(4, "%s", LANGUAGE.Standard);
+ else
+ options2.SetValue(4, "%s", Settings.ogg_path);
+
+ if (Settings.wiilight == 0) options2.SetValue(5,"%s",LANGUAGE.OFF);
+ else if (Settings.wiilight == 1) options2.SetValue(5,"%s",LANGUAGE.ON);
+ else if (Settings.wiilight == 2) options2.SetValue(5,"%s",LANGUAGE.OnlyInstall);
+
+ options2.SetValue(6, "%s", Settings.update_path);
+
+ if (Settings.patchcountrystrings == 0) options2.SetValue(7,"%s",LANGUAGE.OFF);
+ else if (Settings.patchcountrystrings == 1) options2.SetValue(7,"%s",LANGUAGE.ON);
+
+ options2.SetValue(8, " ");
+
+ ret = optionBrowser2.GetClickedOption();
+
+ switch(ret)
+ {
+ case 0:
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[43] = "";
+ strncpy(entered, Settings.titlestxt_path, sizeof(entered));
+ int result = OnScreenKeyboard(entered,43,4);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ {
+ int len = (strlen(entered)-1);
+ if(entered[len] !='/')
+ strncat (entered, "/", 1);
+ strncpy(Settings.titlestxt_path, entered, sizeof(Settings.titlestxt_path));
+ WindowPrompt(LANGUAGE.TitlestxtpathChanged,0,LANGUAGE.ok,0,0,0);
+ if(isSdInserted()) {
+ cfg_save_global();
+ CFG_Load();
+ } else {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
+ }
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.Titlestxtpathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ }
+ break;
+ case 1: // language file path
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[40] = "";
+ strncpy(entered, Settings.language_path, sizeof(entered));
+ int result = OnScreenKeyboard(entered, 40,0);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ { strncpy(Settings.language_path, entered, sizeof(Settings.language_path));
+ if(isSdInserted()) {
+ cfg_save_global();
+ if(!checkfile(Settings.language_path)) {
+ WindowPrompt(LANGUAGE.Filenotfound,LANGUAGE.Loadingstandardlanguage,LANGUAGE.ok,0,0,0);
+ }
+ lang_default();
+ CFG_Load();
+ menu = MENU_SETTINGS;
+ pageToDisplay = 0;
+ } else {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
+ }
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.Langchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ }
+ break;
+ case 2:
+ Settings.keyset++;
+ break;
+ case 3:
+ Settings.unicodefix++;
+ break;
+ case 4:
+ if(isSdInserted())
+ {
+ menu = MENU_OGG;
+ pageToDisplay = 0;
+ }
+ else
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0);
+ break;
+ case 5:
+ Settings.wiilight++;
+ break;
+ case 7:
+ Settings.patchcountrystrings++;
+ break;
+ case 6:
+ if ( Settings.godmode == 1)
+ {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[43] = "";
+ strncpy(entered, Settings.update_path, sizeof(entered));
+ int result = OnScreenKeyboard(entered,43,4);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ if ( result == 1 )
+ {
+ int len = (strlen(entered)-1);
+ if(entered[len] !='/')
+ strncat (entered, "/", 1);
+ strncpy(Settings.update_path, entered, sizeof(Settings.update_path));
+ WindowPrompt(LANGUAGE.Updatepathchanged,0,LANGUAGE.ok,0,0,0);
+ }
+ }
+ else
+ WindowPrompt(0,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
+ break;
+ case 8:
+ int choice = WindowPrompt(LANGUAGE.Areyousure, 0, LANGUAGE.Yes, LANGUAGE.Cancel, 0, 0);
+ if(choice == 1)
+ {
+ if(isSdInserted())
+ remove("SD:/config/GXGlobal.cfg");
+ lang_default();
+ CFG_Load();
+ menu = MENU_SETTINGS;
+ pageToDisplay = 0;
+ }
+ break;
+ }
+ }
+
+ if(shutdown == 1)
+ Sys_Shutdown();
+ if(reset == 1)
+ Sys_Reboot();
+
+ if(page1Btn.GetState() == STATE_CLICKED)
+ {
+ pageToDisplay = 1;
+ page1Btn.ResetState();
+ tabBtn.SetImage(&tab1Img);
+ menu = MENU_NONE;
+ break;
+ }
+
+ if(page2Btn.GetState() == STATE_CLICKED)
+ {
+ pageToDisplay = 2;
+ menu = MENU_NONE;
+ page2Btn.ResetState();
+ tabBtn.SetImage(&tab2Img);
+ break;
+ }
+
+ if(page3Btn.GetState() == STATE_CLICKED)
+ {
+ pageToDisplay = 3;
+ menu = MENU_NONE;
+ page3Btn.ResetState();
+ tabBtn.SetImage(&tab3Img);
+ break;
+ }
+
+ if(backBtn.GetState() == STATE_CLICKED)
+ {
+ //Add the procedure call to save the global configuration
+ if(isSdInserted()) {
+ cfg_save_global();
+ }
+ menu = MENU_DISCLIST;
+ pageToDisplay = 0;
+ break;
+ }
+
+ if(updateBtn.GetState() == STATE_CLICKED) {
+ if(isSdInserted() && Settings.godmode) {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&btnLogo);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ int ret = ProgressUpdateWindow();
+ if(ret < 0) {
+ WindowPrompt(LANGUAGE.Updatefailed,0,LANGUAGE.ok,0,0,0);
+ }
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ w.Append(&btnLogo);
+ } else {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0);
+ }
+ updateBtn.ResetState();
+ }
+
+ if(btnLogo.GetState() == STATE_CLICKED) {
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&btnLogo);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ WindowCredits();
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ w.Append(&btnLogo);
+ btnLogo.ResetState();
+ }
+
+ if(lockBtn.GetState() == STATE_CLICKED)
+ {
+ if (!strcmp("", Settings.unlockCode))
+ {
+ Settings.godmode = !Settings.godmode;
+ }
+ else if ( Settings.godmode == 0 )
+ {
+ //password check to unlock Install,Delete and Format
+ mainWindow->Remove(&optionBrowser2);
+ mainWindow->Remove(&page1Btn);
+ mainWindow->Remove(&page2Btn);
+ mainWindow->Remove(&tabBtn);
+ mainWindow->Remove(&page3Btn);
+ w.Remove(&backBtn);
+ w.Remove(&lockBtn);
+ w.Remove(&updateBtn);
+ char entered[20] = "";
+ int result = OnScreenKeyboard(entered, 20,0);
+ mainWindow->Append(&optionBrowser2);
+ mainWindow->Append(&tabBtn);
+ mainWindow->Append(&page1Btn);
+ mainWindow->Append(&page2Btn);
+ mainWindow->Append(&page3Btn);
+ w.Append(&backBtn);
+ w.Append(&lockBtn);
+ w.Append(&updateBtn);
+ mainWindow->Append(&tabBtn);
+ if ( result == 1 ) {
+ if (!strcmp(entered, Settings.unlockCode)) //if password correct
+ {
+ if (Settings.godmode == 0) {
+ WindowPrompt(LANGUAGE.CorrectPassword,LANGUAGE.InstallRenameandDeleteareunlocked,LANGUAGE.ok,0,0,0);
+ Settings.godmode = 1;
+ __Menu_GetEntries();
+ menu = MENU_DISCLIST;
+ }
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.WrongPassword,LANGUAGE.USBLoaderisprotected,LANGUAGE.ok,0,0,0);
+ }
+ }
+ }
+ else
+ {
+ int choice = WindowPrompt (LANGUAGE.LockConsole,LANGUAGE.Areyousure,LANGUAGE.Yes,LANGUAGE.No,0,0);
+ if(choice == 1) {
+ WindowPrompt(LANGUAGE.ConsoleLocked,LANGUAGE.USBLoaderisprotected,LANGUAGE.ok,0,0,0);
+ Settings.godmode = 0;
+ __Menu_GetEntries();
+ menu = MENU_DISCLIST;
+ }
+ }
+ if ( Settings.godmode == 1)
+ {
+ lockBtnTxt.SetText(LANGUAGE.Lock);
+ }
+ else
+ {
+ lockBtnTxt.SetText(LANGUAGE.Unlock);
+ }
+ lockBtn.ResetState();
+ }
+ else if(homo.GetState() == STATE_CLICKED)
+ {
+ cfg_save_global();
+ optionBrowser2.SetState(STATE_DISABLED);
+ s32 thetimeofbg = bgMusic->GetPlayTime();
+ bgMusic->Stop();
+ choice = WindowExitPrompt(LANGUAGE.ExitUSBISOLoader,0, LANGUAGE.BacktoLoader,LANGUAGE.WiiMenu,LANGUAGE.Back,0);
+ if(!strcmp("", Settings.oggload_path) || !strcmp("notset", Settings.ogg_path))
+ {
+ bgMusic->Play();
+ }
+ else
+ {
+ bgMusic->PlayOggFile(Settings.ogg_path);
+ }
+ bgMusic->SetPlayTime(thetimeofbg);
+ SetVolumeOgg(255*(vol/100.0));
+
+ if(choice == 3)
+ {
+ Sys_LoadMenu(); // Back to System Menu
+ }
+ else if (choice == 2)
+ {
+ Sys_BackToLoader();
+ }
+ else
+ {
+ homo.ResetState();
+ }
+ }
+ if(Settings.godmode) {
+ updateBtn.SetVisible(true);
+ updateBtn.SetClickable(true);
+ } else {
+ updateBtn.SetVisible(false);
+ updateBtn.SetClickable(false);
+ }
+ if(settingsbackgroundbtn.GetState() == STATE_CLICKED)
+ {
+ optionBrowser2.SetFocus(1);
+ break;
+ }
+ }
+ }
+ HaltGui();
+ mainWindow->RemoveAll();
+ mainWindow->Append(bgImg);
+ ResumeGui();
+ return menu;
+}
+
+
+/********************************************************************************
+*Game specific settings
+*********************************************************************************/
+int GameSettings(struct discHdr * header)
+{
+ bool exit = false;
+ int ret;
+ int retVal = 0;
+
+ char gameName[31];
+
+ if (strlen(get_title(header)) < (27 + 3)) {
+ sprintf(gameName, "%s", get_title(header));
+ }
+ else {
+ strncpy(gameName, get_title(header), 27);
+ gameName[27] = '\0';
+ strncat(gameName, "...", 3);
+ }
+
+ customOptionList options3(7);
+ options3.SetName(0,"%s", LANGUAGE.VideoMode);
+ options3.SetName(1,"%s", LANGUAGE.VIDTVPatch);
+ options3.SetName(2,"%s", LANGUAGE.Language);
+ options3.SetName(3, "Ocarina");
+ options3.SetName(4, "IOS");
+ options3.SetName(5,"%s", LANGUAGE.Parentalcontrol);
+ options3.SetName(6,"%s", LANGUAGE.Defaultgamesettings);
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+ GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+
+ snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
+ GuiImageData btnOutline(imgPath, button_dialogue_box_png);
+ snprintf(imgPath, sizeof(imgPath), "%sgamesettings_background.png", CFG.theme_path);
+ GuiImageData settingsbg(imgPath, settings_background_png);
+
+ GuiTrigger trigA;
+ trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ GuiTrigger trigHome;
+ trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
+ GuiTrigger trigB;
+ trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
+
+ GuiText titleTxt(get_title(header), 28, (GXColor){0, 0, 0, 255});
+ titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+ titleTxt.SetPosition(12,40);
+ titleTxt.SetMaxWidth(356, GuiText::SCROLL);
+
+ GuiImage settingsbackground(&settingsbg);
+ GuiButton settingsbackgroundbtn(settingsbackground.GetWidth(), settingsbackground.GetHeight());
+ settingsbackgroundbtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ settingsbackgroundbtn.SetPosition(0, 0);
+ settingsbackgroundbtn.SetImage(&settingsbackground);
+
+ GuiText saveBtnTxt(LANGUAGE.Save, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ saveBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
+ GuiImage saveBtnImg(&btnOutline);
+ if (Settings.wsprompt == yes){
+ saveBtnTxt.SetWidescreen(CFG.widescreen);
+ saveBtnImg.SetWidescreen(CFG.widescreen);}
+ GuiButton saveBtn(&saveBtnImg,&saveBtnImg, 2, 3, -180, 400, &trigA, &btnSoundOver, &btnClick,1);
+ saveBtn.SetScale(0.9);
+ saveBtn.SetLabel(&saveBtnTxt);
+
+ GuiText cancelBtnTxt(LANGUAGE.Back, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
+ GuiImage cancelBtnImg(&btnOutline);
+ if (Settings.wsprompt == yes){
+ cancelBtnTxt.SetWidescreen(CFG.widescreen);
+ cancelBtnImg.SetWidescreen(CFG.widescreen);}
+ GuiButton cancelBtn(&cancelBtnImg,&cancelBtnImg, 2, 3, 180, 400, &trigA, &btnSoundOver, &btnClick,1);
+ cancelBtn.SetScale(0.9);
+ cancelBtn.SetLabel(&cancelBtnTxt);
+ cancelBtn.SetTrigger(&trigB);
+
+ GuiText deleteBtnTxt(LANGUAGE.Uninstall, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
+ deleteBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
+ GuiImage deleteBtnImg(&btnOutline);
+ if (Settings.wsprompt == yes){
+ deleteBtnTxt.SetWidescreen(CFG.widescreen);
+ deleteBtnImg.SetWidescreen(CFG.widescreen);}
+ GuiButton deleteBtn(&deleteBtnImg,&deleteBtnImg, 2, 3, 0, 400, &trigA, &btnSoundOver, &btnClick,1);
+ deleteBtn.SetScale(0.9);
+ deleteBtn.SetLabel(&deleteBtnTxt);
+
+ GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, CFG.theme_path, "bg_options_gamesettings.png", bg_options_settings_png, 0, 200);
+ optionBrowser3.SetPosition(0, 90);
+ optionBrowser3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
+
+ HaltGui();
+ GuiWindow w(screenwidth, screenheight);
+ w.Append(&settingsbackgroundbtn);
+ w.Append(&titleTxt);
+ w.Append(&deleteBtn);
+ w.Append(&saveBtn);
+ w.Append(&cancelBtn);
+
+ mainWindow->Append(&w);
+ mainWindow->Append(&optionBrowser3);
+
+ ResumeGui();
+
+ struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
+
+ if (game_cfg)//if there are saved settings for this game use them
+ {
+ videoChoice = game_cfg->video;
+ languageChoice = game_cfg->language;
+ ocarinaChoice = game_cfg->ocarina;
+ viChoice = game_cfg->vipatch;
+ iosChoice = game_cfg->ios;
+ parentalcontrolChoice = game_cfg->parentalcontrol;
+ }
+ else
+ {
+ videoChoice = Settings.video;
+ languageChoice = Settings.language;
+ ocarinaChoice = Settings.ocarina;
+ viChoice = Settings.vpatch;
+ if(Settings.cios == ios222) {
+ iosChoice = i222;
+ } else {
+ iosChoice = i249;
+ }
+ parentalcontrolChoice = 0;
+ }
+
+ while(!exit)
+ {
+
+ VIDEO_WaitVSync ();
+
+ if (videoChoice == discdefault) options3.SetValue(0,"%s",LANGUAGE.DiscDefault);
+ else if (videoChoice == systemdefault) options3.SetValue(0,"%s",LANGUAGE.SystemDefault);
+ else if (videoChoice == patch) options3.SetValue(0,"%s",LANGUAGE.AutoPatch);
+ else if (videoChoice == pal50) options3.SetValue(0,"%s PAL50",LANGUAGE.Force);
+ else if (videoChoice == pal60) options3.SetValue(0,"%s PAL60",LANGUAGE.Force);
+ else if (videoChoice == ntsc) options3.SetValue(0,"%s NTSC",LANGUAGE.Force);
+
+ if (viChoice == on) options3.SetValue(1,"%s",LANGUAGE.ON);
+ else if (viChoice == off) options3.SetValue(1,"%s",LANGUAGE.OFF);
+
+ if (languageChoice == ConsoleLangDefault) options3.SetValue(2,"%s",LANGUAGE.ConsoleDefault);
+ else if (languageChoice == jap) options3.SetValue(2,"%s",LANGUAGE.Japanese);
+ else if (languageChoice == ger) options3.SetValue(2,"%s",LANGUAGE.German);
+ else if (languageChoice == eng) options3.SetValue(2,"%s",LANGUAGE.English);
+ else if (languageChoice == fren) options3.SetValue(2,"%s",LANGUAGE.French);
+ else if (languageChoice == esp) options3.SetValue(2,"%s",LANGUAGE.Spanish);
+ else if (languageChoice == it) options3.SetValue(2,"%s",LANGUAGE.Italian);
+ else if (languageChoice == dut) options3.SetValue(2,"%s",LANGUAGE.Dutch);
+ else if (languageChoice == schin) options3.SetValue(2,"%s",LANGUAGE.SChinese);
+ else if (languageChoice == tchin) options3.SetValue(2,"%s",LANGUAGE.TChinese);
+ else if (languageChoice == kor) options3.SetValue(2,"%s",LANGUAGE.Korean);
+
+ if (ocarinaChoice == on) options3.SetValue(3,"%s",LANGUAGE.ON);
+ else if (ocarinaChoice == off) options3.SetValue(3,"%s",LANGUAGE.OFF);
+
+ if (iosChoice == i249) options3.SetValue(4,"249");
+ else if (iosChoice == i222) options3.SetValue(4,"222");
+
+ if (parentalcontrolChoice == 0) options3.SetValue(5,"0 (Always)");
+ else if (parentalcontrolChoice == 1) options3.SetValue(5,"1");
+ else if (parentalcontrolChoice == 2) options3.SetValue(5,"2");
+ else if (parentalcontrolChoice == 3) options3.SetValue(5,"3 (Mature)");
+
+
+ if(shutdown == 1)
+ Sys_Shutdown();
+ if(reset == 1)
+ Sys_Reboot();
+
+ options3.SetValue(6, " ");
+
+ ret = optionBrowser3.GetClickedOption();
+
+ switch (ret)
+ {
+ case 0:
+ videoChoice = (videoChoice + 1) % CFG_VIDEO_COUNT;
+ break;
+ case 1:
+ viChoice = (viChoice + 1) % 2;
+ break;
+ case 2:
+ languageChoice = (languageChoice + 1) % CFG_LANG_COUNT;
+ break;
+ case 3:
+ ocarinaChoice = (ocarinaChoice + 1) % 2;
+ break;
+ case 4:
+ iosChoice = (iosChoice + 1) % 2;
+ break;
+ case 5:
+ parentalcontrolChoice = (parentalcontrolChoice + 1) % 4;
+ break;
+ case 6:
+ int choice = WindowPrompt(LANGUAGE.Areyousure,0,LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
+ if(choice == 1) {
+ videoChoice = discdefault;
+ viChoice = off;
+ languageChoice = ConsoleLangDefault;
+ ocarinaChoice = off;
+ if(Settings.cios == ios222) {
+ iosChoice = i222;
+ } else {
+ iosChoice = i249;
+ }
+ parentalcontrolChoice = 0;
+ CFG_forget_game_opt(header->id);
+ }
+ break;
+ }
+
+ if(saveBtn.GetState() == STATE_CLICKED)
+ {
+
+ if(isSdInserted()) {
+ if (CFG_save_game_opt(header->id))
+ {
+ WindowPrompt(LANGUAGE.SuccessfullySaved, 0, LANGUAGE.ok, 0,0,0);
+ }
+ else
+ {
+ WindowPrompt(LANGUAGE.SaveFailed, 0, LANGUAGE.ok, 0,0,0);
+ }
+ } else {
+ WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
+ }
+
+ saveBtn.ResetState();
+ optionBrowser3.SetFocus(1);
+ }
+
+ if (cancelBtn.GetState() == STATE_CLICKED)
+ {
+ exit = true;
+ break;
+ }
+
+ if (deleteBtn.GetState() == STATE_CLICKED)
+ {
+ int choice = WindowPrompt(
+ LANGUAGE.Doyoureallywanttodelete,
+ gameName,
+ LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
+
+ if (choice == 1)
+ {
+ ret = WBFS_RemoveGame(header->id);
+ if (ret < 0)
+ {
+ WindowPrompt(
+ LANGUAGE.Cantdelete,
+ gameName,
+ LANGUAGE.ok,0,0,0);
+ }
+ else {
+ __Menu_GetEntries();
+ WindowPrompt(
+ LANGUAGE.Successfullydeleted,
+ gameName,
+ LANGUAGE.ok,0,0,0);
+ retVal = 1;
+ }
+ break;
+ }
+ else if (choice == 0)
+ {
+ deleteBtn.ResetState();
+ optionBrowser3.SetFocus(1);
+ }
+
+ }
+ }
+
+ HaltGui();
+ mainWindow->Remove(&optionBrowser3);
+ mainWindow->Remove(&w);
+ ResumeGui();
+
+ return retVal;
+}
diff --git a/source/Settings.h b/source/Settings.h
new file mode 100644
index 00000000..43a4ec23
--- /dev/null
+++ b/source/Settings.h
@@ -0,0 +1,14 @@
+/****************************************************************************
+ * Settings
+ * USB Loader GX 2009
+ *
+ * settings.h
+ ***************************************************************************/
+
+#ifndef _SETTINGS_H_
+#define _SETTINGS_H_
+
+int MenuSettings();
+int GameSettings(struct discHdr * header);
+
+#endif
diff --git a/source/cfg.c b/source/cfg.c
index b0a2bd00..c9200b8a 100644
--- a/source/cfg.c
+++ b/source/cfg.c
@@ -30,7 +30,7 @@ u8 viChoice = 0;
u8 iosChoice = 0;
u8 parentalcontrolChoice = 0;
u8 xflip = 0;
-u8 sort = 0;
+u8 sort = 0;
u8 fave = 0;
u8 qboot = 0;
u8 wsprompt = 0;
@@ -253,7 +253,7 @@ void CFG_Default(int widescreen) // -1 = non forced Mode
THEME.clock_r = 138;
THEME.clock_g = 138;
THEME.clock_b = 138;
- THEME.settingsTxt_r = 0;
+ THEME.settingsTxt_r = 0;
THEME.settingsTxt_g = 0;
THEME.settingsTxt_b = 0;
THEME.cover_x = 26;
@@ -309,8 +309,8 @@ void CFG_Default(int widescreen) // -1 = non forced Mode
THEME.favorite_x = 4;
THEME.favorite_y = 13;
THEME.abc_x = 36;
- THEME.abc_y = 13;
- THEME.list_x = 100;
+ THEME.abc_y = 13;
+ THEME.list_x = 100;
THEME.list_y = 13;
THEME.grid_x = 132;
THEME.grid_y = 13;
@@ -1156,7 +1156,7 @@ bool cfg_save_global()// save global settings
fprintf(f, "volume = %d\n ", Settings.volume);
fprintf(f, "tooltips = %d\n ", Settings.tooltips);
fprintf(f, "password = %s\n ", Settings.unlockCode);
- fprintf(f, "sort = %d\n ", Settings.sort);
+ fprintf(f, "sort = %d\n ", Settings.sort);
fprintf(f, "fave = %d\n ", Settings.fave);
fprintf(f, "cios = %d\n ", Settings.cios);
fprintf(f, "keyset = %d\n ", Settings.keyset);
@@ -1521,7 +1521,7 @@ void CFG_Load(void)
snprintf(pathname, sizeof(pathname), "%stitles.txt", Settings.titlestxt_path);
cfg_parsefile(pathname, &title_set);
-
+
cfg_parsefile("SD:/config/GXGameSettings.cfg", &parental_set);
// load per-game settings
diff --git a/source/getentries.cpp b/source/getentries.cpp
new file mode 100644
index 00000000..9c441502
--- /dev/null
+++ b/source/getentries.cpp
@@ -0,0 +1,174 @@
+#include
+
+#include "wbfs.h"
+#include "cfg.h"
+#include "main.h"
+
+
+struct discHdr * gameList;
+u32 gameCnt;
+s32 gameSelected, gameStart;
+
+/****************************************************************************
+ * EntryCmp
+ ***************************************************************************/
+s32 __Menu_EntryCmp(const void *a, const void *b)
+
+{
+
+ struct discHdr *hdr1 = (struct discHdr *)a;
+
+ struct discHdr *hdr2 = (struct discHdr *)b;
+
+
+
+ /* Compare strings */
+
+ return stricmp(get_title(hdr1), get_title(hdr2));
+
+}
+
+s32 __Menu_EntryCmpCount(const void *a, const void *b)
+{
+ s32 ret;
+
+ struct discHdr *hdr1 = (struct discHdr *)a;
+
+ struct discHdr *hdr2 = (struct discHdr *)b;
+
+ /* Compare Play Count */
+ u16 count1 = 0;
+ u16 count2 = 0;
+ struct Game_NUM* game_num1 = CFG_get_game_num(hdr1->id);
+ struct Game_NUM* game_num2 = CFG_get_game_num(hdr2->id);
+
+
+
+ if (game_num1) count1 = game_num1->count;
+ if (game_num2) count2 = game_num2->count;
+
+ ret = (s32) (count2-count1);
+ if (ret == 0) return stricmp(get_title(hdr1), get_title(hdr2));
+
+ return ret;
+}
+
+/****************************************************************************
+ * Get Gamelist
+ ***************************************************************************/
+
+s32 __Menu_GetEntries(void)
+{
+ struct discHdr *buffer = NULL;
+ struct discHdr *buffer2 = NULL;
+ struct discHdr *header = NULL;
+
+ u32 cnt, len;
+ s32 ret;
+
+ /* Get list length */
+ ret = WBFS_GetCount(&cnt);
+ if (ret < 0)
+ return ret;
+
+ /* Buffer length */
+ len = sizeof(struct discHdr) * cnt;
+
+ /* Allocate memory */
+ buffer = (struct discHdr *)memalign(32, len);
+ if (!buffer)
+ return -1;
+
+ /* Clear buffer */
+ memset(buffer, 0, len);
+
+ /* Get header list */
+ ret = WBFS_GetHeaders(buffer, cnt, sizeof(struct discHdr));
+ if (ret < 0) {
+ if(buffer) free(buffer);
+ return ret;
+ }
+
+ /* Filters */
+ if (Settings.fave) {
+ u32 cnt2 = 0;
+
+ for (u32 i = 0; i < cnt; i++)
+ {
+ header = &buffer[i];
+ u8 favorite = 0;
+ struct Game_NUM* game_num = CFG_get_game_num(header->id);
+ if (game_num) {
+ favorite = game_num->favorite;
+ }
+ if (favorite==1) {
+ buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
+ if (!buffer2)
+ {
+ free(buffer);
+ return -1;
+ }
+
+ memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
+ cnt2++;
+ }
+ }
+ if (buffer2) {
+ free(buffer);
+ buffer = buffer2;
+ buffer2 = NULL;
+ } else {
+ memset(buffer, 0, len);
+ }
+ cnt = cnt2;
+ }
+
+ if (Settings.parentalcontrol && !Settings.godmode) {
+ u32 cnt2 = 0;
+
+ for (u32 i = 0; i < cnt; i++)
+ {
+ header = &buffer[i];
+ if (get_block(header) < Settings.parentalcontrol) {
+ buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
+ if (!buffer2)
+ {
+ free(buffer);
+ return -1;
+ }
+
+ memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
+ cnt2++;
+ }
+ }
+ if (buffer2) {
+ free(buffer);
+ buffer = buffer2;
+ buffer2 = NULL;
+ } else {
+ memset(buffer, 0, len);
+ }
+ cnt = cnt2;
+ }
+
+ if (Settings.sort==pcount) {
+ qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
+ }
+ else {
+ qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
+ }
+
+ /* Free memory */
+ if (gameList)
+ free(gameList);
+
+ /* Set values */
+ gameList = buffer;
+ buffer = NULL;
+ gameCnt = cnt;
+
+ /* Reset variables */
+ gameSelected = gameStart = 0;
+
+ return 0;
+}
diff --git a/source/getentries.h b/source/getentries.h
new file mode 100644
index 00000000..4dbcc1f5
--- /dev/null
+++ b/source/getentries.h
@@ -0,0 +1,13 @@
+/****************************************************************************
+ * PromptWindows
+ * USB Loader GX 2009
+ *
+ * PromptWindows.h
+ ***************************************************************************/
+
+#ifndef _GETENTRIES_H_
+#define _GETENTRIES_H_
+
+s32 __Menu_GetEntries(void);
+
+#endif
diff --git a/source/listfiles.c b/source/listfiles.c
index 89a5dc3b..c5f554fc 100644
--- a/source/listfiles.c
+++ b/source/listfiles.c
@@ -4,13 +4,37 @@
#include
#include
#include
+#include
#include
#include "listfiles.h"
+char alldirfiles[300][70];
char filename[80];
+bool findfile(const char * filename, const char * path)
+{
+DIR *dir;
+struct dirent *file;
+
+dir = opendir(path);
+
+char temp[11];
+while ((file = readdir(dir)))
+{
+ snprintf(temp,sizeof(temp),"%s",file->d_name);
+ if (!strncmpi(temp,filename,11))
+ {
+ //WindowPrompt(path, filename,"go" ,0);
+ closedir(dir);
+ return true;
+ }
+ }
+ closedir(dir);
+ return false;
+}
+
s32 filenamescmp(const void *a, const void *b)
{
diff --git a/source/listfiles.h b/source/listfiles.h
index dd3a5159..58c9522c 100644
--- a/source/listfiles.h
+++ b/source/listfiles.h
@@ -6,8 +6,7 @@ extern "C"
{
#endif
-char alldirfiles[300][70];
-
+bool findfile(const char * filename, const char * path);
int GetFiles(char * filespath);
diff --git a/source/menu.cpp b/source/menu.cpp
index 42237fd0..91961697 100644
--- a/source/menu.cpp
+++ b/source/menu.cpp
@@ -5,132 +5,67 @@
* menu.cpp
* Menu flow routines - handles all menu logic
***************************************************************************/
-#include
-#include
-#include
#include
-#include
#include
-#include
#include //CLOCK
-#include //CLOCK
-#include
+#include
#include "libwiigui/gui.h"
-#include "menu.h"
-#include "main.h"
-#include "audio.h"
-#include "input.h"
-#include "http.h"
-#include "dns.h"
-#include "partition.h"
-#include "wbfs.h"
-#include "utils.h"
-#include "usbstorage.h"
-#include "disc.h"
-#include "filelist.h"
-#include "wdvd.h"
-#include "libwbfs/libwbfs.h"
-#include "sys.h"
#include "libwiigui/gui_gamegrid.h"
#include "libwiigui/gui_gamecarousel.h"
-#include "patchcode.h"
-#include "wpad.h"
-#include "cfg.h"
-#include "language.h"
#include "libwiigui/gui_customoptionbrowser.h"
#include "libwiigui/gui_gamebrowser.h"
-#include "libwiigui/gui_diskcover.h"
+#include "menu.h"
+#include "audio.h"
+#include "input.h"
+#include "wbfs.h"
+#include "disc.h"
+#include "filelist.h"
+#include "sys.h"
+#include "patchcode.h"
+#include "wpad.h"
+#include "language.h"
#include "listfiles.h"
#include "fatmounter.h"
-#include "updater.h"
+#include "getentries.h"
+#include "PromptWindows.h"
+#include "Settings.h"
#define MAX_CHARACTERS 38
-extern FreeTypeGX *fontClock; //CLOCK
+#define GB_SIZE 1073741824.0
+/*** Variables that are also used extern ***/
+GuiWindow * mainWindow = NULL;
+GuiImageData * pointer[4];
+GuiImage * bgImg = NULL;
+GuiImageData * background = NULL;
+GuiSound * bgMusic = NULL;
+int vol = Settings.volume;
+float gamesize;
+
+/*** Variables used only in menu.cpp ***/
static GuiImage * coverImg = NULL;
static GuiImageData * cover = NULL;
-
-static struct discHdr *gameList = NULL;
-static GuiImageData * pointer[4];
-static GuiImage * bgImg = NULL;
-static GuiImageData * background = NULL;
-static GuiText prTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
-static GuiText timeTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
-static GuiText sizeTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
static GuiText * GameIDTxt = NULL;
static GuiText * GameRegionTxt = NULL;
-static GuiSound * bgMusic = NULL;
-static wbfs_t * hdd = NULL;
-static u32 gameCnt = 0;
-static s32 gameSelected = 0, gameStart = 0;
-static GuiWindow * mainWindow = NULL;
static lwp_t guithread = LWP_THREAD_NULL;
static bool guiHalt = true;
static int ExitRequested = 0;
-static GuiImageData progressbar(progressbar_png);
-static GuiImage progressbarImg(&progressbar);
-int godmode = 0;
-int height = 224;
-int width = 160;
-static float gamesize = 0.00;
-static int startat = 0;
-static int offset = 0, networkisinitialized = 0;
-int vol = Settings.volume;
-static int datag = 0;
-int datagB =0;
-int dataed = -1;
-int cosa=0,sina=0,offa=0;
-u8 dispFave=0;
-
-//downloadvariables
-static char missingFiles[500][12]; //fixed
-static int cntMissFiles = 0;
-
-int direction = 0; // direction the gameprompt slides in
-
static char gameregion[7];
-//power button fix
+
+/*** Extern variables ***/
+extern FreeTypeGX *fontClock;
extern u8 shutdown;
extern u8 reset;
-
-//Wiilight stuff
-static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
-void wiilight(int enable){ // Toggle wiilight (thanks Bool for wiilight source)
- u32 val = (*_wiilight_reg&~0x20);
- if(enable && Settings.wiilight) val |= 0x20;
- *_wiilight_reg=val;
-}
-
-//Prototypes
-int WindowPrompt(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, const char *btn3Label, const char *btn4Label);
-static void HaltGui();
-static void ResumeGui();
+extern char alldirfiles[300][70];
+extern char missingFiles[500][12];
+extern int cntMissFiles;
+extern int networkisinitialized;
+extern struct discHdr * gameList;
+extern u32 gameCnt;
+extern s32 gameSelected, gameStart;
extern const u8 data1;
-
-bool findfile(const char * filename, const char * path)
-{
-DIR *dir;
-struct dirent *file;
-
-dir = opendir(path);
-
-char temp[11];
-while ((file = readdir(dir)))
-{
- snprintf(temp,sizeof(temp),"%s",file->d_name);
- if (!strncmpi(temp,filename,11))
- {
- //WindowPrompt(path, filename,"go" ,0);
- closedir(dir);
- return true;
- }
- }
- closedir(dir);
- return false;
-}
-
/****************************************************************************
* ResumeGui
*
@@ -138,7 +73,7 @@ while ((file = readdir(dir)))
* after finishing the removal/insertion of new elements, and after initial
* GUI setup.
***************************************************************************/
-static void
+void
ResumeGui()
{
guiHalt = false;
@@ -153,7 +88,7 @@ ResumeGui()
* This eliminates the possibility that the GUI is in the middle of accessing
* an element that is being changed.
***************************************************************************/
-static void
+void
HaltGui()
{
guiHalt = true;
@@ -163,2320 +98,11 @@ HaltGui()
usleep(50);
}
-/****************************************************************************
- * WindowCredits
- * Display credits
- ***************************************************************************/
-void WindowCredits()
-{
- int angle = 0;
- GuiSound * creditsMusic = NULL;
-
- s32 thetimeofbg = bgMusic->GetPlayTime();
- StopOgg();
-
- creditsMusic = new GuiSound(credits_music_ogg, credits_music_ogg_size, SOUND_OGG, 55);
- creditsMusic->SetVolume(55);
- creditsMusic->SetLoop(1);
- creditsMusic->Play();
-
- bool exit = false;
- int i = 0;
- int y = 20;
-
- GuiWindow creditsWindow(screenwidth,screenheight);
- GuiWindow creditsWindowBox(580,448);
- creditsWindowBox.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
-
- GuiImageData creditsBox(credits_bg_png);
- GuiImage creditsBoxImg(&creditsBox);
- creditsBoxImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- creditsWindowBox.Append(&creditsBoxImg);
-
- GuiImageData star(little_star_png);
- GuiImage starImg(&star);
- starImg.SetWidescreen(CFG.widescreen); //added
- starImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- starImg.SetPosition(505,350);
-
- int numEntries = 25;
- GuiText * txt[numEntries];
-
- txt[i] = new GuiText(LANGUAGE.Credits, 26, (GXColor){255, 255, 255, 255});
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,12); i++;
-
- char SvnRev[10];
- snprintf(SvnRev, 10, "Rev%s", SVN_REV);
-
- txt[i] = new GuiText(SvnRev, 18, (GXColor){255, 255, 255, 255});
- txt[i]->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); txt[i]->SetPosition(-30,y); i++; y+=34;
-
- txt[i] = new GuiText("USB Loader GX", 24, (GXColor){255, 255, 255, 255});
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y); i++; y+=26;
-
- txt[i] = new GuiText(": http://code.google.com/p/usbloader-gui/", 20, (GXColor){255, 255, 255, 255});
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(50,y); i++; //y+=28;
-
- txt[i] = new GuiText(LANGUAGE.OfficialSite, 20, (GXColor){255, 255, 255, 255});
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(-180,y); i++; y+=28;
-
- GuiText::SetPresets(22, (GXColor){255, 255, 255, 255}, 0, GuiText::WRAP,
- FTGX_JUSTIFY_LEFT | FTGX_ALIGN_TOP, ALIGN_LEFT, ALIGN_TOP);
-
- txt[i] = new GuiText("Coding:");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(170,y);
- i++;
-
- txt[i] = new GuiText("dimok");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=22;
-
- txt[i] = new GuiText("nIxx");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=22;
-
- txt[i] = new GuiText("hungyip84");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=22;
-
- txt[i] = new GuiText("giantpune");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=22;
- txt[i] = new GuiText("ardi");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=24;
-
- txt[i] = new GuiText("Design:");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(170,y);
- i++;
-
- txt[i] = new GuiText("cyrex");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=22;
-
- txt[i] = new GuiText("NeoRame");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=22;
-
- txt[i] = new GuiText("WiiShizza");
- txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
- i++;
- y+=28;
-
- txt[i] = new GuiText(LANGUAGE.Specialthanksto);
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(-50,y);
- i++;
-
- txt[i] = new GuiText(":");
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(30,y+3);
- i++;
- y+=22;
-
- txt[i] = new GuiText("Fishears/Nuke Ocarina & WiiPower Vidpatch");
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
- i++;
-
- txt[i] = new GuiText(LANGUAGE.For);
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(-80,y);
- txt[i]->SetPosition(-80, y);
- i++;
- txt[i] = new GuiText(LANGUAGE.For);
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(130,y);
- txt[i]->SetPosition(130, y);
- i++;
-
- y+=22;
-
- txt[i] = new GuiText("Tantric libwiigui");
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
- i++;
- txt[i] = new GuiText(LANGUAGE.For);
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); //txt[i]->SetPosition(-3,y);
- txt[i]->SetPosition(-3, y);
- i++;
- y+=22;
-
- txt[i] = new GuiText("Waninkoko & Kwiirk USB Loader");
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
- i++;
- txt[i] = new GuiText(LANGUAGE.For);
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(30,y);
- txt[i]->SetPosition(30, y);
- i++;
- y+=22;
-
- txt[i] = new GuiText(LANGUAGE.theUSBLoaderandreleasingthesourcecode);
- txt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); txt[i]->SetPosition(0,y);
- i++;
- y+=22;
-
- for(i=0; i < numEntries; i++)
- creditsWindowBox.Append(txt[i]);
-
-
- creditsWindow.Append(&creditsWindowBox);
- creditsWindow.Append(&starImg);
-
- creditsWindow.SetEffect(EFFECT_FADE, 30);
-
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&creditsWindow);
- ResumeGui();
-
- while(!exit)
- {
- angle++;
- if(angle > 360)
- angle = 0;
- usleep(12000);
- starImg.SetAngle(angle);
- if(ButtonsPressed() != 0)
- exit = true;
-
- }
-
- creditsMusic->Stop();
-
- delete creditsMusic;
-
- creditsWindow.SetEffect(EFFECT_FADE, -30);
- while(creditsWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- mainWindow->Remove(&creditsWindow);
- mainWindow->SetState(STATE_DEFAULT);
- for(i=0; i < numEntries; i++) {
- delete txt[i];
- txt[i] = NULL;
- }
- ResumeGui();
-
- if(!strcmp("", Settings.oggload_path) || !strcmp("notset", Settings.ogg_path)) {
- bgMusic->Play();
- } else {
- bgMusic->PlayOggFile(Settings.ogg_path);
- }
- bgMusic->SetPlayTime(thetimeofbg);
- SetVolumeOgg(255*(vol/100.0));
-}
-
-/****************************************************************************
- * WindowPrompt
- *
- * Displays a prompt window to user, with information, an error message, or
- * presenting a user with a choice of up to 4 Buttons.
- *
- * Give him 1 Titel, 1 Subtitel and 4 Buttons
- * If titel/subtitle or one of the buttons is not needed give him a 0 on that
- * place.
- ***************************************************************************/
-int
-WindowPrompt(const char *title, const char *msg, const char *btn1Label,
- const char *btn2Label, const char *btn3Label,
- const char *btn4Label)
-{
- int choice = -1;
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
- char imgPath[50];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
-
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigB;
- trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);
- }
-
- GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,55);
- GuiText msgTxt(msg, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- msgTxt.SetPosition(0,-40);
- msgTxt.SetMaxWidth(430);
-
- GuiText btn1Txt(btn1Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn1Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn1Txt.SetWidescreen(CFG.widescreen);
- btn1Img.SetWidescreen(CFG.widescreen);
- }
-
- GuiButton btn1(&btn1Img, &btn1Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
- btn1.SetLabel(&btn1Txt);
- btn1.SetState(STATE_SELECTED);
-
- GuiText btn2Txt(btn2Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn2Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn2Txt.SetWidescreen(CFG.widescreen);
- btn2Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn2(&btn2Img, &btn2Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
- btn2.SetLabel(&btn2Txt);
- if(!btn3Label && !btn4Label)
- btn2.SetTrigger(&trigB);
-
- GuiText btn3Txt(btn3Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn3Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn3Txt.SetWidescreen(CFG.widescreen);
- btn3Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn3(&btn3Img, &btn3Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
- btn3.SetLabel(&btn3Txt);
- if(!btn4Label)
- btn3.SetTrigger(&trigB);
-
- GuiText btn4Txt(btn4Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn4Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn4Txt.SetWidescreen(CFG.widescreen);
- btn4Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn4(&btn4Img, &btn4Img, 0,3,0,0,&trigA,&btnSoundOver,&btnClick,1);
- btn4.SetLabel(&btn4Txt);
- if(btn4Label)
- btn4.SetTrigger(&trigB);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
- msgTxt.SetMaxWidth(330);
-
- if(btn2Label && !btn3Label && !btn4Label)
- {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(70, -80);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-70, -80);
- btn3.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn3.SetPosition(-70, -55);
- btn4.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn4.SetPosition(70, -55);
- } else if(btn2Label && btn3Label && !btn4Label) {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(70, -120);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-70, -120);
- btn3.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn3.SetPosition(0, -55);
- btn4.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn4.SetPosition(70, -55);
- } else if(btn2Label && btn3Label && btn4Label) {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(70, -120);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-70, -120);
- btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn3.SetPosition(70, -55);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-70, -55);
- } else if(!btn2Label && btn3Label && btn4Label) {
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -120);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-70, -120);
- btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn3.SetPosition(70, -55);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-70, -55);
- } else {
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -80);
- btn2.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn2.SetPosition(70, -120);
- btn3.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn3.SetPosition(-70, -55);
- btn4.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn4.SetPosition(70, -55);
- }
- } else {
-
- if(btn2Label && !btn3Label && !btn4Label) {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(40, -45);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-40, -45);
- btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn3.SetPosition(50, -65);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-50, -65);
- } else if(btn2Label && btn3Label && !btn4Label) {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(50, -120);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-50, -120);
- btn3.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn3.SetPosition(0, -65);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-50, -65);
- } else if(btn2Label && btn3Label && btn4Label) {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(50, -120);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-50, -120);
- btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn3.SetPosition(50, -65);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-50, -65);
- } else if(!btn2Label && btn3Label && btn4Label) {
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -120);
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-50, -120);
- btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn3.SetPosition(50, -65);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-50, -65);
- } else {
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -45);
- btn2.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn2.SetPosition(50, -120);
- btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn3.SetPosition(50, -65);
- btn4.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn4.SetPosition(-50, -65);
- }
-
- }
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&msgTxt);
-
- if(btn1Label)
- promptWindow.Append(&btn1);
- if(btn2Label)
- promptWindow.Append(&btn2);
- if(btn3Label)
- promptWindow.Append(&btn3);
- if(btn4Label)
- promptWindow.Append(&btn4);
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
-
- while(choice == -1)
- {
- VIDEO_WaitVSync();
- if(shutdown == 1)
- {
- wiilight(0);
- Sys_Shutdown();
- }
- if(reset == 1)
- Sys_Reboot();
- if(btn1.GetState() == STATE_CLICKED) {
- choice = 1;
- }
- else if(btn2.GetState() == STATE_CLICKED) {
- if(!btn3Label)
- choice = 0;
- else
- choice = 2;
- }
- else if(btn3.GetState() == STATE_CLICKED) {
- if(!btn4Label)
- choice = 0;
- else
- choice = 3;
- }
- else if(btn4.GetState() == STATE_CLICKED) {
- choice = 0;
- }
- }
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- while(promptWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
- return choice;
-}
-
-/****************************************************************************
- * WindowExitPrompt
- *
- * Displays a prompt window to user, with information, an error message, or
- * presenting a user with a choice of up to 4 Buttons.
- *
- * Give him 1 Titel, 1 Subtitel and 4 Buttons
- * If titel/subtitle or one of the buttons is not needed give him a 0 on that
- * place.
- ***************************************************************************/
-int
-WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
- const char *btn2Label, const char *btn3Label,
- const char *btn4Label)
-{
- GuiSound * homein = NULL;
- homein = new GuiSound(menuin_ogg, menuin_ogg_size, SOUND_OGG, vol);
- homein->SetVolume(vol);
- homein->SetLoop(0);
- homein->Play();
-
- GuiSound * homeout = NULL;
- homeout = new GuiSound(menuout_ogg, menuout_ogg_size, SOUND_OGG, vol);
- homeout->SetVolume(vol);
- homeout->SetLoop(0);
-
- int choice = -1;
- char imgPath[100];
- u8 HBC=0;
- GuiWindow promptWindow(640,480);
- promptWindow.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- promptWindow.SetPosition(0, 0);
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- GuiImageData top(exit_top_png);
- GuiImageData topOver(exit_top_over_png);
- GuiImageData bottom(exit_bottom_png);
- GuiImageData bottomOver(exit_bottom_over_png);
- GuiImageData button(exit_button_png);
- GuiImageData wiimote(wiimote_png);
- GuiImageData close(closebutton_png);
-
- snprintf(imgPath, sizeof(imgPath), "%sbattery_white.png", CFG.theme_path);
- GuiImageData battery(imgPath, battery_white_png);
- snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path);
- GuiImageData batteryRed(imgPath, battery_red_png);
- snprintf(imgPath, sizeof(imgPath), "%sbattery_bar_white.png", CFG.theme_path);
- GuiImageData batteryBar(imgPath, battery_bar_white_png);
-
- #ifdef HW_RVL
- int i = 0, ret = 0, level;
- char txt[3];
- GuiText * batteryTxt[4];
- GuiImage * batteryImg[4];
- GuiImage * batteryBarImg[4];
- GuiButton * batteryBtn[4];
-
- for(i=0; i < 4; i++)
- {
-
- if(i == 0)
- sprintf(txt, "P%d", i+1);
- else
- sprintf(txt, "P%d", i+1);
-
- batteryTxt[i] = new GuiText(txt, 22, (GXColor){255,255,255, 255});
- batteryTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryImg[i] = new GuiImage(&battery);
- batteryImg[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryImg[i]->SetPosition(36, 0);
- batteryImg[i]->SetTile(0);
- batteryBarImg[i] = new GuiImage(&batteryBar);
- batteryBarImg[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryBarImg[i]->SetPosition(33, 0);
-
- batteryBtn[i] = new GuiButton(40, 20);
- batteryBtn[i]->SetLabel(batteryTxt[i]);
- batteryBtn[i]->SetImage(batteryBarImg[i]);
- batteryBtn[i]->SetIcon(batteryImg[i]);
- batteryBtn[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryBtn[i]->SetRumble(false);
- batteryBtn[i]->SetAlpha(70);
- batteryBtn[i]->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
- }
-
- batteryBtn[0]->SetPosition(180,150);
- batteryBtn[1]->SetPosition(284, 150);
- batteryBtn[2]->SetPosition(388, 150);
- batteryBtn[3]->SetPosition(494, 150);
-
-
- char * sig = (char *)0x80001804;
- if(
- sig[0] == 'S' &&
- sig[1] == 'T' &&
- sig[2] == 'U' &&
- sig[3] == 'B' &&
- sig[4] == 'H' &&
- sig[5] == 'A' &&
- sig[6] == 'X' &&
- sig[7] == 'X')
- HBC=1; // Exit to HBC
- #endif
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigB;
- trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
- GuiTrigger trigHome;
- trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
-
- GuiText titleTxt(LANGUAGE.Homemenu, 36, (GXColor){255, 255, 255, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(-180,40);
- titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
-
- GuiText closeTxt(LANGUAGE.Close, 28, (GXColor){0, 0, 0, 255});
- closeTxt.SetPosition(10,3);
- GuiImage closeImg(&close);
- if (Settings.wsprompt == yes){
- closeTxt.SetWidescreen(CFG.widescreen);
- closeImg.SetWidescreen(CFG.widescreen);
- }
- GuiButton closeBtn(close.GetWidth(), close.GetHeight());
- closeBtn.SetImage(&closeImg);
- closeBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- closeBtn.SetPosition(190,30);
- closeBtn.SetLabel(&closeTxt);
- closeBtn.SetRumble(false);
- closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
-
- GuiImage btn1Img(&top);
- GuiImage btn1OverImg(&topOver);
- GuiButton btn1(&btn1Img,&btn1OverImg, 0, 3, 0, 0, &trigA, &btnSoundOver, &btnClick,0);
- btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
-
- GuiText btn2Txt(btn1Label, 28, (GXColor){0, 0, 0, 255});
- GuiImage btn2Img(&button);
- if (Settings.wsprompt == yes){
- btn2Txt.SetWidescreen(CFG.widescreen);
- btn2Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn2(&btn2Img,&btn2Img, 2, 5, -150, 0, &trigA, &btnSoundOver, &btnClick,1);
- btn2.SetLabel(&btn2Txt);
- btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
- btn2.SetRumble(false);
- if (HBC==1){btn2.SetPosition(-150, 0);}
-
- GuiText btn3Txt(btn2Label, 28, (GXColor){0, 0, 0, 255});
- GuiImage btn3Img(&button);
- if (Settings.wsprompt == yes){
- btn3Txt.SetWidescreen(CFG.widescreen);
- btn3Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn3(&btn3Img,&btn3Img, 2, 5, 150, 0, &trigA, &btnSoundOver, &btnClick,1);
- btn3.SetLabel(&btn3Txt);
- btn3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 50);
- btn3.SetRumble(false);
- if (HBC==1){btn3.SetPosition(150, 0);}
- else {btn3.SetPosition(0,0);}
-
- GuiImage btn4Img(&bottom);
- GuiImage btn4OverImg(&bottomOver);
- GuiButton btn4(&btn4Img,&btn4OverImg, 0, 4, 0, 0, &trigA, &btnSoundOver, &btnClick,0);
- btn4.SetTrigger(&trigB);
- btn4.SetTrigger(&trigHome);
- btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
-
- GuiImage wiimoteImg(&wiimote);
- if (Settings.wsprompt == yes){wiimoteImg.SetWidescreen(CFG.widescreen);}
- wiimoteImg.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- wiimoteImg.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
- wiimoteImg.SetPosition(50,210);
-
- if (HBC==1){promptWindow.Append(&btn2);}
- promptWindow.Append(&btn3);
- promptWindow.Append(&btn4);
- promptWindow.Append(&btn1);
- promptWindow.Append(&closeBtn);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&wiimoteImg);
-
- #ifdef HW_RVL
- promptWindow.Append(batteryBtn[0]);
- promptWindow.Append(batteryBtn[1]);
- promptWindow.Append(batteryBtn[2]);
- promptWindow.Append(batteryBtn[3]);
- #endif
-
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
-
- while(choice == -1)
- {
- VIDEO_WaitVSync();
-
- #ifdef HW_RVL
- for(i=0; i < 4; i++)
- {
- if(WPAD_Probe(i, NULL) == WPAD_ERR_NONE) // controller connected
- {
- level = (userInput[i].wpad.battery_level / 100.0) * 4;
- if(level > 4) level = 4;
- batteryImg[i]->SetTile(level);
-
- if(level == 0)
- batteryBarImg[i]->SetImage(&batteryRed);
- else
- batteryBarImg[i]->SetImage(&batteryBar);
-
- batteryBtn[i]->SetAlpha(255);
- }
- else // controller not connected
- {
- batteryImg[i]->SetTile(0);
- batteryImg[i]->SetImage(&battery);
- batteryBtn[i]->SetAlpha(70);
- }
- }
- #endif
-
-
- if(shutdown == 1)
- {
- wiilight(0);
- Sys_Shutdown();
- }
- if(reset == 1)
- Sys_Reboot();
- if(btn1.GetState() == STATE_CLICKED) {
- choice = 1;
- btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
- btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
- btn3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
- titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- wiimoteImg.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
- #ifdef HW_RVL
- for (int i = 0; i < 4; i++)
- batteryBtn[i]->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
- #endif
- }
- else if(btn4.GetState() == STATE_SELECTED)
- {
- wiimoteImg.SetPosition(50,165);
- }
- else if(btn2.GetState() == STATE_CLICKED) {
- ret = WindowPrompt(LANGUAGE.Areyousure, 0, LANGUAGE.Yes, LANGUAGE.No, 0, 0);
- if (ret == 1) {
- choice = 2;
- }
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- promptWindow.SetState(STATE_DEFAULT);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
- btn2.ResetState();
- }
- else if(btn3.GetState() == STATE_CLICKED) {
- ret = WindowPrompt(LANGUAGE.Areyousure, 0, LANGUAGE.Yes, LANGUAGE.No, 0, 0);
- if (ret == 1) {
- choice = 3;
- }
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- promptWindow.SetState(STATE_DEFAULT);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
- btn3.ResetState();
- }
- else if(btn4.GetState() == STATE_CLICKED) {
- btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
- btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
- btn3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
- titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- wiimoteImg.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
- #ifdef HW_RVL
- for (int i = 0; i < 4; i++)
- batteryBtn[i]->SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50);
- #endif
- choice = 0;
- }
- else if(btn4.GetState() != STATE_SELECTED)
- {
- wiimoteImg.SetPosition(50,210);
- }
- }
- homeout->Play();
- while(btn1.GetEffect() > 0) usleep(50);
- while(promptWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- homein->Stop();
- delete homein;
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- while(homeout->IsPlaying() > 0) usleep(50);
- homeout->Stop();
- delete homeout;
- ResumeGui();
- return choice;
-}
-
-/****************************************************************************
- * GameWindowPrompt
- *
- * Displays a prompt window to user, with information, an error message, or
- * presenting a user with a choice
- ***************************************************************************/
-int GameWindowPrompt()
-{
- int choice = -1, angle = 0;
- f32 size = 0.0;
- char ID[5];
- char IDFull[7];
-
- u8 faveChoice = 0;
- u16 playCount = 0;
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
-
- snprintf(imgPath, sizeof(imgPath), "%sfavorite.png", CFG.theme_path);
- GuiImageData imgFavorite(imgPath, favorite_png);
- snprintf(imgPath, sizeof(imgPath), "%snot_favorite.png", CFG.theme_path);
- GuiImageData imgNotFavorite(imgPath, not_favorite_png);
-
- snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_left.png", CFG.theme_path);
- GuiImageData imgLeft(imgPath, startgame_arrow_left_png);
- snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_right.png", CFG.theme_path);
- GuiImageData imgRight(imgPath, startgame_arrow_right_png);
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigB;
- trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
- GuiTrigger trigL;
- trigL.SetButtonOnlyTrigger(-1, WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT, PAD_BUTTON_LEFT);
- GuiTrigger trigR;
- trigR.SetButtonOnlyTrigger(-1, WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT, PAD_BUTTON_RIGHT);
- GuiTrigger trigPlus;
- trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
- GuiTrigger trigMinus;
- trigMinus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0);
-
- if (CFG.widescreen)
- snprintf(imgPath, sizeof(imgPath), "%swdialogue_box_startgame.png", CFG.theme_path);
- else
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box_startgame.png", CFG.theme_path);
-
- GuiImageData dialogBox(imgPath, CFG.widescreen ? wdialogue_box_startgame_png : dialogue_box_startgame_png);
- GuiImage dialogBoxImg(&dialogBox);
-
- GuiTooltip nameBtnTT(LANGUAGE.RenameGameonWBFS);
- if (Settings.wsprompt == yes)
- nameBtnTT.SetWidescreen(CFG.widescreen);
- GuiText nameTxt("", 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- if (Settings.wsprompt == yes)
- nameTxt.SetWidescreen(CFG.widescreen);
- nameTxt.SetMaxWidth(350, GuiText::SCROLL);
- GuiButton nameBtn(120,50);
- nameBtn.SetLabel(&nameTxt);
-// nameBtn.SetLabelOver(&nameTxt);
- nameBtn.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- nameBtn.SetPosition(0,-122);
- nameBtn.SetSoundOver(&btnSoundOver);
- nameBtn.SetSoundClick(&btnClick);
- nameBtn.SetToolTip(&nameBtnTT,24,-30, ALIGN_LEFT);
-
- if (Settings.godmode == 1){
- nameBtn.SetTrigger(&trigA);
- nameBtn.SetEffectGrow();
- }
-
- GuiText sizeTxt(NULL, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //TODO: get the size here
- sizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
- sizeTxt.SetPosition(-60,70);
-
-// GuiImage diskImg;
- GuiDiskCover diskImg;
- diskImg.SetWidescreen(CFG.widescreen);
- diskImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- diskImg.SetAngle(angle);
- GuiDiskCover diskImg2;
- diskImg2.SetWidescreen(CFG.widescreen);
- diskImg2.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- diskImg2.SetPosition(0, -20);
- diskImg2.SetAngle(angle);
- diskImg2.SetBeta(180);
-
- GuiText playcntTxt(NULL, 18, (GXColor){THEME.info_r, THEME.info_g, THEME.info_b, 255});
- playcntTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- playcntTxt.SetPosition(-115,45);
-
- GuiButton btn1(160, 160);
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- btn1.SetPosition(0, -20);
- btn1.SetImage(&diskImg);
-
- btn1.SetSoundOver(&btnSoundOver);
- btn1.SetSoundClick(&btnClick);
- btn1.SetTrigger(&trigA);
- btn1.SetState(STATE_SELECTED);
-
- GuiText btn2Txt(LANGUAGE.Back, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn2Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn2Txt.SetWidescreen(CFG.widescreen);
- btn2Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn2(&btn2Img,&btn2Img, 1, 5, 0, 0, &trigA, &btnSoundOver, &btnClick,1);
- if (Settings.godmode == 1)
- {
- btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
- btn2.SetPosition(-50, -40);
- }
- else
- {
- btn2.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn2.SetPosition(0, -40);
- }
-
- btn2.SetLabel(&btn2Txt);
- btn2.SetTrigger(&trigB);
-
- GuiText btn3Txt(LANGUAGE.settings, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn3Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn3Txt.SetWidescreen(CFG.widescreen);
- btn3Img.SetWidescreen(CFG.widescreen);}
- GuiButton btn3(&btn3Img,&btn3Img, 0, 4, 50, -40, &trigA, &btnSoundOver, &btnClick,1);
- btn3.SetLabel(&btn3Txt);
-
- GuiImage btnFavoriteImg;
- btnFavoriteImg.SetWidescreen(CFG.widescreen);
- //GuiButton btnFavorite(&btnFavoriteImg,&btnFavoriteImg, 2, 5, -125, -60, &trigA, &btnSoundOver, &btnClick,1);
- GuiButton btnFavorite(imgFavorite.GetWidth(), imgFavorite.GetHeight());
- btnFavorite.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- btnFavorite.SetPosition(-125, -60);
- btnFavorite.SetImage(&btnFavoriteImg);
- btnFavorite.SetSoundOver(&btnSoundOver);
- btnFavorite.SetSoundClick(&btnClick);
- btnFavorite.SetTrigger(&trigA);
- btnFavorite.SetEffectGrow();
-
- GuiImage btnLeftImg(&imgLeft);
- if (Settings.wsprompt == yes)
- {
- btnLeftImg.SetWidescreen(CFG.widescreen);
- }
- GuiButton btnLeft(&btnLeftImg,&btnLeftImg, 0, 5, 20, 0, &trigA, &btnSoundOver, &btnClick,1);
- btnLeft.SetTrigger(&trigL);
- btnLeft.SetTrigger(&trigMinus);
-
- GuiImage btnRightImg(&imgRight);
- if (Settings.wsprompt == yes)
- {
- btnRightImg.SetWidescreen(CFG.widescreen);
- }
- GuiButton btnRight(&btnRightImg,&btnRightImg, 1, 5, -20, 0, &trigA, &btnSoundOver, &btnClick,1);
- btnRight.SetTrigger(&trigR);
- btnRight.SetTrigger(&trigPlus);
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&nameBtn);
- promptWindow.Append(&sizeTxt);
- promptWindow.Append(&playcntTxt);
- promptWindow.Append(&btn2);
- promptWindow.Append(&btnLeft);
- promptWindow.Append(&btnRight);
- promptWindow.Append(&btnFavorite);
-
- //check if unlocked
- if (Settings.godmode == 1)
- {
- promptWindow.Append(&btn3);
- }
-
- promptWindow.Append(&diskImg2);
- promptWindow.Append(&btn1);
-
- short changed = -1;
- GuiImageData * diskCover = NULL;
- GuiImageData * diskCover2 = NULL;
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
-
- while (changed)
- {
- if (changed == 1){
- promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
- }
- else if (changed == 2){
- promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 50);
- }
- else if (changed == 3 || changed == 4)
- {
- if(diskCover2)
- delete diskCover2;
- diskCover2 = NULL;
- if(diskCover)
- diskCover2 = diskCover;
- diskCover = NULL;
- }
-
- //load disc image based or what game is seleted
- struct discHdr * header = &gameList[gameSelected];
-
- snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]);
- snprintf (IDFull,sizeof(IDFull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
-
- if (diskCover)
- delete diskCover;
-
- snprintf(imgPath,sizeof(imgPath),"%s%s.png", Settings.disc_path, IDFull); //changed to current full id
- diskCover = new GuiImageData(imgPath,0);
-
- if (!diskCover->GetImage())
- {
- delete diskCover;
- snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.disc_path, ID); //changed to current id
- diskCover = new GuiImageData(imgPath, 0);
-
-
- if (!diskCover->GetImage())
- { snprintf (ID,sizeof(ID),"%c%c%c%c", header->id[0], header->id[1], header->id[2], header->id[3]);
-
- delete diskCover;
- snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.disc_path, ID); //changed to current id
- diskCover = new GuiImageData(imgPath, 0);
- if (!diskCover->GetImage())
- {
- delete diskCover;
- snprintf(imgPath, sizeof(imgPath), "%snodisc.png", Settings.disc_path); //changed to nodisc.png
- diskCover = new GuiImageData(imgPath,nodisc_png);
- }
- }
- }
-
-
-
- if (changed == 3){
- diskImg.SetImage(diskCover2);
- diskImg.SetBeta(0);
- diskImg.SetBetaRotateEffect(-90, 15);
- diskImg2.SetImage(diskCover);
- diskImg2.SetAngle(diskImg.GetAngle());
- diskImg2.SetBeta(180);
- diskImg2.SetBetaRotateEffect(-90, 15);
- sizeTxt.SetEffect(EFFECT_FADE, -17);
- nameTxt.SetEffect(EFFECT_FADE, -17);
- ResumeGui();
- while(nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect()) usleep(50);
- HaltGui();
- diskImg.SetImage(diskCover);
- diskImg.SetBeta(90);
- diskImg.SetBetaRotateEffect(-90, 15);
- diskImg2.SetImage(diskCover2);
- diskImg2.SetBeta(270);
- diskImg2.SetBetaRotateEffect(-90, 15);
- sizeTxt.SetEffect(EFFECT_FADE, 17);
- nameTxt.SetEffect(EFFECT_FADE, 17);
- }
- else if (changed == 4){
- diskImg.SetImage(diskCover2);
- diskImg.SetBeta(0);
- diskImg.SetBetaRotateEffect(90, 15);
- diskImg2.SetImage(diskCover);
- diskImg2.SetAngle(diskImg.GetAngle());
- diskImg2.SetBeta(180);
- diskImg2.SetBetaRotateEffect(90, 15);
- sizeTxt.SetEffect(EFFECT_FADE, -17);
- nameTxt.SetEffect(EFFECT_FADE, -17);
- ResumeGui();
- while(nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect()) usleep(50);
- HaltGui();
- diskImg.SetImage(diskCover);
- diskImg.SetBeta(270);
- diskImg.SetBetaRotateEffect(90, 15);
- diskImg2.SetImage(diskCover2);
- diskImg2.SetBeta(90);
- diskImg2.SetBetaRotateEffect(90, 15);
- sizeTxt.SetEffect(EFFECT_FADE, 17);
- nameTxt.SetEffect(EFFECT_FADE, 17);
- }
- else
- diskImg.SetImage(diskCover);
-
- WBFS_GameSize(header->id, &size);
- sizeTxt.SetTextf("%.2fGB", size); //set size text;
- nameTxt.SetText(get_title(header));
-
- struct Game_NUM* game_num = CFG_get_game_num(header->id);
- if (game_num) {
- playCount = game_num->count;
- faveChoice = game_num->favorite;
- } else {
- playCount = 0;
- faveChoice = 0;
- }
- playcntTxt.SetTextf("%s: %i",LANGUAGE.Plays, playCount);
- btnFavoriteImg.SetImage(faveChoice ? &imgFavorite : &imgNotFavorite);
-
- nameTxt.SetPosition(0, 1);
-
- if(changed != 3 && changed != 4) // changed==3 or changed==4 --> only Resume the GUI
- {
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- }
- ResumeGui();
-
- changed = 0;
- while(choice == -1)
- {
- diskImg.SetSpin(btn1.GetState() == STATE_SELECTED);
- diskImg2.SetSpin(btn1.GetState() == STATE_SELECTED);
- if(shutdown == 1) //for power button
- {
- wiilight(0);
- Sys_Shutdown();
- }
- if(reset == 1) //for reset button
- Sys_Reboot();
-
- if(btn1.GetState() == STATE_CLICKED) { //boot
- //////////save game play count////////////////
- extern u8 favorite;
- extern u16 count;
- struct Game_NUM* game_num = CFG_get_game_num(header->id);
- if (game_num)
- {
- favorite = game_num->favorite;
- count = game_num->count;//count+=1;
- }count+=1;
- if(isSdInserted()) {
- if (CFG_save_game_num(header->id))
- {
- //WindowPrompt(LANGUAGE.SuccessfullySaved, 0, LANGUAGE.ok, 0,0,0);
- }
- else
- {
- //WindowPrompt(LANGUAGE.SaveFailed, 0, LANGUAGE.ok, 0,0,0);
- }
- }
- ////////////end save play count//////////////
-
- choice = 1;
- SDCard_deInit();
- }
-
- else if(btn2.GetState() == STATE_CLICKED) { //back
- choice = 0;
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- mainWindow->SetState(STATE_DEFAULT);
- wiilight(0);
- }
-
- else if(btn3.GetState() == STATE_CLICKED) { //settings
- choice = 2;
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- }
-
- else if(nameBtn.GetState() == STATE_CLICKED) { //rename
- choice = 3;
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- }
-
- else if(btnFavorite.GetState() == STATE_CLICKED){//switch favorite
- if(isSdInserted()) {
- faveChoice = !faveChoice;
- btnFavoriteImg.SetImage(faveChoice ? &imgFavorite : &imgNotFavorite);
- extern u8 favorite;
- extern u8 count;
- struct Game_NUM* game_num = CFG_get_game_num(header->id);
- if (game_num) {
- favorite = game_num->favorite;
- count = game_num->count;
- }
- favorite = faveChoice;
- CFG_save_game_num(header->id);
- }
- btnFavorite.ResetState();
- }
-
- // this next part is long because nobody could agree on what the left/right buttons should do
- else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == no)){//next game
- promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
- changed = 1;
- btnClick.Play();
- gameSelected = (gameSelected + 1) % gameCnt;
- btnRight.ResetState();
- break;
- }
-
- else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == no)){//previous game
- promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
- changed = 2;
- btnClick.Play();
- gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
- btnLeft.ResetState();
- break;
- }
-
- else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == yes)){//previous game
- promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
- changed = 2;
- btnClick.Play();
- gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
- btnRight.ResetState();
- break;
- }
-
- else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == yes)){//netx game
- promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
- changed = 1;
- btnClick.Play();
- gameSelected = (gameSelected + 1) % gameCnt;
- btnLeft.ResetState();
- break;
- }
-
- else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == sysmenu)){//previous game
- promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
- changed = 2;
- btnClick.Play();
- gameSelected = (gameSelected + 1) % gameCnt;
- btnRight.ResetState();
- break;
- }
-
- else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == sysmenu)){//netx game
- promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
- changed = 1;
- btnClick.Play();
- gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
- btnLeft.ResetState();
- break;
- }
-
- else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == wtf)){//previous game
- promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);
- changed = 1;
- btnClick.Play();
- gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
- btnRight.ResetState();
- break;
- }
-
- else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == wtf)){//netx game
- promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
- changed = 2;
- btnClick.Play();
- gameSelected = (gameSelected + 1) % gameCnt;
- btnLeft.ResetState();
- break;
- }
-
- else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == disk3d)){//next game
-// diskImg.SetBetaRotateEffect(45, 90);
- changed = 3;
- btnClick.Play();
- gameSelected = (gameSelected + 1) % gameCnt;
- btnRight.ResetState();
- break;
- }
-
- else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == disk3d)){//previous game
-// diskImg.SetBetaRotateEffect(-45, 90);
-// promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 1/*50*/);
- changed = 4;
- btnClick.Play();
- gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
- btnLeft.ResetState();
- break;
- }
- }
-
-
- while(promptWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- if(changed != 3 && changed != 4) // changed==3 or changed==4 --> only Halt the GUI
- {
- mainWindow->Remove(&promptWindow);
- ResumeGui();
- }
- }
- delete diskCover;
- delete diskCover2;
-
- return choice;
-}
-
-/****************************************************************************
- * DiscWait
- ***************************************************************************/
-int
-DiscWait(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, int IsDeviceWait)
-{
- int i = 30, ret = 0;
- u32 cover = 0;
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigB;
- trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);
- }
-
- GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,60);
- GuiText msgTxt(msg, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- msgTxt.SetPosition(0,-40);
- msgTxt.SetMaxWidth(430);
-
- GuiText btn1Txt(btn1Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn1Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn1Txt.SetWidescreen(CFG.widescreen);
- btn1Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn1(&btn1Img,&btn1Img, 1, 5, 0, 0, &trigA, &btnSoundOver, &btnClick,1);
-
- if(btn2Label)
- {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn1.SetPosition(40, -45);
- }
- else
- {
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -45);
- }
-
- btn1.SetLabel(&btn1Txt);
- btn1.SetTrigger(&trigB);
- btn1.SetState(STATE_SELECTED);
-
- GuiText btn2Txt(btn2Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn2Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn2Txt.SetWidescreen(CFG.widescreen);
- btn2Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn2(&btn2Img,&btn2Img, 1, 4, -20, -25, &trigA, &btnSoundOver, &btnClick,1);
- btn2.SetLabel(&btn2Txt);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
- msgTxt.SetMaxWidth(380);
- if(btn2Label)
- {
- btn1.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- btn2.SetPosition(-70, -80);
- btn1.SetPosition(70, -80);
- }
- else
- {
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -80);
- }
- }
-
- GuiText timerTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- timerTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- timerTxt.SetPosition(0,160);
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&msgTxt);
-
- if(btn1Label)
- promptWindow.Append(&btn1);
- if(btn2Label)
- promptWindow.Append(&btn2);
- if(IsDeviceWait)
- promptWindow.Append(&timerTxt);
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
-
- if(IsDeviceWait) {
- while(i >= 0)
- {
- timerTxt.SetTextf("%u %s", i,LANGUAGE.secondsleft);
- VIDEO_WaitVSync();
- if(Settings.cios == ios222) {
- ret = IOS_ReloadIOS(222);
- } else {
- ret = IOS_ReloadIOS(249);
- }
- sleep(1);
- ret = WBFS_Init(WBFS_DEVICE_USB);
- if(ret>=0)
- break;
-
- i--;
- }
- } else {
- while(!(cover & 0x2))
- {
- VIDEO_WaitVSync();
- if(btn1.GetState() == STATE_CLICKED) {
- btn1.ResetState();
- break;
- }
- ret = WDVD_GetCoverStatus(&cover);
- if (ret < 0)
- break;
- }
- }
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- while(promptWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
- return ret;
-}
-
-/****************************************************************************
- * FormatingPartition
- ***************************************************************************/
-int
-FormatingPartition(const char *title, partitionEntry *entry)
-{
- int ret;
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
-
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
-
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);
- }
-
- GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,60);
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
-
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
-
- VIDEO_WaitVSync();
- ret = WBFS_Format(entry->sector, entry->size);
-
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- while(promptWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
- return ret;
-}
-
-
-/****************************************************************************
- * NetworkInit
- ***************************************************************************/
-int NetworkInitPromp(int choice2)
-{
- char hostip[16];
- char * IP = NULL;
- s32 ret = -1;
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);
- }
-
- GuiText titleTxt(LANGUAGE.InitializingNetwork, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,60);
-
- char msg[20] = " ";
- GuiText msgTxt(msg, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- msgTxt.SetPosition(0,-40);
-
- GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn1Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn1Txt.SetWidescreen(CFG.widescreen);
- btn1Img.SetWidescreen(CFG.widescreen);
- }
- GuiButton btn1(&btn1Img,&btn1Img, 2, 4, 0, -45, &trigA, &btnSoundOver, &btnClick,1);
- btn1.SetLabel(&btn1Txt);
- btn1.SetState(STATE_SELECTED);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
- btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btn1.SetPosition(0, -80);
- }
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&msgTxt);
- promptWindow.Append(&btn1);
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
-
- ResumeGui();
-
- while (!IP)
- {
-
- VIDEO_WaitVSync();
-
- ret = Net_Init(hostip);
-
- if (ret > 0) {
- IP = hostip;
- }
-
- if (ret <= 0) {
- msgTxt.SetText(LANGUAGE.Couldnotinitializenetwork);
- }
-
- if (IP && ret > 0) {
- msgTxt.SetTextf("IP: %s", IP);
- cntMissFiles = 0;
- u32 i = 0;
- char filename[11];
-
- bool found1 = false;/////add Ids of games that are missing covers to cntMissFiles
- bool found2 = false;
- for (i = 0; i < gameCnt && cntMissFiles < 500; i++)
- {
- struct discHdr* header = &gameList[i];
- if (choice2 != 3) {
-
- snprintf (filename,sizeof(filename),"%c%c%c.png", header->id[0], header->id[1], header->id[2]);
- found2 = findfile(filename, Settings.covers_path);
- snprintf(filename,sizeof(filename),"%c%c%c%c%c%c.png",header->id[0], header->id[1], header->id[2],
- header->id[3], header->id[4], header->id[5]); //full id
- found1 = findfile(filename, Settings.covers_path);
- if (!found1 && !found2) //if could not find any image
- {
- snprintf(missingFiles[cntMissFiles],11,"%s",filename);
- cntMissFiles++;
- }
- }
- else if (choice2 == 3) {
- snprintf (filename,sizeof(filename),"%c%c%c.png", header->id[0], header->id[1], header->id[2]);
- found2 = findfile(filename, Settings.disc_path);
- snprintf(filename,sizeof(filename),"%c%c%c%c%c%c.png",header->id[0], header->id[1], header->id[2],
- header->id[3], header->id[4], header->id[5]); //full id
- found1 = findfile(filename,Settings.disc_path);
- if (!found1 && !found2)
- {
- snprintf(missingFiles[cntMissFiles],11,"%s",filename);
- cntMissFiles++;
- }
- }
- }
- break;
- }
-
- if(btn1.GetState() == STATE_CLICKED) {
- IP = 0;
- ret = -1;
- break;
- }
-
- }
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- while(promptWindow.GetEffect() > 0) usleep(50);
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
-
- return ret;
-}
-
-/****************************************************************************
- * ShowProgress
- *
- * Updates the variables used by the progress window for drawing a progress
- * bar. Also resumes the progress window thread if it is suspended.
- ***************************************************************************/
-void
-ShowProgress (s32 done, s32 total)
-{
-
- static time_t start;
- static u32 expected;
-
- u32 d, h, m, s;
-
- //first time
- if (!done) {
- start = time(0);
- expected = 300;
- }
-
- //Elapsed time
- d = time(0) - start;
-
- if (done != total) {
- //Expected time
- if (d)
- expected = (expected * 3 + d * total / done) / 4;
-
- //Remaining time
- d = (expected > d) ? (expected - d) : 0;
- }
-
- //Calculate time values
- h = d / 3600;
- m = (d / 60) % 60;
- s = d % 60;
-
- //Calculate percentage/size
- f32 percent = (done * 100.0) / total;
-
- prTxt.SetTextf("%0.2f", percent);
-
- timeTxt.SetTextf("%s %d:%02d:%02d",LANGUAGE.Timeleft,h,m,s);
-
- f32 gamesizedone = gamesize * done/total;
-
- sizeTxt.SetTextf("%0.2fGB/%0.2fGB", gamesizedone, gamesize);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){
- progressbarImg.SetTile((int)(80*done/total));}
- else {progressbarImg.SetTile((int)(100*done/total));}
-
-}
-
-/****************************************************************************
- * ProgressWindow
- *
- * Opens a window, which displays progress to the user. Can either display a
- * progress bar showing % completion, or a throbber that only shows that an
- * action is in progress.
- ***************************************************************************/
-int
-ProgressWindow(const char *title, const char *msg)
-{
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);}
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar_outline.png", CFG.theme_path);
- GuiImageData progressbarOutline(imgPath, progressbar_outline_png);
-
- GuiImage progressbarOutlineImg(&progressbarOutline);
- if (Settings.wsprompt == yes){
- progressbarOutlineImg.SetWidescreen(CFG.widescreen);}
- progressbarOutlineImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarOutlineImg.SetPosition(25, 40);
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar_empty.png", CFG.theme_path);
- GuiImageData progressbarEmpty(imgPath, progressbar_empty_png);
- GuiImage progressbarEmptyImg(&progressbarEmpty);
- progressbarEmptyImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarEmptyImg.SetPosition(25, 40);
- progressbarEmptyImg.SetTile(100);
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar.png", CFG.theme_path);
- GuiImageData progressbar(imgPath, progressbar_png);
-
- progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarImg.SetPosition(25, 40);
-
- GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,60);
- GuiText msgTxt(msg, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- msgTxt.SetPosition(0,120);
-
- GuiText prsTxt("%", 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- prsTxt.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
- prsTxt.SetPosition(-188,40);
-
- timeTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- timeTxt.SetPosition(275,-50);
-
- sizeTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
- sizeTxt.SetPosition(50, -50);
-
- prTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- prTxt.SetPosition(200, 40);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
- progressbarOutlineImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- progressbarOutlineImg.SetPosition(0, 40);
- progressbarEmptyImg.SetPosition(80,40);
- progressbarEmptyImg.SetTile(78);
- progressbarImg.SetPosition(80, 40);
- msgTxt.SetMaxWidth(380);
-
- timeTxt.SetPosition(250,-50);
- timeTxt.SetFontSize(22);
- sizeTxt.SetPosition(90, -50);
- sizeTxt.SetFontSize(22);
- }
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&msgTxt);
- promptWindow.Append(&progressbarEmptyImg);
- promptWindow.Append(&progressbarImg);
- promptWindow.Append(&progressbarOutlineImg);
- promptWindow.Append(&prTxt);
- promptWindow.Append(&prsTxt);
- promptWindow.Append(&timeTxt);
-
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
- promptWindow.Append(&prTxt);
- promptWindow.Append(&sizeTxt);
-
- s32 ret;
-
- __Disc_SetLowMem();
-
- ret = wbfs_add_disc(hdd, __WBFS_ReadDVD, NULL, ShowProgress, ONLY_GAME_PARTITION, 0);
-
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
- if (ret < 0) {
- return ret;
- }
- return 0;
-}
-
-/****************************************************************************
- * ProgressWindow
- *
- * Opens a window, which displays progress to the user. Can either display a
- * progress bar showing % completion, or a throbber that only shows that an
- * action is in progress.
- ***************************************************************************/
-int
-ProgressDownloadWindow(int choice2)
-{
-
- int i = 0, cntNotFound = 0;
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);}
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar_outline.png", CFG.theme_path);
- GuiImageData progressbarOutline(imgPath, progressbar_outline_png);
- GuiImage progressbarOutlineImg(&progressbarOutline);
- if (Settings.wsprompt == yes){
- progressbarOutlineImg.SetWidescreen(CFG.widescreen);}
- progressbarOutlineImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarOutlineImg.SetPosition(25, 40);
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar_empty.png", CFG.theme_path);
- GuiImageData progressbarEmpty(imgPath, progressbar_empty_png);
- GuiImage progressbarEmptyImg(&progressbarEmpty);
- progressbarEmptyImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarEmptyImg.SetPosition(25, 40);
- progressbarEmptyImg.SetTile(100);
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar.png", CFG.theme_path);
- GuiImageData progressbar(imgPath, progressbar_png);
- progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarImg.SetPosition(25, 40);
-
- GuiText titleTxt(LANGUAGE.Downloadingfile, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,60);
-
- GuiText msgTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- msgTxt.SetPosition(0,130);
-
- GuiText msg2Txt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- msg2Txt.SetPosition(0,100);
-
- prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- prTxt.SetPosition(0, 40);
-
- GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn1Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn1Txt.SetWidescreen(CFG.widescreen);
- btn1Img.SetWidescreen(CFG.widescreen);}
- GuiButton btn1(&btn1Img,&btn1Img, 2, 4, 0, -45, &trigA, &btnSoundOver, &btnClick,1);
- btn1.SetLabel(&btn1Txt);
- btn1.SetState(STATE_SELECTED);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
- progressbarOutlineImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- progressbarOutlineImg.SetPosition(0, 40);
- progressbarEmptyImg.SetPosition(80,40);
- progressbarEmptyImg.SetTile(78);
- progressbarImg.SetPosition(80, 40);
- }
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&msgTxt);
- promptWindow.Append(&msg2Txt);
- promptWindow.Append(&progressbarEmptyImg);
- promptWindow.Append(&progressbarImg);
- promptWindow.Append(&progressbarOutlineImg);
- promptWindow.Append(&prTxt);
- promptWindow.Append(&btn1);
-
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
-
- //check if directory exist and if not create one
- struct stat st;
- if(stat(Settings.covers_path, &st) != 0) {
- char dircovers[100];
- snprintf(dircovers,strlen(Settings.covers_path),"%s",Settings.covers_path);
- if (mkdir(dircovers, 0777) == -1) {
- if(subfoldercheck(dircovers) != 1) {
- WindowPrompt(LANGUAGE.Error,LANGUAGE.Cantcreatedirectory,LANGUAGE.ok,0,0,0);
- cntMissFiles = 0;
- }
- }
- }
- if(stat(Settings.disc_path,&st) != 0) {
- char dirdiscs[100];
- snprintf(dirdiscs,strlen(Settings.disc_path),"%s",Settings.disc_path);
- if (mkdir(dirdiscs, 0777) == -1) {
- if(subfoldercheck(dirdiscs) != 1) {
- WindowPrompt(LANGUAGE.Error,LANGUAGE.Cantcreatedirectory,LANGUAGE.ok,0,0,0);
- cntMissFiles = 0;
- }
- }
- }
-
- while (i < cntMissFiles)
- {
-
- prTxt.SetTextf("%i%%", 100*i/cntMissFiles);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen))
- {
- //adjust for widescreen
- progressbarImg.SetPosition(80,40);
- progressbarImg.SetTile(80*i/cntMissFiles);
- }
- else
- {
- progressbarImg.SetTile(100*i/cntMissFiles);
- }
-
- msgTxt.SetTextf("%i %s", cntMissFiles - i, LANGUAGE.filesleft);
- msg2Txt.SetTextf("%s", missingFiles[i]);
-
- //download boxart image
- char imgPath[100];
- char URLFile[100];
- if (choice2 == 2)
- {
- sprintf(URLFile,"http://www.theotherzone.com/wii/3d/176/248/%s",missingFiles[i]); // For 3D Covers
- sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[i]);
- }
- if(choice2 == 3)
- {
- sprintf(URLFile,"http://www.theotherzone.com/wii/diskart/160/160/%s",missingFiles[i]);
- sprintf(imgPath,"%s%s", Settings.disc_path, missingFiles[i]);
- }
- if(choice2 == 1)
- {
- sprintf(URLFile,"http://www.theotherzone.com/wii/resize/160/224/%s",missingFiles[i]);
- sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[i]);
- }
-
- struct block file = downloadfile(URLFile);//reject known bad images
-
- if (file.size == 36864 || file.size <= 1024 || file.size == 7386 || file.data == NULL) {
- cntNotFound++;
- i++;
- }
- else
- {
- if(file.data != NULL)
- {
- // save png to sd card
- FILE *pfile=NULL;
- if((pfile = fopen(imgPath, "wb"))!=NULL)
- {
- fwrite(file.data,1,file.size,pfile);
- fclose (pfile);
- }
- free(file.data);
- }
- i++;
- }
-
- if(btn1.GetState() == STATE_CLICKED)
- {
- cntNotFound = cntMissFiles-i+cntNotFound;
- break;
- }
- }
-
- /**Temporary redownloading 1st image because of a fucking corruption bug **/
-
- char URLFile[100];
- if (choice2 == 2) {
- sprintf(URLFile,"http://www.theotherzone.com/wii/3d/176/248/%s",missingFiles[0]); // For 3D Covers
- sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[0]);
- }
- if(choice2 == 3) {
- sprintf(URLFile,"http://www.theotherzone.com/wii/diskart/160/160/%s",missingFiles[0]);
- sprintf(imgPath,"%s%s", Settings.disc_path, missingFiles[0]);
- }
- if(choice2 == 1) {
- sprintf(URLFile,"http://www.theotherzone.com/wii/resize/160/224/%s",missingFiles[0]);
- sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[0]);
- }
-
- struct block file = downloadfile(URLFile);
-
- if (file.size == 36864 || file.size <= 1024 || file.size == 7386 || file.data == NULL) {
- } else {
- if(file.data != NULL)
- {
- // save png to sd card
- FILE *pfile;
- pfile = fopen(imgPath, "wb");
- fwrite(file.data,1,file.size,pfile);
- fclose (pfile);
- free(file.data);
- }
- }
-
-
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
-
- if (cntNotFound != 0) {
- return cntNotFound;
- } else {
- return 0;
- }
-}
-
-/****************************************************************************
- * ProgressWindow
- *
- * Opens a window, which displays progress to the user. Can either display a
- * progress bar showing % completion, or a throbber that only shows that an
- * action is in progress.
- ***************************************************************************/
-int
-ProgressUpdateWindow()
-{
-
- int ret = 0, failed = 0;
- const unsigned int blocksize = 1024;
- char hostip[16];
- char * IP = NULL;
- u8 blockbuffer[blocksize] ATTRIBUTE_ALIGN(32);
-
- GuiWindow promptWindow(472,320);
- promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- promptWindow.SetPosition(0, -10);
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sdialogue_box.png", CFG.theme_path);
- GuiImageData dialogBox(imgPath, dialogue_box_png);
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
-
- GuiImage dialogBoxImg(&dialogBox);
- if (Settings.wsprompt == yes){
- dialogBoxImg.SetWidescreen(CFG.widescreen);}
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar_outline.png", CFG.theme_path);
- GuiImageData progressbarOutline(imgPath, progressbar_outline_png);
- GuiImage progressbarOutlineImg(&progressbarOutline);
- if (Settings.wsprompt == yes){
- progressbarOutlineImg.SetWidescreen(CFG.widescreen);}
- progressbarOutlineImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarOutlineImg.SetPosition(25, 7);
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar_empty.png", CFG.theme_path);
- GuiImageData progressbarEmpty(imgPath, progressbar_empty_png);
- GuiImage progressbarEmptyImg(&progressbarEmpty);
- progressbarEmptyImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarEmptyImg.SetPosition(25, 7);
- progressbarEmptyImg.SetTile(100);
-
- snprintf(imgPath, sizeof(imgPath), "%sprogressbar.png", CFG.theme_path);
- GuiImageData progressbar(imgPath, progressbar_png);
- progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- progressbarImg.SetPosition(25, 7);
-
- char title[50];
- sprintf(title, "%s", LANGUAGE.CheckingforUpdates);
- GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,50);
- char msg[50];
- sprintf(msg, "%s", LANGUAGE.InitializingNetwork);
- GuiText msgTxt(msg, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- msgTxt.SetPosition(0,140);
- char msg2[50] = " ";
- GuiText msg2Txt(msg2, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- msg2Txt.SetPosition(0, 50);
-
- prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- prTxt.SetPosition(0, 7);
-
- GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage btn1Img(&btnOutline);
- if (Settings.wsprompt == yes){
- btn1Txt.SetWidescreen(CFG.widescreen);
- btn1Img.SetWidescreen(CFG.widescreen);}
- GuiButton btn1(&btn1Img,&btn1Img, 2, 4, 0, -40, &trigA, &btnSoundOver, &btnClick,1);
- btn1.SetLabel(&btn1Txt);
- btn1.SetState(STATE_SELECTED);
-
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
- progressbarOutlineImg.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
- progressbarOutlineImg.SetPosition(0, 7);
- progressbarEmptyImg.SetPosition(80,7);
- progressbarEmptyImg.SetTile(78);
- progressbarImg.SetPosition(80, 7);
- }
-
- promptWindow.Append(&dialogBoxImg);
- promptWindow.Append(&titleTxt);
- promptWindow.Append(&msgTxt);
- promptWindow.Append(&msg2Txt);
- promptWindow.Append(&btn1);
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
-
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&promptWindow);
- mainWindow->ChangeFocus(&promptWindow);
- ResumeGui();
-
- struct stat st;
- if(stat(Settings.update_path, &st) != 0) {
- char dir[100];
- snprintf(dir,strlen(Settings.update_path),"%s",Settings.update_path);
- if (mkdir(dir, 0777) == -1) {
- if(subfoldercheck(dir) != 1) {
- WindowPrompt(LANGUAGE.Error,LANGUAGE.Cantcreatedirectory,LANGUAGE.ok,0,0,0);
- ret = -1;
- failed = -1;
- }
- }
- }
-
- char dolpath[150];
- char dolpathsuccess[150];
- snprintf(dolpath, sizeof(dolpath), "%sbootnew.dol", Settings.update_path);
- snprintf(dolpathsuccess, sizeof(dolpathsuccess), "%sboot.dol", Settings.update_path);
-
- while (!IP && !(ret < 0)) {
-
- VIDEO_WaitVSync();
-
- ret = Net_Init(hostip);
-
- if (ret > 0) {
- IP = hostip;
- msgTxt.SetText(IP);
- }
-
- if (ret <= 0) {
- msgTxt.SetText(LANGUAGE.Couldnotinitializenetwork);
- }
-
- if(btn1.GetState() == STATE_CLICKED) {
- IP = 0;
- ret = -1;
- failed = -1;
- btn1.ResetState();
- break;
- }
- }
-
- if(IP && ret >= 0) {
-
- networkisinitialized = 1;
-
- int revnumber = 0;
- int currentrev = atoi(SVN_REV);
-
-/// SDCard_deInit();
- struct block file = downloadfile("http://www.techjawa.com/usbloadergx/rev.txt");
- FILE *pfile;
-/// SDCard_Init();
-
- if(file.data != NULL)
- {
- char revtxt[10];
- pfile = fopen("SD:/rev.txt", "w");
- fwrite(file.data,1,file.size,pfile);
- fclose(pfile);
- //has to be repeated or it isnt working (first file download bug)
- pfile = fopen("SD:/rev.txt", "w");
- fwrite(file.data,1,file.size,pfile);
- fclose(pfile);
- //"w+" doesnt work, needs to be reopened as "r"
- pfile = fopen("SD:/rev.txt", "r");
- int c = 0, i = 0;
- while(c != EOF || i < 10) {
- c = fgetc(pfile);
- if (c != EOF) {
- revtxt[i] = c;
- } else {
- revtxt[i] = 0x00;
- break;
- }
- i++;
- }
- fclose(pfile);
- revnumber = atoi(revtxt);
- remove("SD:/rev.txt");
- free(file.data);
- }
-
- if(revnumber > currentrev) {
- sprintf(msg, "Rev%i %s.", revnumber, LANGUAGE.available);
- int choice = WindowPrompt(msg, LANGUAGE.Doyouwanttoupdate, LANGUAGE.Updatedol, LANGUAGE.Updateall, LANGUAGE.Cancel, 0);
- if(choice == 1 || choice == 2) {
- titleTxt.SetTextf("%s USB Loader GX", LANGUAGE.updating);
- msgTxt.SetPosition(0,100);
- promptWindow.Append(&progressbarEmptyImg);
- promptWindow.Append(&progressbarImg);
- promptWindow.Append(&progressbarOutlineImg);
- promptWindow.Append(&prTxt);
- msgTxt.SetTextf("%s Rev%i", LANGUAGE.Updateto, revnumber);
- int filesize = downloadrev("http://www.techjawa.com/usbloadergx/boot.dol");
- if(filesize > 0) {
- pfile = fopen(dolpath, "wb");
- for (int i = 0; i < filesize; i += blocksize) {
- prTxt.SetTextf("%i%%", 100*i/filesize);
- if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust for widescreen
- progressbarImg.SetTile(80*i/filesize);
- } else {
- progressbarImg.SetTile(100*i/filesize);
- }
- msg2Txt.SetTextf("%iKB/%iKB", i/1024, filesize/1024);
-
- if(btn1.GetState() == STATE_CLICKED) {
- fclose(pfile);
- remove(dolpath);
- failed = -1;
- btn1.ResetState();
- break;
- }
-
- u32 blksize;
- blksize = (u32)(filesize - i);
- if (blksize > blocksize)
- blksize = blocksize;
-
- ret = network_read(blockbuffer, blksize);
- if ((u32)ret != blksize) {
- failed = -1;
- ret = -1;
- fclose(pfile);
- remove(dolpath);
- break;
- }
- fwrite(blockbuffer,1,blksize, pfile);
- }
- fclose(pfile);
- if(!failed) {
- //remove old
- if(checkfile(dolpathsuccess)){
- remove(dolpathsuccess);
- }
- //rename new to old
- rename(dolpath, dolpathsuccess);
-
- if(choice == 2) {
- //get the icon.png and the meta.xml
- char xmliconpath[150];
- file = downloadfile("http://www.techjawa.com/usbloadergx/meta.file");
- if(file.data != NULL){
- sprintf(xmliconpath, "%smeta.xml", Settings.update_path);
- pfile = fopen(xmliconpath, "wb");
- fwrite(file.data,1,file.size,pfile);
- fclose(pfile);
- free(file.data);
- }
- file = downloadfile("http://www.techjawa.com/usbloadergx/icon.png");
- if(file.data != NULL){
- sprintf(xmliconpath, "%sicon.png", Settings.update_path);
- pfile = fopen(xmliconpath, "wb");
- fwrite(file.data,1,file.size,pfile);
- fclose(pfile);
- free(file.data);
- }
- }
- }
- } else {
- failed = -1;
- }
- } else {
- ret = -1;
- }
-
- } else {
- WindowPrompt(LANGUAGE.Nonewupdates, 0, LANGUAGE.ok, 0, 0, 0);
- ret = -1;
- }
-
- }
-
- CloseConnection();
-
- if(!failed && ret >= 0) {
- WindowPrompt(LANGUAGE.Successfullyupdated , LANGUAGE.Restarting, LANGUAGE.ok, 0, 0, 0);
- Sys_BackToLoader();
- }
-
- promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
- while(promptWindow.GetEffect() > 0) usleep(50);
-
- HaltGui();
- mainWindow->Remove(&promptWindow);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
-
- if(failed != 0)
- return failed;
-
- return 1;
-}
-
-
/****************************************************************************
* UpdateGUI
*
* Primary thread to allow GUI to respond to state changes, and draws GUI
***************************************************************************/
-int noControllers=0;
static void *
UpdateGUI (void *arg)
{
@@ -2502,17 +128,6 @@ UpdateGUI (void *arg)
{
DoRumble(i);
}
- /*if(WPAD_Probe(i, NULL) == WPAD_ERR_NO_CONTROLLER){
- noControllers++;
- if (noControllers == 4){
- mainWindow->SetState(STATE_DISABLED);
- }
- }
- else {noControllers =0;
- if (mainWindow->GetState()==STATE_DISABLED);
-
- mainWindow->SetState(STATE_DEFAULT);}*/
-
}
#endif
@@ -2542,432 +157,15 @@ UpdateGUI (void *arg)
*
* Startup GUI threads
***************************************************************************/
-void
-InitGUIThreads()
+void InitGUIThreads()
{
- LWP_CreateThread (&guithread, UpdateGUI, NULL, NULL, 0, 70);
+ LWP_CreateThread(&guithread, UpdateGUI, NULL, NULL, 0, 70);
}
-void
-ExitGUIThreads()
+void ExitGUIThreads()
{
ExitRequested = 1;
LWP_JoinThread(guithread, NULL);
}
-/****************************************************************************
- * EntryCmp
- ***************************************************************************/
-s32 __Menu_EntryCmp(const void *a, const void *b)
-
-{
-
- struct discHdr *hdr1 = (struct discHdr *)a;
-
- struct discHdr *hdr2 = (struct discHdr *)b;
-
-
-
- /* Compare strings */
-
- return stricmp(get_title(hdr1), get_title(hdr2));
-
-}
-
-s32 __Menu_EntryCmpCount(const void *a, const void *b)
-{
- s32 ret;
-
- struct discHdr *hdr1 = (struct discHdr *)a;
-
- struct discHdr *hdr2 = (struct discHdr *)b;
-
- /* Compare Play Count */
- u16 count1 = 0;
- u16 count2 = 0;
- struct Game_NUM* game_num1 = CFG_get_game_num(hdr1->id);
- struct Game_NUM* game_num2 = CFG_get_game_num(hdr2->id);
-
-
-
- if (game_num1) count1 = game_num1->count;
- if (game_num2) count2 = game_num2->count;
-
- ret = (s32) (count2-count1);
- if (ret == 0) return stricmp(get_title(hdr1), get_title(hdr2));
-
- return ret;
-}
-
-/****************************************************************************
- * Get Gamelist
- ***************************************************************************/
-
-s32 __Menu_GetEntries(void)
-{
- struct discHdr *buffer = NULL;
- struct discHdr *buffer2 = NULL;
- struct discHdr *header = NULL;
-
- u32 cnt, len;
- s32 ret;
-
- /* Get list length */
- ret = WBFS_GetCount(&cnt);
- if (ret < 0)
- return ret;
-
- /* Buffer length */
- len = sizeof(struct discHdr) * cnt;
-
- /* Allocate memory */
- buffer = (struct discHdr *)memalign(32, len);
- if (!buffer)
- return -1;
-
- /* Clear buffer */
- memset(buffer, 0, len);
-
- /* Get header list */
- ret = WBFS_GetHeaders(buffer, cnt, sizeof(struct discHdr));
- if (ret < 0) {
- if(buffer) free(buffer);
- return ret;
- }
-
- /* Filters */
- if (Settings.fave) {
- u32 cnt2 = 0;
-
- for (u32 i = 0; i < cnt; i++)
- {
- header = &buffer[i];
- u8 favorite = 0;
- struct Game_NUM* game_num = CFG_get_game_num(header->id);
- if (game_num) {
- favorite = game_num->favorite;
- }
- if (favorite==1) {
- buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
- if (!buffer2)
- {
- free(buffer);
- return -1;
- }
-
- memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
- cnt2++;
- }
- }
- if (buffer2) {
- free(buffer);
- buffer = buffer2;
- buffer2 = NULL;
- } else {
- memset(buffer, 0, len);
- }
- cnt = cnt2;
- }
-
- if (Settings.parentalcontrol && !Settings.godmode) {
- u32 cnt2 = 0;
-
- for (u32 i = 0; i < cnt; i++)
- {
- header = &buffer[i];
- if (get_block(header) < Settings.parentalcontrol) {
- buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
- if (!buffer2)
- {
- free(buffer);
- return -1;
- }
-
- memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
- cnt2++;
- }
- }
- if (buffer2) {
- free(buffer);
- buffer = buffer2;
- buffer2 = NULL;
- } else {
- memset(buffer, 0, len);
- }
- cnt = cnt2;
- }
-
- if (Settings.sort==pcount) {
- qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
- }
- else {
- qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
- }
-
- /* Free memory */
- if (gameList)
- free(gameList);
-
- /* Set values */
- gameList = buffer;
- buffer = NULL;
- gameCnt = cnt;
-
- /* Reset variables */
- gameSelected = gameStart = 0;
-
- return 0;
-}
-
-/****************************************************************************
- * OnScreenKeyboard
- *
- * Opens an on-screen keyboard window, with the data entered being stored
- * into the specified variable.
- ***************************************************************************/
- extern int min;
-static int OnScreenKeyboard(char * var, u32 maxlen, int min)
-{
- int save = -1;
- int keyset = 0;
- if (Settings.keyset == us) keyset = 0;
- else if (Settings.keyset == dvorak) keyset = 1;
- else if (Settings.keyset == euro) keyset = 2;
- else if (Settings.keyset == azerty) keyset = 3;
-
- GuiKeyboard keyboard(var, maxlen, min, keyset);
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[50];
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigB;
- trigB.SetSimpleTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
-
- GuiText okBtnTxt(LANGUAGE.ok, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage okBtnImg(&btnOutline);
- if (Settings.wsprompt == yes){
- okBtnTxt.SetWidescreen(CFG.widescreen);
- okBtnImg.SetWidescreen(CFG.widescreen);
- }
- GuiButton okBtn(&okBtnImg,&okBtnImg, 0, 4, 5, 15, &trigA, &btnSoundOver, &btnClick,1);
- okBtn.SetLabel(&okBtnTxt);
- GuiText cancelBtnTxt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- GuiImage cancelBtnImg(&btnOutline);
- if (Settings.wsprompt == yes){
- cancelBtnTxt.SetWidescreen(CFG.widescreen);
- cancelBtnImg.SetWidescreen(CFG.widescreen);
- }
- GuiButton cancelBtn(&cancelBtnImg,&cancelBtnImg, 1, 4, -5, 15, &trigA, &btnSoundOver, &btnClick,1);
- cancelBtn.SetLabel(&cancelBtnTxt);
- cancelBtn.SetTrigger(&trigB);
-
- keyboard.Append(&okBtn);
- keyboard.Append(&cancelBtn);
-
- HaltGui();
- mainWindow->SetState(STATE_DISABLED);
- mainWindow->Append(&keyboard);
- mainWindow->ChangeFocus(&keyboard);
- ResumeGui();
-
- while(save == -1)
- {
- VIDEO_WaitVSync();
-
- if(okBtn.GetState() == STATE_CLICKED)
- save = 1;
- else if(cancelBtn.GetState() == STATE_CLICKED)
- save = 0;
- }
-
- if(save)
- {
- snprintf(var, maxlen, "%s", keyboard.kbtextstr);
- }
-
- HaltGui();
- mainWindow->Remove(&keyboard);
- mainWindow->SetState(STATE_DEFAULT);
- ResumeGui();
- return save;
-}
-
-
-/****************************************************************************
- * MenuInstall
- ***************************************************************************/
-
-static int MenuInstall()
-{
- int menu = MENU_NONE;
- static struct discHdr headerdisc ATTRIBUTE_ALIGN(32);
-
- if(Settings.cios == ios222) {
- Disc_SetUSB(NULL, 1);
- } else {
- Disc_SetUSB(NULL, 0);
- }
-
- int ret, choice = 0;
- char *name;
- static char buffer[MAX_CHARACTERS + 4];
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
-
- snprintf(imgPath, sizeof(imgPath), "%sbattery.png", CFG.theme_path);
- GuiImageData battery(imgPath, battery_png);
- snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path);
- GuiImageData batteryRed(imgPath, battery_red_png);
- snprintf(imgPath, sizeof(imgPath), "%sbattery_bar.png", CFG.theme_path);
- GuiImageData batteryBar(imgPath, battery_bar_png);
-
- HaltGui();
- GuiWindow w(screenwidth, screenheight);
-
- mainWindow->Append(&w);
-
- ResumeGui();
-
- while(menu == MENU_NONE)
- {
- VIDEO_WaitVSync ();
-
- ret = DiscWait(LANGUAGE.InsertDisk,LANGUAGE.Waiting,LANGUAGE.Cancel,0,0);
- if (ret < 0) {
- WindowPrompt (LANGUAGE.ErrorreadingDisc,0,LANGUAGE.Back,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
- ret = Disc_Open();
- if (ret < 0) {
- WindowPrompt (LANGUAGE.CouldnotopenDisc,0,LANGUAGE.Back,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
-
- ret = Disc_IsWii();
- if (ret < 0) {
- choice = WindowPrompt (LANGUAGE.NotaWiiDisc,LANGUAGE.InsertaWiiDisc,LANGUAGE.ok,LANGUAGE.Back,0,0);
-
- if (choice == 1) {
- menu = MENU_INSTALL;
- break;
- } else
- menu = MENU_DISCLIST;
- break;
- }
-
- Disc_ReadHeader(&headerdisc);
- name = headerdisc.title;
- if (strlen(name) < (MAX_CHARACTERS + 3)) {
- memset(buffer, 0, sizeof(buffer));
- sprintf(name, "%s", name);
- } else {
- strncpy(buffer, name, MAX_CHARACTERS);
- buffer[MAX_CHARACTERS] = '\0';
- strncat(buffer, "...", 3);
- sprintf(name, "%s", buffer);
- }
-
- ret = WBFS_CheckGame(headerdisc.id);
- if (ret) {
- WindowPrompt (LANGUAGE.Gameisalreadyinstalled,name,LANGUAGE.Back,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
- hdd = GetHddInfo();
- if (!hdd) {
- WindowPrompt (LANGUAGE.NoHDDfound,LANGUAGE.Error,LANGUAGE.Back,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
-
- f32 freespace, used;
-
- WBFS_DiskSpace(&used, &freespace);
- float estimation = wbfs_estimate_disc(hdd, __WBFS_ReadDVD, NULL, ONLY_GAME_PARTITION);
- gamesize = estimation/1073741824;
- char gametxt[50];
-
- sprintf(gametxt, "%s : %.2fGB", name, gamesize);
-
- wiilight(1);
- choice = WindowPrompt(LANGUAGE.Continueinstallgame,gametxt,LANGUAGE.ok,LANGUAGE.Cancel,0,0);
-
- if(choice == 1) {
-
- sprintf(gametxt, "%s", LANGUAGE.Installinggame);
-
- if (gamesize > freespace) {
- char errortxt[50];
- sprintf(errortxt, "%s: %.2fGB, %s: %.2fGB",LANGUAGE.GameSize, gamesize, LANGUAGE.FreeSpace, freespace);
- choice = WindowPrompt(LANGUAGE.Notenoughfreespace,errortxt,LANGUAGE.ok, LANGUAGE.Return,0,0);
- if (choice == 1) {
- wiilight(1);
- ret = ProgressWindow(gametxt, name);
- if (ret != 0) {
- WindowPrompt (LANGUAGE.Installerror,0,LANGUAGE.Back,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
- else {
- wiilight(1);
- __Menu_GetEntries(); //get the entries again
- WindowPrompt (LANGUAGE.Successfullyinstalled,name,LANGUAGE.ok,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
- } else {
- menu = MENU_DISCLIST;
- break;
- }
-
- }
- else {
- ret = ProgressWindow(gametxt, name);
- if (ret != 0) {
- WindowPrompt (LANGUAGE.Installerror,0,LANGUAGE.Back,0,0,0);
- menu = MENU_DISCLIST;
- break;
- } else {
- __Menu_GetEntries(); //get the entries again
- WindowPrompt (LANGUAGE.Successfullyinstalled,name,LANGUAGE.ok,0,0,0);
- menu = MENU_DISCLIST;
- break;
- }
- }
- } else {
- menu = MENU_DISCLIST;
- break;
- }
-
- if (shutdown == 1) {
- wiilight(0);
- Sys_Shutdown();
- }
- if(reset == 1) {
- wiilight(0);
- Sys_Reboot();
- }
- }
-
- //Turn off the WiiLight
- wiilight(0);
-
- HaltGui();
-
- mainWindow->Remove(&w);
- ResumeGui();
-/// SDCard_deInit();
-/// SDCard_Init();
- return menu;
-}
/****************************************************************************
* MenuDiscList
@@ -2975,8 +173,16 @@ static int MenuInstall()
static int MenuDiscList()
{
- datagB = 0;
- int menu = MENU_NONE, dataef = 0;
+
+ int startat = 0;
+ int offset = 0;
+ int datag = 0;
+ int datagB =0;
+ int dataed = -1;
+ int cosa=0,sina=0;
+
+ datagB=0;
+ int menu = MENU_NONE, dataef=0;
char imgPath[100];
__Menu_GetEntries();
@@ -2988,8 +194,8 @@ static int MenuDiscList()
//CLOCK
struct tm * timeinfo;
- char theTime[80] = "";
- time_t lastrawtime = 0;
+ char theTime[80]="";
+ time_t lastrawtime=0;
WBFS_DiskSpace(&used, &freespace);
@@ -3140,7 +346,6 @@ static int MenuDiscList()
GuiButton abcBtn(&abcBtnImg_g,&abcBtnImg_g, 2, 3, THEME.abc_x, THEME.abc_y, &trigA, &btnSoundOver, &btnClick,1);
abcBtn.SetAlpha(180);
-
GuiImage countBtnImg(&imgplayCountIcon);
countBtnImg.SetWidescreen(CFG.widescreen);
GuiImage countBtnImg_g(&imgplayCountIcon_gray);
@@ -3148,7 +353,6 @@ static int MenuDiscList()
GuiButton countBtn(&countBtnImg_g,&countBtnImg_g, 2, 3, THEME.count_x, THEME.count_y, &trigA, &btnSoundOver, &btnClick,1);
countBtn.SetAlpha(180);
-
GuiImage listBtnImg(&imgarrangeList);
listBtnImg.SetWidescreen(CFG.widescreen);
GuiImage listBtnImg_g(&imgarrangeList_gray);
@@ -3156,7 +360,6 @@ static int MenuDiscList()
GuiButton listBtn(&listBtnImg_g,&listBtnImg_g, 2, 3, THEME.list_x, THEME.list_y, &trigA, &btnSoundOver, &btnClick,1);
listBtn.SetAlpha(180);
-
GuiImage gridBtnImg(&imgarrangeGrid);
gridBtnImg.SetWidescreen(CFG.widescreen);
GuiImage gridBtnImg_g(&imgarrangeGrid_gray);
@@ -3164,7 +367,6 @@ static int MenuDiscList()
GuiButton gridBtn(&gridBtnImg_g,&gridBtnImg_g, 2, 3, THEME.grid_x, THEME.grid_y, &trigA, &btnSoundOver, &btnClick,1);
gridBtn.SetAlpha(180);
-
GuiImage carouselBtnImg(&imgarrangeCarousel);
carouselBtnImg.SetWidescreen(CFG.widescreen);
GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
@@ -3190,13 +392,13 @@ static int MenuDiscList()
countBtn.SetImageOver(&countBtnImg);
countBtn.SetAlpha(255);
}
- if (Settings.gameDisplay==list)
+ if (Settings.gameDisplay==list)
{
listBtn.SetImage(&listBtnImg);
listBtn.SetImageOver(&listBtnImg);
- listBtn.SetAlpha(255);
+ listBtn.SetAlpha(255);
}
- else if (Settings.gameDisplay==grid)
+ else if (Settings.gameDisplay==grid)
{
gridBtn.SetImage(&gridBtnImg);
gridBtn.SetImageOver(&gridBtnImg);
@@ -3208,7 +410,7 @@ static int MenuDiscList()
carouselBtn.SetImageOver(&carouselBtnImg);
carouselBtn.SetAlpha(255);
}
- if (Settings.gameDisplay == list)
+ if (Settings.gameDisplay==list)
{
if(CFG.widescreen)
{
@@ -3300,11 +502,11 @@ static int MenuDiscList()
HaltGui();
GuiWindow w(screenwidth, screenheight);
- if(THEME.showHDD == 1)
+ if(THEME.showHDD == -1 || THEME.showHDD == 1) //force show hdd info
{
w.Append(&usedSpaceTxt);
}
- if(THEME.showGameCnt == 1)
+ if(THEME.showGameCnt == -1 || THEME.showGameCnt == 1) //force show game cnt info
{
w.Append(&gamecntTxt);
}
@@ -3371,7 +573,7 @@ static int MenuDiscList()
}
if ((datagB<1)&&(Settings.cios==1)&&(Settings.video == ntsc)&&(Settings.hddinfo == hr12)&&(Settings.qboot==1)&&(Settings.wsprompt==0)&&(Settings.language==ger)&&(Settings.tooltips==0)){dataed=1;dataef=1;}if (dataef==1){if (cosa>7){cosa=1;}datag++;if (sina==3){wiiBtn.SetAlignment(ALIGN_LEFT,ALIGN_BOTTOM);wiiBtnImg.SetAngle(0);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((cosa)*70),(-2*(datag)+120));}else if(62<=datag){wiiBtn.SetPosition(((cosa)*70),((datag*2)-130));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}if (sina==2){wiiBtn.SetAlignment(ALIGN_RIGHT,ALIGN_TOP);wiiBtnImg.SetAngle(270);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((-2*(datag)+130)),((cosa)*50));}else if(62<=datag){wiiBtn.SetPosition((2*(datag)-120),((cosa)*50));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}if (sina==1){wiiBtn.SetAlignment(ALIGN_TOP,ALIGN_LEFT);wiiBtnImg.SetAngle(180);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((cosa)*70),(2*(datag)-120));}else if(62<=datag){wiiBtn.SetPosition(((cosa)*70),(-2*(datag)+130));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}if (sina==0){wiiBtn.SetAlignment(ALIGN_TOP,ALIGN_LEFT);wiiBtnImg.SetAngle(90);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((2*(datag)-130)),((cosa)*50));}else if(62<=datag){wiiBtn.SetPosition((-2*(datag)+120),((cosa)*50));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}}
- // respond to button presses
+ // respond to button presses
if(shutdown == 1)
{
Sys_Shutdown();
@@ -3480,7 +682,6 @@ static int MenuDiscList()
int choice2 = choice;
netset = NetworkInitPromp(choice2);
- networkisinitialized = 1;
if(netset < 0)
{
@@ -3612,7 +813,7 @@ static int MenuDiscList()
}
countBtn.ResetState();
- }
+ }
else if(listBtn.GetState() == STATE_CLICKED) {
if (Settings.gameDisplay!=list){
@@ -3620,7 +821,7 @@ static int MenuDiscList()
mainWindow->Remove(&gameGrid);
gridBtn.SetImage(&gridBtnImg_g);
gridBtn.SetImageOver(&gridBtnImg_g);
- gridBtn.SetAlpha(180);
+ gridBtn.SetAlpha(180);
}
if (Settings.gameDisplay==carousel) {
mainWindow->Remove(&gameCarousel);
@@ -3672,12 +873,12 @@ static int MenuDiscList()
}
}
listBtn.ResetState();
- }
+ }
- else if (gridBtn.GetState() == STATE_CLICKED) {
- if (Settings.gameDisplay!=grid){
- if (Settings.gameDisplay==list) {
- mainWindow->Remove(&gameBrowser);
+ else if (gridBtn.GetState() == STATE_CLICKED) {
+ if (Settings.gameDisplay!=grid){
+ if (Settings.gameDisplay==list) {
+ mainWindow->Remove(&gameBrowser);
if (GameIDTxt) w.Remove(GameIDTxt);
if (GameRegionTxt) w.Remove(GameRegionTxt);
w.Remove(&DownloadBtn);
@@ -3731,12 +932,12 @@ static int MenuDiscList()
w.Append(&carouselBtn);
if(isSdInserted()) {
cfg_save_global();
- }
+ }
}
- gridBtn.ResetState();
- }
+ gridBtn.ResetState();
+ }
- else if (carouselBtn.GetState() == STATE_CLICKED) {
+ else if (carouselBtn.GetState() == STATE_CLICKED) {
if (Settings.gameDisplay!=carousel){
if (Settings.gameDisplay==list)
mainWindow->Remove(&gameBrowser);
@@ -4169,6 +1370,170 @@ static int MenuDiscList()
return menu;
}
+/****************************************************************************
+ * MenuInstall
+ ***************************************************************************/
+
+static int MenuInstall()
+{
+ int menu = MENU_NONE;
+ static struct discHdr headerdisc ATTRIBUTE_ALIGN(32);
+
+ if(Settings.cios == ios222) {
+ Disc_SetUSB(NULL, 1);
+ } else {
+ Disc_SetUSB(NULL, 0);
+ }
+
+ int ret, choice = 0;
+ char *name;
+ static char buffer[MAX_CHARACTERS + 4];
+
+ GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
+
+ char imgPath[100];
+
+ snprintf(imgPath, sizeof(imgPath), "%sbattery.png", CFG.theme_path);
+ GuiImageData battery(imgPath, battery_png);
+ snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path);
+ GuiImageData batteryRed(imgPath, battery_red_png);
+ snprintf(imgPath, sizeof(imgPath), "%sbattery_bar.png", CFG.theme_path);
+ GuiImageData batteryBar(imgPath, battery_bar_png);
+
+ HaltGui();
+ GuiWindow w(screenwidth, screenheight);
+
+ mainWindow->Append(&w);
+
+ ResumeGui();
+
+ while(menu == MENU_NONE)
+ {
+ VIDEO_WaitVSync ();
+
+ ret = DiscWait(LANGUAGE.InsertDisk,LANGUAGE.Waiting,LANGUAGE.Cancel,0,0);
+ if (ret < 0) {
+ WindowPrompt (LANGUAGE.ErrorreadingDisc,0,LANGUAGE.Back,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ }
+ ret = Disc_Open();
+ if (ret < 0) {
+ WindowPrompt (LANGUAGE.CouldnotopenDisc,0,LANGUAGE.Back,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ }
+
+ ret = Disc_IsWii();
+ if (ret < 0) {
+ choice = WindowPrompt (LANGUAGE.NotaWiiDisc,LANGUAGE.InsertaWiiDisc,LANGUAGE.ok,LANGUAGE.Back,0,0);
+
+ if (choice == 1) {
+ menu = MENU_INSTALL;
+ break;
+ } else
+ menu = MENU_DISCLIST;
+ break;
+ }
+
+ Disc_ReadHeader(&headerdisc);
+ name = headerdisc.title;
+ if (strlen(name) < (MAX_CHARACTERS + 3)) {
+ memset(buffer, 0, sizeof(buffer));
+ sprintf(name, "%s", name);
+ } else {
+ strncpy(buffer, name, MAX_CHARACTERS);
+ buffer[MAX_CHARACTERS] = '\0';
+ strncat(buffer, "...", 3);
+ sprintf(name, "%s", buffer);
+ }
+
+ ret = WBFS_CheckGame(headerdisc.id);
+ if (ret) {
+ WindowPrompt (LANGUAGE.Gameisalreadyinstalled,name,LANGUAGE.Back,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ }
+
+ f32 freespace, used;
+
+ WBFS_DiskSpace(&used, &freespace);
+ float gamesize = WBFS_EstimeGameSize()/GB_SIZE;
+ char gametxt[50];
+
+ sprintf(gametxt, "%s : %.2fGB", name, gamesize);
+
+ wiilight(1);
+ choice = WindowPrompt(LANGUAGE.Continueinstallgame,gametxt,LANGUAGE.ok,LANGUAGE.Cancel,0,0);
+
+ if(choice == 1) {
+
+ sprintf(gametxt, "%s", LANGUAGE.Installinggame);
+
+ if (gamesize > freespace) {
+ char errortxt[50];
+ sprintf(errortxt, "%s: %.2fGB, %s: %.2fGB",LANGUAGE.GameSize, gamesize, LANGUAGE.FreeSpace, freespace);
+ choice = WindowPrompt(LANGUAGE.Notenoughfreespace,errortxt,LANGUAGE.ok, LANGUAGE.Return,0,0);
+ if (choice == 1) {
+ wiilight(1);
+ ret = ProgressWindow(gametxt, name);
+ if (ret != 0) {
+ WindowPrompt (LANGUAGE.Installerror,0,LANGUAGE.Back,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ }
+ else {
+ wiilight(1);
+ __Menu_GetEntries(); //get the entries again
+ WindowPrompt (LANGUAGE.Successfullyinstalled,name,LANGUAGE.ok,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ }
+ } else {
+ menu = MENU_DISCLIST;
+ break;
+ }
+
+ }
+ else {
+ ret = ProgressWindow(gametxt, name);
+ if (ret != 0) {
+ WindowPrompt (LANGUAGE.Installerror,0,LANGUAGE.Back,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ } else {
+ __Menu_GetEntries(); //get the entries again
+ WindowPrompt (LANGUAGE.Successfullyinstalled,name,LANGUAGE.ok,0,0,0);
+ menu = MENU_DISCLIST;
+ break;
+ }
+ }
+ } else {
+ menu = MENU_DISCLIST;
+ break;
+ }
+
+ if (shutdown == 1) {
+ wiilight(0);
+ Sys_Shutdown();
+ }
+ if(reset == 1) {
+ wiilight(0);
+ Sys_Reboot();
+ }
+ }
+
+ //Turn off the WiiLight
+ wiilight(0);
+
+ HaltGui();
+
+ mainWindow->Remove(&w);
+ ResumeGui();
+/// SDCard_deInit();
+/// SDCard_Init();
+ return menu;
+}
/****************************************************************************
* MenuFormat
***************************************************************************/
@@ -4238,47 +1603,6 @@ static int MenuFormat()
GuiButton exitBtn(&exitBtnImg,&exitBtnImgOver, 0, 3, 0,-10, &trigA, &btnSoundOver, &btnClick,1);
exitBtn.SetTrigger(&trigHome);
- #ifdef HW_RVL
- int i = 0, level;
- char txt[3];
- GuiText * batteryTxt[4];
- GuiImage * batteryImg[4];
- GuiImage * batteryBarImg[4];
- GuiButton * batteryBtn[4];
-
- for(i=0; i < 4; i++)
- {
-
- if(i == 0)
- sprintf(txt, "P%d", i+1);
- else
- sprintf(txt, "P%d", i+1);
-
- batteryTxt[i] = new GuiText(txt, 22, (GXColor){THEME.info_r, THEME.info_g, THEME.info_b, 255});
- batteryTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryImg[i] = new GuiImage(&battery);
- batteryImg[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryImg[i]->SetPosition(36, 0);
- batteryImg[i]->SetTile(0);
- batteryBarImg[i] = new GuiImage(&batteryBar);
- batteryBarImg[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
- batteryBarImg[i]->SetPosition(33, 0);
-
- batteryBtn[i] = new GuiButton(40, 20);
- batteryBtn[i]->SetLabel(batteryTxt[i]);
- batteryBtn[i]->SetImage(batteryBarImg[i]);
- batteryBtn[i]->SetIcon(batteryImg[i]);
- batteryBtn[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- batteryBtn[i]->SetRumble(false);
- batteryBtn[i]->SetAlpha(70);
- }
-
- batteryBtn[0]->SetPosition(THEME.battery1_x, THEME.battery1_y);
- batteryBtn[1]->SetPosition(THEME.battery2_x, THEME.battery2_y);
- batteryBtn[2]->SetPosition(THEME.battery3_x, THEME.battery3_y);
- batteryBtn[3]->SetPosition(THEME.battery4_x, THEME.battery4_y);
- #endif
-
GuiOptionBrowser optionBrowser(THEME.selection_w, THEME.selection_h, &options, CFG.theme_path, bg_options_png, 1, 0);
optionBrowser.SetPosition(THEME.selection_x, THEME.selection_y);
optionBrowser.SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
@@ -4289,16 +1613,6 @@ static int MenuFormat()
w.Append(&poweroffBtn);
w.Append(&exitBtn);
- if (THEME.showBattery)
- {
- #ifdef HW_RVL
- w.Append(batteryBtn[0]);
- w.Append(batteryBtn[1]);
- w.Append(batteryBtn[2]);
- w.Append(batteryBtn[3]);
- #endif
- }
-
mainWindow->Append(&w);
mainWindow->Append(&optionBrowser);
@@ -4308,31 +1622,6 @@ static int MenuFormat()
{
VIDEO_WaitVSync ();
- #ifdef HW_RVL
- for(i=0; i < 4; i++)
- {
- if(WPAD_Probe(i, NULL) == WPAD_ERR_NONE) // controller connected
- {
- level = (userInput[i].wpad.battery_level / 100.0) * 4;
- if(level > 4) level = 4;
- batteryImg[i]->SetTile(level);
-
- if(level == 0)
- batteryBarImg[i]->SetImage(&batteryRed);
- else
- batteryBarImg[i]->SetImage(&batteryBar);
-
- batteryBtn[i]->SetAlpha(255);
- }
- else // controller not connected
- {
- batteryImg[i]->SetTile(0);
- batteryImg[i]->SetImage(&battery);
- batteryBtn[i]->SetAlpha(70);
- }
- }
- #endif
-
selected = optionBrowser.GetClickedOption();
for (cnt = 0; cnt < MAX_PARTITIONS; cnt++) {
@@ -4387,16 +1676,6 @@ static int MenuFormat()
HaltGui();
- #ifdef HW_RVL
- for(i=0; i < 4; i++)
- {
- delete batteryTxt[i];
- delete batteryImg[i];
- delete batteryBarImg[i];
- delete batteryBtn[i];
- }
- #endif
-
mainWindow->Remove(&optionBrowser);
mainWindow->Remove(&w);
ResumeGui();
@@ -4404,1323 +1683,6 @@ static int MenuFormat()
return menu;
}
-/****************************************************************************
- * MenuSettings
- ***************************************************************************/
-static int MenuSettings()
-{
- int menu = MENU_NONE;
- int ret;
- int choice = 0;
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
-
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%ssettings_background.png", CFG.theme_path);
- GuiImageData settingsbg(imgPath, settings_background_png);
- snprintf(imgPath, sizeof(imgPath), "%stab_bg1.png", CFG.theme_path);
- GuiImageData tab1(imgPath, tab_bg1_png);
- snprintf(imgPath, sizeof(imgPath), "%stab_bg2.png", CFG.theme_path);
- GuiImageData tab2(imgPath, tab_bg2_png);
- snprintf(imgPath, sizeof(imgPath), "%stab_bg3.png", CFG.theme_path);
- GuiImageData tab3(imgPath, tab_bg3_png);
- snprintf(imgPath, sizeof(imgPath), "%supdateRev.png", CFG.theme_path);
- GuiImageData updateRevImgData(imgPath, updateRev_png);
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigHome;
- trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
- GuiTrigger trigB;
- trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
- GuiTrigger trigL;
- trigL.SetButtonOnlyTrigger(-1, WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT, PAD_BUTTON_LEFT);
- GuiTrigger trigR;
- trigR.SetButtonOnlyTrigger(-1, WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT, PAD_BUTTON_RIGHT);
- GuiTrigger trigMinus;
- trigMinus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0);
- GuiTrigger trigPlus;
- trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
-
- GuiText titleTxt(LANGUAGE.settings, 28, (GXColor){0, 0, 0, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(0,40);
-
- GuiImage settingsbackground(&settingsbg);
- GuiButton settingsbackgroundbtn(settingsbackground.GetWidth(), settingsbackground.GetHeight());
- settingsbackgroundbtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- settingsbackgroundbtn.SetPosition(0, 0);
- settingsbackgroundbtn.SetImage(&settingsbackground);
-
- GuiText backBtnTxt(LANGUAGE.Back , 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
- GuiImage backBtnImg(&btnOutline);
- if (Settings.wsprompt == yes){
- backBtnTxt.SetWidescreen(CFG.widescreen);
- backBtnImg.SetWidescreen(CFG.widescreen);}
- GuiButton backBtn(&backBtnImg,&backBtnImg, 2, 3, -180, 400, &trigA, &btnSoundOver, &btnClick,1);
- backBtn.SetLabel(&backBtnTxt);
- backBtn.SetTrigger(&trigB);
-
- GuiButton homo(1,1);
- homo.SetTrigger(&trigHome);
- homo.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- homo.SetPosition(0,0);
-
- GuiImage tab1Img(&tab1);
- GuiImage tab2Img(&tab2);
- GuiImage tab3Img(&tab3);
- GuiButton tabBtn(tab1.GetWidth(), tab1.GetHeight());
- tabBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- tabBtn.SetPosition(-202, 90);
- tabBtn.SetImage(&tab1Img);
- tabBtn.SetRumble(false);
-
- GuiButton page1Btn(40, 96);
- page1Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- page1Btn.SetPosition(-202, 90);
- page1Btn.SetSoundOver(&btnSoundOver);
- page1Btn.SetSoundClick(&btnClick);
- page1Btn.SetTrigger(0, &trigA);
-
- GuiButton page2Btn(40, 96);
- page2Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- page2Btn.SetPosition(-202, 186);
- page2Btn.SetSoundOver(&btnSoundOver);
- page2Btn.SetSoundClick(&btnClick);
- page2Btn.SetTrigger(0, &trigA);
- page2Btn.SetTrigger(1, &trigR);
- page2Btn.SetTrigger(2, &trigPlus);
-
- GuiButton page3Btn(40, 96);
- page3Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- page3Btn.SetPosition(-202, 282);
- page3Btn.SetSoundOver(&btnSoundOver);
- page3Btn.SetSoundClick(&btnClick);
- page3Btn.SetTrigger(0, &trigA);
- page3Btn.SetTrigger(1, &trigR);
- page3Btn.SetTrigger(2, &trigPlus);
-
- const char * text = LANGUAGE.Unlock;
- if (Settings.godmode == 1)
- text = LANGUAGE.Lock;
- GuiText lockBtnTxt(text, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- lockBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
- GuiImage lockBtnImg(&btnOutline);
- lockBtnImg.SetWidescreen(CFG.widescreen);
- GuiButton lockBtn(&lockBtnImg,&lockBtnImg, 2, 3, 180, 400, &trigA, &btnSoundOver, &btnClick,1);
- lockBtn.SetLabel(&lockBtnTxt);
-
- GuiImage updateBtnImg(&updateRevImgData);
- updateBtnImg.SetWidescreen(CFG.widescreen);
- GuiButton updateBtn(&updateBtnImg,&updateBtnImg, 2, 3, 70, 400, &trigA, &btnSoundOver, &btnClick,1);
- updateBtn.SetVisible(false);
- updateBtn.SetClickable(false);
-
- GuiImageData logo(credits_button_png);
- GuiImage logoImg(&logo);
- GuiImageData logoOver(credits_button_over_png);
- GuiImage logoImgOver(&logoOver);
-
- GuiButton btnLogo(logoImg.GetWidth(), logoImg.GetHeight());
- btnLogo.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
- btnLogo.SetPosition(0, -35);
- btnLogo.SetImage(&logoImg);
- btnLogo.SetImageOver(&logoImgOver);
- btnLogo.SetEffectGrow();
- btnLogo.SetSoundOver(&btnSoundOver);
- btnLogo.SetSoundClick(&btnClick);
- btnLogo.SetTrigger(&trigA);
-
- customOptionList options2(9);
- GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, CFG.theme_path, "bg_options_settings.png", bg_options_settings_png, 0, 150);
- optionBrowser2.SetPosition(0, 90);
- optionBrowser2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- GuiWindow w(screenwidth, screenheight);
-
- int pageToDisplay = 1;
- while ( pageToDisplay > 0) //set pageToDisplay to 0 to quit
- {
- menu = MENU_NONE;
- if ( pageToDisplay == 1)
- {
-
- options2.SetName(0, "%s",LANGUAGE.VideoMode);
- options2.SetName(1, "%s",LANGUAGE.VIDTVPatch);
- options2.SetName(2, "%s",LANGUAGE.Language);
-
- options2.SetName(3, "Ocarina");
-
- options2.SetName(4,"%s", LANGUAGE.Display);
- options2.SetName(5,"%s", LANGUAGE.Clock); //CLOCK
- options2.SetName(6,"%s", LANGUAGE.Rumble); //RUMBLE
- options2.SetName(7,"%s", LANGUAGE.Volume);
- options2.SetName(8,"%s", LANGUAGE.Tooltips);
-
- HaltGui();
- w.Append(&settingsbackgroundbtn);
- w.Append(&titleTxt);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- w.Append(&btnLogo);
- w.Append(&homo);
- //set triggers for tabs
- page1Btn.RemoveTrigger(1);
- page1Btn.RemoveTrigger(2);
- page2Btn.RemoveTrigger(1);
- page2Btn.RemoveTrigger(2);
- page3Btn.RemoveTrigger(1);
- page3Btn.RemoveTrigger(2);
- page2Btn.SetTrigger(1, &trigPlus);
- page2Btn.SetTrigger(2, &trigR);
- page3Btn.SetTrigger(1, &trigMinus);
- page3Btn.SetTrigger(2, &trigL);
-
-
- mainWindow->Append(&w);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&page3Btn);
-
-
- ResumeGui();
- }
- else if ( pageToDisplay == 2 )
- {
- page1Btn.RemoveTrigger(1);
- page1Btn.RemoveTrigger(2);
- page2Btn.RemoveTrigger(1);
- page2Btn.RemoveTrigger(2);
- page3Btn.RemoveTrigger(1);
- page3Btn.RemoveTrigger(2);
- page1Btn.SetTrigger(1, &trigMinus);
- page1Btn.SetTrigger(2, &trigL);
- page3Btn.SetTrigger(1, &trigPlus);
- page3Btn.SetTrigger(2, &trigR);
-
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page3Btn);
-
- options2.SetName(0,"%s", LANGUAGE.Password);
- options2.SetName(1,"%s", LANGUAGE.BootStandard);
- options2.SetName(2,"%s", LANGUAGE.FlipX);
- options2.SetName(3,"%s", LANGUAGE.QuickBoot);
- options2.SetName(4,"%s", LANGUAGE.PromptsButtons);
- options2.SetName(5,"%s", LANGUAGE.Parentalcontrol);
- options2.SetName(6,"%s", LANGUAGE.CoverPath);
- options2.SetName(7,"%s", LANGUAGE.DiscimagePath);
- options2.SetName(8,"%s", LANGUAGE.ThemePath);
- }
- else if ( pageToDisplay == 3 )
- {
- page1Btn.RemoveTrigger(1);
- page1Btn.RemoveTrigger(2);
- page2Btn.RemoveTrigger(1);
- page2Btn.RemoveTrigger(2);
- page3Btn.RemoveTrigger(1);
- page3Btn.RemoveTrigger(2);
- page2Btn.SetTrigger(1, &trigMinus);
- page2Btn.SetTrigger(2, &trigL);
- page1Btn.SetTrigger(1, &trigPlus);
- page1Btn.SetTrigger(2, &trigR);
-
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page3Btn);
-
-
- options2.SetName(0, "%s",LANGUAGE.Titlestxtpath);
- options2.SetName(1, "%s",LANGUAGE.AppLanguage);
- options2.SetName(2, "%s",LANGUAGE.keyboard);
- options2.SetName(3, "%s",LANGUAGE.Unicodefix);
- options2.SetName(4, "%s",LANGUAGE.Backgroundmusic);
- options2.SetName(5, "%s",LANGUAGE.Wiilight);
- options2.SetName(6, "%s",LANGUAGE.Updatepath);
- options2.SetName(7, "%s",LANGUAGE.Patchcountrystrings);
- options2.SetName(8, "%s",LANGUAGE.Defaultsettings);
-
- }
- while(menu == MENU_NONE)
- {
- VIDEO_WaitVSync ();
-
- if ( pageToDisplay == 1 )
- {
- if(Settings.video >= settings_video_max)
- Settings.video = 0;
- if(Settings.language >= settings_language_max)
- Settings.language = 0;
- if(Settings.ocarina >= settings_off_on_max)
- Settings.ocarina = 0;
- if(Settings.vpatch >= settings_off_on_max)
- Settings.vpatch = 0;
- if(Settings.sinfo >= settings_sinfo_max)
- Settings.sinfo = 0;
- if(Settings.hddinfo >= settings_clock_max)
- Settings.hddinfo = 0; //CLOCK
- if(Settings.rumble >= settings_rumble_max)
- Settings.rumble = 0; //RUMBLE
- if(Settings.volume >= settings_volume_max)
- Settings.volume = 0;
- if (Settings.tooltips >= settings_tooltips_max)
- Settings.tooltips = 0;
-
- if (Settings.video == discdefault) options2.SetValue(0,"%s",LANGUAGE.DiscDefault);
- else if (Settings.video == systemdefault) options2.SetValue(0,"%s",LANGUAGE.SystemDefault);
- else if (Settings.video == patch) options2.SetValue(0,"%s",LANGUAGE.AutoPatch);
- else if (Settings.video == pal50) options2.SetValue(0,"%s PAL50",LANGUAGE.Force);
- else if (Settings.video == pal60) options2.SetValue(0,"%s PAL60",LANGUAGE.Force);
- else if (Settings.video == ntsc) options2.SetValue(0,"%s NTSC",LANGUAGE.Force);
-
- if (Settings.vpatch == on) options2.SetValue(1,"%s",LANGUAGE.ON);
- else if (Settings.vpatch == off) options2.SetValue(1,"%s",LANGUAGE.OFF);
-
- if (Settings.language == ConsoleLangDefault) options2.SetValue(2,"%s",LANGUAGE.ConsoleDefault);
- else if (Settings.language == jap) options2.SetValue(2,"%s",LANGUAGE.Japanese);
- else if (Settings.language == ger) options2.SetValue(2,"%s",LANGUAGE.German);
- else if (Settings.language == eng) options2.SetValue(2,"%s",LANGUAGE.English);
- else if (Settings.language == fren) options2.SetValue(2,"%s",LANGUAGE.French);
- else if (Settings.language == esp) options2.SetValue(2,"%s",LANGUAGE.Spanish);
- else if (Settings.language == it) options2.SetValue(2,"%s",LANGUAGE.Italian);
- else if (Settings.language == dut) options2.SetValue(2,"%s",LANGUAGE.Dutch);
- else if (Settings.language == schin) options2.SetValue(2,"%s",LANGUAGE.SChinese);
- else if (Settings.language == tchin) options2.SetValue(2,"%s",LANGUAGE.TChinese);
- else if (Settings.language == kor) options2.SetValue(2,"%s",LANGUAGE.Korean);
-
- if (Settings.ocarina == on) options2.SetValue(3,"%s",LANGUAGE.ON);
- else if (Settings.ocarina == off) options2.SetValue(3,"%s",LANGUAGE.OFF);
-
- if (Settings.sinfo == GameID) options2.SetValue(4,"%s",LANGUAGE.GameID);
- else if (Settings.sinfo == GameRegion) options2.SetValue(4,"%s",LANGUAGE.GameRegion);
- else if (Settings.sinfo == Both) options2.SetValue(4,"%s",LANGUAGE.Both);
- else if (Settings.sinfo == Neither) options2.SetValue(4,"%s",LANGUAGE.Neither);
-
- if (Settings.hddinfo == hr12) options2.SetValue(5,"12 %s",LANGUAGE.hour);
- else if (Settings.hddinfo == hr24) options2.SetValue(5,"24 %s",LANGUAGE.hour);
- else if (Settings.hddinfo == Off) options2.SetValue(5,"%s",LANGUAGE.OFF);
-
- if (Settings.rumble == RumbleOn) options2.SetValue(6,"%s",LANGUAGE.ON);
- else if (Settings.rumble == RumbleOff) options2.SetValue(6,"%s",LANGUAGE.OFF);
-
- if (Settings.volume == v10) options2.SetValue(7,"10");
- else if (Settings.volume == v20) options2.SetValue(7,"20");
- else if (Settings.volume == v30) options2.SetValue(7,"30");
- else if (Settings.volume == v40) options2.SetValue(7,"40");
- else if (Settings.volume == v50) options2.SetValue(7,"50");
- else if (Settings.volume == v60) options2.SetValue(7,"60");
- else if (Settings.volume == v70) options2.SetValue(7,"70");
- else if (Settings.volume == v80) options2.SetValue(7,"80");
- else if (Settings.volume == v90) options2.SetValue(7,"90");
- else if (Settings.volume == v100) options2.SetValue(7,"100");
- else if (Settings.volume == v0) options2.SetValue(7,"%s",LANGUAGE.OFF);
-
-
- if (Settings.tooltips == TooltipsOn) options2.SetValue(8,"%s",LANGUAGE.ON);
- else if (Settings.tooltips == TooltipsOff) options2.SetValue(8,"%s",LANGUAGE.OFF);
-
- ret = optionBrowser2.GetClickedOption();
-
- switch (ret)
- {
- case 0:
- Settings.video++;
- break;
- case 1:
- Settings.vpatch++;
- break;
- case 2:
- Settings.language++;
- break;
- case 3:
- Settings.ocarina++;
- break;
- case 4: // Game Code and Region
- Settings.sinfo++;
- break;
- case 5: //CLOCK
- Settings.hddinfo++;
- break;
- case 6: //Rumble
- Settings.rumble++;
- break;
- case 7:
- Settings.volume++;
- break;
- case 8:
- Settings.tooltips++;
- break;
- }
- }
-
- if ( pageToDisplay == 2 )
- {
- if ( Settings.cios >= settings_cios_max)
- Settings.cios = 0;
- if ( Settings.xflip >= settings_xflip_max)
- Settings.xflip = 0;
- if ( Settings.qboot > 1 )
- Settings.qboot = 0;
- if ( Settings.wsprompt > 1 )
- Settings.wsprompt = 0;
- if (Settings.parentalcontrol > 3 )
- Settings.parentalcontrol = 0;
-
-
- if ( Settings.godmode != 1) options2.SetValue(0, "********");
- else if (!strcmp("", Settings.unlockCode)) options2.SetValue(0, "%s",LANGUAGE.notset);
- else options2.SetValue(0, Settings.unlockCode);
-
- if (Settings.godmode != 1) options2.SetValue(1, "********");
- else if (Settings.cios == ios249) options2.SetValue(1,"cIOS 249");
- else if (Settings.cios == ios222) options2.SetValue(1,"cIOS 222");
-
- if (Settings.xflip == no) options2.SetValue(2,"%s/%s",LANGUAGE.Right,LANGUAGE.Next);
- else if (Settings.xflip == yes) options2.SetValue(2,"%s/%s",LANGUAGE.Left,LANGUAGE.Prev);
- else if (Settings.xflip == sysmenu) options2.SetValue(2,"%s", LANGUAGE.LikeSysMenu);
- else if (Settings.xflip == wtf) options2.SetValue(2,"%s/%s",LANGUAGE.Right,LANGUAGE.Prev);
- else if (Settings.xflip == disk3d) options2.SetValue(2,"DiskFlip");
-
- if (Settings.qboot == no) options2.SetValue(3,"%s",LANGUAGE.No);
- else if (Settings.qboot == yes) options2.SetValue(3,"%s",LANGUAGE.Yes);
-
- if (Settings.wsprompt == no) options2.SetValue(4,"%s",LANGUAGE.Normal);
- else if (Settings.wsprompt == yes) options2.SetValue(4,"%s",LANGUAGE.WidescreenFix);
-
- if (Settings.godmode != 1) options2.SetValue(5, "********");
- else if(Settings.parentalcontrol == 0) options2.SetValue(5, "0");
- else if(Settings.parentalcontrol == 1) options2.SetValue(5, "1");
- else if(Settings.parentalcontrol == 2) options2.SetValue(5, "2");
- else if(Settings.parentalcontrol == 3) options2.SetValue(5, "3");
-
- options2.SetValue(6, "%s", Settings.covers_path);
- options2.SetValue(7, "%s", Settings.disc_path);
- options2.SetValue(8, "%s", CFG.theme_path);
-
- ret = optionBrowser2.GetClickedOption();
-
- switch (ret)
- {
-
- case 0: // Modify Password
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[20] = "";
- strncpy(entered, Settings.unlockCode, sizeof(entered));
- int result = OnScreenKeyboard(entered, 20,0);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- {
- strncpy(Settings.unlockCode, entered, sizeof(Settings.unlockCode));
- WindowPrompt(LANGUAGE.PasswordChanged,LANGUAGE.Passwordhasbeenchanged,LANGUAGE.ok,0,0,0);
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.Passwordchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- }
- break;
- case 1:
- if ( Settings.godmode == 1)
- Settings.cios++;
- break;
- case 2:
- Settings.xflip++;
- break;
- case 3:
- Settings.qboot++;
- break;
- case 4:
- Settings.wsprompt++;
- break;
- case 5:
- if ( Settings.godmode == 1)
- Settings.parentalcontrol++;
- break;
- case 6:
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[43] = "";
- strncpy(entered, Settings.covers_path, sizeof(entered));
- int result = OnScreenKeyboard(entered,43,4);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- {
- int len = (strlen(entered)-1);
- if(entered[len] !='/')
- strncat (entered, "/", 1);
- strncpy(Settings.covers_path, entered, sizeof(Settings.covers_path));
- WindowPrompt(LANGUAGE.CoverpathChanged,0,LANGUAGE.ok,0,0,0);
- if(!isSdInserted()) {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
- }
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.Coverpathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- }
- break;
- case 7:
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[43] = "";
- strncpy(entered, Settings.disc_path, sizeof(entered));
- int result = OnScreenKeyboard(entered, 43,4);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- {
- int len = (strlen(entered)-1);
- if(entered[len] !='/')
- strncat (entered, "/", 1);
- strncpy(Settings.disc_path, entered, sizeof(Settings.disc_path));
- WindowPrompt(LANGUAGE.DiscpathChanged,0,LANGUAGE.ok,0,0,0);
- if(!isSdInserted()) {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
- }
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.Discpathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- }
- break;
- case 8:
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[43] = "";
- strncpy(entered, CFG.theme_path, sizeof(entered));
- int result = OnScreenKeyboard(entered, 43,4);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- {
- int len = (strlen(entered)-1);
- if(entered[len] !='/')
- strncat (entered, "/", 1);
- strncpy(CFG.theme_path, entered, sizeof(CFG.theme_path));
- WindowPrompt(LANGUAGE.ThemepathChanged,0,LANGUAGE.ok,0,0,0);
- if(!isSdInserted()) {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
- } else {
- cfg_save_global();
- }
- mainWindow->Remove(bgImg);
- CFG_Load();
- CFG_LoadGlobal();
- menu = MENU_SETTINGS;
- #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);
- pointer[1] = new GuiImageData(imgPath, player2_point_png);
- snprintf(imgPath, sizeof(imgPath), "%splayer3_point.png", CFG.theme_path);
- pointer[2] = new GuiImageData(imgPath, player3_point_png);
- snprintf(imgPath, sizeof(imgPath), "%splayer4_point.png", CFG.theme_path);
- pointer[3] = new GuiImageData(imgPath, player4_point_png);
- #endif
- if (CFG.widescreen)
- snprintf(imgPath, sizeof(imgPath), "%swbackground.png", CFG.theme_path);
- else
- snprintf(imgPath, sizeof(imgPath), "%sbackground.png", CFG.theme_path);
-
- background = new GuiImageData(imgPath, CFG.widescreen? wbackground_png : background_png);
-
- bgImg = new GuiImage(background);
- mainWindow->Append(bgImg);
- mainWindow->Append(&w);
-
- w.Append(&settingsbackgroundbtn);
- w.Append(&titleTxt);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- w.Append(&btnLogo);
-
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.Themepathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- }
- break;
- }
- }
- if (pageToDisplay == 3)
- {
-
- if ( Settings.keyset >= settings_keyset_max)
- Settings.keyset = 0;
- if ( Settings.unicodefix > 2 )
- Settings.unicodefix = 0;
- if ( Settings.wiilight > 2 )
- Settings.wiilight = 0;
- if ( Settings.patchcountrystrings > 1)
- Settings.patchcountrystrings = 0;
-
- options2.SetValue(0, "%s", Settings.titlestxt_path);
-
- options2.SetValue(1, "%s", Settings.language_path);
-
- if (Settings.keyset == us) options2.SetValue(2,"QWERTY");
- else if (Settings.keyset == dvorak) options2.SetValue(2,"DVORAK");
- else if (Settings.keyset == euro) options2.SetValue(2,"QWERTZ");
- else if (Settings.keyset == azerty) options2.SetValue(2,"AZERTY");
-
- if (Settings.unicodefix == 0) options2.SetValue(3,"%s",LANGUAGE.OFF);
- else if (Settings.unicodefix == 1) options2.SetValue(3,"%s",LANGUAGE.TChinese);
- else if (Settings.unicodefix == 2) options2.SetValue(3,"%s",LANGUAGE.SChinese);
-
- if(!strcmp("notset", Settings.ogg_path) || !strcmp("",Settings.oggload_path))
- options2.SetValue(4, "%s", LANGUAGE.Standard);
- else
- options2.SetValue(4, "%s", Settings.ogg_path);
-
- if (Settings.wiilight == 0) options2.SetValue(5,"%s",LANGUAGE.OFF);
- else if (Settings.wiilight == 1) options2.SetValue(5,"%s",LANGUAGE.ON);
- else if (Settings.wiilight == 2) options2.SetValue(5,"%s",LANGUAGE.OnlyInstall);
-
- options2.SetValue(6, "%s", Settings.update_path);
-
- if (Settings.patchcountrystrings == 0) options2.SetValue(7,"%s",LANGUAGE.OFF);
- else if (Settings.patchcountrystrings == 1) options2.SetValue(7,"%s",LANGUAGE.ON);
-
- options2.SetValue(8, " ");
-
- ret = optionBrowser2.GetClickedOption();
-
- switch(ret)
- {
- case 0:
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[43] = "";
- strncpy(entered, Settings.titlestxt_path, sizeof(entered));
- int result = OnScreenKeyboard(entered,43,4);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- {
- int len = (strlen(entered)-1);
- if(entered[len] !='/')
- strncat (entered, "/", 1);
- strncpy(Settings.titlestxt_path, entered, sizeof(Settings.titlestxt_path));
- WindowPrompt(LANGUAGE.TitlestxtpathChanged,0,LANGUAGE.ok,0,0,0);
- if(isSdInserted()) {
- cfg_save_global();
- CFG_Load();
- } else {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
- }
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.Titlestxtpathchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- }
- break;
- case 1: // language file path
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[40] = "";
- strncpy(entered, Settings.language_path, sizeof(entered));
- int result = OnScreenKeyboard(entered, 40,0);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- { strncpy(Settings.language_path, entered, sizeof(Settings.language_path));
- if(isSdInserted()) {
- cfg_save_global();
- if(!checkfile(Settings.language_path)) {
- WindowPrompt(LANGUAGE.Filenotfound,LANGUAGE.Loadingstandardlanguage,LANGUAGE.ok,0,0,0);
- }
- lang_default();
- CFG_Load();
- menu = MENU_SETTINGS;
- pageToDisplay = 0;
- } else {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
- }
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.Langchange,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- }
- break;
- case 2:
- Settings.keyset++;
- break;
- case 3:
- Settings.unicodefix++;
- break;
- case 4:
- if(isSdInserted())
- {
- menu = MENU_OGG;
- pageToDisplay = 0;
- }
- else
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0);
- break;
- case 5:
- Settings.wiilight++;
- break;
- case 7:
- Settings.patchcountrystrings++;
- break;
- case 6:
- if ( Settings.godmode == 1)
- {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[43] = "";
- strncpy(entered, Settings.update_path, sizeof(entered));
- int result = OnScreenKeyboard(entered,43,4);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- if ( result == 1 )
- {
- int len = (strlen(entered)-1);
- if(entered[len] !='/')
- strncat (entered, "/", 1);
- strncpy(Settings.update_path, entered, sizeof(Settings.update_path));
- WindowPrompt(LANGUAGE.Updatepathchanged,0,LANGUAGE.ok,0,0,0);
- }
- }
- else
- WindowPrompt(0,LANGUAGE.Consoleshouldbeunlockedtomodifyit,LANGUAGE.ok,0,0,0);
- break;
- case 8:
- int choice = WindowPrompt(LANGUAGE.Areyousure, 0, LANGUAGE.Yes, LANGUAGE.Cancel, 0, 0);
- if(choice == 1)
- {
- if(isSdInserted())
- remove("SD:/config/GXGlobal.cfg");
- lang_default();
- CFG_Load();
- menu = MENU_SETTINGS;
- pageToDisplay = 0;
- }
- break;
- }
- }
-
- if(shutdown == 1)
- Sys_Shutdown();
- if(reset == 1)
- Sys_Reboot();
-
- if(page1Btn.GetState() == STATE_CLICKED)
- {
- pageToDisplay = 1;
- page1Btn.ResetState();
- tabBtn.SetImage(&tab1Img);
- menu = MENU_NONE;
- break;
- }
-
- if(page2Btn.GetState() == STATE_CLICKED)
- {
- pageToDisplay = 2;
- menu = MENU_NONE;
- page2Btn.ResetState();
- tabBtn.SetImage(&tab2Img);
- break;
- }
-
- if(page3Btn.GetState() == STATE_CLICKED)
- {
- pageToDisplay = 3;
- menu = MENU_NONE;
- page3Btn.ResetState();
- tabBtn.SetImage(&tab3Img);
- break;
- }
-
- if(backBtn.GetState() == STATE_CLICKED)
- {
- //Add the procedure call to save the global configuration
- if(isSdInserted()) {
- cfg_save_global();
- }
- menu = MENU_DISCLIST;
- pageToDisplay = 0;
- break;
- }
-
- if(updateBtn.GetState() == STATE_CLICKED) {
- if(isSdInserted() && Settings.godmode) {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&btnLogo);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- int ret = ProgressUpdateWindow();
- if(ret < 0) {
- WindowPrompt(LANGUAGE.Updatefailed,0,LANGUAGE.ok,0,0,0);
- }
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- w.Append(&btnLogo);
- } else {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0);
- }
- updateBtn.ResetState();
- }
-
- if(btnLogo.GetState() == STATE_CLICKED) {
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&btnLogo);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- WindowCredits();
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- w.Append(&btnLogo);
- btnLogo.ResetState();
- }
-
- if(lockBtn.GetState() == STATE_CLICKED)
- {
- if (!strcmp("", Settings.unlockCode))
- {
- Settings.godmode = !Settings.godmode;
- }
- else if ( Settings.godmode == 0 )
- {
- //password check to unlock Install,Delete and Format
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&page1Btn);
- mainWindow->Remove(&page2Btn);
- mainWindow->Remove(&tabBtn);
- mainWindow->Remove(&page3Btn);
- w.Remove(&backBtn);
- w.Remove(&lockBtn);
- w.Remove(&updateBtn);
- char entered[20] = "";
- int result = OnScreenKeyboard(entered, 20,0);
- mainWindow->Append(&optionBrowser2);
- mainWindow->Append(&tabBtn);
- mainWindow->Append(&page1Btn);
- mainWindow->Append(&page2Btn);
- mainWindow->Append(&page3Btn);
- w.Append(&backBtn);
- w.Append(&lockBtn);
- w.Append(&updateBtn);
- mainWindow->Append(&tabBtn);
- if ( result == 1 ) {
- if (!strcmp(entered, Settings.unlockCode)) //if password correct
- {
- if (Settings.godmode == 0) {
- WindowPrompt(LANGUAGE.CorrectPassword,LANGUAGE.InstallRenameandDeleteareunlocked,LANGUAGE.ok,0,0,0);
- Settings.godmode = 1;
- __Menu_GetEntries();
- menu = MENU_DISCLIST;
- }
- }
- else
- {
- WindowPrompt(LANGUAGE.WrongPassword,LANGUAGE.USBLoaderisprotected,LANGUAGE.ok,0,0,0);
- }
- }
- }
- else
- {
- int choice = WindowPrompt (LANGUAGE.LockConsole,LANGUAGE.Areyousure,LANGUAGE.Yes,LANGUAGE.No,0,0);
- if(choice == 1) {
- WindowPrompt(LANGUAGE.ConsoleLocked,LANGUAGE.USBLoaderisprotected,LANGUAGE.ok,0,0,0);
- Settings.godmode = 0;
- __Menu_GetEntries();
- menu = MENU_DISCLIST;
- }
- }
- if ( Settings.godmode == 1)
- {
- lockBtnTxt.SetText(LANGUAGE.Lock);
- }
- else
- {
- lockBtnTxt.SetText(LANGUAGE.Unlock);
- }
- lockBtn.ResetState();
- }
- else if(homo.GetState() == STATE_CLICKED)
- {
- cfg_save_global();
- optionBrowser2.SetState(STATE_DISABLED);
- s32 thetimeofbg = bgMusic->GetPlayTime();
- bgMusic->Stop();
- choice = WindowExitPrompt(LANGUAGE.ExitUSBISOLoader,0, LANGUAGE.BacktoLoader,LANGUAGE.WiiMenu,LANGUAGE.Back,0);
- if(!strcmp("", Settings.oggload_path) || !strcmp("notset", Settings.ogg_path))
- {
- bgMusic->Play();
- }
- else
- {
- bgMusic->PlayOggFile(Settings.ogg_path);
- }
- bgMusic->SetPlayTime(thetimeofbg);
- SetVolumeOgg(255*(vol/100.0));
-
- if(choice == 3)
- {
- Sys_LoadMenu(); // Back to System Menu
- }
- else if (choice == 2)
- {
- Sys_BackToLoader();
- }
- else
- {
- homo.ResetState();
- }
- }
- if(Settings.godmode) {
- updateBtn.SetVisible(true);
- updateBtn.SetClickable(true);
- } else {
- updateBtn.SetVisible(false);
- updateBtn.SetClickable(false);
- }
- if(settingsbackgroundbtn.GetState() == STATE_CLICKED)
- {
- optionBrowser2.SetFocus(1);
- break;
- }
- }
- }
- HaltGui();
- mainWindow->Remove(&optionBrowser2);
- mainWindow->Remove(&w);
- ResumeGui();
- return menu;
-}
-
-
-/********************************************************************************
-*Game specific settings
-*********************************************************************************/
-int GameSettings(struct discHdr * header)
-{
- bool exit = false;
- int ret;
- int retVal = 0;
-
- char gameName[31];
-
- if (strlen(get_title(header)) < (27 + 3)) {
- sprintf(gameName, "%s", get_title(header));
- }
- else {
- strncpy(gameName, get_title(header), 27);
- gameName[27] = '\0';
- strncat(gameName, "...", 3);
- }
-
- customOptionList options3(7);
- options3.SetName(0,"%s", LANGUAGE.VideoMode);
- options3.SetName(1,"%s", LANGUAGE.VIDTVPatch);
- options3.SetName(2,"%s", LANGUAGE.Language);
- options3.SetName(3, "Ocarina");
- options3.SetName(4, "IOS");
- options3.SetName(5,"%s", LANGUAGE.Parentalcontrol);
- options3.SetName(6,"%s", LANGUAGE.Defaultgamesettings);
-
- GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
- GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, vol);
-
- char imgPath[100];
-
- snprintf(imgPath, sizeof(imgPath), "%sbutton_dialogue_box.png", CFG.theme_path);
- GuiImageData btnOutline(imgPath, button_dialogue_box_png);
- snprintf(imgPath, sizeof(imgPath), "%sgamesettings_background.png", CFG.theme_path);
- GuiImageData settingsbg(imgPath, settings_background_png);
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigHome;
- trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
- GuiTrigger trigB;
- trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
-
- GuiText titleTxt(get_title(header), 28, (GXColor){0, 0, 0, 255});
- titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
- titleTxt.SetPosition(12,40);
- titleTxt.SetMaxWidth(356, GuiText::SCROLL);
-
- GuiImage settingsbackground(&settingsbg);
- GuiButton settingsbackgroundbtn(settingsbackground.GetWidth(), settingsbackground.GetHeight());
- settingsbackgroundbtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- settingsbackgroundbtn.SetPosition(0, 0);
- settingsbackgroundbtn.SetImage(&settingsbackground);
-
- GuiText saveBtnTxt(LANGUAGE.Save, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- saveBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
- GuiImage saveBtnImg(&btnOutline);
- if (Settings.wsprompt == yes){
- saveBtnTxt.SetWidescreen(CFG.widescreen);
- saveBtnImg.SetWidescreen(CFG.widescreen);}
- GuiButton saveBtn(&saveBtnImg,&saveBtnImg, 2, 3, -180, 400, &trigA, &btnSoundOver, &btnClick,1);
- saveBtn.SetScale(0.9);
- saveBtn.SetLabel(&saveBtnTxt);
-
- GuiText cancelBtnTxt(LANGUAGE.Back, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
- GuiImage cancelBtnImg(&btnOutline);
- if (Settings.wsprompt == yes){
- cancelBtnTxt.SetWidescreen(CFG.widescreen);
- cancelBtnImg.SetWidescreen(CFG.widescreen);}
- GuiButton cancelBtn(&cancelBtnImg,&cancelBtnImg, 2, 3, 180, 400, &trigA, &btnSoundOver, &btnClick,1);
- cancelBtn.SetScale(0.9);
- cancelBtn.SetLabel(&cancelBtnTxt);
- cancelBtn.SetTrigger(&trigB);
-
- GuiText deleteBtnTxt(LANGUAGE.Uninstall, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
- deleteBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
- GuiImage deleteBtnImg(&btnOutline);
- if (Settings.wsprompt == yes){
- deleteBtnTxt.SetWidescreen(CFG.widescreen);
- deleteBtnImg.SetWidescreen(CFG.widescreen);}
- GuiButton deleteBtn(&deleteBtnImg,&deleteBtnImg, 2, 3, 0, 400, &trigA, &btnSoundOver, &btnClick,1);
- deleteBtn.SetScale(0.9);
- deleteBtn.SetLabel(&deleteBtnTxt);
-
- GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, CFG.theme_path, "bg_options_gamesettings.png", bg_options_settings_png, 0, 200);
- optionBrowser3.SetPosition(0, 90);
- optionBrowser3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
-
- HaltGui();
- GuiWindow w(screenwidth, screenheight);
- w.Append(&settingsbackgroundbtn);
- w.Append(&titleTxt);
- w.Append(&deleteBtn);
- w.Append(&saveBtn);
- w.Append(&cancelBtn);
-
- mainWindow->Append(&w);
- mainWindow->Append(&optionBrowser3);
-
- ResumeGui();
-
- struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
-
- if (game_cfg)//if there are saved settings for this game use them
- {
- videoChoice = game_cfg->video;
- languageChoice = game_cfg->language;
- ocarinaChoice = game_cfg->ocarina;
- viChoice = game_cfg->vipatch;
- iosChoice = game_cfg->ios;
- parentalcontrolChoice = game_cfg->parentalcontrol;
- }
- else// otherwise use the global settings
- {
- videoChoice = Settings.video;
- languageChoice = Settings.language;
- ocarinaChoice = Settings.ocarina;
- viChoice = Settings.vpatch;
- if(Settings.cios == ios222) {
- iosChoice = i222;
- } else {
- iosChoice = i249;
- }
- parentalcontrolChoice = 0;
- }
-
- while(!exit)
- {
-
- VIDEO_WaitVSync ();
-
- if (videoChoice == discdefault) options3.SetValue(0,"%s",LANGUAGE.DiscDefault);
- else if (videoChoice == systemdefault) options3.SetValue(0,"%s",LANGUAGE.SystemDefault);
- else if (videoChoice == patch) options3.SetValue(0,"%s",LANGUAGE.AutoPatch);
- else if (videoChoice == pal50) options3.SetValue(0,"%s PAL50",LANGUAGE.Force);
- else if (videoChoice == pal60) options3.SetValue(0,"%s PAL60",LANGUAGE.Force);
- else if (videoChoice == ntsc) options3.SetValue(0,"%s NTSC",LANGUAGE.Force);
-
- if (viChoice == on) options3.SetValue(1,"%s",LANGUAGE.ON);
- else if (viChoice == off) options3.SetValue(1,"%s",LANGUAGE.OFF);
-
- if (languageChoice == ConsoleLangDefault) options3.SetValue(2,"%s",LANGUAGE.ConsoleDefault);
- else if (languageChoice == jap) options3.SetValue(2,"%s",LANGUAGE.Japanese);
- else if (languageChoice == ger) options3.SetValue(2,"%s",LANGUAGE.German);
- else if (languageChoice == eng) options3.SetValue(2,"%s",LANGUAGE.English);
- else if (languageChoice == fren) options3.SetValue(2,"%s",LANGUAGE.French);
- else if (languageChoice == esp) options3.SetValue(2,"%s",LANGUAGE.Spanish);
- else if (languageChoice == it) options3.SetValue(2,"%s",LANGUAGE.Italian);
- else if (languageChoice == dut) options3.SetValue(2,"%s",LANGUAGE.Dutch);
- else if (languageChoice == schin) options3.SetValue(2,"%s",LANGUAGE.SChinese);
- else if (languageChoice == tchin) options3.SetValue(2,"%s",LANGUAGE.TChinese);
- else if (languageChoice == kor) options3.SetValue(2,"%s",LANGUAGE.Korean);
-
- if (ocarinaChoice == on) options3.SetValue(3,"%s",LANGUAGE.ON);
- else if (ocarinaChoice == off) options3.SetValue(3,"%s",LANGUAGE.OFF);
-
- if (iosChoice == i249) options3.SetValue(4,"249");
- else if (iosChoice == i222) options3.SetValue(4,"222");
-
- if (parentalcontrolChoice == 0) options3.SetValue(5,"0 (Always)");
- else if (parentalcontrolChoice == 1) options3.SetValue(5,"1");
- else if (parentalcontrolChoice == 2) options3.SetValue(5,"2");
- else if (parentalcontrolChoice == 3) options3.SetValue(5,"3 (Mature)");
-
-
- if(shutdown == 1)
- Sys_Shutdown();
- if(reset == 1)
- Sys_Reboot();
-
- options3.SetValue(6," ");
-
- ret = optionBrowser3.GetClickedOption();
-
- switch (ret)
- {
- case 0:
- videoChoice = (videoChoice + 1) % CFG_VIDEO_COUNT;
- break;
- case 1:
- viChoice = (viChoice + 1) % 2;
- break;
- case 2:
- languageChoice = (languageChoice + 1) % CFG_LANG_COUNT;
- break;
- case 3:
- ocarinaChoice = (ocarinaChoice + 1) % 2;
- break;
- case 4:
- iosChoice = (iosChoice + 1) % 2;
- break;
- case 5:
- parentalcontrolChoice = (parentalcontrolChoice + 1) % 4;
- break;
- case 6:
- int choice = WindowPrompt(LANGUAGE.Areyousure,0,LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
- if(choice == 1) {
- videoChoice = discdefault;
- viChoice = off;
- languageChoice = ConsoleLangDefault;
- ocarinaChoice = off;
- if(Settings.cios == ios222) {
- iosChoice = i222;
- } else {
- iosChoice = i249;
- }
- parentalcontrolChoice = 0;
- CFG_forget_game_opt(header->id);
- }
- break;
- }
-
- if(saveBtn.GetState() == STATE_CLICKED)
- {
-
- if(isSdInserted()) {
- if (CFG_save_game_opt(header->id))
- {
- WindowPrompt(LANGUAGE.SuccessfullySaved, 0, LANGUAGE.ok, 0,0,0);
- }
- else
- {
- WindowPrompt(LANGUAGE.SaveFailed, 0, LANGUAGE.ok, 0,0,0);
- }
- } else {
- WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtosave, LANGUAGE.ok, 0,0,0);
- }
-
- saveBtn.ResetState();
- optionBrowser3.SetFocus(1);
- }
-
- if (cancelBtn.GetState() == STATE_CLICKED)
- {
- exit = true;
- break;
- }
-
- if (deleteBtn.GetState() == STATE_CLICKED)
- {
- int choice = WindowPrompt(
- LANGUAGE.Doyoureallywanttodelete,
- gameName,
- LANGUAGE.Yes,LANGUAGE.Cancel,0,0);
-
- if (choice == 1)
- {
- ret = WBFS_RemoveGame(header->id);
- if (ret < 0)
- {
- WindowPrompt(
- LANGUAGE.Cantdelete,
- gameName,
- LANGUAGE.ok,0,0,0);
- }
- else {
- __Menu_GetEntries();
- WindowPrompt(
- LANGUAGE.Successfullydeleted,
- gameName,
- LANGUAGE.ok,0,0,0);
- retVal = 1;
- }
- break;
- }
- else if (choice == 0)
- {
- deleteBtn.ResetState();
- optionBrowser3.SetFocus(1);
- }
-
- }
- }
-
- HaltGui();
- mainWindow->Remove(&optionBrowser3);
- mainWindow->Remove(&w);
- ResumeGui();
- return retVal;
-}
-
-
-
/****************************************************************************
* MenuCheck
***************************************************************************/
@@ -5729,116 +1691,114 @@ static int MenuCheck()
int menu = MENU_NONE;
int i = 0;
int choice;
- s32 ret;
+ s32 ret, ret2;
OptionList options;
options.length = i;
partitionEntry partitions[MAX_PARTITIONS];
- VIDEO_WaitVSync ();
+ VIDEO_WaitVSync ();
- ret = WBFS_Init(WBFS_DEVICE_USB);
- if (ret < 0)
- {
- ret = WindowPrompt(LANGUAGE.NoUSBDevicefound,
- LANGUAGE.Doyouwanttoretryfor30secs,
- "cIOS249", "cIOS222", LANGUAGE.BacktoWiiMenu, 0);
- if(ret == 1) {
- Settings.cios = ios249;
- }
- else if(ret == 2) {
- if(Settings.cios != ios222)
- {
- //shutdown WiiMote before IOS Reload
- WPAD_Flush(0);
- WPAD_Disconnect(0);
- WPAD_Shutdown();
+ ret2 = WBFS_Init(WBFS_DEVICE_USB);
+ if (ret2 < 0)
+ {
+ ret2 = WindowPrompt(LANGUAGE.NoUSBDevicefound,
+ LANGUAGE.Doyouwanttoretryfor30secs,
+ "cIOS249", "cIOS222",
+ LANGUAGE.BacktoWiiMenu, 0);
+ if(ret2 == 1) {
+ Settings.cios = ios249;
+ } else if(ret2 == 2) {
+ if(Settings.cios != ios222)
+ {
+ //shutdown WiiMote before IOS Reload
+ WPAD_Flush(0);
+ WPAD_Disconnect(0);
+ WPAD_Shutdown();
- //shutdown SD and USB before IOS Reload
- SDCard_deInit();
- USBDevice_deInit();
- ret = IOS_ReloadIOS(222);
- if(ret < 0)
- IOS_ReloadIOS(249);
- //reinitialize WiiMote for Prompt
- PAD_Init();
- Wpad_Init();
- WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
- WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
- //reinitialize SD and USB
- SDCard_Init();
- USBDevice_Init();
- if(ret < 0)
- WindowPrompt(LANGUAGE.YoudonthavecIOS,LANGUAGE.LoadingincIOS,LANGUAGE.ok, 0,0,0);
- else
- Settings.cios = ios222;
- }
- }
- else {
- Sys_LoadMenu();
- }
-
- //shutdown WiiMote before IOS Reload
- WPAD_Flush(0);
- WPAD_Disconnect(0);
- WPAD_Shutdown();
-
- //shutdown SD and USB before IOS Reload in DiscWait
- SDCard_deInit();
- USBDevice_deInit();
-
- ret = DiscWait(LANGUAGE.NoUSBDevice, LANGUAGE.WaitingforUSBDevice, 0, 0, 1);
- //reinitialize WiiMote for Prompt
- PAD_Init();
- Wpad_Init();
- WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
- WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
- //reinitialize SD and USB
- SDCard_Init();
- USBDevice_Init();
- }
-
- if (ret < 0) {
- WindowPrompt (LANGUAGE.Error,LANGUAGE.USBDevicenotfound, LANGUAGE.ok, 0,0,0);
- Sys_LoadMenu();
- }
-
- ret = Disc_Init();
- if (ret < 0) {
- WindowPrompt (LANGUAGE.Error,LANGUAGE.CouldnotinitializeDIPmodule,LANGUAGE.ok, 0,0,0);
- Sys_LoadMenu();
- }
-
- ret = WBFS_Open();
- if (ret < 0) {
- choice = WindowPrompt(LANGUAGE.NoWBFSpartitionfound,
- LANGUAGE.Youneedtoformatapartition,
- LANGUAGE.Format,
- LANGUAGE.Return,0,0);
- if(choice == 0)
- {
- Sys_LoadMenu();
- }
- else {
- /* Get partition entries */
- u32 sector_size;
- ret = Partition_GetEntries(partitions, §or_size);
- if (ret < 0) {
- WindowPrompt (LANGUAGE.Nopartitionsfound,0, LANGUAGE.Restart, 0,0,0);
+ //shutdown SD and USB before IOS Reload
+ SDCard_deInit();
+ USBDevice_deInit();
+ ret = IOS_ReloadIOS(222);
+ if(ret < 0)
+ IOS_ReloadIOS(249);
+ //reinitialize WiiMote for Prompt
+ PAD_Init();
+ Wpad_Init();
+ WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
+ WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
+ //reinitialize SD and USB
+ SDCard_Init();
+ USBDevice_Init();
+ if(ret < 0)
+ WindowPrompt(LANGUAGE.YoudonthavecIOS,LANGUAGE.LoadingincIOS,LANGUAGE.ok, 0,0,0);
+ else
+ Settings.cios = ios222;
+ }
+ } else {
Sys_LoadMenu();
- }
- menu = MENU_FORMAT;
+ }
+
+ //shutdown WiiMote before IOS Reload
+ WPAD_Flush(0);
+ WPAD_Disconnect(0);
+ WPAD_Shutdown();
+
+ //shutdown SD and USB before IOS Reload in DiscWait
+ SDCard_deInit();
+ USBDevice_deInit();
+
+ ret2 = DiscWait(LANGUAGE.NoUSBDevice, LANGUAGE.WaitingforUSBDevice, 0, 0, 1);
+ //reinitialize WiiMote for Prompt
+ PAD_Init();
+ Wpad_Init();
+ WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
+ WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
+ //reinitialize SD and USB
+ SDCard_Init();
+ USBDevice_Init();
+ }
+ if (ret2 < 0) {
+ WindowPrompt (LANGUAGE.Error,LANGUAGE.USBDevicenotfound, LANGUAGE.ok, 0,0,0);
+ Sys_LoadMenu();
}
- }
- if(shutdown == 1)
- Sys_Shutdown();
- if(reset == 1)
- Sys_Reboot();
- //Spieleliste laden
- //__Menu_GetEntries();
+ ret2 = Disc_Init();
+ if (ret2 < 0) {
+ WindowPrompt (LANGUAGE.Error,LANGUAGE.CouldnotinitializeDIPmodule,LANGUAGE.ok, 0,0,0);
+ Sys_LoadMenu();
+ }
- if(menu == MENU_NONE)
- menu = MENU_DISCLIST;
+ ret2 = WBFS_Open();
+ if (ret2 < 0) {
+ choice = WindowPrompt(LANGUAGE.NoWBFSpartitionfound,
+ LANGUAGE.Youneedtoformatapartition,
+ LANGUAGE.Format,
+ LANGUAGE.Return,0,0);
+ if(choice == 0)
+ {
+ Sys_LoadMenu();
+ } else {
+ /* Get partition entries */
+ u32 sector_size;
+ ret2 = Partition_GetEntries(partitions, §or_size);
+ if (ret2 < 0) {
+ WindowPrompt (LANGUAGE.Nopartitionsfound,0, LANGUAGE.Restart, 0,0,0);
+ Sys_LoadMenu();
+
+ }
+ menu = MENU_FORMAT;
+ }
+ }
+
+ if(shutdown == 1)
+ Sys_Shutdown();
+ if(reset == 1)
+ Sys_Reboot();
+ //Spieleliste laden
+ __Menu_GetEntries();
+
+ if(menu == MENU_NONE)
+ menu = MENU_DISCLIST;
return menu;
}
@@ -6202,9 +2162,6 @@ int MainMenu(int menu)
bgImg = new GuiImage(background);
mainWindow->Append(bgImg);
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
-
ResumeGui();
bgMusic = new GuiSound(bg_music_ogg, bg_music_ogg_size, SOUND_OGG, vol);
diff --git a/source/menu.h b/source/menu.h
index fbda92a2..ae5dba76 100644
--- a/source/menu.h
+++ b/source/menu.h
@@ -9,21 +9,15 @@
#ifndef _MENU_H_
#define _MENU_H_
-#include
+#include
+#include "main.h"
+#include "cfg.h"
-#ifdef __cplusplus
-//extern "C"
-//{
-#endif
void InitGUIThreads(void);
-void ExitGUIThreads(void);
-#ifdef __cplusplus
-//}
-#endif
+void ExitGUIThreads(void);
+
+int MainMenu (int menuitem);
-int MainMenu (int menuitem);
-void wiilight(int enable);
-int GameSettings(struct discHdr *);
enum
{
MENU_EXIT = -1,
diff --git a/source/sys.cpp b/source/sys.cpp
index c687bbda..cef37b42 100644
--- a/source/sys.cpp
+++ b/source/sys.cpp
@@ -15,6 +15,14 @@
/* Constants */
#define CERTS_LEN 0x280
+//Wiilight stuff
+static vu32 *_wiilight_reg = (u32*)0xCD0000C0;
+void wiilight(int enable) { // Toggle wiilight (thanks Bool for wiilight source)
+ u32 val = (*_wiilight_reg&~0x20);
+ if(enable && Settings.wiilight) val |= 0x20;
+ *_wiilight_reg=val;
+}
+
/* Variables */
static const char certs_fs[] ATTRIBUTE_ALIGN(32) = "/sys/cert.sys";
u8 shutdown = 0;
@@ -87,7 +95,7 @@ int Sys_IosReload(int IOS)
if(ret < 0) {
return ret;
}
-
+
if(IOS == 249 || IOS == 222 || IOS == 223) {
ret = WBFS_Init(WBFS_DEVICE_USB);
if(ret>=0)
diff --git a/source/sys.h b/source/sys.h
index 28b3cb7e..d9b67c8b 100644
--- a/source/sys.h
+++ b/source/sys.h
@@ -1,5 +1,8 @@
#ifndef _SYS_H_
#define _SYS_H_
+
+
+void wiilight(int enable);
#ifdef __cplusplus
extern "C"
diff --git a/source/wbfs.c b/source/wbfs.c
index f612a8ae..539d35c7 100644
--- a/source/wbfs.c
+++ b/source/wbfs.c
@@ -528,4 +528,11 @@ s32 WBFS_RenameGame(u8 *discid, const void *newname)
return ret;
return 0;
-}
+}
+
+f32 WBFS_EstimeGameSize(void)
+{
+
+ return wbfs_estimate_disc(hdd, __WBFS_ReadDVD, NULL, ONLY_GAME_PARTITION);
+
+}
diff --git a/source/wbfs.h b/source/wbfs.h
index 13ef6481..dda14c34 100644
--- a/source/wbfs.h
+++ b/source/wbfs.h
@@ -33,6 +33,7 @@ s32 WBFS_RemoveGame(u8 *);
s32 WBFS_GameSize(u8 *, f32 *);
s32 WBFS_DiskSpace(f32 *, f32 *);
s32 WBFS_RenameGame(u8 *, const void *);
+f32 WBFS_EstimeGameSize(void);
#ifdef __cplusplus
}
diff --git a/source/wpad.c b/source/wpad.c
index 4b897d40..cfa30541 100644
--- a/source/wpad.c
+++ b/source/wpad.c
@@ -7,7 +7,7 @@
/* Constants */
#define MAX_WIIMOTES 4
-extern u8 shutdown;
+extern u8 shutdown;
void __Wpad_PowerCallback(s32 chan)
{