mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-30 15:14:18 +01:00
-fixed some kinda stupid neek bug
-if NTSC-J gamecube game is detected, use another memory card file for devolution memory card emulator
This commit is contained in:
parent
742477d0cf
commit
d46f534c36
@ -19,7 +19,7 @@ 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)
|
void DML_New_SetOptions(const char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats, bool debugger, u8 NMM, u8 nodisc, u8 DMLvideoMode, u8 videoSetting)
|
||||||
{
|
{
|
||||||
gprintf("Wiiflow DML: Launch game '%s' through memory (new method)\n", GamePath);
|
gprintf("Wiiflow GC: Launch game '%s' through memory (new method)\n", GamePath);
|
||||||
|
|
||||||
DMLCfg = (DML_CFG*)MEM1_alloc(sizeof(DML_CFG));
|
DMLCfg = (DML_CFG*)MEM1_alloc(sizeof(DML_CFG));
|
||||||
if(DMLCfg == NULL)
|
if(DMLCfg == NULL)
|
||||||
@ -75,7 +75,7 @@ void DML_New_SetOptions(const char *GamePath, char *CheatPath, char *NewCheatPat
|
|||||||
|
|
||||||
void DML_Old_SetOptions(char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats)
|
void DML_Old_SetOptions(char *GamePath, char *CheatPath, char *NewCheatPath, bool cheats)
|
||||||
{
|
{
|
||||||
gprintf("Wiiflow DML: Launch game '%s' through boot.bin (old method)\n", GamePath);
|
gprintf("Wiiflow GC: Launch game '%s' through boot.bin (old method)\n", GamePath);
|
||||||
FILE *f;
|
FILE *f;
|
||||||
f = fopen("sd:/games/boot.bin", "wb");
|
f = fopen("sd:/games/boot.bin", "wb");
|
||||||
fwrite(GamePath, 1, strlen(GamePath) + 1, f);
|
fwrite(GamePath, 1, strlen(GamePath) + 1, f);
|
||||||
@ -128,7 +128,7 @@ void DML_New_WriteOptions()
|
|||||||
// Devolution
|
// Devolution
|
||||||
u8 *loader_bin = NULL;
|
u8 *loader_bin = NULL;
|
||||||
static gconfig *DEVO_CONFIG = (gconfig*)0x80000020;
|
static gconfig *DEVO_CONFIG = (gconfig*)0x80000020;
|
||||||
#define LAUNCH() ((void(*)(void))loader_bin)()
|
#define DEVO_Entry() ((void(*)(void))loader_bin)()
|
||||||
|
|
||||||
bool DEVO_Installed(const char* path)
|
bool DEVO_Installed(const char* path)
|
||||||
{
|
{
|
||||||
@ -164,11 +164,13 @@ void DEVO_SetOptions(const char *path, const char *partition, const char* loader
|
|||||||
struct stat st;
|
struct stat st;
|
||||||
char full_path[256];
|
char full_path[256];
|
||||||
int data_fd;
|
int data_fd;
|
||||||
|
char gameID[7];
|
||||||
|
|
||||||
stat(path, &st);
|
stat(path, &st);
|
||||||
u8 *lowmem = (u8*)0x80000000;
|
|
||||||
FILE *iso_file = fopen(path, "rb");
|
FILE *iso_file = fopen(path, "rb");
|
||||||
fread(lowmem, 1, 32, iso_file);
|
fread(&gameID, 1, 6, iso_file);
|
||||||
|
fseek(f, 0, SEEK_SET);
|
||||||
|
fread((u8*)0x80000000, 1, 32, iso_file);
|
||||||
fclose(iso_file);
|
fclose(iso_file);
|
||||||
|
|
||||||
// fill out the Devolution config struct
|
// fill out the Devolution config struct
|
||||||
@ -189,7 +191,10 @@ void DEVO_SetOptions(const char *path, const char *partition, const char* loader
|
|||||||
// find or create a 16MB memcard file for emulation
|
// find or create a 16MB memcard file for emulation
|
||||||
// this file can be located anywhere since it's passed by cluster, not name
|
// this file can be located anywhere since it's passed by cluster, not name
|
||||||
// it must be at least 16MB though
|
// it must be at least 16MB though
|
||||||
snprintf(full_path, sizeof(full_path), "%s:/apps/gc_devo/memcard.bin", partition);
|
if(gameID[3] == 'J') //Japanese Memory Card
|
||||||
|
snprintf(full_path, sizeof(full_path), "%s:/apps/gc_devo/memcard_jap.bin", partition);
|
||||||
|
else
|
||||||
|
snprintf(full_path, sizeof(full_path), "%s:/apps/gc_devo/memcard.bin", partition);
|
||||||
|
|
||||||
// check if file doesn't exist or is less than 16MB
|
// check if file doesn't exist or is less than 16MB
|
||||||
if(stat(full_path, &st) == -1 || st.st_size < 16<<20)
|
if(stat(full_path, &st) == -1 || st.st_size < 16<<20)
|
||||||
@ -223,14 +228,15 @@ void DEVO_SetOptions(const char *path, const char *partition, const char* loader
|
|||||||
DEVO_CONFIG->memcard_cluster = st.st_ino;
|
DEVO_CONFIG->memcard_cluster = st.st_ino;
|
||||||
|
|
||||||
// flush disc ID and Devolution config out to memory
|
// flush disc ID and Devolution config out to memory
|
||||||
DCFlushRange(lowmem, 64);
|
DCFlushRange((void*)0x80000000, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DEVO_Boot()
|
void DEVO_Boot()
|
||||||
{
|
{
|
||||||
// the Devolution blob has an ID string at offset 4
|
// the Devolution blob has an ID string at offset 4
|
||||||
puts((const char*)loader_bin + 4);
|
puts((const char*)loader_bin + 4);
|
||||||
LAUNCH();
|
gprintf("WiiFlow GC: Devolution initialized. Booting game...\n \n");
|
||||||
|
DEVO_Entry();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -632,9 +632,9 @@ int CMenu::main(void)
|
|||||||
else if(BTN_MINUS_PRESSED && !m_locked)
|
else if(BTN_MINUS_PRESSED && !m_locked)
|
||||||
{
|
{
|
||||||
SourceMenuTimeout = 0;
|
SourceMenuTimeout = 0;
|
||||||
bool block = m_current_view == COVERFLOW_CHANNEL && m_cfg.getBool("NAND", "disable", true);
|
bool block = m_current_view == COVERFLOW_CHANNEL && (m_cfg.getBool("NAND", "disable", true) || cIOSInfo::neek2o());
|
||||||
char *partition;
|
char *partition;
|
||||||
if(!block && !cIOSInfo::neek2o())
|
if(!block)
|
||||||
{
|
{
|
||||||
_showWaitMessage();
|
_showWaitMessage();
|
||||||
_hideMain();
|
_hideMain();
|
||||||
@ -674,9 +674,12 @@ int CMenu::main(void)
|
|||||||
snprintf(gui_name, sizeof(gui_name), "%s [%s]", _domainFromView(),partition);
|
snprintf(gui_name, sizeof(gui_name), "%s [%s]", _domainFromView(),partition);
|
||||||
m_btnMgr.setText(m_mainLblNotice, (string)gui_name);
|
m_btnMgr.setText(m_mainLblNotice, (string)gui_name);
|
||||||
m_btnMgr.show(m_mainLblNotice);
|
m_btnMgr.show(m_mainLblNotice);
|
||||||
_loadList();
|
if(!block)
|
||||||
_showMain();
|
{
|
||||||
_initCF();
|
_loadList();
|
||||||
|
_showMain();
|
||||||
|
_initCF();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(!enable_wmote_roll)
|
else if(!enable_wmote_roll)
|
||||||
{
|
{
|
||||||
|
@ -197,16 +197,16 @@ bool CMenu::_checkSave(string id, bool nand)
|
|||||||
void CMenu::_enableNandEmu(bool fromconfig)
|
void CMenu::_enableNandEmu(bool fromconfig)
|
||||||
{
|
{
|
||||||
_cfNeedsUpdate();
|
_cfNeedsUpdate();
|
||||||
bool disable = m_cfg.getBool("NAND", "disable", true) && m_current_view == COVERFLOW_CHANNEL && !m_tempView;
|
bool disable = (m_cfg.getBool("NAND", "disable", true) || cIOSInfo::neek2o()) && m_current_view == COVERFLOW_CHANNEL && !m_tempView;
|
||||||
|
|
||||||
if(!disable && !cIOSInfo::neek2o())
|
if(!disable)
|
||||||
{
|
{
|
||||||
bool isD2XnewerThanV6 = false;
|
bool isD2XnewerThanV6 = false;
|
||||||
Nand::Instance()->Disable_Emu();
|
Nand::Instance()->Disable_Emu();
|
||||||
iosinfo_t * iosInfo = cIOSInfo::GetInfo(mainIOS);
|
iosinfo_t * iosInfo = cIOSInfo::GetInfo(mainIOS);
|
||||||
if (iosInfo->version > 6)
|
if(iosInfo->version > 6 || cIOSInfo::neek2o())
|
||||||
isD2XnewerThanV6 = true;
|
isD2XnewerThanV6 = true;
|
||||||
if(m_current_view == COVERFLOW_CHANNEL && !m_cfg.getBool("NAND", "disable", true) && !m_tempView)
|
if(m_current_view == COVERFLOW_CHANNEL && !m_cfg.getBool("NAND", "disable", true) && !cIOSInfo::neek2o() && !m_tempView)
|
||||||
Nand::Instance()->Enable_Emu();
|
Nand::Instance()->Enable_Emu();
|
||||||
u8 limiter = 0;
|
u8 limiter = 0;
|
||||||
s8 direction = m_btnMgr.selected(m_configBtnPartitionP) ? 1 : -1;
|
s8 direction = m_btnMgr.selected(m_configBtnPartitionP) ? 1 : -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user