Corrected System Menu from staying after a failure involving BIOS/Firmware.
This commit is contained in:
parent
13510e8213
commit
e65e9d8a22
|
@ -1439,104 +1439,108 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
|
||||
private void HandlePlatformMenus()
|
||||
{
|
||||
var system = string.Empty;
|
||||
{
|
||||
var system = string.Empty;
|
||||
if (!Global.Game.IsNullInstance)
|
||||
{
|
||||
//New Code
|
||||
//We use SystemID as that has the system we are playing on.
|
||||
system = Global.Emulator.SystemId;
|
||||
//Old Code below.
|
||||
//system = Global.Game.System;
|
||||
|
||||
if (!Global.Game.IsNullInstance)
|
||||
{
|
||||
system = Global.Game.System;
|
||||
}
|
||||
}
|
||||
|
||||
TI83SubMenu.Visible = false;
|
||||
NESSubMenu.Visible = false;
|
||||
PCESubMenu.Visible = false;
|
||||
SMSSubMenu.Visible = false;
|
||||
GBSubMenu.Visible = false;
|
||||
GBASubMenu.Visible = false;
|
||||
AtariSubMenu.Visible = false;
|
||||
SNESSubMenu.Visible = false;
|
||||
ColecoSubMenu.Visible = false;
|
||||
N64SubMenu.Visible = false;
|
||||
SaturnSubMenu.Visible = false;
|
||||
DGBSubMenu.Visible = false;
|
||||
GenesisSubMenu.Visible = false;
|
||||
wonderSwanToolStripMenuItem.Visible = false;
|
||||
TI83SubMenu.Visible = false;
|
||||
NESSubMenu.Visible = false;
|
||||
PCESubMenu.Visible = false;
|
||||
SMSSubMenu.Visible = false;
|
||||
GBSubMenu.Visible = false;
|
||||
GBASubMenu.Visible = false;
|
||||
AtariSubMenu.Visible = false;
|
||||
SNESSubMenu.Visible = false;
|
||||
ColecoSubMenu.Visible = false;
|
||||
N64SubMenu.Visible = false;
|
||||
SaturnSubMenu.Visible = false;
|
||||
DGBSubMenu.Visible = false;
|
||||
GenesisSubMenu.Visible = false;
|
||||
wonderSwanToolStripMenuItem.Visible = false;
|
||||
|
||||
switch (system)
|
||||
{
|
||||
case "GEN":
|
||||
GenesisSubMenu.Visible = true;
|
||||
break;
|
||||
case "TI83":
|
||||
TI83SubMenu.Visible = true;
|
||||
break;
|
||||
case "NES":
|
||||
NESSubMenu.Visible = true;
|
||||
break;
|
||||
case "PCE":
|
||||
case "PCECD":
|
||||
case "SGX":
|
||||
PCESubMenu.Visible = true;
|
||||
break;
|
||||
case "SMS":
|
||||
SMSSubMenu.Text = "&SMS";
|
||||
SMSSubMenu.Visible = true;
|
||||
break;
|
||||
case "SG":
|
||||
SMSSubMenu.Text = "&SG";
|
||||
SMSSubMenu.Visible = true;
|
||||
break;
|
||||
case "GG":
|
||||
SMSSubMenu.Text = "&GG";
|
||||
SMSSubMenu.Visible = true;
|
||||
break;
|
||||
case "GB":
|
||||
case "GBC":
|
||||
GBSubMenu.Visible = true;
|
||||
break;
|
||||
case "GBA":
|
||||
GBASubMenu.Visible = true;
|
||||
break;
|
||||
case "A26":
|
||||
AtariSubMenu.Visible = true;
|
||||
break;
|
||||
case "SNES":
|
||||
case "SGB":
|
||||
// TODO: fix SNES9x here
|
||||
if (Global.Emulator is LibsnesCore)
|
||||
{
|
||||
if ((Global.Emulator as LibsnesCore).IsSGB)
|
||||
{
|
||||
SNESSubMenu.Text = "&SGB";
|
||||
}
|
||||
else
|
||||
{
|
||||
SNESSubMenu.Text = "&SNES";
|
||||
}
|
||||
SNESSubMenu.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
SNESSubMenu.Visible = false;
|
||||
}
|
||||
break;
|
||||
case "Coleco":
|
||||
ColecoSubMenu.Visible = true;
|
||||
break;
|
||||
case "N64":
|
||||
N64SubMenu.Visible = true;
|
||||
break;
|
||||
case "SAT":
|
||||
SaturnSubMenu.Visible = true;
|
||||
break;
|
||||
case "DGB":
|
||||
DGBSubMenu.Visible = true;
|
||||
break;
|
||||
case "WSWAN":
|
||||
wonderSwanToolStripMenuItem.Visible = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (system)
|
||||
{
|
||||
case "GEN":
|
||||
GenesisSubMenu.Visible = true;
|
||||
break;
|
||||
case "TI83":
|
||||
TI83SubMenu.Visible = true;
|
||||
break;
|
||||
case "NES":
|
||||
NESSubMenu.Visible = true;
|
||||
break;
|
||||
case "PCE":
|
||||
case "PCECD":
|
||||
case "SGX":
|
||||
PCESubMenu.Visible = true;
|
||||
break;
|
||||
case "SMS":
|
||||
SMSSubMenu.Text = "&SMS";
|
||||
SMSSubMenu.Visible = true;
|
||||
break;
|
||||
case "SG":
|
||||
SMSSubMenu.Text = "&SG";
|
||||
SMSSubMenu.Visible = true;
|
||||
break;
|
||||
case "GG":
|
||||
SMSSubMenu.Text = "&GG";
|
||||
SMSSubMenu.Visible = true;
|
||||
break;
|
||||
case "GB":
|
||||
case "GBC":
|
||||
GBSubMenu.Visible = true;
|
||||
break;
|
||||
case "GBA":
|
||||
GBASubMenu.Visible = true;
|
||||
break;
|
||||
case "A26":
|
||||
AtariSubMenu.Visible = true;
|
||||
break;
|
||||
case "SNES":
|
||||
case "SGB":
|
||||
// TODO: fix SNES9x here
|
||||
if (Global.Emulator is LibsnesCore)
|
||||
{
|
||||
if ((Global.Emulator as LibsnesCore).IsSGB)
|
||||
{
|
||||
SNESSubMenu.Text = "&SGB";
|
||||
}
|
||||
else
|
||||
{
|
||||
SNESSubMenu.Text = "&SNES";
|
||||
}
|
||||
SNESSubMenu.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
SNESSubMenu.Visible = false;
|
||||
}
|
||||
break;
|
||||
case "Coleco":
|
||||
ColecoSubMenu.Visible = true;
|
||||
break;
|
||||
case "N64":
|
||||
N64SubMenu.Visible = true;
|
||||
break;
|
||||
case "SAT":
|
||||
SaturnSubMenu.Visible = true;
|
||||
break;
|
||||
case "DGB":
|
||||
DGBSubMenu.Visible = true;
|
||||
break;
|
||||
case "WSWAN":
|
||||
wonderSwanToolStripMenuItem.Visible = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void InitControls()
|
||||
{
|
||||
|
@ -3115,10 +3119,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
// the new settings objects
|
||||
CommitCoreSettingsToConfig(); // adelikat: I Think by reordering things, this isn't necessary anymore
|
||||
CloseGame();
|
||||
|
||||
|
||||
var nextComm = CreateCoreComm();
|
||||
CoreFileProvider.SyncCoreCommInputSignals(nextComm);
|
||||
|
||||
var result = loader.LoadRom(path, nextComm);
|
||||
|
||||
if (result)
|
||||
|
@ -3223,6 +3226,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
//This shows up if there's a problem
|
||||
// TODO: put all these in a single method or something
|
||||
HandlePlatformMenus();
|
||||
_stateSlots.Clear();
|
||||
|
@ -3288,6 +3292,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
// whats the difference between these two methods??
|
||||
// its very tricky. rename to be more clear or combine them.
|
||||
// This gets called whenever a core related thing is changed.
|
||||
// Like reboot core.
|
||||
private void CloseGame(bool clearSram = false)
|
||||
{
|
||||
if (clearSram)
|
||||
|
@ -3311,21 +3317,20 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
StopMovie(true);
|
||||
}
|
||||
|
||||
|
||||
Global.Emulator.Dispose();
|
||||
Global.CoreComm = CreateCoreComm();
|
||||
CoreFileProvider.SyncCoreCommInputSignals();
|
||||
Global.Emulator = new NullEmulator(Global.CoreComm);
|
||||
Global.ActiveController = Global.NullControls;
|
||||
Global.AutoFireController = Global.AutofireNullControls;
|
||||
|
||||
RewireSound();
|
||||
RebootStatusBarIcon.Visible = false;
|
||||
}
|
||||
|
||||
public void CloseRom(bool clearSram = false)
|
||||
{
|
||||
//This gets called after Close Game gets called.
|
||||
//Tested with NESHawk and SMB3 (U)
|
||||
if (GlobalWin.Tools.AskSave())
|
||||
{
|
||||
CloseGame(clearSram);
|
||||
|
@ -3335,7 +3340,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
Global.Game = GameInfo.NullInstance;
|
||||
|
||||
GlobalWin.Tools.Restart();
|
||||
|
||||
RewireSound();
|
||||
Global.Rewinder.ResetRewindBuffer();
|
||||
Text = "BizHawk" + (VersionInfo.DeveloperBuild ? " (interim) " : string.Empty);
|
||||
|
|
Loading…
Reference in New Issue