Manage 64DD IPL loading errors
This commit is contained in:
parent
0233d848c2
commit
3e52ff7b48
|
@ -556,6 +556,7 @@ enum LanguageStringID
|
||||||
MSG_SET_LLE_GFX_MSG = 2055,
|
MSG_SET_LLE_GFX_MSG = 2055,
|
||||||
MSG_SET_HLE_AUD_TITLE = 2056,
|
MSG_SET_HLE_AUD_TITLE = 2056,
|
||||||
MSG_SET_HLE_AUD_MSG = 2057,
|
MSG_SET_HLE_AUD_MSG = 2057,
|
||||||
|
MSG_FAIL_IMAGE_IPL = 2058,
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
* Android *
|
* Android *
|
||||||
|
|
|
@ -522,6 +522,7 @@ void CLanguage::LoadDefaultStrings(void)
|
||||||
DEF_STR(MSG_SET_LLE_GFX_MSG, "Graphics LLE is not for general use!!!\nIt is advisable that you only use this for testing and not for playing games.\n\nChange to graphics LLE?");
|
DEF_STR(MSG_SET_LLE_GFX_MSG, "Graphics LLE is not for general use!!!\nIt is advisable that you only use this for testing and not for playing games.\n\nChange to graphics LLE?");
|
||||||
DEF_STR(MSG_SET_HLE_AUD_TITLE, "Audio High-Level Emulation");
|
DEF_STR(MSG_SET_HLE_AUD_TITLE, "Audio High-Level Emulation");
|
||||||
DEF_STR(MSG_SET_HLE_AUD_MSG, "Audio HLE requires a third-party plugin!!!\nIf you do not use a third-party audio plugin that supports HLE, you will hear no sound.\n\nChange to audio HLE?");
|
DEF_STR(MSG_SET_HLE_AUD_MSG, "Audio HLE requires a third-party plugin!!!\nIf you do not use a third-party audio plugin that supports HLE, you will hear no sound.\n\nChange to audio HLE?");
|
||||||
|
DEF_STR(MSG_FAIL_IMAGE_IPL, "File loaded does not appear to be a valid 64DD IPL ROM.\n\nVerify your ROMs with GoodN64.");
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
* Android *
|
* Android *
|
||||||
|
|
|
@ -363,94 +363,6 @@ bool CN64System::LoadFileImage(const char * FileLoc)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CN64System::RunFileImage(const char * FileLoc)
|
|
||||||
{
|
|
||||||
//Uninitialize g_Disk and g_DDRom to prevent exception when ending emulation of a regular ROM after playing 64DD content previously.
|
|
||||||
if (g_Disk != NULL)
|
|
||||||
{
|
|
||||||
g_Disk->UnallocateDiskImage();
|
|
||||||
delete g_Disk;
|
|
||||||
g_Disk = NULL;
|
|
||||||
}
|
|
||||||
if (g_DDRom != NULL)
|
|
||||||
{
|
|
||||||
g_DDRom->UnallocateRomImage();
|
|
||||||
delete g_DDRom;
|
|
||||||
g_DDRom = NULL;
|
|
||||||
}
|
|
||||||
if (!LoadFileImage(FileLoc))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
g_Settings->SaveBool(Setting_EnableDisk, false);
|
|
||||||
if (g_Settings->LoadBool(Setting_AutoStart) != 0)
|
|
||||||
{
|
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Automattically starting rom");
|
|
||||||
RunLoadedImage();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CN64System::RunDiskImage(const char * FileLoc)
|
|
||||||
{
|
|
||||||
if (!LoadFileImage(g_Settings->LoadStringVal(File_DiskIPLPath).c_str()))
|
|
||||||
{
|
|
||||||
g_Settings->SaveString(File_DiskIPLPath, "");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!LoadDiskImage(FileLoc, false))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
g_Settings->SaveBool(Setting_EnableDisk, true);
|
|
||||||
if (g_Settings->LoadBool(Setting_AutoStart) != 0)
|
|
||||||
{
|
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Automattically starting rom");
|
|
||||||
RunLoadedImage();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CN64System::RunDiskComboImage(const char * FileLoc, const char * FileLocDisk)
|
|
||||||
{
|
|
||||||
if (!LoadFileImageIPL(g_Settings->LoadStringVal(File_DiskIPLPath).c_str()))
|
|
||||||
{
|
|
||||||
g_Settings->SaveString(File_DiskIPLPath, "");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!LoadDiskImage(FileLocDisk, true))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!LoadFileImage(FileLoc))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
g_Settings->SaveBool(Setting_EnableDisk, true);
|
|
||||||
if (g_Settings->LoadBool(Setting_AutoStart) != 0)
|
|
||||||
{
|
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Automattically starting rom");
|
|
||||||
RunLoadedImage();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CN64System::RunLoadedImage(void)
|
|
||||||
{
|
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Start");
|
|
||||||
g_BaseSystem = new CN64System(g_Plugins, (uint32_t)time(NULL), false, false);
|
|
||||||
if (g_BaseSystem)
|
|
||||||
{
|
|
||||||
g_BaseSystem->StartEmulation(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
WriteTrace(TraceN64System, TraceError, "Failed to create CN64System");
|
|
||||||
}
|
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Done");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CN64System::LoadFileImageIPL(const char * FileLoc)
|
bool CN64System::LoadFileImageIPL(const char * FileLoc)
|
||||||
{
|
{
|
||||||
CloseSystem();
|
CloseSystem();
|
||||||
|
@ -555,6 +467,102 @@ bool CN64System::LoadDiskImage(const char * FileLoc, const bool Expansion)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CN64System::RunFileImage(const char * FileLoc)
|
||||||
|
{
|
||||||
|
//Uninitialize g_Disk and g_DDRom to prevent exception when ending emulation of a regular ROM after playing 64DD content previously.
|
||||||
|
if (g_Disk != NULL)
|
||||||
|
{
|
||||||
|
g_Disk->UnallocateDiskImage();
|
||||||
|
delete g_Disk;
|
||||||
|
g_Disk = NULL;
|
||||||
|
}
|
||||||
|
if (g_DDRom != NULL)
|
||||||
|
{
|
||||||
|
g_DDRom->UnallocateRomImage();
|
||||||
|
delete g_DDRom;
|
||||||
|
g_DDRom = NULL;
|
||||||
|
}
|
||||||
|
if (!LoadFileImage(FileLoc))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
g_Settings->SaveBool(Setting_EnableDisk, false);
|
||||||
|
if (g_Settings->LoadBool(Setting_AutoStart) != 0)
|
||||||
|
{
|
||||||
|
WriteTrace(TraceN64System, TraceDebug, "Automattically starting rom");
|
||||||
|
RunLoadedImage();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CN64System::RunDiskImage(const char * FileLoc)
|
||||||
|
{
|
||||||
|
if (!LoadFileImage(g_Settings->LoadStringVal(File_DiskIPLPath).c_str()))
|
||||||
|
{
|
||||||
|
g_Settings->SaveString(File_DiskIPLPath, "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (g_Rom->CicChipID() != CIC_NUS_8303 && g_Rom->CicChipID() != CIC_NUS_DDUS)
|
||||||
|
{
|
||||||
|
g_Notify->DisplayError(MSG_FAIL_IMAGE_IPL);
|
||||||
|
g_Settings->SaveString(File_DiskIPLPath, "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!LoadDiskImage(FileLoc, false))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
g_Settings->SaveBool(Setting_EnableDisk, true);
|
||||||
|
if (g_Settings->LoadBool(Setting_AutoStart) != 0)
|
||||||
|
{
|
||||||
|
WriteTrace(TraceN64System, TraceDebug, "Automattically starting rom");
|
||||||
|
RunLoadedImage();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CN64System::RunDiskComboImage(const char * FileLoc, const char * FileLocDisk)
|
||||||
|
{
|
||||||
|
if (!LoadFileImageIPL(g_Settings->LoadStringVal(File_DiskIPLPath).c_str()))
|
||||||
|
{
|
||||||
|
g_Settings->SaveString(File_DiskIPLPath, "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!LoadDiskImage(FileLocDisk, true))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!LoadFileImage(FileLoc))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
g_Settings->SaveBool(Setting_EnableDisk, true);
|
||||||
|
if (g_Settings->LoadBool(Setting_AutoStart) != 0)
|
||||||
|
{
|
||||||
|
WriteTrace(TraceN64System, TraceDebug, "Automattically starting rom");
|
||||||
|
RunLoadedImage();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CN64System::RunLoadedImage(void)
|
||||||
|
{
|
||||||
|
WriteTrace(TraceN64System, TraceDebug, "Start");
|
||||||
|
g_BaseSystem = new CN64System(g_Plugins, (uint32_t)time(NULL), false, false);
|
||||||
|
if (g_BaseSystem)
|
||||||
|
{
|
||||||
|
g_BaseSystem->StartEmulation(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WriteTrace(TraceN64System, TraceError, "Failed to create CN64System");
|
||||||
|
}
|
||||||
|
WriteTrace(TraceN64System, TraceDebug, "Done");
|
||||||
|
}
|
||||||
|
|
||||||
void CN64System::CloseSystem()
|
void CN64System::CloseSystem()
|
||||||
{
|
{
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Start");
|
WriteTrace(TraceN64System, TraceDebug, "Start");
|
||||||
|
|
|
@ -58,11 +58,11 @@ public:
|
||||||
|
|
||||||
//Methods
|
//Methods
|
||||||
static bool LoadFileImage(const char * FileLoc);
|
static bool LoadFileImage(const char * FileLoc);
|
||||||
|
static bool LoadFileImageIPL(const char * FileLoc);
|
||||||
|
static bool LoadDiskImage(const char * FileLoc, const bool Expansion);
|
||||||
static bool RunFileImage(const char * FileLoc);
|
static bool RunFileImage(const char * FileLoc);
|
||||||
static bool RunDiskImage(const char * FileLoc);
|
static bool RunDiskImage(const char * FileLoc);
|
||||||
static bool RunDiskComboImage(const char * FileLoc, const char * FileLocDisk);
|
static bool RunDiskComboImage(const char * FileLoc, const char * FileLocDisk);
|
||||||
static bool LoadFileImageIPL(const char * FileLoc);
|
|
||||||
static bool LoadDiskImage(const char * FileLoc, const bool Expansion);
|
|
||||||
static void RunLoadedImage(void);
|
static void RunLoadedImage(void);
|
||||||
static void CloseSystem(void);
|
static void CloseSystem(void);
|
||||||
|
|
||||||
|
|
|
@ -680,13 +680,13 @@ bool CN64Rom::LoadN64ImageIPL(const char * FileLoc, bool LoadBootCodeOnly)
|
||||||
g_Notify->DisplayMessage(5, MSG_LOADING);
|
g_Notify->DisplayMessage(5, MSG_LOADING);
|
||||||
if (!ZipFile.GetFile(i, m_ROMImage, RomFileSize))
|
if (!ZipFile.GetFile(i, m_ROMImage, RomFileSize))
|
||||||
{
|
{
|
||||||
SetError(MSG_FAIL_IMAGE);
|
SetError(MSG_FAIL_IMAGE_IPL);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsValidRomImage(m_ROMImage))
|
if (!IsValidRomImage(m_ROMImage))
|
||||||
{
|
{
|
||||||
SetError(MSG_FAIL_IMAGE);
|
SetError(MSG_FAIL_IMAGE_IPL);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
g_Notify->DisplayMessage(5, MSG_BYTESWAP);
|
g_Notify->DisplayMessage(5, MSG_BYTESWAP);
|
||||||
|
@ -748,6 +748,12 @@ bool CN64Rom::LoadN64ImageIPL(const char * FileLoc, bool LoadBootCodeOnly)
|
||||||
WriteTrace(TraceN64System, TraceDebug, "Ident: %s", m_RomIdent.c_str());
|
WriteTrace(TraceN64System, TraceDebug, "Ident: %s", m_RomIdent.c_str());
|
||||||
CalculateCicChip();
|
CalculateCicChip();
|
||||||
|
|
||||||
|
if (CicChipID() != CIC_NUS_8303 && CicChipID() != CIC_NUS_DDUS)
|
||||||
|
{
|
||||||
|
SetError(MSG_FAIL_IMAGE_IPL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!LoadBootCodeOnly && g_DDRom == this)
|
if (!LoadBootCodeOnly && g_DDRom == this)
|
||||||
{
|
{
|
||||||
g_Settings->SaveBool(GameRunning_LoadingInProgress, false);
|
g_Settings->SaveBool(GameRunning_LoadingInProgress, false);
|
||||||
|
|
Loading…
Reference in New Issue