mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
-fixed too short help and synopsis (issue 146)
-cleaned up and speeded up some stuff
This commit is contained in:
parent
7e0fa2417c
commit
f82408249c
13
source/const_str.hpp
Normal file
13
source/const_str.hpp
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
#ifndef _CONST_STR_HPP_
|
||||
#define _CONST_STR_HPP_
|
||||
|
||||
#include "wstringEx/wstringEx.hpp"
|
||||
#include "gui/text.hpp"
|
||||
#include "defines.h"
|
||||
#include "svnrev.h"
|
||||
|
||||
static const string &VERSION_STRING = sfmt("%s (%s-r%s)", APP_NAME, APP_VERSION, SVN_REV);
|
||||
static const wstringEx SVN_REV_W(SVN_REV);
|
||||
|
||||
#endif
|
@ -100,7 +100,7 @@ u32 fsop_GetFolderKb(const char *source)
|
||||
return ret;
|
||||
}
|
||||
|
||||
u32 fsop_GetFreeSpaceKb(char *path) // Return free kb on the device passed
|
||||
u32 fsop_GetFreeSpaceKb(const char *path) // Return free kb on the device passed
|
||||
{
|
||||
struct statvfs s;
|
||||
|
||||
|
@ -11,7 +11,7 @@ typedef void (*progress_callback_t)(int status,int total,void *user_data);
|
||||
bool fsop_GetFileSizeBytes(char *path, size_t *filesize);
|
||||
u64 fsop_GetFolderBytes(const char *source);
|
||||
u32 fsop_GetFolderKb(const char *source);
|
||||
u32 fsop_GetFreeSpaceKb(char *path);
|
||||
u32 fsop_GetFreeSpaceKb(const char *path);
|
||||
bool fsop_FileExist(const char *fn);
|
||||
bool fsop_DirExist(const char *path);
|
||||
void fsop_MakeFolder(char *path);
|
||||
|
@ -36,37 +36,33 @@
|
||||
#include "memory/memory.h"
|
||||
|
||||
// DIOS-MIOS
|
||||
DML_CFG *DMLCfg = NULL;
|
||||
DML_CFG DMLCfg;
|
||||
|
||||
void DML_New_SetOptions(const char *GamePath, char *CheatPath, const char *NewCheatPath, const char *partition, bool cheats, bool debugger, u8 NMM, u8 nodisc, u8 DMLvideoMode, u8 videoSetting, bool widescreen, bool new_dm_cfg)
|
||||
{
|
||||
gprintf("Wiiflow GC: Launch game '%s' through memory (new method)\n", GamePath);
|
||||
memset(&DMLCfg, 0, sizeof(DML_CFG));
|
||||
|
||||
DMLCfg = (DML_CFG*)malloc(sizeof(DML_CFG));
|
||||
if(DMLCfg == NULL)
|
||||
return;
|
||||
memset(DMLCfg, 0, sizeof(DML_CFG));
|
||||
|
||||
DMLCfg->Magicbytes = 0xD1050CF6;
|
||||
DMLCfg.Magicbytes = 0xD1050CF6;
|
||||
if(new_dm_cfg)
|
||||
DMLCfg->CfgVersion = 0x00000002;
|
||||
DMLCfg.CfgVersion = 0x00000002;
|
||||
else
|
||||
DMLCfg->CfgVersion = 0x00000001;
|
||||
DMLCfg.CfgVersion = 0x00000001;
|
||||
|
||||
if(videoSetting == 0)
|
||||
DMLCfg->VideoMode |= DML_VID_NONE;
|
||||
DMLCfg.VideoMode |= DML_VID_NONE;
|
||||
else if(videoSetting == 1)
|
||||
DMLCfg->VideoMode |= DML_VID_DML_AUTO;
|
||||
DMLCfg.VideoMode |= DML_VID_DML_AUTO;
|
||||
else
|
||||
DMLCfg->VideoMode |= DML_VID_FORCE;
|
||||
DMLCfg.VideoMode |= DML_VID_FORCE;
|
||||
|
||||
DMLCfg->Config |= DML_CFG_ACTIVITY_LED; //Sorry but I like it lol, option will may follow
|
||||
DMLCfg->Config |= DML_CFG_PADHOOK; //Makes life easier, l+z+b+digital down...
|
||||
DMLCfg.Config |= DML_CFG_ACTIVITY_LED; //Sorry but I like it lol, option will may follow
|
||||
DMLCfg.Config |= DML_CFG_PADHOOK; //Makes life easier, l+z+b+digital down...
|
||||
|
||||
if(GamePath != NULL)
|
||||
{
|
||||
strncpy(DMLCfg->GamePath, GamePath, sizeof(DMLCfg->GamePath));
|
||||
DMLCfg->Config |= DML_CFG_GAME_PATH;
|
||||
strncpy(DMLCfg.GamePath, GamePath, sizeof(DMLCfg.GamePath));
|
||||
DMLCfg.Config |= DML_CFG_GAME_PATH;
|
||||
}
|
||||
|
||||
if(CheatPath != NULL && NewCheatPath != NULL && cheats)
|
||||
@ -79,31 +75,31 @@ void DML_New_SetOptions(const char *GamePath, char *CheatPath, const char *NewCh
|
||||
}
|
||||
else
|
||||
ptr = strstr(CheatPath, ":/") + 1;
|
||||
strncpy(DMLCfg->CheatPath, ptr, sizeof(DMLCfg->CheatPath));
|
||||
strncpy(DMLCfg.CheatPath, ptr, sizeof(DMLCfg.CheatPath));
|
||||
gprintf("Cheat Path: %s\n", ptr);
|
||||
DMLCfg->Config |= DML_CFG_CHEAT_PATH;
|
||||
DMLCfg.Config |= DML_CFG_CHEAT_PATH;
|
||||
}
|
||||
|
||||
if(cheats)
|
||||
DMLCfg->Config |= DML_CFG_CHEATS;
|
||||
DMLCfg.Config |= DML_CFG_CHEATS;
|
||||
if(debugger)
|
||||
DMLCfg->Config |= DML_CFG_DEBUGGER;
|
||||
if(NMM > 0)
|
||||
DMLCfg->Config |= DML_CFG_NMM;
|
||||
DMLCfg.Config |= DML_CFG_DEBUGGER;
|
||||
if(NMM)
|
||||
DMLCfg.Config |= DML_CFG_NMM;
|
||||
if(NMM > 1)
|
||||
DMLCfg->Config |= DML_CFG_NMM_DEBUG;
|
||||
if(nodisc > 0)
|
||||
DMLCfg.Config |= DML_CFG_NMM_DEBUG;
|
||||
if(nodisc)
|
||||
{
|
||||
if(new_dm_cfg)
|
||||
DMLCfg->Config |= DML_CFG_NODISC_CFG2;
|
||||
DMLCfg.Config |= DML_CFG_NODISC_CFG2;
|
||||
else
|
||||
DMLCfg->Config |= DML_CFG_NODISC_CFG1;
|
||||
DMLCfg.Config |= DML_CFG_NODISC_CFG1;
|
||||
}
|
||||
if(widescreen && new_dm_cfg)
|
||||
DMLCfg->Config |= DML_CFG_FORCE_WIDE;
|
||||
DMLCfg.Config |= DML_CFG_FORCE_WIDE;
|
||||
|
||||
if(DMLvideoMode > 3)
|
||||
DMLCfg->VideoMode |= DML_VID_PROG_PATCH;
|
||||
DMLCfg.VideoMode |= DML_VID_PROG_PATCH;
|
||||
}
|
||||
|
||||
void DML_Old_SetOptions(const char *GamePath)
|
||||
@ -125,36 +121,27 @@ void DML_Old_SetOptions(const char *GamePath)
|
||||
void DML_New_SetBootDiscOption(bool new_dm_cfg)
|
||||
{
|
||||
gprintf("Booting GC game\n");
|
||||
memset(&DMLCfg, 0, sizeof(DML_CFG));
|
||||
|
||||
DMLCfg = (DML_CFG*)malloc(sizeof(DML_CFG));
|
||||
if(DMLCfg == NULL)
|
||||
return;
|
||||
memset(DMLCfg, 0, sizeof(DML_CFG));
|
||||
|
||||
DMLCfg->Magicbytes = 0xD1050CF6;
|
||||
DMLCfg.Magicbytes = 0xD1050CF6;
|
||||
if(new_dm_cfg)
|
||||
DMLCfg->CfgVersion = 0x00000002;
|
||||
DMLCfg.CfgVersion = 0x00000002;
|
||||
else
|
||||
DMLCfg->CfgVersion = 0x00000001;
|
||||
DMLCfg->VideoMode |= DML_VID_DML_AUTO;
|
||||
DMLCfg.CfgVersion = 0x00000001;
|
||||
DMLCfg.VideoMode |= DML_VID_DML_AUTO;
|
||||
|
||||
DMLCfg->Config |= DML_CFG_BOOT_DISC;
|
||||
DMLCfg.Config |= DML_CFG_BOOT_DISC;
|
||||
}
|
||||
|
||||
void DML_New_WriteOptions()
|
||||
{
|
||||
if(DMLCfg == NULL)
|
||||
return;
|
||||
|
||||
//Write options into memory
|
||||
memcpy((void *)0x80001700, DMLCfg, sizeof(DML_CFG));
|
||||
memcpy((void *)0x80001700, &DMLCfg, sizeof(DML_CFG));
|
||||
DCFlushRange((void *)(0x80001700), sizeof(DML_CFG));
|
||||
|
||||
//DML v1.2+
|
||||
memcpy((void *)0x81200000, DMLCfg, sizeof(DML_CFG));
|
||||
memcpy((void *)0x81200000, &DMLCfg, sizeof(DML_CFG));
|
||||
DCFlushRange((void *)(0x81200000), sizeof(DML_CFG));
|
||||
|
||||
free(DMLCfg);
|
||||
}
|
||||
|
||||
|
||||
@ -328,7 +315,7 @@ u32 __SYS_UnlockSram(u32 write);
|
||||
u32 __SYS_SyncSram(void);
|
||||
}
|
||||
|
||||
void GC_SetVideoMode(u8 videomode, u8 videoSetting)
|
||||
void GC_SetVideoMode(u8 videomode, u8 videoSetting, bool DIOSMIOS)
|
||||
{
|
||||
syssram *sram;
|
||||
sram = __SYS_LockSram();
|
||||
@ -354,33 +341,33 @@ void GC_SetVideoMode(u8 videomode, u8 videoSetting)
|
||||
|
||||
if(videomode == 1)
|
||||
{
|
||||
if(DMLCfg != NULL && videoSetting == 2)
|
||||
DMLCfg->VideoMode |= DML_VID_FORCE_PAL50;
|
||||
if(DIOSMIOS && videoSetting == 2)
|
||||
DMLCfg.VideoMode |= DML_VID_FORCE_PAL50;
|
||||
vmode = &TVPal528IntDf;
|
||||
}
|
||||
else if(videomode == 2)
|
||||
{
|
||||
if(DMLCfg != NULL && videoSetting == 2)
|
||||
DMLCfg->VideoMode |= DML_VID_FORCE_NTSC;
|
||||
if(DIOSMIOS && videoSetting == 2)
|
||||
DMLCfg.VideoMode |= DML_VID_FORCE_NTSC;
|
||||
vmode = &TVNtsc480IntDf;
|
||||
}
|
||||
else if(videomode == 3)
|
||||
{
|
||||
if(DMLCfg != NULL && videoSetting == 2)
|
||||
DMLCfg->VideoMode |= DML_VID_FORCE_PAL60;
|
||||
if(DIOSMIOS && videoSetting == 2)
|
||||
DMLCfg.VideoMode |= DML_VID_FORCE_PAL60;
|
||||
vmode = &TVEurgb60Hz480IntDf;
|
||||
vmode_reg = 5;
|
||||
}
|
||||
else if(videomode == 4 ||videomode == 6)
|
||||
{
|
||||
if(DMLCfg != NULL && videoSetting == 2)
|
||||
DMLCfg->VideoMode |= DML_VID_FORCE_PROG;
|
||||
if(DIOSMIOS && videoSetting == 2)
|
||||
DMLCfg.VideoMode |= DML_VID_FORCE_PROG;
|
||||
vmode = &TVNtsc480Prog;
|
||||
}
|
||||
else if(videomode == 5 || videomode == 7)
|
||||
{
|
||||
if(DMLCfg != NULL && videoSetting == 2)
|
||||
DMLCfg->VideoMode |= DML_VID_FORCE_PROG;
|
||||
if(DIOSMIOS && videoSetting == 2)
|
||||
DMLCfg.VideoMode |= DML_VID_FORCE_PROG;
|
||||
vmode = &TVNtsc480Prog;
|
||||
vmode_reg = 5;
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ void DEVO_SetOptions(const char *isopath, int CurrentPartition, const char *game
|
||||
void DEVO_Boot();
|
||||
|
||||
// General
|
||||
void GC_SetVideoMode(u8 videomode, u8 videoSetting);
|
||||
void GC_SetVideoMode(u8 videomode, u8 videoSetting, bool DIOSMIOS);
|
||||
void GC_SetLanguage(u8 lang);
|
||||
int GC_GameIsInstalled(char *discid, const char* partition, const char* dmlgamedir);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
int currentStr = 0;
|
||||
static char fmt_buffer[MAX_USES][MAX_MSG_SIZE];
|
||||
static char general_buffer[MAX_MSG_SIZE];
|
||||
static char general_buffer[MAX_MSG_SIZE * 2];
|
||||
|
||||
// Simplified use of sprintf
|
||||
char *fmt(const char *format, ...)
|
||||
@ -449,9 +449,9 @@ void Asciify( wchar_t *str )
|
||||
{
|
||||
const wchar_t *ptr = str;
|
||||
wchar_t *ctr = str;
|
||||
|
||||
|
||||
while(*ptr != '\0')
|
||||
{
|
||||
{
|
||||
switch(*ptr)
|
||||
{
|
||||
case 0x14c:
|
||||
@ -460,7 +460,7 @@ void Asciify( wchar_t *str )
|
||||
}
|
||||
*ctr = *ptr;
|
||||
++ptr;
|
||||
++ctr;
|
||||
++ctr;
|
||||
}
|
||||
*ctr = '\0';
|
||||
}
|
||||
|
@ -24,16 +24,16 @@ WIP_Code *get_wip_list()
|
||||
int load_wip_patches(u8 *dir, u8 *gameid)
|
||||
{
|
||||
char filepath[150];
|
||||
char GameID[8];
|
||||
memset(GameID, 0, sizeof(GameID));
|
||||
char GameID[7];
|
||||
GameID[6] = '\0';
|
||||
memcpy(GameID, gameid, 6);
|
||||
snprintf(filepath, sizeof(filepath), "%s/%s.wip", dir, GameID);
|
||||
|
||||
FILE *fp = fopen(filepath, "rb");
|
||||
if(!fp)
|
||||
{
|
||||
memset(GameID, 0, sizeof(GameID));
|
||||
memcpy(GameID, gameid, 3);
|
||||
GameID[3] = '\0';
|
||||
snprintf(filepath, sizeof(filepath), "%s/%s.wip", dir, GameID);
|
||||
fp = fopen(filepath, "rb");
|
||||
}
|
||||
|
@ -2,14 +2,11 @@
|
||||
#include <ogc/system.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "defines.h"
|
||||
#include "svnrev.h"
|
||||
|
||||
#include "const_str.hpp"
|
||||
#include "booter/external_booter.hpp"
|
||||
#include "channel/nand.hpp"
|
||||
#include "devicemounter/DeviceHandler.hpp"
|
||||
#include "gecko/gecko.h"
|
||||
#include "gecko/wifi_gecko.h"
|
||||
#include "gui/video.hpp"
|
||||
#include "gui/text.hpp"
|
||||
#include "homebrew/homebrew.h"
|
||||
@ -25,12 +22,13 @@
|
||||
|
||||
CMenu mainMenu;
|
||||
bool useMainIOS = false;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
mainIOS = DOL_MAIN_IOS;
|
||||
__exception_setreload(5);
|
||||
InitGecko(); //USB Gecko and SD buffer
|
||||
gprintf(" \nWelcome to %s (%s-r%s)!\nThis is the debug output.\n", APP_NAME, APP_VERSION, SVN_REV);
|
||||
gprintf(" \nWelcome to %s!\nThis is the debug output.\n", VERSION_STRING.c_str());
|
||||
|
||||
m_vid.init(); // Init video
|
||||
MEM_init(); //Inits both mem1lo and mem2
|
||||
|
@ -77,7 +77,7 @@ void MEM1_free(void *p)
|
||||
|
||||
unsigned int MEM1_freesize()
|
||||
{
|
||||
return SYS_GetArena1Size();
|
||||
return (g_mem1lo.FreeSize() + SYS_GetArena1Size());
|
||||
}
|
||||
|
||||
void MEM2_cleanup(void)
|
||||
|
@ -1,19 +1,20 @@
|
||||
#include "mem2alloc.hpp"
|
||||
|
||||
#include <ogc/system.h>
|
||||
#include <ogc/cache.h>
|
||||
#include <algorithm>
|
||||
#include <string.h>
|
||||
|
||||
#define IOS_RELOAD_AREA 0x90200000
|
||||
|
||||
#include "lockMutex.hpp"
|
||||
#include "lockMutex.hpp"
|
||||
|
||||
void CMEM2Alloc::init(unsigned int size)
|
||||
{
|
||||
m_baseAddress = (SBlock *) std::max(((u32)SYS_GetArena2Lo() + 31) & ~31, IOS_RELOAD_AREA);
|
||||
m_endAddress = (SBlock *)((char *)m_baseAddress + std::min(size * 0x100000, SYS_GetArena2Size() & ~31));
|
||||
if (m_endAddress > (SBlock *) 0x93100000) //rest is reserved for usb/usb2/network and other stuff... (0xE0000 bytes)
|
||||
m_endAddress = (SBlock *) 0x93100000;
|
||||
m_baseAddress = (SBlock *)std::max(((u32)SYS_GetArena2Lo() + 31) & ~31, IOS_RELOAD_AREA);
|
||||
m_endAddress = (SBlock *)((u8*)m_baseAddress + std::min(size * 0x100000, SYS_GetArena2Size() & ~31));
|
||||
if (m_endAddress > (SBlock *)0x93100000) //rest is reserved for usb/usb2/network and other stuff... (0xE0000 bytes)
|
||||
m_endAddress = (SBlock *)0x93100000;
|
||||
SYS_SetArena2Lo(m_endAddress);
|
||||
LWP_MutexInit(&m_mutex, 0);
|
||||
}
|
||||
@ -40,7 +41,9 @@ void CMEM2Alloc::cleanup(void)
|
||||
void CMEM2Alloc::clear(void)
|
||||
{
|
||||
m_first = 0;
|
||||
memset(m_baseAddress, 0, (u8 *)m_endAddress - (u8 *)m_baseAddress);
|
||||
u32 Size = (u32)m_endAddress - (u32)m_baseAddress;
|
||||
memset(m_baseAddress, 0, Size);
|
||||
DCFlushRange(m_baseAddress, Size);
|
||||
}
|
||||
|
||||
unsigned int CMEM2Alloc::usableSize(void *p)
|
||||
@ -211,7 +214,7 @@ unsigned int CMEM2Alloc::FreeSize()
|
||||
LockMutex lock(m_mutex);
|
||||
|
||||
if (m_first == 0)
|
||||
return (const char *) m_endAddress - (const char *) m_baseAddress;
|
||||
return (u32)m_endAddress - (u32)m_baseAddress;
|
||||
|
||||
SBlock *i;
|
||||
unsigned int size = 0;
|
||||
|
@ -2591,28 +2591,17 @@ int CMenu::MIOSisDML()
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CMenu::RemoveCover( char * id )
|
||||
void CMenu::RemoveCover(const char *id)
|
||||
{
|
||||
FILE *fp = fopen(fmt("%s/%s.png", m_boxPicDir.c_str(), id), "rb");
|
||||
if (fp != NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
remove(fmt("%s/%s.png", m_boxPicDir.c_str(), id));
|
||||
}
|
||||
|
||||
fp = fopen(fmt("%s/%s.png", m_picDir.c_str(), id), "rb");
|
||||
if (fp != NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
remove(fmt("%s/%s.png", m_picDir.c_str(), id));
|
||||
}
|
||||
|
||||
fp = fopen(fmt("%s/%s.wfc", m_cacheDir.c_str(), id), "rb");
|
||||
if (fp != NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
remove(fmt("%s/%s.wfc", m_cacheDir.c_str(), id));
|
||||
}
|
||||
const char *CoverPath = NULL;
|
||||
if(id == NULL)
|
||||
return;
|
||||
CoverPath = fmt("%s/%s.png", m_boxPicDir.c_str(), id);
|
||||
fsop_deleteFile(CoverPath);
|
||||
CoverPath = fmt("%s/%s.png", m_picDir.c_str(), id);
|
||||
fsop_deleteFile(CoverPath);
|
||||
CoverPath = fmt("%s/%s.wfc", m_cacheDir.c_str(), id);
|
||||
fsop_deleteFile(CoverPath);
|
||||
}
|
||||
|
||||
void CMenu::_TempLoadIOS(int IOS)
|
||||
|
@ -967,13 +967,7 @@ private:
|
||||
void _CategorySettings(bool fromGameSet = false);
|
||||
bool _Home();
|
||||
bool _ExitTo();
|
||||
//
|
||||
void _mainLoopCommon(bool withCF = false, bool adjusting = false);
|
||||
//
|
||||
vector<dir_discHdr> _searchGamesByID(const char *gameId);
|
||||
/* vector<dir_discHdr> _searchGamesByTitle(wchar_t letter);
|
||||
vector<dir_discHdr> _searchGamesByType(const char type);
|
||||
vector<dir_discHdr> _searchGamesByRegion(const char region); */
|
||||
public:
|
||||
void directlaunch(const char *GameID);
|
||||
private:
|
||||
@ -998,10 +992,10 @@ private:
|
||||
void _cleanupDefaultFont();
|
||||
string _getId(void);
|
||||
const char *_domainFromView(void);
|
||||
const char *_cfDomain(bool selected = false);
|
||||
const char *_cfDomain(bool selected = false);
|
||||
void UpdateCache(u32 view = COVERFLOW_MAX);
|
||||
int MIOSisDML();
|
||||
void RemoveCover( char * id );
|
||||
void RemoveCover(const char *id);
|
||||
SFont _font(CMenu::FontSet &fontSet, const char *domain, const char *key, u32 fontSize, u32 lineSpacing, u32 weight, u32 index, const char *genKey);
|
||||
STexture _texture(TexSet &texSet, const char *domain, const char *key, STexture def);
|
||||
vector<STexture> _textures(TexSet &texSet, const char *domain, const char *key);
|
||||
|
@ -1,15 +1,15 @@
|
||||
|
||||
#include "menu.hpp"
|
||||
#include "defines.h"
|
||||
#include "svnrev.h"
|
||||
#include "channel/nand.hpp"
|
||||
#include "loader/alt_ios.h"
|
||||
#include "loader/cios.h"
|
||||
#include "loader/sys.h"
|
||||
#include "const_str.hpp"
|
||||
|
||||
const int pixels_to_skip = 10;
|
||||
|
||||
extern const u8 english_txt[];
|
||||
static const wstringEx ENGLISH_TXT_W((const char*)english_txt);
|
||||
|
||||
//About menu
|
||||
s16 m_aboutLblTitle;
|
||||
@ -125,16 +125,15 @@ void CMenu::_textAbout(void)
|
||||
help_text.fromUTF8(help);
|
||||
MEM2_free(help);
|
||||
fclose(f);
|
||||
m_btnMgr.setText(m_aboutLblInfo, help_text);
|
||||
}
|
||||
else
|
||||
help_text.fromUTF8((char*)english_txt);
|
||||
|
||||
m_btnMgr.setText(m_aboutLblInfo, wfmt(L"%s", help_text.toUTF8().c_str()), false);
|
||||
m_btnMgr.setText(m_aboutLblInfo, ENGLISH_TXT_W);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_btnMgr.setText(m_aboutLblTitle, wfmt( L"%s (%s-r%s)", APP_NAME, APP_VERSION, SVN_REV), false);
|
||||
|
||||
m_btnMgr.setText(m_aboutLblTitle, VERSION_STRING);
|
||||
|
||||
wstringEx developers(wfmt(_fmt("about6", L"\nCurrent Developers:\n%s"), DEVELOPERS));
|
||||
wstringEx pDevelopers(wfmt(_fmt("about7", L"Past Developers:\n%s"), PAST_DEVELOPERS));
|
||||
|
||||
@ -157,11 +156,9 @@ void CMenu::_textAbout(void)
|
||||
origGUI.toUTF8().c_str(),
|
||||
codethx.toUTF8().c_str(),
|
||||
sites.toUTF8().c_str(),
|
||||
thanks.toUTF8().c_str()),
|
||||
false
|
||||
thanks.toUTF8().c_str())
|
||||
);
|
||||
}
|
||||
|
||||
switch(IOS_GetType(CurrentIOS.Version))
|
||||
{
|
||||
case IOS_TYPE_D2X:
|
||||
|
@ -90,9 +90,9 @@ void CMenu::_CheatSettings()
|
||||
_textCheatSettings();
|
||||
|
||||
if (txtavailable)
|
||||
m_btnMgr.setText(m_cheatLblTitle,wfmt(L"%s",m_cheatfile.getGameName().c_str()));
|
||||
m_btnMgr.setText(m_cheatLblTitle, m_cheatfile.getGameName());
|
||||
else
|
||||
m_btnMgr.setText(m_cheatLblTitle,L"");
|
||||
m_btnMgr.setText(m_cheatLblTitle, L"");
|
||||
|
||||
while(!m_exit)
|
||||
{
|
||||
@ -243,10 +243,10 @@ void CMenu::_CheatSettings()
|
||||
txtavailable = m_cheatfile.openTxtfile(fmt("%s/%s.txt", m_txtCheatDir.c_str(), id.c_str()));
|
||||
_showCheatSettings();
|
||||
|
||||
if (txtavailable)
|
||||
m_btnMgr.setText(m_cheatLblTitle,wfmt(L"%s",m_cheatfile.getGameName().c_str()));
|
||||
if(txtavailable)
|
||||
m_btnMgr.setText(m_cheatLblTitle, m_cheatfile.getGameName());
|
||||
else
|
||||
m_btnMgr.setText(m_cheatLblTitle,L"");
|
||||
m_btnMgr.setText(m_cheatLblTitle, L"");
|
||||
|
||||
if (m_cheatfile.getCnt() == 0)
|
||||
{
|
||||
@ -308,7 +308,7 @@ void CMenu::_showCheatSettings(void)
|
||||
// cheat in range?
|
||||
if (((m_cheatSettingsPage-1)*CHEATSPERPAGE + i + 1) <= m_cheatfile.getCnt())
|
||||
{
|
||||
m_btnMgr.setText(m_cheatLblItem[i], wfmt(L"%s", m_cheatfile.getCheatName((m_cheatSettingsPage-1)*CHEATSPERPAGE + i).c_str()));
|
||||
m_btnMgr.setText(m_cheatLblItem[i], m_cheatfile.getCheatName((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);
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include "menu.hpp"
|
||||
#include "types.h"
|
||||
#include "const_str.hpp"
|
||||
#include "banner/BannerWindow.hpp"
|
||||
#include "booter/external_booter.hpp"
|
||||
#include "channel/channel_launcher.h"
|
||||
@ -845,10 +846,10 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
|
||||
if(disc)
|
||||
{
|
||||
loader = 0;
|
||||
loader = 1;
|
||||
DML_New_SetBootDiscOption(m_new_dm_cfg);
|
||||
}
|
||||
else if(loader == 1 || (loader == 0 && (strcasestr(path.c_str(), "boot.bin") != NULL || !m_devo_installed)))
|
||||
else if(loader == 1 || strcasestr(path.c_str(), "boot.bin") != NULL || !m_devo_installed)
|
||||
{
|
||||
loader = 1;
|
||||
m_cfg.setString("DML", "current_item", id);
|
||||
@ -875,18 +876,19 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
snprintf(CheatPath, sizeof(CheatPath), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", id.c_str()));
|
||||
string newPath = &path[path.find_first_of(":/")+1];
|
||||
if(m_new_dml)
|
||||
DML_New_SetOptions(newPath.c_str(), CheatPath, NewCheatPath.c_str(), DeviceName[currentPartition], cheats, DML_debug, NMM, nodisc, videoMode, videoSetting, DM_Widescreen, m_new_dm_cfg);
|
||||
DML_New_SetOptions(newPath.c_str(), CheatPath, NewCheatPath.c_str(), DeviceName[currentPartition],
|
||||
cheats, DML_debug, NMM, nodisc, videoMode, videoSetting, DM_Widescreen, m_new_dm_cfg);
|
||||
else
|
||||
DML_Old_SetOptions(newPath.c_str());
|
||||
|
||||
if(!nodisc || !m_new_dml)
|
||||
WDVD_StopMotor();
|
||||
}
|
||||
else if(loader == 2 || (loader == 0 && m_devo_installed && strcasestr(path.c_str(), "boot.bin") == NULL))
|
||||
else
|
||||
{
|
||||
loader = 2;
|
||||
DEVO_GetLoader(m_dataDir.c_str());
|
||||
}
|
||||
bool DIOSMIOS = (loader == 1);
|
||||
|
||||
m_gcfg1.save(true);
|
||||
m_gcfg2.save(true);
|
||||
@ -894,10 +896,17 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
m_cfg.save(true);
|
||||
cleanup();
|
||||
|
||||
GC_SetVideoMode(videoMode, videoSetting);
|
||||
GC_SetVideoMode(videoMode, videoSetting, DIOSMIOS);
|
||||
GC_SetLanguage(GClanguage);
|
||||
|
||||
if(loader == 2 && !disc)
|
||||
if(DIOSMIOS)
|
||||
{
|
||||
DML_New_WriteOptions();
|
||||
ShutdownBeforeExit();
|
||||
WII_Initialize();
|
||||
WII_LaunchTitle(0x100000100LL);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(AHBRPOT_Patched())
|
||||
loadIOS(58, false);
|
||||
@ -907,13 +916,6 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
||||
DEVO_SetOptions(path.c_str(), currentPartition, id.c_str(), memcard_emu);
|
||||
DEVO_Boot();
|
||||
}
|
||||
else
|
||||
{
|
||||
DML_New_WriteOptions();
|
||||
ShutdownBeforeExit();
|
||||
WII_Initialize();
|
||||
WII_LaunchTitle(0x100000100LL);
|
||||
}
|
||||
Sys_Exit();
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,8 @@ extern const u8 pegi_16_png[];
|
||||
extern const u8 pegi_18_png[];
|
||||
|
||||
GameXMLInfo gameinfo;
|
||||
wstringEx gameinfo_Synopsis_w;
|
||||
wstringEx gameinfo_Title_w;
|
||||
|
||||
static bool titlecheck = false;
|
||||
u8 cnt_controlsreq = 0, cnt_controls = 0;
|
||||
@ -133,9 +135,6 @@ void CMenu::_gameinfo(void)
|
||||
page = 1;
|
||||
amount_of_skips = 0;
|
||||
|
||||
m_btnMgr.reset(m_gameinfoLblSynopsis);
|
||||
m_btnMgr.setText(m_gameinfoLblSynopsis, wfmt(L"%s", gameinfo.Synopsis.c_str()));
|
||||
|
||||
m_btnMgr.hide(m_gameinfoLblID, true);
|
||||
m_btnMgr.hide(m_gameinfoLblDev, true);
|
||||
m_btnMgr.hide(m_gameinfoLblRegion, true);
|
||||
@ -148,19 +147,20 @@ void CMenu::_gameinfo(void)
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_gameinfoLblControlsReq); ++i)
|
||||
if(m_gameinfoLblControlsReq[i] != -1)
|
||||
m_btnMgr.hide(m_gameinfoLblControlsReq[i], true);
|
||||
|
||||
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_gameinfoLblControls); ++i)
|
||||
if(m_gameinfoLblControls[i] != -1)
|
||||
m_btnMgr.hide(m_gameinfoLblControls[i], true);
|
||||
|
||||
|
||||
// When showing synopsis, only show user labels 2 and 3
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_gameinfoLblUser); ++i)
|
||||
if(i < ARRAY_SIZE(m_gameinfoLblUser) / 2)
|
||||
m_btnMgr.hide(m_gameinfoLblUser[i], true);
|
||||
else
|
||||
m_btnMgr.show(m_gameinfoLblUser[i]);
|
||||
|
||||
m_btnMgr.show(m_gameinfoLblSynopsis,false);
|
||||
|
||||
m_btnMgr.reset(m_gameinfoLblSynopsis);
|
||||
m_btnMgr.show(m_gameinfoLblSynopsis, false);
|
||||
}
|
||||
else if (BTN_LEFT_PRESSED && !(m_thrdWorking && m_thrdStop))
|
||||
{
|
||||
@ -313,23 +313,24 @@ void CMenu::_textGameInfo(void)
|
||||
GameTDB gametdb;
|
||||
gametdb.OpenFile(fmt("%s/wiitdb.xml", m_settingsDir.c_str()));
|
||||
gametdb.SetLanguageCode(m_loc.getString(m_curLanguage, "gametdb_code", "EN").c_str());
|
||||
|
||||
|
||||
titlecheck = gametdb.IsLoaded() && gametdb.GetGameXMLInfo(m_cf.getId().c_str(), &gameinfo);
|
||||
if(titlecheck)
|
||||
{
|
||||
gprintf("ID: %s\nTitle: %s\n", gameinfo.GameID.c_str(), gameinfo.Title.c_str());
|
||||
gameinfo_Title_w.fromUTF8(gameinfo.Title);
|
||||
m_btnMgr.setText(m_gameinfoLblTitle, gameinfo_Title_w, true);
|
||||
gameinfo_Synopsis_w.fromUTF8(gameinfo.Synopsis);
|
||||
m_btnMgr.setText(m_gameinfoLblSynopsis, gameinfo_Synopsis_w);
|
||||
|
||||
m_btnMgr.setText(m_gameinfoLblID, wfmt(L"GameID: %s", gameinfo.GameID.c_str()), true);
|
||||
m_btnMgr.setText(m_gameinfoLblTitle, wfmt(L"%s", gameinfo.Title.c_str()), true);
|
||||
m_btnMgr.setText(m_gameinfoLblSynopsis, wfmt(L"%s", gameinfo.Synopsis.c_str()), false);
|
||||
m_btnMgr.setText(m_gameinfoLblDev, wfmt(_fmt("gameinfo1",L"Developer: %s"), gameinfo.Developer.c_str()), true);
|
||||
m_btnMgr.setText(m_gameinfoLblPublisher, wfmt(_fmt("gameinfo2",L"Publisher: %s"), gameinfo.Publisher.c_str()), true);
|
||||
m_btnMgr.setText(m_gameinfoLblRegion, wfmt(_fmt("gameinfo3",L"Region: %s"), gameinfo.Region.c_str()), true);
|
||||
m_btnMgr.setText(m_gameinfoLblGenre, wfmt(_fmt("gameinfo5",L"Genre: %s"), gameinfo.Genres.c_str()), true);
|
||||
|
||||
int year = gameinfo.PublishDate >> 16;
|
||||
int day = gameinfo.PublishDate & 0xFF;
|
||||
int month = (gameinfo.PublishDate >> 8) & 0xFF;
|
||||
|
||||
int day = gameinfo.PublishDate & 0xFF;
|
||||
int month = (gameinfo.PublishDate >> 8) & 0xFF;
|
||||
switch(CONF_GetRegion())
|
||||
{
|
||||
case 0:
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
#include "menu.hpp"
|
||||
#include "svnrev.h"
|
||||
#include "loader/cios.h"
|
||||
#include "loader/nk.h"
|
||||
#include "loader/sys.h"
|
||||
#include "const_str.hpp"
|
||||
|
||||
s16 m_homeLblTitle;
|
||||
s16 m_exittoLblTitle;
|
||||
@ -265,8 +265,7 @@ void CMenu::_initHomeAndExitToMenu(CMenu::SThemeData &theme)
|
||||
|
||||
void CMenu::_textHome(void)
|
||||
{
|
||||
m_btnMgr.setText(m_homeLblTitle, wfmt( L"%s (%s-r%s)", APP_NAME, APP_VERSION, SVN_REV), false);
|
||||
|
||||
m_btnMgr.setText(m_homeLblTitle, VERSION_STRING);
|
||||
m_btnMgr.setText(m_homeBtnSettings, _t("home1", L"Settings"));
|
||||
m_btnMgr.setText(m_homeBtnReloadCache, _t("home2", L"Reload Cache"));
|
||||
m_btnMgr.setText(m_homeBtnUpdate, _t("home3", L"Update"));
|
||||
@ -278,7 +277,6 @@ void CMenu::_textHome(void)
|
||||
void CMenu::_textExitTo(void)
|
||||
{
|
||||
m_btnMgr.setText(m_exittoLblTitle, _t("exit_to", L"Exit To"));
|
||||
|
||||
m_btnMgr.setText(m_homeBtnExitToHBC, _t("hbc", L"Homebrew Channel"));
|
||||
m_btnMgr.setText(m_homeBtnExitToMenu, _t("menu", L"System Menu"));
|
||||
m_btnMgr.setText(m_homeBtnExitToPriiloader, _t("prii", L"Priiloader"));
|
||||
@ -287,4 +285,4 @@ void CMenu::_textExitTo(void)
|
||||
m_btnMgr.setText(m_homeBtnExitToNeek, _t("neek2o", L"neek2o"));
|
||||
else
|
||||
m_btnMgr.setText(m_homeBtnExitToNeek, _t("real", L"Real Nand"));
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
|
||||
#include "menu.hpp"
|
||||
#include "svnrev.h"
|
||||
#include "defines.h"
|
||||
#include "const_str.hpp"
|
||||
#include "lockMutex.hpp"
|
||||
#include "loader/sys.h"
|
||||
#include "loader/wbfs.h"
|
||||
|
||||
int version_num = 0, num_versions = 0, i;
|
||||
int CMenu::_version[9] = {0, atoi(SVN_REV), atoi(SVN_REV), atoi(SVN_REV), atoi(SVN_REV), atoi(SVN_REV), atoi(SVN_REV), atoi(SVN_REV), atoi(SVN_REV)};
|
||||
const u32 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};
|
||||
|
||||
const int pixels_to_skip = 10;
|
||||
|
||||
void CMenu::_system()
|
||||
{
|
||||
int msg = 0, newVer = atoi(SVN_REV);
|
||||
int msg = 0, newVer = SVN_REV_NUM;
|
||||
lwp_t thread = LWP_THREAD_NULL;
|
||||
wstringEx prevMsg;
|
||||
|
||||
@ -62,11 +62,11 @@ void CMenu::_system()
|
||||
m_btnMgr.hide(m_downloadPBar);
|
||||
m_btnMgr.hide(m_downloadLblMessage[0], 0, 0, -2.f, 0.f);
|
||||
m_btnMgr.hide(m_downloadLblMessage[1], 0, 0, -2.f, 0.f);
|
||||
CMenu::_version[1] = m_version.getInt("GENERAL", "version", atoi(SVN_REV));
|
||||
CMenu::_version[1] = m_version.getInt("GENERAL", "version", SVN_REV_NUM);
|
||||
num_versions = m_version.getInt("GENERAL", "num_versions", 1);
|
||||
for (i = 2; i < num_versions; i++)
|
||||
{
|
||||
CMenu::_version[i] = m_version.getInt(fmt("VERSION%i", i-1u), "version", atoi(SVN_REV));
|
||||
CMenu::_version[i] = m_version.getInt(fmt("VERSION%i", i-1u), "version", SVN_REV_NUM);
|
||||
//add the changelog info here
|
||||
}
|
||||
if (num_versions > 1 && version_num == 0) version_num = 1;
|
||||
@ -277,14 +277,12 @@ void CMenu::_textSystem(void)
|
||||
{
|
||||
m_btnMgr.setText(m_systemLblTitle, _t("sys1", L"Update WiiFlow"));
|
||||
m_btnMgr.setText(m_systemLblVersionTxt, _t("sys2", L"WiiFlow Version:"));
|
||||
m_btnMgr.setText(m_systemLblVersion, wfmt(L"r%s", SVN_REV).c_str());
|
||||
m_btnMgr.setText(m_systemLblVersion, SVN_REV_W);
|
||||
m_btnMgr.setText(m_systemBtnBack, _t("sys3", L"Cancel"));
|
||||
m_btnMgr.setText(m_systemBtnDownload, _t("sys4", L"Upgrade"));
|
||||
i = min((u32)version_num, ARRAY_SIZE(CMenu::_version) -1u);
|
||||
if (i == 0)
|
||||
{
|
||||
m_btnMgr.setText(m_systemLblVerSelectVal, wfmt(L"%i", atoi(SVN_REV)).c_str());
|
||||
}
|
||||
m_btnMgr.setText(m_systemLblVerSelectVal, SVN_REV_W);
|
||||
else
|
||||
{
|
||||
m_btnMgr.setText(m_systemLblVerSelectVal, wstringEx(sfmt("%i", CMenu::_version[i])));
|
||||
|
@ -71,14 +71,14 @@ void CMenu::_addDiscProgress(int status, int total, void *user_data)
|
||||
}
|
||||
}
|
||||
|
||||
vector<dir_discHdr> CMenu::_searchGamesByID(const char *gameId)
|
||||
static inline bool _searchGamesByID(const char *gameId)
|
||||
{
|
||||
vector<dir_discHdr> retval;
|
||||
for (vector<dir_discHdr>::iterator itr = m_gameList.begin(); itr != m_gameList.end(); itr++)
|
||||
if (strncmp((const char *) (*itr).id, gameId, strlen(gameId)) == 0)
|
||||
retval.push_back(*itr);
|
||||
|
||||
return retval;
|
||||
for(vector<dir_discHdr>::const_iterator itr = m_gameList.begin(); itr != m_gameList.end(); ++itr)
|
||||
{
|
||||
if(strncmp(itr->id, gameId, 6) == 0)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CMenu::_Messenger(int message, int info, char *cinfo, void *user_data)
|
||||
@ -172,14 +172,14 @@ int CMenu::_GCgameInstaller(void *obj)
|
||||
int ret;
|
||||
m.m_progress = 0.f;
|
||||
|
||||
if (!DeviceHandle.IsInserted(currentPartition))
|
||||
if(!DeviceHandle.IsInserted(currentPartition))
|
||||
{
|
||||
m.m_thrdWorking = false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
char partition[6];
|
||||
snprintf(partition, sizeof(partition), "%s:/", DeviceName[currentPartition]);
|
||||
strncpy(partition, fmt("%s:/", DeviceName[currentPartition]), sizeof(partition));
|
||||
|
||||
u32 needed = 0;
|
||||
|
||||
@ -226,18 +226,24 @@ int CMenu::_GCgameInstaller(void *obj)
|
||||
int CMenu::_GCcopyGame(void *obj)
|
||||
{
|
||||
CMenu &m = *(CMenu *)obj;
|
||||
char folder[50];
|
||||
char source[300];
|
||||
char target[300];
|
||||
|
||||
string GC_Path(m.m_cf.getHdr()->path);
|
||||
if(strcasestr(GC_Path.c_str(), "boot.bin") != NULL)
|
||||
GC_Path.erase(GC_Path.end() - 13, GC_Path.end());
|
||||
else
|
||||
GC_Path.erase(GC_Path.end() - 9, GC_Path.end());
|
||||
|
||||
char source[300];
|
||||
strncpy(source, GC_Path.c_str(), sizeof(source));
|
||||
snprintf(folder, sizeof(folder), DML_DIR, DeviceName[SD]);
|
||||
snprintf(target, sizeof(target), "%s/%s", folder, &GC_Path[GC_Path.find_last_of("/")]+1);
|
||||
source[299] = '\0';
|
||||
|
||||
char folder[50];
|
||||
strncpy(folder, fmt(DML_DIR, DeviceName[SD]), sizeof(folder));
|
||||
folder[49] = '\0';
|
||||
|
||||
char target[300];
|
||||
strncpy(target, fmt("%s/%s", folder, strrchr(source, '/') + 1), sizeof(target));
|
||||
target[299] = '\0';
|
||||
|
||||
LWP_MutexLock(m.m_mutex);
|
||||
m._setThrdMsg(L"", 0);
|
||||
@ -259,6 +265,8 @@ int CMenu::_GCcopyGame(void *obj)
|
||||
bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
{
|
||||
lwp_t thread = 0;
|
||||
char GameID[7];
|
||||
GameID[6] = '\0';
|
||||
static discHdr header ATTRIBUTE_ALIGN(32);
|
||||
static gc_discHdr gcheader ATTRIBUTE_ALIGN(32);
|
||||
bool done = false;
|
||||
@ -266,11 +274,9 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
bool upd_dml = false;
|
||||
bool upd_emu = false;
|
||||
bool out = false;
|
||||
struct AutoLight { AutoLight(void) { } ~AutoLight(void) { slotLight(false); } } aw;
|
||||
string cfPos = m_cf.getNextId();
|
||||
|
||||
SetupInput();
|
||||
|
||||
_showWBFS(op);
|
||||
switch (op)
|
||||
{
|
||||
@ -329,14 +335,15 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
if (Disc_IsWii() == 0)
|
||||
{
|
||||
Disc_ReadHeader(&header);
|
||||
if(_searchGamesByID((const char *) header.id).size() != 0)
|
||||
memcpy(GameID, header.id, 6);
|
||||
if(_searchGamesByID(GameID))
|
||||
{
|
||||
error(_t("wbfsoperr4", L"Game already installed"));
|
||||
out = true;
|
||||
break;
|
||||
}
|
||||
cfPos = string((char *)header.id);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop6", L"Installing [%s] %s..."), string((const char *)header.id, sizeof header.id).c_str(), string((const char *)header.title, sizeof header.title).c_str()));
|
||||
cfPos = string(GameID);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop6", L"Installing [%s] %s..."), GameID, header.title));
|
||||
done = true;
|
||||
upd_usb = true;
|
||||
m_thrdWorking = true;
|
||||
@ -347,19 +354,15 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
else if(Disc_IsGC() == 0)
|
||||
{
|
||||
Disc_ReadGCHeader(&gcheader);
|
||||
|
||||
char gcfolder[300];
|
||||
char dmlgamedir[50];
|
||||
strncpy(dmlgamedir, (currentPartition != SD) ? m_DMLgameDir.c_str() : DML_DIR, sizeof(dmlgamedir));
|
||||
snprintf(gcfolder, sizeof(gcfolder), "%s [%s]", gcheader.title, (char *)gcheader.id);
|
||||
if(_searchGamesByID((const char *) gcheader.id).size() != 0)
|
||||
memcpy(GameID, gcheader.id, 6);
|
||||
if(_searchGamesByID(GameID))
|
||||
{
|
||||
error(_t("wbfsoperr4", L"Game already installed"));
|
||||
out = true;
|
||||
break;
|
||||
}
|
||||
cfPos = string((char *) gcheader.id);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop6", L"Installing [%s] %s..."), string((const char *)gcheader.id, sizeof gcheader.id).c_str(), string((const char *)gcheader.title, sizeof gcheader.title).c_str()));
|
||||
cfPos = string(GameID);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop6", L"Installing [%s] %s..."), GameID, gcheader.title));
|
||||
done = true;
|
||||
upd_dml = true;
|
||||
m_thrdWorking = true;
|
||||
@ -376,12 +379,14 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
case CMenu::WO_REMOVE_GAME:
|
||||
if(m_cf.getHdr()->type == TYPE_GC_GAME)
|
||||
{
|
||||
string GC_Path(m_cf.getHdr()->path);
|
||||
if(strcasestr(GC_Path.c_str(), "boot.bin") != NULL)
|
||||
if(strcasestr(m_cf.getHdr()->path, "boot.bin") != NULL)
|
||||
{
|
||||
string GC_Path(m_cf.getHdr()->path);
|
||||
GC_Path.erase(GC_Path.end() - 13, GC_Path.end());
|
||||
fsop_deleteFolder(GC_Path.c_str());
|
||||
}
|
||||
else
|
||||
GC_Path.erase(GC_Path.end() - 9, GC_Path.end());
|
||||
fsop_deleteFolder(GC_Path.c_str());
|
||||
fsop_deleteFile(m_cf.getHdr()->path);
|
||||
upd_dml = true;
|
||||
}
|
||||
else if(m_cf.getHdr()->type == TYPE_PLUGIN)
|
||||
@ -391,11 +396,11 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
}
|
||||
else if(m_cf.getHdr()->type == TYPE_WII_GAME)
|
||||
{
|
||||
WBFS_RemoveGame((u8 *)m_cf.getId().c_str(), (char *) m_cf.getHdr()->path);
|
||||
WBFS_RemoveGame((u8 *)m_cf.getId().c_str(), m_cf.getHdr()->path);
|
||||
upd_usb = true;
|
||||
}
|
||||
if(m_cfg.getBool("GENERAL", "delete_cover_and_game", true))
|
||||
RemoveCover((char *)m_cf.getId().c_str());
|
||||
if(m_cfg.getBool("GENERAL", "delete_cover_and_game", false))
|
||||
RemoveCover(m_cf.getId().c_str());
|
||||
m_btnMgr.show(m_wbfsPBar);
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 0.f, true);
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 1.f);
|
||||
@ -413,32 +418,25 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
GC_Path.erase(GC_Path.end() - 13, GC_Path.end());
|
||||
else
|
||||
GC_Path.erase(GC_Path.end() - 9, GC_Path.end());
|
||||
if(fsop_GetFreeSpaceKb((char*)"sd:/")<fsop_GetFolderKb(GC_Path.c_str()))
|
||||
if(fsop_GetFreeSpaceKb("sd:/") < fsop_GetFolderKb(GC_Path.c_str()))
|
||||
{
|
||||
m_btnMgr.hide(m_wbfsBtnGo);
|
||||
_setThrdMsg(wfmt(_fmt("wbfsop24", L"Not enough space: %d blocks needed, %d available"), fsop_GetFolderKb(GC_Path.c_str()), fsop_GetFreeSpaceKb((char*)"sd:/")), 0.f);
|
||||
_setThrdMsg(wfmt(_fmt("wbfsop24", L"Not enough space: %d blocks needed, %d available"), fsop_GetFolderKb(GC_Path.c_str()), fsop_GetFreeSpaceKb("sd:/")), 0.f);
|
||||
break;
|
||||
}
|
||||
|
||||
m_btnMgr.show(m_wbfsPBar);
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 0.f);
|
||||
m_btnMgr.hide(m_wbfsBtnGo);
|
||||
m_btnMgr.hide(m_wbfsBtnBack);
|
||||
m_btnMgr.show(m_wbfsLblMessage);
|
||||
m_btnMgr.setText(m_wbfsLblMessage, L"");
|
||||
cfPos = string((char*)m_cf.getHdr()->id);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop10", L"Copying [%s] %s..."), (u8*)m_cf.getHdr()->id, (u8*)m_cf.getTitle().toUTF8().c_str()));
|
||||
cfPos = string(m_cf.getHdr()->id);
|
||||
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop10", L"Copying [%s] %s..."), m_cf.getHdr()->id, m_cf.getTitle().toUTF8().c_str()));
|
||||
done = true;
|
||||
upd_dml = true;
|
||||
m_thrdWorking = true;
|
||||
m_thrdProgress = 0.f;
|
||||
m_thrdMessageAdded = false;
|
||||
m_cf.stopCoverLoader();
|
||||
_stopSounds();
|
||||
MusicPlayer.Cleanup();
|
||||
SoundHandle.Cleanup();
|
||||
soundDeinit();
|
||||
NandHandle.Disable_Emu();
|
||||
LWP_CreateThread(&thread, (void *(*)(void *))CMenu::_GCcopyGame, (void *)this, 0, 8 * 1024, 64);
|
||||
break;
|
||||
}
|
||||
@ -454,7 +452,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
if (!m_thrdMessage.empty())
|
||||
m_btnMgr.setText(m_wbfsLblDialog, m_thrdMessage);
|
||||
m_btnMgr.setProgress(m_wbfsPBar, m_thrdProgress);
|
||||
m_btnMgr.setText(m_wbfsLblMessage, wfmt( L"%i%%", (int)(m_thrdProgress * 100.f)));
|
||||
m_btnMgr.setText(m_wbfsLblMessage, wfmt(L"%i%%", (int)(m_thrdProgress * 100.f)));
|
||||
if(!m_thrdWorking)
|
||||
{
|
||||
if(op == CMenu::WO_ADD_GAME)
|
||||
|
@ -30,6 +30,7 @@
|
||||
|
||||
void Plugin::init(const string& m_pluginsDir)
|
||||
{
|
||||
PluginMagicWord[8] = '\0';
|
||||
pluginsDir = m_pluginsDir;
|
||||
//Ready to add plugins
|
||||
adding = true;
|
||||
@ -150,8 +151,6 @@ void Plugin::SetEnablePlugin(Config &cfg, u8 pos, u8 ForceMode)
|
||||
{
|
||||
if(pos < Plugins.size())
|
||||
{
|
||||
char PluginMagicWord[9];
|
||||
memset(PluginMagicWord, 0, sizeof(PluginMagicWord));
|
||||
strncpy(PluginMagicWord, fmt("%08x", Plugins[pos].magicWord), 8);
|
||||
if(ForceMode == 1)
|
||||
cfg.setBool(PLUGIN_DOMAIN, PluginMagicWord, false);
|
||||
@ -165,11 +164,9 @@ void Plugin::SetEnablePlugin(Config &cfg, u8 pos, u8 ForceMode)
|
||||
const vector<bool> &Plugin::GetEnabledPlugins(Config &cfg)
|
||||
{
|
||||
enabledPlugins.clear();
|
||||
char PluginMagicWord[9];
|
||||
u8 enabledPluginsNumber = 0;
|
||||
for(u8 i = 0; i < Plugins.size(); i++)
|
||||
{
|
||||
memset(PluginMagicWord, 0, sizeof(PluginMagicWord));
|
||||
strncpy(PluginMagicWord, fmt("%08x", Plugins[i].magicWord), 8);
|
||||
if(cfg.getBool(PLUGIN_DOMAIN, PluginMagicWord, true))
|
||||
{
|
||||
@ -264,8 +261,8 @@ string Plugin::GenerateCoverLink(dir_discHdr gameHeader, const string& constURL,
|
||||
strncpy(gamePath, gameHeader.path, sizeof(gamePath));
|
||||
const string& cachedCRC = Checksums.getString("CHECKSUMS", gamePath);
|
||||
char crc_string[9];
|
||||
memset(crc_string, 0, sizeof(crc_string));
|
||||
if(cachedCRC.size() > 1)
|
||||
crc_string[8] = '\0';
|
||||
if(cachedCRC.size() == 8)
|
||||
{
|
||||
gprintf("CRC32 of %s is cached\n", gamePath);
|
||||
strncpy(crc_string, cachedCRC.c_str(), 8);
|
||||
|
@ -74,6 +74,7 @@ private:
|
||||
s8 GetPluginPosition(u32 magic);
|
||||
vector<PluginOptions> Plugins;
|
||||
vector<bool> enabledPlugins;
|
||||
char PluginMagicWord[9];
|
||||
s8 Plugin_Pos;
|
||||
string pluginsDir;
|
||||
bool adding;
|
||||
|
@ -1,10 +1,8 @@
|
||||
|
||||
#include "wstringEx.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
wstringEx::wstringEx(const wchar_t *s) :
|
||||
std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(s)
|
||||
basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >(s)
|
||||
{
|
||||
}
|
||||
|
||||
@ -15,26 +13,22 @@ wstringEx::wstringEx(const basic_string<wchar_t, char_traits<wchar_t>, allocator
|
||||
|
||||
wstringEx::wstringEx(const string &s)
|
||||
{
|
||||
std::string::size_type size;
|
||||
|
||||
size = s.size();
|
||||
size_type size = s.size();
|
||||
resize(size);
|
||||
for (std::string::size_type i = 0; i < size; ++i)
|
||||
for (size_type i = 0; i < size; ++i)
|
||||
(*this)[i] = (unsigned char)s[i];
|
||||
}
|
||||
|
||||
wstringEx &wstringEx::operator=(const string &s)
|
||||
{
|
||||
std::string::size_type size;
|
||||
|
||||
size = s.size();
|
||||
this->resize(size);
|
||||
for (std::string::size_type i = 0; i < size; ++i)
|
||||
size_type size = s.size();
|
||||
resize(size);
|
||||
for (size_type i = 0; i < size; ++i)
|
||||
(*this)[i] = (unsigned char)s[i];
|
||||
return *this;
|
||||
}
|
||||
|
||||
static size_t utf8Len(const char *s)
|
||||
static inline size_t utf8Len(const string &s)
|
||||
{
|
||||
size_t len = 0;
|
||||
|
||||
@ -72,7 +66,7 @@ static size_t utf8Len(const char *s)
|
||||
return len;
|
||||
}
|
||||
|
||||
void wstringEx::fromUTF8(const char *s)
|
||||
void wstringEx::fromUTF8(const string &s)
|
||||
{
|
||||
size_t len = utf8Len(s);
|
||||
|
||||
|
@ -3,19 +3,19 @@
|
||||
#define __WSTRINGEX_HPP
|
||||
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
class wstringEx : public std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
|
||||
class wstringEx : public basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >
|
||||
{
|
||||
public:
|
||||
wstringEx(void) { }
|
||||
wstringEx(const wchar_t *s);
|
||||
wstringEx(const std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > &ws);
|
||||
wstringEx(const std::string &s);
|
||||
wstringEx &operator=(const std::string &s);
|
||||
void fromUTF8(const char *s);
|
||||
std::string toUTF8(void) const;
|
||||
wstringEx(const basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > &ws);
|
||||
wstringEx(const string &s);
|
||||
wstringEx &operator=(const string &s);
|
||||
void fromUTF8(const string &s);
|
||||
string toUTF8(void) const;
|
||||
};
|
||||
|
||||
|
||||
#endif // !defined(__WSTRINGEX_HPP)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user