From 18a7b32c8d6721c42067b63b0e0bb09cd715cc36 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Mon, 16 Sep 2024 00:36:12 -0700 Subject: [PATCH] make virtualpad not throw with stella --- .../vpads_schemata/A26Schema.cs | 64 ++++++++++++++++--- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/src/BizHawk.Emulation.Cores/vpads_schemata/A26Schema.cs b/src/BizHawk.Emulation.Cores/vpads_schemata/A26Schema.cs index f11bd51f2f..5179aa7ba5 100644 --- a/src/BizHawk.Emulation.Cores/vpads_schemata/A26Schema.cs +++ b/src/BizHawk.Emulation.Cores/vpads_schemata/A26Schema.cs @@ -3,6 +3,10 @@ using System.Drawing; using BizHawk.Emulation.Common; using BizHawk.Emulation.Cores.Atari.Atari2600; +using BizHawk.Emulation.Cores.Atari.Stella; + +using Atari2600ControllerTypes = BizHawk.Emulation.Cores.Atari.Atari2600.Atari2600ControllerTypes; +using StellaControllerTypes = BizHawk.Emulation.Cores.Atari.Stella.Atari2600ControllerTypes; namespace BizHawk.Emulation.Cores { @@ -11,18 +15,44 @@ namespace BizHawk.Emulation.Cores { public IEnumerable GetPadSchemas(IEmulator core, Action showMessageBox) { - var ss = ((Atari2600)core).GetSyncSettings().Clone(); - - var port1 = PadSchemaFromSetting(ss.Port1, 1); - if (port1 != null) + switch (core) { - yield return port1; - } + case Atari2600 atari2600: + { + var ss = atari2600.GetSyncSettings(); - var port2 = PadSchemaFromSetting(ss.Port2, 2); - if (port2 != null) - { - yield return port2; + var port1 = PadSchemaFromSetting(ss.Port1, 1); + if (port1 != null) + { + yield return port1; + } + + var port2 = PadSchemaFromSetting(ss.Port2, 2); + if (port2 != null) + { + yield return port2; + } + + break; + } + case Stella stella: + { + var ss = stella.GetSyncSettings(); + + var port1 = PadSchemaFromSetting(ss.Port1, 1); + if (port1 != null) + { + yield return port1; + } + + var port2 = PadSchemaFromSetting(ss.Port2, 2); + if (port2 != null) + { + yield return port2; + } + + break; + } } yield return ConsoleButtons(); @@ -42,6 +72,20 @@ namespace BizHawk.Emulation.Cores }; } + private static PadSchema PadSchemaFromSetting(StellaControllerTypes type, int controller) + { + return type switch + { + StellaControllerTypes.Unplugged => null, + StellaControllerTypes.Joystick => StandardController(controller), + StellaControllerTypes.Paddle => PaddleController(controller), + StellaControllerTypes.BoostGrip => BoostGripController(controller), + StellaControllerTypes.Driving => DrivingController(controller), + StellaControllerTypes.Keyboard => KeyboardController(controller), + _ => null + }; + } + private static PadSchema StandardController(int controller) { return new PadSchema