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:
parent
e27cc87bdf
commit
71df3f4f28
|
@ -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)
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue