From 699fc8d198a25cc119af6c0de009815e7c66e8e5 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Wed, 13 Nov 2024 16:15:02 +1000 Subject: [PATCH] Move `Bk2MnemonicLookup` to `BizHawk.Emulation.Common` fixes a0800862b (PR #3782) --- .../inputAdapters/InputManager.cs | 2 +- src/BizHawk.Client.Common/movie/import/DsmImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/FcmImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/Fm2Import.cs | 6 +++--- src/BizHawk.Client.Common/movie/import/FmvImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/GmvImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/LsmvImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/Mc2Import.cs | 2 +- src/BizHawk.Client.Common/movie/import/MmvImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/PjmImport.cs | 4 ++-- src/BizHawk.Client.Common/movie/import/SmvImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/VbmImport.cs | 2 +- src/BizHawk.Client.Common/movie/import/YmvImport.cs | 2 +- .../movie/import/bkm/BkmControllerAdapter.cs | 2 +- .../Base Implementations}/Bk2MnemonicLookup.cs | 11 +++++------ .../Base Implementations/ControllerDefinition.cs | 7 ++++--- .../Libretro/Libretro.IEmulator.cs | 2 +- .../Client.Common/Display/InputDisplayTests.cs | 4 ++-- .../Client.Common/Movie/LogGeneratorTests.cs | 6 +++--- 19 files changed, 32 insertions(+), 32 deletions(-) rename src/{BizHawk.Client.Common/movie/bk2 => BizHawk.Emulation.Common/Base Implementations}/Bk2MnemonicLookup.cs (98%) diff --git a/src/BizHawk.Client.Common/inputAdapters/InputManager.cs b/src/BizHawk.Client.Common/inputAdapters/InputManager.cs index 823dcc8495..afc8474a5d 100644 --- a/src/BizHawk.Client.Common/inputAdapters/InputManager.cs +++ b/src/BizHawk.Client.Common/inputAdapters/InputManager.cs @@ -52,7 +52,7 @@ namespace BizHawk.Client.Common public void SyncControls(IEmulator emulator, IMovieSession session, Config config) { var def = emulator.ControllerDefinition; - def.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(emulator.SystemId)); + def.BuildMnemonicsCache(emulator.SystemId); ActiveController = BindToDefinition(def, config.AllTrollers, config.AllTrollersAnalog, config.AllTrollersFeedbacks); AutoFireController = BindToDefinitionAF(emulator, config.AllTrollersAutoFire, config.AutofireOn, config.AutofireOff); diff --git a/src/BizHawk.Client.Common/movie/import/DsmImport.cs b/src/BizHawk.Client.Common/movie/import/DsmImport.cs index eccc3e60f0..bd2a77aed3 100644 --- a/src/BizHawk.Client.Common/movie/import/DsmImport.cs +++ b/src/BizHawk.Client.Common/movie/import/DsmImport.cs @@ -93,7 +93,7 @@ namespace BizHawk.Client.Common private void ImportInputFrame(string line) { - DeSmuMEControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + DeSmuMEControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); SimpleController controller = new(DeSmuMEControllerDef); controller["LidOpen"] = false; diff --git a/src/BizHawk.Client.Common/movie/import/FcmImport.cs b/src/BizHawk.Client.Common/movie/import/FcmImport.cs index c17f643424..7c4dd98111 100644 --- a/src/BizHawk.Client.Common/movie/import/FcmImport.cs +++ b/src/BizHawk.Client.Common/movie/import/FcmImport.cs @@ -37,7 +37,7 @@ namespace BizHawk.Client.Common.movie.import NesRightPort = nameof(ControllerNES) }; _deck = controllerSettings.Instantiate((x, y) => true).AddSystemToControllerDef(); - _deck.ControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + _deck.ControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); // 004 4-byte little-endian unsigned int: version number, must be 2 uint version = r.ReadUInt32(); diff --git a/src/BizHawk.Client.Common/movie/import/Fm2Import.cs b/src/BizHawk.Client.Common/movie/import/Fm2Import.cs index 0fc19fa916..451f827408 100644 --- a/src/BizHawk.Client.Common/movie/import/Fm2Import.cs +++ b/src/BizHawk.Client.Common/movie/import/Fm2Import.cs @@ -119,7 +119,7 @@ namespace BizHawk.Client.Common { controllerSettings.NesLeftPort = nameof(ControllerNES); _deck = controllerSettings.Instantiate((_, _) => false).AddSystemToControllerDef(); - _deck.ControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + _deck.ControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); } } else if (line.StartsWith("port1", StringComparison.OrdinalIgnoreCase)) @@ -128,7 +128,7 @@ namespace BizHawk.Client.Common { controllerSettings.NesRightPort = nameof(ControllerNES); _deck = controllerSettings.Instantiate((_, _) => false).AddSystemToControllerDef(); - _deck.ControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + _deck.ControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); } } else if (line.StartsWith("port2", StringComparison.OrdinalIgnoreCase)) @@ -147,7 +147,7 @@ namespace BizHawk.Client.Common controllerSettings.NesLeftPort = nameof(FourScore); controllerSettings.NesRightPort = nameof(FourScore); _deck = controllerSettings.Instantiate((_, _) => false).AddSystemToControllerDef(); - _deck.ControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + _deck.ControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); } } else diff --git a/src/BizHawk.Client.Common/movie/import/FmvImport.cs b/src/BizHawk.Client.Common/movie/import/FmvImport.cs index 1fb629e094..ac0a6a5555 100644 --- a/src/BizHawk.Client.Common/movie/import/FmvImport.cs +++ b/src/BizHawk.Client.Common/movie/import/FmvImport.cs @@ -94,7 +94,7 @@ namespace BizHawk.Client.Common.movie.import NesRightPort = controller2 ? nameof(ControllerNES) : nameof(UnpluggedNES) }; _deck = controllerSettings.Instantiate((x, y) => true).AddSystemToControllerDef(); - _deck.ControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + _deck.ControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); syncSettings.Controls.NesLeftPort = controllerSettings.NesLeftPort; syncSettings.Controls.NesRightPort = controllerSettings.NesRightPort; diff --git a/src/BizHawk.Client.Common/movie/import/GmvImport.cs b/src/BizHawk.Client.Common/movie/import/GmvImport.cs index 9de7a576fd..ef2983db4a 100644 --- a/src/BizHawk.Client.Common/movie/import/GmvImport.cs +++ b/src/BizHawk.Client.Common/movie/import/GmvImport.cs @@ -90,7 +90,7 @@ namespace BizHawk.Client.Common.movie.import GPGXControlConverter controlConverter = new(input, systemId: VSystemID.Raw.GEN, cdButtons: false); - controlConverter.ControllerDef.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + controlConverter.ControllerDef.BuildMnemonicsCache(Result.Movie.SystemID); SimpleController controller = new(controlConverter.ControllerDef); // Unknown. diff --git a/src/BizHawk.Client.Common/movie/import/LsmvImport.cs b/src/BizHawk.Client.Common/movie/import/LsmvImport.cs index 784941949d..d5594370ce 100644 --- a/src/BizHawk.Client.Common/movie/import/LsmvImport.cs +++ b/src/BizHawk.Client.Common/movie/import/LsmvImport.cs @@ -84,7 +84,7 @@ namespace BizHawk.Client.Common.movie.import } ControllerDefinition controllerDefinition = new BsnesControllers(ss, true).Definition; - controllerDefinition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(VSystemID.Raw.SNES)); + controllerDefinition.BuildMnemonicsCache(VSystemID.Raw.SNES); _emptyController = new SimpleController(controllerDefinition); _controller = new SimpleController(controllerDefinition); _playerCount = controllerDefinition.PlayerCount; diff --git a/src/BizHawk.Client.Common/movie/import/Mc2Import.cs b/src/BizHawk.Client.Common/movie/import/Mc2Import.cs index ad1d4a543b..ca8c5a227c 100644 --- a/src/BizHawk.Client.Common/movie/import/Mc2Import.cs +++ b/src/BizHawk.Client.Common/movie/import/Mc2Import.cs @@ -146,7 +146,7 @@ namespace BizHawk.Client.Common.movie.import { var buttons = new[] { "Up", "Down", "Left", "Right", "B1", "B2", "Run", "Select" }; - _deck.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + _deck.Definition.BuildMnemonicsCache(Result.Movie.SystemID); SimpleController controllers = new(_deck.Definition); // Split up the sections of the frame. diff --git a/src/BizHawk.Client.Common/movie/import/MmvImport.cs b/src/BizHawk.Client.Common/movie/import/MmvImport.cs index 6ebaba528a..705f0b1fdf 100644 --- a/src/BizHawk.Client.Common/movie/import/MmvImport.cs +++ b/src/BizHawk.Client.Common/movie/import/MmvImport.cs @@ -95,7 +95,7 @@ namespace BizHawk.Client.Common.movie.import var ss = new SMS.SmsSyncSettings(); var cd = new SMSControllerDeck(ss.Port1, ss.Port2, isGameGear, ss.UseKeyboard); - cd.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + cd.Definition.BuildMnemonicsCache(Result.Movie.SystemID); SimpleController controllers = new(cd.Definition); /* diff --git a/src/BizHawk.Client.Common/movie/import/PjmImport.cs b/src/BizHawk.Client.Common/movie/import/PjmImport.cs index b579af29ee..e1f3a7cb2f 100644 --- a/src/BizHawk.Client.Common/movie/import/PjmImport.cs +++ b/src/BizHawk.Client.Common/movie/import/PjmImport.cs @@ -181,7 +181,7 @@ namespace BizHawk.Client.Common OctoshockDll.ePeripheralType.None, OctoshockDll.ePeripheralType.None, OctoshockDll.ePeripheralType.None }; SimpleController controllers = new(Octoshock.CreateControllerDefinition(settings)); - controllers.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + controllers.Definition.BuildMnemonicsCache(Result.Movie.SystemID); string[] buttons = { @@ -292,7 +292,7 @@ namespace BizHawk.Client.Common OctoshockDll.ePeripheralType.None, OctoshockDll.ePeripheralType.None, OctoshockDll.ePeripheralType.None }; SimpleController controllers = new(Octoshock.CreateControllerDefinition(settings)); - controllers.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + controllers.Definition.BuildMnemonicsCache(Result.Movie.SystemID); string[] buttons = { diff --git a/src/BizHawk.Client.Common/movie/import/SmvImport.cs b/src/BizHawk.Client.Common/movie/import/SmvImport.cs index 889fab5914..d00760f967 100644 --- a/src/BizHawk.Client.Common/movie/import/SmvImport.cs +++ b/src/BizHawk.Client.Common/movie/import/SmvImport.cs @@ -189,7 +189,7 @@ namespace BizHawk.Client.Common.movie.import } ControllerDefinition definition = new Snes9xControllers(ss).ControllerDefinition; - definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + definition.BuildMnemonicsCache(Result.Movie.SystemID); SimpleController controllers = new(definition); Result.Movie.LogKey = Bk2LogEntryGenerator.GenerateLogKey(definition); diff --git a/src/BizHawk.Client.Common/movie/import/VbmImport.cs b/src/BizHawk.Client.Common/movie/import/VbmImport.cs index e4b7c1490d..7f79c10940 100644 --- a/src/BizHawk.Client.Common/movie/import/VbmImport.cs +++ b/src/BizHawk.Client.Common/movie/import/VbmImport.cs @@ -203,7 +203,7 @@ namespace BizHawk.Client.Common.movie.import SimpleController controllers = isGBA ? GbaController() : GbController(); - controllers.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(isGBA ? VSystemID.Raw.GBA : VSystemID.Raw.GB)); + controllers.Definition.BuildMnemonicsCache(isGBA ? VSystemID.Raw.GBA : VSystemID.Raw.GB); /* * 01 00 A diff --git a/src/BizHawk.Client.Common/movie/import/YmvImport.cs b/src/BizHawk.Client.Common/movie/import/YmvImport.cs index 8941b53e30..1dd8cbcd42 100644 --- a/src/BizHawk.Client.Common/movie/import/YmvImport.cs +++ b/src/BizHawk.Client.Common/movie/import/YmvImport.cs @@ -106,7 +106,7 @@ namespace BizHawk.Client.Common.movie.import "Reset", "Power", "Previous Disk", "Next Disk", "P1 Left", "P1 Right", "P1 Up", "P1 Down", "P1 Start", "P1 A", "P1 B", "P1 C", "P1 X", "P1 Y", "P1 Z", "P1 L", "P1 R" } }.MakeImmutable()); - controllers.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(Result.Movie.SystemID)); + controllers.Definition.BuildMnemonicsCache(Result.Movie.SystemID); // Split up the sections of the frame. var sections = line.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries); diff --git a/src/BizHawk.Client.Common/movie/import/bkm/BkmControllerAdapter.cs b/src/BizHawk.Client.Common/movie/import/bkm/BkmControllerAdapter.cs index bc6ae75ead..797795f505 100644 --- a/src/BizHawk.Client.Common/movie/import/bkm/BkmControllerAdapter.cs +++ b/src/BizHawk.Client.Common/movie/import/bkm/BkmControllerAdapter.cs @@ -32,7 +32,7 @@ namespace BizHawk.Client.Common _ => "Null Controller", }; Definition = new(copyFrom: definition, withName: name); - Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(systemId)); + Definition.BuildMnemonicsCache(systemId); //TODO these aren't the same... } public ControllerDefinition Definition { get; set; } diff --git a/src/BizHawk.Client.Common/movie/bk2/Bk2MnemonicLookup.cs b/src/BizHawk.Emulation.Common/Base Implementations/Bk2MnemonicLookup.cs similarity index 98% rename from src/BizHawk.Client.Common/movie/bk2/Bk2MnemonicLookup.cs rename to src/BizHawk.Emulation.Common/Base Implementations/Bk2MnemonicLookup.cs index 65f5c61720..aab80c8333 100644 --- a/src/BizHawk.Client.Common/movie/bk2/Bk2MnemonicLookup.cs +++ b/src/BizHawk.Emulation.Common/Base Implementations/Bk2MnemonicLookup.cs @@ -1,12 +1,13 @@ using System.Collections.Generic; using BizHawk.Common.StringExtensions; -using BizHawk.Emulation.Common; -using BizHawk.Emulation.Cores.Libretro; -namespace BizHawk.Client.Common +namespace BizHawk.Emulation.Common { public static class Bk2MnemonicLookup { + /// duplicated with LibretroControllerDef + private const string PFX_RETROPAD = "RetroPad "; + public static char Lookup(string button, string systemId) { var key = button.Replace("Key ", ""); @@ -21,7 +22,7 @@ namespace BizHawk.Client.Common key = key.Substring(3); } } - key = key.RemovePrefix(LibretroHost.LibretroControllerDef.PFX_RETROPAD); + key = key.RemovePrefix(PFX_RETROPAD); if (SystemOverrides.TryGetValue(systemId, out var overridesForSys) && overridesForSys.TryGetValue(key, out var c)) { @@ -63,8 +64,6 @@ namespace BizHawk.Client.Common return button; } - public static Func MnemonicFunc(string systemId) => buttonName => Lookup(buttonName, systemId); - private static readonly Dictionary BaseMnemonicLookupTable = new Dictionary { ["Power"] = 'P', diff --git a/src/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs b/src/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs index 1c0ec4f0d9..999ba29d81 100644 --- a/src/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs +++ b/src/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs @@ -40,14 +40,15 @@ namespace BizHawk.Emulation.Common /// /// TODO: this should probably be called in , - /// but the needed Bk2MnemonicsLookup is in Client.Common /// - public void BuildMnemonicsCache(Func mnemonicFunc) + public void BuildMnemonicsCache(string sysID) { if (_mutable) throw new InvalidOperationException($"this {nameof(ControllerDefinition)} has not yet been built and sealed; can't build mnemonics cache"); - _mnemonicsCache ??= BoolButtons.ToDictionary(buttonName => buttonName, mnemonicFunc); + _mnemonicsCache ??= BoolButtons.ToDictionary( + static buttonName => buttonName, + buttonName => Bk2MnemonicLookup.Lookup(buttonName, sysID)); } public ControllerDefinition(string name) diff --git a/src/BizHawk.Emulation.Cores/Libretro/Libretro.IEmulator.cs b/src/BizHawk.Emulation.Cores/Libretro/Libretro.IEmulator.cs index d07f92b2f1..fd05f8c14e 100644 --- a/src/BizHawk.Emulation.Cores/Libretro/Libretro.IEmulator.cs +++ b/src/BizHawk.Emulation.Cores/Libretro/Libretro.IEmulator.cs @@ -74,7 +74,7 @@ namespace BizHawk.Emulation.Cores.Libretro { private const string CAT_KEYBOARD = "RetroKeyboard"; - public const string PFX_RETROPAD = "RetroPad "; + private const string PFX_RETROPAD = "RetroPad "; public LibretroControllerDef() : base(name: "LibRetro Controls"/*for compatibility*/) diff --git a/src/BizHawk.Tests/Client.Common/Display/InputDisplayTests.cs b/src/BizHawk.Tests/Client.Common/Display/InputDisplayTests.cs index 7ca4f362ec..c53e2a8b6b 100644 --- a/src/BizHawk.Tests/Client.Common/Display/InputDisplayTests.cs +++ b/src/BizHawk.Tests/Client.Common/Display/InputDisplayTests.cs @@ -15,12 +15,12 @@ namespace BizHawk.Tests.Client.Common.Display public void Initializer() { _boolController = new(new ControllerDefinition("Dummy Gamepad") { BoolButtons = { "A" } }.MakeImmutable()); - _boolController.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(VSystemID.Raw.NULL)); + _boolController.Definition.BuildMnemonicsCache(VSystemID.Raw.NULL); _axisController = new( new ControllerDefinition("Dummy Gamepad") .AddXYPair("Stick{0}", AxisPairOrientation.RightAndUp, 0.RangeTo(200), MidValue) .MakeImmutable()); - _axisController.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(VSystemID.Raw.NULL)); + _axisController.Definition.BuildMnemonicsCache(VSystemID.Raw.NULL); } [TestMethod] diff --git a/src/BizHawk.Tests/Client.Common/Movie/LogGeneratorTests.cs b/src/BizHawk.Tests/Client.Common/Movie/LogGeneratorTests.cs index e9adba2cea..5dda7d5bd4 100644 --- a/src/BizHawk.Tests/Client.Common/Movie/LogGeneratorTests.cs +++ b/src/BizHawk.Tests/Client.Common/Movie/LogGeneratorTests.cs @@ -14,19 +14,19 @@ namespace BizHawk.Tests.Client.Common.Movie public void Initializer() { _boolController = new(new ControllerDefinition("Dummy Gamepad") { BoolButtons = { "A" } }.MakeImmutable()); - _boolController.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(VSystemID.Raw.NES)); + _boolController.Definition.BuildMnemonicsCache(VSystemID.Raw.NES); _axisController = new( new ControllerDefinition("Dummy Gamepad") .AddXYPair("Stick{0}", AxisPairOrientation.RightAndUp, 0.RangeTo(200), 100) .MakeImmutable()); - _axisController.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(VSystemID.Raw.NES)); + _axisController.Definition.BuildMnemonicsCache(VSystemID.Raw.NES); } [TestMethod] public void GenerateLogEntry_ExclamationForUnknownButtons() { SimpleController controller = new(new ControllerDefinition("Dummy Gamepad") { BoolButtons = { "Unknown Button" } }.MakeImmutable()); - controller.Definition.BuildMnemonicsCache(Bk2MnemonicLookup.MnemonicFunc(VSystemID.Raw.NES)); + controller.Definition.BuildMnemonicsCache(VSystemID.Raw.NES); controller["Unknown Button"] = true; var actual = Bk2LogEntryGenerator.GenerateLogEntry(controller); Assert.AreEqual("|!|", actual);