Minor refactors to system-specific helpers in `MainForm`

This commit is contained in:
YoshiRulz 2024-07-14 05:31:13 +10:00
parent b2184e46d5
commit e49c4689de
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
3 changed files with 131 additions and 204 deletions

View File

@ -1288,19 +1288,13 @@ namespace BizHawk.Client.EmuHawk
} }
private void NesPpuViewerMenuItem_Click(object sender, EventArgs e) private void NesPpuViewerMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<NesPPU>();
Tools.Load<NesPPU>();
}
private void NesNametableViewerMenuItem_Click(object sender, EventArgs e) private void NesNametableViewerMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<NESNameTableViewer>();
Tools.Load<NESNameTableViewer>();
}
private void MusicRipperMenuItem_Click(object sender, EventArgs e) private void MusicRipperMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<NESMusicRipper>();
Tools.Load<NESMusicRipper>();
}
private DialogResult OpenNesHawkGraphicsSettingsDialog(ISettingsAdapter settable) private DialogResult OpenNesHawkGraphicsSettingsDialog(ISettingsAdapter settable)
{ {
@ -1315,20 +1309,16 @@ namespace BizHawk.Client.EmuHawk
} }
private void NesGraphicSettingsMenuItem_Click(object sender, EventArgs e) private void NesGraphicSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
NES => OpenNesHawkGraphicsSettingsDialog(GetSettingsAdapterForLoadedCore<NES>()), NES => OpenNesHawkGraphicsSettingsDialog(GetSettingsAdapterForLoadedCore<NES>()),
SubNESHawk => OpenNesHawkGraphicsSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>()), SubNESHawk => OpenNesHawkGraphicsSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>()),
QuickNES => OpenQuickNesGraphicsSettingsDialog(GetSettingsAdapterForLoadedCore<QuickNES>()), QuickNES => OpenQuickNesGraphicsSettingsDialog(GetSettingsAdapterForLoadedCore<QuickNES>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void NesSoundChannelsMenuItem_Click(object sender, EventArgs e) private void NesSoundChannelsMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<NESSoundConfig>();
Tools.Load<NESSoundConfig>();
}
private DialogResult OpenNesHawkVSSettingsDialog(ISettingsAdapter settable) private DialogResult OpenNesHawkVSSettingsDialog(ISettingsAdapter settable)
{ {
@ -1337,14 +1327,12 @@ namespace BizHawk.Client.EmuHawk
} }
private void VsSettingsMenuItem_Click(object sender, EventArgs e) private void VsSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
NES { IsVS: true } => OpenNesHawkVSSettingsDialog(GetSettingsAdapterForLoadedCore<NES>()), NES { IsVS: true } => OpenNesHawkVSSettingsDialog(GetSettingsAdapterForLoadedCore<NES>()),
SubNESHawk { IsVs: true } => OpenNesHawkVSSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>()), SubNESHawk { IsVs: true } => OpenNesHawkVSSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void FdsEjectDiskMenuItem_Click(object sender, EventArgs e) private void FdsEjectDiskMenuItem_Click(object sender, EventArgs e)
{ {
@ -1389,15 +1377,13 @@ namespace BizHawk.Client.EmuHawk
ignoreSettings: true); ignoreSettings: true);
private void NesControllerSettingsMenuItem_Click(object sender, EventArgs e) private void NesControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
NES => OpenNesHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<NES>()), NES => OpenNesHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<NES>()),
SubNESHawk => OpenNesHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>()), SubNESHawk => OpenNesHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>()),
QuickNES => OpenQuickNesGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<QuickNES>()), QuickNES => OpenQuickNesGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<QuickNES>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenNesHawkAdvancedSettingsDialog(ISettingsAdapter settable, bool hasMapperProperties) private DialogResult OpenNesHawkAdvancedSettingsDialog(ISettingsAdapter settable, bool hasMapperProperties)
{ {
@ -1406,24 +1392,18 @@ namespace BizHawk.Client.EmuHawk
} }
private void MovieSettingsMenuItem_Click(object sender, EventArgs e) private void MovieSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
NES nesHawk => OpenNesHawkAdvancedSettingsDialog(GetSettingsAdapterForLoadedCore<NES>(), nesHawk.HasMapperProperties), NES nesHawk => OpenNesHawkAdvancedSettingsDialog(GetSettingsAdapterForLoadedCore<NES>(), nesHawk.HasMapperProperties),
SubNESHawk subNESHawk => OpenNesHawkAdvancedSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>(), subNESHawk.HasMapperProperties), SubNESHawk subNESHawk => OpenNesHawkAdvancedSettingsDialog(GetSettingsAdapterForLoadedCore<SubNESHawk>(), subNESHawk.HasMapperProperties),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void BarcodeReaderMenuItem_Click(object sender, EventArgs e) private void BarcodeReaderMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<BarcodeEntry>();
Tools.Load<BarcodeEntry>();
}
private void Ti83KeypadMenuItem_Click(object sender, EventArgs e) private void Ti83KeypadMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<TI83KeyPad>();
Tools.Load<TI83KeyPad>();
}
private void Ti83LoadTIFileMenuItem_Click(object sender, EventArgs e) private void Ti83LoadTIFileMenuItem_Click(object sender, EventArgs e)
{ {
@ -1436,16 +1416,21 @@ namespace BizHawk.Client.EmuHawk
try try
{ {
ti83.LinkPort.SendFileToCalc(File.OpenRead(result), true); ti83.LinkPort.SendFileToCalc(File.OpenRead(result), true);
return;
} }
catch (IOException ex) catch (IOException ex)
{ {
var message = if (this.ShowMessageBox3(
$"Invalid file format. Reason: {ex.Message} \nForce transfer? This may cause the calculator to crash."; owner: null,
if (this.ShowMessageBox3(owner: null, message, "Upload Failed", EMsgBoxIcon.Question) == true) icon: EMsgBoxIcon.Question,
caption: "Upload Failed",
text: $"Invalid file format. Reason: {ex.Message} \nForce transfer? This may cause the calculator to crash.")
is not true)
{ {
ti83.LinkPort.SendFileToCalc(File.OpenRead(result), false); return;
} }
} }
ti83.LinkPort.SendFileToCalc(File.OpenRead(result), false);
} }
private DialogResult OpenTI83PaletteSettingsDialog(ISettingsAdapter settable) private DialogResult OpenTI83PaletteSettingsDialog(ISettingsAdapter settable)
@ -1466,11 +1451,8 @@ namespace BizHawk.Client.EmuHawk
} }
private void A7800SubMenu_DropDownOpened(object sender, EventArgs e) private void A7800SubMenu_DropDownOpened(object sender, EventArgs e)
{ => A7800ControllerSettingsMenuItem.Enabled = A7800FilterSettingsMenuItem.Enabled
A7800ControllerSettingsMenuItem.Enabled
= A7800FilterSettingsMenuItem.Enabled
= MovieSession.Movie.NotActive(); = MovieSession.Movie.NotActive();
}
private DialogResult OpenA7800HawkGamepadSettingsDialog(ISettingsAdapter settable) private DialogResult OpenA7800HawkGamepadSettingsDialog(ISettingsAdapter settable)
{ {
@ -1479,13 +1461,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void A7800ControllerSettingsMenuItem_Click(object sender, EventArgs e) private void A7800ControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
A7800Hawk => OpenA7800HawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<A7800Hawk>()), A7800Hawk => OpenA7800HawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<A7800Hawk>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenA7800HawkFilterSettingsDialog(ISettingsAdapter settable) private DialogResult OpenA7800HawkFilterSettingsDialog(ISettingsAdapter settable)
{ {
@ -1494,13 +1474,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void A7800FilterSettingsMenuItem_Click(object sender, EventArgs e) private void A7800FilterSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
A7800Hawk => OpenA7800HawkFilterSettingsDialog(GetSettingsAdapterForLoadedCore<A7800Hawk>()), A7800Hawk => OpenA7800HawkFilterSettingsDialog(GetSettingsAdapterForLoadedCore<A7800Hawk>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenGambatteSettingsDialog(ISettingsAdapter settable) private DialogResult OpenGambatteSettingsDialog(ISettingsAdapter settable)
=> GBPrefs.DoGBPrefsDialog(Config, this, Game, MovieSession, settable); => GBPrefs.DoGBPrefsDialog(Config, this, Game, MovieSession, settable);
@ -1515,8 +1493,7 @@ namespace BizHawk.Client.EmuHawk
=> OpenGenericCoreConfigFor<SubGBHawk>(CoreNames.SubGbHawk + " Settings"); => OpenGenericCoreConfigFor<SubGBHawk>(CoreNames.SubGbHawk + " Settings");
private void GbCoreSettingsMenuItem_Click(object sender, EventArgs e) private void GbCoreSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
Gameboy => OpenGambatteSettingsDialog(GetSettingsAdapterForLoadedCore<Gameboy>()), Gameboy => OpenGambatteSettingsDialog(GetSettingsAdapterForLoadedCore<Gameboy>()),
GBHawk => OpenGBHawkSettingsDialog(), GBHawk => OpenGBHawkSettingsDialog(),
@ -1524,7 +1501,6 @@ namespace BizHawk.Client.EmuHawk
SubGBHawk => OpenSubGBHawkSettingsDialog(), SubGBHawk => OpenSubGBHawkSettingsDialog(),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenSameBoyPaletteSettingsDialog(ISettingsAdapter settable) private DialogResult OpenSameBoyPaletteSettingsDialog(ISettingsAdapter settable)
{ {
@ -1533,28 +1509,20 @@ namespace BizHawk.Client.EmuHawk
} }
private void SameboyColorChooserMenuItem_Click(object sender, EventArgs e) private void SameboyColorChooserMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
Sameboy => OpenSameBoyPaletteSettingsDialog(GetSettingsAdapterForLoadedCore<Sameboy>()), Sameboy => OpenSameBoyPaletteSettingsDialog(GetSettingsAdapterForLoadedCore<Sameboy>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void GbGpuViewerMenuItem_Click(object sender, EventArgs e) private void GbGpuViewerMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<GbGpuView>();
Tools.Load<GbGpuView>();
}
private void GbPrinterViewerMenuItem_Click(object sender, EventArgs e) private void GbPrinterViewerMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<GBPrinterView>();
Tools.Load<GBPrinterView>();
}
private void PsxSubMenu_DropDownOpened(object sender, EventArgs e) private void PsxSubMenu_DropDownOpened(object sender, EventArgs e)
{ => PSXControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive();
PSXControllerSettingsMenuItem.Enabled = MovieSession.Movie.NotActive();
}
private DialogResult OpenOctoshockGamepadSettingsDialog(ISettingsAdapter settable) private DialogResult OpenOctoshockGamepadSettingsDialog(ISettingsAdapter settable)
{ {
@ -1563,13 +1531,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void PsxControllerSettingsMenuItem_Click(object sender, EventArgs e) private void PsxControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
Octoshock => OpenOctoshockGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<Octoshock>()), Octoshock => OpenOctoshockGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<Octoshock>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenOctoshockSettingsDialog(ISettingsAdapter settable, OctoshockDll.eVidStandard vidStandard, Size vidSize) private DialogResult OpenOctoshockSettingsDialog(ISettingsAdapter settable, OctoshockDll.eVidStandard vidStandard, Size vidSize)
=> PSXOptions.DoSettingsDialog(Config, this, settable, vidStandard, vidSize); => PSXOptions.DoSettingsDialog(Config, this, settable, vidStandard, vidSize);
@ -1585,9 +1551,7 @@ namespace BizHawk.Client.EmuHawk
} }
private void PsxDiscControlsMenuItem_Click(object sender, EventArgs e) private void PsxDiscControlsMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<VirtualpadTool>().ScrollToPadSchema("Console");
Tools.Load<VirtualpadTool>().ScrollToPadSchema("Console");
}
private void PsxHashDiscsMenuItem_Click(object sender, EventArgs e) private void PsxHashDiscsMenuItem_Click(object sender, EventArgs e)
{ {
@ -1597,9 +1561,7 @@ namespace BizHawk.Client.EmuHawk
} }
private void SnesSubMenu_DropDownOpened(object sender, EventArgs e) private void SnesSubMenu_DropDownOpened(object sender, EventArgs e)
{ => SNESControllerConfigurationMenuItem.Enabled = MovieSession.Movie.NotActive();
SNESControllerConfigurationMenuItem.Enabled = MovieSession.Movie.NotActive();
}
private DialogResult OpenOldBSNESGamepadSettingsDialog(ISettingsAdapter settable) private DialogResult OpenOldBSNESGamepadSettingsDialog(ISettingsAdapter settable)
{ {
@ -1614,20 +1576,16 @@ namespace BizHawk.Client.EmuHawk
} }
private void SNESControllerConfigurationMenuItem_Click(object sender, EventArgs e) private void SNESControllerConfigurationMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
LibsnesCore => OpenOldBSNESGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<LibsnesCore>()), LibsnesCore => OpenOldBSNESGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<LibsnesCore>()),
BsnesCore => OpenBSNESGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<BsnesCore>()), BsnesCore => OpenBSNESGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<BsnesCore>()),
SubBsnesCore => OpenBSNESGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<SubBsnesCore>()), SubBsnesCore => OpenBSNESGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<SubBsnesCore>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void SnesGfxDebuggerMenuItem_Click(object sender, EventArgs e) private void SnesGfxDebuggerMenuItem_Click(object sender, EventArgs e)
{ => Tools.Load<SNESGraphicsDebugger>();
Tools.Load<SNESGraphicsDebugger>();
}
private DialogResult OpenOldBSNESSettingsDialog(ISettingsAdapter settable) private DialogResult OpenOldBSNESSettingsDialog(ISettingsAdapter settable)
=> SNESOptions.DoSettingsDialog(this, settable); => SNESOptions.DoSettingsDialog(this, settable);
@ -1636,15 +1594,13 @@ namespace BizHawk.Client.EmuHawk
=> BSNESOptions.DoSettingsDialog(this, settable); => BSNESOptions.DoSettingsDialog(this, settable);
private void SnesOptionsMenuItem_Click(object sender, EventArgs e) private void SnesOptionsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
LibsnesCore => OpenOldBSNESSettingsDialog(GetSettingsAdapterForLoadedCore<LibsnesCore>()), LibsnesCore => OpenOldBSNESSettingsDialog(GetSettingsAdapterForLoadedCore<LibsnesCore>()),
BsnesCore => OpenBSNESSettingsDialog(GetSettingsAdapterForLoadedCore<BsnesCore>()), BsnesCore => OpenBSNESSettingsDialog(GetSettingsAdapterForLoadedCore<BsnesCore>()),
SubBsnesCore => OpenBSNESSettingsDialog(GetSettingsAdapterForLoadedCore<SubBsnesCore>()), SubBsnesCore => OpenBSNESSettingsDialog(GetSettingsAdapterForLoadedCore<SubBsnesCore>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void ColecoSubMenu_DropDownOpened(object sender, EventArgs e) private void ColecoSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
@ -1686,28 +1642,23 @@ namespace BizHawk.Client.EmuHawk
} }
private void ColecoControllerSettingsMenuItem_Click(object sender, EventArgs e) private void ColecoControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
ColecoVision => OpenColecoHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<ColecoVision>()), ColecoVision => OpenColecoHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<ColecoVision>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void N64SubMenu_DropDownOpened(object sender, EventArgs e) private void N64SubMenu_DropDownOpened(object sender, EventArgs e)
{ {
N64PluginSettingsMenuItem.Enabled = N64PluginSettingsMenuItem.Enabled = N64ControllerSettingsMenuItem.Enabled
N64ControllerSettingsMenuItem.Enabled = = N64ExpansionSlotMenuItem.Enabled
N64ExpansionSlotMenuItem.Enabled = = MovieSession.Movie.NotActive();
MovieSession.Movie.NotActive();
N64CircularAnalogRangeMenuItem.Checked = Config.N64UseCircularAnalogConstraint; N64CircularAnalogRangeMenuItem.Checked = Config.N64UseCircularAnalogConstraint;
var mupen = (N64) Emulator;
var s = ((N64)Emulator).GetSettings(); var s = mupen.GetSettings();
MupenStyleLagMenuItem.Checked = s.UseMupenStyleLag; MupenStyleLagMenuItem.Checked = s.UseMupenStyleLag;
N64ExpansionSlotMenuItem.Checked = mupen.UsingExpansionSlot;
N64ExpansionSlotMenuItem.Checked = ((N64)Emulator).UsingExpansionSlot; N64ExpansionSlotMenuItem.Enabled = !mupen.IsOverridingUserExpansionSlotSetting;
N64ExpansionSlotMenuItem.Enabled = !((N64)Emulator).IsOverridingUserExpansionSlotSetting;
} }
private DialogResult OpenMupen64PlusGraphicsSettingsDialog(ISettingsAdapter settable) private DialogResult OpenMupen64PlusGraphicsSettingsDialog(ISettingsAdapter settable)
@ -1732,13 +1683,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void N64ControllerSettingsMenuItem_Click(object sender, EventArgs e) private void N64ControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
N64 => OpenMupen64PlusGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<N64>()), N64 => OpenMupen64PlusGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<N64>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void N64CircularAnalogRangeMenuItem_Click(object sender, EventArgs e) private void N64CircularAnalogRangeMenuItem_Click(object sender, EventArgs e)
=> Config.N64UseCircularAnalogConstraint = !Config.N64UseCircularAnalogConstraint; => Config.N64UseCircularAnalogConstraint = !Config.N64UseCircularAnalogConstraint;
@ -1777,13 +1726,11 @@ namespace BizHawk.Client.EmuHawk
=> GBLPrefs.DoGBLPrefsDialog(Config, this, Game, MovieSession, settable); => GBLPrefs.DoGBLPrefsDialog(Config, this, Game, MovieSession, settable);
private void GblSettingsMenuItem_Click(object sender, EventArgs e) private void GblSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
GambatteLink => OpenGambatteLinkSettingsDialog(GetSettingsAdapterForLoadedCore<GambatteLink>()), GambatteLink => OpenGambatteLinkSettingsDialog(GetSettingsAdapterForLoadedCore<GambatteLink>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenGenericCoreConfigFor<T>(string title) private DialogResult OpenGenericCoreConfigFor<T>(string title)
where T : IEmulator where T : IEmulator
@ -1799,13 +1746,11 @@ namespace BizHawk.Client.EmuHawk
=> OpenGenericCoreConfigFor<AppleII>(CoreNames.Virtu + " Settings"); => OpenGenericCoreConfigFor<AppleII>(CoreNames.Virtu + " Settings");
private void AppleIISettingsMenuItem_Click(object sender, EventArgs e) private void AppleIISettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
AppleII => OpenVirtuSettingsDialog(), AppleII => OpenVirtuSettingsDialog(),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void AppleSubMenu_DropDownOpened(object sender, EventArgs e) private void AppleSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
@ -1869,13 +1814,11 @@ namespace BizHawk.Client.EmuHawk
=> OpenGenericCoreConfigFor<C64>(CoreNames.C64Hawk + " Settings"); => OpenGenericCoreConfigFor<C64>(CoreNames.C64Hawk + " Settings");
private void C64SettingsMenuItem_Click(object sender, EventArgs e) private void C64SettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
C64 => OpenC64HawkSettingsDialog(), C64 => OpenC64HawkSettingsDialog(),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void IntVSubMenu_DropDownOpened(object sender, EventArgs e) private void IntVSubMenu_DropDownOpened(object sender, EventArgs e)
{ {
@ -1889,13 +1832,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void IntVControllerSettingsMenuItem_Click(object sender, EventArgs e) private void IntVControllerSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
Intellivision => OpenIntelliHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<Intellivision>()), Intellivision => OpenIntelliHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<Intellivision>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenZXHawkGamepadSettingsDialog(ISettingsAdapter settable) private DialogResult OpenZXHawkGamepadSettingsDialog(ISettingsAdapter settable)
{ {
@ -1904,13 +1845,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void ZXSpectrumControllerConfigurationMenuItem_Click(object sender, EventArgs e) private void ZXSpectrumControllerConfigurationMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
ZXSpectrum => OpenZXHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()), ZXSpectrum => OpenZXHawkGamepadSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenZXHawkSyncSettingsDialog(ISettingsAdapter settable) private DialogResult OpenZXHawkSyncSettingsDialog(ISettingsAdapter settable)
{ {
@ -1919,13 +1858,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void ZXSpectrumCoreEmulationSettingsMenuItem_Click(object sender, EventArgs e) private void ZXSpectrumCoreEmulationSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
ZXSpectrum => OpenZXHawkSyncSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()), ZXSpectrum => OpenZXHawkSyncSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenZXHawkSettingsDialog(ISettingsAdapter settable) private DialogResult OpenZXHawkSettingsDialog(ISettingsAdapter settable)
{ {
@ -1934,13 +1871,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void ZXSpectrumNonSyncSettingsMenuItem_Click(object sender, EventArgs e) private void ZXSpectrumNonSyncSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
ZXSpectrum => OpenZXHawkSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()), ZXSpectrum => OpenZXHawkSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenZXHawkAudioSettingsDialog(ISettingsAdapter settable) private DialogResult OpenZXHawkAudioSettingsDialog(ISettingsAdapter settable)
{ {
@ -1949,13 +1884,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void ZXSpectrumAudioSettingsMenuItem_Click(object sender, EventArgs e) private void ZXSpectrumAudioSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
ZXSpectrum => OpenZXHawkAudioSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()), ZXSpectrum => OpenZXHawkAudioSettingsDialog(GetSettingsAdapterForLoadedCore<ZXSpectrum>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void ZXSpectrumMediaMenuItem_DropDownOpened(object sender, EventArgs e) private void ZXSpectrumMediaMenuItem_DropDownOpened(object sender, EventArgs e)
{ {
@ -2029,6 +1962,7 @@ namespace BizHawk.Client.EmuHawk
} }
catch (Exception) catch (Exception)
{ {
// ignored
} }
} }
@ -2039,13 +1973,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void AmstradCpcCoreEmulationSettingsMenuItem_Click(object sender, EventArgs e) private void AmstradCpcCoreEmulationSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
AmstradCPC => OpenCPCHawkSyncSettingsDialog(GetSettingsAdapterForLoadedCore<AmstradCPC>()), AmstradCPC => OpenCPCHawkSyncSettingsDialog(GetSettingsAdapterForLoadedCore<AmstradCPC>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private DialogResult OpenCPCHawkAudioSettingsDialog(ISettingsAdapter settable) private DialogResult OpenCPCHawkAudioSettingsDialog(ISettingsAdapter settable)
{ {
@ -2054,13 +1986,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void AmstradCpcAudioSettingsMenuItem_Click(object sender, EventArgs e) private void AmstradCpcAudioSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
AmstradCPC => OpenCPCHawkAudioSettingsDialog(GetSettingsAdapterForLoadedCore<AmstradCPC>()), AmstradCPC => OpenCPCHawkAudioSettingsDialog(GetSettingsAdapterForLoadedCore<AmstradCPC>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void AmstradCpcMediaMenuItem_DropDownOpened(object sender, EventArgs e) private void AmstradCpcMediaMenuItem_DropDownOpened(object sender, EventArgs e)
{ {
@ -2124,13 +2054,11 @@ namespace BizHawk.Client.EmuHawk
} }
private void AmstradCpcNonSyncSettingsMenuItem_Click(object sender, EventArgs e) private void AmstradCpcNonSyncSettingsMenuItem_Click(object sender, EventArgs e)
{ => _ = Emulator switch
_ = Emulator switch
{ {
AmstradCPC => OpenCPCHawkSettingsDialog(GetSettingsAdapterForLoadedCore<AmstradCPC>()), AmstradCPC => OpenCPCHawkSettingsDialog(GetSettingsAdapterForLoadedCore<AmstradCPC>()),
_ => DialogResult.None _ => DialogResult.None
}; };
}
private void HelpSubMenu_DropDownOpened(object sender, EventArgs e) private void HelpSubMenu_DropDownOpened(object sender, EventArgs e)
{ {

View File

@ -1,4 +1,6 @@
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Consoles.Nintendo.NDS; using BizHawk.Emulation.Cores.Consoles.Nintendo.NDS;
using BizHawk.Emulation.Cores.Nintendo.Gameboy; using BizHawk.Emulation.Cores.Nintendo.Gameboy;
@ -21,23 +23,6 @@ namespace BizHawk.Client.EmuHawk
Config.SaveSlot = slot; Config.SaveSlot = slot;
UpdateStatusSlots(); UpdateStatusSlots();
} }
void ToggleGambatteSyncSetting(
string name,
Func<Gameboy.GambatteSyncSettings, bool> getter,
Action<Gameboy.GambatteSyncSettings, bool> setter)
{
if (Emulator is not Gameboy gb) return;
if (gb.DeterministicEmulation)
{
AddOnScreenMessage($"{name} cannot be toggled during movie recording.");
return;
}
var ss = gb.GetSyncSettings();
var newState = !getter(ss);
setter(ss, newState);
gb.PutSyncSettings(ss);
AddOnScreenMessage($"{name} toggled {(newState ? "on" : "off")}");
}
switch (trigger) switch (trigger)
{ {
@ -488,22 +473,13 @@ namespace BizHawk.Client.EmuHawk
// GB // GB
case "GB Toggle BG": case "GB Toggle BG":
ToggleGambatteSyncSetting( GB_ToggleBackgroundLayer();
"BG",
static ss => ss.DisplayBG,
static (ss, newState) => ss.DisplayBG = newState);
break; break;
case "GB Toggle Obj": case "GB Toggle Obj":
ToggleGambatteSyncSetting( GB_ToggleObjectLayer();
"OBJ",
static ss => ss.DisplayOBJ,
static (ss, newState) => ss.DisplayOBJ = newState);
break; break;
case "GB Toggle Window": case "GB Toggle Window":
ToggleGambatteSyncSetting( GB_ToggleWindowLayer();
"WIN",
static ss => ss.DisplayWindow,
static (ss, newState) => ss.DisplayWindow = newState);
break; break;
// Analog // Analog
@ -534,64 +510,89 @@ namespace BizHawk.Client.EmuHawk
// DS // DS
case "Next Screen Layout": case "Next Screen Layout":
IncrementDSLayout(1); NDS_IncrementLayout(1);
break; break;
case "Previous Screen Layout": case "Previous Screen Layout":
IncrementDSLayout(-1); NDS_IncrementLayout(-1);
break; break;
case "Screen Rotate": case "Screen Rotate":
IncrementDSScreenRotate(); NDS_IncrementScreenRotate();
break; break;
} }
return true; return true;
} }
private void IncrementDSScreenRotate() [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void GB_ToggleGambatteSyncSetting(
string name,
Func<Gameboy.GambatteSyncSettings, bool> getter,
Action<Gameboy.GambatteSyncSettings, bool> setter)
{ {
if (Emulator is NDS ds) if (Emulator is not Gameboy gb) return;
if (gb.DeterministicEmulation)
{ {
var settings = ds.GetSettings(); AddOnScreenMessage($"{name} cannot be toggled during movie recording.");
settings.ScreenRotation = settings.ScreenRotation switch return;
{
NDS.ScreenRotationKind.Rotate0 => settings.ScreenRotation = NDS.ScreenRotationKind.Rotate90,
NDS.ScreenRotationKind.Rotate90 => settings.ScreenRotation = NDS.ScreenRotationKind.Rotate180,
NDS.ScreenRotationKind.Rotate180 => settings.ScreenRotation = NDS.ScreenRotationKind.Rotate270,
NDS.ScreenRotationKind.Rotate270 => settings.ScreenRotation = NDS.ScreenRotationKind.Rotate0,
_ => settings.ScreenRotation
};
ds.PutSettings(settings);
AddOnScreenMessage($"Screen rotation to {settings.ScreenRotation}");
FrameBufferResized();
} }
var ss = gb.GetSyncSettings();
var newState = !getter(ss);
setter(ss, newState);
gb.PutSyncSettings(ss);
AddOnScreenMessage($"{name} toggled {(newState ? "on" : "off")}");
} }
private void IncrementDSLayout(int delta) private void GB_ToggleBackgroundLayer()
=> GB_ToggleGambatteSyncSetting(
"BG",
static ss => ss.DisplayBG,
static (ss, newState) => ss.DisplayBG = newState);
private void GB_ToggleObjectLayer()
=> GB_ToggleGambatteSyncSetting(
"OBJ",
static ss => ss.DisplayOBJ,
static (ss, newState) => ss.DisplayOBJ = newState);
private void GB_ToggleWindowLayer()
=> GB_ToggleGambatteSyncSetting(
"WIN",
static ss => ss.DisplayWindow,
static (ss, newState) => ss.DisplayWindow = newState);
private void NDS_IncrementScreenRotate()
{ {
bool decrement = delta == -1; if (Emulator is not NDS ds) return;
if (Emulator is NDS ds)
var settings = ds.GetSettings();
var next = settings.ScreenRotation switch
{ {
var settings = ds.GetSettings(); NDS.ScreenRotationKind.Rotate0 => NDS.ScreenRotationKind.Rotate90,
var num = (int)settings.ScreenLayout; NDS.ScreenRotationKind.Rotate90 => NDS.ScreenRotationKind.Rotate180,
if (decrement) NDS.ScreenRotationKind.Rotate180 => NDS.ScreenRotationKind.Rotate270,
{ NDS.ScreenRotationKind.Rotate270 => NDS.ScreenRotationKind.Rotate0,
num--; _ => settings.ScreenRotation
} };
else settings.ScreenRotation = next;
{ ds.PutSettings(settings);
num++; AddOnScreenMessage($"Screen rotation to {next}");
} FrameBufferResized();
}
var next = (NDS.ScreenLayoutKind)Enum.Parse(typeof(NDS.ScreenLayoutKind), num.ToString()); private void NDS_IncrementLayout(int delta)
if (typeof(NDS.ScreenLayoutKind).IsEnumDefined(next)) {
{ if (Emulator is not NDS ds) return;
settings.ScreenLayout = next;
ds.PutSettings(settings); var settings = ds.GetSettings();
AddOnScreenMessage($"Screen layout to {next}"); var t = typeof(NDS.ScreenLayoutKind);
FrameBufferResized(); //TODO WTF is this --yoshi
} var next = (NDS.ScreenLayoutKind) Enum.Parse(t, ((int) settings.ScreenLayout + delta).ToString());
} if (!t.IsEnumDefined(next)) return;
settings.ScreenLayout = next;
ds.PutSettings(settings);
AddOnScreenMessage($"Screen layout to {next}");
FrameBufferResized();
} }
// Determines if the value is a hotkey that would be handled outside of the CheckHotkey method // Determines if the value is a hotkey that would be handled outside of the CheckHotkey method

View File

@ -1609,11 +1609,7 @@ namespace BizHawk.Client.EmuHawk
private void SNES_ToggleBg(int layer) private void SNES_ToggleBg(int layer)
{ {
if (Emulator is not (BsnesCore or SubBsnesCore or LibsnesCore or Snes9x) || !1.RangeTo(4).Contains(layer)) if (layer is < 1 or > 4) return; // should this throw?
{
return;
}
bool result = false; bool result = false;
switch (Emulator) switch (Emulator)
{ {
@ -1684,6 +1680,8 @@ namespace BizHawk.Client.EmuHawk
snes9X.PutSettings(s); snes9X.PutSettings(s);
break; break;
} }
default:
return;
} }
AddOnScreenMessage($"BG {layer} Layer {(result ? "On" : "Off")}"); AddOnScreenMessage($"BG {layer} Layer {(result ? "On" : "Off")}");
@ -1691,11 +1689,7 @@ namespace BizHawk.Client.EmuHawk
private void SNES_ToggleObj(int layer) private void SNES_ToggleObj(int layer)
{ {
if (!(Emulator is LibsnesCore || Emulator is Snes9x) || !1.RangeTo(4).Contains(layer)) if (layer is < 1 or > 4) return; // should this throw?
{
return;
}
bool result = false; bool result = false;
if (Emulator is LibsnesCore bsnes) if (Emulator is LibsnesCore bsnes)
{ {
@ -1727,6 +1721,10 @@ namespace BizHawk.Client.EmuHawk
snes9X.PutSettings(s); snes9X.PutSettings(s);
AddOnScreenMessage($"Sprite {layer} Layer {(result ? "On" : "Off")}"); AddOnScreenMessage($"Sprite {layer} Layer {(result ? "On" : "Off")}");
} }
else
{
return;
}
} }
public bool RunLibretroCoreChooser() public bool RunLibretroCoreChooser()