mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-27 05:34:15 +01:00
-fixed some stupid default font bug (it was extracted twice lol)
-added new option, "force_cios_rev" (default 0 (=disabled)), if you set it to for example "force_cios_rev=250", then wiiflow will use IOS250 for the AUTO setting, for reload when using "force_cios_load" and when switching to emu nand in IOS58 mode -added more detailed debug prints and on screen information about the currently loaded cIOS -minor cleanup in nand get file and external booter
This commit is contained in:
parent
b2fdc18998
commit
f41e01ff87
@ -28,7 +28,6 @@ typedef struct _the_CFG {
|
||||
s32 wbfsDevice;
|
||||
u32 wbfsPart;
|
||||
u8 GameBootType;
|
||||
u8 mload_rev;
|
||||
WIP_Code *wip_list;
|
||||
u32 wip_count;
|
||||
/* needed for channels */
|
||||
|
@ -31,10 +31,9 @@
|
||||
#include "cios.h"
|
||||
#include "gecko.h"
|
||||
|
||||
bool Hermes_shadow_mload(int mload_rev)
|
||||
bool Hermes_shadow_mload()
|
||||
{
|
||||
int v51 = (5 << 4) & 1;
|
||||
if(mload_rev >= v51)
|
||||
if(CurrentIOS.Revision >= 5 && CurrentIOS.SubRevision >= 1)
|
||||
{
|
||||
IOS_Open("/dev/mload/OFF",0); // shadow /dev/mload supported in hermes cios v5.1
|
||||
gprintf("Shadow mload\n");
|
||||
|
@ -20,6 +20,7 @@ typedef struct _iosinfo_t {
|
||||
|
||||
typedef struct _IOS_Info {
|
||||
u32 Revision;
|
||||
u32 SubRevision;
|
||||
u8 Version;
|
||||
u8 Type;
|
||||
u8 Base;
|
||||
@ -31,7 +32,7 @@ void IOS_GetCurrentIOSInfo();
|
||||
bool IOS_D2X(u8 ios, u8 *base);
|
||||
u8 IOS_GetType(u8 slot);
|
||||
|
||||
bool Hermes_shadow_mload(int mload_rev);
|
||||
bool Hermes_shadow_mload();
|
||||
void Hermes_Disable_EHC();
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -94,7 +94,7 @@ int main()
|
||||
{
|
||||
Disc_SetUSB((u8*)normalCFG.gameID, normalCFG.GameBootType == TYPE_WII_WBFS_EXT);
|
||||
if(CurrentIOS.Type == IOS_TYPE_HERMES)
|
||||
Hermes_shadow_mload(normalCFG.mload_rev);
|
||||
Hermes_shadow_mload();
|
||||
}
|
||||
prog(20);
|
||||
Disc_Open();
|
||||
|
@ -28,7 +28,6 @@ typedef struct _the_CFG {
|
||||
s32 wbfsDevice;
|
||||
u32 wbfsPart;
|
||||
u8 GameBootType;
|
||||
u8 mload_rev;
|
||||
WIP_Code *wip_list;
|
||||
u32 wip_count;
|
||||
/* needed for channels */
|
||||
|
@ -106,7 +106,6 @@ void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, const char *ID)
|
||||
normalCFG.fragments = frag_list;
|
||||
normalCFG.wbfsDevice = wbfsDev;
|
||||
normalCFG.wbfsPart = wbfs_part_idx;
|
||||
normalCFG.mload_rev = mload_get_version();
|
||||
}
|
||||
|
||||
void ExternalBooter_ChannelSetup(u64 title)
|
||||
|
@ -168,7 +168,7 @@ void Banner::GetBanner(u64 title, char *appname, bool isfs, bool imetOnly)
|
||||
u32 size = 0;
|
||||
if (isfs)
|
||||
{
|
||||
buf = ISFS_GetFile((u8 *)appname, &size, imetOnly ? sizeof(IMET) + IMET_OFFSET : 0);
|
||||
buf = ISFS_GetFile(appname, &size, imetOnly ? sizeof(IMET) + IMET_OFFSET : 0);
|
||||
if (size == 0)
|
||||
{
|
||||
if(buf != NULL)
|
||||
|
@ -42,7 +42,7 @@ bool Identify(u64 titleid)
|
||||
gprintf("Reading TMD...");
|
||||
sprintf(filepath, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(titleid), TITLE_LOWER(titleid));
|
||||
u32 tmdSize;
|
||||
u8 *tmdBuffer = ISFS_GetFile((u8 *) &filepath, &tmdSize, -1);
|
||||
u8 *tmdBuffer = ISFS_GetFile(filepath, &tmdSize, -1);
|
||||
if (tmdBuffer == NULL || tmdSize == 0)
|
||||
{
|
||||
gprintf("Failed!\n");
|
||||
@ -62,9 +62,9 @@ bool Identify(u64 titleid)
|
||||
gprintf("Success!\n");
|
||||
|
||||
gprintf("Reading certs...");
|
||||
sprintf(filepath, "/sys/cert.sys");
|
||||
strcpy(filepath, "/sys/cert.sys");
|
||||
u32 certSize;
|
||||
u8 *certBuffer = ISFS_GetFile((u8 *) &filepath, &certSize, -1);
|
||||
u8 *certBuffer = ISFS_GetFile(filepath, &certSize, -1);
|
||||
if (certBuffer == NULL || certSize == 0)
|
||||
{
|
||||
gprintf("Failed!\n");
|
||||
|
@ -68,7 +68,7 @@ u8 Channels::GetRequestedIOS(u64 title)
|
||||
sprintf(tmd, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title));
|
||||
|
||||
u32 size;
|
||||
u8 *titleTMD = (u8 *)ISFS_GetFile((u8 *) &tmd, &size, -1);
|
||||
u8 *titleTMD = (u8 *)ISFS_GetFile(tmd, &size, -1);
|
||||
if(titleTMD == NULL)
|
||||
return 0;
|
||||
|
||||
@ -108,7 +108,7 @@ bool Channels::GetAppNameFromTmd(u64 title, char *app, bool dol, u32 *bootconten
|
||||
sprintf(tmd, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title));
|
||||
|
||||
u32 size;
|
||||
u8 *data = ISFS_GetFile((u8 *) &tmd, &size, -1);
|
||||
u8 *data = ISFS_GetFile(tmd, &size, -1);
|
||||
if (data == NULL || size < 0x208)
|
||||
return ret;
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include "gecko/gecko.h"
|
||||
#include "loader/alt_ios.h"
|
||||
#include "loader/cios.h"
|
||||
#include "loader/fs.h"
|
||||
#include "loader/sys.h"
|
||||
#include "loader/wbfs.h"
|
||||
#include "memory/memory.h"
|
||||
@ -70,6 +71,7 @@ void Nand::Init()
|
||||
MountedDevice = 0;
|
||||
EmuDevice = REAL_NAND;
|
||||
Disabled = true;
|
||||
AccessPatched = false;
|
||||
Partition = 0;
|
||||
FullMode = 0x100;
|
||||
memset(NandPath, 0, sizeof(NandPath));
|
||||
@ -1052,46 +1054,35 @@ extern "C" { extern s32 MagicPatches(s32); }
|
||||
void Nand::Enable_ISFS_Patches(void)
|
||||
{
|
||||
if(AHBRPOT_Patched())
|
||||
{
|
||||
gprintf("Enabling ISFS Patches\n");
|
||||
// Disable memory protection
|
||||
write16(MEM_PROT, 0);
|
||||
// Do patches
|
||||
PatchAHB();
|
||||
MagicPatches(1);
|
||||
// Enable memory protection
|
||||
write16(MEM_PROT, 1);
|
||||
}
|
||||
gprintf("Enabling ISFS Patches: %i\n", MagicPatches(1));
|
||||
}
|
||||
|
||||
void Nand::Disable_ISFS_Patches(void)
|
||||
{
|
||||
if(AHBRPOT_Patched())
|
||||
{
|
||||
gprintf("Disabling ISFS Patches\n");
|
||||
// Disable memory protection
|
||||
write16(MEM_PROT, 0);
|
||||
// Do patches
|
||||
MagicPatches(0);
|
||||
// Enable memory protection
|
||||
write16(MEM_PROT, 1);
|
||||
}
|
||||
gprintf("Disabling ISFS Patches: %i\n", MagicPatches(0));
|
||||
}
|
||||
|
||||
void Nand::Init_ISFS()
|
||||
{
|
||||
if(IOS_GetVersion() == 58)
|
||||
{
|
||||
Enable_ISFS_Patches();
|
||||
AccessPatched = true;
|
||||
}
|
||||
gprintf("Init ISFS\n");
|
||||
ISFS_Initialize();
|
||||
if(IOS_GetVersion() == 58)
|
||||
Enable_ISFS_Patches();
|
||||
}
|
||||
|
||||
void Nand::DeInit_ISFS()
|
||||
{
|
||||
gprintf("Deinit ISFS\n");
|
||||
ISFS_Deinitialize();
|
||||
if(IOS_GetVersion() == 58)
|
||||
if(AccessPatched)
|
||||
{
|
||||
Disable_ISFS_Patches();
|
||||
AccessPatched = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Thanks to postloader for that patch */
|
||||
|
@ -95,6 +95,7 @@ private:
|
||||
s32 Nand_Disable(void);
|
||||
|
||||
void PatchAHB(void);
|
||||
bool ISFS_Check(void);
|
||||
void Enable_ISFS_Patches(void);
|
||||
void Disable_ISFS_Patches(void);
|
||||
|
||||
@ -125,7 +126,8 @@ private:
|
||||
bool Disabled;
|
||||
bool fake;
|
||||
bool showprogress;
|
||||
|
||||
bool AccessPatched;
|
||||
|
||||
void *data;
|
||||
dump_callback_t dumper;
|
||||
u32 Partition ATTRIBUTE_ALIGN(32);
|
||||
|
@ -70,7 +70,7 @@ iosinfo_t *IOS_GetInfo(u8 ios)
|
||||
MEM2_free(TMD);
|
||||
|
||||
u32 size = 0;
|
||||
u8 *buffer = ISFS_GetFile((u8 *)filepath, &size, sizeof(iosinfo_t));
|
||||
u8 *buffer = ISFS_GetFile(filepath, &size, sizeof(iosinfo_t));
|
||||
if(buffer == NULL || size == 0)
|
||||
return NULL;
|
||||
|
||||
@ -164,29 +164,38 @@ u8 IOS_GetType(u8 slot)
|
||||
void IOS_GetCurrentIOSInfo()
|
||||
{
|
||||
memset(&CurrentIOS, 0, sizeof(IOS_Info));
|
||||
CurrentIOS.Revision = IOS_GetRevision();
|
||||
CurrentIOS.Version = IOS_GetVersion();
|
||||
CurrentIOS.Base = CurrentIOS.Version;
|
||||
CurrentIOS.Revision = IOS_GetRevision();
|
||||
CurrentIOS.SubRevision = 0;
|
||||
CurrentIOS.Type = IOS_GetType(CurrentIOS.Version);
|
||||
if(CurrentIOS.Type == IOS_TYPE_D2X)
|
||||
{
|
||||
iosinfo_t *iosInfo = IOS_GetInfo(CurrentIOS.Version);
|
||||
CurrentIOS.Revision = iosInfo->version;
|
||||
CurrentIOS.Base = iosInfo->baseios;
|
||||
gprintf("D2X cIOS Base IOS%i\n", CurrentIOS.Base);
|
||||
gprintf("D2X IOS%i[%i] v%i\n", CurrentIOS.Version, CurrentIOS.Base,
|
||||
CurrentIOS.Revision);
|
||||
MEM2_free(iosInfo);
|
||||
}
|
||||
else if(CurrentIOS.Type == IOS_TYPE_WANIN && CurrentIOS.Revision >= 18)
|
||||
else if(CurrentIOS.Type == IOS_TYPE_WANIN)
|
||||
{
|
||||
CurrentIOS.Base = wanin_mload_get_IOS_base();
|
||||
gprintf("Waninkoko cIOS Base IOS%i\n", CurrentIOS.Base);
|
||||
if(CurrentIOS.Revision >= 18)
|
||||
CurrentIOS.Base = wanin_mload_get_IOS_base();
|
||||
gprintf("Waninkoko IOS%i[%i] v%i\n", CurrentIOS.Version, CurrentIOS.Base,
|
||||
CurrentIOS.Revision);
|
||||
}
|
||||
else if(CurrentIOS.Type == IOS_TYPE_HERMES && CurrentIOS.Revision >= 4)
|
||||
else if(CurrentIOS.Type == IOS_TYPE_HERMES)
|
||||
{
|
||||
CurrentIOS.Base = mload_get_IOS_base();
|
||||
gprintf("Hermes cIOS Base IOS%i\n", CurrentIOS.Base);
|
||||
if(CurrentIOS.Revision > 4)
|
||||
{
|
||||
CurrentIOS.Revision = mload_get_version() >> 4;
|
||||
CurrentIOS.SubRevision = mload_get_version() & 0xF;
|
||||
}
|
||||
gprintf("Hermes IOS%i[%i] v%d.%d\n", CurrentIOS.Version, CurrentIOS.Base,
|
||||
CurrentIOS.Revision, CurrentIOS.SubRevision);
|
||||
}
|
||||
else
|
||||
CurrentIOS.Base = CurrentIOS.Version;
|
||||
DCFlushRange(&CurrentIOS, sizeof(IOS_Info));
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ typedef struct _iosinfo_t {
|
||||
|
||||
typedef struct _IOS_Info {
|
||||
u32 Revision;
|
||||
u32 SubRevision;
|
||||
u8 Version;
|
||||
u8 Type;
|
||||
u8 Base;
|
||||
|
@ -6,15 +6,16 @@
|
||||
|
||||
#include "fs.h"
|
||||
#include "utils.h"
|
||||
#include "gecko/gecko.h"
|
||||
#include "memory/mem2.hpp"
|
||||
|
||||
static fstats stats ATTRIBUTE_ALIGN(32);
|
||||
|
||||
u8 *ISFS_GetFile(u8 *path, u32 *size, s32 length)
|
||||
u8 *ISFS_GetFile(const char *path, u32 *size, s32 length)
|
||||
{
|
||||
*size = 0;
|
||||
|
||||
s32 fd = ISFS_Open((const char *)path, ISFS_OPEN_READ);
|
||||
//gprintf("ISFS_GetFile %s", path);
|
||||
s32 fd = ISFS_Open(path, ISFS_OPEN_READ);
|
||||
u8 *buf = NULL;
|
||||
|
||||
if(fd >= 0)
|
||||
@ -38,11 +39,13 @@ u8 *ISFS_GetFile(u8 *path, u32 *size, s32 length)
|
||||
}
|
||||
ISFS_Close(fd);
|
||||
}
|
||||
|
||||
if(*size > 0)
|
||||
{
|
||||
//gprintf(" succeed!\n");
|
||||
DCFlushRange(buf, *size);
|
||||
ICInvalidateRange(buf, *size);
|
||||
}
|
||||
//else
|
||||
// gprintf(" failed!\n");
|
||||
return buf;
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
u8 *ISFS_GetFile(u8 *path, u32 *size, s32 length);
|
||||
u8 *ISFS_GetFile(const char *path, u32 *size, s32 length);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ int main(int argc, char **argv)
|
||||
if(useMainIOS || !DeviceHandle.UsablePartitionMounted())
|
||||
{
|
||||
useMainIOS = false;
|
||||
mainMenu._TempLoadIOS();
|
||||
mainMenu.TempLoadIOS();
|
||||
iosOK = CustomIOS(CurrentIOS.Type);
|
||||
}
|
||||
}
|
||||
|
@ -188,8 +188,7 @@ void CMenu::init()
|
||||
fsop_MakeFolder((char *)fmt("%s:/%s", DeviceName[i], APPDATA_DIR2)); //Make the apps dir, so saving wiiflow.ini does not fail.
|
||||
break;
|
||||
}
|
||||
|
||||
_loadDefaultFont(CONF_GetLanguage() == CONF_LANG_KOREAN);
|
||||
loadDefaultFont();
|
||||
|
||||
if(drive == check) // Should not happen
|
||||
{
|
||||
@ -213,6 +212,12 @@ void CMenu::init()
|
||||
WriteToSD = m_cfg.getBool("DEBUG", "sd_write_log", false);
|
||||
bufferMessages = WriteToSD;
|
||||
}
|
||||
int ForceIOS = min(m_cfg.getInt("GENERAL", "force_cios_rev", 0), 254);
|
||||
if(ForceIOS > 0)
|
||||
{
|
||||
gprintf("Using IOS%i instead of IOS%i as main cIOS.\n", ForceIOS, mainIOS);
|
||||
mainIOS = ForceIOS;
|
||||
}
|
||||
useMainIOS = m_cfg.getBool("GENERAL", "force_cios_load", false);
|
||||
bool onUSB = m_cfg.getBool("GENERAL", "data_on_usb", strncmp(drive, "usb", 3) == 0);
|
||||
|
||||
@ -2225,7 +2230,7 @@ bool CMenu::_loadChannelList(void)
|
||||
if(!disable_emu)
|
||||
{
|
||||
MusicPlayer.Stop();
|
||||
_TempLoadIOS();
|
||||
TempLoadIOS();
|
||||
DeviceHandle.UnMount(currentPartition);
|
||||
NandHandle.SetPaths(emuPath.c_str(), currentPartition, disable_emu);
|
||||
if(NandHandle.Enable_Emu() < 0)
|
||||
@ -2252,7 +2257,7 @@ bool CMenu::_loadList(void)
|
||||
{
|
||||
MusicPlayer.Stop();
|
||||
NandHandle.Disable_Emu();
|
||||
_TempLoadIOS(IOS_TYPE_NORMAL_IOS);
|
||||
TempLoadIOS(IOS_TYPE_NORMAL_IOS);
|
||||
}
|
||||
gprintf("Switching View to %s\n", _domainFromView());
|
||||
|
||||
@ -2485,68 +2490,59 @@ typedef struct map_entry
|
||||
u8 sha1[20];
|
||||
} __attribute((packed)) map_entry_t;
|
||||
|
||||
void CMenu::_loadDefaultFont(bool korean)
|
||||
void CMenu::loadDefaultFont(void)
|
||||
{
|
||||
u32 size;
|
||||
if(m_base_font != NULL)
|
||||
return;
|
||||
|
||||
u32 size = 0;
|
||||
bool retry = false;
|
||||
bool korean = (CONF_GetLanguage() == CONF_LANG_KOREAN);
|
||||
char ISFS_Filename[32] ATTRIBUTE_ALIGN(32);
|
||||
|
||||
// Read content.map from ISFS
|
||||
u8 *content = ISFS_GetFile((u8 *) "/shared1/content.map", &size, 0);
|
||||
strcpy(ISFS_Filename, "/shared1/content.map");
|
||||
u8 *content = ISFS_GetFile(ISFS_Filename, &size, -1);
|
||||
if(content == NULL)
|
||||
return;
|
||||
|
||||
int items = size / sizeof(map_entry_t);
|
||||
|
||||
u32 items = size / sizeof(map_entry_t);
|
||||
//gprintf("Open content.map, size %d, items %d\n", size, items);
|
||||
map_entry_t *cm = (map_entry_t *)content;
|
||||
|
||||
retry:
|
||||
retry:
|
||||
bool kor_font = (korean && !retry) || (!korean && retry);
|
||||
map_entry_t *cm = (map_entry_t *) content;
|
||||
for (int i = 0; i < items; i++)
|
||||
for(u32 i = 0; i < items; i++)
|
||||
{
|
||||
if (memcmp(cm[i].sha1, kor_font ? WIIFONT_HASH_KOR : WIIFONT_HASH, 20) == 0)
|
||||
if(m_base_font != NULL && m_wbf1_font != NULL && m_wbf2_font != NULL)
|
||||
break;
|
||||
if(memcmp(cm[i].sha1, kor_font ? WIIFONT_HASH_KOR : WIIFONT_HASH, 20) == 0 && m_base_font == NULL)
|
||||
{
|
||||
// Name found, load it and unpack it
|
||||
char u8_font_filename[22] = {0};
|
||||
strcpy(u8_font_filename, "/shared1/XXXXXXXX.app"); // Faster than sprintf
|
||||
memcpy(u8_font_filename+9, cm[i].filename, 8);
|
||||
|
||||
u8 *u8_font_archive = ISFS_GetFile((u8 *) u8_font_filename, &size, 0);
|
||||
//gprintf("Opened fontfile: %s: %d bytes\n", u8_font_filename, size);
|
||||
|
||||
sprintf(ISFS_Filename, "/shared1/%.8s.app", cm[i].filename); //who cares about the few ticks more?
|
||||
u8 *u8_font_archive = ISFS_GetFile(ISFS_Filename, &size, -1);
|
||||
if(u8_font_archive != NULL)
|
||||
{
|
||||
const u8 *font_file = u8_get_file_by_index(u8_font_archive, 1, &size); // There is only one file in that app
|
||||
//gprintf("Extracted font: %d\n", size);
|
||||
if(m_base_font)
|
||||
MEM1_lo_free(m_base_font);
|
||||
m_base_font = (u8*)MEM1_lo_alloc(size);
|
||||
memcpy(m_base_font, font_file, size);
|
||||
DCFlushRange(m_base_font, size);
|
||||
m_base_font_size = size;
|
||||
free(u8_font_archive);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if(memcmp(cm[i].sha1, WFB_HASH, 20) == 0)
|
||||
else if(memcmp(cm[i].sha1, WFB_HASH, 20) == 0 && m_wbf1_font == NULL && m_wbf2_font == NULL)
|
||||
{
|
||||
// Name found, load it and unpack it
|
||||
char font_filename[32] ATTRIBUTE_ALIGN(32);
|
||||
strcpy(font_filename, "/shared1/XXXXXXXX.app"); // Faster than sprintf
|
||||
memcpy(font_filename+9, cm[i].filename, 8);
|
||||
u8 *u8_font_archive = ISFS_GetFile((u8 *)font_filename, &size, 0);
|
||||
sprintf(ISFS_Filename, "/shared1/%.8s.app", cm[i].filename); //who cares about the few ticks more?
|
||||
u8 *u8_font_archive = ISFS_GetFile(ISFS_Filename, &size, -1);
|
||||
if(u8_font_archive != NULL)
|
||||
{
|
||||
const u8 *font_file1 = u8_get_file(u8_font_archive, "wbf1.brfna", &size);
|
||||
if(m_wbf1_font)
|
||||
MEM1_lo_free(m_wbf1_font);
|
||||
m_wbf1_font = (u8*)MEM1_lo_alloc(size);
|
||||
memcpy(m_wbf1_font, font_file1, size);
|
||||
DCFlushRange(m_wbf1_font, size);
|
||||
|
||||
const u8 *font_file2 = u8_get_file(u8_font_archive, "wbf2.brfna", &size);
|
||||
if(m_wbf2_font)
|
||||
MEM1_lo_free(m_wbf2_font);
|
||||
m_wbf2_font = (u8*)MEM1_lo_alloc(size);
|
||||
memcpy(m_wbf2_font, font_file2, size);
|
||||
DCFlushRange(m_wbf2_font, size);
|
||||
@ -2555,22 +2551,23 @@ retry:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!retry)
|
||||
if(!retry && m_base_font == NULL)
|
||||
{
|
||||
retry = true;
|
||||
goto retry;
|
||||
}
|
||||
|
||||
free(content);
|
||||
}
|
||||
|
||||
void CMenu::_cleanupDefaultFont()
|
||||
{
|
||||
MEM1_lo_free(m_base_font);
|
||||
m_base_font = NULL;
|
||||
m_base_font_size = 0;
|
||||
MEM1_lo_free(m_wbf1_font);
|
||||
m_wbf1_font = NULL;
|
||||
MEM1_lo_free(m_wbf2_font);
|
||||
m_wbf2_font = NULL;
|
||||
}
|
||||
|
||||
string CMenu::_getId()
|
||||
@ -2660,7 +2657,9 @@ void CMenu::UpdateCache(u32 view)
|
||||
int CMenu::MIOSisDML()
|
||||
{
|
||||
u32 size = 0;
|
||||
u8 *appfile = ISFS_GetFile((u8*)"/title/00000001/00000101/content/0000000c.app", &size, 0);
|
||||
char ISFS_Filename[ISFS_MAXPATH] ATTRIBUTE_ALIGN(32);
|
||||
strcpy(ISFS_Filename, "/title/00000001/00000101/content/0000000c.app");
|
||||
u8 *appfile = ISFS_GetFile(ISFS_Filename, &size, -1);
|
||||
if(appfile)
|
||||
{
|
||||
for(u32 i = 0; i < size; ++i)
|
||||
@ -2700,7 +2699,7 @@ void CMenu::RemoveCover(const char *id)
|
||||
fsop_deleteFile(CoverPath);
|
||||
}
|
||||
|
||||
void CMenu::_TempLoadIOS(int IOS)
|
||||
void CMenu::TempLoadIOS(int IOS)
|
||||
{
|
||||
/* Only temp reload in IOS58 mode */
|
||||
if(useMainIOS || neek2o() || Sys_DolphinMode())
|
||||
|
@ -40,7 +40,8 @@ public:
|
||||
void exitHandler(int ExitTo);
|
||||
int main(void);
|
||||
void cleanup(void);
|
||||
void _TempLoadIOS(int IOS = 0);
|
||||
void loadDefaultFont(void);
|
||||
void TempLoadIOS(int IOS = 0);
|
||||
u8 m_current_view;
|
||||
private:
|
||||
struct SZone
|
||||
@ -985,7 +986,6 @@ private:
|
||||
float _getCFFloat(const string &domain, const string &key, float def, bool otherScrnFmt = false);
|
||||
void _cfParam(bool inc, int i, const SCFParamDesc &p, int cfVersion, bool wide);
|
||||
void _buildMenus(void);
|
||||
void _loadDefaultFont(bool korean);
|
||||
void _cleanupDefaultFont();
|
||||
void _Theme_Cleanup();
|
||||
string _getId(void);
|
||||
|
@ -159,17 +159,26 @@ void CMenu::_textAbout(void)
|
||||
thanks.toUTF8().c_str())
|
||||
);
|
||||
}
|
||||
const char *IOS_Name = NULL;
|
||||
switch(IOS_GetType(CurrentIOS.Version))
|
||||
{
|
||||
case IOS_TYPE_D2X:
|
||||
IOS_Name = "D2X";
|
||||
break;
|
||||
case IOS_TYPE_WANIN:
|
||||
IOS_Name = "Waninkoko";
|
||||
break;
|
||||
case IOS_TYPE_HERMES:
|
||||
case IOS_TYPE_KWIIRK:
|
||||
m_btnMgr.setText(m_aboutLblIOS, wfmt(_fmt("ios", L"IOS%i base %i v%i"), CurrentIOS.Version, CurrentIOS.Base, CurrentIOS.Revision), true);
|
||||
IOS_Name = "Hermes";
|
||||
break;
|
||||
case IOS_TYPE_NEEK2O:
|
||||
case IOS_TYPE_NORMAL_IOS:
|
||||
m_btnMgr.setText(m_aboutLblIOS, wfmt( L"IOS%i v%i", CurrentIOS.Version, CurrentIOS.Revision), true);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if(IOS_Name == NULL)
|
||||
m_btnMgr.setText(m_aboutLblIOS, wfmt(L"IOS%i v%i", CurrentIOS.Version,
|
||||
CurrentIOS.Revision), true);
|
||||
else
|
||||
m_btnMgr.setText(m_aboutLblIOS, wfmt(L"%s IOS%i[%i] v%d.%d", IOS_Name, CurrentIOS.Version,
|
||||
CurrentIOS.Base, CurrentIOS.Revision, CurrentIOS.SubRevision), true);
|
||||
}
|
||||
|
@ -391,7 +391,9 @@ bool CMenu::_isNetworkAvailable()
|
||||
{
|
||||
bool retval = false;
|
||||
u32 size;
|
||||
u8 *buf = ISFS_GetFile((u8 *) "/shared2/sys/net/02/config.dat", &size, -1);
|
||||
char ISFS_Filepath[32] ATTRIBUTE_ALIGN(32);
|
||||
strcpy(ISFS_Filepath, "/shared2/sys/net/02/config.dat");
|
||||
u8 *buf = ISFS_GetFile(ISFS_Filepath, &size, -1);
|
||||
if (buf && size > 4)
|
||||
{
|
||||
retval = buf[4] > 0; // There is a valid connection defined.
|
||||
|
@ -1166,7 +1166,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
|
||||
} while(!(cover & 0x2));
|
||||
}
|
||||
}
|
||||
_TempLoadIOS();
|
||||
TempLoadIOS();
|
||||
/* Open Disc */
|
||||
if(Disc_Open(true) < 0)
|
||||
{
|
||||
|
@ -313,7 +313,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
{
|
||||
case CMenu::WO_ADD_GAME:
|
||||
MusicPlayer.Stop();
|
||||
_TempLoadIOS();
|
||||
TempLoadIOS();
|
||||
m_btnMgr.show(m_wbfsPBar);
|
||||
m_btnMgr.setProgress(m_wbfsPBar, 0.f);
|
||||
m_btnMgr.hide(m_wbfsBtnGo);
|
||||
@ -459,7 +459,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
||||
{
|
||||
WDVD_StopMotor();
|
||||
MusicPlayer.Stop();
|
||||
_TempLoadIOS(IOS_TYPE_NORMAL_IOS);
|
||||
TempLoadIOS(IOS_TYPE_NORMAL_IOS);
|
||||
}
|
||||
m_btnMgr.show(m_wbfsBtnBack);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user