mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-30 15:14:18 +01:00
-fixed cheats usage for DIOS-MIOS
-added more checks to prevent codedumps on gc banner creation
This commit is contained in:
parent
8b4d6159e2
commit
ea114c638d
@ -19,7 +19,7 @@
|
|||||||
// DIOS-MIOS
|
// DIOS-MIOS
|
||||||
DML_CFG *DMLCfg = NULL;
|
DML_CFG *DMLCfg = NULL;
|
||||||
|
|
||||||
void DML_New_SetOptions(const char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats, bool debugger, u8 NMM, u8 nodisc, u8 DMLvideoMode, u8 videoSetting, bool widescreen, bool new_dm_cfg)
|
void DML_New_SetOptions(const char *GamePath, char *CheatPath, 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);
|
gprintf("Wiiflow GC: Launch game '%s' through memory (new method)\n", GamePath);
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ void DML_New_SetOptions(const char *GamePath, char *CheatPath, char *NewCheatPat
|
|||||||
if(CheatPath != NULL && NewCheatPath != NULL && cheats)
|
if(CheatPath != NULL && NewCheatPath != NULL && cheats)
|
||||||
{
|
{
|
||||||
char *ptr;
|
char *ptr;
|
||||||
if(strstr(CheatPath, "sd:/") == NULL)
|
if(strstr(CheatPath, partition) == NULL)
|
||||||
{
|
{
|
||||||
fsop_CopyFile(CheatPath, NewCheatPath, NULL, NULL);
|
fsop_CopyFile(CheatPath, NewCheatPath, NULL, NULL);
|
||||||
ptr = &NewCheatPath[3];
|
ptr = &NewCheatPath[3];
|
||||||
|
@ -49,7 +49,7 @@ enum dmlvideomode
|
|||||||
DML_VID_PROG_PATCH = (1<<4),
|
DML_VID_PROG_PATCH = (1<<4),
|
||||||
};
|
};
|
||||||
|
|
||||||
void DML_New_SetOptions(const char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats, bool debugger, u8 NMM, u8 nodisc, u8 DMLvideoMode, u8 videoSetting, bool widescreen, bool new_dm_cfg);
|
void DML_New_SetOptions(const char *GamePath, char *CheatPath, char *NewCheatPath, const char *partition, bool cheats, bool debugger, u8 NMM, u8 nodisc, u8 DMLvideoMode, u8 videoSetting, bool widescreen, bool new_dm_cfg);
|
||||||
void DML_Old_SetOptions(char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats);
|
void DML_Old_SetOptions(char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats);
|
||||||
void DML_New_SetBootDiscOption(bool new_dm_cfg);
|
void DML_New_SetBootDiscOption(bool new_dm_cfg);
|
||||||
void DML_New_WriteOptions();
|
void DML_New_WriteOptions();
|
||||||
|
@ -30,8 +30,10 @@ using namespace std;
|
|||||||
void GC_Disc::init(char *path)
|
void GC_Disc::init(char *path)
|
||||||
{
|
{
|
||||||
opening_bnr = NULL;
|
opening_bnr = NULL;
|
||||||
|
FSTable = NULL;
|
||||||
|
|
||||||
strncpy(GamePath, path, sizeof(GamePath));
|
strncpy(GamePath, path, sizeof(GamePath));
|
||||||
FILE *f;
|
FILE *f = NULL;
|
||||||
if(strcasestr(GamePath, "boot.bin") != NULL)
|
if(strcasestr(GamePath, "boot.bin") != NULL)
|
||||||
{
|
{
|
||||||
GameType = TYPE_FST;
|
GameType = TYPE_FST;
|
||||||
@ -39,6 +41,8 @@ void GC_Disc::init(char *path)
|
|||||||
fst.erase(fst.end() - 8, fst.end());
|
fst.erase(fst.end() - 8, fst.end());
|
||||||
fst.append("fst.bin");
|
fst.append("fst.bin");
|
||||||
f = fopen(fst.c_str(), "rb");
|
f = fopen(fst.c_str(), "rb");
|
||||||
|
if(f == NULL)
|
||||||
|
return;
|
||||||
fseek(f, 0, SEEK_END);
|
fseek(f, 0, SEEK_END);
|
||||||
u32 size = ftell(f);
|
u32 size = ftell(f);
|
||||||
fseek(f, 0, SEEK_SET);
|
fseek(f, 0, SEEK_SET);
|
||||||
@ -49,7 +53,11 @@ void GC_Disc::init(char *path)
|
|||||||
{
|
{
|
||||||
GameType = TYPE_ISO;
|
GameType = TYPE_ISO;
|
||||||
f = fopen(GamePath, "rb");
|
f = fopen(GamePath, "rb");
|
||||||
|
if(f == NULL)
|
||||||
|
return;
|
||||||
u8 *ReadBuffer = (u8*)MEM2_alloc(0x440);
|
u8 *ReadBuffer = (u8*)MEM2_alloc(0x440);
|
||||||
|
if(ReadBuffer == NULL)
|
||||||
|
return;
|
||||||
fread(ReadBuffer, 1, 0x440, f);
|
fread(ReadBuffer, 1, 0x440, f);
|
||||||
u32 FSTOffset = *(vu32*)(ReadBuffer+0x424);
|
u32 FSTOffset = *(vu32*)(ReadBuffer+0x424);
|
||||||
u32 FSTSize = *(vu32*)(ReadBuffer+0x428);
|
u32 FSTSize = *(vu32*)(ReadBuffer+0x428);
|
||||||
@ -77,6 +85,8 @@ void GC_Disc::clear()
|
|||||||
void GC_Disc::Read_FST(FILE *f, u32 FST_size)
|
void GC_Disc::Read_FST(FILE *f, u32 FST_size)
|
||||||
{
|
{
|
||||||
FSTable = (u8*)MEM2_alloc(FST_size);
|
FSTable = (u8*)MEM2_alloc(FST_size);
|
||||||
|
if(FSTable == NULL)
|
||||||
|
return;
|
||||||
fread(FSTable, 1, FST_size, f);
|
fread(FSTable, 1, FST_size, f);
|
||||||
|
|
||||||
FSTEnt = *(vu32*)(FSTable+0x08);
|
FSTEnt = *(vu32*)(FSTable+0x08);
|
||||||
@ -85,6 +95,8 @@ void GC_Disc::Read_FST(FILE *f, u32 FST_size)
|
|||||||
|
|
||||||
u8 *GC_Disc::GetGameCubeBanner()
|
u8 *GC_Disc::GetGameCubeBanner()
|
||||||
{
|
{
|
||||||
|
if(FSTable == NULL)
|
||||||
|
return NULL;
|
||||||
FILE *f = NULL;
|
FILE *f = NULL;
|
||||||
FST *fst = (FST *)(FSTable);
|
FST *fst = (FST *)(FSTable);
|
||||||
for(u32 i = 1; i < FSTEnt; ++i)
|
for(u32 i = 1; i < FSTEnt; ++i)
|
||||||
|
@ -835,7 +835,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
|||||||
if(cheats)
|
if(cheats)
|
||||||
{
|
{
|
||||||
snprintf(CheatPath, sizeof(CheatPath), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", id.c_str()));
|
snprintf(CheatPath, sizeof(CheatPath), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", id.c_str()));
|
||||||
snprintf(NewCheatPath, sizeof(NewCheatPath), "%s/%s/%s", fmt(DML_DIR, "sd"), path.c_str(), fmt("%s.gct", id.c_str()));
|
snprintf(NewCheatPath, sizeof(NewCheatPath), "%s/%s/%s", fmt(DML_DIR, DeviceName[currentPartition]), path.c_str(), fmt("%s.gct", id.c_str()));
|
||||||
}
|
}
|
||||||
string newPath;
|
string newPath;
|
||||||
if(strcasestr(path.c_str(), "boot.bin") != NULL)
|
if(strcasestr(path.c_str(), "boot.bin") != NULL)
|
||||||
@ -846,7 +846,7 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool disc)
|
|||||||
else
|
else
|
||||||
newPath = &path[path.find_first_of(":/")+1];
|
newPath = &path[path.find_first_of(":/")+1];
|
||||||
if(m_new_dml)
|
if(m_new_dml)
|
||||||
DML_New_SetOptions(newPath.c_str(), CheatPath, NewCheatPath, cheats, DML_debug, NMM, nodisc, videoMode, videoSetting, DM_Widescreen, m_new_dm_cfg);
|
DML_New_SetOptions(newPath.c_str(), CheatPath, NewCheatPath, DeviceName[currentPartition], cheats, DML_debug, NMM, nodisc, videoMode, videoSetting, DM_Widescreen, m_new_dm_cfg);
|
||||||
else
|
else
|
||||||
DML_Old_SetOptions((char*)path.c_str(), CheatPath, NewCheatPath, cheats);
|
DML_Old_SetOptions((char*)path.c_str(), CheatPath, NewCheatPath, cheats);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user