mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-23 19:59:16 +01:00
-if cheat gct file is on usb and trying to launch a
gc game with this gct file it auto copy the file into the games folder of this game on sd card
This commit is contained in:
parent
c1bfa9195b
commit
64f796494d
@ -30,6 +30,7 @@
|
|||||||
#include "homebrew.h"
|
#include "homebrew.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "gc/gc.h"
|
#include "gc/gc.h"
|
||||||
|
#include "gc/fileOps.h"
|
||||||
|
|
||||||
//#define DML_THROUGH_MEM /*** Load game through mem.. Not compatible with regulair DML ***/
|
//#define DML_THROUGH_MEM /*** Load game through mem.. Not compatible with regulair DML ***/
|
||||||
|
|
||||||
@ -635,24 +636,38 @@ void CMenu::_launchGC(dir_discHdr *hdr, bool DML)
|
|||||||
if(m_new_dml)
|
if(m_new_dml)
|
||||||
{
|
{
|
||||||
gprintf("Wiiflow DML: Launch game 'sd:/games/%s/game.iso' through memory\n", hdr->path);
|
gprintf("Wiiflow DML: Launch game 'sd:/games/%s/game.iso' through memory\n", hdr->path);
|
||||||
|
|
||||||
DML_CFG *DMLCfg = (DML_CFG*)MEM2_alloc(sizeof(DML_CFG));
|
DML_CFG *DMLCfg = (DML_CFG*)MEM2_alloc(sizeof(DML_CFG));
|
||||||
memset(DMLCfg, 0, sizeof(DML_CFG));
|
memset(DMLCfg, 0, sizeof(DML_CFG));
|
||||||
|
snprintf(DMLCfg->GamePath, sizeof(DMLCfg->GamePath), "/games/%s/game.iso", hdr->path);
|
||||||
DMLCfg->Magicbytes = 0xD1050CF6;
|
DMLCfg->Magicbytes = 0xD1050CF6;
|
||||||
DMLCfg->CfgVersion = 0x00000001;
|
DMLCfg->CfgVersion = 0x00000001;
|
||||||
DMLCfg->VideoMode |= DML_VID_NONE;
|
DMLCfg->VideoMode |= DML_VID_NONE;
|
||||||
DMLCfg->Config |= DML_CFG_GAME_PATH;
|
DMLCfg->Config |= DML_CFG_GAME_PATH;
|
||||||
snprintf(DMLCfg->GamePath, sizeof(DMLCfg->GamePath), "/games/%s/game.iso", hdr->path);
|
|
||||||
if(m_gcfg2.testOptBool((char *)hdr->hdr.id, "cheat", m_cfg.getBool("GAMES", "cheat", false)))
|
if(m_gcfg2.testOptBool((char *)hdr->hdr.id, "cheat", m_cfg.getBool("GAMES", "cheat", false)))
|
||||||
{
|
{
|
||||||
|
const char *ptr;
|
||||||
|
|
||||||
|
char old_cheat_path[256];
|
||||||
|
snprintf(old_cheat_path, sizeof(old_cheat_path), "%s/%s", m_cheatDir.c_str(), fmt("%s.gct", hdr->hdr.id));
|
||||||
|
|
||||||
DMLCfg->Config |= DML_CFG_CHEATS;
|
DMLCfg->Config |= DML_CFG_CHEATS;
|
||||||
DMLCfg->Config |= DML_CFG_CHEAT_PATH;
|
DMLCfg->Config |= DML_CFG_CHEAT_PATH;
|
||||||
const char *ptr;
|
|
||||||
if(strstr(m_cheatDir.c_str(), "sd:/") != NULL)
|
if(strstr(old_cheat_path, "sd:/") != NULL)
|
||||||
{
|
{
|
||||||
ptr = &m_cheatDir.c_str()[3];
|
ptr = &old_cheat_path[3];
|
||||||
snprintf(DMLCfg->CheatPath, sizeof(DMLCfg->CheatPath), "%s/%s", ptr, fmt("%s.gct", hdr->hdr.id));
|
|
||||||
}
|
}
|
||||||
gprintf("Cheat dir: %s\n", DMLCfg->CheatPath);
|
else
|
||||||
|
{
|
||||||
|
char new_cheat_path[256];
|
||||||
|
snprintf(new_cheat_path, sizeof(new_cheat_path), "%s/%s/%s", fmt(DML_DIR, DeviceName[SD]), hdr->path, fmt("%s.gct", hdr->hdr.id));
|
||||||
|
fsop_CopyFile(old_cheat_path, new_cheat_path, NULL, NULL);
|
||||||
|
ptr = &new_cheat_path[3];
|
||||||
|
}
|
||||||
|
strncpy(DMLCfg->CheatPath, ptr, sizeof(DMLCfg->CheatPath));
|
||||||
|
gprintf("Cheat File: %s\n", DMLCfg->CheatPath);
|
||||||
}
|
}
|
||||||
memcpy((void *)0xC0001700, DMLCfg, sizeof(DML_CFG));
|
memcpy((void *)0xC0001700, DMLCfg, sizeof(DML_CFG));
|
||||||
MEM2_free(DMLCfg);
|
MEM2_free(DMLCfg);
|
||||||
|
Loading…
Reference in New Issue
Block a user