diff --git a/BizHawk.Client.Common/Global.cs b/BizHawk.Client.Common/Global.cs
index d140971cd9..a949925651 100644
--- a/BizHawk.Client.Common/Global.cs
+++ b/BizHawk.Client.Common/Global.cs
@@ -6,28 +6,28 @@ namespace BizHawk.Client.Common
{
public static class Global
{
- public static IEmulator Emulator;
- public static Config Config;
- public static GameInfo Game;
- public static CheatCollection CheatList;
- public static FirmwareManager FirmwareManager;
+ public static IEmulator Emulator { get; set; }
+ public static Config Config { get; set; }
+ public static GameInfo Game { get; set; }
+ public static CheatCollection CheatList { get; set; } = new CheatCollection();
+ public static FirmwareManager FirmwareManager { get; set; }
- public static IMovieSession MovieSession = new MovieSession();
+ public static IMovieSession MovieSession { get; set; } = new MovieSession();
///
/// Used to disable secondary throttling (e.g. vsync, audio) for unthrottled modes or when the primary (clock) throttle is taking over (e.g. during fast forward/rewind).
///
- public static bool DisableSecondaryThrottling;
+ public static bool DisableSecondaryThrottling { get; set; }
///
/// The maximum number of milliseconds the sound output buffer can go below full before causing a noticeable sound interruption.
///
- public static int SoundMaxBufferDeficitMs;
+ public static int SoundMaxBufferDeficitMs { get; set; }
// the movie will be spliced in between these if it is present
- public static readonly CopyControllerAdapter MovieInputSourceAdapter = new CopyControllerAdapter();
- public static readonly CopyControllerAdapter MovieOutputHardpoint = new CopyControllerAdapter();
- public static readonly MultitrackRewiringControllerAdapter MultitrackRewiringAdapter = new MultitrackRewiringControllerAdapter();
+ public static CopyControllerAdapter MovieInputSourceAdapter { get; } = new CopyControllerAdapter();
+ public static CopyControllerAdapter MovieOutputHardpoint { get; } = new CopyControllerAdapter();
+ public static MultitrackRewiringControllerAdapter MultitrackRewiringAdapter { get; } = new MultitrackRewiringControllerAdapter();
// don't take my word for it, since the final word is actually in RewireInputChain, but here is a guide...
// user -> Input -> ActiveController -> UDLR -> StickyXORPlayerInputAdapter -> TurboAdapter(TBD) -> Lua(?TBD?) -> ..
@@ -35,39 +35,39 @@ namespace BizHawk.Client.Common
// (1)->Input Display
// the original source controller, bound to the user, sort of the "input" port for the chain, i think
- public static Controller ActiveController;
+ public static Controller ActiveController { get; set; }
// rapid fire version on the user controller, has its own key bindings and is OR'ed against ActiveController
- public static AutofireController AutoFireController;
+ public static AutofireController AutoFireController { get; set; }
// the "output" port for the controller chain.
- public static readonly CopyControllerAdapter ControllerOutput = new CopyControllerAdapter();
+ public static CopyControllerAdapter ControllerOutput { get; } = new CopyControllerAdapter();
- public static readonly UdlrControllerAdapter UD_LR_ControllerAdapter = new UdlrControllerAdapter();
+ public static UdlrControllerAdapter UD_LR_ControllerAdapter { get; } = new UdlrControllerAdapter();
- public static readonly AutoFireStickyXorAdapter AutofireStickyXORAdapter = new AutoFireStickyXorAdapter();
+ public static AutoFireStickyXorAdapter AutofireStickyXORAdapter { get; } = new AutoFireStickyXorAdapter();
///
/// provides an opportunity to mutate the player's input in an autohold style
///
- public static readonly StickyXorAdapter StickyXORAdapter = new StickyXorAdapter();
+ public static StickyXorAdapter StickyXORAdapter { get; } = new StickyXorAdapter();
///
- /// Used to AND to another controller, used for JoypadApi.Set
+ /// Used to AND to another controller, used for JoypadApi.Set
///
- public static readonly OverrideAdapter ButtonOverrideAdaptor = new OverrideAdapter();
+ public static OverrideAdapter ButtonOverrideAdaptor { get; } = new OverrideAdapter();
///
/// fire off one-frame logical button clicks here. useful for things like ti-83 virtual pad and reset buttons
///
- public static readonly ClickyVirtualPadController ClickyVirtualPadController = new ClickyVirtualPadController();
+ public static ClickyVirtualPadController ClickyVirtualPadController { get; } = new ClickyVirtualPadController();
- public static Controller ClientControls;
+ public static Controller ClientControls { get; set; }
- // Input state which has been estine for game controller inputs are coalesce here
+ // Input state for game controller inputs are coalesced here
// This relies on a client specific implementation!
- public static SimpleController ControllerInputCoalescer;
+ public static SimpleController ControllerInputCoalescer { get; set; }
- public static Dictionary UserBag = new Dictionary();
+ public static Dictionary UserBag { get; set; } = new Dictionary();
}
}
diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs
index d0006ca074..4877985575 100644
--- a/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/BizHawk.Client.EmuHawk/MainForm.cs
@@ -228,7 +228,6 @@ namespace BizHawk.Client.EmuHawk
Emulator = new NullEmulator();
GlobalWin.Tools = new ToolManager(this, Config, Emulator);
- Global.CheatList = new CheatCollection();
CheatList.Changed += Tools.UpdateCheatRelatedTools;
UpdateStatusSlots();
@@ -841,8 +840,6 @@ namespace BizHawk.Client.EmuHawk
set => Global.Game = value;
}
- private GLManager GLManager => GlobalWin.GLManager;
-
private Sound Sound => GlobalWin.Sound;
private CheatCollection CheatList => Global.CheatList;
private AutofireController AutoFireController => Global.AutoFireController;