mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-12-18 16:01:58 +01:00
*Fixed crash on start i made in last rev by mistake
*Changed boot process to wait for USB in GUI mode. *Changed headless ID stuff (actually was in last rev) *Added a GameTitles class for WiiTDB titles and fixed parental control (probably crashed before) *Removed cfg.c completely now. Nothing left in it. *Moved per game lock feature from game statistics to the individual game settings. It is not a game statistic ;).
This commit is contained in:
parent
6baa46b1e6
commit
2570d6dae8
@ -2,8 +2,8 @@
|
|||||||
<app version="1">
|
<app version="1">
|
||||||
<name> USB Loader GX</name>
|
<name> USB Loader GX</name>
|
||||||
<coder>USB Loader GX Team</coder>
|
<coder>USB Loader GX Team</coder>
|
||||||
<version>1.0 r992</version>
|
<version>1.0 r993</version>
|
||||||
<release_date>201010271735</release_date>
|
<release_date>201010280642</release_date>
|
||||||
<short_description>Loads games from USB-devices</short_description>
|
<short_description>Loads games from USB-devices</short_description>
|
||||||
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
||||||
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
|
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
|
||||||
|
File diff suppressed because one or more lines are too long
@ -26,7 +26,6 @@
|
|||||||
#include "filelist.h"
|
#include "filelist.h"
|
||||||
#include "sys.h"
|
#include "sys.h"
|
||||||
#include "network/http.h"
|
#include "network/http.h"
|
||||||
#include "settings/cfg.h"
|
|
||||||
#include "utils/minizip/miniunz.h"
|
#include "utils/minizip/miniunz.h"
|
||||||
#include "usbloader/utils.h"
|
#include "usbloader/utils.h"
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "../settings/CSettings.h"
|
#include "../settings/CSettings.h"
|
||||||
#include "../main.h"
|
#include "../main.h"
|
||||||
#include "settings/newtitles.h"
|
#include "settings/newtitles.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "usbloader/GameList.h"
|
#include "usbloader/GameList.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
|
|
||||||
@ -120,12 +121,12 @@ GuiGameBrowser::GuiGameBrowser(int w, int h, int selected, int offset)
|
|||||||
|
|
||||||
for (int i = 0; i < pagesize; i++)
|
for (int i = 0; i < pagesize; i++)
|
||||||
{
|
{
|
||||||
gameTxt[i] = new GuiText(get_title(gameList[i]), 20, Theme.gametext);
|
gameTxt[i] = new GuiText(GameTitles.GetTitle(gameList[i]), 20, Theme.gametext);
|
||||||
gameTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
gameTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
gameTxt[i]->SetPosition(24, 0);
|
gameTxt[i]->SetPosition(24, 0);
|
||||||
gameTxt[i]->SetMaxWidth(maxTextWidth, DOTTED);
|
gameTxt[i]->SetMaxWidth(maxTextWidth, DOTTED);
|
||||||
|
|
||||||
gameTxtOver[i] = new GuiText(get_title(gameList[i]), 20, Theme.gametext);
|
gameTxtOver[i] = new GuiText(GameTitles.GetTitle(gameList[i]), 20, Theme.gametext);
|
||||||
gameTxtOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
gameTxtOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
gameTxtOver[i]->SetPosition(24, 0);
|
gameTxtOver[i]->SetPosition(24, 0);
|
||||||
gameTxtOver[i]->SetMaxWidth(maxTextWidth, SCROLL_HORIZONTAL);
|
gameTxtOver[i]->SetMaxWidth(maxTextWidth, SCROLL_HORIZONTAL);
|
||||||
@ -272,9 +273,10 @@ int GuiGameBrowser::FindMenuItem(int currentItem, int direction)
|
|||||||
|
|
||||||
if (nextItem < 0 || nextItem >= gameList.size()) return -1;
|
if (nextItem < 0 || nextItem >= gameList.size()) return -1;
|
||||||
|
|
||||||
if (strlen(get_title(gameList[nextItem])) > 0)
|
if (strlen(GameTitles.GetTitle(gameList[nextItem])) > 0)
|
||||||
return nextItem;
|
return nextItem;
|
||||||
else return FindMenuItem(nextItem, direction);
|
|
||||||
|
return FindMenuItem(nextItem, direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -321,9 +323,9 @@ void GuiGameBrowser::UpdateListEntries()
|
|||||||
game[i]->SetVisible(true);
|
game[i]->SetVisible(true);
|
||||||
game[i]->SetState(STATE_DEFAULT);
|
game[i]->SetState(STATE_DEFAULT);
|
||||||
}
|
}
|
||||||
gameTxt[i]->SetText(get_title(gameList[next]));
|
gameTxt[i]->SetText(GameTitles.GetTitle(gameList[next]));
|
||||||
gameTxt[i]->SetPosition(24, 0);
|
gameTxt[i]->SetPosition(24, 0);
|
||||||
gameTxtOver[i]->SetText(get_title(gameList[next]));
|
gameTxtOver[i]->SetText(GameTitles.GetTitle(gameList[next]));
|
||||||
gameTxtOver[i]->SetPosition(24, 0);
|
gameTxtOver[i]->SetPosition(24, 0);
|
||||||
|
|
||||||
if (Settings.marknewtitles)
|
if (Settings.marknewtitles)
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "gui_image_async.h"
|
#include "gui_image_async.h"
|
||||||
#include "gui_gamecarousel.h"
|
#include "gui_gamecarousel.h"
|
||||||
#include "usbloader/GameList.h"
|
#include "usbloader/GameList.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "../settings/CSettings.h"
|
#include "../settings/CSettings.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
#include "../main.h"
|
#include "../main.h"
|
||||||
@ -304,8 +305,7 @@ void GuiGameCarousel::Update(GuiTrigger * t)
|
|||||||
if (selectedItem >= 0)
|
if (selectedItem >= 0)
|
||||||
{
|
{
|
||||||
game[selectedItem]->SetEffect(EFFECT_SCALE, 1, 130);
|
game[selectedItem]->SetEffect(EFFECT_SCALE, 1, 130);
|
||||||
char *gameTitle = get_title(gameList[gameIndex[selectedItem]]);
|
gamename->SetText(GameTitles.GetTitle(gameList[gameIndex[selectedItem]]));
|
||||||
gamename->SetText(gameTitle);
|
|
||||||
}
|
}
|
||||||
else gamename->SetText((char*) NULL);
|
else gamename->SetText((char*) NULL);
|
||||||
if (selectedItem_old >= 0) game[selectedItem_old]->SetEffect(EFFECT_SCALE, -1, 100);
|
if (selectedItem_old >= 0) game[selectedItem_old]->SetEffect(EFFECT_SCALE, -1, 100);
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "gui_gamegrid.h"
|
#include "gui_gamegrid.h"
|
||||||
#include "gui_image_async.h"
|
#include "gui_image_async.h"
|
||||||
#include "usbloader/GameList.h"
|
#include "usbloader/GameList.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "../settings/CSettings.h"
|
#include "../settings/CSettings.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
#include "../prompts/PromptWindows.h"
|
#include "../prompts/PromptWindows.h"
|
||||||
@ -566,7 +567,7 @@ void GuiGameGrid::Update(GuiTrigger * t)
|
|||||||
coverImg[ii] ->SetScale(VALUE4ROWS( rows, 1.0, 0.6, 0.26 ));
|
coverImg[ii] ->SetScale(VALUE4ROWS( rows, 1.0, 0.6, 0.26 ));
|
||||||
coverImg[ii] ->SetPosition(0, VALUE4ROWS( rows, 0, -50, -80 ));
|
coverImg[ii] ->SetPosition(0, VALUE4ROWS( rows, 0, -50, -80 ));
|
||||||
}
|
}
|
||||||
titleTT[ii] ->SetText(get_title(gameList[gameIndex[ii]]));
|
titleTT[ii] ->SetText(GameTitles.GetTitle(gameList[gameIndex[ii]]));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -654,7 +655,7 @@ void GuiGameGrid::Update(GuiTrigger * t)
|
|||||||
coverImg[i] ->SetScale(VALUE4ROWS( rows, 1.0, 0.6, 0.26 ));
|
coverImg[i] ->SetScale(VALUE4ROWS( rows, 1.0, 0.6, 0.26 ));
|
||||||
coverImg[i] ->SetPosition(0, VALUE4ROWS( rows, 0, -50, -80 ));
|
coverImg[i] ->SetPosition(0, VALUE4ROWS( rows, 0, -50, -80 ));
|
||||||
}
|
}
|
||||||
titleTT[i] ->SetText(get_title(gameList[gameIndex[i]]));
|
titleTT[i] ->SetText(GameTitles.GetTitle(gameList[gameIndex[i]]));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -786,7 +787,7 @@ void GuiGameGrid::Reload(int Rows, int ListOffset)
|
|||||||
// Tooltip
|
// Tooltip
|
||||||
//------------------------
|
//------------------------
|
||||||
if (gameIndex[i] != -1)
|
if (gameIndex[i] != -1)
|
||||||
titleTT[i] = new GuiTooltip(get_title(gameList[gameIndex[i]]), Theme.tooltipAlpha);
|
titleTT[i] = new GuiTooltip(GameTitles.GetTitle(gameList[gameIndex[i]]), Theme.tooltipAlpha);
|
||||||
else titleTT[i] = new GuiTooltip(NULL, Theme.tooltipAlpha);
|
else titleTT[i] = new GuiTooltip(NULL, Theme.tooltipAlpha);
|
||||||
|
|
||||||
//------------------------
|
//------------------------
|
||||||
|
@ -16,18 +16,11 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <wiiuse/wpad.h>
|
#include <wiiuse/wpad.h>
|
||||||
//#include <debug.h>
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
extern void __exception_setreload(int t);
|
|
||||||
}
|
|
||||||
|
|
||||||
#include <di/di.h>
|
#include <di/di.h>
|
||||||
#include <sys/iosupport.h>
|
#include <sys/iosupport.h>
|
||||||
|
|
||||||
#include "libwiigui/gui.h"
|
#include "libwiigui/gui.h"
|
||||||
#include "usbloader/wbfs.h"
|
#include "usbloader/wbfs.h"
|
||||||
#include "settings/cfg.h"
|
|
||||||
#include "language/gettext.h"
|
#include "language/gettext.h"
|
||||||
#include "mload/mload.h"
|
#include "mload/mload.h"
|
||||||
#include "mload/mload_modules.h"
|
#include "mload/mload_modules.h"
|
||||||
@ -56,6 +49,11 @@ extern "C"
|
|||||||
#include "system/IosLoader.h"
|
#include "system/IosLoader.h"
|
||||||
#include "GameBootProcess.h"
|
#include "GameBootProcess.h"
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
extern void __exception_setreload(int t);
|
||||||
|
}
|
||||||
|
|
||||||
extern bool geckoinit;
|
extern bool geckoinit;
|
||||||
|
|
||||||
PartList partitions;
|
PartList partitions;
|
||||||
|
@ -254,8 +254,6 @@ int MainMenu(int menu)
|
|||||||
{
|
{
|
||||||
currentMenu = menu;
|
currentMenu = menu;
|
||||||
|
|
||||||
MountGamePartition();
|
|
||||||
|
|
||||||
pointer[0] = Resources::GetImageData("player1_point.png");
|
pointer[0] = Resources::GetImageData("player1_point.png");
|
||||||
pointer[1] = Resources::GetImageData("player2_point.png");
|
pointer[1] = Resources::GetImageData("player2_point.png");
|
||||||
pointer[2] = Resources::GetImageData("player3_point.png");
|
pointer[2] = Resources::GetImageData("player3_point.png");
|
||||||
@ -275,6 +273,8 @@ int MainMenu(int menu)
|
|||||||
bgMusic->Load(Settings.ogg_path);
|
bgMusic->Load(Settings.ogg_path);
|
||||||
bgMusic->Play();
|
bgMusic->Play();
|
||||||
|
|
||||||
|
MountGamePartition();
|
||||||
|
|
||||||
while (currentMenu != MENU_EXIT)
|
while (currentMenu != MENU_EXIT)
|
||||||
{
|
{
|
||||||
bgMusic->SetVolume(Settings.volume);
|
bgMusic->SetVolume(Settings.volume);
|
||||||
|
@ -17,7 +17,7 @@ static int FindGamesPartition(PartList * partitions)
|
|||||||
if (partitions->wbfs_n != 0)
|
if (partitions->wbfs_n != 0)
|
||||||
{
|
{
|
||||||
WBFS_Open();
|
WBFS_Open();
|
||||||
|
|
||||||
for (int p = 0; p < partitions->num; p++)
|
for (int p = 0; p < partitions->num; p++)
|
||||||
{
|
{
|
||||||
if (partitions->pinfo[p].fs_type == FS_TYPE_WBFS)
|
if (partitions->pinfo[p].fs_type == FS_TYPE_WBFS)
|
||||||
@ -115,8 +115,10 @@ int MountGamePartition(bool ShowGUI)
|
|||||||
// Added for slow HDD
|
// Added for slow HDD
|
||||||
for (int retries = 10; retries > 0; retries--)
|
for (int retries = 10; retries > 0; retries--)
|
||||||
{
|
{
|
||||||
if (Partition_GetList(WBFS_DEVICE_USB, &partitions) != 0)
|
if (Partition_GetList(WBFS_DEVICE_USB, &partitions) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.partition != -1 && partitions.num > Settings.partition)
|
if (Settings.partition != -1 && partitions.num > Settings.partition)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "settings/Settings.h"
|
#include "settings/Settings.h"
|
||||||
#include "settings/CGameSettings.h"
|
#include "settings/CGameSettings.h"
|
||||||
#include "settings/CGameStatistics.h"
|
#include "settings/CGameStatistics.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
#include "wpad.h"
|
#include "wpad.h"
|
||||||
#include "sys.h"
|
#include "sys.h"
|
||||||
@ -1402,13 +1403,13 @@ int MenuDiscList()
|
|||||||
if (!mountMethod)//only get this stuff it we are booting a game from USB
|
if (!mountMethod)//only get this stuff it we are booting a game from USB
|
||||||
{
|
{
|
||||||
WBFS_GameSize(header->id, &size);
|
WBFS_GameSize(header->id, &size);
|
||||||
if (strlen(get_title(header)) < (MAX_CHARACTERS + 3))
|
if (strlen(GameTitles.GetTitle(header)) < (MAX_CHARACTERS + 3))
|
||||||
{
|
{
|
||||||
sprintf(text, "%s", get_title(header));
|
sprintf(text, "%s", GameTitles.GetTitle(header));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strncpy(text, get_title(header), MAX_CHARACTERS);
|
strncpy(text, GameTitles.GetTitle(header), MAX_CHARACTERS);
|
||||||
text[MAX_CHARACTERS] = '\0';
|
text[MAX_CHARACTERS] = '\0';
|
||||||
strncat(text, "...", 3);
|
strncat(text, "...", 3);
|
||||||
}
|
}
|
||||||
@ -1582,7 +1583,7 @@ int MenuDiscList()
|
|||||||
|
|
||||||
//enter new game title
|
//enter new game title
|
||||||
char entered[60];
|
char entered[60];
|
||||||
snprintf(entered, sizeof(entered), "%s", get_title(header));
|
snprintf(entered, sizeof(entered), "%s", GameTitles.GetTitle(header));
|
||||||
entered[59] = '\0';
|
entered[59] = '\0';
|
||||||
int result = OnScreenKeyboard(entered, 60, 0);
|
int result = OnScreenKeyboard(entered, 60, 0);
|
||||||
if (result == 1)
|
if (result == 1)
|
||||||
@ -1672,8 +1673,8 @@ void rockout(int f)
|
|||||||
{
|
{
|
||||||
HaltGui();
|
HaltGui();
|
||||||
|
|
||||||
if (gameSelected >= 0 && gameSelected < gameList.size() && (strcasestr(get_title(gameList[gameSelected]), "guitar")
|
if (gameSelected >= 0 && gameSelected < gameList.size() && (strcasestr(GameTitles.GetTitle(gameList[gameSelected]), "guitar")
|
||||||
|| strcasestr(get_title(gameList[gameSelected]), "band") || strcasestr(get_title(gameList[gameSelected]),
|
|| strcasestr(GameTitles.GetTitle(gameList[gameSelected]), "band") || strcasestr(GameTitles.GetTitle(gameList[gameSelected]),
|
||||||
"rock")))
|
"rock")))
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include "libs/libwbfs/wiidisc.h"
|
#include "libs/libwbfs/wiidisc.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "sys.h"
|
#include "sys.h"
|
||||||
#include "settings/cfg.h"
|
#include "settings/GameTitles.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "../gecko.h"
|
#include "../gecko.h"
|
||||||
@ -115,8 +115,7 @@ int DiscBrowse(struct discHdr * header, char * alternatedname, int alternatednam
|
|||||||
GuiTrigger trigB;
|
GuiTrigger trigB;
|
||||||
trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
||||||
|
|
||||||
GuiText titleTxt(get_title(header), 28, ( GXColor )
|
GuiText titleTxt(GameTitles.GetTitle(header), 28, ( GXColor ) {0, 0, 0, 255});
|
||||||
{ 0, 0, 0, 255});
|
|
||||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
titleTxt.SetPosition(12, 40);
|
titleTxt.SetPosition(12, 40);
|
||||||
titleTxt.SetMaxWidth(356, SCROLL_HORIZONTAL);
|
titleTxt.SetMaxWidth(356, SCROLL_HORIZONTAL);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "libwiigui/gui_diskcover.h"
|
#include "libwiigui/gui_diskcover.h"
|
||||||
#include "libwiigui/Text.hpp"
|
#include "libwiigui/Text.hpp"
|
||||||
#include "settings/CGameStatistics.h"
|
#include "settings/CGameStatistics.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "network/networkops.h"
|
#include "network/networkops.h"
|
||||||
#include "network/http.h"
|
#include "network/http.h"
|
||||||
#include "prompts/PromptWindows.h"
|
#include "prompts/PromptWindows.h"
|
||||||
@ -1106,35 +1107,6 @@ int WindowExitPrompt()
|
|||||||
return choice;
|
return choice;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupLockedButton(GuiButton *btnLocked, GuiImage *img, GuiSound *sndOver, GuiSound *sndClick,
|
|
||||||
GuiTrigger *trig)
|
|
||||||
{
|
|
||||||
btnLocked->SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
|
||||||
//btnLocked->SetPosition(xPos, yPos);
|
|
||||||
btnLocked->SetPosition(125, 40);
|
|
||||||
btnLocked->SetImage(img);
|
|
||||||
btnLocked->SetSoundOver(sndOver);
|
|
||||||
btnLocked->SetSoundClick(sndClick);
|
|
||||||
btnLocked->SetTrigger(trig);
|
|
||||||
btnLocked->SetEffectGrow();
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 SetLocked(GuiButton *lock1, u8* gameId, u8 locked)
|
|
||||||
{
|
|
||||||
int LockStatus = (locked == GameStatistics.GetLockStatus(gameId)) ? 0 : locked; // Press the current rank to reset the rank
|
|
||||||
|
|
||||||
GameStatistics.SetLockStatus(gameId, LockStatus);
|
|
||||||
GameStatistics.Save();
|
|
||||||
|
|
||||||
return LockStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetLockedImage(const u8 * gameid, GuiImage *b1, GuiImageData *on, GuiImageData *off)
|
|
||||||
{
|
|
||||||
int lockedvar = GameStatistics.GetLockStatus(gameid);
|
|
||||||
b1->SetImage(lockedvar == 1 ? on : off);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetupFavoriteButton(GuiButton *btnFavorite, int xPos, GuiImage *img, GuiSound *sndOver, GuiSound *sndClick,
|
void SetupFavoriteButton(GuiButton *btnFavorite, int xPos, GuiImage *img, GuiSound *sndOver, GuiSound *sndClick,
|
||||||
GuiTrigger *trig)
|
GuiTrigger *trig)
|
||||||
{
|
{
|
||||||
@ -1338,11 +1310,6 @@ int GameWindowPrompt()
|
|||||||
SetupFavoriteButton(&btnFavorite4, -117, &btnFavoriteImg4, &btnSoundOver, btnClick2, &trigA);
|
SetupFavoriteButton(&btnFavorite4, -117, &btnFavoriteImg4, &btnSoundOver, btnClick2, &trigA);
|
||||||
SetupFavoriteButton(&btnFavorite5, -90, &btnFavoriteImg5, &btnSoundOver, btnClick2, &trigA);
|
SetupFavoriteButton(&btnFavorite5, -90, &btnFavoriteImg5, &btnSoundOver, btnClick2, &trigA);
|
||||||
|
|
||||||
GuiImage btnLockedImg;
|
|
||||||
btnLockedImg.SetWidescreen(Settings.widescreen);
|
|
||||||
GuiButton btnLocked(imgLocked.GetWidth(), imgLocked.GetHeight());
|
|
||||||
SetupLockedButton(&btnLocked, &btnLockedImg, &btnSoundOver, btnClick2, &trigA);
|
|
||||||
|
|
||||||
GuiImage btnLeftImg(&imgLeft);
|
GuiImage btnLeftImg(&imgLeft);
|
||||||
if (Settings.wsprompt)
|
if (Settings.wsprompt)
|
||||||
{
|
{
|
||||||
@ -1382,7 +1349,6 @@ int GameWindowPrompt()
|
|||||||
if (Settings.godmode == 1 && mountMethod != 2 && mountMethod != 3)
|
if (Settings.godmode == 1 && mountMethod != 2 && mountMethod != 3)
|
||||||
{
|
{
|
||||||
promptWindow.Append(&btn3);
|
promptWindow.Append(&btn3);
|
||||||
promptWindow.Append(&btnLocked);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
promptWindow.Append(&diskImg2);
|
promptWindow.Append(&diskImg2);
|
||||||
@ -1519,13 +1485,11 @@ int GameWindowPrompt()
|
|||||||
sizeTxt.SetTextf("%.2fGB", size); //set size text;
|
sizeTxt.SetTextf("%.2fGB", size); //set size text;
|
||||||
}
|
}
|
||||||
|
|
||||||
nameTxt.SetText(get_title(header));
|
nameTxt.SetText(GameTitles.GetTitle(header));
|
||||||
playcntTxt.SetTextf("%s: %i", tr( "Play Count" ), GameStatistics.GetPlayCount(header));
|
playcntTxt.SetTextf("%s: %i", tr( "Play Count" ), GameStatistics.GetPlayCount(header));
|
||||||
SetFavoriteImages(header->id, &btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5,
|
SetFavoriteImages(header->id, &btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5,
|
||||||
&imgFavorite, &imgNotFavorite);
|
&imgFavorite, &imgNotFavorite);
|
||||||
|
|
||||||
SetLockedImage(header->id, &btnLockedImg, &imgLocked, &imgNotLocked);
|
|
||||||
|
|
||||||
nameTxt.SetPosition(0, 1);
|
nameTxt.SetPosition(0, 1);
|
||||||
|
|
||||||
if (changed != 3 && changed != 4) // changed==3 or changed==4 --> only Resume the GUI
|
if (changed != 3 && changed != 4) // changed==3 or changed==4 --> only Resume the GUI
|
||||||
@ -1606,15 +1570,6 @@ int GameWindowPrompt()
|
|||||||
}
|
}
|
||||||
btnFavorite1.ResetState();
|
btnFavorite1.ResetState();
|
||||||
}
|
}
|
||||||
else if (btnLocked.GetState() == STATE_CLICKED) //switch locked
|
|
||||||
{
|
|
||||||
if (isInserted(Settings.BootDevice))
|
|
||||||
{
|
|
||||||
SetLocked(&btnLocked, header->id, 1);
|
|
||||||
SetLockedImage(header->id, &btnLockedImg, &imgLocked, &imgNotLocked);
|
|
||||||
}
|
|
||||||
btnLocked.ResetState();
|
|
||||||
}
|
|
||||||
else if (btnFavorite2.GetState() == STATE_CLICKED) //switch favorite
|
else if (btnFavorite2.GetState() == STATE_CLICKED) //switch favorite
|
||||||
{
|
{
|
||||||
if (isInserted(Settings.BootDevice))
|
if (isInserted(Settings.BootDevice))
|
||||||
@ -1803,9 +1758,8 @@ int DiscWait(const char *title, const char *msg, const char *btn1Label, const ch
|
|||||||
promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||||
promptWindow.SetPosition(0, -10);
|
promptWindow.SetPosition(0, -10);
|
||||||
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, Settings.sfxvolume);
|
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, Settings.sfxvolume);
|
||||||
// because destroy GuiSound must wait while sound playing is finished, we use a global sound
|
|
||||||
if (!btnClick2) btnClick2 = new GuiSound(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
|
if (!btnClick2) btnClick2 = new GuiSound(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
|
||||||
// GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
|
|
||||||
|
|
||||||
GuiImageData btnOutline(Resources::GetFile("button_dialogue_box.png"), Resources::GetFileSize("button_dialogue_box.png"));
|
GuiImageData btnOutline(Resources::GetFile("button_dialogue_box.png"), Resources::GetFileSize("button_dialogue_box.png"));
|
||||||
GuiImageData dialogBox(Resources::GetFile("dialogue_box.png"), Resources::GetFileSize("dialogue_box.png"));
|
GuiImageData dialogBox(Resources::GetFile("dialogue_box.png"), Resources::GetFileSize("dialogue_box.png"));
|
||||||
@ -1862,7 +1816,7 @@ int DiscWait(const char *title, const char *msg, const char *btn1Label, const ch
|
|||||||
GuiButton btn2(&btn2Img, &btn2Img, 1, 4, -20, -25, &trigA, &btnSoundOver, btnClick2, 1);
|
GuiButton btn2(&btn2Img, &btn2Img, 1, 4, -20, -25, &trigA, &btnSoundOver, btnClick2, 1);
|
||||||
btn2.SetLabel(&btn2Txt);
|
btn2.SetLabel(&btn2Txt);
|
||||||
|
|
||||||
if ((Settings.wsprompt) && (Settings.widescreen)) /////////////adjust buttons for widescreen
|
if (Settings.wsprompt && Settings.widescreen) /////////////adjust buttons for widescreen
|
||||||
{
|
{
|
||||||
msgTxt.SetMaxWidth(380);
|
msgTxt.SetMaxWidth(380);
|
||||||
if (btn2Label)
|
if (btn2Label)
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <zlib.h>
|
||||||
|
|
||||||
#include "language/gettext.h"
|
#include "language/gettext.h"
|
||||||
#include "libwiigui/gui.h"
|
#include "libwiigui/gui.h"
|
||||||
@ -16,7 +17,6 @@
|
|||||||
#include "network/http.h"
|
#include "network/http.h"
|
||||||
#include "filelist.h"
|
#include "filelist.h"
|
||||||
#include "FileOperations/fileops.h"
|
#include "FileOperations/fileops.h"
|
||||||
#include "settings/cfg.h"
|
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
#include "sys.h"
|
#include "sys.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -31,8 +31,6 @@ u32 titleCnt;
|
|||||||
extern u32 infilesize;
|
extern u32 infilesize;
|
||||||
extern u32 uncfilesize;
|
extern u32 uncfilesize;
|
||||||
extern char wiiloadVersion[2];
|
extern char wiiloadVersion[2];
|
||||||
#include <zlib.h>
|
|
||||||
#include "settings/cfg.h"
|
|
||||||
|
|
||||||
/*** Extern functions ***/
|
/*** Extern functions ***/
|
||||||
extern void ResumeGui();
|
extern void ResumeGui();
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "FileOperations/fileops.h"
|
#include "FileOperations/fileops.h"
|
||||||
#include "prompts/PromptWindows.h"
|
#include "prompts/PromptWindows.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "gameinfo.h"
|
#include "gameinfo.h"
|
||||||
#include "usbloader/GameList.h"
|
#include "usbloader/GameList.h"
|
||||||
#include "../gecko.h"
|
#include "../gecko.h"
|
||||||
@ -1117,7 +1118,7 @@ bool save_gamelist(int txt) // save gamelist
|
|||||||
fprintf(f, "%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2], header->id[3], header->id[4],
|
fprintf(f, "%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2], header->id[3], header->id[4],
|
||||||
header->id[5]);
|
header->id[5]);
|
||||||
fprintf(f, " [%.2f] ", size);
|
fprintf(f, " [%.2f] ", size);
|
||||||
fprintf(f, " %s", get_title(header));
|
fprintf(f, " %s", GameTitles.GetTitle(header));
|
||||||
}
|
}
|
||||||
fprintf(f, "\n");
|
fprintf(f, "\n");
|
||||||
}
|
}
|
||||||
@ -1134,11 +1135,8 @@ bool save_gamelist(int txt) // save gamelist
|
|||||||
if (i < 500)
|
if (i < 500)
|
||||||
{
|
{
|
||||||
fprintf(f, "\"%c%c%c%c%c%c\",\"%.2f\",\"%s\"\n", header->id[0], header->id[1], header->id[2],
|
fprintf(f, "\"%c%c%c%c%c%c\",\"%.2f\",\"%s\"\n", header->id[0], header->id[1], header->id[2],
|
||||||
header->id[3], header->id[4], header->id[5], size, get_title(header));
|
header->id[3], header->id[4], header->id[5], size, GameTitles.GetTitle(header));
|
||||||
//fprintf(f, "\"%.2f\",", size);
|
|
||||||
//fprintf(f, "\"%s\"",get_title(header));
|
|
||||||
}
|
}
|
||||||
//fprintf(f, "\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
@ -179,7 +179,8 @@ bool CGameSettings::Save()
|
|||||||
fprintf(f, "loadalternatedol:%d; ", GameList[i].loadalternatedol);
|
fprintf(f, "loadalternatedol:%d; ", GameList[i].loadalternatedol);
|
||||||
fprintf(f, "alternatedolstart:%d; ", GameList[i].alternatedolstart);
|
fprintf(f, "alternatedolstart:%d; ", GameList[i].alternatedolstart);
|
||||||
fprintf(f, "alternatedolname:%s; ", GameList[i].alternatedolname);
|
fprintf(f, "alternatedolname:%s; ", GameList[i].alternatedolname);
|
||||||
fprintf(f, "returnTo:%d;\n", GameList[i].returnTo);
|
fprintf(f, "returnTo:%d; ", GameList[i].returnTo);
|
||||||
|
fprintf(f, "Locked:%d;\n", GameList[i].Locked);
|
||||||
}
|
}
|
||||||
fprintf(f, "# END\n");
|
fprintf(f, "# END\n");
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -300,6 +301,14 @@ bool CGameSettings::SetSetting(GameCFG & game, char *name, char *value)
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if(strcmp(name, "Locked") == 0)
|
||||||
|
{
|
||||||
|
if (sscanf(value, "%d", &i) == 1)
|
||||||
|
{
|
||||||
|
game.Locked = i;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -385,3 +394,15 @@ void CGameSettings::TrimLine(char *dest, const char *src, int size)
|
|||||||
|
|
||||||
dest[i] = '\0';
|
dest[i] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CGameSettings::GetPartenalPEGI(int parental)
|
||||||
|
{
|
||||||
|
switch(parental)
|
||||||
|
{
|
||||||
|
case 1: return 7;
|
||||||
|
case 2: return 12;
|
||||||
|
case 3: return 16;
|
||||||
|
case 4: return 18;
|
||||||
|
default: return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -23,6 +23,7 @@ typedef struct _GameCFG
|
|||||||
u8 patchcountrystrings;
|
u8 patchcountrystrings;
|
||||||
char alternatedolname[40];
|
char alternatedolname[40];
|
||||||
u8 returnTo;
|
u8 returnTo;
|
||||||
|
u8 Locked;
|
||||||
} GameCFG;
|
} GameCFG;
|
||||||
|
|
||||||
class CGameSettings
|
class CGameSettings
|
||||||
@ -50,7 +51,8 @@ class CGameSettings
|
|||||||
GameCFG * GetGameCFG(const u8 * id) { return GetGameCFG((const char *) id); };
|
GameCFG * GetGameCFG(const u8 * id) { return GetGameCFG((const char *) id); };
|
||||||
//!Overload
|
//!Overload
|
||||||
GameCFG * GetGameCFG(const struct discHdr * game) { if(!game) return NULL; else return GetGameCFG(game->id); };
|
GameCFG * GetGameCFG(const struct discHdr * game) { if(!game) return NULL; else return GetGameCFG(game->id); };
|
||||||
|
//!Quick settings to PEGI conversion
|
||||||
|
static int GetPartenalPEGI(int parentalsetting);
|
||||||
protected:
|
protected:
|
||||||
bool ReadGameID(const char * src, char * GameID, int size);
|
bool ReadGameID(const char * src, char * GameID, int size);
|
||||||
bool SetSetting(GameCFG & game, char *name, char *value);
|
bool SetSetting(GameCFG & game, char *name, char *value);
|
||||||
|
@ -119,7 +119,6 @@ bool CGameStatistics::Save()
|
|||||||
{
|
{
|
||||||
fprintf(f, "game:%s = ", GameList[i].id);
|
fprintf(f, "game:%s = ", GameList[i].id);
|
||||||
fprintf(f, "FavoriteRank:%d; ", GameList[i].FavoriteRank);
|
fprintf(f, "FavoriteRank:%d; ", GameList[i].FavoriteRank);
|
||||||
fprintf(f, "LockStatus:%d; ", GameList[i].LockStatus);
|
|
||||||
fprintf(f, "PlayCount:%d;\n", GameList[i].PlayCount);
|
fprintf(f, "PlayCount:%d;\n", GameList[i].PlayCount);
|
||||||
}
|
}
|
||||||
fprintf(f, "# END\n");
|
fprintf(f, "# END\n");
|
||||||
@ -140,14 +139,6 @@ bool CGameStatistics::SetSetting(GameStatus & game, char *name, char *value)
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(strcmp(name, "LockStatus") == 0)
|
|
||||||
{
|
|
||||||
if (sscanf(value, "%d", &i) == 1)
|
|
||||||
{
|
|
||||||
game.LockStatus = i;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if(strcmp(name, "PlayCount") == 0)
|
else if(strcmp(name, "PlayCount") == 0)
|
||||||
{
|
{
|
||||||
if (sscanf(value, "%d", &i) == 1)
|
if (sscanf(value, "%d", &i) == 1)
|
||||||
@ -251,14 +242,12 @@ void CGameStatistics::SetPlayCount(const char * id, int count)
|
|||||||
GameStatus NewStatus;
|
GameStatus NewStatus;
|
||||||
snprintf(NewStatus.id, sizeof(NewStatus.id), id);
|
snprintf(NewStatus.id, sizeof(NewStatus.id), id);
|
||||||
NewStatus.FavoriteRank = 0;
|
NewStatus.FavoriteRank = 0;
|
||||||
NewStatus.LockStatus = 0;
|
|
||||||
NewStatus.PlayCount = count;
|
NewStatus.PlayCount = count;
|
||||||
|
|
||||||
GameStatus * game = GetGameStatus(id);
|
GameStatus * game = GetGameStatus(id);
|
||||||
if(game)
|
if(game)
|
||||||
{
|
{
|
||||||
NewStatus.FavoriteRank = game->FavoriteRank;
|
NewStatus.FavoriteRank = game->FavoriteRank;
|
||||||
NewStatus.LockStatus = game->LockStatus;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AddGame(NewStatus);
|
AddGame(NewStatus);
|
||||||
@ -272,35 +261,12 @@ void CGameStatistics::SetFavoriteRank(const char * id, int rank)
|
|||||||
GameStatus NewStatus;
|
GameStatus NewStatus;
|
||||||
snprintf(NewStatus.id, sizeof(NewStatus.id), id);
|
snprintf(NewStatus.id, sizeof(NewStatus.id), id);
|
||||||
NewStatus.FavoriteRank = rank;
|
NewStatus.FavoriteRank = rank;
|
||||||
NewStatus.LockStatus = 0;
|
|
||||||
NewStatus.PlayCount = 0;
|
NewStatus.PlayCount = 0;
|
||||||
|
|
||||||
GameStatus * game = GetGameStatus(id);
|
GameStatus * game = GetGameStatus(id);
|
||||||
if(game)
|
if(game)
|
||||||
{
|
{
|
||||||
NewStatus.PlayCount = game->PlayCount;
|
NewStatus.PlayCount = game->PlayCount;
|
||||||
NewStatus.LockStatus = game->LockStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
AddGame(NewStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CGameStatistics::SetLockStatus(const char * id, int lock)
|
|
||||||
{
|
|
||||||
if(!id)
|
|
||||||
return;
|
|
||||||
|
|
||||||
GameStatus NewStatus;
|
|
||||||
snprintf(NewStatus.id, sizeof(NewStatus.id), id);
|
|
||||||
NewStatus.FavoriteRank = 0;
|
|
||||||
NewStatus.LockStatus = lock;
|
|
||||||
NewStatus.PlayCount = 0;
|
|
||||||
|
|
||||||
GameStatus * game = GetGameStatus(id);
|
|
||||||
if(game)
|
|
||||||
{
|
|
||||||
NewStatus.PlayCount = game->PlayCount;
|
|
||||||
NewStatus.FavoriteRank = game->FavoriteRank;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AddGame(NewStatus);
|
AddGame(NewStatus);
|
||||||
@ -329,16 +295,3 @@ int CGameStatistics::GetFavoriteRank(const char * id)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CGameStatistics::GetLockStatus(const char * id)
|
|
||||||
{
|
|
||||||
if(!id)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
GameStatus * game = GetGameStatus(id);
|
|
||||||
if(game)
|
|
||||||
return game->LockStatus;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ typedef struct _Stats
|
|||||||
{
|
{
|
||||||
char id[7];
|
char id[7];
|
||||||
u8 FavoriteRank;
|
u8 FavoriteRank;
|
||||||
u8 LockStatus;
|
|
||||||
u8 PlayCount;
|
u8 PlayCount;
|
||||||
} GameStatus;
|
} GameStatus;
|
||||||
|
|
||||||
@ -50,14 +49,6 @@ class CGameStatistics
|
|||||||
int GetFavoriteRank(const char * id);
|
int GetFavoriteRank(const char * id);
|
||||||
int GetFavoriteRank(const u8 * id) { return GetFavoriteRank((const char *) id); };
|
int GetFavoriteRank(const u8 * id) { return GetFavoriteRank((const char *) id); };
|
||||||
int GetFavoriteRank(const struct discHdr * game) { if(!game) return 0; else return GetFavoriteRank(game->id); };
|
int GetFavoriteRank(const struct discHdr * game) { if(!game) return 0; else return GetFavoriteRank(game->id); };
|
||||||
//!Overloads for set LockStatus
|
|
||||||
void SetLockStatus(const char * id, int lock);
|
|
||||||
void SetLockStatus(const u8 * id, int lock) { SetLockStatus((const char *) id, lock); };
|
|
||||||
void SetLockStatus(const struct discHdr * game, int lock) { if(!game) return; SetLockStatus(game->id, lock); };
|
|
||||||
//!Overloads for get LockStatus
|
|
||||||
int GetLockStatus(const char * id);
|
|
||||||
int GetLockStatus(const u8 * id) { return GetLockStatus((const char *) id); };
|
|
||||||
int GetLockStatus(const struct discHdr * game) { if(!game) return 0; else return GetLockStatus(game->id); };
|
|
||||||
//!Get GameStatus
|
//!Get GameStatus
|
||||||
GameStatus * GetGameStatus(const char * id);
|
GameStatus * GetGameStatus(const char * id);
|
||||||
//!Overload
|
//!Overload
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <gctypes.h>
|
#include <gctypes.h>
|
||||||
#include "SettingsEnums.h"
|
#include "SettingsEnums.h"
|
||||||
#include "cfg.h"
|
|
||||||
|
|
||||||
class CSettings
|
class CSettings
|
||||||
{
|
{
|
||||||
|
66
source/settings/GameTitles.cpp
Normal file
66
source/settings/GameTitles.cpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#include <string.h>
|
||||||
|
#include "GameTitles.h"
|
||||||
|
|
||||||
|
CGameTitles GameTitles;
|
||||||
|
|
||||||
|
void CGameTitles::SetGameTitle(const char * id, const char * title)
|
||||||
|
{
|
||||||
|
if(!id || !title)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(u32 i = 0; i < TitleList.size(); ++i)
|
||||||
|
{
|
||||||
|
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
||||||
|
{
|
||||||
|
TitleList[i].Title = title;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GameTitle newTitle;
|
||||||
|
newTitle.Title = title;
|
||||||
|
|
||||||
|
//! Just in case a 0 termination is missing
|
||||||
|
int n;
|
||||||
|
for(n = 0; n < 6; ++n)
|
||||||
|
newTitle.GameID[n] = id[n];
|
||||||
|
|
||||||
|
newTitle.GameID[n] = '\0';
|
||||||
|
|
||||||
|
TitleList.push_back(newTitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * CGameTitles::GetTitle(const char * id)
|
||||||
|
{
|
||||||
|
if(!id)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for(u32 i = 0; i < TitleList.size(); ++i)
|
||||||
|
{
|
||||||
|
if(strncasecmp(id, TitleList[i].GameID, 6) == 0)
|
||||||
|
return TitleList[i].Title.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * CGameTitles::GetTitle(const struct discHdr *header)
|
||||||
|
{
|
||||||
|
if(!header)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for(u32 i = 0; i < TitleList.size(); ++i)
|
||||||
|
{
|
||||||
|
if(strncasecmp((const char *) header->id, TitleList[i].GameID, 6) == 0)
|
||||||
|
return TitleList[i].Title.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
return header->title;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGameTitles::SetDefault()
|
||||||
|
{
|
||||||
|
TitleList.clear();
|
||||||
|
//! Free vector memory
|
||||||
|
std::vector<GameTitle>().swap(TitleList);
|
||||||
|
}
|
39
source/settings/GameTitles.h
Normal file
39
source/settings/GameTitles.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#ifndef WIITDB_TITLES_H_
|
||||||
|
#define WIITDB_TITLES_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <gctypes.h>
|
||||||
|
#include "usbloader/disc.h"
|
||||||
|
|
||||||
|
typedef struct _GameTitle
|
||||||
|
{
|
||||||
|
char GameID[7];
|
||||||
|
std::string Title;
|
||||||
|
|
||||||
|
} GameTitle;
|
||||||
|
|
||||||
|
class CGameTitles
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Set a game title from wiitdb
|
||||||
|
void SetGameTitle(const char * id, const char * title);
|
||||||
|
//! Overload
|
||||||
|
void SetGameTitle(const u8 * id, const char * title) { SetGameTitle((const char *) id, title); };
|
||||||
|
|
||||||
|
//! Get a game title
|
||||||
|
const char * GetTitle(const char * id);
|
||||||
|
//! Overload
|
||||||
|
const char * GetTitle(const u8 * id) { return GetTitle((const char *) id); };
|
||||||
|
//! Overload
|
||||||
|
const char * GetTitle(const struct discHdr *header);
|
||||||
|
|
||||||
|
//! Set default game titles
|
||||||
|
void SetDefault();
|
||||||
|
protected:
|
||||||
|
std::vector<GameTitle> TitleList;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern CGameTitles GameTitles;
|
||||||
|
|
||||||
|
#endif
|
@ -10,6 +10,7 @@
|
|||||||
#include "settings/SettingsPrompts.h"
|
#include "settings/SettingsPrompts.h"
|
||||||
#include "settings/CGameSettings.h"
|
#include "settings/CGameSettings.h"
|
||||||
#include "settings/CGameStatistics.h"
|
#include "settings/CGameStatistics.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "prompts/filebrowser.h"
|
#include "prompts/filebrowser.h"
|
||||||
#include "cheats/cheatmenu.h"
|
#include "cheats/cheatmenu.h"
|
||||||
#include "themes/CTheme.h"
|
#include "themes/CTheme.h"
|
||||||
@ -19,7 +20,6 @@
|
|||||||
#include "filelist.h"
|
#include "filelist.h"
|
||||||
#include "FileOperations/fileops.h"
|
#include "FileOperations/fileops.h"
|
||||||
#include "sys.h"
|
#include "sys.h"
|
||||||
#include "cfg.h"
|
|
||||||
#include "usbloader/partition_usbloader.h"
|
#include "usbloader/partition_usbloader.h"
|
||||||
#include "usbloader/utils.h"
|
#include "usbloader/utils.h"
|
||||||
#include "xml/xml.h"
|
#include "xml/xml.h"
|
||||||
@ -2238,13 +2238,13 @@ int MenuSettings()
|
|||||||
{
|
{
|
||||||
reloaddatabasefile = true;
|
reloaddatabasefile = true;
|
||||||
CloseXMLDatabase();
|
CloseXMLDatabase();
|
||||||
CFG_Cleanup();
|
GameTitles.SetDefault();
|
||||||
}
|
}
|
||||||
OpenXMLDatabase(Settings.titlestxt_path, Settings.db_language, Settings.db_JPtoEN, reloaddatabasefile,
|
OpenXMLDatabase(Settings.titlestxt_path, Settings.db_language, Settings.db_JPtoEN, reloaddatabasefile,
|
||||||
Settings.titlesOverride == 1 ? true : false, true); // open file, reload titles, keep in memory
|
Settings.titlesOverride == 1 ? true : false, true); // open file, reload titles, keep in memory
|
||||||
}
|
}
|
||||||
// disable titles from database if setting has changed
|
// disable titles from database if setting has changed
|
||||||
if (opt_override != opt_overridenew && Settings.titlesOverride == 0) titles_default();
|
if (opt_override != opt_overridenew && Settings.titlesOverride == 0) GameTitles.SetDefault();
|
||||||
|
|
||||||
HaltGui();
|
HaltGui();
|
||||||
|
|
||||||
@ -2290,11 +2290,11 @@ int MenuGameSettings(struct discHdr * header)
|
|||||||
char gameName[31];
|
char gameName[31];
|
||||||
if (!mountMethod)
|
if (!mountMethod)
|
||||||
{
|
{
|
||||||
if (strlen(get_title(header)) < (27 + 3))
|
if (strlen(GameTitles.GetTitle(header)) < (27 + 3))
|
||||||
sprintf(gameName, "%s", get_title(header));
|
sprintf(gameName, "%s", GameTitles.GetTitle(header));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strncpy(gameName, get_title(header), 27);
|
strncpy(gameName, GameTitles.GetTitle(header), 27);
|
||||||
gameName[27] = '\0';
|
gameName[27] = '\0';
|
||||||
strncat(gameName, "...", 3);
|
strncat(gameName, "...", 3);
|
||||||
}
|
}
|
||||||
@ -2302,7 +2302,7 @@ int MenuGameSettings(struct discHdr * header)
|
|||||||
else sprintf(gameName, "%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2], header->id[3], header->id[4],
|
else sprintf(gameName, "%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2], header->id[3], header->id[4],
|
||||||
header->id[5]);
|
header->id[5]);
|
||||||
|
|
||||||
GuiText titleTxt(!mountMethod ? get_title(header) : gameName, 28, ( GXColor )
|
GuiText titleTxt(!mountMethod ? GameTitles.GetTitle(header) : gameName, 28, ( GXColor )
|
||||||
{ 0, 0, 0, 255});
|
{ 0, 0, 0, 255});
|
||||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
titleTxt.SetPosition(12, 40);
|
titleTxt.SetPosition(12, 40);
|
||||||
@ -2434,6 +2434,7 @@ int MenuGameSettings(struct discHdr * header)
|
|||||||
game_cfg.iosreloadblock = OFF;
|
game_cfg.iosreloadblock = OFF;
|
||||||
strcpy(game_cfg.alternatedolname, "");
|
strcpy(game_cfg.alternatedolname, "");
|
||||||
game_cfg.returnTo = 1;
|
game_cfg.returnTo = 1;
|
||||||
|
game_cfg.Locked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pageToDisplay = 1;
|
int pageToDisplay = 1;
|
||||||
@ -2791,6 +2792,13 @@ int MenuGameSettings(struct discHdr * header)
|
|||||||
options2.SetValue(Idx, "%s", tr( opts_off_on[game_cfg.iosreloadblock] ));
|
options2.SetValue(Idx, "%s", tr( opts_off_on[game_cfg.iosreloadblock] ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ret == ++Idx || firstRun)
|
||||||
|
{
|
||||||
|
if (firstRun) options2.SetName(Idx, "%s", tr( "Game Locked" ));
|
||||||
|
if (ret == Idx && ++game_cfg.Locked >= MAX_ON_OFF) game_cfg.Locked = 0;
|
||||||
|
options2.SetValue(Idx, "%s", tr( opts_off_on[game_cfg.Locked] ));
|
||||||
|
}
|
||||||
|
|
||||||
firstRun = false;
|
firstRun = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3015,6 +3023,7 @@ int MenuGameSettings(struct discHdr * header)
|
|||||||
game_cfg.parentalcontrol = 0;
|
game_cfg.parentalcontrol = 0;
|
||||||
strcpy(game_cfg.alternatedolname, "");
|
strcpy(game_cfg.alternatedolname, "");
|
||||||
game_cfg.returnTo = 1;
|
game_cfg.returnTo = 1;
|
||||||
|
game_cfg.Locked = 0;
|
||||||
GameSettings.Remove(header->id);
|
GameSettings.Remove(header->id);
|
||||||
GameSettings.Save();
|
GameSettings.Save();
|
||||||
}
|
}
|
||||||
|
@ -1,307 +0,0 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
|
|
||||||
#include "language/gettext.h"
|
|
||||||
#include "FileOperations/fileops.h"
|
|
||||||
#include "cfg.h"
|
|
||||||
#define isspace2(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v')
|
|
||||||
|
|
||||||
|
|
||||||
u8 ocarinaChoice = 0;
|
|
||||||
u8 videoChoice = 0;
|
|
||||||
u8 faveChoice = 0;
|
|
||||||
u8 languageChoice = 0;
|
|
||||||
u8 viChoice = 0;
|
|
||||||
u8 iosChoice = 0;
|
|
||||||
u8 parentalcontrolChoice = 0;
|
|
||||||
u8 fix002 = 0;
|
|
||||||
u8 reloadblock = 0;
|
|
||||||
u8 countrystrings = 0;
|
|
||||||
u8 alternatedol = 0;
|
|
||||||
u32 alternatedoloffset = 0;
|
|
||||||
u8 xflip = 0;
|
|
||||||
u8 sort = 0;
|
|
||||||
u8 fave = 0;
|
|
||||||
u8 qboot = 0;
|
|
||||||
u8 wsprompt = 0;
|
|
||||||
u8 keyset = 0;
|
|
||||||
u8 listDisplay = 0;
|
|
||||||
u8 partition = -1;
|
|
||||||
char alternatedname[40];
|
|
||||||
u8 returnToLoaderGV = 1; //global variable used for returnToLoaderShit. defaults to "yes, patch return to loader"
|
|
||||||
|
|
||||||
struct ID_Title
|
|
||||||
{
|
|
||||||
char id[6];
|
|
||||||
char * title;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ID_Control
|
|
||||||
{
|
|
||||||
char id[6];
|
|
||||||
u8 block;
|
|
||||||
};
|
|
||||||
// renamed titles
|
|
||||||
int num_title = 0; //number of titles
|
|
||||||
struct ID_Title *cfg_title = NULL;
|
|
||||||
|
|
||||||
int num_control = 0;
|
|
||||||
struct ID_Control *cfg_control = NULL;
|
|
||||||
|
|
||||||
char *cfg_get_title(u8 *id)
|
|
||||||
{
|
|
||||||
if (!id) return NULL;
|
|
||||||
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < num_title; i++)
|
|
||||||
{
|
|
||||||
if (strncmp((char*) id, cfg_title[i].id, 6) == 0)
|
|
||||||
{
|
|
||||||
return cfg_title[i].title;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *get_title(struct discHdr *header)
|
|
||||||
{
|
|
||||||
if (!header) return NULL;
|
|
||||||
|
|
||||||
char *title = cfg_get_title(header->id);
|
|
||||||
if (title) return title;
|
|
||||||
return header->title;
|
|
||||||
}
|
|
||||||
|
|
||||||
void title_set(char *id, char *title)
|
|
||||||
{
|
|
||||||
if (!id || !title) return;
|
|
||||||
|
|
||||||
if (!cfg_title) cfg_title = (struct ID_Title *) malloc(sizeof(struct ID_Title));
|
|
||||||
|
|
||||||
char *idt = cfg_get_title((u8*) id);
|
|
||||||
if (idt)
|
|
||||||
{
|
|
||||||
// replace
|
|
||||||
free(idt);
|
|
||||||
idt = strdup(title);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
struct ID_Title * tmpStruct = (struct ID_Title *) realloc(cfg_title, (num_title + 1) * sizeof(struct ID_Title));
|
|
||||||
if (!tmpStruct)
|
|
||||||
{
|
|
||||||
// error
|
|
||||||
CFG_Cleanup();
|
|
||||||
num_title = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg_title = tmpStruct;
|
|
||||||
|
|
||||||
// add
|
|
||||||
strncpy(cfg_title[num_title].id, id, 6);
|
|
||||||
cfg_title[num_title].title = strdup(title);
|
|
||||||
num_title++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void titles_default()
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < num_title; i++)
|
|
||||||
{
|
|
||||||
memset(cfg_title[i].id, 0, 6);
|
|
||||||
free(cfg_title[i].title);
|
|
||||||
cfg_title[i].title = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 cfg_get_block(u8 *id)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < num_control; i++)
|
|
||||||
{
|
|
||||||
if (memcmp(id, cfg_control[i].id, 6) == 0)
|
|
||||||
{
|
|
||||||
return cfg_control[i].block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 get_block(struct discHdr *header)
|
|
||||||
{
|
|
||||||
return cfg_get_block(header->id);
|
|
||||||
}
|
|
||||||
|
|
||||||
s8 get_pegi_block(struct discHdr *header)
|
|
||||||
{
|
|
||||||
switch (get_block(header))
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
return 7;
|
|
||||||
case 2:
|
|
||||||
return 12;
|
|
||||||
case 3:
|
|
||||||
return 16;
|
|
||||||
case 4:
|
|
||||||
return 18;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// trim leading and trailing whitespace
|
|
||||||
// copy at max n or at max size-1
|
|
||||||
char* trim_n_copy(char *dest, char *src, int n, int size)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
// trim leading white space
|
|
||||||
while (isspace2( *src ))
|
|
||||||
{
|
|
||||||
src++;
|
|
||||||
n--;
|
|
||||||
}
|
|
||||||
len = strlen(src);
|
|
||||||
if (len > n) len = n;
|
|
||||||
// trim trailing white space
|
|
||||||
while (len > 0 && isspace2( src[len-1] ))
|
|
||||||
len--;
|
|
||||||
if (len >= size) len = size - 1;
|
|
||||||
strlcpy(dest, src, len + 1);
|
|
||||||
//printf("trim_copy: '%s' %d\n", dest, len); //sleep(1);
|
|
||||||
return dest;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* trimcopy(char *dest, char *src, int size)
|
|
||||||
{
|
|
||||||
int len;
|
|
||||||
while (*src == ' ')
|
|
||||||
src++;
|
|
||||||
len = strlen(src);
|
|
||||||
// trim trailing " \r\n"
|
|
||||||
while (len > 0 && strchr(" \r\n", src[len - 1]))
|
|
||||||
len--;
|
|
||||||
if (len >= size) len = size - 1;
|
|
||||||
strlcpy(dest, src, len + 1);
|
|
||||||
return dest;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// split line to part1 delimiter part2
|
|
||||||
bool trimsplit(char *line, char *part1, char *part2, char delim, int size)
|
|
||||||
{
|
|
||||||
char *eq = strchr(line, delim);
|
|
||||||
if (!eq) return false;
|
|
||||||
trim_n_copy(part1, line, eq - line, size);
|
|
||||||
trimcopy(part2, eq + 1, size);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
void cfg_parseline(char *line, void(*set_func)(char*, char*))
|
|
||||||
{
|
|
||||||
// split name = value
|
|
||||||
char tmp[300], name[200], val[200];
|
|
||||||
strlcpy(tmp, line, sizeof(tmp));
|
|
||||||
char *eq = strchr(tmp, '=');
|
|
||||||
if (!eq) return;
|
|
||||||
*eq = 0;
|
|
||||||
trimcopy(name, tmp, sizeof(name));
|
|
||||||
trimcopy(val, eq + 1, sizeof(val));
|
|
||||||
//printf("CFG: %s = %s\n", name, val);
|
|
||||||
set_func(name, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cfg_parsetitleline(char *line, void(*set_func)(char*, char*, u8))
|
|
||||||
{
|
|
||||||
// split name = value
|
|
||||||
char tmp[200], name[200], val[200];
|
|
||||||
int block = 0;
|
|
||||||
strlcpy(tmp, line, sizeof(tmp));
|
|
||||||
char *eq = strchr(tmp, '=');
|
|
||||||
if (!eq) return;
|
|
||||||
*eq = 0;
|
|
||||||
trimcopy(name, tmp, sizeof(name));
|
|
||||||
|
|
||||||
char *blockpos = strrchr(eq + 1, '=');
|
|
||||||
|
|
||||||
if (!blockpos)
|
|
||||||
trimcopy(val, eq + 1, sizeof(val));
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*blockpos = 0;
|
|
||||||
trimcopy(val, eq + 1, sizeof(val));
|
|
||||||
if (sscanf(blockpos + 1, "%d", &block) != 1)
|
|
||||||
{
|
|
||||||
block = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set_func(name, val, block);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cfg_parsefile(char *fname, void(*set_func)(char*, char*))
|
|
||||||
{
|
|
||||||
FILE *f;
|
|
||||||
char line[300];
|
|
||||||
|
|
||||||
//printf("opening(%s)\n", fname);
|
|
||||||
f = fopen(fname, "r");
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
//printf("error opening(%s)\n", fname);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
while (fgets(line, sizeof(line), f))
|
|
||||||
{
|
|
||||||
// lines starting with # are comments
|
|
||||||
if (line[0] == '#') continue;
|
|
||||||
cfg_parseline(line, set_func);
|
|
||||||
}
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cfg_parsetitlefile(char *fname, void(*set_func)(char*, char*, u8))
|
|
||||||
{
|
|
||||||
FILE *f;
|
|
||||||
char line[200];
|
|
||||||
|
|
||||||
//printf("opening(%s)\n", fname);
|
|
||||||
f = fopen(fname, "r");
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
//printf("error opening(%s)\n", fname);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (fgets(line, sizeof(line), f))
|
|
||||||
{
|
|
||||||
// lines starting with # are comments
|
|
||||||
if (line[0] == '#') continue;
|
|
||||||
cfg_parsetitleline(line, set_func);
|
|
||||||
}
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CFG_Cleanup(void)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
for (i = 0; i < num_title; i++)
|
|
||||||
{
|
|
||||||
if (cfg_title[i].title) free(cfg_title[i].title);
|
|
||||||
cfg_title[i].title = NULL;
|
|
||||||
}
|
|
||||||
if (cfg_title)
|
|
||||||
{
|
|
||||||
free(cfg_title);
|
|
||||||
cfg_title = NULL;
|
|
||||||
}
|
|
||||||
num_title = 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
#ifndef _CFG_H_
|
|
||||||
#define _CFG_H_
|
|
||||||
|
|
||||||
#include <gctypes.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "usbloader/disc.h"
|
|
||||||
|
|
||||||
char *get_title(struct discHdr *header);
|
|
||||||
char *cfg_get_title(u8 *id);
|
|
||||||
void title_set(char *id, char *title);
|
|
||||||
void titles_default();
|
|
||||||
u8 get_block(struct discHdr *header);
|
|
||||||
s8 get_pegi_block(struct discHdr *header);
|
|
||||||
|
|
||||||
void CFG_Cleanup(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -27,7 +27,9 @@
|
|||||||
#include "usbloader/wbfs.h"
|
#include "usbloader/wbfs.h"
|
||||||
#include "settings/newtitles.h"
|
#include "settings/newtitles.h"
|
||||||
#include "settings/CSettings.h"
|
#include "settings/CSettings.h"
|
||||||
|
#include "settings/CGameSettings.h"
|
||||||
#include "settings/CGameStatistics.h"
|
#include "settings/CGameStatistics.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "xml/xml.h"
|
#include "xml/xml.h"
|
||||||
#include "FreeTypeGX.h"
|
#include "FreeTypeGX.h"
|
||||||
#include "GameList.h"
|
#include "GameList.h"
|
||||||
@ -135,28 +137,37 @@ int GameList::FilterList(const wchar_t * gameFilter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//ignore uLoader cfg "iso". i was told it is "__CFG_" but not confirmed
|
//ignore uLoader cfg "iso". i was told it is "__CFG_" but not confirmed
|
||||||
if (strncasecmp((char*) header->id, "__CFG_", 6) == 0) continue;
|
if (strncasecmp((char*) header->id, "__CFG_", 6) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (Settings.parentalcontrol && !Settings.godmode) if (get_block(header) >= Settings.parentalcontrol) continue;
|
GameCFG * GameConfig = GameSettings.GetGameCFG(header);
|
||||||
|
|
||||||
|
if (Settings.parentalcontrol && !Settings.godmode)
|
||||||
|
{
|
||||||
|
if (GameConfig && GameConfig->parentalcontrol >= Settings.parentalcontrol)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* Rating based parental control method */
|
/* Rating based parental control method */
|
||||||
if (Settings.parentalcontrol == 0 && Settings.godmode == 0 && Settings.Parental.enabled == 1)
|
if (Settings.parentalcontrol == 0 && Settings.godmode == 0 && Settings.Parental.enabled == 1)
|
||||||
{
|
{
|
||||||
// Check game rating in WiiTDB, since the default Wii parental control setting is enabled
|
// Check game rating in WiiTDB, since the default Wii parental control setting is enabled
|
||||||
s32 rating = GetRatingForGame((char *) header->id);
|
s32 rating = GetRatingForGame((char *) header->id);
|
||||||
if ((rating != -1 && rating > Settings.Parental.rating) || (rating == -1 && get_pegi_block(header)
|
|
||||||
> Settings.Parental.rating))
|
if ((rating != -1 && rating > Settings.Parental.rating) ||
|
||||||
|
(GameConfig && rating == -1 &&
|
||||||
|
CGameSettings::GetPartenalPEGI(GameConfig->parentalcontrol)
|
||||||
|
> Settings.Parental.rating))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Game lock based parental control method */
|
//! Per game lock method
|
||||||
// If game lock is set to "1 (Unlocked Games Only)" and the game is locked, then skip
|
if(!Settings.godmode && Settings.lockedgames && GameConfig && GameConfig->Locked)
|
||||||
if(Settings.lockedgames == 1 && Settings.godmode == 0 && GameStatistics.GetLockStatus(header->id) == 1)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
wchar_t *gameName = charToWideChar(get_title(header));
|
wchar_t *gameName = charToWideChar(GameTitles.GetTitle(header));
|
||||||
|
|
||||||
if (gameName && *GameFilter.c_str())
|
if (gameName && *GameFilter.c_str())
|
||||||
{
|
{
|
||||||
@ -203,7 +214,7 @@ int GameList::LoadUnfiltered()
|
|||||||
/* Register game */
|
/* Register game */
|
||||||
NewTitles::Instance()->CheckGame(header->id);
|
NewTitles::Instance()->CheckGame(header->id);
|
||||||
|
|
||||||
wchar_t *gameName = charToWideChar(get_title(header));
|
wchar_t *gameName = charToWideChar(GameTitles.GetTitle(header));
|
||||||
if (gameName)
|
if (gameName)
|
||||||
{
|
{
|
||||||
if (wcslen(gameName) > GameFilter.size() && AvailableSearchChars.find(gameName[GameFilter.size()])
|
if (wcslen(gameName) > GameFilter.size() && AvailableSearchChars.find(gameName[GameFilter.size()])
|
||||||
@ -249,7 +260,7 @@ void GameList::SortList()
|
|||||||
|
|
||||||
bool GameList::NameSortCallback(const struct discHdr *a, const struct discHdr *b)
|
bool GameList::NameSortCallback(const struct discHdr *a, const struct discHdr *b)
|
||||||
{
|
{
|
||||||
return (strcasecmp(get_title((struct discHdr *) a), get_title((struct discHdr *) b)) < 0);
|
return (strcasecmp(GameTitles.GetTitle((struct discHdr *) a), GameTitles.GetTitle((struct discHdr *) b)) < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameList::PlaycountSortCallback(const struct discHdr *a, const struct discHdr *b)
|
bool GameList::PlaycountSortCallback(const struct discHdr *a, const struct discHdr *b)
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include "disc.h"
|
#include "disc.h"
|
||||||
#include "alternatedol.h"
|
#include "alternatedol.h"
|
||||||
#include "fstfile.h"
|
#include "fstfile.h"
|
||||||
#include "settings/cfg.h"
|
|
||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
#include "patches/wip.h"
|
#include "patches/wip.h"
|
||||||
#include "patches/dolpatcher.h"
|
#include "patches/dolpatcher.h"
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "settings/CSettings.h"
|
#include "settings/CSettings.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "usbloader/disc.h"
|
#include "usbloader/disc.h"
|
||||||
#include "fatmounter.h"
|
#include "fatmounter.h"
|
||||||
#include "wbfs_fat.h"
|
#include "wbfs_fat.h"
|
||||||
@ -357,7 +358,7 @@ s32 Wbfs_Fat::GetHeadersCount()
|
|||||||
int len;
|
int len;
|
||||||
char dir_title[65];
|
char dir_title[65];
|
||||||
char fname_title[TITLE_LEN];
|
char fname_title[TITLE_LEN];
|
||||||
char *title;
|
const char *title;
|
||||||
DIR_ITER *dir_iter;
|
DIR_ITER *dir_iter;
|
||||||
|
|
||||||
//dbg_time1();
|
//dbg_time1();
|
||||||
@ -467,7 +468,7 @@ s32 Wbfs_Fat::GetHeadersCount()
|
|||||||
// size must be at least 1MB to be considered a valid wbfs file
|
// size must be at least 1MB to be considered a valid wbfs file
|
||||||
if (st.st_size < 1024 * 1024) continue;
|
if (st.st_size < 1024 * 1024) continue;
|
||||||
// if we have titles.txt entry use that
|
// if we have titles.txt entry use that
|
||||||
title = cfg_get_title(id);
|
title = GameTitles.GetTitle(id);
|
||||||
// if no titles.txt get title from dir or file name
|
// if no titles.txt get title from dir or file name
|
||||||
if (!title && *fname_title)
|
if (!title && *fname_title)
|
||||||
{
|
{
|
||||||
@ -741,7 +742,7 @@ void Wbfs_Fat::mk_title_txt(struct discHdr *header, char *path)
|
|||||||
|
|
||||||
f = fopen(fname, "wb");
|
f = fopen(fname, "wb");
|
||||||
if (!f) return;
|
if (!f) return;
|
||||||
fprintf(f, "%.6s = %.64s\n", header->id, get_title(header));
|
fprintf(f, "%.6s = %.64s\n", header->id, GameTitles.GetTitle(header));
|
||||||
fclose(f);
|
fclose(f);
|
||||||
printf("Info file: %s\n", fname);
|
printf("Info file: %s\n", fname);
|
||||||
}
|
}
|
||||||
@ -754,7 +755,7 @@ void Wbfs_Fat::mk_gameid_title(struct discHdr *header, char *name, int re_space,
|
|||||||
|
|
||||||
memcpy(name, header->id, 6);
|
memcpy(name, header->id, 6);
|
||||||
name[6] = 0;
|
name[6] = 0;
|
||||||
strncpy(title, get_title(header), sizeof(title));
|
strncpy(title, GameTitles.GetTitle(header), sizeof(title));
|
||||||
title_filename(title);
|
title_filename(title);
|
||||||
|
|
||||||
if (layout == 0)
|
if (layout == 0)
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
#include "libwiigui/gui.h"
|
#include "libwiigui/gui.h"
|
||||||
|
|
||||||
#include "settings/cfg.h"
|
|
||||||
|
|
||||||
#define DEFAULT_FIFO_SIZE 256 * 1024
|
#define DEFAULT_FIFO_SIZE 256 * 1024
|
||||||
static unsigned int *xfb[2] = { NULL, NULL }; // Double buffered
|
static unsigned int *xfb[2] = { NULL, NULL }; // Double buffered
|
||||||
static int whichfb = 0; // Switch
|
static int whichfb = 0; // Switch
|
||||||
|
@ -8,15 +8,24 @@
|
|||||||
#include <unzip/unzip.h>
|
#include <unzip/unzip.h>
|
||||||
#include "settings/CSettings.h"
|
#include "settings/CSettings.h"
|
||||||
#include "settings/CGameSettings.h"
|
#include "settings/CGameSettings.h"
|
||||||
|
#include "settings/GameTitles.h"
|
||||||
#include "xml/xml.h"
|
#include "xml/xml.h"
|
||||||
|
|
||||||
extern "C"
|
extern char game_partition[6];
|
||||||
{
|
|
||||||
extern void title_set(char *id, char *title);
|
|
||||||
extern char* trimcopy(char *dest, char *src, int size);
|
|
||||||
extern char game_partition[6];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
static char * trimcopy(char *dest, char *src, int size)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
while (*src == ' ')
|
||||||
|
src++;
|
||||||
|
len = strlen(src);
|
||||||
|
// trim trailing " \r\n"
|
||||||
|
while (len > 0 && strchr(" \r\n", src[len - 1]))
|
||||||
|
len--;
|
||||||
|
if (len >= size) len = size - 1;
|
||||||
|
strlcpy(dest, src, len + 1);
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
/* config */
|
/* config */
|
||||||
static bool xmldebug = false;
|
static bool xmldebug = false;
|
||||||
static char xmlcfg_filename[100] = "wiitdb";
|
static char xmlcfg_filename[100] = "wiitdb";
|
||||||
@ -334,7 +343,7 @@ void LoadTitlesFromXML(char *langtxt, bool forcejptoen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
snprintf(id_text, 7, "%s", id_text);
|
snprintf(id_text, 7, "%s", id_text);
|
||||||
title_set(id_text, title_text);
|
GameTitles.SetGameTitle(id_text, title_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user