-now compiled with devkitpro ppc r29-1 and libogc 1.8.17

-updated libcustomfat and libvorbis thanks to GreyWolf
-updated libturbojpeg thanks to Fix94
-fixed cheat menu so cheat names with apostrophe's display properly
This commit is contained in:
fledge68 2018-05-08 13:49:43 +00:00
parent 7ef28f87f0
commit d94c66d773
52 changed files with 204 additions and 313 deletions

View File

@ -55,7 +55,7 @@ ios := 249
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# options for code generation # options for code generation
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
CFLAGS = -g -ggdb -Os -Wall -Wextra $(MACHDEP) $(INCLUDE) -DHAVE_CONFIG_H CFLAGS = -g -ggdb -Os -Wall -Wextra $(MACHDEP) $(INCLUDE) -D_GNU_SOURCE -DHAVE_CONFIG_H
CXXFLAGS = $(CFLAGS) CXXFLAGS = $(CFLAGS)
LDFLAGS = -g -ggdb $(MACHDEP) -Wl,-Map,$(notdir $@).map,--section-start,.init=0x80620000,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,malloc_usable_size,-wrap,wiiuse_register LDFLAGS = -g -ggdb $(MACHDEP) -Wl,-Map,$(notdir $@).map,--section-start,.init=0x80620000,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,malloc_usable_size,-wrap,wiiuse_register

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -54,7 +54,7 @@ char filepath[ISFS_MAXPATH] ATTRIBUTE_ALIGN(32);
static u8 *GetDol(u32 bootcontent, u64 title) static u8 *GetDol(u32 bootcontent, u64 title)
{ {
memset(filepath, 0, ISFS_MAXPATH); memset(filepath, 0, ISFS_MAXPATH);
sprintf(filepath, "/title/%08x/%08x/content/%08x.app", TITLE_UPPER(title), TITLE_LOWER(title), bootcontent); sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_LOWER(title), bootcontent);
u32 contentSize = 0; u32 contentSize = 0;
@ -83,7 +83,7 @@ static bool GetAppNameFromTmd(bool dol, u32 *bootcontent, u64 title, u32 *IOS)
bool ret = false; bool ret = false;
memset(filepath, 0, ISFS_MAXPATH); memset(filepath, 0, ISFS_MAXPATH);
sprintf(filepath, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title)); sprintf(filepath, "/title/%08lx/%08lx/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title));
u32 size; u32 size;
u8 *data = ISFS_GetFile(filepath, &size, -1); u8 *data = ISFS_GetFile(filepath, &size, -1);

View File

@ -59,28 +59,28 @@ extern void multidolhook(u32 address);
extern void langvipatch(u32 address, u32 len, u8 langbyte); extern void langvipatch(u32 address, u32 len, u8 langbyte);
extern void vipatch(u32 address, u32 len); extern void vipatch(u32 address, u32 len);
static const u32 multidolpatch1[2] = {0x3C03FFB4,0x28004F43}; //static const u32 multidolpatch1[2] = {0x3C03FFB4,0x28004F43};
static const u32 multidolpatch2[2] = {0x3F608000, 0x807B0018}; //static const u32 multidolpatch2[2] = {0x3F608000, 0x807B0018};
static const u32 healthcheckhook[2] = {0x41810010,0x881D007D}; //static const u32 healthcheckhook[2] = {0x41810010,0x881D007D};
static const u32 updatecheckhook[3] = {0x80650050,0x80850054,0xA0A50058}; //static const u32 updatecheckhook[3] = {0x80650050,0x80850054,0xA0A50058};
static const u32 recoveryhooks[3] = {0xA00100AC,0x5400073E,0x2C00000F}; //static const u32 recoveryhooks[3] = {0xA00100AC,0x5400073E,0x2C00000F};
static const u32 nocopyflag1[3] = {0x540007FF, 0x4182001C, 0x80630068}; //static const u32 nocopyflag1[3] = {0x540007FF, 0x4182001C, 0x80630068};
static const u32 nocopyflag2[3] = {0x540007FF, 0x41820024, 0x387E12E2}; //static const u32 nocopyflag2[3] = {0x540007FF, 0x41820024, 0x387E12E2};
// this one is for the GH3 and VC saves // this one is for the GH3 and VC saves
//static const u32 nocopyflag3[5] = {0x2C030000, 0x40820010, 0x88010020, 0x28000002, 0x41820234}; //static const u32 nocopyflag3[5] = {0x2C030000, 0x40820010, 0x88010020, 0x28000002, 0x41820234};
static const u32 nocopyflag3[5] = {0x2C030000, 0x41820200,0x48000058,0x38610100}; //static const u32 nocopyflag3[5] = {0x2C030000, 0x41820200,0x48000058,0x38610100};
// this removes the display warning for no copy VC and GH3 saves // this removes the display warning for no copy VC and GH3 saves
static const u32 nocopyflag4[4] = {0x80010008, 0x2C000000, 0x4182000C, 0x3BE00001}; //static const u32 nocopyflag4[4] = {0x80010008, 0x2C000000, 0x4182000C, 0x3BE00001};
static const u32 nocopyflag5[3] = {0x801D0024,0x540007FF,0x41820024}; //static const u32 nocopyflag5[3] = {0x801D0024,0x540007FF,0x41820024};
static const u32 movedvdpatch[3] = {0x2C040000, 0x41820120, 0x3C608109}; //static const u32 movedvdpatch[3] = {0x2C040000, 0x41820120, 0x3C608109};
static const u32 regionfreehooks[5] = {0x7C600774, 0x2C000001, 0x41820030,0x40800010,0x2C000000}; //static const u32 regionfreehooks[5] = {0x7C600774, 0x2C000001, 0x41820030,0x40800010,0x2C000000};
static const u32 cIOScode[16] = {0x7f06c378, 0x7f25cb78, 0x387e02c0, 0x4cc63182}; //static const u32 cIOScode[16] = {0x7f06c378, 0x7f25cb78, 0x387e02c0, 0x4cc63182};
static const u32 cIOSblock[16] = {0x2C1800F9, 0x40820008, 0x3B000024}; //static const u32 cIOSblock[16] = {0x2C1800F9, 0x40820008, 0x3B000024};
static const u32 fwritepatch[8] = {0x9421FFD0,0x7C0802A6,0x90010034,0xBF210014,0x7C9B2378,0x7CDC3378,0x7C7A1B78,0x7CB92B78}; // bushing fwrite //static const u32 fwritepatch[8] = {0x9421FFD0,0x7C0802A6,0x90010034,0xBF210014,0x7C9B2378,0x7CDC3378,0x7C7A1B78,0x7CB92B78}; // bushing fwrite
static const u32 vipatchcode[3] = {0x4182000C,0x4180001C,0x48000018}; static const u32 vipatchcode[3] = {0x4182000C,0x4180001C,0x48000018};
const u32 viwiihooks[4] = {0x7CE33B78,0x38870034,0x38A70038,0x38C7004C}; const u32 viwiihooks[4] = {0x7CE33B78,0x38870034,0x38A70038,0x38C7004C};
@ -99,8 +99,8 @@ const u32 multidolchanhooks[4] = {0x4200FFF4, 0x48000004, 0x38800000, 0x4E800020
const u32 langpatch[3] = {0x7C600775, 0x40820010, 0x38000000}; const u32 langpatch[3] = {0x7C600775, 0x40820010, 0x38000000};
static const u32 oldpatch002[3] = {0x2C000000, 0x40820214, 0x3C608000}; //static const u32 oldpatch002[3] = {0x2C000000, 0x40820214, 0x3C608000};
static const u32 newpatch002[3] = {0x2C000000, 0x48000214, 0x3C608000}; //static const u32 newpatch002[3] = {0x2C000000, 0x48000214, 0x3C608000};
unsigned char sig_fwrite[32] = unsigned char sig_fwrite[32] =
{ {

View File

@ -65,10 +65,10 @@ protected:
void ChangeGame(Banner *banner); void ChangeGame(Banner *banner);
void Init(u8 *font1, u8 *font2); void Init(u8 *font1, u8 *font2);
static const float fBannerWidth = 608.f; static constexpr float fBannerWidth = 608.f;
static const float fBannerHeight = 448.f; static constexpr float fBannerHeight = 448.f;
static const float fIconWidth = 128.f; static constexpr float fIconWidth = 128.f;
static const float fIconHeight = 96.f; static constexpr float fIconHeight = 96.f;
bool reducedVol; bool reducedVol;
int returnVal; int returnVal;

View File

@ -44,7 +44,7 @@ the_CFG normalCFG;
#define LDR_ENTRY ((entry)LDR_ADDR) #define LDR_ENTRY ((entry)LDR_ADDR)
u8 *extldr_ptr = NULL; u8 *extldr_ptr = NULL;
size_t extldr_size = 0; u32 extldr_size = 0;
extern "C" { extern "C" {
u8 configbytes[2]; u8 configbytes[2];
@ -59,7 +59,7 @@ extern u32 gameconfsize;
extern u32 *gameconf; extern u32 *gameconf;
u8 *booter_ptr = NULL; u8 *booter_ptr = NULL;
size_t booter_size = 0; u32 booter_size = 0;
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode,
int aspectRatio, u32 returnTo, u8 BootType, bool use_led) int aspectRatio, u32 returnTo, u8 BootType, bool use_led)

View File

@ -88,7 +88,7 @@ extern "C"
typedef struct typedef struct
{ {
unsigned int len; unsigned int len;
unsigned int ABCD[4]; unsigned long int ABCD[4];
int b_used; int b_used;
unsigned char block[64]; unsigned char block[64];
} auth_md5Ctx; } auth_md5Ctx;

View File

@ -42,8 +42,8 @@ bool Identify(u64 titleid)
char filepath[ISFS_MAXPATH] ATTRIBUTE_ALIGN(32); char filepath[ISFS_MAXPATH] ATTRIBUTE_ALIGN(32);
memset(filepath, 0, ISFS_MAXPATH); memset(filepath, 0, ISFS_MAXPATH);
gprintf("Reading TMD for %08x %08x...", TITLE_UPPER(titleid), TITLE_LOWER(titleid)); gprintf("Reading TMD for %08lx %08lx...", TITLE_UPPER(titleid), TITLE_LOWER(titleid));
sprintf(filepath, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(titleid), TITLE_LOWER(titleid)); sprintf(filepath, "/title/%08lx/%08lx/content/title.tmd", TITLE_UPPER(titleid), TITLE_LOWER(titleid));
u32 tmdSize; u32 tmdSize;
u8 *tmdBuffer = ISFS_GetFile(filepath, &tmdSize, -1); u8 *tmdBuffer = ISFS_GetFile(filepath, &tmdSize, -1);
if (tmdBuffer == NULL || tmdSize == 0) if (tmdBuffer == NULL || tmdSize == 0)

View File

@ -898,11 +898,11 @@ void Nand::CreateTitleTMD(dir_discHdr *hdr)
u32 highTID = *(u32*)(titleTMD+0x18c); u32 highTID = *(u32*)(titleTMD+0x18c);
u32 lowTID = *(u32*)(titleTMD+0x190); u32 lowTID = *(u32*)(titleTMD+0x190);
CreatePath("%s/title/%08x/%08x/data", FullNANDPath, highTID, lowTID); CreatePath("%s/title/%08lx/%08lx/data", FullNANDPath, highTID, lowTID);
CreatePath("%s/title/%08x/%08x/content", FullNANDPath, highTID, lowTID); CreatePath("%s/title/%08lx/%08lx/content", FullNANDPath, highTID, lowTID);
char nandpath[MAX_FAT_PATH]; char nandpath[MAX_FAT_PATH];
snprintf(nandpath, sizeof(nandpath), "%s/title/%08x/%08x/content/title.tmd", FullNANDPath, highTID, lowTID); snprintf(nandpath, sizeof(nandpath), "%s/title/%08lx/%08lx/content/title.tmd", FullNANDPath, highTID, lowTID);
if(fsop_FileExist(nandpath)) if(fsop_FileExist(nandpath))
{ {
@ -1234,8 +1234,7 @@ u8 *Nand::GetTMD(u64 title, u32 *size)
{ {
u8 *tmd_buf = NULL; u8 *tmd_buf = NULL;
u32 tmd_size = 0; u32 tmd_size = 0;
char *tmd_path = fmt_malloc("/title/%08x/%08x/content/title.tmd", char *tmd_path = fmt_malloc("/title/%08lx/%08lx/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title));
TITLE_UPPER(title), TITLE_LOWER(title));
if(tmd_path != NULL) if(tmd_path != NULL)
{ {
tmd_buf = GetEmuFile(tmd_path, &tmd_size); tmd_buf = GetEmuFile(tmd_path, &tmd_size);

View File

@ -53,100 +53,6 @@ string GCTCheats::getCheatComment(unsigned int nr)
return ERRORRANGE; return ERRORRANGE;
} }
int GCTCheats::createGCT(unsigned int nr,const char * filename)
{
if (nr == 0)return 0;
ofstream filestr;
filestr.open(filename);
if (filestr.fail()) return 0;
//Header and Footer
char header[] = { 0x00, 0xd0, 0xc0, 0xde, 0x00, 0xd0, 0xc0, 0xde};
char footer[] = { 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
string buf = getCheat(nr);
filestr.write(header,sizeof(header));
int x = 0;
while (x < (int)buf.size())
{
string temp = buf.substr(x,2);
long int li = strtol(temp.c_str(),NULL,16);
temp = li;
filestr.write(temp.c_str(),1);
x +=2;
}
filestr.write(footer,sizeof(footer));
filestr.close();
return 1;
}
int GCTCheats::createGCT(const char * chtbuffer,const char * filename)
{
ofstream filestr;
filestr.open(filename);
if (filestr.fail()) return 0;
//Header and Footer
char header[] = { 0x00, 0xd0, 0xc0, 0xde, 0x00, 0xd0, 0xc0, 0xde};
char footer[] = { 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
string buf = chtbuffer;
filestr.write(header,sizeof(header));
int x = 0;
while (x < (int)buf.size())
{
string temp = buf.substr(x,2);
long int li = strtol(temp.c_str(),NULL,16);
temp = li;
filestr.write(temp.c_str(),1);
x +=2;
}
filestr.write(footer,sizeof(footer));
filestr.close();
return 1;
}
int GCTCheats::createGCT(int nr[],int cnt,const char * filename)
{
if (cnt == 0) return 0;
ofstream filestr;
filestr.open(filename);
if (filestr.fail()) return 0;
//Header and Footer
char header[] = { 0x00, 0xd0, 0xc0, 0xde, 0x00, 0xd0, 0xc0, 0xde};
char footer[] = { 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
filestr.write(header,sizeof(header));
int c = 0;
while (c != cnt)
{
string buf = getCheat(nr[c]);
int x = 0;
while (x < (int)buf.size())
{
string temp = buf.substr(x,2);
long int li = strtol(temp.c_str(),NULL,16);
temp = li;
filestr.write(temp.c_str(),1);
x +=2;
}
c++;
}
filestr.write(footer,sizeof(footer));
filestr.close();
return 1;
}
//creates gct from internal array //creates gct from internal array
int GCTCheats::createGCT(const char * filename) int GCTCheats::createGCT(const char * filename)
{ {
@ -182,7 +88,7 @@ int GCTCheats::createGCT(const char * filename)
return 1; return 1;
} }
//creates txt from internal array //rewrite and save code.txt to mark which codes are #selected#
int GCTCheats::createTXT(const char * filename) int GCTCheats::createTXT(const char * filename)
{ {
@ -231,8 +137,6 @@ int GCTCheats::openTxtfile(const char * filename)
int i = 0; int i = 0;
string str; string str;
int codestatus;
bool codedynamic = false; // cheat contains X-Codes?
filestr.seekg(0,ios_base::end); filestr.seekg(0,ios_base::end);
int size = filestr.tellg(); int size = filestr.tellg();
@ -247,36 +151,27 @@ int GCTCheats::openTxtfile(const char * filename)
if (sGameTitle[sGameTitle.length() - 1] == '\r') if (sGameTitle[sGameTitle.length() - 1] == '\r')
sGameTitle.erase(sGameTitle.length() - 1); sGameTitle.erase(sGameTitle.length() - 1);
getline(filestr,sCheatName[i]); // skip first line if file uses CRLF while (!filestr.eof())
if (!sGameTitle[sGameTitle.length() - 1] == '\r') {
filestr.seekg(0,ios_base::beg); getline(filestr,sCheatName[i]);
while (!filestr.eof()) {
getline(filestr,sCheatName[i]); // '\n' delimiter by default
if (sCheatName[i][sCheatName[i].length() - 1] == '\r') if (sCheatName[i][sCheatName[i].length() - 1] == '\r')
sCheatName[i].erase(sCheatName[i].length() - 1); sCheatName[i].erase(sCheatName[i].length() - 1);
string cheatdata; if (sCheatName[i].length() == 0)
bool emptyline = false; continue;
while (!emptyline) string cheatdata;
while (!filestr.eof())
{ {
getline(filestr,str); getline(filestr,str);
if (str[str.length() - 1] == '\r') if (str[str.length() - 1] == '\r')
str.erase(str.length() - 1); str.erase(str.length() - 1);
if (str == "" || str[0] == '\r' || str[0] == '\n') if (str == "" || str[0] == '\r' || str[0] == '\n')
{
emptyline = true;
break; break;
}
codestatus = IsCodeEx(str); if (IsCode(str))
if (codestatus == 1)
// line contains X code, so whole cheat is dynamic
codedynamic = true;
if (codestatus == 2)
{ {
// remove any garbage (comment) after code // remove any garbage (comment) after code
while (str.size() > 17) while (str.size() > 17)
@ -288,16 +183,13 @@ int GCTCheats::openTxtfile(const char * filename)
} }
else else
sCheatComment[i] = str; sCheatComment[i] = str;
if (filestr.eof()) break;
} }
if (!codedynamic && cheatdata.size() > 0) if (cheatdata.size() > 0)
{ {
sCheats[i] = cheatdata; sCheats[i] = cheatdata;
sCheatSelected[i] = false; sCheatSelected[i] = false;
// if comment starts with dynamic, it is selected // wiiflow rewrites and saves code.txt with #selected# added to comments if cheat selected
if (sCheatComment[i].compare(0,10,"#selected#") == 0) if (sCheatComment[i].compare(0,10,"#selected#") == 0)
{ {
sCheatSelected[i] = true; sCheatSelected[i] = true;
@ -308,7 +200,6 @@ int GCTCheats::openTxtfile(const char * filename)
else else
sCheatComment[i] = ""; sCheatComment[i] = "";
codedynamic = false;
if (i == MAXCHEATS) break; if (i == MAXCHEATS) break;
} }
iCntCheats = i; iCntCheats = i;

View File

@ -34,30 +34,10 @@ public:
//!\param filename name of TXT file //!\param filename name of TXT file
//!\return error code //!\return error code
int openTxtfile(const char * filename); int openTxtfile(const char * filename);
//!Creates GCT file for one cheat
//!\param nr selected Cheat Numbers
//!\param filename name of GCT file
//!\return error code
int createGCT(unsigned int nr,const char * filename);
//!Creates GCT file from a buffer
//!\param chtbuffer buffer that holds the cheat data
//!\param filename name of GCT file
//!\return error code
int createGCT(const char * chtbuffer,const char * filename);
//!Creates GCT file
//!\param nr[] array of selected Cheat Numbers
//!\param cnt size of array
//!\param filename name of GCT file
//!\return error code
int createGCT(int nr[],int cnt,const char * filename);
//!Creates GCT file //!Creates GCT file
//!\param filename name of GCT file //!\param filename name of GCT file
//!\return error code //!\return error code
int createGCT(const char * filename); int createGCT(const char * filename);
//!Creates directly gct in memory
//!\param filename name of TXT file
//!\return GCT buffer
string createGCTbuff(int nr[],int cnt);
//!Creates TXT file //!Creates TXT file
//!\param filename name of GCT file //!\param filename name of GCT file
//!\return error code //!\return error code

View File

@ -33,7 +33,7 @@ static u64 folderSize = 0;
u64 FolderProgressBytes; u64 FolderProgressBytes;
// return false if the file doesn't exist // return false if the file doesn't exist
bool fsop_GetFileSizeBytes(const char *path, size_t *filesize) // for me stats st_size report always 0 :( bool fsop_GetFileSizeBytes(const char *path, u32 *filesize) // for me stats st_size report always 0 :(
{ {
FILE *f; FILE *f;
size_t size = 0; size_t size = 0;
@ -79,7 +79,7 @@ u64 fsop_GetFolderBytes(const char *source)
bytes += fsop_GetFolderBytes(newSource); bytes += fsop_GetFolderBytes(newSource);
else // It is a file ! else // It is a file !
{ {
size_t s; u32 s;
fsop_GetFileSizeBytes(newSource, &s); fsop_GetFileSizeBytes(newSource, &s);
bytes += s; bytes += s;
} }
@ -203,7 +203,7 @@ bool fsop_CopyFile(const char *source, const char *target, progress_callback_t s
// write current block // write current block
wb = fwrite(&buff[bi*block], 1, rb, ft); wb = fwrite(&buff[bi*block], 1, rb, ft);
if(wb != wb || rb == 0) if(wb != rb || rb == 0)
err = 1; err = 1;
bytes += rb; bytes += rb;

View File

@ -12,7 +12,7 @@ extern "C"
typedef void (*progress_callback_t)(int status,int total,void *user_data); typedef void (*progress_callback_t)(int status,int total,void *user_data);
bool fsop_GetFileSizeBytes(const char *path, size_t *filesize); bool fsop_GetFileSizeBytes(const char *path, u32 *filesize);
u64 fsop_GetFolderBytes(const char *source); u64 fsop_GetFolderBytes(const char *source);
u32 fsop_GetFolderKb(const char *source); u32 fsop_GetFolderKb(const char *source);
u32 fsop_GetFreeSpaceKb(const char *path); u32 fsop_GetFreeSpaceKb(const char *path);

View File

@ -20,7 +20,8 @@ bool bufferMessages = true;
char gprintfBuffer[GPRINTF_SIZE]; char gprintfBuffer[GPRINTF_SIZE];
char sdwritebuffer[SDWRITE_SIZE]; char sdwritebuffer[SDWRITE_SIZE];
static ssize_t __out_write(struct _reent *r __attribute__((unused)), int fd __attribute__((unused)), const char *ptr, size_t len) //static ssize_t __out_write(struct _reent *r __attribute__((unused)), int fd __attribute__((unused)), const char *ptr, size_t len)
static ssize_t __out_write(struct _reent *r __attribute__((unused)), void *fd __attribute__((unused)), const char *ptr, size_t len)
{ {
if(geckoinit && ptr) if(geckoinit && ptr)
{ {
@ -58,6 +59,7 @@ static const devoptab_t gecko_out = {
NULL, // device deviceData NULL, // device deviceData
NULL, // device chmod_r NULL, // device chmod_r
NULL, // device fchmod_r NULL, // device fchmod_r
NULL, // device rmdir_r
}; };
static void USBGeckoOutput() static void USBGeckoOutput()

View File

@ -73,8 +73,8 @@ int WifiGecko::Connect()
if(inited == false) if(inited == false)
return -2; return -2;
if(connection != -1 || dest_ip == NULL || dest_port == 0) if(connection != -1 || dest_ip == NULL || dest_port == 0)
return connection; return connection;
int tmp_con = -1; int tmp_con = -1;
memset(&connect_addr, 0, sizeof(connect_addr)); memset(&connect_addr, 0, sizeof(connect_addr));
@ -85,8 +85,8 @@ int WifiGecko::Connect()
connect_addr.sin_family = AF_INET; connect_addr.sin_family = AF_INET;
tmp_con = net_socket(connect_addr.sin_family, SOCK_DGRAM, IPPROTO_IP); tmp_con = net_socket(connect_addr.sin_family, SOCK_DGRAM, IPPROTO_IP);
#endif #endif
if(tmp_con < 0) if(tmp_con < 0)
return -3; return -3;
connect_addr.sin_port = htons(dest_port); connect_addr.sin_port = htons(dest_port);
inet_aton(dest_ip, &connect_addr.sin_addr); inet_aton(dest_ip, &connect_addr.sin_addr);

View File

@ -902,7 +902,7 @@ int GameTDB::GetAccessories(const char *id, vector<Accessory> & acc_list)
u32 GameTDB::FindCaseColor(char *data) u32 GameTDB::FindCaseColor(char *data)
{ {
u32 color = -1; u32 color = -1;// -1 = ffffffff
char *ColorNode = GetNodeText(data, "<case color=\"", "\""); char *ColorNode = GetNodeText(data, "<case color=\"", "\"");
if(!ColorNode || strlen(ColorNode) == 0) if(!ColorNode || strlen(ColorNode) == 0)
@ -916,7 +916,7 @@ u32 GameTDB::FindCaseColor(char *data)
u32 GameTDB::GetCaseColor(const char *id) u32 GameTDB::GetCaseColor(const char *id)
{ {
u32 color = -1; u32 color = -1;// -1 = ffffffff
if(!id) if(!id)
return color; return color;

View File

@ -85,7 +85,7 @@ public:
//! Get the publish date of a game for a specific game id //! Get the publish date of a game for a specific game id
//! First 1 byte is the day, than 1 byte month and last 2 bytes is the year //! First 1 byte is the day, than 1 byte month and last 2 bytes is the year
//! year = (return >> 16), month = (return >> 8) & 0xFF, day = return & 0xFF //! year = (return >> 16), month = (return >> 8) & 0xFF, day = return & 0xFF
unsigned int GetPublishDate(const char *id); u32 GetPublishDate(const char *id);
//! Get the genre list of a game for a specific game id //! Get the genre list of a game for a specific game id
bool GetGenres(const char * id, const char * &gen); bool GetGenres(const char * id, const char * &gen);
//! Get the rating type for a specific game id //! Get the rating type for a specific game id
@ -110,7 +110,7 @@ public:
int GetAccessories(const char * id, vector<Accessory> & acc_list); int GetAccessories(const char * id, vector<Accessory> & acc_list);
//! Get the box (case) color for a specific game id //! Get the box (case) color for a specific game id
//! Returns the color in RGB (first 3 bytes) //! Returns the color in RGB (first 3 bytes)
unsigned int GetCaseColor(const char * id); u32 GetCaseColor(const char * id);
int GetCaseVersions(const char * id); int GetCaseVersions(const char * id);
//! Convert a specific game rating to a string //! Convert a specific game rating to a string
static const char * RatingToString(int rating); static const char * RatingToString(int rating);
@ -126,7 +126,7 @@ private:
bool SaveGameOffsets(const char * path); bool SaveGameOffsets(const char * path);
bool CheckTitlesIni(const char * path); bool CheckTitlesIni(const char * path);
bool FindTitle(char *data, const char * &title, const string &langCode); bool FindTitle(char *data, const char * &title, const string &langCode);
unsigned int FindCaseColor(char * data); u32 FindCaseColor(char * data);
inline int GetData(char * data, int offset, int size); inline int GetData(char * data, int offset, int size);
inline char * LoadGameNode(const char * id); inline char * LoadGameNode(const char * id);
inline char * GetGameNode(const char * id); inline char * GetGameNode(const char * id);

View File

@ -309,7 +309,7 @@ void CCoverFlow::setHQcover(bool HQ)
void CCoverFlow::setBufferSize(u32 numCovers) void CCoverFlow::setBufferSize(u32 numCovers)
{ {
if(m_covers != NULL) return; if(m_covers != NULL) return;
m_numBufCovers = min(max(4u, numCovers / 2u), 40u);//8 to 80 m_numBufCovers = min(max(4ul, numCovers / 2ul), 40ul);//8 to 80
} }
void CCoverFlow::setTextures(const string &loadingPic, const string &loadingPicFlat, const string &noCoverPic, const string &noCoverPicFlat) void CCoverFlow::setTextures(const string &loadingPic, const string &loadingPicFlat, const string &noCoverPic, const string &noCoverPicFlat)
@ -348,8 +348,8 @@ void CCoverFlow::_transposeCover(CCover* &dst, u32 rows, u32 columns, int pos)
void CCoverFlow::setRange(u32 rows, u32 columns) void CCoverFlow::setRange(u32 rows, u32 columns)
{ {
rows = rows < 3u ? 1u : min(rows | 1u, 9u) + 2u; rows = rows < 3ul ? 1ul : min(rows | 1ul, 9ul) + 2ul;
columns = min(max(3u, columns | 1u), 21u) + 2u; columns = min(max(3ul, columns | 1ul), 21ul) + 2ul;
u32 range = rows * columns; u32 range = rows * columns;
if (rows == m_rows && columns == m_columns && range == m_range) if (rows == m_rows && columns == m_columns && range == m_range)
return; return;
@ -562,7 +562,7 @@ void CCoverFlow::setBlur(u32 blurResolution, u32 blurRadius, float blurFactor)
static const struct { u32 x; u32 y; } blurRes[] = { static const struct { u32 x; u32 y; } blurRes[] = {
{ 64, 48 }, { 96, 72 }, { 128, 96 }, { 192, 144 } { 64, 48 }, { 96, 72 }, { 128, 96 }, { 192, 144 }
}; };
u32 i = min(max(0u, blurResolution), sizeof blurRes / sizeof blurRes[0] - 1u); u32 i = min(max(0ul, blurResolution), sizeof blurRes / sizeof blurRes[0] - 1ul);
m_effectTex.width = blurRes[i].x; m_effectTex.width = blurRes[i].x;
m_effectTex.height = blurRes[i].y; m_effectTex.height = blurRes[i].y;
if(m_effectTex.data != NULL) if(m_effectTex.data != NULL)
@ -570,7 +570,7 @@ void CCoverFlow::setBlur(u32 blurResolution, u32 blurRadius, float blurFactor)
free(m_effectTex.data); free(m_effectTex.data);
m_effectTex.data = NULL; m_effectTex.data = NULL;
} }
m_blurRadius = min(max(1u, blurRadius), 3u); m_blurRadius = min(max(1ul, blurRadius), 3ul);
m_blurFactor = min(max(1.f, blurFactor), 2.f); m_blurFactor = min(max(1.f, blurFactor), 2.f);
} }
@ -2683,7 +2683,7 @@ bool CCoverFlow::_loadCoverTexPNG(u32 i, bool box, bool hq, bool blankBoxCover)
gameNameOrID = strrchr(blankCoverPath, '/') + 1; gameNameOrID = strrchr(blankCoverPath, '/') + 1;
} }
else else
gameNameOrID = getPathId(m_items[i].hdr); gameNameOrID = getFilenameId(m_items[i].hdr);
if(m_items[i].hdr->type == TYPE_PLUGIN && m_pluginCacheFolders && !blankBoxCover) if(m_items[i].hdr->type == TYPE_PLUGIN && m_pluginCacheFolders && !blankBoxCover)
coverWfcDir = m_plugin.GetCoverFolderName(m_items[i].hdr->settings[0]); coverWfcDir = m_plugin.GetCoverFolderName(m_items[i].hdr->settings[0]);
@ -2779,7 +2779,7 @@ void CCoverFlow::_dropHQLOD(int i)
m_items[i].texture = newTex; m_items[i].texture = newTex;
} }
const char *CCoverFlow::getPathId(const dir_discHdr *curHdr, bool extension) const char *CCoverFlow::getFilenameId(const dir_discHdr *curHdr, bool extension)
{ {
const char *NameOrID = NULL; const char *NameOrID = NULL;
if(NoGameID(curHdr->type)) if(NoGameID(curHdr->type))
@ -2826,7 +2826,7 @@ CCoverFlow::CLRet CCoverFlow::_loadCoverTex(u32 i, bool box, bool hq, bool blank
gameNameOrID = strrchr(blankCoverPath, '/') + 1; gameNameOrID = strrchr(blankCoverPath, '/') + 1;
} }
else else
gameNameOrID = getPathId(m_items[i].hdr); gameNameOrID = getFilenameId(m_items[i].hdr);
if(m_items[i].hdr->type == TYPE_PLUGIN && m_pluginCacheFolders && !blankBoxCover) if(m_items[i].hdr->type == TYPE_PLUGIN && m_pluginCacheFolders && !blankBoxCover)
coverWfcDir = m_plugin.GetCoverFolderName(m_items[i].hdr->settings[0]); coverWfcDir = m_plugin.GetCoverFolderName(m_items[i].hdr->settings[0]);
@ -2945,7 +2945,7 @@ int CCoverFlow::_coverLoader(CCoverFlow *cf)
u32 i, j; u32 i, j;
bool hq_req = cf->m_useHQcover; bool hq_req = cf->m_useHQcover;
bool cur_pos_hq = false; bool cur_pos_hq = false;
u32 bufferSize = min(cf->m_numBufCovers * max(2u, cf->m_rows), 80u); u32 bufferSize = min(cf->m_numBufCovers * max(2ul, cf->m_rows), 80ul);
while(cf->m_loadingCovers) while(cf->m_loadingCovers)
{ {

View File

@ -135,7 +135,7 @@ public:
const dir_discHdr * getSpecificHdr(u32) const; const dir_discHdr * getSpecificHdr(u32) const;
wstringEx getTitle(void) const; wstringEx getTitle(void) const;
u64 getChanTitle(void) const; u64 getChanTitle(void) const;
const char *getPathId(const dir_discHdr *curHdr, bool extension = true); const char *getFilenameId(const dir_discHdr *curHdr, bool extension = true);
// //
bool getRenderTex(void); bool getRenderTex(void);
void setRenderTex(bool); void setRenderTex(bool);

View File

@ -551,7 +551,7 @@ void CButtonsMgr::up(void)
} }
for(u32 i = 1; i <= m_elts.size(); ++i) for(u32 i = 1; i <= m_elts.size(); ++i)
{ {
u32 j = loopNum(start - i, m_elts.size()); u32 j = loopNum<u32>(start - i, m_elts.size());
SElement &b = *m_elts[j]; SElement &b = *m_elts[j];
if (b.t == GUIELT_BUTTON && b.visible) if (b.t == GUIELT_BUTTON && b.visible)
{ {
@ -584,7 +584,7 @@ void CButtonsMgr::down(void)
} }
for(u32 i = 1; i <= m_elts.size(); ++i) for(u32 i = 1; i <= m_elts.size(); ++i)
{ {
u32 j = loopNum(start + i, m_elts.size()); u32 j = loopNum<u32>(start + i, m_elts.size());
SElement &b = *m_elts[j]; SElement &b = *m_elts[j];
if (b.t == GUIELT_BUTTON && b.visible) if (b.t == GUIELT_BUTTON && b.visible)
{ {

View File

@ -1101,7 +1101,7 @@ int pngu_info (IMGCTX ctx)
int pngu_decode (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, PNGU_u32 stripAlpha, int force32bit) int pngu_decode (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, PNGU_u32 stripAlpha, int force32bit)
{ {
u32 i; u32 i;
int mem_err = 0; //int mem_err = 0;
// Read info if it hasn't been read before // Read info if it hasn't been read before
if (!ctx->infoRead) if (!ctx->infoRead)
@ -1129,7 +1129,8 @@ int pngu_decode (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, PNGU_u32 stripAlph
free(ctx->img_data); free(ctx->img_data);
pngu_free_info (ctx); pngu_free_info (ctx);
//printf("*** This is a corrupted image!!\n"); sleep(5); //printf("*** This is a corrupted image!!\n"); sleep(5);
return mem_err ? PNGU_LIB_ERROR : -666; //return mem_err ? PNGU_LIB_ERROR : -666;
return PNGU_LIB_ERROR;
} }
png_set_error_fn(ctx->png_ptr, NULL, user_error, user_error); png_set_error_fn(ctx->png_ptr, NULL, user_error, user_error);
// Scale 16 bit samples to 8 bit // Scale 16 bit samples to 8 bit
@ -1163,14 +1164,14 @@ int pngu_decode (IMGCTX ctx, PNGU_u32 width, PNGU_u32 height, PNGU_u32 stripAlph
ctx->img_data = malloc(rowbytes * ctx->prop.imgHeight); ctx->img_data = malloc(rowbytes * ctx->prop.imgHeight);
if (!ctx->img_data) if (!ctx->img_data)
{ {
mem_err = 1; //mem_err = 1;
goto error; goto error;
} }
ctx->row_pointers = malloc(sizeof (png_bytep) * ctx->prop.imgHeight); ctx->row_pointers = malloc(sizeof (png_bytep) * ctx->prop.imgHeight);
if (!ctx->row_pointers) if (!ctx->row_pointers)
{ {
mem_err = 1; //mem_err = 1;
goto error; goto error;
} }

View File

@ -168,9 +168,9 @@ bool SFont::fromBuffer(const u8 *buffer, const u32 bufferSize, u32 size, u32 lsp
{ {
if(buffer == NULL) if(buffer == NULL)
return false; return false;
fSize = min(max(6u, size), 1000u); fSize = min(max(6ul, size), 1000ul);
lineSpacing = min(max(6u, lspacing), 1000u); lineSpacing = min(max(6ul, lspacing), 1000ul);
weight = min(w, 32u); weight = min(w, 32ul);
index = idx; index = idx;
if(data != NULL) if(data != NULL)
@ -190,11 +190,11 @@ bool SFont::fromBuffer(const u8 *buffer, const u32 bufferSize, u32 size, u32 lsp
bool SFont::fromFile(const char *path, u32 size, u32 lspacing, u32 w, u32 idx, const char *fontname) bool SFont::fromFile(const char *path, u32 size, u32 lspacing, u32 w, u32 idx, const char *fontname)
{ {
fSize = min(max(6u, size), 1000u); fSize = min(max(6ul, size), 1000ul);
weight = min(w, 32u); weight = min(w, 32ul);
index = idx = 0; index = idx = 0;
lineSpacing = min(max(6u, lspacing), 1000u); lineSpacing = min(max(6ul, lspacing), 1000ul);
if(data != NULL) if(data != NULL)
free(data); free(data);

View File

@ -28,7 +28,7 @@ public:
char name[128]; char name[128];
private: private:
u8 *data; u8 *data;
size_t dataSize; u32 dataSize;
}; };
struct SWord struct SWord

View File

@ -262,8 +262,8 @@ void CVideo::_clearScreen()
void CVideo::set2DViewport(u32 w, u32 h, int x, int y) void CVideo::set2DViewport(u32 w, u32 h, int x, int y)
{ {
m_width2D = std::min(std::max(512u, w), 800u); m_width2D = std::min(std::max(512ul, w), 800ul);
m_height2D = std::min(std::max(384u, h), 600u); m_height2D = std::min(std::max(384ul, h), 600ul);
m_x2D = std::min(std::max(-50, x), 50); m_x2D = std::min(std::max(-50, x), 50);
m_y2D = std::min(std::max(-50, y), 50); m_y2D = std::min(std::max(-50, y), 50);
} }
@ -271,8 +271,8 @@ void CVideo::set2DViewport(u32 w, u32 h, int x, int y)
void CVideo::setup2DProjection(bool setViewPort, bool noScale) void CVideo::setup2DProjection(bool setViewPort, bool noScale)
{ {
Mtx44 projMtx; Mtx44 projMtx;
float width2D = noScale ? 640.f : (int)m_width2D; float width2D = noScale ? 640.f : (float)m_width2D;
float height2D = noScale ? 480.f : (int)m_height2D; float height2D = noScale ? 480.f : (float)m_height2D;
float x = noScale ? 0.f : (float)(640 - width2D) * 0.5f + (float)m_x2D; float x = noScale ? 0.f : (float)(640 - width2D) * 0.5f + (float)m_x2D;
float y = noScale ? 0.f : (float)(480 - height2D) * 0.5f + (float)m_y2D; float y = noScale ? 0.f : (float)(480 - height2D) * 0.5f + (float)m_y2D;

View File

@ -663,7 +663,7 @@ error:
//int (*read_wiidisc_callback_t)(void*fp,u32 offset,u32 count,void*iobuf); //int (*read_wiidisc_callback_t)(void*fp,u32 offset,u32 count,void*iobuf);
// connect wiidisc to wbfs_disc // connect wiidisc to wbfs_disc
int read_wiidisc_wbfsdisc(void *fp, u32 offset, u32 count, void *iobuf) s32 read_wiidisc_wbfsdisc(void *fp, u32 offset, u32 count, void *iobuf)
{ {
return wbfs_disc_read((wbfs_disc_t *)fp, offset, count, iobuf); return wbfs_disc_read((wbfs_disc_t *)fp, offset, count, iobuf);
} }

View File

@ -63,7 +63,7 @@ typedef struct wbfs_disc_info
// //
// callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..) // callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..)
typedef int (*rw_sector_callback_t)(void *fp, u32 lba, u32 count, void *iobuf); typedef s32 (*rw_sector_callback_t)(void *fp, u32 lba, u32 count, void *iobuf);
typedef void (*progress_callback_t)(int status, int total, void *user_data); typedef void (*progress_callback_t)(int status, int total, void *user_data);

View File

@ -11,7 +11,7 @@ extern "C"
// callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..) // callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..)
// offset points 32bit words, count counts bytes // offset points 32bit words, count counts bytes
typedef int (*read_wiidisc_callback_t)(void *fp, u32 offset, u32 count, void *iobuf); typedef s32 (*read_wiidisc_callback_t)(void *fp, u32 offset, u32 count, void *iobuf);
typedef enum typedef enum
{ {

View File

@ -160,7 +160,7 @@ int app_gameconfig_load(const char *discid, u8 *tempgameconf, u32 tempgameconfsi
} }
if (strncasecmp("poke", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 4) if (strncasecmp("poke", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 4)
{ {
ret = sscanf((char *) tempgameconf + i, "( %x , %x", &codeaddr, &codeval); ret = sscanf((char *) tempgameconf + i, "( %lx , %lx", &codeaddr, &codeval);
if (ret == 2) if (ret == 2)
{ {
*(gameconf + (gameconfsize / 4)) = 0; *(gameconf + (gameconfsize / 4)) = 0;
@ -176,7 +176,7 @@ int app_gameconfig_load(const char *discid, u8 *tempgameconf, u32 tempgameconfsi
} }
if (strncasecmp("pokeifequal", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11) if (strncasecmp("pokeifequal", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) == 11)
{ {
ret = sscanf((char *) (tempgameconf + i), "( %x , %x , %x , %x", &codeaddr, &codeval, ret = sscanf((char *) (tempgameconf + i), "( %lx , %lx , %lx , %lx", &codeaddr, &codeval,
&codeaddr2, &codeval2); &codeaddr2, &codeval2);
if (ret == 4) if (ret == 4)
{ {
@ -196,7 +196,7 @@ int app_gameconfig_load(const char *discid, u8 *tempgameconf, u32 tempgameconfsi
if (strncasecmp("searchandpoke", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer) if (strncasecmp("searchandpoke", parsebuffer, strlen(parsebuffer)) == 0 && strlen(parsebuffer)
== 13) == 13)
{ {
ret = sscanf((char *) (tempgameconf + i), "( %x%n", &codeval, &tempoffset); ret = sscanf((char *) (tempgameconf + i), "( %lx%ln", &codeval, &tempoffset);
if (ret == 1) if (ret == 1)
{ {
gameconfsize += 4; gameconfsize += 4;
@ -207,10 +207,10 @@ int app_gameconfig_load(const char *discid, u8 *tempgameconf, u32 tempgameconfsi
gameconfsize += 4; gameconfsize += 4;
temp++; temp++;
i += tempoffset; i += tempoffset;
ret = sscanf((char *) (tempgameconf + i), " %x%n", &codeval, &tempoffset); ret = sscanf((char *) (tempgameconf + i), " %lx%ln", &codeval, &tempoffset);
} }
*(gameconf + (gameconfsize / 4) - temp - 1) = temp; *(gameconf + (gameconfsize / 4) - temp - 1) = temp;
ret = sscanf((char *) (tempgameconf + i), " , %x , %x , %x , %x", &codeaddr, &codeaddr2, ret = sscanf((char *) (tempgameconf + i), " , %lx , %lx , %lx , %lx", &codeaddr, &codeaddr2,
&codeoffset, &codeval2); &codeoffset, &codeval2);
if (ret == 4) if (ret == 4)
{ {

View File

@ -149,7 +149,7 @@ int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill)
return fd; return fd;
} }
int split_read_sector(void *_fp, u32 lba, u32 count, void *buf) s32 split_read_sector(void *_fp, u32 lba, u32 count, void *buf)
{ {
split_info_t *s = _fp; split_info_t *s = _fp;
int fd; int fd;
@ -181,7 +181,7 @@ int split_read_sector(void *_fp, u32 lba, u32 count, void *buf)
return 0; return 0;
} }
int split_write_sector(void *_fp, u32 lba, u32 count, void *buf) s32 split_write_sector(void *_fp, u32 lba, u32 count, void *buf)
{ {
split_info_t *s = _fp; split_info_t *s = _fp;
int fd; int fd;

View File

@ -30,8 +30,8 @@ void split_get_fname(split_info_t *s, int idx, char *fname);
int split_open_file(split_info_t *s, int idx); int split_open_file(split_info_t *s, int idx);
int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill); int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill);
int split_fill(split_info_t *s, int idx, u64 size); int split_fill(split_info_t *s, int idx, u64 size);
int split_read_sector(void *_fp, u32 lba, u32 count, void *buf); s32 split_read_sector(void *_fp, u32 lba, u32 count, void *buf);
int split_write_sector(void *_fp, u32 lba, u32 count, void *buf); s32 split_write_sector(void *_fp, u32 lba, u32 count, void *buf);
void split_init(split_info_t *s, char *fname); void split_init(split_info_t *s, char *fname);
void split_set_size(split_info_t *s, u64 split_size, u64 total_size); void split_set_size(split_info_t *s, u64 split_size, u64 total_size);
void split_close(split_info_t *s); void split_close(split_info_t *s);

View File

@ -187,8 +187,10 @@ bool CMenu::init()
for(u8 i = USB1; i <= USB8; i++) for(u8 i = USB1; i <= USB8; i++)
{ {
if(DeviceHandle.IsInserted(i) && DeviceHandle.GetFSType(i) != PART_FS_WBFS) if(DeviceHandle.IsInserted(i) && DeviceHandle.GetFSType(i) != PART_FS_WBFS)
{
drive = DeviceName[i]; drive = DeviceName[i];
break; break;
}
} }
if(drive == check && DeviceHandle.IsInserted(SD))//if no available USB partition then force SD if(drive == check && DeviceHandle.IsInserted(SD))//if no available USB partition then force SD
drive = DeviceName[SD]; drive = DeviceName[SD];

View File

@ -351,10 +351,12 @@ void CMenu::_cfTheme(void)
if (copyVersion != cfVersion || copySelected != CoverFlow.selected()) if (copyVersion != cfVersion || copySelected != CoverFlow.selected())
m_coverflow.copyDomain(domDst, domSrc); m_coverflow.copyDomain(domDst, domSrc);
else if (copyWide != wide) else if (copyWide != wide)
{
for (u32 i = 0; i < ARRAY_SIZE(CMenu::_cfParams); ++i) for (u32 i = 0; i < ARRAY_SIZE(CMenu::_cfParams); ++i)
{ {
const CMenu::SCFParamDesc &p = CMenu::_cfParams[i]; const CMenu::SCFParamDesc &p = CMenu::_cfParams[i];
if (p.scrnFmt) if (p.scrnFmt)
{
for (int k = 0; k < 4; ++k) for (int k = 0; k < 4; ++k)
{ {
string keySrc(p.key[k]); string keySrc(p.key[k]);
@ -370,10 +372,12 @@ void CMenu::_cfTheme(void)
else if (p.paramType[k] == CMenu::SCFParamDesc::PDT_INT) else if (p.paramType[k] == CMenu::SCFParamDesc::PDT_INT)
m_coverflow.setInt(domDst, keyDst, m_coverflow.getInt(domSrc, keySrc)); m_coverflow.setInt(domDst, keyDst, m_coverflow.getInt(domSrc, keySrc));
} }
}
} }
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
CoverFlow.applySettings(); CoverFlow.applySettings();
}
} }
bool sel = CoverFlow.selected(); bool sel = CoverFlow.selected();
if (BTN_B_HELD) if (BTN_B_HELD)
@ -381,7 +385,7 @@ void CMenu::_cfTheme(void)
if (BTN_PLUS_PRESSED || BTN_MINUS_PRESSED) if (BTN_PLUS_PRESSED || BTN_MINUS_PRESSED)
{ {
s8 direction = BTN_PLUS_PRESSED ? 1 : -1; s8 direction = BTN_PLUS_PRESSED ? 1 : -1;
curParam = loopNum(curParam + direction, ARRAY_SIZE(CMenu::_cfParams)); curParam = loopNum(curParam + direction, (u32)ARRAY_SIZE(CMenu::_cfParams));
if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED) if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED)
CoverFlow.select(); CoverFlow.select();
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
@ -447,7 +451,7 @@ void CMenu::_cfTheme(void)
else if (m_btnMgr.selected(m_cfThemeBtnParamP) || m_btnMgr.selected(m_cfThemeBtnParamM)) else if (m_btnMgr.selected(m_cfThemeBtnParamP) || m_btnMgr.selected(m_cfThemeBtnParamM))
{ {
s8 direction = m_btnMgr.selected(m_cfThemeBtnParamP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_cfThemeBtnParamP) ? 1 : -1;
curParam = loopNum(curParam + direction, ARRAY_SIZE(CMenu::_cfParams)); curParam = loopNum(curParam + direction, (u32)ARRAY_SIZE(CMenu::_cfParams));
if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED) if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED)
CoverFlow.select(); CoverFlow.select();
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);

View File

@ -299,7 +299,9 @@ void CMenu::_showCheatSettings(void)
// cheat in range? // cheat in range?
if (((m_cheatSettingsPage-1)*CHEATSPERPAGE + i + 1) <= m_cheatfile.getCnt()) if (((m_cheatSettingsPage-1)*CHEATSPERPAGE + i + 1) <= m_cheatfile.getCnt())
{ {
m_btnMgr.setText(m_cheatLblItem[i], m_cheatfile.getCheatName((m_cheatSettingsPage-1)*CHEATSPERPAGE + i)); wstringEx chtName;
chtName.fromUTF8(m_cheatfile.getCheatName((m_cheatSettingsPage-1)*CHEATSPERPAGE + i));
m_btnMgr.setText(m_cheatLblItem[i], chtName);
m_btnMgr.setText(m_cheatBtnItem[i], _optBoolToString(m_cheatfile.sCheatSelected[(m_cheatSettingsPage-1)*CHEATSPERPAGE + i])); m_btnMgr.setText(m_cheatBtnItem[i], _optBoolToString(m_cheatfile.sCheatSelected[(m_cheatSettingsPage-1)*CHEATSPERPAGE + i]));
m_btnMgr.show(m_cheatLblItem[i], true); m_btnMgr.show(m_cheatLblItem[i], true);

View File

@ -35,7 +35,7 @@ bool CMenu::_code(char code[4], bool erase)
memset(code, 0, 4); memset(code, 0, 4);
m_btnMgr.setText(m_codeLblTitle, codeLbl); m_btnMgr.setText(m_codeLblTitle, codeLbl);
_showCode(); _showCode();
if(erase) if(erase)// only for setting code and erase btn clears the code so you no longer need to unlock wiiflow
m_btnMgr.show(m_codeBtnErase); m_btnMgr.show(m_codeBtnErase);
while(!m_exit) while(!m_exit)
@ -98,7 +98,7 @@ bool CMenu::_code(char code[4], bool erase)
} }
} }
_hideCode(); _hideCode();
return n == sizeof code; return n == 4;
} }
void CMenu::_initCodeMenu() void CMenu::_initCodeMenu()

View File

@ -86,13 +86,13 @@ int CMenu::_config3(void)
if (m_btnMgr.selected(m_config3BtnLanguageP) || m_btnMgr.selected(m_config3BtnLanguageM)) if (m_btnMgr.selected(m_config3BtnLanguageP) || m_btnMgr.selected(m_config3BtnLanguageM))
{ {
s8 direction = m_btnMgr.selected(m_config3BtnLanguageP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_config3BtnLanguageP) ? 1 : -1;
m_cfg.setInt("GENERAL", "game_language", (int)loopNum((u32)m_cfg.getInt("GENERAL", "game_language", 0) + direction, ARRAY_SIZE(CMenu::_languages))); m_cfg.setInt("GENERAL", "game_language", (int)loopNum(m_cfg.getUInt("GENERAL", "game_language", 0) + direction, ARRAY_SIZE(CMenu::_languages)));
_showConfig3(); _showConfig3();
} }
else if (m_btnMgr.selected(m_config3BtnVideoP) || m_btnMgr.selected(m_config3BtnVideoM)) else if (m_btnMgr.selected(m_config3BtnVideoP) || m_btnMgr.selected(m_config3BtnVideoM))
{ {
s8 direction = m_btnMgr.selected(m_config3BtnVideoP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_config3BtnVideoP) ? 1 : -1;
m_cfg.setInt("GENERAL", "video_mode", (int)loopNum((u32)m_cfg.getInt("GENERAL", "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_GlobalVideoModes))); m_cfg.setInt("GENERAL", "video_mode", (int)loopNum(m_cfg.getUInt("GENERAL", "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_GlobalVideoModes)));
_showConfig3(); _showConfig3();
} }
else if (m_btnMgr.selected(m_config3BtnGCDefaults)) else if (m_btnMgr.selected(m_config3BtnGCDefaults))
@ -104,7 +104,7 @@ int CMenu::_config3(void)
else if (m_btnMgr.selected(m_config3BtnChannelsTypeP) || m_btnMgr.selected(m_config3BtnChannelsTypeM)) else if (m_btnMgr.selected(m_config3BtnChannelsTypeP) || m_btnMgr.selected(m_config3BtnChannelsTypeM))
{ {
s8 direction = m_btnMgr.selected(m_config3BtnChannelsTypeP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_config3BtnChannelsTypeP) ? 1 : -1;
m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", 1 + (int)loopNum((u32)m_cfg.getInt(CHANNEL_DOMAIN, "channels_type", 1) - 1 + direction, ARRAY_SIZE(CMenu::_ChannelsType))); m_cfg.setInt(CHANNEL_DOMAIN, "channels_type", 1 + (int)loopNum(m_cfg.getUInt(CHANNEL_DOMAIN, "channels_type", 1) - 1 + direction, ARRAY_SIZE(CMenu::_ChannelsType)));
_showConfig3(); _showConfig3();
if(m_current_view & COVERFLOW_CHANNEL || m_current_view & COVERFLOW_PLUGIN) if(m_current_view & COVERFLOW_CHANNEL || m_current_view & COVERFLOW_PLUGIN)
m_refreshGameList = true; m_refreshGameList = true;

View File

@ -98,7 +98,7 @@ int CMenu::_config4(void)
{ {
if (m_btnMgr.selected(m_config4BtnHome)) if (m_btnMgr.selected(m_config4BtnHome))
{ {
int exit_to = (int)loopNum((u32)m_cfg.getInt("GENERAL", "exit_to", 0) + 1, ARRAY_SIZE(CMenu::_exitTo)); int exit_to = (int)loopNum(m_cfg.getUInt("GENERAL", "exit_to", 0) + 1, ARRAY_SIZE(CMenu::_exitTo));
m_cfg.setInt("GENERAL", "exit_to", exit_to); m_cfg.setInt("GENERAL", "exit_to", exit_to);
Sys_ExitTo(exit_to + 1); Sys_ExitTo(exit_to + 1);
_showConfig4(); _showConfig4();

View File

@ -19,7 +19,7 @@ void AddLanguage(char *Path)
char lng[32]; char lng[32];
memset(lng, 0, 32); memset(lng, 0, 32);
char *lang_chr = strrchr(Path, '/')+1; char *lang_chr = strrchr(Path, '/')+1;
memcpy(lng, lang_chr, min(31u, (u32)(strrchr(lang_chr, '.')-lang_chr))); memcpy(lng, lang_chr, min(31ul, (u32)(strrchr(lang_chr, '.')-lang_chr)));
languages_available.push_back(lng); languages_available.push_back(lng);
} }
@ -153,7 +153,7 @@ int CMenu::_configAdv(void)
else if(m_btnMgr.selected(m_configAdvBtnCurLanguageP) || m_btnMgr.selected(m_configAdvBtnCurLanguageM)) else if(m_btnMgr.selected(m_configAdvBtnCurLanguageP) || m_btnMgr.selected(m_configAdvBtnCurLanguageM))
{ {
s8 direction = m_btnMgr.selected(m_configAdvBtnCurLanguageP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_configAdvBtnCurLanguageP) ? 1 : -1;
available_pos = loopNum(available_pos + direction, languages_available.size()); available_pos = loopNum(available_pos + direction, (u32)languages_available.size());
m_curLanguage = languages_available[available_pos]; m_curLanguage = languages_available[available_pos];
if(!m_loc.load(fmt("%s/%s.ini", m_languagesDir.c_str(), m_curLanguage.c_str()))) if(!m_loc.load(fmt("%s/%s.ini", m_languagesDir.c_str(), m_curLanguage.c_str())))
{ {

View File

@ -153,8 +153,8 @@ void CMenu::_showGameSettings()
if(GameHdr->type == TYPE_GC_GAME) if(GameHdr->type == TYPE_GC_GAME)
{ {
GCLoader = min((u32)m_gcfg2.getInt(id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u); GCLoader = min(m_gcfg2.getUInt(id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u);
GCLoader = (GCLoader == 0) ? min((u32)m_cfg.getInt(GC_DOMAIN, "default_loader", 1), ARRAY_SIZE(CMenu::_GlobalGCLoaders) - 1u) : GCLoader-1; GCLoader = (GCLoader == 0) ? min(m_cfg.getUInt(GC_DOMAIN, "default_loader", 1), ARRAY_SIZE(CMenu::_GlobalGCLoaders) - 1u) : GCLoader-1;
} }
m_gameSettingsMaxPgs = 5; m_gameSettingsMaxPgs = 5;
@ -380,7 +380,7 @@ void CMenu::_showGameSettings()
m_btnMgr.setText(m_gameSettingsBtnOcarina, _optBoolToString(m_gcfg2.getOptBool(id, "cheat", 0))); m_btnMgr.setText(m_gameSettingsBtnOcarina, _optBoolToString(m_gcfg2.getOptBool(id, "cheat", 0)));
m_btnMgr.setText(m_gameSettingsBtnLED, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0))); m_btnMgr.setText(m_gameSettingsBtnLED, _optBoolToString(m_gcfg2.getOptBool(id, "led", 0)));
i = min((u32)m_gcfg2.getInt(id, "debugger", 0), ARRAY_SIZE(CMenu::_debugger) - 1u); i = min(m_gcfg2.getUInt(id, "debugger", 0), ARRAY_SIZE(CMenu::_debugger) - 1u);
m_btnMgr.setText(m_gameSettingsLblDebuggerV, _t(CMenu::_debugger[i].id, CMenu::_debugger[i].text)); m_btnMgr.setText(m_gameSettingsLblDebuggerV, _t(CMenu::_debugger[i].id, CMenu::_debugger[i].text));
if(GameHdr->type == TYPE_GC_GAME) if(GameHdr->type == TYPE_GC_GAME)
@ -408,16 +408,16 @@ void CMenu::_showGameSettings()
else else
m_btnMgr.setText(m_gameSettingsLblPosVal, wfmt(L"%i", max(-20, min(20, videoOffset)))); m_btnMgr.setText(m_gameSettingsLblPosVal, wfmt(L"%i", max(-20, min(20, videoOffset))));
i = min((u32)m_gcfg2.getInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_GCvideoModes) - 1u); i = min(m_gcfg2.getUInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_GCvideoModes) - 1u);
m_btnMgr.setText(m_gameSettingsLblVideo, _t(CMenu::_GCvideoModes[i].id, CMenu::_GCvideoModes[i].text)); m_btnMgr.setText(m_gameSettingsLblVideo, _t(CMenu::_GCvideoModes[i].id, CMenu::_GCvideoModes[i].text));
i = min((u32)m_gcfg2.getInt(id, "language", 0), ARRAY_SIZE(CMenu::_GClanguages) - 1u); i = min(m_gcfg2.getUInt(id, "language", 0), ARRAY_SIZE(CMenu::_GClanguages) - 1u);
m_btnMgr.setText(m_gameSettingsLblLanguage, _t(CMenu::_GClanguages[i].id, CMenu::_GClanguages[i].text)); m_btnMgr.setText(m_gameSettingsLblLanguage, _t(CMenu::_GClanguages[i].id, CMenu::_GClanguages[i].text));
i = min((u32)m_gcfg2.getInt(id, "emu_memcard", 0), ARRAY_SIZE(CMenu::_NinEmuCard) - 1u); i = min(m_gcfg2.getUInt(id, "emu_memcard", 0), ARRAY_SIZE(CMenu::_NinEmuCard) - 1u);
m_btnMgr.setText(m_gameSettingsLblEmuMemCard_Val, _t(CMenu::_NinEmuCard[i].id, CMenu::_NinEmuCard[i].text)); m_btnMgr.setText(m_gameSettingsLblEmuMemCard_Val, _t(CMenu::_NinEmuCard[i].id, CMenu::_NinEmuCard[i].text));
i = min((u32)m_gcfg2.getInt(id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u); i = min(m_gcfg2.getUInt(id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u);
m_btnMgr.setText(m_gameSettingsLblGCLoader_Val, _t(CMenu::_GCLoader[i].id, CMenu::_GCLoader[i].text)); m_btnMgr.setText(m_gameSettingsLblGCLoader_Val, _t(CMenu::_GCLoader[i].id, CMenu::_GCLoader[i].text));
} }
else else
@ -429,13 +429,13 @@ void CMenu::_showGameSettings()
m_btnMgr.setText(m_gameSettingsBtnLaunchNK, _optBoolToString(m_gcfg2.getOptBool(id, "useneek", 0))); m_btnMgr.setText(m_gameSettingsBtnLaunchNK, _optBoolToString(m_gcfg2.getOptBool(id, "useneek", 0)));
m_btnMgr.setText(m_gameSettingsBtnApploader, _optBoolToString(m_gcfg2.getOptBool(id, "apploader", 0))); m_btnMgr.setText(m_gameSettingsBtnApploader, _optBoolToString(m_gcfg2.getOptBool(id, "apploader", 0)));
i = min((u32)m_gcfg2.getInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_VideoModes) - 1u); i = min(m_gcfg2.getUInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_VideoModes) - 1u);
m_btnMgr.setText(m_gameSettingsLblVideo, _t(CMenu::_VideoModes[i].id, CMenu::_VideoModes[i].text)); m_btnMgr.setText(m_gameSettingsLblVideo, _t(CMenu::_VideoModes[i].id, CMenu::_VideoModes[i].text));
i = min((u32)m_gcfg2.getInt(id, "language", 0), ARRAY_SIZE(CMenu::_languages) - 1u); i = min(m_gcfg2.getUInt(id, "language", 0), ARRAY_SIZE(CMenu::_languages) - 1u);
m_btnMgr.setText(m_gameSettingsLblLanguage, _t(CMenu::_languages[i].id, CMenu::_languages[i].text)); m_btnMgr.setText(m_gameSettingsLblLanguage, _t(CMenu::_languages[i].id, CMenu::_languages[i].text));
i = min((u32)m_gcfg2.getInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1u); i = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1u);
m_btnMgr.setText(m_gameSettingsLblAspectRatioVal, _t(CMenu::_AspectRatio[i].id, CMenu::_AspectRatio[i].text)); m_btnMgr.setText(m_gameSettingsLblAspectRatioVal, _t(CMenu::_AspectRatio[i].id, CMenu::_AspectRatio[i].text));
int j = 0; int j = 0;
@ -451,13 +451,13 @@ void CMenu::_showGameSettings()
else else
m_btnMgr.setText(m_gameSettingsLblIOS, L"AUTO"); m_btnMgr.setText(m_gameSettingsLblIOS, L"AUTO");
i = min((u32)m_gcfg2.getInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u); i = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
m_btnMgr.setText(m_gameSettingsLblPatchVidModesVal, _t(CMenu::_vidModePatch[i].id, CMenu::_vidModePatch[i].text)); m_btnMgr.setText(m_gameSettingsLblPatchVidModesVal, _t(CMenu::_vidModePatch[i].id, CMenu::_vidModePatch[i].text));
i = min((u32)m_gcfg2.getInt(id, "hooktype", 0), ARRAY_SIZE(CMenu::_hooktype) - 1u); i = min(m_gcfg2.getUInt(id, "hooktype", 0), ARRAY_SIZE(CMenu::_hooktype) - 1u);
m_btnMgr.setText(m_gameSettingsLblHooktypeVal, _t(CMenu::_hooktype[i].id, CMenu::_hooktype[i].text)); m_btnMgr.setText(m_gameSettingsLblHooktypeVal, _t(CMenu::_hooktype[i].id, CMenu::_hooktype[i].text));
i = min((u32)m_gcfg2.getInt(id, "emulate_save", 0), ARRAY_SIZE(CMenu::_SaveEmu) - 1u); i = min(m_gcfg2.getUInt(id, "emulate_save", 0), ARRAY_SIZE(CMenu::_SaveEmu) - 1u);
m_btnMgr.setText(m_gameSettingsLblEmulationVal, _t(CMenu::_SaveEmu[i].id, CMenu::_SaveEmu[i].text)); m_btnMgr.setText(m_gameSettingsLblEmulationVal, _t(CMenu::_SaveEmu[i].id, CMenu::_SaveEmu[i].text));
} }
} }
@ -552,24 +552,24 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc)
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnLanguageP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnLanguageP) ? 1 : -1;
if(GameHdr->type == TYPE_GC_GAME) if(GameHdr->type == TYPE_GC_GAME)
m_gcfg2.setInt(id, "language", (int)loopNum((u32)m_gcfg2.getInt(id, "language", 0) + direction, ARRAY_SIZE(CMenu::_GClanguages))); m_gcfg2.setInt(id, "language", (int)loopNum(m_gcfg2.getUInt(id, "language", 0) + direction, ARRAY_SIZE(CMenu::_GClanguages)));
else else
m_gcfg2.setInt(id, "language", (int)loopNum((u32)m_gcfg2.getInt(id, "language", 0) + direction, ARRAY_SIZE(CMenu::_languages))); m_gcfg2.setInt(id, "language", (int)loopNum(m_gcfg2.getUInt(id, "language", 0) + direction, ARRAY_SIZE(CMenu::_languages)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnVideoP) || m_btnMgr.selected(m_gameSettingsBtnVideoM)) else if(m_btnMgr.selected(m_gameSettingsBtnVideoP) || m_btnMgr.selected(m_gameSettingsBtnVideoM))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnVideoP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnVideoP) ? 1 : -1;
if(GameHdr->type == TYPE_GC_GAME) if(GameHdr->type == TYPE_GC_GAME)
m_gcfg2.setInt(id, "video_mode", (int)loopNum((u32)m_gcfg2.getInt(id, "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_GCvideoModes))); m_gcfg2.setInt(id, "video_mode", (int)loopNum(m_gcfg2.getUInt(id, "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_GCvideoModes)));
else else
m_gcfg2.setInt(id, "video_mode", (int)loopNum((u32)m_gcfg2.getInt(id, "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_VideoModes))); m_gcfg2.setInt(id, "video_mode", (int)loopNum(m_gcfg2.getUInt(id, "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_VideoModes)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnAspectRatioP) || m_btnMgr.selected(m_gameSettingsBtnAspectRatioM)) else if(m_btnMgr.selected(m_gameSettingsBtnAspectRatioP) || m_btnMgr.selected(m_gameSettingsBtnAspectRatioM))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnAspectRatioP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnAspectRatioP) ? 1 : -1;
m_gcfg2.setInt(id, "aspect_ratio", (int)loopNum((u32)m_gcfg2.getInt(id, "aspect_ratio", 0) + direction, ARRAY_SIZE(CMenu::_AspectRatio))); m_gcfg2.setInt(id, "aspect_ratio", (int)loopNum(m_gcfg2.getUInt(id, "aspect_ratio", 0) + direction, ARRAY_SIZE(CMenu::_AspectRatio)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnWidthP) || m_btnMgr.selected(m_gameSettingsBtnWidthM)) else if(m_btnMgr.selected(m_gameSettingsBtnWidthP) || m_btnMgr.selected(m_gameSettingsBtnWidthM))
@ -617,13 +617,13 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc)
else if(m_btnMgr.selected(m_gameSettingsBtnEmuMemCard_P) || m_btnMgr.selected(m_gameSettingsBtnEmuMemCard_M)) else if(m_btnMgr.selected(m_gameSettingsBtnEmuMemCard_P) || m_btnMgr.selected(m_gameSettingsBtnEmuMemCard_M))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnEmuMemCard_P) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnEmuMemCard_P) ? 1 : -1;
m_gcfg2.setInt(id, "emu_memcard", (int)loopNum((u32)m_gcfg2.getInt(id, "emu_memcard", 2) + direction, ARRAY_SIZE(CMenu::_NinEmuCard))); m_gcfg2.setInt(id, "emu_memcard", (int)loopNum(m_gcfg2.getUInt(id, "emu_memcard", 2) + direction, ARRAY_SIZE(CMenu::_NinEmuCard)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnGCLoader_P) || m_btnMgr.selected(m_gameSettingsBtnGCLoader_M)) else if(m_btnMgr.selected(m_gameSettingsBtnGCLoader_P) || m_btnMgr.selected(m_gameSettingsBtnGCLoader_M))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnGCLoader_P) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnGCLoader_P) ? 1 : -1;
m_gcfg2.setInt(id, "gc_loader", (int)loopNum((u32)m_gcfg2.getInt(id, "gc_loader", 0) + direction, ARRAY_SIZE(CMenu::_GCLoader))); m_gcfg2.setInt(id, "gc_loader", (int)loopNum(m_gcfg2.getUInt(id, "gc_loader", 0) + direction, ARRAY_SIZE(CMenu::_GCLoader)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnIOSM) || m_btnMgr.selected(m_gameSettingsBtnIOSP)) else if(m_btnMgr.selected(m_gameSettingsBtnIOSM) || m_btnMgr.selected(m_gameSettingsBtnIOSP))
@ -652,7 +652,7 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc)
else if(m_btnMgr.selected(m_gameSettingsBtnPatchVidModesP) || m_btnMgr.selected(m_gameSettingsBtnPatchVidModesM)) else if(m_btnMgr.selected(m_gameSettingsBtnPatchVidModesP) || m_btnMgr.selected(m_gameSettingsBtnPatchVidModesM))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnPatchVidModesP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnPatchVidModesP) ? 1 : -1;
m_gcfg2.setInt(id, "patch_video_modes", (int)loopNum((u32)m_gcfg2.getInt(id, "patch_video_modes", 0) + direction, ARRAY_SIZE(CMenu::_vidModePatch))); m_gcfg2.setInt(id, "patch_video_modes", (int)loopNum(m_gcfg2.getUInt(id, "patch_video_modes", 0) + direction, ARRAY_SIZE(CMenu::_vidModePatch)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnManage)) else if(m_btnMgr.selected(m_gameSettingsBtnManage))
@ -677,19 +677,19 @@ void CMenu::_gameSettings(const dir_discHdr *hdr, bool disc)
else if(m_btnMgr.selected(m_gameSettingsBtnHooktypeP) || m_btnMgr.selected(m_gameSettingsBtnHooktypeM)) else if(m_btnMgr.selected(m_gameSettingsBtnHooktypeP) || m_btnMgr.selected(m_gameSettingsBtnHooktypeM))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnHooktypeP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnHooktypeP) ? 1 : -1;
m_gcfg2.setInt(id, "hooktype", (int)loopNum((u32)m_gcfg2.getInt(id, "hooktype", 1) + direction, ARRAY_SIZE(CMenu::_hooktype))); m_gcfg2.setInt(id, "hooktype", (int)loopNum(m_gcfg2.getUInt(id, "hooktype", 1) + direction, ARRAY_SIZE(CMenu::_hooktype)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnEmulationP) || m_btnMgr.selected(m_gameSettingsBtnEmulationM)) else if(m_btnMgr.selected(m_gameSettingsBtnEmulationP) || m_btnMgr.selected(m_gameSettingsBtnEmulationM))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnEmulationP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnEmulationP) ? 1 : -1;
m_gcfg2.setInt(id, "emulate_save", (int)loopNum((u32)m_gcfg2.getInt(id, "emulate_save", 0) + direction, ARRAY_SIZE(CMenu::_SaveEmu))); m_gcfg2.setInt(id, "emulate_save", (int)loopNum(m_gcfg2.getUInt(id, "emulate_save", 0) + direction, ARRAY_SIZE(CMenu::_SaveEmu)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnDebuggerP) || m_btnMgr.selected(m_gameSettingsBtnDebuggerM)) else if(m_btnMgr.selected(m_gameSettingsBtnDebuggerP) || m_btnMgr.selected(m_gameSettingsBtnDebuggerM))
{ {
s8 direction = m_btnMgr.selected(m_gameSettingsBtnDebuggerP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_gameSettingsBtnDebuggerP) ? 1 : -1;
m_gcfg2.setInt(id, "debugger", (int)loopNum((u32)m_gcfg2.getInt(id, "debugger", 0) + direction, ARRAY_SIZE(CMenu::_debugger))); m_gcfg2.setInt(id, "debugger", (int)loopNum(m_gcfg2.getUInt(id, "debugger", 0) + direction, ARRAY_SIZE(CMenu::_debugger)));
_showGameSettings(); _showGameSettings();
} }
else if(m_btnMgr.selected(m_gameSettingsBtnApploader)) else if(m_btnMgr.selected(m_gameSettingsBtnApploader))

View File

@ -105,19 +105,19 @@ void CMenu::_configGC(void)
else if(m_btnMgr.selected(m_configGCBtnGCLanguageP) || m_btnMgr.selected(m_configGCBtnGCLanguageM)) else if(m_btnMgr.selected(m_configGCBtnGCLanguageP) || m_btnMgr.selected(m_configGCBtnGCLanguageM))
{ {
s8 direction = m_btnMgr.selected(m_configGCBtnGCLanguageP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_configGCBtnGCLanguageP) ? 1 : -1;
m_cfg.setInt(GC_DOMAIN, "game_language", (int)loopNum((u32)m_cfg.getInt(GC_DOMAIN, "game_language", 0) + direction, ARRAY_SIZE(CMenu::_GlobalGClanguages))); m_cfg.setInt(GC_DOMAIN, "game_language", (int)loopNum(m_cfg.getUInt(GC_DOMAIN, "game_language", 0) + direction, ARRAY_SIZE(CMenu::_GlobalGClanguages)));
_showConfigGC(); _showConfigGC();
} }
else if(m_btnMgr.selected(m_configGCBtnGCVideoP) || m_btnMgr.selected(m_configGCBtnGCVideoM)) else if(m_btnMgr.selected(m_configGCBtnGCVideoP) || m_btnMgr.selected(m_configGCBtnGCVideoM))
{ {
s8 direction = m_btnMgr.selected(m_configGCBtnGCVideoP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_configGCBtnGCVideoP) ? 1 : -1;
m_cfg.setInt(GC_DOMAIN, "video_mode", (int)loopNum((u32)m_cfg.getInt(GC_DOMAIN, "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_GlobalGCvideoModes))); m_cfg.setInt(GC_DOMAIN, "video_mode", (int)loopNum(m_cfg.getUInt(GC_DOMAIN, "video_mode", 0) + direction, ARRAY_SIZE(CMenu::_GlobalGCvideoModes)));
_showConfigGC(); _showConfigGC();
} }
else if(m_btnMgr.selected(m_configGCBtnGCLoaderP) || m_btnMgr.selected(m_configGCBtnGCLoaderM)) else if(m_btnMgr.selected(m_configGCBtnGCLoaderP) || m_btnMgr.selected(m_configGCBtnGCLoaderM))
{ {
s8 direction = m_btnMgr.selected(m_configGCBtnGCLoaderP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_configGCBtnGCLoaderP) ? 1 : -1;
m_cfg.setInt(GC_DOMAIN, "default_loader", (int)loopNum((u32)m_cfg.getInt(GC_DOMAIN, "default_loader", 1) + direction, ARRAY_SIZE(CMenu::_GlobalGCLoaders))); m_cfg.setInt(GC_DOMAIN, "default_loader", (int)loopNum(m_cfg.getUInt(GC_DOMAIN, "default_loader", 1) + direction, ARRAY_SIZE(CMenu::_GlobalGCLoaders)));
_showConfigGC(); _showConfigGC();
} }
} }

View File

@ -607,8 +607,10 @@ int CMenu::_coverDownloader(bool missingOnly)
{ {
case EN: case EN:
if(( newID[3] == 'E' || newID[3] == 'X' || newID[3] == 'Y' || newID[3] == 'P') && m_downloadPrioVal&C_TYPE_EN ) if(( newID[3] == 'E' || newID[3] == 'X' || newID[3] == 'Y' || newID[3] == 'P') && m_downloadPrioVal&C_TYPE_EN )
{
url = makeURL(fmtURLBox[j], newID, "EN"); url = makeURL(fmtURLBox[j], newID, "EN");
tdl = true; tdl = true;
}
break; break;
case JA: case JA:
if(newID[3] == 'J' && m_downloadPrioVal&C_TYPE_JA) if(newID[3] == 'J' && m_downloadPrioVal&C_TYPE_JA)

View File

@ -278,7 +278,7 @@ static u8 GetRequestedGameIOS(dir_discHdr *hdr)
void CMenu::_setCurrentItem(const dir_discHdr *hdr) void CMenu::_setCurrentItem(const dir_discHdr *hdr)
{ {
const char *title = CoverFlow.getPathId(hdr, true);// with extension const char *title = CoverFlow.getFilenameId(hdr, true);// with extension
m_cfg.setString(_domainFromView(), "current_item", title); m_cfg.setString(_domainFromView(), "current_item", title);
if(m_source_cnt > 1) if(m_source_cnt > 1)
m_cfg.setInt(_domainFromView(), "current_item_type", hdr->type); m_cfg.setInt(_domainFromView(), "current_item_type", hdr->type);
@ -368,7 +368,7 @@ bool CMenu::_startVideo()
const dir_discHdr *GameHdr = CoverFlow.getHdr(); const dir_discHdr *GameHdr = CoverFlow.getHdr();
char curId3[4]; char curId3[4];
memset(curId3, 0, 4); memset(curId3, 0, 4);
const char *videoId = CoverFlow.getPathId(GameHdr);//title.ext const char *videoId = CoverFlow.getFilenameId(GameHdr);//title.ext
if(!NoGameID(GameHdr->type)) if(!NoGameID(GameHdr->type))
{ //id3 { //id3
memcpy(curId3, GameHdr->id, 3); memcpy(curId3, GameHdr->id, 3);
@ -1017,7 +1017,7 @@ void CMenu::_launch(const dir_discHdr *hdr)
} }
/* get title from hdr */ /* get title from hdr */
u32 title_len_no_ext = 0; u32 title_len_no_ext = 0;
const char *title = CoverFlow.getPathId(hdr, true);// with extension const char *title = CoverFlow.getFilenameId(hdr, true);// with extension
//m_cfg.setString(_domainFromView(), "current_item", title); //m_cfg.setString(_domainFromView(), "current_item", title);
/* get path from hdr */ /* get path from hdr */
@ -1087,8 +1087,8 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
const char *id = hdr->id; const char *id = hdr->id;
/* Get loader choice*/ /* Get loader choice*/
u8 loader = min((u32)m_gcfg2.getInt(id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u); u8 loader = min(m_gcfg2.getUInt(id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u);
loader = (loader == 0) ? min((u32)m_cfg.getInt(GC_DOMAIN, "default_loader", 1), ARRAY_SIZE(CMenu::_GlobalGCLoaders) - 1u) : loader-1; loader = (loader == 0) ? min(m_cfg.getUInt(GC_DOMAIN, "default_loader", 1), ARRAY_SIZE(CMenu::_GlobalGCLoaders) - 1u) : loader-1;
if(disc) if(disc)
loader = NINTENDONT; loader = NINTENDONT;
@ -1117,14 +1117,14 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
else else
path = hdr->path; path = hdr->path;
u8 GClanguage = min((u32)m_gcfg2.getInt(id, "language", 0), ARRAY_SIZE(CMenu::_GClanguages) - 1u); u8 GClanguage = min(m_gcfg2.getUInt(id, "language", 0), ARRAY_SIZE(CMenu::_GClanguages) - 1u);
GClanguage = (GClanguage == 0) ? min((u32)m_cfg.getInt(GC_DOMAIN, "game_language", 0), ARRAY_SIZE(CMenu::_GlobalGClanguages) - 1u) : GClanguage-1; GClanguage = (GClanguage == 0) ? min(m_cfg.getUInt(GC_DOMAIN, "game_language", 0), ARRAY_SIZE(CMenu::_GlobalGClanguages) - 1u) : GClanguage-1;
// language selection only works for PAL games // language selection only works for PAL games
if(id[3] == 'E' || id[3] == 'J') if(id[3] == 'E' || id[3] == 'J')
GClanguage = 1; //=english GClanguage = 1; //=english
u8 videoMode = min((u32)m_gcfg2.getInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_GCvideoModes) - 1u); u8 videoMode = min(m_gcfg2.getUInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_GCvideoModes) - 1u);
videoMode = (videoMode == 0) ? min((u32)m_cfg.getInt(GC_DOMAIN, "video_mode", 0), ARRAY_SIZE(CMenu::_GlobalGCvideoModes) - 1u) : videoMode-1; videoMode = (videoMode == 0) ? min(m_cfg.getUInt(GC_DOMAIN, "video_mode", 0), ARRAY_SIZE(CMenu::_GlobalGCvideoModes) - 1u) : videoMode-1;
bool widescreen = m_gcfg2.getBool(id, "widescreen", false); bool widescreen = m_gcfg2.getBool(id, "widescreen", false);
bool activity_led = m_gcfg2.getBool(id, "led", false); bool activity_led = m_gcfg2.getBool(id, "led", false);
@ -1132,8 +1132,8 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
if(loader == NINTENDONT) if(loader == NINTENDONT)
{ {
/* might add here - if not a disc use path to check for disc2.iso - if so then we need to prompt disc 1 or disc 2? */ /* might add here - if not a disc use path to check for disc2.iso - if so then we need to prompt disc 1 or disc 2? */
u8 emuMC = min((u32)m_gcfg2.getInt(id, "emu_memcard", 0), ARRAY_SIZE(CMenu::_NinEmuCard) - 1u); u8 emuMC = min(m_gcfg2.getUInt(id, "emu_memcard", 0), ARRAY_SIZE(CMenu::_NinEmuCard) - 1u);
emuMC = (emuMC == 0) ? m_cfg.getInt(GC_DOMAIN, "emu_memcard", 1) : emuMC - 1; emuMC = (emuMC == 0) ? m_cfg.getUInt(GC_DOMAIN, "emu_memcard", 1) : emuMC - 1;
// these 2 settings have global defaults in wfl main config // these 2 settings have global defaults in wfl main config
bool cc_rumble = m_gcfg2.testOptBool(id, "cc_rumble", m_cfg.getBool(GC_DOMAIN, "cc_rumble", false)); bool cc_rumble = m_gcfg2.testOptBool(id, "cc_rumble", m_cfg.getBool(GC_DOMAIN, "cc_rumble", false));
@ -1475,14 +1475,14 @@ void CMenu::_launchChannel(dir_discHdr *hdr)
bool cheat = m_gcfg2.getBool(id, "cheat", false); bool cheat = m_gcfg2.getBool(id, "cheat", false);
bool countryPatch = m_gcfg2.getBool(id, "country_patch", false); bool countryPatch = m_gcfg2.getBool(id, "country_patch", false);
u8 videoMode = (u8)min((u32)m_gcfg2.getInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_VideoModes) - 1); u8 videoMode = min(m_gcfg2.getUInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_VideoModes) - 1u);
videoMode = (videoMode == 0) ? (u8)min((u32)m_cfg.getInt("GENERAL", "video_mode", 0), ARRAY_SIZE(CMenu::_GlobalVideoModes) - 1) : videoMode - 1; videoMode = (videoMode == 0) ? min(m_cfg.getUInt("GENERAL", "video_mode", 0), ARRAY_SIZE(CMenu::_GlobalVideoModes) - 1u) : videoMode - 1;
int language = min((u32)m_gcfg2.getInt(id, "language", 0), ARRAY_SIZE(CMenu::_languages) - 1); int language = min(m_gcfg2.getUInt(id, "language", 0), ARRAY_SIZE(CMenu::_languages) - 1u);
language = (language == 0) ? min((u32)m_cfg.getInt("GENERAL", "game_language", 0), ARRAY_SIZE(CMenu::_languages) - 1) : language; language = (language == 0) ? min(m_cfg.getUInt("GENERAL", "game_language", 0), ARRAY_SIZE(CMenu::_languages) - 1u) : language;
u8 patchVidMode = min((u32)m_gcfg2.getInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1); u8 patchVidMode = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
int aspectRatio = min((u32)m_gcfg2.getInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1) - 1;// -1,0,1 int aspectRatio = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1) - 1;// -1,0,1
const char *rtrn = m_gcfg2.getBool(id, "returnto", true) ? m_cfg.getString("GENERAL", "returnto").c_str() : NULL; const char *rtrn = m_gcfg2.getBool(id, "returnto", true) ? m_cfg.getString("GENERAL", "returnto").c_str() : NULL;
u32 returnTo = rtrn[0] << 24 | rtrn[1] << 16 | rtrn[2] << 8 | rtrn[3]; u32 returnTo = rtrn[0] << 24 | rtrn[1] << 16 | rtrn[2] << 8 | rtrn[3];
@ -1690,17 +1690,17 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd, bool disc_cfg)
bool countryPatch = m_gcfg2.getBool(id, "country_patch", false); bool countryPatch = m_gcfg2.getBool(id, "country_patch", false);
bool private_server = m_gcfg2.getBool(id, "private_server", false); bool private_server = m_gcfg2.getBool(id, "private_server", false);
u8 videoMode = (u8)min((u32)m_gcfg2.getInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_VideoModes) - 1u); u8 videoMode = min(m_gcfg2.getUInt(id, "video_mode", 0), ARRAY_SIZE(CMenu::_VideoModes) - 1u);
videoMode = (videoMode == 0) ? (u8)min((u32)m_cfg.getInt("GENERAL", "video_mode", 0), ARRAY_SIZE(CMenu::_GlobalVideoModes) - 1) : videoMode-1; videoMode = (videoMode == 0) ? min(m_cfg.getUInt("GENERAL", "video_mode", 0), ARRAY_SIZE(CMenu::_GlobalVideoModes) - 1u) : videoMode-1;
int language = min((u32)m_gcfg2.getInt(id, "language", 0), ARRAY_SIZE(CMenu::_languages) - 1u); int language = min(m_gcfg2.getUInt(id, "language", 0), ARRAY_SIZE(CMenu::_languages) - 1u);
language = (language == 0) ? min((u32)m_cfg.getInt("GENERAL", "game_language", 0), ARRAY_SIZE(CMenu::_languages) - 1) : language; language = (language == 0) ? min(m_cfg.getUInt("GENERAL", "game_language", 0), ARRAY_SIZE(CMenu::_languages) - 1u) : language;
const char *rtrn = m_cfg.getString("GENERAL", "returnto", "").c_str(); const char *rtrn = m_cfg.getString("GENERAL", "returnto", "").c_str();
int aspectRatio = min((u32)m_gcfg2.getInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1u) - 1; int aspectRatio = min(m_gcfg2.getUInt(id, "aspect_ratio", 0), ARRAY_SIZE(CMenu::_AspectRatio) - 1u) - 1;
u8 patchVidMode = min((u32)m_gcfg2.getInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u); u8 patchVidMode = min(m_gcfg2.getUInt(id, "patch_video_modes", 0), ARRAY_SIZE(CMenu::_vidModePatch) - 1u);
u8 emulate_mode = min((u32)m_gcfg2.getInt(id, "emulate_save", 0), ARRAY_SIZE(CMenu::_SaveEmu) - 1u); u8 emulate_mode = min(m_gcfg2.getUInt(id, "emulate_save", 0), ARRAY_SIZE(CMenu::_SaveEmu) - 1u);
u8 gameEmuMode = emulate_mode; u8 gameEmuMode = emulate_mode;
if(emulate_mode == 0)// default then use global if(emulate_mode == 0)// default then use global
emulate_mode = min(max(0, m_cfg.getInt(WII_DOMAIN, "save_emulation", 0)), (int)ARRAY_SIZE(CMenu::_GlobalSaveEmu) - 1); emulate_mode = min(max(0, m_cfg.getInt(WII_DOMAIN, "save_emulation", 0)), (int)ARRAY_SIZE(CMenu::_GlobalSaveEmu) - 1);
@ -1995,9 +1995,9 @@ void CMenu::_gameSoundThread(CMenu *m)
coverDir = m_plugin.GetCoverFolderName(GameHdr->settings[0]); coverDir = m_plugin.GetCoverFolderName(GameHdr->settings[0]);
if(coverDir == NULL || strlen(coverDir) == 0) if(coverDir == NULL || strlen(coverDir) == 0)
strncpy(custom_banner, fmt("%s/%s.bnr", m->m_customBnrDir.c_str(), CoverFlow.getPathId(GameHdr)), 255); strncpy(custom_banner, fmt("%s/%s.bnr", m->m_customBnrDir.c_str(), CoverFlow.getFilenameId(GameHdr)), 255);
else else
strncpy(custom_banner, fmt("%s/%s/%s.bnr", m->m_customBnrDir.c_str(), coverDir, CoverFlow.getPathId(GameHdr)), 255); strncpy(custom_banner, fmt("%s/%s/%s.bnr", m->m_customBnrDir.c_str(), coverDir, CoverFlow.getFilenameId(GameHdr)), 255);
fsop_GetFileSizeBytes(custom_banner, &custom_bnr_size); fsop_GetFileSizeBytes(custom_banner, &custom_bnr_size);
if(custom_bnr_size > 0) if(custom_bnr_size > 0)
{ {

View File

@ -206,7 +206,7 @@ void CMenu::LeftStick()
if(LEFT_STICK_LEFT) if(LEFT_STICK_LEFT)
{ {
speed = (u8)(left_stick_mag[chan] * 10.00); speed = (u8)(left_stick_mag[chan] * 10.00);
pSpeed = (u8)((abs(PAD_StickX(chan))/10)|(abs(DS3_StickX()/10))|(abs(WUPC_lStickX(chan))/80)); pSpeed = (u8)(((int)abs(PAD_StickX(chan))/10)|((int)abs(DS3_StickX()/10))|((int)abs(WUPC_lStickX(chan))/80));
if(stickPointer_x[chan] > m_cursor[chan].width()/2) if(stickPointer_x[chan] > m_cursor[chan].width()/2)
stickPointer_x[chan] = stickPointer_x[chan]-speed-pSpeed; stickPointer_x[chan] = stickPointer_x[chan]-speed-pSpeed;
pointerhidedelay[chan] = 150; pointerhidedelay[chan] = 150;
@ -214,7 +214,7 @@ void CMenu::LeftStick()
if(LEFT_STICK_DOWN) if(LEFT_STICK_DOWN)
{ {
speed = (u8)(left_stick_mag[chan] * 10.00); speed = (u8)(left_stick_mag[chan] * 10.00);
pSpeed = (u8)((abs(PAD_StickY(chan))/10)|(abs(DS3_StickY()/10))|(abs(WUPC_lStickY(chan))/80)); pSpeed = (u8)(((int)abs(PAD_StickY(chan))/10)|((int)abs(DS3_StickY()/10))|((int)abs(WUPC_lStickY(chan))/80));
if(stickPointer_y[chan] < (m_vid.height() + (m_cursor[chan].height()/2))) if(stickPointer_y[chan] < (m_vid.height() + (m_cursor[chan].height()/2)))
stickPointer_y[chan] = stickPointer_y[chan]+speed+pSpeed; stickPointer_y[chan] = stickPointer_y[chan]+speed+pSpeed;
pointerhidedelay[chan] = 150; pointerhidedelay[chan] = 150;
@ -222,7 +222,7 @@ void CMenu::LeftStick()
if(LEFT_STICK_RIGHT) if(LEFT_STICK_RIGHT)
{ {
speed = (u8)(left_stick_mag[chan] * 10.00); speed = (u8)(left_stick_mag[chan] * 10.00);
pSpeed = (u8)((abs(PAD_StickX(chan))/10)|(abs(DS3_StickX()/10))|(abs(WUPC_lStickX(chan))/80)); pSpeed = (u8)(((int)abs(PAD_StickX(chan))/10)|((int)abs(DS3_StickX()/10))|((int)abs(WUPC_lStickX(chan))/80));
if(stickPointer_x[chan] < (m_vid.width() + (m_cursor[chan].width()/2))) if(stickPointer_x[chan] < (m_vid.width() + (m_cursor[chan].width()/2)))
stickPointer_x[chan] = stickPointer_x[chan]+speed+pSpeed; stickPointer_x[chan] = stickPointer_x[chan]+speed+pSpeed;
pointerhidedelay[chan] = 150; pointerhidedelay[chan] = 150;
@ -230,7 +230,7 @@ void CMenu::LeftStick()
if(LEFT_STICK_UP) if(LEFT_STICK_UP)
{ {
speed = (u8)(left_stick_mag[chan] * 10.00); speed = (u8)(left_stick_mag[chan] * 10.00);
pSpeed = (u8)((abs(PAD_StickY(chan))/10)|(abs(DS3_StickY()/10))|(abs(WUPC_lStickY(chan))/80)); pSpeed = (u8)(((int)abs(PAD_StickY(chan))/10)|((int)abs(DS3_StickY()/10))|((int)abs(WUPC_lStickY(chan))/80));
if(stickPointer_y[chan] > m_cursor[chan].height()/2) if(stickPointer_y[chan] > m_cursor[chan].height()/2)
stickPointer_y[chan] = stickPointer_y[chan]-speed-pSpeed; stickPointer_y[chan] = stickPointer_y[chan]-speed-pSpeed;
pointerhidedelay[chan] = 150; pointerhidedelay[chan] = 150;

View File

@ -1,8 +1,8 @@
#include <dirent.h> //#include <dirent.h>
#include <unistd.h> //#include <unistd.h>
#include "menu.hpp" #include "menu.hpp"
#include "defines.h" //#include "defines.h"
// Source menu // Source menu
s16 m_sourceLblPage; s16 m_sourceLblPage;
@ -148,8 +148,9 @@ void CMenu::_updateSourceBtns(void)
memset(current_btn, 0, 16); memset(current_btn, 0, 16);
strncpy(current_btn, fmt("BUTTON_%i", i), 15); strncpy(current_btn, fmt("BUTTON_%i", i), 15);
string btnSource = m_source.getString(current_btn, "source", ""); string btnSource = m_source.getString(current_btn, "source", "");
const char *btn_image = m_source.getString(current_btn,"image", "").c_str(); bool src_selected = false;
const char *btn_imageSel = m_source.getString(current_btn,"image_s", "").c_str(); //const char *btn_image = m_source.getString(current_btn,"image", "").c_str();
//const char *btn_imageSel = m_source.getString(current_btn,"image_s", "").c_str();
if(btnSource == "") if(btnSource == "")
continue; continue;
if(m_multisource) if(m_multisource)
@ -163,7 +164,7 @@ void CMenu::_updateSourceBtns(void)
{ {
sourceBtn = i; sourceBtn = i;
selectedBtns++; selectedBtns++;
btn_image = btn_imageSel; src_selected = true;
} }
} }
} }
@ -178,7 +179,7 @@ void CMenu::_updateSourceBtns(void)
{ {
sourceBtn = i; sourceBtn = i;
selectedBtns++; selectedBtns++;
btn_image = btn_imageSel; src_selected = true;
} }
} }
} }
@ -188,7 +189,7 @@ void CMenu::_updateSourceBtns(void)
{ {
sourceBtn = i; sourceBtn = i;
selectedBtns++; selectedBtns++;
btn_image = btn_imageSel; src_selected = true;
} }
} }
else if(btnSource == "dml" || btnSource == "homebrew" || btnSource == "wii") else if(btnSource == "dml" || btnSource == "homebrew" || btnSource == "wii")
@ -198,12 +199,20 @@ void CMenu::_updateSourceBtns(void)
{ {
sourceBtn = i; sourceBtn = i;
selectedBtns++; selectedBtns++;
btn_image = btn_imageSel; src_selected = true;
} }
} }
} }
char btn_image[255];
if(src_selected)
snprintf(btn_image, sizeof(btn_image), "%s", m_source.getString(current_btn,"image_s", "").c_str());
else
snprintf(btn_image, sizeof(btn_image), "%s", m_source.getString(current_btn,"image", "").c_str());
if(i >= j && i < (j + 12)) if(i >= j && i < (j + 12))
{ {
//m_btnMgr.hide(m_sourceBtnSource[i - j], true);
//m_btnMgr.tick();
TexData texConsoleImg; TexData texConsoleImg;
TexData texConsoleImgs; TexData texConsoleImgs;
if(TexHandle.fromImageFile(texConsoleImg, fmt("%s/%s/%s", m_sourceDir.c_str(), themeName, btn_image)) != TE_OK) if(TexHandle.fromImageFile(texConsoleImg, fmt("%s/%s/%s", m_sourceDir.c_str(), themeName, btn_image)) != TE_OK)

View File

@ -4,8 +4,7 @@
#include "lockMutex.hpp" #include "lockMutex.hpp"
#include "loader/wbfs.h" #include "loader/wbfs.h"
int version_num = 0, num_versions = 0; unsigned int i, version_num = 0, num_versions = 0;
static int i;
const int CMenu::SVN_REV_NUM = atoi(SVN_REV); const int CMenu::SVN_REV_NUM = atoi(SVN_REV);
int CMenu::_version[9] = {0, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM}; int CMenu::_version[9] = {0, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM, SVN_REV_NUM};
@ -71,7 +70,7 @@ void CMenu::_system()
//add the changelog info here //add the changelog info here
} }
if (num_versions > 1 && version_num == 0) version_num = 1; if (num_versions > 1 && version_num == 0) version_num = 1;
i = min((u32)version_num, ARRAY_SIZE(CMenu::_version) -1u); i = min(version_num, ARRAY_SIZE(CMenu::_version) -1u);
newVer = CMenu::_version[i]; newVer = CMenu::_version[i];
_showSystem(); _showSystem();
} }
@ -135,7 +134,7 @@ void CMenu::_system()
--version_num; --version_num;
else else
version_num = num_versions; version_num = num_versions;
i = min((u32)version_num, ARRAY_SIZE(CMenu::_version) -1u); i = min(version_num, ARRAY_SIZE(CMenu::_version) -1u);
{ {
m_btnMgr.setText(m_systemLblVerSelectVal, wstringEx(sfmt("%i", CMenu::_version[i]))); m_btnMgr.setText(m_systemLblVerSelectVal, wstringEx(sfmt("%i", CMenu::_version[i])));
newVer = CMenu::_version[i]; newVer = CMenu::_version[i];
@ -155,7 +154,7 @@ void CMenu::_system()
++version_num; ++version_num;
else else
version_num = 1; version_num = 1;
i = min((u32)version_num, ARRAY_SIZE(CMenu::_version) -1u); i = min(version_num, ARRAY_SIZE(CMenu::_version) -1u);
{ {
m_btnMgr.setText(m_systemLblVerSelectVal, wstringEx(sfmt("%i", CMenu::_version[i]))); m_btnMgr.setText(m_systemLblVerSelectVal, wstringEx(sfmt("%i", CMenu::_version[i])));
newVer = CMenu::_version[i]; newVer = CMenu::_version[i];
@ -280,7 +279,7 @@ void CMenu::_textSystem(void)
m_btnMgr.setText(m_systemLblVersion, SVN_REV_W); m_btnMgr.setText(m_systemLblVersion, SVN_REV_W);
m_btnMgr.setText(m_systemBtnBack, _t("sys3", L"Cancel")); m_btnMgr.setText(m_systemBtnBack, _t("sys3", L"Cancel"));
m_btnMgr.setText(m_systemBtnDownload, _t("sys4", L"Upgrade")); m_btnMgr.setText(m_systemBtnDownload, _t("sys4", L"Upgrade"));
i = min((u32)version_num, ARRAY_SIZE(CMenu::_version) -1u); i = min(version_num, ARRAY_SIZE(CMenu::_version) -1u);
if (i == 0) if (i == 0)
m_btnMgr.setText(m_systemLblVerSelectVal, SVN_REV_W); m_btnMgr.setText(m_systemLblVerSelectVal, SVN_REV_W);
else else

View File

@ -37,7 +37,7 @@ typedef struct ss_device DS3;
bool DS3_Init(); bool DS3_Init();
void DS3_Rumble(); void DS3_Rumble();
void DS3_Cleanup(); void DS3_Cleanup();
u32 DS3_ButtonsDown(); unsigned int DS3_ButtonsDown();
void DS3_ScanPads(); void DS3_ScanPads();
int DS3_StickX(); int DS3_StickX();
int DS3_SubStickX(); int DS3_SubStickX();

View File

@ -67,8 +67,8 @@ bool ZipFile::ExtractAll(const char *dest)
if(buffer == NULL) if(buffer == NULL)
return false; return false;
char writepath[MAXPATHLEN]; char writepath[1024];
char filename[MAXPATHLEN]; char filename[1024];
memset(filename, 0, sizeof(filename)); memset(filename, 0, sizeof(filename));
int ret = unzGoToFirstFile(File); int ret = unzGoToFirstFile(File);