diff --git a/gui.pnproj b/gui.pnproj
index 524278b7..0ca2944a 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/Settings.cpp b/source/Settings.cpp
index 85c648e8..fd169282 100644
--- a/source/Settings.cpp
+++ b/source/Settings.cpp
@@ -13,6 +13,8 @@
#include "getentries.h"
#include "SettingsPrompts.h"
+#define MAXOPTIONS 11
+
/*** Extern functions ***/
extern void ResumeGui();
extern void HaltGui();
@@ -225,7 +227,7 @@ int MenuSettings()
MainButton4.SetEffectGrow();
MainButton4.SetTrigger(&trigA);
- customOptionList options2(10);
+ 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);
@@ -461,6 +463,7 @@ int MenuSettings()
w.Remove(&MainButton4);
titleTxt.SetText(LANGUAGE.GUISettings);
exit = false;
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
options2.SetName(0, "%s",LANGUAGE.AppLanguage);
options2.SetName(1, "%s",LANGUAGE.Display);
options2.SetName(2, "%s",LANGUAGE.Clock);
@@ -471,7 +474,8 @@ int MenuSettings()
options2.SetName(7, "%s",LANGUAGE.Wiilight);
options2.SetName(8, "%s",LANGUAGE.Rumble);
options2.SetName(9, "%s",LANGUAGE.Unicodefix);
- for(int i = 0; i < 10; i++) options2.SetValue(i, NULL);
+ options2.SetName(10, "%s",LANGUAGE.XMLTitles);
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
optionBrowser2.SetScrollbar(1);
w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true);
@@ -509,7 +513,8 @@ int MenuSettings()
Settings.rumble = 0; //RUMBLE
if ( Settings.unicodefix > 2 )
Settings.unicodefix = 0;
-
+ if(Settings.titlesOverride >= 2)
+ Settings.titlesOverride = 0;
if(!strcmp("notset", Settings.language_path))
options2.SetValue(0, "%s", LANGUAGE.Default);
else
@@ -552,11 +557,14 @@ int MenuSettings()
else if (Settings.unicodefix == 1) options2.SetValue(9,"%s",LANGUAGE.TChinese);
else if (Settings.unicodefix == 2) options2.SetValue(9,"%s",LANGUAGE.SChinese);
- if(backBtn.GetState() == STATE_CLICKED)
+ if (Settings.titlesOverride == 0) options2.SetValue(10,"%s",LANGUAGE.OFF);
+ else if (Settings.titlesOverride == 1) options2.SetValue(10,"%s",LANGUAGE.ON);
+
+ if(backBtn.GetState() == STATE_CLICKED)
{
backBtn.ResetState();
exit = true;
- break;
+ break;
}
if(shutdown == 1)
@@ -657,6 +665,16 @@ int MenuSettings()
case 9:
Settings.unicodefix++;
break;
+ case 10:
+ //HaltGui(); this isn't done on the fly yet. you have to restart the loader for it to take effect
+ Settings.titlesOverride++;
+ //if(isInserted(bootDevice)) {
+ //cfg_save_global();
+ //}
+ //CFG_Load();
+ //__Menu_GetEntries();
+ //ResumeGui();
+ break;
}
}
optionBrowser2.SetEffect(EFFECT_FADE, -20);
@@ -686,6 +704,7 @@ int MenuSettings()
w.Remove(&MainButton4);
titleTxt.SetText(LANGUAGE.Gameload);
exit = false;
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
options2.SetName(0, "%s",LANGUAGE.VideoMode);
options2.SetName(1, "%s",LANGUAGE.VIDTVPatch);
options2.SetName(2, "%s",LANGUAGE.Language);
@@ -693,10 +712,7 @@ int MenuSettings()
options2.SetName(4, "Ocarina");
options2.SetName(5,"%s", LANGUAGE.BootStandard);
options2.SetName(6, "%s",LANGUAGE.QuickBoot);
- options2.SetName(7, NULL);
- options2.SetName(8, NULL);
- options2.SetName(9, NULL);
- for(int i = 0; i < 10; i++) options2.SetValue(i, NULL);
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true);
ResumeGui();
@@ -849,17 +865,11 @@ int MenuSettings()
w.Remove(&MainButton4);
titleTxt.SetText(LANGUAGE.Parentalcontrol);
exit = false;
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
options2.SetName(0, "Console");
options2.SetName(1, "%s", LANGUAGE.Password);
options2.SetName(2, "%s",LANGUAGE.Controllevel);
- options2.SetName(3, NULL);
- options2.SetName(4, NULL);
- options2.SetName(5, NULL);
- options2.SetName(6, NULL);
- options2.SetName(7, NULL);
- options2.SetName(8, NULL);
- options2.SetName(9, NULL);
- for(int i = 0; i < 10; i++) options2.SetValue(i, NULL);
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true);
ResumeGui();
@@ -1016,17 +1026,11 @@ int MenuSettings()
w.Remove(&MainButton4);
titleTxt.SetText(LANGUAGE.Sound);
exit = false;
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
options2.SetName(0, "%s",LANGUAGE.Backgroundmusic);
options2.SetName(1, "%s",LANGUAGE.Volume);
options2.SetName(2, "%s",LANGUAGE.SFXVolume);
- options2.SetName(3, NULL);
- options2.SetName(4, NULL);
- options2.SetName(5, NULL);
- options2.SetName(6, NULL);
- options2.SetName(7, NULL);
- options2.SetName(8, NULL);
- options2.SetName(9, NULL);
- for(int i = 0; i < 10; i++) options2.SetValue(i, NULL);
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true);
ResumeGui();
@@ -1164,6 +1168,7 @@ int MenuSettings()
w.Remove(&MainButton4);
titleTxt.SetText(LANGUAGE.Custompaths);
exit = false;
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
if(Settings.godmode)
options2.SetName(0, "%s", LANGUAGE.CoverPath);
options2.SetName(1, "%s", LANGUAGE.DiscimagePath);
@@ -1171,11 +1176,7 @@ int MenuSettings()
options2.SetName(3, "%s", LANGUAGE.Titlestxtpath);
options2.SetName(4, "%s", LANGUAGE.Updatepath);
options2.SetName(5, "%s", LANGUAGE.Cheatcodespath);
- options2.SetName(6, NULL);
- options2.SetName(7, NULL);
- options2.SetName(8, NULL);
- options2.SetName(9, NULL);
- for(int i = 0; i < 10; i++) options2.SetValue(i, NULL);
+ for(int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true);
ResumeGui();
diff --git a/source/cfg.c b/source/cfg.c
index f3f88505..59f6c6a6 100644
--- a/source/cfg.c
+++ b/source/cfg.c
@@ -355,6 +355,7 @@ void Global_Default(void)
Settings.unicodefix = 0;
Settings.wiilight = 1;
Settings.patchcountrystrings = 0;
+ Settings.titlesOverride = 0;
}
@@ -980,6 +981,13 @@ void global_cfg_set(char *name, char *val)
}
return;
}
+ else if (strcmp(name, "titlesOverride") == 0) {
+ int i;
+ if (sscanf(val, "%d", &i) == 1) {
+ Settings.titlesOverride = i;
+ }
+ return;
+ }
else if (strcmp(name, "gameDisplay") == 0) {
int i;
if (sscanf(val, "%d", &i) == 1) {
@@ -1216,6 +1224,7 @@ bool cfg_save_global()// save global settings
fprintf(f, "gameDisplay = %d\n ", Settings.gameDisplay);
fprintf(f, "update_path = %s\n ", Settings.update_path);
fprintf(f, "Cheatcodespath = %s\n ", Settings.Cheatcodespath);
+ fprintf(f, "titlesOverride = %d\n ", Settings.titlesOverride);
fprintf(f, "patchcountrystrings = %d\n ", Settings.patchcountrystrings);
fclose(f);
return true;
@@ -1492,6 +1501,7 @@ bool cfg_load_global()
}
Settings.volume = 80;
Settings.sfxvolume = 80;
+ Settings.titlesOverride = 0;
return cfg_parsefile(GXGlobal_cfg, &global_cfg_set);
}
@@ -1551,6 +1561,16 @@ bool CFG_forget_game_opt(u8 *id)
return cfg_save_games();
}
+void CFG_LoadXml()
+{
+ char pathname[200];
+ /* load renamed titles from proper names and game info XML, needs to be after cfg_load_games - Lustar */
+ snprintf(pathname, sizeof(pathname), "%s%s", Settings.titlestxt_path, "wiitdb.xml");
+ OpenXMLFile(pathname);
+ LoadTitlesFromXML("English", false); // options can be added to set force title language to any language and force Japanese title to English
+
+ }
+
void CFG_Load(void)
{
char pathname[200];
@@ -1582,11 +1602,8 @@ void CFG_Load(void)
cfg_load_games();
cfg_load_game_num();
- /* load renamed titles from proper names and game info XML, needs to be after cfg_load_games - Lustar */
- //snprintf(pathname, sizeof(pathname), "%s%s", Settings.titlestxt_path, "wiitdb.zip");
- //OpenXMLFile(pathname);
- //LoadTitlesFromXML("English", false); // options can be added to set force title language to any language and force Japanese title to English
-
+ if (Settings.titlesOverride==1)CFG_LoadXml();
+
Global_Default(); //global default depends on theme information
CFG_LoadGlobal();
diff --git a/source/cfg.h b/source/cfg.h
index 41fa5ff4..11356506 100644
--- a/source/cfg.h
+++ b/source/cfg.h
@@ -329,10 +329,12 @@ struct SSettings {
char ogg_path[150];
char update_path[150];
char Cheatcodespath[100];
+ int titlesOverride;
};
void CFG_LoadGlobal(void);
bool cfg_save_global(void);
+void CFG_LoadXml();
//Astidof - End of modification
char *get_title(struct discHdr *header);
diff --git a/source/gameinfo.cpp b/source/gameinfo.cpp
index 0840ebe4..51075be3 100644
--- a/source/gameinfo.cpp
+++ b/source/gameinfo.cpp
@@ -20,61 +20,6 @@
#include "xml.h"
-GuiText * debugTxt = NULL;
-
-int cnt;
-GuiImageData * playersImgData = NULL;
-GuiImage * playersImg = NULL;
-
-GuiImageData * wifiplayersImgData = NULL;
-GuiImage * wifiplayersImg = NULL;
-GuiImage * ratingImg = NULL;
-
-GuiImage * classiccontrollerImg;
-GuiImage * nunchuckImg;
-GuiImage * guitarImg;
-GuiImage * drumsImg;
-GuiImage * dancepadImg;
-GuiImage * motionplusImg;
-GuiImage * wheelImg;
-GuiImage * balanceboardImg;
-GuiImage * microphoneImg;
-GuiImage * gcImg;
-GuiImage * dialogBoxImg1;
-GuiImage * dialogBoxImg2;
-GuiImage * dialogBoxImg3;
-GuiImage * dialogBoxImg4;
-GuiImage * dialogBoxImg11;
-GuiImage * dialogBoxImg22;
-GuiImage * dialogBoxImg33;
-GuiImage * dialogBoxImg44;
-GuiImage * coverImg;
-GuiImage * coverImg2;
-
-GuiImageData * classiccontrollerImgData = NULL;
-GuiImageData * nunchuckImgData = NULL;
-GuiImageData * guitarImgData = NULL;
-GuiImageData * drumsImgData = NULL;
-GuiImageData * motionplusImgData = NULL;
-GuiImageData * wheelImgData = NULL;
-GuiImageData * balanceboardImgData = NULL;
-GuiImageData * dancepadImgData = NULL;
-GuiImageData * microphoneImgData = NULL;
-GuiImageData * gamecubeImgData = NULL;
-GuiImageData * ratingImgData = NULL;
-GuiImageData * cover = NULL;
-
-GuiText * releasedTxt = NULL;
-GuiText * publisherTxt = NULL;
-GuiText * developerTxt = NULL;
-GuiText * titleTxt = NULL;
-GuiText * synopsisTxt = NULL;
-GuiText * genreTxt = NULL;
-GuiText * betaTxt = NULL;
-GuiText * beta1Txt = NULL;
-GuiText ** wifiTxt = NULL;
-
-
/*** Extern variables ***/
extern GuiWindow * mainWindow;
extern GuiSound * bgMusic;
@@ -85,61 +30,6 @@ extern u8 reset;
extern void ResumeGui();
extern void HaltGui();
-void eatADick()
-{
-// use this to display variables on the window GuiText * debugTxt = NULL;
-
-playersImgData = NULL;
-playersImg = NULL;
-
-wifiplayersImgData = NULL;
-wifiplayersImg = NULL;
-ratingImg = NULL;
-
-classiccontrollerImg = NULL;
-nunchuckImg = NULL;
-guitarImg = NULL;
-drumsImg = NULL;
-dancepadImg = NULL;
-motionplusImg = NULL;
-wheelImg = NULL;
-balanceboardImg = NULL;
-microphoneImg = NULL;
-gcImg = NULL;
-dialogBoxImg1 = NULL;
-dialogBoxImg2 = NULL;
-dialogBoxImg3 = NULL;
-dialogBoxImg4 = NULL;
-dialogBoxImg11 = NULL;
-dialogBoxImg22 = NULL;
-dialogBoxImg33 = NULL;
-dialogBoxImg44 = NULL;
-coverImg = NULL;
-coverImg2 = NULL;
-
-classiccontrollerImgData = NULL;
-nunchuckImgData = NULL;
-guitarImgData = NULL;
-drumsImgData = NULL;
-motionplusImgData = NULL;
-wheelImgData = NULL;
-balanceboardImgData = NULL;
-dancepadImgData = NULL;
-microphoneImgData = NULL;
-gamecubeImgData = NULL;
-ratingImgData = NULL;
-cover = NULL;
-
-releasedTxt = NULL;
-publisherTxt = NULL;
-developerTxt = NULL;
-titleTxt = NULL;
-synopsisTxt = NULL;
-genreTxt = NULL;
-betaTxt = NULL;
-beta1Txt = NULL;
-}
-
/****************************************************************************
* gameinfo
@@ -147,6 +37,19 @@ beta1Txt = NULL;
int
showGameInfo(char *ID, u8 *headerID)
{
+ u8 nodata=1;
+ //load the xml shit
+ char pathname[100];
+ snprintf(pathname, sizeof(pathname), "%s%s", Settings.titlestxt_path, "wiitdb.zip");
+ bool fileexists = OpenXMLFile(pathname);
+ if(!fileexists) {
+ snprintf(pathname, sizeof(pathname), "%s%s", Settings.titlestxt_path, "wiitdb.xml");
+ fileexists = OpenXMLFile(pathname);
+ }
+ if(fileexists) {
+ snprintf(pathname, sizeof(pathname), "English");
+ if (Settings.titlesOverride==1)LoadTitlesFromXML(pathname, false); // options can be added to set force title language to any language and force Japanese title to English
+
int choice = -1;
//int i = 0;
int y = 0, y1 = 32;
@@ -164,6 +67,58 @@ showGameInfo(char *ID, u8 *headerID)
int newline=1;
u8 page =1;
+ // GuiText * debugTxt = NULL;
+
+ GuiImageData * playersImgData = NULL;
+ GuiImage * playersImg = NULL;
+
+ GuiImageData * wifiplayersImgData = NULL;
+ GuiImage * wifiplayersImg = NULL;
+ GuiImage * ratingImg = NULL;
+
+ GuiImage * classiccontrollerImg = NULL;
+ GuiImage * nunchuckImg = NULL;
+ GuiImage * guitarImg = NULL;
+ GuiImage * drumsImg = NULL;
+ GuiImage * dancepadImg = NULL;
+ GuiImage * motionplusImg = NULL;
+ GuiImage * wheelImg = NULL;
+ GuiImage * balanceboardImg = NULL;
+ GuiImage * microphoneImg = NULL;
+ GuiImage * gcImg = NULL;
+ GuiImage * dialogBoxImg1 = NULL;
+ GuiImage * dialogBoxImg2 = NULL;
+ GuiImage * dialogBoxImg3 = NULL;
+ GuiImage * dialogBoxImg4 = NULL;
+ GuiImage * dialogBoxImg11 = NULL;
+ GuiImage * dialogBoxImg22 = NULL;
+ GuiImage * dialogBoxImg33 = NULL;
+ GuiImage * dialogBoxImg44 = NULL;
+ GuiImage * coverImg = NULL;
+ GuiImage * coverImg2 = NULL;
+
+ GuiImageData * classiccontrollerImgData = NULL;
+ GuiImageData * nunchuckImgData = NULL;
+ GuiImageData * guitarImgData = NULL;
+ GuiImageData * drumsImgData = NULL;
+ GuiImageData * motionplusImgData = NULL;
+ GuiImageData * wheelImgData = NULL;
+ GuiImageData * balanceboardImgData = NULL;
+ GuiImageData * dancepadImgData = NULL;
+ GuiImageData * microphoneImgData = NULL;
+ GuiImageData * gamecubeImgData = NULL;
+ GuiImageData * ratingImgData = NULL;
+ GuiImageData * cover = NULL;
+
+ GuiText * releasedTxt = NULL;
+ GuiText * publisherTxt = NULL;
+ GuiText * developerTxt = NULL;
+ GuiText * titleTxt = NULL;
+ GuiText * synopsisTxt = NULL;
+ GuiText * genreTxt = NULL;
+ GuiText * betaTxt = NULL;
+ GuiText * beta1Txt = NULL;
+
GuiWindow gameinfoWindow(600,308);
gameinfoWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
gameinfoWindow.SetPosition(0, -50);
@@ -190,31 +145,23 @@ showGameInfo(char *ID, u8 *headerID)
GuiImageData dialogBox3(imgPath, gameinfo2_png);
snprintf(imgPath, sizeof(imgPath), "%sgameinfo2a_png.png", CFG.theme_path);
GuiImageData dialogBox4(imgPath, gameinfo2a_png);
-
+
GuiTrigger trigA;
trigA.SetButtonOnlyTrigger(-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);
-
+
GuiButton backBtn(0,0);
backBtn.SetPosition(-20,-20);
backBtn.SetTrigger(&trigB);
gameinfoWindow.Append(&backBtn);
-
+
GuiButton nextBtn(0,0);
nextBtn.SetPosition(20,20);
nextBtn.SetTrigger(&trigA);
gameinfoWindow.Append(&nextBtn);
-
- //load the xml shit
- char pathname[100];
- snprintf(pathname, sizeof(pathname), "%s%s", Settings.titlestxt_path, "wiitdb.zip");
- OpenXMLFile(pathname);
- snprintf(pathname, sizeof(pathname), "English");
- LoadTitlesFromXML(pathname, false); // options can be added to set force title language to any language and force Japanese title to English
-
/*struct Game_CFG *game_cfg = NULL;
int opt_lang;
char langtexttmp[11][22] =
@@ -235,95 +182,95 @@ showGameInfo(char *ID, u8 *headerID)
} else {
opt_lang = Settings.language;
}*/
- LoadGameInfoFromXML(ID,pathname);
+ if (LoadGameInfoFromXML(ID,pathname))nodata=0;
//LoadGameInfoFromXML(ID,langtexttmp[opt_lang]);
char linebuf[1000] = "";
char linebuf2[100] = "";
-
+
// set images for required input
for (int i=0;strcmp(gameinfo.accessories_required[i+1],"") != 0;i++)
{
if (strcmp(gameinfo.accessories_required[i+1],"nunchuk")==0)
{nunchuckImgData = new GuiImageData(nunchuckR_png);nunchuk=1;}
- else
+ else
nunchuckImgData = new GuiImageData(nunchuck_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"classiccontroller")==0)
{classiccontrollerImgData = new GuiImageData(classiccontrollerR_png);classiccontroller=1;}
- else
+ else
classiccontrollerImgData = new GuiImageData(classiccontroller_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"guitar")==0)
{guitarImgData = new GuiImageData(guitarR_png);guitar=1;}
- else
+ else
guitarImgData = new GuiImageData(guitar_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"gamecube")==0)
{gamecubeImgData = new GuiImageData(gcncontrollerR_png);gamecube=1;}
- else
+ else
gamecubeImgData = new GuiImageData(gcncontroller_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"wheel")==0)
{wheelImgData = new GuiImageData(wheelR_png);wheel=1;}
- else
+ else
wheelImgData = new GuiImageData(wheel_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"motionplus")==0)
{motionplusImgData = new GuiImageData(motionplusR_png);motionplus=1;}
- else
+ else
motionplusImgData = new GuiImageData(motionplus_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"drums")==0)
{drumsImgData = new GuiImageData(drumsR_png);drums=1;}
- else
+ else
drumsImgData = new GuiImageData(drums_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"microphone")==0)
{microphoneImgData = new GuiImageData(microphoneR_png);microphone=1;}
- else
+ else
microphoneImgData = new GuiImageData(microphone_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"balanceboard")==0)
{balanceboardImgData = new GuiImageData(balanceboardR_png);balanceboard=1;}
- else
+ else
balanceboardImgData = new GuiImageData(balanceboard_png);
-
+
if (strcmp(gameinfo.accessories_required[i+1],"dancepad")==0)
{dancepadImgData = new GuiImageData(dancepadR_png);dancepad=1;}
- else
+ else
dancepadImgData = new GuiImageData(dancepad_png);
-
+
}
for (int i=0;strcmp(gameinfo.accessories[i+1],"") != 0;i++)
{
-
+
if (strcmp(gameinfo.accessories_required[i],"classiccontroller")==0)
classiccontroller=1;
-
+
if (strcmp(gameinfo.accessories[i+1],"nunchuk")==0)
{nunchuk=1;}
-
+
if (strcmp(gameinfo.accessories[i+1],"guitar")==0)
guitar=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"drums")==0)
drums=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"dancepad")==0)
dancepad=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"motionplus")==0)
motionplus=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"wheel")==0)
wheel=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"balanceboard")==0)
balanceboard=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"microphone")==0)
microphone=1;
-
+
if (strcmp(gameinfo.accessories_required[i],"gamecube")==0)
gamecube=1;
}
@@ -334,20 +281,20 @@ showGameInfo(char *ID, u8 *headerID)
dialogBoxImg1 = new GuiImage(&dialogBox1);
dialogBoxImg1->SetAlignment(0,3);
dialogBoxImg1->SetPosition(-9,0);
-
+
dialogBoxImg2 = new GuiImage(&dialogBox2);
dialogBoxImg2->SetAlignment(0,3);
dialogBoxImg2->SetPosition(145,0);
-
+
dialogBoxImg3 = new GuiImage(&dialogBox3);
dialogBoxImg3->SetAlignment(0,3);
dialogBoxImg3->SetPosition(301,0);
-
+
dialogBoxImg4 = new GuiImage(&dialogBox4);
dialogBoxImg4->SetAlignment(0,3);
dialogBoxImg4->SetPosition(457,0);
-
+
gameinfoWindow.Append(dialogBoxImg1);
gameinfoWindow.Append(dialogBoxImg2);
gameinfoWindow.Append(dialogBoxImg3);
@@ -368,7 +315,7 @@ showGameInfo(char *ID, u8 *headerID)
coverImg->SetWidescreen(CFG.widescreen);
coverImg->SetPosition(15,30);
gameinfoWindow.Append(coverImg);
-
+
// # of players
if (strcmp(gameinfo.players,"") != 0) {
playersImgData = new GuiImageData(Wiimote1_png);
@@ -376,7 +323,7 @@ showGameInfo(char *ID, u8 *headerID)
playersImgData= new GuiImageData(Wiimote2_png);}
if (atoi(gameinfo.players)>2){
playersImgData= new GuiImageData(Wiimote4_png);}
-
+
playersImg = new GuiImage(playersImgData);
playersImg->SetWidescreen(CFG.widescreen);
playersImg->SetPosition(intputX , inputY);
@@ -384,7 +331,7 @@ showGameInfo(char *ID, u8 *headerID)
gameinfoWindow.Append(playersImg);
intputX += (CFG.widescreen ? playersImg->GetWidth() * .8 : playersImg->GetWidth())+5;
}
-
+
//draw the inupt types for this game
if (nunchuk==1){
nunchuckImg = new GuiImage(nunchuckImgData);
@@ -393,7 +340,7 @@ showGameInfo(char *ID, u8 *headerID)
nunchuckImg->SetAlignment(0,4);
gameinfoWindow.Append(nunchuckImg);
intputX += (CFG.widescreen ? nunchuckImg->GetWidth() * .8 : nunchuckImg->GetWidth())+5;}
-
+
if (classiccontroller==1){
classiccontrollerImg = new GuiImage(classiccontrollerImgData);
classiccontrollerImg->SetWidescreen(CFG.widescreen);
@@ -401,7 +348,7 @@ showGameInfo(char *ID, u8 *headerID)
classiccontrollerImg->SetAlignment(0,4);
gameinfoWindow.Append(classiccontrollerImg);
intputX += (CFG.widescreen ? classiccontrollerImg->GetWidth() * .8 : classiccontrollerImg->GetWidth())+5;}
-
+
if (gamecube==1){
gcImg = new GuiImage(gamecubeImgData);
gcImg->SetWidescreen(CFG.widescreen);
@@ -409,7 +356,7 @@ showGameInfo(char *ID, u8 *headerID)
gcImg->SetAlignment(0,4);
gameinfoWindow.Append(gcImg);
intputX += (CFG.widescreen ? gcImg->GetWidth() * .8 : gcImg->GetWidth())+5;}
-
+
if (wheel==1){
wheelImg = new GuiImage(wheelImgData);
wheelImg->SetWidescreen(CFG.widescreen);
@@ -417,7 +364,7 @@ showGameInfo(char *ID, u8 *headerID)
wheelImg->SetAlignment(0,4);
gameinfoWindow.Append(wheelImg);
intputX += (CFG.widescreen ? wheelImg->GetWidth() * .8 : wheelImg->GetWidth())+5;}
-
+
if (guitar==1){
guitarImg = new GuiImage(guitarImgData);
guitarImg->SetWidescreen(CFG.widescreen);
@@ -425,7 +372,7 @@ showGameInfo(char *ID, u8 *headerID)
guitarImg->SetAlignment(0,4);
gameinfoWindow.Append(guitarImg);
intputX += (CFG.widescreen ? guitarImg->GetWidth() * .8 : guitarImg->GetWidth())+5;}
-
+
if (drums==1){
drumsImg = new GuiImage(drumsImgData);
drumsImg->SetWidescreen(CFG.widescreen);
@@ -433,7 +380,7 @@ showGameInfo(char *ID, u8 *headerID)
drumsImg->SetAlignment(0,4);
gameinfoWindow.Append(drumsImg);
intputX += (CFG.widescreen ? drumsImg->GetWidth() * .8 : drumsImg->GetWidth())+5;}
-
+
if (microphone==1){
microphoneImg = new GuiImage(microphoneImgData);
microphoneImg->SetWidescreen(CFG.widescreen);
@@ -441,7 +388,7 @@ showGameInfo(char *ID, u8 *headerID)
microphoneImg->SetAlignment(0,4);
gameinfoWindow.Append(microphoneImg);
intputX += (CFG.widescreen ? microphoneImg->GetWidth() * .8 : microphoneImg->GetWidth())+5;}
-
+
if (dancepad==1){
dancepadImg = new GuiImage(dancepadImgData);
dancepadImg->SetWidescreen(CFG.widescreen);
@@ -449,7 +396,7 @@ showGameInfo(char *ID, u8 *headerID)
dancepadImg->SetAlignment(0,4);
gameinfoWindow.Append(dancepadImg);
intputX += (CFG.widescreen ? dancepadImg->GetWidth() * .8 : dancepadImg->GetWidth())+5;}
-
+
if (motionplus==1){
motionplusImg = new GuiImage(motionplusImgData);
motionplusImg->SetWidescreen(CFG.widescreen);
@@ -458,20 +405,18 @@ showGameInfo(char *ID, u8 *headerID)
gameinfoWindow.Append(motionplusImg);
intputX += (CFG.widescreen ? motionplusImg->GetWidth() * .8 : motionplusImg->GetWidth())+5;}
-
-
-
+
+
+
// # online players
- if (strcmp(gameinfo.wifiplayers,"") != 0) {
+ if ((strcmp(gameinfo.wifiplayers,"") != 0) && (strcmp(gameinfo.wifiplayers,"0") != 0)){
wifiplayersImgData = new GuiImageData(wifi1_png);
if (atoi(gameinfo.wifiplayers)>1){
wifiplayersImgData= new GuiImageData(wifi2_png);}
if (atoi(gameinfo.wifiplayers)>2){
wifiplayersImgData= new GuiImageData(wifi4_png);}
-
if (atoi(gameinfo.wifiplayers)>4){
wifiplayersImgData= new GuiImageData(wifi8_png);}
-
wifiplayersImg = new GuiImage(wifiplayersImgData);
wifiplayersImg->SetWidescreen(CFG.widescreen);
wifiplayersImg->SetPosition(intputX , inputY);
@@ -480,23 +425,23 @@ showGameInfo(char *ID, u8 *headerID)
intputX += (CFG.widescreen ? wifiplayersImg->GetWidth() * .8 : wifiplayersImg->GetWidth())+5;
}
- // ratings
- if (strcmp(gameinfo.ratingtype,"") !=0){
+ // ratings
+ if (strcmp(gameinfo.ratingtype,"") !=0){
if (strcmp(gameinfo.ratingtype,"ESRB")==0) {
if (strcmp(gameinfo.ratingvalueESRB,"EC")==0)
ratingImgData = new GuiImageData(esrb_ec_png);
- else if (strcmp(gameinfo.ratingvalueESRB,"E")==0)
+ else if (strcmp(gameinfo.ratingvalueESRB,"E")==0)
ratingImgData = new GuiImageData(esrb_e_png);
else if (strcmp(gameinfo.ratingvalueESRB,"E10+")==0)
ratingImgData = new GuiImageData(esrb_eten_png);
- else if (strcmp(gameinfo.ratingvalueESRB,"T")==0)
+ else if (strcmp(gameinfo.ratingvalueESRB,"T")==0)
ratingImgData = new GuiImageData(esrb_t_png);
- else if (strcmp(gameinfo.ratingvalueESRB,"M")==0)
+ else if (strcmp(gameinfo.ratingvalueESRB,"M")==0)
ratingImgData = new GuiImageData(esrb_m_png);
else if (strcmp(gameinfo.ratingvalueESRB,"AO")==0)
ratingImgData = new GuiImageData(esrb_ao_png);
else {ratingImgData = new GuiImageData(norating_png);}
- } //there are 2 values here cause some countries are stupid and
+ } //there are 2 values here cause some countries are stupid and
else if (strcmp(gameinfo.ratingtype,"PEGI")==0) {//can't use the same as everybody else
if ((strcmp(gameinfo.ratingvaluePEGI,"3")==0)||(strcmp(gameinfo.ratingvaluePEGI,"4")==0))
ratingImgData = new GuiImageData(pegi_3_png);
@@ -510,7 +455,7 @@ showGameInfo(char *ID, u8 *headerID)
ratingImgData = new GuiImageData(pegi_18_png);
else {ratingImgData = new GuiImageData(norating_png);}
}
-
+
else if (strcmp(gameinfo.ratingtype,"CERO")==0) {
if (strcmp(gameinfo.ratingvalueCERO,"A")==0)
ratingImgData = new GuiImageData(cero_a_png);
@@ -533,30 +478,30 @@ showGameInfo(char *ID, u8 *headerID)
ratingImg->SetAlignment(1,4);
gameinfoWindow.Append(ratingImg);
intputX += (CFG.widescreen ? ratingImg->GetWidth() * .8 : ratingImg->GetWidth())+5;
-
+
}
-
-//////////debugging line
+
+//////////debugging line
/* snprintf(linebuf, sizeof(linebuf), "%s %s %s %s %i %s",gameinfo.ratingtype ,gameinfo.ratingvalueESRB,gameinfo.ratingvaluePEGI,gameinfo.ratingvalueCERO, ass,LANGUAGE.released);
-
+
for (int i=0;strcmp(gameinfo.accessories_required[i+1],"") != 0;i++)
{
snprintf(linebuf, sizeof(linebuf), "%s %s",linebuf, gameinfo.accessories_required[i+1]);
}
-
+
debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
debugTxt->SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM); debugTxt->SetPosition(0,0);
gameinfoWindow.Append(debugTxt);*/
-
+
if (strcmp(gameinfo.title,"") != 0)
{snprintf(linebuf, sizeof(linebuf), "%s",gameinfo.title);
titleTxt = new GuiText(linebuf, 22, (GXColor){0,0,0, 255});
if (titleTxt->GetWidth()>300)titleTxt->SetFontSize(18);
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); titleTxt->SetPosition(txtXOffset,12+y); y+=24;
gameinfoWindow.Append(titleTxt);}
-
-
-
+
+
+
//date
snprintf(linebuf2, sizeof(linebuf2), " ");
if (strcmp(gameinfo.day,"") != 0)
@@ -601,9 +546,9 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
snprintf(linebuf2, sizeof(linebuf2), "%s%s ", linebuf2, LANGUAGE.december);
break;
}
- }
- if (strcmp(gameinfo.year,"") != 0)newline=1;
- {snprintf(linebuf, sizeof(linebuf), "%s : %s%s", LANGUAGE.released, linebuf2, gameinfo.year);
+ }
+ if (strcmp(gameinfo.year,"") != 0){newline=1;
+ snprintf(linebuf, sizeof(linebuf), "%s : %s%s", LANGUAGE.released, linebuf2, gameinfo.year);
releasedTxt = new GuiText(linebuf, 16, (GXColor){0,0,0, 255});
if (releasedTxt->GetWidth()>300) newline=2;
releasedTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); releasedTxt->SetPosition(-17,12+y); y+=(20 * newline);newline=1;
@@ -615,7 +560,7 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
if (genreTxt->GetWidth()>300) newline=2;
genreTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP); genreTxt->SetPosition(205,12+y1); y1+=(25 * newline);newline=1;
gameinfoWindow.Append(genreTxt);}
-
+
//developer
if (strcmp(gameinfo.developer,"") != 0 && strcmp(gameinfo.developer,gameinfo.publisher) != 0)
{snprintf(linebuf, sizeof(linebuf), "%s %s", LANGUAGE.developedby, gameinfo.developer);
@@ -633,58 +578,58 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
publisherTxt->SetMaxWidth(250,GuiText::WRAP);
publisherTxt->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); publisherTxt->SetPosition(-17,12+y); y+=(20 * newline);newline=1;
gameinfoWindow.Append(publisherTxt);}
-
+
//don't bother us txt
snprintf(linebuf, sizeof(linebuf), "Don't bother the USB Loader GX Team about errors in this file.");
betaTxt = new GuiText(linebuf, 14, (GXColor){0,0,0, 255});
- betaTxt->SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM); betaTxt->SetPosition(-17,-20);//
+ betaTxt->SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM); betaTxt->SetPosition(-17,-20);//
gameinfoWindow.Append(betaTxt);
snprintf(linebuf, sizeof(linebuf), "A site will be available in the near nuture to submit changes.");
beta1Txt = new GuiText(linebuf, 14, (GXColor){0,0,0, 255});
beta1Txt->SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM); beta1Txt->SetPosition(-17,-10);
gameinfoWindow.Append(beta1Txt);
-
+
// WiFi Shit commented out cause it has a code dump in it still
/*if (strcmp(gameinfo.wififeatures[0],"") != 0){
snprintf(linebuf, sizeof(linebuf), "%s:",LANGUAGE.wififeatures);
- wifiTxt[0] = new GuiText(linebuf, 16, (GXColor){0,0,0, 255});
- wifiTxt[0]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); wifiTxt[0]->SetPosition(205,12+y); y+=(20 * newline);
- gameinfoWindow.Append(wifiTxt[0]);}
- for (int i=1;strcmp(gameinfo.wififeatures[i],"") != 0;i++)
+ wifiTxt = new GuiText(linebuf, 16, (GXColor){0,0,0, 255});
+ wifiTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP); wifiTxt->SetPosition(205,12+y); y+=(20 * newline);
+ gameinfoWindow.Append(wifiTxt);}
+ for (int i=1;strcmp(gameinfo.wififeatures[i],"") != 0;i++)
{
snprintf(linebuf, sizeof(linebuf), "%s",gameinfo.wififeatures[i]);
wifiTxt[i] = new GuiText(linebuf, 16, (GXColor){0,0,0, 255});
wifiTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); wifiTxt[i]->SetPosition(210,12+y); y+=(20 * newline);
gameinfoWindow.Append(wifiTxt[i]);}*/
-
+
//synopsis
if (strcmp(gameinfo.synopsis,"") != 0)
{snprintf(linebuf, sizeof(linebuf), "%s", gameinfo.synopsis);
synopsisTxt = new GuiText(linebuf, 16, (GXColor){0,0,0, 255});
synopsisTxt->SetMaxWidth(350,GuiText::WRAP);
- synopsisTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP); synopsisTxt->SetPosition(0,0);
+ synopsisTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP); synopsisTxt->SetPosition(0,0);
dialogBoxImg11 = new GuiImage(&dialogBox1);
dialogBoxImg11->SetAlignment(0,3);
dialogBoxImg11->SetPosition(-9,0);
-
+
dialogBoxImg22 = new GuiImage(&dialogBox2);
dialogBoxImg22->SetAlignment(0,3);
dialogBoxImg22->SetPosition(145,0);
-
+
dialogBoxImg33 = new GuiImage(&dialogBox3);
dialogBoxImg33->SetAlignment(0,3);
dialogBoxImg33->SetPosition(301,0);
-
+
dialogBoxImg44 = new GuiImage(&dialogBox4);
dialogBoxImg44->SetAlignment(0,3);
dialogBoxImg44->SetPosition(457,0);
-
+
gameinfoWindow2.Append(dialogBoxImg11);
gameinfoWindow2.Append(dialogBoxImg22);
gameinfoWindow2.Append(dialogBoxImg33);
gameinfoWindow2.Append(dialogBoxImg44);
-
+
txtWindow.Append(synopsisTxt);
coverImg2 = new GuiImage(cover);
coverImg2->SetWidescreen(CFG.widescreen);
@@ -693,7 +638,7 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
gameinfoWindow2.Append(&txtWindow);
}
-
+
gameinfoWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
HaltGui();
@@ -701,7 +646,7 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
mainWindow->Append(&gameinfoWindow);
mainWindow->ChangeFocus(&gameinfoWindow);
ResumeGui();
-
+
while(choice == -1)
{
VIDEO_WaitVSync();
@@ -712,23 +657,23 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
}
if(reset == 1)
Sys_Reboot();
-
-
+
+
if ((backBtn.GetState()==STATE_CLICKED)||(backBtn.GetState()==STATE_HELD)){
choice=1;
synopsisTxt = NULL;
break;}
-
+
else if (((nextBtn.GetState()==STATE_CLICKED)||(nextBtn.GetState()==STATE_HELD))&&
(strcmp(gameinfo.synopsis,"") != 0)){
-
+
if (page==1){
nextBtn.ResetState();
HaltGui();
gameinfoWindow.SetVisible(false);
gameinfoWindow2.SetVisible(true);
coverImg->SetPosition(15,30);
-
+
backBtn.SetClickable(false);
gameinfoWindow2.Append(&nextBtn);
mainWindow->Append(&gameinfoWindow2);
@@ -756,7 +701,64 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
HaltGui();
mainWindow->Remove(&gameinfoWindow);
mainWindow->SetState(STATE_DEFAULT);
- eatADick();
+
+// use this to display variables on the window GuiText * debugTxt = NULL;
+ delete playersImgData;
+ delete playersImg;
+
+ delete wifiplayersImgData;
+ delete wifiplayersImg;
+ delete ratingImg;
+
+ delete classiccontrollerImg;
+ delete nunchuckImg;
+ delete guitarImg;
+ delete drumsImg;
+ delete dancepadImg;
+ delete motionplusImg;
+ delete wheelImg;
+ delete balanceboardImg;
+ delete microphoneImg;
+ delete gcImg;
+ delete dialogBoxImg1;
+ delete dialogBoxImg2;
+ delete dialogBoxImg3;
+ delete dialogBoxImg4;
+ delete dialogBoxImg11;
+ delete dialogBoxImg22;
+ delete dialogBoxImg33;
+ delete dialogBoxImg44;
+ delete coverImg;
+ delete coverImg2;
+
+ delete classiccontrollerImgData;
+ delete nunchuckImgData;
+ delete guitarImgData;
+ delete drumsImgData;
+ delete motionplusImgData;
+ delete wheelImgData;
+ delete balanceboardImgData;
+ delete dancepadImgData;
+ delete microphoneImgData;
+ delete gamecubeImgData;
+ delete ratingImgData;
+ delete cover;
+
+ delete releasedTxt;
+ delete publisherTxt;
+ delete developerTxt;
+ delete titleTxt;
+ delete synopsisTxt;
+ delete genreTxt;
+ delete betaTxt;
+ delete beta1Txt;
+ if (nodata==0)FreeXMLMemory();
+ //void FreeXMLDeletePart();
+ /*
+ nodeid
+ nodefound
+ */
+
ResumeGui();}
else {
gameinfoWindow2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50);
@@ -765,6 +767,12 @@ debugTxt = new GuiText(linebuf, 18, (GXColor){0,0,0, 255});
mainWindow->Remove(&gameinfoWindow2);
mainWindow->SetState(STATE_DEFAULT);
ResumeGui();}
+ //FreeXMLMemory();
return choice;
+
+ /* File not found */
+ } else {
+ return -1;
+ }
}
diff --git a/source/getentries.cpp b/source/getentries.cpp
index 9c441502..23c12ea0 100644
--- a/source/getentries.cpp
+++ b/source/getentries.cpp
@@ -5,6 +5,7 @@
#include "main.h"
+
struct discHdr * gameList;
u32 gameCnt;
s32 gameSelected, gameStart;
diff --git a/source/language.c b/source/language.c
index eea117b2..a1ecdfab 100644
--- a/source/language.c
+++ b/source/language.c
@@ -273,6 +273,8 @@ snprintf(LANGUAGE.december, sizeof(LANGUAGE.december), "Dec");
snprintf(LANGUAGE.developedby, sizeof(LANGUAGE.developedby), "Developed by");
snprintf(LANGUAGE.publishedby, sizeof(LANGUAGE.publishedby), "Published by");
snprintf(LANGUAGE.wififeatures, sizeof(LANGUAGE.wififeatures), "WiFi Features");
+snprintf(LANGUAGE.XMLTitles, sizeof(LANGUAGE.XMLTitles), "Titles from XML");
+
};
diff --git a/source/language.h b/source/language.h
index d3120f0b..1c5b8f24 100644
--- a/source/language.h
+++ b/source/language.h
@@ -26,6 +26,7 @@ struct LANGUAGE
char october[15];
char november[15];
char december[15];
+ char XMLTitles[15];
char wififeatures[20];
diff --git a/source/libwiigui/gui_gamegrid.cpp b/source/libwiigui/gui_gamegrid.cpp
index 4899ac00..598485f4 100644
--- a/source/libwiigui/gui_gamegrid.cpp
+++ b/source/libwiigui/gui_gamegrid.cpp
@@ -773,6 +773,17 @@ void GuiGameGrid::Update(GuiTrigger * t)
if (goback==1)mover2= (mover2<0? mover2+1:mover2-1);
if (mover2==0)goback=0;
+ /*u16 buttons = ButtonsHold();
+ if(buttons & WPAD_BUTTON_B) {
+ int x = t->wpad.ir.x;
+ int center = this->GetWidth()/2;
+ if (xcenter)goRight=12;
+ usleep(xDraw();}
+ //return;
+ }*/
+
// navigation
if(!focus || gameCnt <= pagesize || (game[bob[0]]->GetEffect() && game[bob[pagesize-1]]->GetEffect()))
@@ -1047,6 +1058,7 @@ void GuiGameGrid::Update(GuiTrigger * t)
if (goRight>0){
if (mover<11){
+
//int offset1 = listOffset-1, offset2 = listOffset-2;
for (int i=1; i<(rows+1); i++){
@@ -1288,8 +1300,8 @@ void GuiGameGrid::Update(GuiTrigger * t)
}
if (btnRowUp->GetState() == STATE_CLICKED) {
- if (rows==1)this->ChangeRows(2);
- else if (rows==2)this->ChangeRows(3);
+ if ((rows==1)&&(gameCnt>=16))this->ChangeRows(2);
+ else if ((rows==2)&&(gameCnt>=42))this->ChangeRows(3);
btnRowUp->ResetState();
return;
}
@@ -1316,7 +1328,7 @@ void GuiGameGrid::Reload(struct discHdr * l, int count)
delete cover[i];
}
- delete [] bob;
+ //delete [] bob;
delete [] game;
delete [] coverImg;
delete [] cover;
@@ -1330,24 +1342,27 @@ void GuiGameGrid::Reload(struct discHdr * l, int count)
focus = 1; // allow focus
firstPic = 0;
clickedItem = -1;
- speed = SHIFT_SPEED;
+ gameCnt=count;
+ //speed = SHIFT_SPEED;
char imgPath[100];
- if ((count<42)&&(rows==3))rows=2;
- if ((count<16)&&(rows==2))rows=1;
-
+ if (count<42)rows=2;
+ if (count<16)rows=1;
+ //rows=1;
if (rows==1)pagesize = 6;
else if (rows==2)pagesize = 16;
else if (rows==3)pagesize = 42;
- //gameIndex = new int[pagesize];
+
game = new GuiButton * [pagesize];
- bob = new int[pagesize];
+ //bob = new int[pagesize];
coverImg = new GuiImage * [gameCnt];
cover = new GuiImageData * [gameCnt];
for(int i=0; iSetPosition(-70,74);
- game[1]->SetPosition(88,74);
- game[2]->SetPosition(239,74);
- game[3]->SetPosition(390,74);
- game[4]->SetPosition(550,74);
+ game[bob[0]]->SetPosition(-70,74);
+ game[bob[1]]->SetPosition(88,74);
+ game[bob[2]]->SetPosition(239,74);
+ game[bob[3]]->SetPosition(390,74);
+ game[bob[4]]->SetPosition(550,74);
- game[0]->SetSkew(-10,-44,10,-26,10,26,-10,44);
- game[1]->SetSkew(-6,-22,6,-14,6,14,-6,22);
- game[2]->SetSkew(0,-11,0,-11,0,11,0,11);
- game[3]->SetSkew(-6,-14,6,-22,6,22,-6,14);
- game[4]->SetSkew(-10,-26,10,-44,10,44,-10,26);
+ game[bob[0]]->SetSkew(-10,-44,10,-26,10,26,-10,44);
+ game[bob[1]]->SetSkew(-6,-22,6,-14,6,14,-6,22);
+ game[bob[2]]->SetSkew(0,-11,0,-11,0,11,0,11);
+ game[bob[3]]->SetSkew(-6,-14,6,-22,6,22,-6,14);
+ game[bob[4]]->SetSkew(-10,-26,10,-44,10,44,-10,26);
}
else if (rows ==2)
{
- game[0]->SetPosition(3,50);
- game[1]->SetPosition(3,193);
- game[2]->SetPosition(97,50);
- game[3]->SetPosition(97,193);
- game[4]->SetPosition(187,50);
- game[5]->SetPosition(187,193);
- game[6]->SetPosition(272,50);
- game[7]->SetPosition(272,193);
- game[8]->SetPosition(358,50);
- game[9]->SetPosition(358,193);
- game[10]->SetPosition(449,50);
- game[11]->SetPosition(449,193);
- game[12]->SetPosition(545,50);
- game[13]->SetPosition(545,193);
- game[14]->SetPosition(700,0);
- game[15]->SetPosition(700,0);
+ game[bob[0]]->SetPosition(3,50);
+ game[bob[1]]->SetPosition(3,193);
+ game[bob[2]]->SetPosition(97,50);
+ game[bob[3]]->SetPosition(97,193);
+ game[bob[4]]->SetPosition(187,50);
+ game[bob[5]]->SetPosition(187,193);
+ game[bob[6]]->SetPosition(272,50);
+ game[bob[7]]->SetPosition(272,193);
+ game[bob[8]]->SetPosition(358,50);
+ game[bob[9]]->SetPosition(358,193);
+ game[bob[10]]->SetPosition(449,50);
+ game[bob[11]]->SetPosition(449,193);
+ game[bob[12]]->SetPosition(545,50);
+ game[bob[13]]->SetPosition(545,193);
+ game[bob[14]]->SetPosition(700,0);
+ game[bob[15]]->SetPosition(700,0);
- game[0]->SetSkew(-4.5,-49,4.5,-27,4.5,0,-4.5,0);
- game[1]->SetSkew(-4.5,0,4.5,0,4.5,27,-4.5,49);
- game[2]->SetSkew(-4,-22,4,-14,4,0,-4,0);
- game[3]->SetSkew(-4,0,4,0,4,14,-4,22);
- game[4]->SetSkew(0,-9,0,-5,0,0,0,0);
- game[5]->SetSkew(0,0,0,0,0,5,0,9);
- game[6]->SetSkew(0,0,0,0,0,0,0,0);
- game[7]->SetSkew(0,0,0,0,0,0,0,0);
- game[8]->SetSkew(0,-5,0,-9,0,0,0,0);
- game[9]->SetSkew(0,0,0,0,0,9,0,5);
- game[10]->SetSkew(-4,-14,4,-22,4,0,-4,0);
- game[11]->SetSkew(-4,0,4,0,4,22,-4,14);
- game[12]->SetSkew(-4.5,-27,4.5,-49,4.5,0,-4.5,0);
- game[13]->SetSkew(-4.5,0,4.5,0,4.5,49,-4.5,27);
+ game[bob[0]]->SetSkew(-4.5,-49,4.5,-27,4.5,0,-4.5,0);
+ game[bob[1]]->SetSkew(-4.5,0,4.5,0,4.5,27,-4.5,49);
+ game[bob[2]]->SetSkew(-4,-22,4,-14,4,0,-4,0);
+ game[bob[3]]->SetSkew(-4,0,4,0,4,14,-4,22);
+ game[bob[4]]->SetSkew(0,-9,0,-5,0,0,0,0);
+ game[bob[5]]->SetSkew(0,0,0,0,0,5,0,9);
+ game[bob[6]]->SetSkew(0,0,0,0,0,0,0,0);
+ game[bob[7]]->SetSkew(0,0,0,0,0,0,0,0);
+ game[bob[8]]->SetSkew(0,-5,0,-9,0,0,0,0);
+ game[bob[9]]->SetSkew(0,0,0,0,0,9,0,5);
+ game[bob[10]]->SetSkew(-4,-14,4,-22,4,0,-4,0);
+ game[bob[11]]->SetSkew(-4,0,4,0,4,22,-4,14);
+ game[bob[12]]->SetSkew(-4.5,-27,4.5,-49,4.5,0,-4.5,0);
+ game[bob[13]]->SetSkew(-4.5,0,4.5,0,4.5,49,-4.5,27);
}
else if (rows==3)
{
- game[0]->SetPosition(13,58);
- game[1]->SetPosition(13,153);
- game[2]->SetPosition(13,250);
+ game[bob[0]]->SetPosition(13,58);
+ game[bob[1]]->SetPosition(13,153);
+ game[bob[2]]->SetPosition(13,250);
- game[3]->SetPosition(68,67);
- game[4]->SetPosition(68,153);
- game[5]->SetPosition(68,239);
+ game[bob[3]]->SetPosition(68,67);
+ game[bob[4]]->SetPosition(68,153);
+ game[bob[5]]->SetPosition(68,239);
- game[6]->SetPosition(120,74);
- game[7]->SetPosition(120,153);
- game[8]->SetPosition(120,232);
+ game[bob[6]]->SetPosition(120,74);
+ game[bob[7]]->SetPosition(120,153);
+ game[bob[8]]->SetPosition(120,232);
- game[9]->SetPosition(170,78);
- game[10]->SetPosition(170,153);
- game[11]->SetPosition(170,228);
+ game[bob[9]]->SetPosition(170,78);
+ game[bob[10]]->SetPosition(170,153);
+ game[bob[11]]->SetPosition(170,228);
- game[12]->SetPosition(214,80);
- game[13]->SetPosition(214,153);
- game[14]->SetPosition(214,226);
+ game[bob[12]]->SetPosition(214,80);
+ game[bob[13]]->SetPosition(214,153);
+ game[bob[14]]->SetPosition(214,226);
- game[15]->SetPosition(258,81);
- game[16]->SetPosition(258,153);
- game[17]->SetPosition(258,224);
+ game[bob[15]]->SetPosition(258,81);
+ game[bob[16]]->SetPosition(258,153);
+ game[bob[17]]->SetPosition(258,224);
- game[18]->SetPosition(302,81);
- game[19]->SetPosition(302,153);
- game[20]->SetPosition(302,223);
+ game[bob[18]]->SetPosition(302,81);
+ game[bob[19]]->SetPosition(302,153);
+ game[bob[20]]->SetPosition(302,223);
- game[21]->SetPosition(346,81);
- game[22]->SetPosition(346,153);
- game[23]->SetPosition(346,223);
+ game[bob[21]]->SetPosition(346,81);
+ game[bob[22]]->SetPosition(346,153);
+ game[bob[23]]->SetPosition(346,223);
- game[24]->SetPosition(390,80);
- game[25]->SetPosition(390,153);
- game[26]->SetPosition(390,225);
+ game[bob[24]]->SetPosition(390,80);
+ game[bob[25]]->SetPosition(390,153);
+ game[bob[26]]->SetPosition(390,225);
- game[27]->SetPosition(434,77);
- game[28]->SetPosition(434,153);
- game[29]->SetPosition(434,227);
+ game[bob[27]]->SetPosition(434,77);
+ game[bob[28]]->SetPosition(434,153);
+ game[bob[29]]->SetPosition(434,227);
- game[30]->SetPosition(484,73);
- game[31]->SetPosition(484,153);
- game[32]->SetPosition(484,231);
+ game[bob[30]]->SetPosition(484,73);
+ game[bob[31]]->SetPosition(484,153);
+ game[bob[32]]->SetPosition(484,231);
- game[33]->SetPosition(537,67);
- game[34]->SetPosition(537,153);
- game[35]->SetPosition(537,239);
+ game[bob[33]]->SetPosition(537,67);
+ game[bob[34]]->SetPosition(537,153);
+ game[bob[35]]->SetPosition(537,239);
- game[36]->SetPosition(591,58);
- game[37]->SetPosition(591,153);
- game[38]->SetPosition(591,250);
+ game[bob[36]]->SetPosition(591,58);
+ game[bob[37]]->SetPosition(591,153);
+ game[bob[38]]->SetPosition(591,250);
- game[0]->SetSkew(-38,-110,15,-42,15,65,-38,32);
- game[1]->SetSkew(-38,-75,15,-48,15,45,-38,72);
- game[2]->SetSkew(-38,-52,15,-70,15,27,-38,100);
+ game[bob[0]]->SetSkew(-38,-110,15,-42,15,65,-38,32);
+ game[bob[1]]->SetSkew(-38,-75,15,-48,15,45,-38,72);
+ game[bob[2]]->SetSkew(-38,-52,15,-70,15,27,-38,100);
- game[3]->SetSkew(-38,-70,15,-24,15,40,-38,27);
- game[4]->SetSkew(-38,-50,15,-35,15,40,-38,50);
- game[5]->SetSkew(-38,-34,15,-47,15,24,-38,58);
+ game[bob[3]]->SetSkew(-38,-70,15,-24,15,40,-38,27);
+ game[bob[4]]->SetSkew(-38,-50,15,-35,15,40,-38,50);
+ game[bob[5]]->SetSkew(-38,-34,15,-47,15,24,-38,58);
- game[6]->SetSkew(-27,-55,19,-22,19,30,-27,22);
- game[7]->SetSkew(-27,-40,19,-30,19,30,-27,40);
- game[8]->SetSkew(-27,-20,19,-30,19,20,-27,50);
+ game[bob[6]]->SetSkew(-27,-55,19,-22,19,30,-27,22);
+ game[bob[7]]->SetSkew(-27,-40,19,-30,19,30,-27,40);
+ game[bob[8]]->SetSkew(-27,-20,19,-30,19,20,-27,50);
- game[9]->SetSkew(-19,-28,0,-17,0,15,-19,10);
- game[10]->SetSkew(-19,-30,0,-20,0,12,-19,30);
- game[11]->SetSkew(-19,-15,0,-20,0,10,-19,24);
+ game[bob[9]]->SetSkew(-19,-28,0,-17,0,15,-19,10);
+ game[bob[10]]->SetSkew(-19,-30,0,-20,0,12,-19,30);
+ game[bob[11]]->SetSkew(-19,-15,0,-20,0,10,-19,24);
- game[12]->SetSkew(-10,-20,3,-13,3,14,-10,10);
- game[13]->SetSkew(-10,-20,3,-18,3,18,-10,20);
- game[14]->SetSkew(-10,-10,3,-10,3,0,-10,10);
+ game[bob[12]]->SetSkew(-10,-20,3,-13,3,14,-10,10);
+ game[bob[13]]->SetSkew(-10,-20,3,-18,3,18,-10,20);
+ game[bob[14]]->SetSkew(-10,-10,3,-10,3,0,-10,10);
- game[15]->SetSkew(-10,-15,3,-12,3,13,-10,13);
- game[16]->SetSkew(-10,-17,3,-10,3,10,-10,17);
- game[17]->SetSkew(-10,-10,3,-15,3,10,-10,10);
+ game[bob[15]]->SetSkew(-10,-15,3,-12,3,13,-10,13);
+ game[bob[16]]->SetSkew(-10,-17,3,-10,3,10,-10,17);
+ game[bob[17]]->SetSkew(-10,-10,3,-15,3,10,-10,10);
- game[18]->SetSkew(-10,-10,3,-10,3,14,-10,14);
- game[19]->SetSkew(-10,-10,3,-10,3,10,-10,10);//middle
- game[20]->SetSkew(-10,-10,3,-10,3,10,-10,10);
+ game[bob[18]]->SetSkew(-10,-10,3,-10,3,14,-10,14);
+ game[bob[19]]->SetSkew(-10,-10,3,-10,3,10,-10,10);//middle
+ game[bob[20]]->SetSkew(-10,-10,3,-10,3,10,-10,10);
- game[21]->SetSkew(-14,-10,4,-20,3,10,-14,10);
- game[22]->SetSkew(-14,-10,4,-17,3,17,-14,10);
- game[23]->SetSkew(-14,-10,4,-10,3,10,-14,10);
+ game[bob[21]]->SetSkew(-14,-10,4,-20,3,10,-14,10);
+ game[bob[22]]->SetSkew(-14,-10,4,-17,3,17,-14,10);
+ game[bob[23]]->SetSkew(-14,-10,4,-10,3,10,-14,10);
- game[24]->SetSkew(-10,-13,3,-20,3,14,-10,10);
- game[25]->SetSkew(-10,-18,3,-20,3,20,-10,18);
- game[26]->SetSkew(-10,-10,3,-10,3,20,-10,5);
+ game[bob[24]]->SetSkew(-10,-13,3,-20,3,14,-10,10);
+ game[bob[25]]->SetSkew(-10,-18,3,-20,3,20,-10,18);
+ game[bob[26]]->SetSkew(-10,-10,3,-10,3,20,-10,5);
- game[27]->SetSkew(-19,-17,0,-28,0,10,-19,15);
- game[28]->SetSkew(-19,-20,0,-30,0,30,-19,12);
- game[29]->SetSkew(-19,-20,0,-15,0,30,-19,10);
+ game[bob[27]]->SetSkew(-19,-17,0,-28,0,10,-19,15);
+ game[bob[28]]->SetSkew(-19,-20,0,-30,0,30,-19,12);
+ game[bob[29]]->SetSkew(-19,-20,0,-15,0,30,-19,10);
- game[30]->SetSkew(-27,-22,19,-55,19,22,-27,30);
- game[31]->SetSkew(-27,-30,19,-40,19,40,-27,30);
- game[32]->SetSkew(-27,-30,19,-20,19,55,-27,20);
+ game[bob[30]]->SetSkew(-27,-22,19,-55,19,22,-27,30);
+ game[bob[31]]->SetSkew(-27,-30,19,-40,19,40,-27,30);
+ game[bob[32]]->SetSkew(-27,-30,19,-20,19,55,-27,20);
- game[33]->SetSkew(-38,-24,15,-70,15,27,-38,40);
- game[34]->SetSkew(-38,-35,15,-50,15,50,-38,40);
- game[35]->SetSkew(-38,-47,15,-34,15,58,-38,24);
+ game[bob[33]]->SetSkew(-38,-24,15,-70,15,27,-38,40);
+ game[bob[34]]->SetSkew(-38,-35,15,-50,15,50,-38,40);
+ game[bob[35]]->SetSkew(-38,-47,15,-34,15,58,-38,24);
- game[36]->SetSkew(-38,-42,15,-110,15,32,-38,60);
- game[37]->SetSkew(-38,-48,15,-75,15,70,-38,45);
- game[38]->SetSkew(-38,-70,15,-52,15,100,-38,27);
+ game[bob[36]]->SetSkew(-38,-42,15,-110,15,32,-38,60);
+ game[bob[37]]->SetSkew(-38,-48,15,-75,15,70,-38,45);
+ game[bob[38]]->SetSkew(-38,-70,15,-52,15,100,-38,27);
}
diff --git a/source/video.cpp b/source/video.cpp
index 52750f52..d2a7553b 100644
--- a/source/video.cpp
+++ b/source/video.cpp
@@ -298,6 +298,7 @@ void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, f32 width, f32 height, u8 data[]
GX_SetVtxDesc (GX_VA_TEX0, GX_NONE);
}
+
/****************************************************************************
* Menu_DrawRectangle
*
diff --git a/source/xml.c b/source/xml.c
index a19637dc..b21691e7 100644
--- a/source/xml.c
+++ b/source/xml.c
@@ -11,12 +11,12 @@ Load game information from XML - Lustar
#include "unzip/unzip.h"
-bool xmldebug = false;
+static bool xmldebug = false;
extern struct SSettings Settings; // for loader GX
-char langlist[11][22] =
+static char langlist[11][22] =
{{"Console Default"},
{"Japanese"},
{"English"},
@@ -29,7 +29,7 @@ char langlist[11][22] =
{"T. Chinese"},
{"Korean"}};
-char langcodes[11][22] =
+static char langcodes[11][22] =
{{""},
{"JA"},
{"EN"},
@@ -42,18 +42,30 @@ char langcodes[11][22] =
{"ZH"},
{"KO"}};
-char element_text[5000];
+static char element_text[5000];
-mxml_node_t *nodetree;
-mxml_node_t *nodedata;
-mxml_node_t *nodeid;
-mxml_node_t *nodeidtmp;
-mxml_node_t *nodefound;
-mxml_index_t *nodeindex;
-mxml_index_t *nodeindextmp;
+static mxml_node_t *nodetree=NULL;
+static mxml_node_t *nodedata=NULL;
+static mxml_node_t *nodeid=NULL;
+static mxml_node_t *nodeidtmp=NULL;
+static mxml_node_t *nodefound=NULL;
+static mxml_index_t *nodeindex=NULL;
+static mxml_index_t *nodeindextmp=NULL;
int xmlloadtime = 0;
+void FreeXMLDeletePart()
+{
+ /* free memory */
+ mxmlIndexDelete(nodeindex);
+ mxmlIndexDelete(nodeindextmp);
+ mxmlDelete(nodeid);
+ mxmlDelete(nodeidtmp);
+ mxmlDelete(nodefound);
+ mxmlDelete(nodedata);
+ mxmlDelete(nodetree);
+}
+
/* get_text() taken as is from mini-mxml example mxmldoc.c */
/* get_text() - Get the text for a node. */
@@ -255,9 +267,10 @@ void ConvertRating(char *ratingvalue, char *fromrating, char *torating, char *de
void LoadTitlesFromXML(char *langtxt, bool forcejptoen)
/* langtxt: set to "English","French","German", to force language for all titles, or "" to load title depending on each game's setting */
/* forcejptoen: set to true to load English title instead of Japanese title when game is set to Japanese */
-{
+{
+
if (nodeindex == NULL)
- return;
+ return ;
bool forcelang = false;
if (strcmp(langtxt,""))
@@ -305,11 +318,13 @@ void LoadTitlesFromXML(char *langtxt, bool forcejptoen)
/* load title from nodes */
nodefound = mxmlFindElement(nodeid, nodedata, "locale", "lang", "EN", MXML_NO_DESCEND);
- if (nodefound != NULL) {
+ if (nodefound != NULL){// &&(Settings.titlesOverride==1)){
GetTextFromNode(nodefound, nodedata, "title", NULL, NULL, MXML_DESCEND, title_text_EN);
+
}
nodefound = mxmlFindElement(nodeid, nodedata, "locale", "lang", langcode, MXML_NO_DESCEND);
if (nodefound != NULL) {
+
GetTextFromNode(nodefound, nodedata, "title", NULL, NULL, MXML_DESCEND, title_text);
}
/* fall back to English title if prefered language was not found */
@@ -355,12 +370,12 @@ void GetPublisherFromGameid(char *idtxt, char *dest)
}
-void LoadGameInfoFromXML(char* gameid, char* langtxt)
+bool LoadGameInfoFromXML(char* gameid, char* langtxt)
/* gameid: full game id */
/* langcode: "English","French","German" */
-{
+{ bool exist=false;
if (nodeindex == NULL)
- return;
+ return exist;
/* convert language text into ISO 639 two-letter language codes */
char langcode[100] = "";
@@ -375,7 +390,7 @@ void LoadGameInfoFromXML(char* gameid, char* langtxt)
/* search for game matching gameid */
while (strcmp(element_text,gameid) != 0)
- {
+ { exist=true;
nodeid = mxmlIndexFind(nodeindex,"id", NULL);
if (nodeid != NULL) {
get_text(nodeid, element_text, sizeof(element_text));
@@ -411,12 +426,13 @@ void LoadGameInfoFromXML(char* gameid, char* langtxt)
/* text from child elements */
nodefound = mxmlFindElement(nodeid, nodedata, "locale", "lang", "EN", MXML_NO_DESCEND);
if (nodefound != NULL) {
+ //if (Settings.titlesOverride==1)
GetTextFromNode(nodefound, nodedata, "title", NULL, NULL, MXML_DESCEND, gameinfo.title_EN);
GetTextFromNode(nodefound, nodedata, "synopsis", NULL, NULL, MXML_DESCEND, gameinfo.synopsis_EN);
}
nodefound = mxmlFindElement(nodeid, nodedata, "locale", "lang", langcode, MXML_NO_DESCEND);
if (nodefound != NULL) {
- GetTextFromNode(nodefound, nodedata, "title", NULL, NULL, MXML_DESCEND, gameinfo.title);
+ //GetTextFromNode(nodefound, nodedata, "title", NULL, NULL, MXML_DESCEND, gameinfo.title);
GetTextFromNode(nodefound, nodedata, "synopsis", NULL, NULL, MXML_DESCEND, gameinfo.synopsis);
}
// fall back to English title and synopsis if prefered language was not found
@@ -509,10 +525,10 @@ void LoadGameInfoFromXML(char* gameid, char* langtxt)
ConvertRating(gameinfo.ratingvalue, gameinfo.ratingtype, "PEGI",gameinfo.ratingvaluePEGI);
//PrintGameInfo();
-
- } else {
+ exist=true;
+ } else {exist=false;
/*game not found */
- }
+ }return exist;
}
diff --git a/source/xml.h b/source/xml.h
index d75f943f..e8fed447 100644
--- a/source/xml.h
+++ b/source/xml.h
@@ -50,13 +50,14 @@ struct gameXMLinfo gameinfo;
struct gameXMLinfo gameinfo_reset;
bool OpenXMLFile(char* filename);
-void LoadGameInfoFromXML(char* gameid, char* langcode);
+bool LoadGameInfoFromXML(char* gameid, char* langcode);
void LoadTitlesFromXML(char *langcode, bool forcejptoen);
void GetPublisherFromGameid(char *idtxt, char *dest);
char *ConvertLangTextToCode(char *langtext);
void ConvertRating(char *ratingvalue, char *fromrating, char *torating, char *destvalue);
void PrintGameInfo(bool showfullinfo);
void FreeXMLMemory();
+void FreeXMLDeletePart();
void title_set(char *id, char *title);