From dd1700db8ee9058f00f5e76e92d86ffe45e062f4 Mon Sep 17 00:00:00 2001 From: "lustar.mii" Date: Fri, 7 Aug 2009 16:10:54 +0000 Subject: [PATCH] Added sound after successful disc installation (823). Battery indicator turns red when power is down to 1/4 like on the original Wii menu (456). Fixed code dump when setting "standard" music (602). Updated gecko codes URL to geckocodes.org (834), enabled reading CRLF txt files from geckocodes.org. Enabled longer synopsis text so that existing game descriptions aren't cut on the game info page (but please keep them short, this is for descriptions, not reviews). --- gui.pnproj | 2 +- gui.pnps | 2 +- source/cheats/gct.cpp | 26 +++++++++++++++++++------ source/filelist.h | 6 ++++++ source/images/battery_bar_red.png | Bin 0 -> 138 bytes source/images/battery_red.png | Bin 138 -> 146 bytes source/menu.cpp | 27 +++++++++++++++++++------- source/prompts/PromptWindows.cpp | 29 +++++++++++++++++----------- source/prompts/gameinfo.cpp | 2 +- source/settings/SettingsPrompts.cpp | 3 ++- source/sounds/success.ogg | Bin 0 -> 27810 bytes source/xml/xml.h | 5 +++-- 12 files changed, 72 insertions(+), 30 deletions(-) create mode 100644 source/images/battery_bar_red.png create mode 100644 source/sounds/success.ogg diff --git a/gui.pnproj b/gui.pnproj index ce3d65fd..d2cb4a7f 100644 --- a/gui.pnproj +++ b/gui.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/gui.pnps b/gui.pnps index 8aa31c7a..328767aa 100644 --- a/gui.pnps +++ b/gui.pnps @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/cheats/gct.cpp b/source/cheats/gct.cpp index 7ac29f14..56dd210b 100644 --- a/source/cheats/gct.cpp +++ b/source/cheats/gct.cpp @@ -175,20 +175,34 @@ int GCTCheats::openTxtfile(const char * filename) { filestr.seekg(0,ios_base::beg); getline(filestr,sGameID); + if (sGameID[sGameID.length() - 1] == '\r') + sGameID.erase(sGameID.length() - 1); + getline(filestr,sGameTitle); - filestr.ignore(); + if (sGameTitle[sGameTitle.length() - 1] == '\r') + sGameTitle.erase(sGameTitle.length() - 1); + + //filestr.ignore(); + getline(filestr,sCheatName[i]); // skip first line if file uses CRLF + if (!sGameTitle[sGameTitle.length() - 1] == '\r') + filestr.seekg(0,ios_base::beg); while (!filestr.eof()) { - getline(filestr,sCheatName[i]); + + getline(filestr,sCheatName[i]); // '\n' delimiter by default + if (sCheatName[i][sCheatName[i].length() - 1] == '\r') + sCheatName[i].erase(sCheatName[i].length() - 1); + string cheatdata; bool emptyline = false; bool isComment = false; do { - getline(filestr,str,'\n'); - //cheatdata.append(str); - - if (str == "") { + getline(filestr,str); + if (str[str.length() - 1] == '\r') + str.erase(str.length() - 1); + + if (str == "" || str[0] == '\r' || str[0] == '\n') { emptyline = true; break; } diff --git a/source/filelist.h b/source/filelist.h index 38da34d1..93e9ec60 100644 --- a/source/filelist.h +++ b/source/filelist.h @@ -62,6 +62,9 @@ extern const u32 menuin_ogg_size; extern const u8 menuout_ogg[]; extern const u32 menuout_ogg_size; +extern const u8 success_ogg[]; +extern const u32 success_ogg_size; + extern const u8 credits_button_png[]; extern const u32 credits_button_png_size; @@ -269,6 +272,9 @@ extern const u32 battery_bar_white_png_size; extern const u8 battery_red_png[]; extern const u32 battery_red_png_size; +extern const u8 battery_bar_red_png[]; +extern const u32 battery_bar_red_png_size; + extern const u8 arrow_next_png[]; extern const u32 arrow_next_png_size; diff --git a/source/images/battery_bar_red.png b/source/images/battery_bar_red.png new file mode 100644 index 0000000000000000000000000000000000000000..bc09b4c307cd341e81a8f00e8a8524a66b11c6b7 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<jv*Ddk`pAj9?V+w%uL~* z{ed4^cI^M;d1fqNX4m+p!@iYy<4yh)ZXPf8M?LQX+54;tt~4&@lPP_$g4uJ`tG2x4 mL<95f^Z1z9@1;w0F)$Pb-BLe(JAOaVa0X9TKbLh*2~7a~y)C)` literal 0 HcmV?d00001 diff --git a/source/images/battery_red.png b/source/images/battery_red.png index bc09b4c307cd341e81a8f00e8a8524a66b11c6b7..458b7364a217ae9234559daba53c1e612ea98264 100644 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^96-#&!3HGb=lz)rq}WS5eO=jaaD|)&(hE&{2PEcTwa6Dq_diMVd op{Vcco1f0$m}#)8!GnRJb{31sjU8T7fQlJBUHx3vIVCg!0N)}g(f|Me literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<jv*Ddk`pAj9?V+w%uL~* z{ed4^cI^M;d1fqNX4m+p!@iYy<4yh)ZXPf8M?LQX+54;tt~4&@lPP_$g4uJ`tG2x4 mL<95f^Z1z9@1;w0F)$Pb-BLe(JAOaVa0X9TKbLh*2~7a~y)C)` diff --git a/source/menu.cpp b/source/menu.cpp index 70686736..bc621811 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -323,10 +323,12 @@ int MenuDiscList() { 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); + snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path); + GuiImageData batteryRed(imgPath, battery_red_png); + snprintf(imgPath, sizeof(imgPath), "%sbattery_bar_red.png", CFG.theme_path); + GuiImageData batteryBarRed(imgPath, battery_bar_red_png); snprintf(imgPath, sizeof(imgPath), "%sfavIcon.png", CFG.theme_path); GuiImageData imgfavIcon(imgPath, favIcon_png); @@ -1364,11 +1366,13 @@ static int MenuInstall() { 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); + snprintf(imgPath, sizeof(imgPath), "%sbattery_bar.png", CFG.theme_path); GuiImageData batteryBar(imgPath, battery_bar_png); - + snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path); + GuiImageData batteryRed(imgPath, battery_red_png); + snprintf(imgPath, sizeof(imgPath), "%sbattery_bar_red.png", CFG.theme_path); + GuiImageData batteryBarRed(imgPath, battery_bar_red_png); + HaltGui(); GuiWindow w(screenwidth, screenheight); @@ -1449,7 +1453,14 @@ static int MenuInstall() { break; } else { __Menu_GetEntries(); //get the entries again + GuiSound * instsuccess = NULL; + instsuccess = new GuiSound(success_ogg, success_ogg_size, SOUND_OGG, Settings.sfxvolume); + instsuccess->SetVolume(Settings.sfxvolume); + instsuccess->SetLoop(0); + instsuccess->Play(); WindowPrompt (tr("Successfully installed:"),name,tr("OK")); + instsuccess->Stop(); + delete instsuccess; menu = MENU_DISCLIST; break; } @@ -1529,8 +1540,10 @@ static int MenuFormat() { snprintf(imgPath, sizeof(imgPath), "%smenu_button_over.png", CFG.theme_path); GuiImageData btnhomeOver(imgPath, menu_button_over_png); GuiImageData battery(battery_png); - GuiImageData batteryRed(battery_red_png); GuiImageData batteryBar(battery_bar_png); + GuiImageData batteryRed(battery_red_png); + GuiImageData batteryBarRed(battery_bar_red_png); + GuiTrigger trigA; trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A); diff --git a/source/prompts/PromptWindows.cpp b/source/prompts/PromptWindows.cpp index c35d89d4..4d59533b 100644 --- a/source/prompts/PromptWindows.cpp +++ b/source/prompts/PromptWindows.cpp @@ -710,10 +710,13 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label, 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); + snprintf(imgPath, sizeof(imgPath), "%sbattery_bar_white.png", CFG.theme_path); GuiImageData batteryBar(imgPath, battery_bar_white_png); + snprintf(imgPath, sizeof(imgPath), "%sbattery_red.png", CFG.theme_path); + GuiImageData batteryRed(imgPath, battery_red_png); + snprintf(imgPath, sizeof(imgPath), "%sbattery_bar_red.png", CFG.theme_path); + GuiImageData batteryBarRed(imgPath, battery_bar_red_png); + #ifdef HW_RVL int i = 0, ret = 0, level; @@ -871,12 +874,15 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label, 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 + + if (level <= 1) { + batteryBarImg[i]->SetImage(&batteryBarRed); + batteryImg[i]->SetImage(&batteryRed); + } else { batteryBarImg[i]->SetImage(&batteryBar); + } + + batteryImg[i]->SetTile(level); batteryBtn[i]->SetAlpha(255); } else { // controller not connected @@ -3022,11 +3028,11 @@ int CodeDownload(const char *id) { snprintf(txtpath, sizeof(txtpath), "%s%s.txt", Settings.TxtCheatcodespath,id); char codeurl[150]; - snprintf(codeurl, sizeof(codeurl), "http://usbgecko.com/codes/codes/R/%s.txt",id); + snprintf(codeurl, sizeof(codeurl), "http://geckocodes.org/codes/R/%s.txt",id); struct block file = downloadfile(codeurl); - if (file.size == 333) { + if (file.size == 333 || file.size == 216 || file.size == 284) { strcat(codeurl, tr(" is not on the server.")); WindowPrompt(tr("Error"),codeurl,tr("Ok")); @@ -3034,7 +3040,8 @@ int CodeDownload(const char *id) { goto exit; } - if (file.data != NULL) { + if (file.data != NULL) { + FILE * pfile; pfile = fopen(txtpath, "wb"); fwrite(file.data,1,file.size,pfile); diff --git a/source/prompts/gameinfo.cpp b/source/prompts/gameinfo.cpp index 2fe20e09..f03e235c 100644 --- a/source/prompts/gameinfo.cpp +++ b/source/prompts/gameinfo.cpp @@ -204,7 +204,7 @@ int showGameInfo(char *ID) { urlBtn.SetTrigger(&trig1); gameinfoWindow.Append(&urlBtn); - char linebuf[3000] = ""; + char linebuf[XML_SYNOPSISLEN] = ""; char linebuf2[100] = ""; // enable icons for required accessories diff --git a/source/settings/SettingsPrompts.cpp b/source/settings/SettingsPrompts.cpp index 63ff4b51..cf9716d9 100644 --- a/source/settings/SettingsPrompts.cpp +++ b/source/settings/SettingsPrompts.cpp @@ -206,7 +206,8 @@ bool MenuOGG() { cfg_save_global(); } defaultBtn.ResetState(); - optionBrowser4.SetFocus(1); + if (countoggs > 0) + optionBrowser4.SetFocus(1); } if (pathBtn.GetState() == STATE_CLICKED) { diff --git a/source/sounds/success.ogg b/source/sounds/success.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bb3821e52ada58b26a7b33c8ff7952a476ab0a7e GIT binary patch literal 27810 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%0A?cO!juZgqId^^-IXAA{Q_}g;uyx` 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 literal 0 HcmV?d00001 diff --git a/source/xml/xml.h b/source/xml/xml.h index 1c9d275f..c235c7ce 100644 --- a/source/xml/xml.h +++ b/source/xml/xml.h @@ -15,15 +15,16 @@ extern "C" { bool LoadGameInfoFromXML(char* gameid, char* langcode); #define XML_ELEMMAX 15 +#define XML_SYNOPSISLEN 4000 struct gameXMLinfo { char id[7]; char version[50]; char region[7]; char title[200]; - char synopsis[3000]; + char synopsis[XML_SYNOPSISLEN]; char title_EN[200]; - char synopsis_EN[3000]; + char synopsis_EN[XML_SYNOPSISLEN]; char locales[XML_ELEMMAX+1][5]; int localeCnt; char developer[75];