NDSSystem.cpp: Fix interactions between external firmware loading and BIOS loading. Always ensure that loading external firmware is dependent on loading both ARM9 and ARM7 BIOS files.

This commit is contained in:
rogerman 2018-11-15 01:04:06 -08:00
parent e27cc87bdf
commit 71df3f4f28
3 changed files with 7 additions and 6 deletions

View File

@ -2645,7 +2645,7 @@ void NDS_Reset()
bool didLoadExtFirmware = false;
extFirmwareObj = new CFIRMWARE();
if (CommonSettings.UseExtFirmware)
if (CommonSettings.UseExtFirmware && NDS_ARM7.BIOS_loaded && NDS_ARM9.BIOS_loaded)
{
didLoadExtFirmware = extFirmwareObj->load(CommonSettings.ExtFirmwarePath);
}
@ -2673,7 +2673,7 @@ void NDS_Reset()
//1. we have the ARM7 and ARM9 bioses (its doubtful that our HLE bios implement the necessary functions)
//2. firmware is available
//3. user has requested booting from firmware
bool canBootFromFirmware = (NDS_ARM7.BIOS_loaded && NDS_ARM9.BIOS_loaded && CommonSettings.BootFromFirmware && didLoadExtFirmware);
bool canBootFromFirmware = (CommonSettings.BootFromFirmware && didLoadExtFirmware);
bool bootResult = false;
if (canBootFromFirmware)

View File

@ -448,6 +448,7 @@ volatile bool execute = true;
- (void) setEmuFlagUseExternalBios:(BOOL)enable
{
execControl->SetEnableExternalBIOS((enable) ? true : false);
[self updateFirmwareMACAddressString];
}
- (BOOL) emuFlagUseExternalBios
@ -743,7 +744,7 @@ volatile bool execute = true;
- (void) updateFirmwareMACAddressString
{
if ([self emuFlagUseExternalFirmware])
if ([self emuFlagUseExternalBios] && [self emuFlagUseExternalFirmware])
{
[self setFirmwareMACAddressSelectionString:[NSString stringWithFormat:@"Ext. Firmware %@", [self extFirmwareMACAddressString]]];
}
@ -854,7 +855,7 @@ volatile bool execute = true;
{
[self setCoreState:ExecutionBehavior_Pause];
if (![self emuFlagUseExternalFirmware])
if (![self emuFlagUseExternalBios] || ![self emuFlagUseExternalFirmware])
{
[[self cdsFirmware] writeUserDefaultWFCUserID];
[[self cdsFirmware] updateFirmwareConfigSessionValues];

View File

@ -1709,7 +1709,7 @@
[self pauseCore];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (![cdsCore emuFlagUseExternalFirmware])
if (![cdsCore emuFlagUseExternalBios] || ![cdsCore emuFlagUseExternalFirmware])
{
[[cdsCore cdsFirmware] updateFirmwareConfigSessionValues];
}
@ -1914,7 +1914,7 @@
}
// Unload the ROM.
if (![cdsCore emuFlagUseExternalFirmware])
if (![cdsCore emuFlagUseExternalBios] || ![cdsCore emuFlagUseExternalFirmware])
{
[[cdsCore cdsFirmware] writeUserDefaultWFCUserID];
}