#include #include #include "usbloader/wbfs.h" #include "usbloader/getentries.h" #include "language/gettext.h" #include "libwiigui/gui.h" #include "libwiigui/gui_customoptionbrowser.h" #include "prompts/PromptWindows.h" #include "prompts/DiscBrowser.h" #include "settings/SettingsPrompts.h" #include "cheats/cheatmenu.h" #include "fatmounter.h" #include "menu.h" #include "filelist.h" #include "sys.h" #define MAXOPTIONS 12 /*** Extern functions ***/ extern void ResumeGui(); extern void HaltGui(); extern bool OpenXMLDatabase(bool openfile, bool loadtitles, bool freemem); /*** Extern variables ***/ extern GuiWindow * mainWindow; extern GuiSound * bgMusic; extern GuiImage * bgImg; extern GuiImageData * pointer[4]; extern GuiImageData * background; extern u8 shutdown; extern u8 reset; /**************************************************************************** * MenuSettings ***************************************************************************/ int MenuSettings() { int menu = MENU_NONE; int ret; int choice = 0; bool exit = false; // backup game language setting int opt_lang = 0; opt_lang = Settings.language; enum { FADE, LEFT, RIGHT }; int slidedirection = FADE; GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, Settings.sfxvolume); GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, Settings.sfxvolume); GuiSound btnClick1(button_click_pcm, button_click_pcm_size, SOUND_PCM, Settings.sfxvolume); 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), "%ssettings_title.png", CFG.theme_path); GuiImageData MainButtonImgData(imgPath, settings_title_png); snprintf(imgPath, sizeof(imgPath), "%ssettings_title_over.png", CFG.theme_path); GuiImageData MainButtonImgOverData(imgPath, settings_title_over_png); snprintf(imgPath, sizeof(imgPath), "%spageindicator.png", CFG.theme_path); GuiImageData PageindicatorImgData(imgPath, pageindicator_png); snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_left.png", CFG.theme_path); GuiImageData arrow_left(imgPath, startgame_arrow_left_png); snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_right.png", CFG.theme_path); GuiImageData arrow_right(imgPath, startgame_arrow_right_png); snprintf(imgPath, sizeof(imgPath), "%scredits_button.png", CFG.theme_path); GuiImageData creditsImgData(imgPath, credits_button_png); snprintf(imgPath, sizeof(imgPath), "%scredits_button_over.png", CFG.theme_path); GuiImageData creditsOver(imgPath, credits_button_over_png); GuiImage creditsImg(&creditsImgData); GuiImage creditsImgOver(&creditsOver); 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(tr("Settings"), 28, (GXColor){0, 0, 0, 255}); titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); titleTxt.SetPosition(0,40); GuiImage settingsbackground(&settingsbg); GuiText backBtnTxt(tr("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); GuiImage PageindicatorImg1(&PageindicatorImgData); GuiText PageindicatorTxt1("1", 22, (GXColor){0, 0, 0, 255}); GuiButton PageIndicatorBtn1(PageindicatorImg1.GetWidth(), PageindicatorImg1.GetHeight()); PageIndicatorBtn1.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); PageIndicatorBtn1.SetPosition(200, 400); PageIndicatorBtn1.SetImage(&PageindicatorImg1); PageIndicatorBtn1.SetLabel(&PageindicatorTxt1); PageIndicatorBtn1.SetSoundOver(&btnSoundOver); PageIndicatorBtn1.SetSoundClick(&btnClick1); PageIndicatorBtn1.SetTrigger(&trigA); PageIndicatorBtn1.SetEffectGrow(); GuiImage PageindicatorImg2(&PageindicatorImgData); GuiText PageindicatorTxt2("2", 22, (GXColor){0, 0, 0, 255}); GuiButton PageIndicatorBtn2(PageindicatorImg2.GetWidth(), PageindicatorImg2.GetHeight()); PageIndicatorBtn2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); PageIndicatorBtn2.SetPosition(235, 400); PageIndicatorBtn2.SetImage(&PageindicatorImg2); PageIndicatorBtn2.SetLabel(&PageindicatorTxt2); PageIndicatorBtn2.SetSoundOver(&btnSoundOver); PageIndicatorBtn2.SetSoundClick(&btnClick1); PageIndicatorBtn2.SetTrigger(&trigA); PageIndicatorBtn2.SetEffectGrow(); GuiImage GoLeftImg(&arrow_left); GuiButton GoLeftBtn(GoLeftImg.GetWidth(), GoLeftImg.GetHeight()); GoLeftBtn.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); GoLeftBtn.SetPosition(25, -25); GoLeftBtn.SetImage(&GoLeftImg); GoLeftBtn.SetSoundOver(&btnSoundOver); GoLeftBtn.SetSoundClick(&btnClick); GoLeftBtn.SetEffectGrow(); GoLeftBtn.SetTrigger(&trigA); GoLeftBtn.SetTrigger(&trigL); GoLeftBtn.SetTrigger(&trigMinus); GuiImage GoRightImg(&arrow_right); GuiButton GoRightBtn(GoRightImg.GetWidth(), GoRightImg.GetHeight()); GoRightBtn.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE); GoRightBtn.SetPosition(-25, -25); GoRightBtn.SetImage(&GoRightImg); GoRightBtn.SetSoundOver(&btnSoundOver); GoRightBtn.SetSoundClick(&btnClick); GoRightBtn.SetEffectGrow(); GoRightBtn.SetTrigger(&trigA); GoRightBtn.SetTrigger(&trigR); GoRightBtn.SetTrigger(&trigPlus); char MainButtonText[50]; snprintf(MainButtonText, sizeof(MainButtonText), "%s", " "); GuiImage MainButton1Img(&MainButtonImgData); GuiImage MainButton1ImgOver(&MainButtonImgOverData); GuiText MainButton1Txt(MainButtonText, 22, (GXColor){0, 0, 0, 255}); MainButton1Txt.SetMaxWidth(MainButton1Img.GetWidth()); GuiButton MainButton1(MainButton1Img.GetWidth(), MainButton1Img.GetHeight()); MainButton1.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton1.SetPosition(0, 90); MainButton1.SetImage(&MainButton1Img); MainButton1.SetImageOver(&MainButton1ImgOver); MainButton1.SetLabel(&MainButton1Txt); MainButton1.SetSoundOver(&btnSoundOver); MainButton1.SetSoundClick(&btnClick1); MainButton1.SetEffectGrow(); MainButton1.SetTrigger(&trigA); GuiImage MainButton2Img(&MainButtonImgData); GuiImage MainButton2ImgOver(&MainButtonImgOverData); GuiText MainButton2Txt(MainButtonText, 22, (GXColor){0, 0, 0, 255}); MainButton2Txt.SetMaxWidth(MainButton2Img.GetWidth()); GuiButton MainButton2(MainButton2Img.GetWidth(), MainButton2Img.GetHeight()); MainButton2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton2.SetPosition(0, 160); MainButton2.SetImage(&MainButton2Img); MainButton2.SetImageOver(&MainButton2ImgOver); MainButton2.SetLabel(&MainButton2Txt); MainButton2.SetSoundOver(&btnSoundOver); MainButton2.SetSoundClick(&btnClick1); MainButton2.SetEffectGrow(); MainButton2.SetTrigger(&trigA); GuiImage MainButton3Img(&MainButtonImgData); GuiImage MainButton3ImgOver(&MainButtonImgOverData); GuiText MainButton3Txt(MainButtonText, 22, (GXColor){0, 0, 0, 255}); MainButton3Txt.SetMaxWidth(MainButton3Img.GetWidth()); GuiButton MainButton3(MainButton3Img.GetWidth(), MainButton3Img.GetHeight()); MainButton3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton3.SetPosition(0, 230); MainButton3.SetImage(&MainButton3Img); MainButton3.SetImageOver(&MainButton3ImgOver); MainButton3.SetLabel(&MainButton3Txt); MainButton3.SetSoundOver(&btnSoundOver); MainButton3.SetSoundClick(&btnClick1); MainButton3.SetEffectGrow(); MainButton3.SetTrigger(&trigA); GuiImage MainButton4Img(&MainButtonImgData); GuiImage MainButton4ImgOver(&MainButtonImgOverData); GuiText MainButton4Txt(MainButtonText, 22, (GXColor){0, 0, 0, 255}); MainButton4Txt.SetMaxWidth(MainButton4Img.GetWidth()); GuiButton MainButton4(MainButton4Img.GetWidth(), MainButton4Img.GetHeight()); MainButton4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton4.SetPosition(0, 300); MainButton4.SetImage(&MainButton4Img); MainButton4.SetImageOver(&MainButton4ImgOver); MainButton4.SetLabel(&MainButton4Txt); MainButton4.SetSoundOver(&btnSoundOver); MainButton4.SetSoundClick(&btnClick1); MainButton4.SetEffectGrow(); MainButton4.SetTrigger(&trigA); customOptionList options2(MAXOPTIONS); 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 { VIDEO_WaitVSync (); menu = MENU_NONE; if ( pageToDisplay == 1) { /** Standard procedure made in all pages **/ MainButton1.StopEffect(); MainButton2.StopEffect(); MainButton3.StopEffect(); MainButton4.StopEffect(); if(slidedirection == RIGHT) { MainButton1.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); MainButton2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); MainButton3.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); MainButton4.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); while (MainButton1.GetEffect()>0) usleep(50); } else if(slidedirection == LEFT) { MainButton1.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); MainButton2.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); MainButton3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); MainButton4.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); while (MainButton1.GetEffect()>0) usleep(50); } HaltGui(); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("GUI Settings")); MainButton1Txt.SetText(MainButtonText); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Game Load")); MainButton2Txt.SetText(MainButtonText); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Parental Control")); MainButton3Txt.SetText(MainButtonText); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Sound")); MainButton4Txt.SetText(MainButtonText); mainWindow->RemoveAll(); mainWindow->Append(&w); w.RemoveAll(); w.Append(&settingsbackground); w.Append(&PageIndicatorBtn1); w.Append(&PageIndicatorBtn2); w.Append(&titleTxt); w.Append(&backBtn); w.Append(&homo); w.Append(&GoRightBtn); w.Append(&GoLeftBtn); w.Append(&MainButton1); w.Append(&MainButton2); w.Append(&MainButton3); w.Append(&MainButton4); PageIndicatorBtn1.SetAlpha(255); PageIndicatorBtn2.SetAlpha(50); /** Creditsbutton change **/ MainButton4.SetImage(&MainButton4Img); MainButton4.SetImageOver(&MainButton4ImgOver); /** Disable ability to click through MainButtons */ optionBrowser2.SetClickable(false); /** Default no scrollbar and reset position **/ optionBrowser2.SetScrollbar(0); optionBrowser2.SetOffset(0); MainButton1.StopEffect(); MainButton2.StopEffect(); MainButton3.StopEffect(); MainButton4.StopEffect(); MainButton1.SetEffectGrow(); MainButton2.SetEffectGrow(); MainButton3.SetEffectGrow(); MainButton4.SetEffectGrow(); if(slidedirection == FADE) { MainButton1.SetEffect(EFFECT_FADE, 20); MainButton2.SetEffect(EFFECT_FADE, 20); MainButton3.SetEffect(EFFECT_FADE, 20); MainButton4.SetEffect(EFFECT_FADE, 20); } else if(slidedirection == LEFT) { MainButton1.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); MainButton2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); MainButton3.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); MainButton4.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); } else if(slidedirection == RIGHT) { MainButton1.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); MainButton2.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); MainButton3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); MainButton4.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); } mainWindow->Append(&w); ResumeGui(); while(MainButton1.GetEffect() > 0) usleep(50); } else if ( pageToDisplay == 2 ) { /** Standard procedure made in all pages **/ MainButton1.StopEffect(); MainButton2.StopEffect(); MainButton3.StopEffect(); MainButton4.StopEffect(); if(slidedirection == RIGHT) { MainButton1.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); MainButton2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); MainButton3.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); MainButton4.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 35); while (MainButton1.GetEffect()>0) usleep(50); } else if(slidedirection == LEFT) { MainButton1.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); MainButton2.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); MainButton3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); MainButton4.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 35); while (MainButton1.GetEffect()>0) usleep(50); } HaltGui(); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Custom Paths")); MainButton1Txt.SetText(MainButtonText); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Update")); MainButton2Txt.SetText(MainButtonText); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Default Settings")); MainButton3Txt.SetText(MainButtonText); snprintf(MainButtonText, sizeof(MainButtonText), "%s", tr("Credits")); MainButton4Txt.SetText(MainButtonText); mainWindow->RemoveAll(); mainWindow->Append(&w); w.RemoveAll(); w.Append(&settingsbackground); w.Append(&PageIndicatorBtn1); w.Append(&PageIndicatorBtn2); w.Append(&titleTxt); w.Append(&backBtn); w.Append(&homo); w.Append(&GoRightBtn); w.Append(&GoLeftBtn); w.Append(&MainButton1); w.Append(&MainButton2); w.Append(&MainButton3); w.Append(&MainButton4); PageIndicatorBtn1.SetAlpha(50); PageIndicatorBtn2.SetAlpha(255); /** Creditsbutton change **/ MainButton4.SetImage(&creditsImg); MainButton4.SetImageOver(&creditsImgOver); /** Disable ability to click through MainButtons */ optionBrowser2.SetClickable(false); /** Default no scrollbar and reset position **/ optionBrowser2.SetScrollbar(0); optionBrowser2.SetOffset(0); MainButton1.StopEffect(); MainButton2.StopEffect(); MainButton3.StopEffect(); MainButton4.StopEffect(); MainButton1.SetEffectGrow(); MainButton2.SetEffectGrow(); MainButton3.SetEffectGrow(); MainButton4.SetEffectGrow(); if(slidedirection == FADE) { MainButton1.SetEffect(EFFECT_FADE, 20); MainButton2.SetEffect(EFFECT_FADE, 20); MainButton3.SetEffect(EFFECT_FADE, 20); MainButton4.SetEffect(EFFECT_FADE, 20); } else if(slidedirection == LEFT) { MainButton1.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); MainButton2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); MainButton3.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); MainButton4.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 35); } else if(slidedirection == RIGHT) { MainButton1.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); MainButton2.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); MainButton3.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); MainButton4.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 35); } mainWindow->Append(&w); ResumeGui(); while(MainButton1.GetEffect() > 0) usleep(50); } while(menu == MENU_NONE) { VIDEO_WaitVSync (); if ( pageToDisplay == 1 ) { if(MainButton1.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton1.GetEffect() > 0) usleep(50); HaltGui(); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); titleTxt.SetText(tr("GUI Settings")); exit = false; for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL); options2.SetName(0, "%s",tr("App Language")); options2.SetName(1, "%s",tr("Display")); options2.SetName(2, "%s",tr("Clock")); options2.SetName(3, "%s",tr("Tooltips")); options2.SetName(4, "%s",tr("Flip-X")); options2.SetName(5, "%s",tr("Prompts Buttons")); options2.SetName(6, "%s",tr("Keyboard")); options2.SetName(7, "%s",tr("Wiilight")); options2.SetName(8, "%s",tr("Rumble")); options2.SetName(10, "%s",tr("Titles from XML")); options2.SetName(11, "%s",tr("Screensaver")); for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL); optionBrowser2.SetScrollbar(1); w.Append(&optionBrowser2); optionBrowser2.SetClickable(true); ResumeGui(); VIDEO_WaitVSync (); optionBrowser2.SetEffect(EFFECT_FADE, 20); while(optionBrowser2.GetEffect() > 0) usleep(50); int returnhere = 1; char * languagefile; languagefile = strrchr(Settings.language_path, '/')+1; while(!exit) { VIDEO_WaitVSync (); returnhere = 1; if(Settings.sinfo >= settings_sinfo_max) Settings.sinfo = 0; if(Settings.hddinfo >= settings_clock_max) Settings.hddinfo = 0; //CLOCK if (Settings.tooltips >= settings_tooltips_max) Settings.tooltips = 0; if ( Settings.xflip >= settings_xflip_max) Settings.xflip = 0; if ( Settings.wsprompt > 1 ) Settings.wsprompt = 0; if ( Settings.keyset >= settings_keyset_max) Settings.keyset = 0; if ( Settings.wiilight > 2 ) Settings.wiilight = 0; if(Settings.rumble >= settings_rumble_max) Settings.rumble = 0; //RUMBLE if(Settings.screensaver >= settings_screensaver_max) Settings.screensaver = 0; //RUMBLE if(Settings.titlesOverride >= 2) Settings.titlesOverride = 0; if(!strcmp("notset", Settings.language_path)) options2.SetValue(0, "%s", tr("Default")); else options2.SetValue(0, "%s", languagefile); if (Settings.sinfo == GameID) options2.SetValue(1,"%s",tr("Game ID")); else if (Settings.sinfo == GameRegion) options2.SetValue(1,"%s",tr("Game Region")); else if (Settings.sinfo == Both) options2.SetValue(1,"%s",tr("Both")); else if (Settings.sinfo == Neither) options2.SetValue(1,"%s",tr("Neither")); if (Settings.hddinfo == hr12) options2.SetValue(2,"12 %s",tr("Hour")); else if (Settings.hddinfo == hr24) options2.SetValue(2,"24 %s",tr("Hour")); else if (Settings.hddinfo == Off) options2.SetValue(2,"%s",tr("OFF")); if (Settings.tooltips == TooltipsOn) options2.SetValue(3,"%s",tr("ON")); else if (Settings.tooltips == TooltipsOff) options2.SetValue(3,"%s",tr("OFF")); if (Settings.xflip == no) options2.SetValue(4,"%s/%s",tr("Right"),tr("Next")); else if (Settings.xflip == yes) options2.SetValue(4,"%s/%s",tr("Left"),tr("Prev")); else if (Settings.xflip == sysmenu) options2.SetValue(4,"%s", tr("Like SysMenu")); else if (Settings.xflip == wtf) options2.SetValue(4,"%s/%s",tr("Right"),tr("Prev")); else if (Settings.xflip == disk3d) options2.SetValue(4,tr("DiskFlip")); if (Settings.wsprompt == no) options2.SetValue(5,"%s",tr("Normal")); else if (Settings.wsprompt == yes) options2.SetValue(5,"%s",tr("Widescreen Fix")); if (Settings.keyset == us) options2.SetValue(6,"QWERTY"); else if (Settings.keyset == dvorak) options2.SetValue(6,"DVORAK"); else if (Settings.keyset == euro) options2.SetValue(6,"QWERTZ"); else if (Settings.keyset == azerty) options2.SetValue(6,"AZERTY"); if (Settings.wiilight == 0) options2.SetValue(7,"%s",tr("OFF")); else if (Settings.wiilight == 1) options2.SetValue(7,"%s",tr("ON")); else if (Settings.wiilight == 2) options2.SetValue(7,"%s",tr("Only for Install")); if (Settings.rumble == RumbleOn) options2.SetValue(8,"%s",tr("ON")); else if (Settings.rumble == RumbleOff) options2.SetValue(8,"%s",tr("OFF")); if (Settings.titlesOverride == 0) options2.SetValue(10,"%s",tr("OFF")); else if (Settings.titlesOverride == 1) options2.SetValue(10,"%s",tr("ON")); if (Settings.screensaver == 0) options2.SetValue(11,"%s",tr("OFF")); else if (Settings.screensaver == 1) options2.SetValue(11,"3 min"); else if (Settings.screensaver == 2) options2.SetValue(11,"5 min"); else if (Settings.screensaver == 3) options2.SetValue(11,"10 min"); else if (Settings.screensaver == 4) options2.SetValue(11,"20 min"); else if (Settings.screensaver == 5) options2.SetValue(11,"30 min"); else if (Settings.screensaver == 6) options2.SetValue(11,"1 hour"); if(backBtn.GetState() == STATE_CLICKED) { backBtn.ResetState(); exit = true; break; } if(shutdown == 1) Sys_Shutdown(); else if(reset == 1) Sys_Reboot(); else if(menu == MENU_DISCLIST) { w.Remove(&optionBrowser2); w.Remove(&backBtn); WindowCredits(); w.Append(&optionBrowser2); w.Append(&backBtn); } else if(homo.GetState() == STATE_CLICKED) { cfg_save_global(); optionBrowser2.SetState(STATE_DISABLED); s32 thetimeofbg = bgMusic->GetPlayTime(); bgMusic->Stop(); choice = WindowExitPrompt(tr("Exit USB Loader GX?"),0, tr("Back to Loader"),tr("Wii Menu"),tr("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*(Settings.volume/100.0)); if(choice == 3) { Sys_LoadMenu(); // Back to System Menu } else if (choice == 2) { Sys_BackToLoader(); } else { homo.ResetState(); } optionBrowser2.SetState(STATE_DEFAULT); } ret = optionBrowser2.GetClickedOption(); switch (ret) { case 0: //if(isSdInserted()) { if(isInserted(bootDevice)) { if ( Settings.godmode == 1) { w.SetEffect(EFFECT_FADE, -20); while(w.GetEffect()>0) usleep(50); mainWindow->Remove(&w); while(returnhere == 1) returnhere = MenuLanguageSelect(); if(returnhere == 2) { menu = MENU_SETTINGS; pageToDisplay = 0; exit = true; mainWindow->Append(&w); break; } else { HaltGui(); mainWindow->Append(&w); w.SetEffect(EFFECT_FADE, 20); ResumeGui(); while(w.GetEffect()>0) usleep(50); } } else { WindowPrompt(tr("Language change:"),tr("Console should be unlocked to modify it."),tr("OK")); } } else { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to use this option."), tr("OK")); } break; case 1: Settings.sinfo++; break; case 2: Settings.hddinfo++; break; case 3: Settings.tooltips++; break; case 4: Settings.xflip++; break; case 5: Settings.wsprompt++; break; case 6: Settings.keyset++; break; case 7: Settings.wiilight++; break; case 8: Settings.rumble++; break; case 9: break; case 10: Settings.titlesOverride++; break; case 11: Settings.screensaver++; break; } } optionBrowser2.SetEffect(EFFECT_FADE, -20); while(optionBrowser2.GetEffect() > 0) usleep(50); titleTxt.SetText(tr("Settings")); slidedirection = FADE; if(returnhere != 2) pageToDisplay = 1; MainButton1.ResetState(); break; } if(MainButton2.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton2.GetEffect() > 0) usleep(50); HaltGui(); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); titleTxt.SetText(tr("Game Load")); exit = false; for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL); options2.SetName(0, "%s",tr("Video Mode")); options2.SetName(1, "%s",tr("VIDTV Patch")); options2.SetName(2, "%s",tr("Game Language")); options2.SetName(3, "%s",tr("Patch Country Strings")); options2.SetName(4, "Ocarina"); options2.SetName(5,"%s", tr("Boot/Standard")); options2.SetName(6, "%s",tr("Quick Boot")); options2.SetName(7, "%s",tr("Error 002 fix")); for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL); w.Append(&optionBrowser2); optionBrowser2.SetClickable(true); ResumeGui(); VIDEO_WaitVSync (); optionBrowser2.SetEffect(EFFECT_FADE, 20); while(optionBrowser2.GetEffect() > 0) usleep(50); while(!exit) { VIDEO_WaitVSync (); if(Settings.video >= settings_video_max) Settings.video = 0; if(Settings.vpatch >= settings_off_on_max) Settings.vpatch = 0; if ( Settings.patchcountrystrings > 1) Settings.patchcountrystrings = 0; if(Settings.ocarina >= settings_off_on_max) Settings.ocarina = 0; if ( Settings.qboot > 1 ) Settings.qboot = 0; if ( Settings.cios >= settings_cios_max) Settings.cios = 0; if ( Settings.language >= settings_language_max) Settings.language = 0; if(Settings.error002 >= settings_off_on_max+1) Settings.error002 = 0; if (Settings.video == discdefault) options2.SetValue(0,"%s",tr("Disc Default")); else if (Settings.video == systemdefault) options2.SetValue(0,"%s",tr("System Default")); else if (Settings.video == patch) options2.SetValue(0,"%s",tr("AutoPatch")); else if (Settings.video == pal50) options2.SetValue(0,"%s PAL50",tr("Force")); else if (Settings.video == pal60) options2.SetValue(0,"%s PAL60",tr("Force")); else if (Settings.video == ntsc) options2.SetValue(0,"%s NTSC",tr("Force")); if (Settings.vpatch == on) options2.SetValue(1,"%s",tr("ON")); else if (Settings.vpatch == off) options2.SetValue(1,"%s",tr("OFF")); if (Settings.language == ConsoleLangDefault) options2.SetValue(2,"%s",tr("Console Default")); else if (Settings.language == jap) options2.SetValue(2,"%s",tr("Japanese")); else if (Settings.language == ger) options2.SetValue(2,"%s",tr("German")); else if (Settings.language == eng) options2.SetValue(2,"%s",tr("English")); else if (Settings.language == fren) options2.SetValue(2,"%s",tr("French")); else if (Settings.language == esp) options2.SetValue(2,"%s",tr("Spanish")); else if (Settings.language == it) options2.SetValue(2,"%s",tr("Italian")); else if (Settings.language == dut) options2.SetValue(2,"%s",tr("Dutch")); else if (Settings.language == schin) options2.SetValue(2,"%s",tr("SChinese")); else if (Settings.language == tchin) options2.SetValue(2,"%s",tr("TChinese")); else if (Settings.language == kor) options2.SetValue(2,"%s",tr("Korean")); if (Settings.patchcountrystrings == 0) options2.SetValue(3,"%s",tr("OFF")); else if (Settings.patchcountrystrings == 1) options2.SetValue(3,"%s",tr("ON")); if (Settings.ocarina == on) options2.SetValue(4,"%s",tr("ON")); else if (Settings.ocarina == off) options2.SetValue(4,"%s",tr("OFF")); if (Settings.godmode != 1) options2.SetValue(5, "********"); else if (Settings.cios == ios249) options2.SetValue(5,"cIOS 249"); else if (Settings.cios == ios222) options2.SetValue(5,"cIOS 222"); if (Settings.qboot == no) options2.SetValue(6,"%s",tr("No")); else if (Settings.qboot == yes) options2.SetValue(6,"%s",tr("Yes")); if (Settings.error002 == no) options2.SetValue(7,"%s",tr("No")); else if (Settings.error002 == yes) options2.SetValue(7,"%s",tr("Yes")); else if (Settings.error002 == anti) options2.SetValue(7,"%s",tr("Anti")); if(backBtn.GetState() == STATE_CLICKED) { backBtn.ResetState(); exit = true; break; } if(shutdown == 1) Sys_Shutdown(); else if(reset == 1) Sys_Reboot(); else if(homo.GetState() == STATE_CLICKED) { cfg_save_global(); optionBrowser2.SetState(STATE_DISABLED); s32 thetimeofbg = bgMusic->GetPlayTime(); bgMusic->Stop(); choice = WindowExitPrompt(tr("Exit USB Loader GX?"),0, tr("Back to Loader"),tr("Wii Menu"),tr("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*(Settings.volume/100.0)); if(choice == 3) { Sys_LoadMenu(); // Back to System Menu } else if (choice == 2) { Sys_BackToLoader(); } else { homo.ResetState(); } optionBrowser2.SetState(STATE_DEFAULT); } ret = optionBrowser2.GetClickedOption(); switch (ret) { case 0: Settings.video++; break; case 1: Settings.vpatch++; break; case 2: Settings.language++; break; case 3: Settings.patchcountrystrings++; break; case 4: Settings.ocarina++; break; case 5: if(Settings.godmode) Settings.cios++; break; case 6: Settings.qboot++; break; case 7: Settings.error002++; break; } } optionBrowser2.SetEffect(EFFECT_FADE, -20); while(optionBrowser2.GetEffect() > 0) usleep(50); titleTxt.SetText(tr("Settings")); slidedirection = FADE; pageToDisplay = 1; MainButton2.ResetState(); break; } if(MainButton3.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton3.GetEffect() > 0) usleep(50); HaltGui(); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); titleTxt.SetText(tr("Parental Control")); exit = false; for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL); options2.SetName(0, "%s",tr("Console")); options2.SetName(1, "%s",tr("Password")); options2.SetName(2, "%s",tr("Controllevel")); for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL); w.Append(&optionBrowser2); optionBrowser2.SetClickable(true); ResumeGui(); VIDEO_WaitVSync (); optionBrowser2.SetEffect(EFFECT_FADE, 20); while(optionBrowser2.GetEffect() > 0) usleep(50); while(!exit) { VIDEO_WaitVSync (); if (Settings.parentalcontrol > 4 ) Settings.parentalcontrol = 0; if( Settings.godmode == 1 ) options2.SetValue(0, tr("Unlocked")); else if( Settings.godmode == 0 ) options2.SetValue(0, tr("Locked")); if ( Settings.godmode != 1) options2.SetValue(1, "********"); else if (!strcmp("", Settings.unlockCode)) options2.SetValue(1, "%s",tr("not set")); else options2.SetValue(1, Settings.unlockCode); if (Settings.godmode != 1) options2.SetValue(2, "********"); else if(Settings.parentalcontrol == 0) options2.SetValue(2, tr("OFF")); else if(Settings.parentalcontrol == 1) options2.SetValue(2, tr("1 (Child 7+)")); else if(Settings.parentalcontrol == 2) options2.SetValue(2, tr("2 (Teen 12+)")); else if(Settings.parentalcontrol == 3) options2.SetValue(2, tr("3 (Mature 16+)")); else if(Settings.parentalcontrol == 4) options2.SetValue(2, tr("4 (Adults Only 18+)")); if(backBtn.GetState() == STATE_CLICKED) { backBtn.ResetState(); exit = true; break; } if(shutdown == 1) Sys_Shutdown(); else if(reset == 1) Sys_Reboot(); else if(homo.GetState() == STATE_CLICKED) { cfg_save_global(); optionBrowser2.SetState(STATE_DISABLED); s32 thetimeofbg = bgMusic->GetPlayTime(); bgMusic->Stop(); choice = WindowExitPrompt(tr("Exit USB Loader GX?"),0, tr("Back to Loader"),tr("Wii Menu"),tr("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*(Settings.volume/100.0)); if(choice == 3) { Sys_LoadMenu(); // Back to System Menu } else if (choice == 2) { Sys_BackToLoader(); } else { homo.ResetState(); } optionBrowser2.SetState(STATE_DEFAULT); } ret = optionBrowser2.GetClickedOption(); switch (ret) { case 0: if (!strcmp("", Settings.unlockCode)) { Settings.godmode = !Settings.godmode; break; } else if ( Settings.godmode == 0 ) { //password check to unlock Install,Delete and Format w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[20] = ""; int result = OnScreenKeyboard(entered, 20,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { if (!strcmp(entered, Settings.unlockCode)) //if password correct { if (Settings.godmode == 0) { WindowPrompt(tr("Correct Password"),tr("All the features of USB Loader GX are unlocked."),tr("OK")); Settings.godmode = 1; //__Menu_GetEntries(); menu = MENU_DISCLIST; } } else { WindowPrompt(tr("Wrong Password"),tr("USB Loader GX is protected"),tr("OK")); } } } else { int choice = WindowPrompt (tr("Lock Console"),tr("Are you sure?"),tr("Yes"),tr("No")); if(choice == 1) { WindowPrompt(tr("Console Locked"),tr("USB Loader GX is protected"),tr("OK")); Settings.godmode = 0; //__Menu_GetEntries(); menu = MENU_DISCLIST; } } break; case 1:// Modify Password if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[20] = ""; strncpy(entered, Settings.unlockCode, sizeof(entered)); int result = OnScreenKeyboard(entered, 20,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { strncpy(Settings.unlockCode, entered, sizeof(Settings.unlockCode)); WindowPrompt(tr("Password Changed"),tr("Password has been changed"),tr("OK")); } } else { WindowPrompt(tr("Password Changed"),tr("Console should be unlocked to modify it."),tr("OK")); } break; case 2: if(Settings.godmode) Settings.parentalcontrol++; break; } } optionBrowser2.SetEffect(EFFECT_FADE, -20); while(optionBrowser2.GetEffect() > 0) usleep(50); titleTxt.SetText(tr("Settings")); slidedirection = FADE; pageToDisplay = 1; MainButton3.ResetState(); break; } if(MainButton4.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton4.GetEffect() > 0) usleep(50); HaltGui(); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); titleTxt.SetText(tr("Sound")); exit = false; for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL); options2.SetName(0, "%s",tr("Backgroundmusic")); options2.SetName(1, "%s",tr("Music Volume")); options2.SetName(2, "%s",tr("SFX Volume")); for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL); w.Append(&optionBrowser2); optionBrowser2.SetClickable(true); ResumeGui(); VIDEO_WaitVSync (); optionBrowser2.SetEffect(EFFECT_FADE, 20); while(optionBrowser2.GetEffect() > 0) usleep(50); char * oggfile; while(!exit) { VIDEO_WaitVSync (); bool returnhere = true; if(!strcmp("notset", Settings.ogg_path)) options2.SetValue(0, "%s", tr("Standard")); else { oggfile = strrchr(Settings.ogg_path, '/')+1; options2.SetValue(0, "%s", oggfile); } if(Settings.volume > 0) options2.SetValue(1,"%i", Settings.volume); else options2.SetValue(1,"%s", tr("OFF")); if(Settings.sfxvolume > 0) options2.SetValue(2,"%i", Settings.sfxvolume); else options2.SetValue(2,"%s", tr("OFF")); if(backBtn.GetState() == STATE_CLICKED) { backBtn.ResetState(); exit = true; break; } if(shutdown == 1) Sys_Shutdown(); else if(reset == 1) Sys_Reboot(); else if(homo.GetState() == STATE_CLICKED) { cfg_save_global(); optionBrowser2.SetState(STATE_DISABLED); s32 thetimeofbg = bgMusic->GetPlayTime(); bgMusic->Stop(); choice = WindowExitPrompt(tr("Exit USB Loader GX?"),0, tr("Back to Loader"),tr("Wii Menu"),tr("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*(Settings.volume/100.0)); if(choice == 3) { Sys_LoadMenu(); // Back to System Menu } else if (choice == 2) { Sys_BackToLoader(); } else { homo.ResetState(); } optionBrowser2.SetState(STATE_DEFAULT); } ret = optionBrowser2.GetClickedOption(); switch (ret) { case 0: //if(isSdInserted()) if(isInserted(bootDevice)) { w.SetEffect(EFFECT_FADE, -20); while(w.GetEffect()>0) usleep(50); mainWindow->Remove(&w); while(returnhere) returnhere = MenuOGG(); HaltGui(); mainWindow->Append(&w); w.SetEffect(EFFECT_FADE, 20); ResumeGui(); while(w.GetEffect()>0) usleep(50); } else WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to use this option."), tr("OK")); break; case 1: Settings.volume += 10; if(Settings.volume > 100) Settings.volume = 0; SetVolumeOgg(255*(Settings.volume/100.0)); break; case 2: Settings.sfxvolume += 10; if(Settings.sfxvolume > 100) Settings.sfxvolume = 0; btnSoundOver.SetVolume(Settings.sfxvolume); btnClick.SetVolume(Settings.sfxvolume); btnClick1.SetVolume(Settings.sfxvolume); break; } } optionBrowser2.SetEffect(EFFECT_FADE, -20); while(optionBrowser2.GetEffect() > 0) usleep(50); titleTxt.SetText(tr("Settings")); slidedirection = FADE; pageToDisplay = 1; MainButton4.ResetState(); break; } } if ( pageToDisplay == 2) { if(MainButton1.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton1.GetEffect() > 0) usleep(50); HaltGui(); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); titleTxt.SetText(tr("Custom Paths")); exit = false; for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL); if(Settings.godmode) options2.SetName(0, "%s", tr("Cover Path")); options2.SetName(1, "%s", tr("Discimage Path")); options2.SetName(2, "%s", tr("ThemePath")); options2.SetName(3, "%s", tr("titles.txt Path")); options2.SetName(4, "%s", tr("Updatepath")); options2.SetName(5, "%s", tr("Cheatcodes Path")); options2.SetName(6, "%s", tr("TXTCheatcodes Path")); options2.SetName(7, "%s", tr("Dol Path")); for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL); w.Append(&optionBrowser2); optionBrowser2.SetClickable(true); ResumeGui(); VIDEO_WaitVSync (); optionBrowser2.SetEffect(EFFECT_FADE, 20); while(optionBrowser2.GetEffect() > 0) usleep(50); if(Settings.godmode) { while(!exit) { VIDEO_WaitVSync (); options2.SetValue(0, "%s", Settings.covers_path); options2.SetValue(1, "%s", Settings.disc_path); options2.SetValue(2, "%s", CFG.theme_path); options2.SetValue(3, "%s", Settings.titlestxt_path); options2.SetValue(4, "%s", Settings.update_path); options2.SetValue(5, "%s", Settings.Cheatcodespath); options2.SetValue(6, "%s", Settings.TxtCheatcodespath); options2.SetValue(7, "%s", Settings.dolpath); if(backBtn.GetState() == STATE_CLICKED) { backBtn.ResetState(); exit = true; break; } if(shutdown == 1) Sys_Shutdown(); else if(reset == 1) Sys_Reboot(); else if(homo.GetState() == STATE_CLICKED) { cfg_save_global(); optionBrowser2.SetState(STATE_DISABLED); s32 thetimeofbg = bgMusic->GetPlayTime(); bgMusic->Stop(); choice = WindowExitPrompt(tr("Exit USB Loader GX?"),0, tr("Back to Loader"),tr("Wii Menu"),tr("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*(Settings.volume/100.0)); if(choice == 3) { Sys_LoadMenu(); // Back to System Menu } else if (choice == 2) { Sys_BackToLoader(); } else { homo.ResetState(); } optionBrowser2.SetState(STATE_DEFAULT); } ret = optionBrowser2.GetClickedOption(); switch (ret) { case 0: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.covers_path, sizeof(entered)); int result = OnScreenKeyboard(entered,43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.covers_path, entered, sizeof(Settings.covers_path)); WindowPrompt(tr("Coverpath Changed"),0,tr("OK")); // if(!isSdInserted()) { if(!isInserted(bootDevice)) { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK")); } } } else { WindowPrompt(tr("Coverpath Changed"),tr("Console should be unlocked to modify it."),tr("OK")); } break; case 1: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.disc_path, sizeof(entered)); int result = OnScreenKeyboard(entered, 43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.disc_path, entered, sizeof(Settings.disc_path)); WindowPrompt(tr("Discpath Changed"),0,tr("OK")); // if(!isSdInserted()) { if(!isInserted(bootDevice)) { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK")); } } } else { WindowPrompt(tr("Discpath change"),tr("Console should be unlocked to modify it."),tr("OK")); } break; case 2: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, CFG.theme_path, sizeof(entered)); int result = OnScreenKeyboard(entered, 43,0); HaltGui(); w.RemoveAll(); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(CFG.theme_path, entered, sizeof(CFG.theme_path)); WindowPrompt(tr("Themepath Changed"),0,tr("OK")); // if(!isSdInserted()) { if(!isInserted(bootDevice)) { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK")); } 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(&settingsbackground); w.Append(&titleTxt); w.Append(&backBtn); w.Append(&optionBrowser2); ResumeGui(); } else { WindowPrompt(tr("Themepath change"),tr("Console should be unlocked to modify it."),tr("OK")); } break; case 3: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.titlestxt_path, sizeof(entered)); int result = OnScreenKeyboard(entered,43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.titlestxt_path, entered, sizeof(Settings.titlestxt_path)); WindowPrompt(tr("Path of titles.txt changed."),0,tr("OK")); // if(isSdInserted()) { if(isInserted(bootDevice)) { cfg_save_global(); CFG_Load(); } else { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK")); } } } else { WindowPrompt(tr("Path of titles.txt change"),tr("Console should be unlocked to modify it."),tr("OK")); } break; case 4: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.update_path, sizeof(entered)); int result = OnScreenKeyboard(entered,43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.update_path, entered, sizeof(Settings.update_path)); WindowPrompt(tr("Updatepath changed."),0,tr("OK")); } } else WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK")); break; case 5: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.Cheatcodespath, sizeof(entered)); int result = OnScreenKeyboard(entered,43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.Cheatcodespath, entered, sizeof(Settings.Cheatcodespath)); WindowPrompt(tr("Cheatcodes Path changed"),0,tr("OK")); } } else WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK")); break; case 6: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.TxtCheatcodespath, sizeof(entered)); int result = OnScreenKeyboard(entered,43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.TxtCheatcodespath, entered, sizeof(Settings.TxtCheatcodespath)); WindowPrompt("TxtCheatcodespathchanged",0,tr("OK")); } } else WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK")); break; case 7: if ( Settings.godmode == 1) { w.Remove(&optionBrowser2); w.Remove(&backBtn); char entered[43] = ""; strncpy(entered, Settings.dolpath, sizeof(entered)); int result = OnScreenKeyboard(entered,43,0); w.Append(&optionBrowser2); w.Append(&backBtn); if ( result == 1 ) { int len = (strlen(entered)-1); if(entered[len] !='/') strncat (entered, "/", 1); strncpy(Settings.dolpath, entered, sizeof(Settings.dolpath)); WindowPrompt(tr("Dolpath Changed"),0,tr("OK")); // if(!isSdInserted()) { if(!isInserted(bootDevice)) { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK")); } } } else { WindowPrompt(tr("Dolpath change"),tr("Console should be unlocked to modify it."),tr("OK")); } break; } } /** If not godmode don't let him inside **/ } else { WindowPrompt(tr("Console Locked"), tr("Unlock console to use this option."), tr("OK")); } optionBrowser2.SetEffect(EFFECT_FADE, -20); while(optionBrowser2.GetEffect() > 0) usleep(50); titleTxt.SetText(tr("Settings")); slidedirection = FADE; pageToDisplay = 2; MainButton1.ResetState(); break; } if(MainButton2.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton2.GetEffect() > 0) usleep(50); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); // if(isSdInserted() && Settings.godmode) { if(isInserted(bootDevice) && Settings.godmode) { w.Remove(&optionBrowser2); w.Remove(&backBtn); int ret = ProgressUpdateWindow(); if(ret < 0) { WindowPrompt(tr("Update failed"),0,tr("OK")); } w.Append(&optionBrowser2); w.Append(&backBtn); } else { WindowPrompt(tr("Console Locked"), tr("Unlock console to use this option."), tr("OK")); } slidedirection = FADE; pageToDisplay = 2; MainButton2.ResetState(); break; } if(MainButton3.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton3.GetEffect() > 0) usleep(50); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); w.Remove(&backBtn); w.Remove(&optionBrowser2); if(Settings.godmode) { int choice = WindowPrompt(tr("Are you sure?"), 0, tr("Yes"), tr("Cancel")); if(choice == 1) { // if(isSdInserted()) if(isInserted(bootDevice)) { char GXGlobal_cfg[26]; sprintf(GXGlobal_cfg, "%s/config/GXGlobal.cfg", bootDevice); remove(GXGlobal_cfg); } gettextCleanUp(); //lang_default(); CFG_Load(); menu = MENU_SETTINGS; pageToDisplay = 0; } } else { WindowPrompt(tr("Console Locked"), tr("Unlock console to use this option."), tr("OK")); } w.Append(&backBtn); w.Append(&optionBrowser2); slidedirection = FADE; pageToDisplay = 2; MainButton3.ResetState(); break; } if(MainButton4.GetState() == STATE_CLICKED) { MainButton1.SetEffect(EFFECT_FADE, -20); MainButton2.SetEffect(EFFECT_FADE, -20); MainButton3.SetEffect(EFFECT_FADE, -20); MainButton4.SetEffect(EFFECT_FADE, -20); while(MainButton4.GetEffect() > 0) usleep(50); w.Remove(&PageIndicatorBtn1); w.Remove(&PageIndicatorBtn2); w.Remove(&GoRightBtn); w.Remove(&GoLeftBtn); w.Remove(&MainButton1); w.Remove(&MainButton2); w.Remove(&MainButton3); w.Remove(&MainButton4); WindowCredits(); slidedirection = FADE; pageToDisplay = 2; MainButton4.ResetState(); break; } } if(shutdown == 1) Sys_Shutdown(); if(reset == 1) Sys_Reboot(); if(backBtn.GetState() == STATE_CLICKED) { //Add the procedure call to save the global configuration // if(isSdInserted()) { if(isInserted(bootDevice)) { cfg_save_global(); } menu = MENU_DISCLIST; pageToDisplay = 0; break; } if(GoLeftBtn.GetState() == STATE_CLICKED) { pageToDisplay--; /** Change direction of the flying buttons **/ if(pageToDisplay < 1) pageToDisplay = 2; slidedirection = LEFT; GoLeftBtn.ResetState(); break; } if(GoRightBtn.GetState() == STATE_CLICKED) { pageToDisplay++; /** Change direction of the flying buttons **/ if(pageToDisplay > 2) pageToDisplay = 1; slidedirection = RIGHT; GoRightBtn.ResetState(); break; } if(PageIndicatorBtn1.GetState() == STATE_CLICKED) { if(pageToDisplay == 2) { slidedirection = LEFT; pageToDisplay = 1; PageIndicatorBtn1.ResetState(); break; } PageIndicatorBtn1.ResetState(); } else if(PageIndicatorBtn2.GetState() == STATE_CLICKED) { if(pageToDisplay == 1) { slidedirection = RIGHT; pageToDisplay = 2; PageIndicatorBtn2.ResetState(); break; } else PageIndicatorBtn2.ResetState(); } if(homo.GetState() == STATE_CLICKED) { cfg_save_global(); optionBrowser2.SetState(STATE_DISABLED); s32 thetimeofbg = bgMusic->GetPlayTime(); bgMusic->Stop(); choice = WindowExitPrompt(tr("Exit USB Loader GX?"),0, tr("Back to Loader"),tr("Wii Menu"),tr("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*(Settings.volume/100.0)); if(choice == 3) { Sys_LoadMenu(); // Back to System Menu } else if (choice == 2) { Sys_BackToLoader(); } else { homo.ResetState(); } optionBrowser2.SetState(STATE_DEFAULT); } } } w.SetEffect(EFFECT_FADE, -20); while(w.GetEffect()>0) usleep(50); // if language has changed, reload titles int opt_langnew = 0; opt_langnew = Settings.language; if (Settings.titlesOverride==1 && opt_lang != opt_langnew) { OpenXMLDatabase(Settings.titlestxt_path, Settings.db_language, Settings.db_JPtoEN, true, true, false); // open file, reload titles, do not keep in memory menu = MENU_DISCLIST; } 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(13); options3.SetName(0,"%s", tr("Video Mode")); options3.SetName(1,"%s", tr("VIDTV Patch")); options3.SetName(2,"%s", tr("Game Language")); options3.SetName(3, "Ocarina"); options3.SetName(4, "IOS"); options3.SetName(5,"%s", tr("Parental control")); options3.SetName(6,"%s", tr("Error 002 fix")); options3.SetName(7,"%s", tr("Patch Country Strings")); options3.SetName(8,"%s", tr("Alternate DOL")); options3.SetName(9,"%s", tr("DOL from disc")); options3.SetName(10,"%s", tr("Block IOS Reload")); options3.SetName(11,"%s", tr("Reset Playcounter")); options3.SetName(12,"%s", tr("Default Gamesettings")); GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, Settings.sfxvolume); GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, SOUND_PCM, Settings.sfxvolume); char imgPath[100]; snprintf(imgPath, sizeof(imgPath), "%socarina.png", CFG.theme_path); GuiImageData btnOcarina(imgPath, ocarina_png); 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(tr("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(tr("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(tr("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); GuiImage GCTBtnImg(&btnOcarina); if (Settings.wsprompt == yes){ GCTBtnImg.SetWidescreen(CFG.widescreen);} GuiButton GCTBtn(&GCTBtnImg,&GCTBtnImg, ALIGN_RIGHT, ALIGN_TOP, -20, 90, &trigA, &btnSoundOver, &btnClick,1); GCTBtn.SetSize(80,80); GCTBtnImg.SetScale(0.5); GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, CFG.theme_path, "bg_options_gamesettings.png", bg_options_settings_png, 1, 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); w.Append(&optionBrowser3); w.Append(&GCTBtn); mainWindow->Append(&w); 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; fix002 = game_cfg->errorfix002; countrystrings = game_cfg->patchcountrystrings; alternatedol = game_cfg->loadalternatedol; alternatedoloffset = game_cfg->alternatedolstart; reloadblock = game_cfg->iosreloadblock; strncpy(alternatedname, game_cfg->alternatedolname, sizeof(alternatedname)); } else { videoChoice = Settings.video; languageChoice = Settings.language; ocarinaChoice = Settings.ocarina; viChoice = Settings.vpatch; if(Settings.cios == ios222) { iosChoice = i222; } else { iosChoice = i249; } parentalcontrolChoice = 0; fix002 = Settings.error002; countrystrings = Settings.patchcountrystrings; alternatedol = off; alternatedoloffset = 0; reloadblock = off; sprintf(alternatedname, " "); } int opt_lang = languageChoice; // backup language setting ResumeGui(); while(!exit) { VIDEO_WaitVSync(); if (videoChoice == discdefault) options3.SetValue(0,"%s",tr("Disc Default")); else if (videoChoice == systemdefault) options3.SetValue(0,"%s",tr("System Default")); else if (videoChoice == patch) options3.SetValue(0,"%s",tr("AutoPatch")); else if (videoChoice == pal50) options3.SetValue(0,"%s PAL50",tr("Force")); else if (videoChoice == pal60) options3.SetValue(0,"%s PAL60",tr("Force")); else if (videoChoice == ntsc) options3.SetValue(0,"%s NTSC",tr("Force")); if (viChoice == on) options3.SetValue(1,"%s",tr("ON")); else if (viChoice == off) options3.SetValue(1,"%s",tr("OFF")); if (languageChoice == ConsoleLangDefault) options3.SetValue(2,"%s",tr("Console Default")); else if (languageChoice == jap) options3.SetValue(2,"%s",tr("Japanese")); else if (languageChoice == ger) options3.SetValue(2,"%s",tr("German")); else if (languageChoice == eng) options3.SetValue(2,"%s",tr("English")); else if (languageChoice == fren) options3.SetValue(2,"%s",tr("French")); else if (languageChoice == esp) options3.SetValue(2,"%s",tr("Spanish")); else if (languageChoice == it) options3.SetValue(2,"%s",tr("Italian")); else if (languageChoice == dut) options3.SetValue(2,"%s",tr("Dutch")); else if (languageChoice == schin) options3.SetValue(2,"%s",tr("SChinese")); else if (languageChoice == tchin) options3.SetValue(2,"%s",tr("TChinese")); else if (languageChoice == kor) options3.SetValue(2,"%s",tr("Korean")); if (ocarinaChoice == on) options3.SetValue(3,"%s",tr("ON")); else if (ocarinaChoice == off) options3.SetValue(3,"%s",tr("OFF")); if (iosChoice == i249) options3.SetValue(4,"249"); else if (iosChoice == i222) options3.SetValue(4,"222"); else if (iosChoice == i223) options3.SetValue(4,"223"); if (parentalcontrolChoice == 0) options3.SetValue(5, tr("0 (Everyone)")); else if (parentalcontrolChoice == 1) options3.SetValue(5, tr("1 (Child 7+)")); else if (parentalcontrolChoice == 2) options3.SetValue(5, tr("2 (Teen 12+)")); else if (parentalcontrolChoice == 3) options3.SetValue(5, tr("3 (Mature 16+)")); else if (parentalcontrolChoice == 4) options3.SetValue(5, tr("4 (Adults Only 18+)")); if (fix002 == on) options3.SetValue(6,tr("ON")); else if (fix002 == off) options3.SetValue(6,tr("OFF")); else if (fix002 == anti) options3.SetValue(6,tr("Anti")); if (countrystrings == on) options3.SetValue(7,tr("ON")); else if (countrystrings == off) options3.SetValue(7,tr("OFF")); if (alternatedol == on) options3.SetValue(8,tr("DOL from SD")); if (alternatedol == 2) options3.SetValue(8,tr("DOL from disc")); else if (alternatedol == off) options3.SetValue(8,tr("OFF")); if (alternatedol == on) options3.SetValue(9,tr("SD selected")); else if (alternatedol == off) options3.SetValue(9,tr("OFF")); else options3.SetValue(9, alternatedname); if (reloadblock == on) options3.SetValue(10,tr("ON")); else if (reloadblock == off) options3.SetValue(10,tr("OFF")); options3.SetValue(11, NULL); options3.SetValue(12, NULL); if(shutdown == 1) Sys_Shutdown(); if(reset == 1) Sys_Reboot(); 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) % 3; break; case 5: parentalcontrolChoice = (parentalcontrolChoice + 1) % 5; break; case 6: fix002 = (fix002+1) % 3; break; case 7: countrystrings = (countrystrings+1) % 2; break; case 8: alternatedol = (alternatedol+1) % 3; break; case 9: if(alternatedol == 2) { int res = DiscBrowse(header); if(res >= 0) alternatedoloffset = res; } break; case 10: reloadblock = (reloadblock+1) % 2; break; case 11: int result; result = WindowPrompt(tr("Are you sure?"),0,tr("Yes"),tr("Cancel")); if(result == 1) { if(isInserted(bootDevice)) { struct Game_NUM* game_num = CFG_get_game_num(header->id); if (game_num) { favoritevar = game_num->favorite; playcount = game_num->count; } else { favoritevar = 0; playcount = 0; } playcount = 0; CFG_save_game_num(header->id); } } break; case 12: int choice = WindowPrompt(tr("Are you sure?"),0,tr("Yes"),tr("Cancel")); if(choice == 1) { videoChoice = Settings.video; viChoice = Settings.vpatch; languageChoice = Settings.language; ocarinaChoice = Settings.ocarina; fix002 = Settings.error002; countrystrings = Settings.patchcountrystrings; alternatedol = off; alternatedoloffset = 0; reloadblock = off; if(Settings.cios == ios222) { iosChoice = i222; } else { iosChoice = i249; } parentalcontrolChoice = 0; sprintf(alternatedname, " "); CFG_forget_game_opt(header->id); // if default language is different than language from main settings, reload titles int opt_langnew = 0; opt_langnew = Settings.language; if (Settings.titlesOverride==1 && opt_lang != opt_langnew) OpenXMLDatabase(Settings.titlestxt_path, Settings.db_language, Settings.db_JPtoEN, true, true, false); // open file, reload titles, do not keep in memory // titles are refreshed in menu.cpp as soon as this function returns } break; } if(saveBtn.GetState() == STATE_CLICKED) { // if(isSdInserted()) { if(isInserted(bootDevice)) { if (CFG_save_game_opt(header->id)) { // if language has changed, reload titles int opt_langnew = 0; game_cfg = CFG_get_game_opt(header->id); if (game_cfg) opt_langnew = game_cfg->language; if (Settings.titlesOverride==1 && opt_lang != opt_langnew) OpenXMLDatabase(Settings.titlestxt_path, Settings.db_language, Settings.db_JPtoEN, true, true, false); // open file, reload titles, do not keep in memory // titles are refreshed in menu.cpp as soon as this function returns WindowPrompt(tr("Successfully Saved"), 0, tr("OK")); } else { WindowPrompt(tr("Save Failed"), 0, tr("OK")); } } else { WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK")); } saveBtn.ResetState(); optionBrowser3.SetFocus(1); } if (cancelBtn.GetState() == STATE_CLICKED) { exit = true; break; } if (deleteBtn.GetState() == STATE_CLICKED) { int choice = WindowPrompt( tr("Do you really want to delete:"), gameName, tr("Yes"),tr("Cancel")); if (choice == 1) { CFG_forget_game_opt(header->id); CFG_forget_game_num(header->id); ret = WBFS_RemoveGame(header->id); if (ret < 0) { WindowPrompt( tr("Can't delete:"), gameName, tr("OK")); } else { //__Menu_GetEntries(); WindowPrompt( tr("Successfully deleted:"), gameName, tr("OK")); retVal = 1; } break; } else if (choice == 0) { deleteBtn.ResetState(); optionBrowser3.SetFocus(1); } } if (GCTBtn.GetState() == STATE_CLICKED) { char ID[7]; snprintf (ID,sizeof(ID),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); CheatMenu(ID); } } HaltGui(); mainWindow->Remove(&w); ResumeGui(); return retVal; }