diff --git a/desmume/src/NDSSystem.cpp b/desmume/src/NDSSystem.cpp index d01e06c80..2d56bea3f 100755 --- a/desmume/src/NDSSystem.cpp +++ b/desmume/src/NDSSystem.cpp @@ -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) diff --git a/desmume/src/frontend/cocoa/cocoa_core.mm b/desmume/src/frontend/cocoa/cocoa_core.mm index cf5ff0a46..3ca245346 100644 --- a/desmume/src/frontend/cocoa/cocoa_core.mm +++ b/desmume/src/frontend/cocoa/cocoa_core.mm @@ -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]; diff --git a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm index 102dcdea8..2b2fc752e 100644 --- a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm +++ b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm @@ -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]; }