diff --git a/Client.Core/Client.Core.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj
similarity index 92%
rename from Client.Core/Client.Core.csproj
rename to BizHawk.Client.Common/BizHawk.Client.Common.csproj
index 314ecf9b0b..7cdc6b11e9 100644
--- a/Client.Core/Client.Core.csproj
+++ b/BizHawk.Client.Common/BizHawk.Client.Common.csproj
@@ -47,12 +47,12 @@
-
+
-
-
+
+
diff --git a/BizHawk.Client.Common/Config.cs b/BizHawk.Client.Common/Config.cs
new file mode 100644
index 0000000000..40f548a9e9
--- /dev/null
+++ b/BizHawk.Client.Common/Config.cs
@@ -0,0 +1,1467 @@
+using System.IO;
+using System.Linq;
+using System.Drawing;
+using System.Collections.Generic;
+using System.Collections;
+
+namespace BizHawk.Client.Common
+{
+ public class Config
+ {
+ public Config()
+ {
+ /*ControllerConfig.ConfigCheckAllControlDefaults(this); TODO*/
+ }
+
+ public void ResolveDefaults()
+ {
+ PathEntries.ResolveWithDefaults();
+ HotkeyBindings.ResolveWithDefaults();
+ }
+
+ //Path Settings ************************************/
+ public bool UseRecentForROMs = false;
+ public string LastRomPath = ".";
+ public PathEntryCollection PathEntries = new PathEntryCollection();
+
+ //BIOS Paths
+ public Dictionary FirmwareUserSpecifications = new Dictionary(); //key: sysid+firmwareId; value: absolute path
+
+ public string FFMpegPath = "%exe%/dll/ffmpeg.exe";
+
+ //N64 Config Settings
+ public string N64VidPlugin = "Rice";
+ public int N64VideoSizeX = 320;
+ public int N64VideoSizeY = 240;
+
+ public N64RicePluginSettings RicePlugin = new N64RicePluginSettings();
+ public N64GlidePluginSettings GlidePlugin = new N64GlidePluginSettings();
+ public N64Glide64mk2PluginSettings Glide64mk2Plugin = new N64Glide64mk2PluginSettings();
+
+ // General Client Settings
+ public int Input_Hotkey_OverrideOptions = 0;
+ public bool StackOSDMessages = true;
+ public int TargetZoomFactor = 2;
+ public int TargetDisplayFilter = 0;
+ public RecentFiles RecentRoms = new RecentFiles(8);
+ public bool PauseWhenMenuActivated = true;
+ public bool SaveWindowPosition = true;
+ public bool StartPaused = false;
+ public int MainWndx = -1; //Negative numbers will be ignored
+ public int MainWndy = -1;
+ public bool RunInBackground = true;
+ public bool AcceptBackgroundInput = false;
+ public bool SingleInstanceMode = false;
+ public bool AllowUD_LR = false;
+ public bool ShowContextMenu = true;
+ public bool EnableBackupMovies = true;
+ public bool HotkeyConfigAutoTab = true;
+ public bool InputConfigAutoTab = true;
+ public bool ShowLogWindow = false;
+ public bool BackupSavestates = true;
+ public bool BackupSaveram = true;
+ public bool AutoSavestates = false;
+ public bool SaveScreenshotWithStates = true;
+ public int AutofireOn = 1;
+ public int AutofireOff = 1;
+ public bool AutofireLagFrames = true;
+ public int SaveSlot = 0; //currently selected savestate slot
+ public bool AutoLoadLastSaveSlot = false;
+ public bool WIN32_CONSOLE = true;
+ public bool SkipLagFrame = false;
+ public string MovieExtension = "bkm";
+ public bool SupressAskSave = false;
+ public bool AVI_CaptureOSD = false;
+ public bool Screenshot_CaptureOSD = false;
+
+ public enum SaveStateTypeE { Default, Binary, Text };
+ public SaveStateTypeE SaveStateType = SaveStateTypeE.Default;
+
+ // Run-Control settings
+ public int FrameProgressDelayMs = 500; //how long until a frame advance hold turns into a frame progress?
+ public int FrameSkip = 4;
+ public int SpeedPercent = 100;
+ public int SpeedPercentAlternate = 400;
+ public bool ClockThrottle = true;
+ public bool AutoMinimizeSkipping = true;
+ public bool VSyncThrottle = false;
+
+ //Rewind settings
+ public bool Rewind_UseDelta = true;
+ public bool RewindEnabledSmall = true;
+ public bool RewindEnabledMedium = true;
+ public bool RewindEnabledLarge = false;
+ public int RewindFrequencySmall = 1;
+ public int RewindFrequencyMedium = 2;
+ public int RewindFrequencyLarge = 60;
+ public int Rewind_MediumStateSize = 262144; //256kb
+ public int Rewind_LargeStateSize = 1048576; //1mb
+ public int Rewind_BufferSize = 128; //in mb
+ public bool Rewind_OnDisk = false;
+ public bool Rewind_IsThreaded = false;
+
+ /// use vsync. if VSyncThrottle = false, this will try to use vsync without throttling to it
+ public bool VSync = false;
+
+ // Display options
+ public int MessagesColor = -1;
+ public int AlertMessageColor = -65536;
+ public int LastInputColor = -23296;
+ public int MovieInput = -8355712;
+ public bool DisplayFPS = false;
+ public int DispFPSx = 0;
+ public int DispFPSy = 0;
+ public int DispFPSanchor = 0; //0 = UL, 1 = UR, 2 = DL, 3 = DR
+ public bool DisplayFrameCounter = false;
+ public int DispFrameCx = 0;
+ public int DispFrameCy = 14;
+ public int DispFrameanchor = 0;
+ public bool DisplayLagCounter = false;
+ public int DispLagx = 0;
+ public int DispLagy = 42;
+ public int DispLaganchor = 0;
+ public bool DisplayInput = false;
+ public int DispInpx = 0;
+ public int DispInpy = 28;
+ public int DispInpanchor = 0;
+ public bool DisplayRerecordCount = false;
+ public int DispRecx = 0;
+ public int DispRecy = 56;
+ public int DispRecanchor = 0;
+ public int DispMultix = 0;
+ public int DispMultiy = 14;
+ public int DispMultianchor = 1;
+ public bool DisplayGDI = false;
+ public bool SuppressGui = false;
+ public bool DisplayStatusBar = true;
+ public int DispRamWatchx = 0;
+ public int DispRamWatchy = 70;
+ public bool DisplayRamWatch = false;
+ public bool ShowMenuInFullscreen = false;
+ public int DispMessagex = 3;
+ public int DispMessagey = 0;
+ public int DispMessageanchor = 2;
+ public int DispAutoholdx = 0;
+ public int DispAutoholdy = 0;
+ public int DispAutoholdanchor = 1;
+ public bool DispBlurry = false; // make display look ugly
+
+ // Sound options
+ public bool SoundEnabled = true;
+ public bool MuteFrameAdvance = true;
+ public int SoundVolume = 100; //Range 0-100
+ public bool SoundThrottle = false;
+ public string SoundDevice = "";
+
+ // Log Window
+ public bool LogWindowSaveWindowPosition = true;
+ public int LogWindowWndx = -1;
+ public int LogWindowWndy = -1;
+ public int LogWindowWidth = -1;
+ public int LogWindowHeight = -1;
+
+ // Lua Console
+ public RecentFiles RecentLua = new RecentFiles(8);
+ public RecentFiles RecentLuaSession = new RecentFiles(8);
+ public bool AutoLoadLuaConsole = false;
+ public bool LuaConsoleSaveWindowPosition = true;
+ public int LuaConsoleWndx = -1; //Negative numbers will be ignored even with save window position set
+ public int LuaConsoleWndy = -1;
+ public int LuaConsoleWidth = -1;
+ public int LuaConsoleHeight = -1;
+ public bool DisableLuaScriptsOnLoad = false;
+
+ // RamWatch Settings
+ public RecentFiles RecentWatches = new RecentFiles(8);
+ public bool RamWatchSaveWindowPosition = true;
+ public bool RamWatchAlwaysOnTop = false;
+ public int RamWatchWndx = -1; //Negative numbers will be ignored even with save window position set
+ public int RamWatchWndy = -1;
+ public int RamWatchWidth = -1;
+ public int RamWatchHeight = -1;
+ public bool RamWatchShowChangeColumn = true;
+ public bool RamWatchShowPrevColumn = false;
+ public bool RamWatchShowDiffColumn = false;
+ public bool RamWatchShowDomainColumn = true;
+
+ public Dictionary RamWatchColumnWidths = new Dictionary()
+ {
+ { "AddressColumn", -1 },
+ { "ValueColumn", -1 },
+ { "PrevColumn", -1 },
+ { "ChangesColumn", -1 },
+ { "DiffColumn", -1 },
+ { "DomainColumn", -1 },
+ { "NotesColumn",-1 },
+ };
+
+ public Dictionary RamWatchColumnIndexes = new Dictionary()
+ {
+ { "AddressColumn", 0 },
+ { "ValueColumn", 1 },
+ { "PrevColumn", 2 },
+ { "ChangesColumn", 3 },
+ { "DiffColumn", 4 },
+ { "DomainColumn", 5 },
+ { "NotesColumn", 6 },
+ };
+
+ public Watch.PreviousType RamWatchDefinePrevious = Watch.PreviousType.LastFrame;
+
+ // RamSearch Settings
+ public int RamSearchPrev_Type = 1;
+ public bool RamSearchSaveWindowPosition = true;
+ public RecentFiles RecentSearches = new RecentFiles(8);
+ public int RamSearchWndx = -1; //Negative numbers will be ignored even with save window position set
+ public int RamSearchWndy = -1;
+ public int RamSearchWidth = -1; //Negative numbers will be ignored
+ public int RamSearchHeight = -1;
+ public int RamSearchPreviousAs = 0;
+ public bool RamSearchPreviewMode = true;
+ public bool RamSearchAlwaysExcludeRamWatch = false;
+ public int RamSearchAddressWidth = -1;
+ public int RamSearchValueWidth = -1;
+ public int RamSearchPrevWidth = -1;
+ public int RamSearchChangesWidth = -1;
+ public int RamSearchAddressIndex = 0;
+ public int RamSearchValueIndex = 1;
+ public int RamSearchPrevIndex = 2;
+ public int RamSearchChangesIndex = 3;
+ public bool RamSearchFastMode = false;
+ public bool RamSearchAlwaysOnTop = false;
+
+ public Dictionary RamSearchColumnWidths = new Dictionary()
+ {
+ { "AddressColumn", -1 },
+ { "ValueColumn", -1 },
+ { "PrevColumn", -1 },
+ { "ChangesColumn", -1 },
+ { "DiffColumn", -1 },
+ };
+
+ public Dictionary RamSearchColumnIndexes = new Dictionary()
+ {
+ { "AddressColumn", 0 },
+ { "ValueColumn", 1 },
+ { "PrevColumn", 2 },
+ { "ChangesColumn", 3 },
+ { "DiffColumn", 4 },
+ };
+
+ public bool RamSearchShowPrevColumn = true;
+ public bool RamSearchShowChangeColumn = true;
+ public bool RamSearchShowDiffColumn = false;
+
+ // HexEditor Settings
+ public bool AutoLoadHexEditor = false;
+ public bool HexEditorSaveWindowPosition = true;
+ public int HexEditorWndx = -1; //Negative numbers will be ignored even with save window position set
+ public int HexEditorWndy = -1;
+ public int HexEditorWidth = -1;
+ public int HexEditorHeight = -1;
+ public bool HexEditorBigEndian = false;
+ public int HexEditorDataSize = 1;
+ //Hex Editor Colors
+ public Color HexBackgrndColor = Color.FromName("Control");
+ public Color HexForegrndColor = Color.FromName("ControlText");
+ public Color HexMenubarColor = Color.FromName("Control");
+ public Color HexFreezeColor = Color.LightBlue;
+ public Color HexHighlightColor = Color.Pink;
+ public Color HexHighlightFreezeColor = Color.Violet;
+
+ //Trace Logger Settings
+ public bool TraceLoggerAutoLoad = false;
+ public bool TraceLoggerSaveWindowPosition = true;
+ public int TraceLoggerMaxLines = 100000;
+ public int TraceLoggerWndx = -1;
+ public int TraceLoggerWndy = -1;
+ public int TraceLoggerWidth = -1;
+ public int TraceLoggerHeight = -1;
+
+ // Video dumping settings
+ public string VideoWriter = "";
+ public int JMDCompression = 3;
+ public int JMDThreads = 3;
+ public string FFmpegFormat = "";
+ public string FFmpegCustomCommand = "-c:a foo -c:v bar -f baz";
+ public string AVICodecToken = "";
+ public int GifWriterFrameskip = 3;
+ public int GifWriterDelay = -1;
+
+ // NESPPU Settings
+ public bool AutoLoadNESPPU = false;
+ public bool NESPPUSaveWindowPosition = true;
+ public int NESPPUWndx = -1;
+ public int NESPPUWndy = -1;
+ public int NESPPURefreshRate = 4;
+
+ // NESDebuger Settings
+ public bool AutoLoadNESDebugger = false;
+ public bool NESDebuggerSaveWindowPosition = true;
+ public int NESDebuggerWndx = -1;
+ public int NESDebuggerWndy = -1;
+ public int NESDebuggerWidth = -1;
+ public int NESDebuggerHeight = -1;
+
+ // NESNameTableViewer Settings
+ public bool AutoLoadNESNameTable = false;
+ public bool NESNameTableSaveWindowPosition = true;
+ public int NESNameTableWndx = -1;
+ public int NESNameTableWndy = -1;
+ public int NESNameTableRefreshRate = 4;
+
+ // NES Graphics settings
+ public bool NESAllowMoreThanEightSprites = false;
+ public bool NESClipLeftAndRight = false;
+ public bool NESAutoLoadPalette = true;
+ public bool NESDispBackground = true;
+ public bool NESDispSprites = true;
+ public int NESBackgroundColor = 0;
+ public string NESPaletteFile = "";
+ public int NTSC_NESTopLine = 8;
+ public int NTSC_NESBottomLine = 231;
+ public int PAL_NESTopLine = 8;
+ public int PAL_NESBottomLine = 231;
+
+ // gb gpu view settings
+ public bool AutoLoadGBGPUView = false;
+ public bool GBGPUViewSaveWindowPosition = true;
+ public int GBGPUViewWndx = -1;
+ public int GBGPUViewWndy = -1;
+ public Color GBGPUSpriteBack = Color.Lime;
+
+ // SNES Graphics Debugger Dialog Settings
+ public bool AutoLoadSNESGraphicsDebugger = false;
+ public bool SNESGraphicsDebuggerSaveWindowPosition = true;
+ public int SNESGraphicsDebuggerWndx = -1;
+ public int SNESGraphicsDebuggerWndy = -1;
+ public int SNESGraphicsDebuggerRefreshRate = 4;
+ public bool SNESGraphicsUseUserBackdropColor = false;
+ public int SNESGraphicsUserBackdropColor = -1;
+ public string SNESPalette = "BizHawk";
+
+ // SNES Graphics settings
+ //bsnes allows the layers to be enabled for each priority level.
+ //this may not be important for the bg (there are two priority levels)
+ //but it may be useful for OBJ, so we might want to control them separately
+ public bool SNES_ShowBG1_0 = true;
+ public bool SNES_ShowBG2_0 = true;
+ public bool SNES_ShowBG3_0 = true;
+ public bool SNES_ShowBG4_0 = true;
+ public bool SNES_ShowBG1_1 = true;
+ public bool SNES_ShowBG2_1 = true;
+ public bool SNES_ShowBG3_1 = true;
+ public bool SNES_ShowBG4_1 = true;
+ public bool SNES_ShowOBJ1 = true;
+ public bool SNES_ShowOBJ2 = true;
+ public bool SNES_ShowOBJ3 = true;
+ public bool SNES_ShowOBJ4 = true;
+
+ // SATURN GRAPHICS SETTINGS
+ public bool SaturnUseGL = false;
+ public int SaturnDispFactor = 1;
+ public bool SaturnDispFree = false;
+ public int SaturnGLW = 640;
+ public int SaturnGLH = 480;
+
+ // PCE Graphics settings
+ public bool PCEDispBG1 = true;
+ public bool PCEDispOBJ1 = true;
+ public bool PCEDispBG2 = true;
+ public bool PCEDispOBJ2 = true;
+
+ // PCE BG Viewer settings
+ public bool PCEBGViewerSaveWIndowPosition = true;
+ public bool PCEBGViewerAutoload = false;
+ public int PCEBGViewerWndx = -1;
+ public int PCEBGViewerWndy = -1;
+ public int PCEBGViewerRefreshRate = 16;
+
+ // SMS Graphics settings
+ public bool SMSDispBG = true;
+ public bool SMSDispOBJ = true;
+
+ // Coleco Settings
+ public bool ColecoSkipBiosIntro = false;
+
+ //GB Debugger settings
+ public bool AutoloadGBDebugger = false;
+ public bool GBDebuggerSaveWindowPosition = true;
+ public bool GameBoySkipBIOS = true;
+
+ // Cheats Dialog
+ public bool Cheats_ValuesAsHex = true;
+ public bool CheatsSaveWindowPosition = true;
+ public bool DisableCheatsOnLoad = false;
+ public bool LoadCheatFileByGame = true;
+ public bool CheatsAutoSaveOnClose = true;
+ public RecentFiles RecentCheats = new RecentFiles(8);
+ public int CheatsWndx = -1;
+ public int CheatsWndy = -1;
+ public int CheatsWidth = -1;
+ public int CheatsHeight = -1;
+ public int CheatsNameWidth = -1;
+ public int CheatsAddressWidth = -1;
+ public int CheatsValueWidth = -1;
+ public int CheatsCompareWidth = -1;
+ public int CheatsDomainWidth = -1;
+ public int CheatsOnWidth = -1;
+ public int CheatsNameIndex = 0;
+ public int CheatsAddressIndex = 1;
+ public int CheatsValueIndex = 2;
+ public int CheatsCompareIndex = 3;
+ public int CheatsOnIndex = 4;
+ public int CheatsDomainIndex = 5;
+ public bool CheatsAlwaysOnTop = false;
+
+ public Dictionary CheatsColumnWidths = new Dictionary()
+ {
+ { "NamesColumn", -1 },
+ { "AddressColumn", -1 },
+ { "ValueColumn", -1 },
+ { "CompareColumn", -1 },
+ { "OnColumn", -1 },
+ { "DomainColumn", -1 },
+ { "SizeColumn", -1 },
+ { "EndianColumn", -1 },
+ { "DisplayTypeColumn", -1 },
+ };
+
+ public Dictionary CheatsColumnIndices = new Dictionary()
+ {
+ { "NamesColumn", 0 },
+ { "AddressColumn", 1 },
+ { "ValueColumn", 2 },
+ { "CompareColumn", 3 },
+ { "OnColumn", 4 },
+ { "DomainColumn", 5 },
+ { "SizeColumn", 6 },
+ { "EndianColumn", 7 },
+ { "DisplayTypeColumn", 8 },
+ };
+
+ public Dictionary CheatsColumnShow = new Dictionary()
+ {
+ { "NamesColumn", true },
+ { "AddressColumn", true },
+ { "ValueColumn", true },
+ { "CompareColumn", true },
+ { "OnColumn", false },
+ { "DomainColumn", true },
+ { "SizeColumn", true },
+ { "EndianColumn", false },
+ { "DisplayTypeColumn", false },
+ };
+
+ // TAStudio Dialog
+ public bool TAStudioSaveWindowPosition = true;
+ public bool AutoloadTAStudio = false;
+ public int TASWndx = -1;
+ public int TASWndy = -1;
+ public int TASWidth = -1;
+ public int TASHeight = -1;
+ public bool TASUpdatePads = true;
+
+ // VirtualPad Dialog
+ public bool VirtualPadSaveWindowPosition = true;
+ public bool AutoloadVirtualPad = false;
+ public bool VirtualPadSticky = true;
+ public int VPadWndx = -1;
+ public int VPadWndy = -1;
+ public int VPadWidth = -1;
+ public int VPadHeight = -1;
+
+ // NES Game Genie Encoder/Decoder
+ public bool NESGGAutoload = false;
+ public bool NESGGSaveWindowPosition = true;
+ public int NESGGWndx = -1;
+ public int NESGGWndy = -1;
+
+ // SNES Game Genie Encoder/Decoder
+ public bool SNESGGAutoload = false;
+ public bool SNESGGSaveWindowPosition = true;
+ public int SNESGGWndx = -1;
+ public int SNESGGWndy = -1;
+
+ // GB/GG Game Genie Encoder/Decoder
+ public bool GBGGAutoload = false;
+ public bool GBGGSaveWindowPosition = true;
+ public int GBGGWndx = -1;
+ public int GBGGWndy = -1;
+
+ // GEN Game Genie Encoder/Decoder
+ public bool GENGGAutoload = false;
+ public bool GENGGSaveWindowPosition = true;
+ public int GENGGWndx = -1;
+ public int GENGGWndy = -1;
+
+ //Movie Settings
+ public RecentFiles RecentMovies = new RecentFiles(8);
+ public bool BindSavestatesToMovies = true;
+ public string DefaultAuthor = "default user";
+ public bool UseDefaultAuthor = true;
+ public bool DisplaySubtitles = true;
+ public bool VBAStyleMovieLoadState = false;
+ public bool MoviePlaybackPokeMode = false;
+
+ //Play Movie Dialog
+ public bool PlayMovie_IncludeSubdir = true;
+ public bool PlayMovie_ShowStateFiles = false;
+ public bool PlayMovie_MatchGameName = false;
+
+ //TI83
+ public bool TI83autoloadKeyPad = true;
+ public bool TI83KeypadSaveWindowPosition = true;
+ public int TI83KeyPadWndx = -1;
+ public int TI83KeyPadWndy = -1;
+ public bool TI83ToolTips = true;
+
+ public BindingCollection HotkeyBindings = new BindingCollection();
+
+ //Analog Hotkey values
+ public int Analog_LargeChange = 10;
+ public int Analog_SmallChange = 1;
+
+ // NES Sound settings
+ public int NESSquare1 = 376;
+ public int NESSquare2 = 376;
+ public int NESTriangle = 426;
+ public int NESNoise = 247;
+ public int NESDMC = 167;
+
+ public const int NESSquare1Max = 376;
+ public const int NESSquare2Max = 376;
+ public const int NESTriangleMax = 426;
+ public const int NESNoiseMax = 247;
+ public const int NESDMCMax = 167;
+
+ public struct AnalogBind
+ {
+ /// the physical stick that we're bound to
+ public string Value;
+ /// sensitivity and flip
+ public float Mult;
+ /// portion of axis to ignore
+ public float Deadzone;
+ public AnalogBind(string Value, float Mult, float Deadzone)
+ {
+ this.Value = Value;
+ this.Mult = Mult;
+ this.Deadzone = Deadzone;
+ }
+ }
+
+ // [ControllerType][ButtonName] => Physical Bind
+ public Dictionary> AllTrollers = new Dictionary>();
+ public Dictionary> AllTrollersAutoFire = new Dictionary>();
+ public Dictionary> AllTrollersAnalog = new Dictionary>();
+
+ // SMS / GameGear Settings
+ public bool SmsEnableFM = true;
+ public bool SmsAllowOverlock = false;
+ public bool SmsForceStereoSeparation = false;
+ public bool SmsSpriteLimit = false;
+ public bool GGShowClippedRegions = false;
+ public bool GGHighlightActiveDisplayRegion = false;
+
+ // PCEngine Settings
+ public bool PceSpriteLimit = false;
+ public bool PceEqualizeVolume = false;
+ public bool PceArcadeCardRewindHack = true;
+
+ // Genesis Settings
+
+ //Atari 2600 Settings
+ public bool Atari2600_BW = false;
+ public bool Atari2600_LeftDifficulty = true;
+ public bool Atari2600_RightDifficulty = true;
+
+ //Atari 7800 Settings
+
+ //ColecoVision
+
+ //Intellivision
+
+ //NES settings
+
+ //SNES settings
+ public string SNESProfile = "Compatibility";
+ public bool SNESUseRingBuffer = true;
+ public bool SNESAlwaysDoubleSize = false;
+
+ //N64 settings
+
+ //TI 83 settings
+
+ //GB settings
+ public bool GB_ForceDMG = false;
+ public bool GB_GBACGB = false;
+ public bool GB_MulticartCompat = false;
+ public string GB_PaletteFile = "";
+ public bool GB_AsSGB = false;
+ public Emulation.Consoles.GB.GBColors.ColorType CGBColors = Emulation.Consoles.GB.GBColors.ColorType.gambatte;
+
+ //Dual Gb
+
+ //GBA settings
+
+ //Saturn
+
+ //Commodore 64 Settings
+
+ //GIF Animator Settings
+ public int GifAnimatorNumFrames;
+ public int GifAnimatorFrameSkip;
+ public int GifAnimatorSpeed;
+ public bool GifAnimatorReversable;
+
+ //LuaWriter Settings
+ public int LuaDefaultTextColor = -16777216;
+ public bool LuaDefaultTextBold = false;
+ public int LuaWriterBackColor = -1;
+
+ public int LuaKeyWordColor = -16776961;
+ public bool LuaKeyWordBold = false;
+ public int LuaCommentColor = -16744448;
+ public bool LuaCommentBold = false;
+ public int LuaStringColor = -8355712;
+ public bool LuaStringBold = false;
+ public int LuaSymbolColor = -16777216;
+ public bool LuaSymbolBold = false;
+ public int LuaLibraryColor = -16711681;
+ public bool LuaLibraryBold = false;
+ public int LuaDecimalColor = -23296;
+ public bool LuaDecimalBold = false;
+ public float LuaWriterFontSize = 11;
+ public string LuaWriterFont = "Courier New";
+ public float LuaWriterZoom = 1;
+ public bool LuaWriterStartEmpty = false;
+
+ //Atari 2600 Settings
+ public bool Atari2600_ShowBG = true;
+ public bool Atari2600_ShowPlayer1 = true;
+ public bool Atari2600_ShowPlayer2 = true;
+ public bool Atari2600_ShowMissle1 = true;
+ public bool Atari2600_ShowMissle2 = true;
+ public bool Atari2600_ShowBall = true;
+ public bool Atari2600_ShowPlayfield = true;
+ }
+
+ #region Sub-classes TODO - it is about time to port these to separate files
+
+ public class BindingCollection : IEnumerable
+ {
+ public List Bindings { get; private set; }
+
+ public BindingCollection()
+ {
+ Bindings = new List();
+ Bindings.AddRange(DefaultValues);
+ }
+
+ public void Add(Binding b)
+ {
+ Bindings.Add(b);
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ return Bindings.GetEnumerator();
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public Binding this[string index]
+ {
+ get
+ {
+ return Bindings.FirstOrDefault(x => x.DisplayName == index) ?? new Binding();
+ }
+ }
+
+ public void ResolveWithDefaults()
+ {
+ //Add missing entries
+ foreach (Binding default_binding in DefaultValues)
+ {
+ var binding = Bindings.FirstOrDefault(x => x.DisplayName == default_binding.DisplayName);
+ if (binding == null)
+ {
+ Bindings.Add(default_binding);
+ }
+ }
+
+ List entriesToRemove = new List();
+
+ //Remove entries that no longer exist in defaults
+ foreach (Binding entry in Bindings)
+ {
+ var binding = DefaultValues.FirstOrDefault(x => x.DisplayName == entry.DisplayName);
+ if (binding == null)
+ {
+ entriesToRemove.Add(entry);
+ }
+ }
+
+ foreach (Binding entry in entriesToRemove)
+ {
+ Bindings.Remove(entry);
+ }
+ }
+
+ public static List DefaultValues
+ {
+ get
+ {
+ return new List()
+ {
+ //General
+ new Binding() { DisplayName = "Frame Advance", Bindings = "F", TabGroup = "General", DefaultBinding = "F", Ordinal = 0 },
+ new Binding() { DisplayName = "Rewind", Bindings = "Shift+R, J1 B7, X1 Left Trigger", TabGroup = "General", DefaultBinding = "Shift+R, J1 B7, X1 Left Trigger", Ordinal = 1 },
+ new Binding() { DisplayName = "Pause", Bindings = "Pause", TabGroup = "General", DefaultBinding = "Pause", Ordinal = 2 },
+ new Binding() { DisplayName = "Fast Forward", Bindings = "Tab, J1 B8, X1 Right Trigger", TabGroup = "General", DefaultBinding = "Tab, J1 B8, X1 Right Trigger", Ordinal = 3 },
+ new Binding() { DisplayName = "Turbo", Bindings = "Shift+Tab", TabGroup = "General", DefaultBinding = "Shift+Tab", Ordinal = 4 },
+ new Binding() { DisplayName = "Toggle Throttle", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 5 },
+ new Binding() { DisplayName = "Soft Reset", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 6 },
+ new Binding() { DisplayName = "Hard Reset", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 7 },
+ new Binding() { DisplayName = "Quick Load", Bindings = "P", TabGroup = "General", DefaultBinding = "P", Ordinal = 8 },
+ new Binding() { DisplayName = "Quick Save", Bindings = "I", TabGroup = "General", DefaultBinding = "I", Ordinal = 9 },
+ new Binding() { DisplayName = "Autohold", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 10 },
+ new Binding() { DisplayName = "Clear Autohold", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 11 },
+ new Binding() { DisplayName = "Screenshot", Bindings = "F12", TabGroup = "General", DefaultBinding = "F12", Ordinal = 12 },
+ new Binding() { DisplayName = "Full Screen", Bindings = "Alt+Return", TabGroup = "General", DefaultBinding = "Alt+Return", Ordinal = 13 },
+ new Binding() { DisplayName = "Open ROM", Bindings = "Ctrl+O", TabGroup = "General", DefaultBinding = "Ctrl+O", Ordinal = 14 },
+ new Binding() { DisplayName = "Close ROM", Bindings = "Ctrl+W", TabGroup = "General", DefaultBinding = "Ctrl+W", Ordinal = 15 },
+ new Binding() { DisplayName = "Display FPS", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 16 },
+ new Binding() { DisplayName = "Frame Counter", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 17 },
+ new Binding() { DisplayName = "Lag Counter", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 18 },
+ new Binding() { DisplayName = "Input Display", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 19 },
+ new Binding() { DisplayName = "Toggle BG Input", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 20 },
+ new Binding() { DisplayName = "Toggle Menu", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 21 },
+ new Binding() { DisplayName = "Volume Up", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 22 },
+ new Binding() { DisplayName = "Volume Down", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 23 },
+ new Binding() { DisplayName = "Record A/V", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 24 },
+ new Binding() { DisplayName = "Stop A/V", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 25 },
+ new Binding() { DisplayName = "Larger Window", Bindings = "Alt+UpArrow", TabGroup = "General", DefaultBinding = "Alt+UpArrow", Ordinal = 26 },
+ new Binding() { DisplayName = "Smaller Window", Bindings = "Alt+DownArrow", TabGroup = "General", DefaultBinding = "Alt+DownArrow", Ordinal = 27 },
+ new Binding() { DisplayName = "Increase Speed", Bindings = "Equals", TabGroup = "General", DefaultBinding = "Equals", Ordinal = 28 },
+ new Binding() { DisplayName = "Decrease Speed", Bindings = "Minus", TabGroup = "General", DefaultBinding = "Minus", Ordinal = 29 },
+ new Binding() { DisplayName = "Reboot Core", Bindings = "Ctrl+R", TabGroup = "General", DefaultBinding = "Ctrl+R", Ordinal = 30 },
+ new Binding() { DisplayName = "Autofire", Bindings = "", TabGroup = "General", DefaultBinding = "", Ordinal = 31 },
+
+ //Save States
+ new Binding() { DisplayName = "Save State 0", Bindings = "Shift+F10", TabGroup = "Save States", DefaultBinding = "Shift+F10", Ordinal = 1 },
+ new Binding() { DisplayName = "Save State 1", Bindings = "Shift+F1", TabGroup = "Save States", DefaultBinding = "Shift+F1", Ordinal = 2 },
+ new Binding() { DisplayName = "Save State 2", Bindings = "Shift+F2", TabGroup = "Save States", DefaultBinding = "Shift+F2", Ordinal = 3 },
+ new Binding() { DisplayName = "Save State 3", Bindings = "Shift+F3", TabGroup = "Save States", DefaultBinding = "Shift+F3", Ordinal = 4 },
+ new Binding() { DisplayName = "Save State 4", Bindings = "Shift+F4", TabGroup = "Save States", DefaultBinding = "Shift+F4", Ordinal = 5 },
+ new Binding() { DisplayName = "Save State 5", Bindings = "Shift+F5", TabGroup = "Save States", DefaultBinding = "Shift+F5", Ordinal = 6 },
+ new Binding() { DisplayName = "Save State 6", Bindings = "Shift+F6", TabGroup = "Save States", DefaultBinding = "Shift+F6", Ordinal = 7 },
+ new Binding() { DisplayName = "Save State 7", Bindings = "Shift+F7", TabGroup = "Save States", DefaultBinding = "Shift+F7", Ordinal = 8 },
+ new Binding() { DisplayName = "Save State 8", Bindings = "Shift+F8", TabGroup = "Save States", DefaultBinding = "Shift+F8", Ordinal = 9 },
+ new Binding() { DisplayName = "Save State 9", Bindings = "Shift+F9", TabGroup = "Save States", DefaultBinding = "Shift+F9", Ordinal = 10 },
+ new Binding() { DisplayName = "Load State 0", Bindings = "F10", TabGroup = "Save States", DefaultBinding = "F10", Ordinal = 11 },
+ new Binding() { DisplayName = "Load State 1", Bindings = "F1", TabGroup = "Save States", DefaultBinding = "F1", Ordinal = 12 },
+ new Binding() { DisplayName = "Load State 2", Bindings = "F2", TabGroup = "Save States", DefaultBinding = "F2", Ordinal = 13 },
+ new Binding() { DisplayName = "Load State 3", Bindings = "F3", TabGroup = "Save States", DefaultBinding = "F3", Ordinal = 14 },
+ new Binding() { DisplayName = "Load State 4", Bindings = "F4", TabGroup = "Save States", DefaultBinding = "F4", Ordinal = 15 },
+ new Binding() { DisplayName = "Load State 5", Bindings = "F5", TabGroup = "Save States", DefaultBinding = "F5", Ordinal = 16 },
+ new Binding() { DisplayName = "Load State 6", Bindings = "F6", TabGroup = "Save States", DefaultBinding = "F6", Ordinal = 17 },
+ new Binding() { DisplayName = "Load State 7", Bindings = "F7", TabGroup = "Save States", DefaultBinding = "F7", Ordinal = 18 },
+ new Binding() { DisplayName = "Load State 8", Bindings = "F8", TabGroup = "Save States", DefaultBinding = "F8", Ordinal = 19 },
+ new Binding() { DisplayName = "Load State 9", Bindings = "F9", TabGroup = "Save States", DefaultBinding = "F9", Ordinal = 20 },
+ new Binding() { DisplayName = "Select State 0", Bindings = "D0", TabGroup = "Save States", DefaultBinding = "D0", Ordinal = 21 },
+ new Binding() { DisplayName = "Select State 1", Bindings = "D1", TabGroup = "Save States", DefaultBinding = "D1", Ordinal = 22 },
+ new Binding() { DisplayName = "Select State 2", Bindings = "D2", TabGroup = "Save States", DefaultBinding = "D2", Ordinal = 23 },
+ new Binding() { DisplayName = "Select State 3", Bindings = "D3", TabGroup = "Save States", DefaultBinding = "D3", Ordinal = 24 },
+ new Binding() { DisplayName = "Select State 4", Bindings = "D4", TabGroup = "Save States", DefaultBinding = "D4", Ordinal = 25 },
+ new Binding() { DisplayName = "Select State 5", Bindings = "D5", TabGroup = "Save States", DefaultBinding = "D5", Ordinal = 26 },
+ new Binding() { DisplayName = "Select State 6", Bindings = "D6", TabGroup = "Save States", DefaultBinding = "D6", Ordinal = 27 },
+ new Binding() { DisplayName = "Select State 7", Bindings = "D7", TabGroup = "Save States", DefaultBinding = "D7", Ordinal = 28 },
+ new Binding() { DisplayName = "Select State 8", Bindings = "D8", TabGroup = "Save States", DefaultBinding = "D8", Ordinal = 29 },
+ new Binding() { DisplayName = "Select State 9", Bindings = "D9", TabGroup = "Save States", DefaultBinding = "D9", Ordinal = 30 },
+ new Binding() { DisplayName = "Save Named State", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 31 },
+ new Binding() { DisplayName = "Load Named State", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 32 },
+ new Binding() { DisplayName = "Previous Slot", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 33 },
+ new Binding() { DisplayName = "Next Slot", Bindings = "", TabGroup = "Save States", DefaultBinding = "", Ordinal = 34 },
+
+ //Movie
+ new Binding() { DisplayName = "Toggle read-only", Bindings = "Q", TabGroup = "Movie", DefaultBinding = "Q", Ordinal = 0 },
+ new Binding() { DisplayName = "Play Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 1 },
+ new Binding() { DisplayName = "Record Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 2 },
+ new Binding() { DisplayName = "Stop Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 3 },
+ new Binding() { DisplayName = "Play from beginning", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 4 },
+ new Binding() { DisplayName = "Save Movie", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 5 },
+ new Binding() { DisplayName = "Toggle MultiTrack", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 6 },
+ new Binding() { DisplayName = "MT Select All", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 7 },
+ new Binding() { DisplayName = "MT Select None", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 8 },
+ new Binding() { DisplayName = "MT Increment Player", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 9 },
+ new Binding() { DisplayName = "MT Decrement Player", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 10 },
+ new Binding() { DisplayName = "Movie Poke", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 11 },
+ new Binding() { DisplayName = "Scrub Input", Bindings = "", TabGroup = "Movie", DefaultBinding = "", Ordinal = 12 },
+
+ //Tools
+ new Binding() { DisplayName = "Ram Watch", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 0 },
+ new Binding() { DisplayName = "Ram Search", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 1 },
+ new Binding() { DisplayName = "Hex Editor", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 3 },
+ new Binding() { DisplayName = "Trace Logger", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 4 },
+ new Binding() { DisplayName = "Lua Console", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 5 },
+ new Binding() { DisplayName = "Cheats", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 6 },
+ new Binding() { DisplayName = "TAStudio", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 7 },
+ new Binding() { DisplayName = "ToolBox", Bindings = "T", TabGroup = "Tools", DefaultBinding = "", Ordinal = 8 },
+ new Binding() { DisplayName = "Virtual Pad", Bindings = "", TabGroup = "Tools", DefaultBinding = "", Ordinal = 9 },
+
+ new Binding() { DisplayName = "New Search", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 10 },
+ new Binding() { DisplayName = "Do Search", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 11 },
+ new Binding() { DisplayName = "Previous Compare To", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 12 },
+ new Binding() { DisplayName = "Next Compare To", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 13 },
+ new Binding() { DisplayName = "Previous Operator", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 14 },
+ new Binding() { DisplayName = "Next Operator", Bindings = "", TabGroup = "Ram Search", DefaultBinding = "", Ordinal = 15 },
+
+ //SNES
+ new Binding() { DisplayName = "Toggle BG 1", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 0 },
+ new Binding() { DisplayName = "Toggle BG 2", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 1 },
+ new Binding() { DisplayName = "Toggle BG 3", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 2 },
+ new Binding() { DisplayName = "Toggle BG 4", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 3 },
+ new Binding() { DisplayName = "Toggle OBJ 1", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 4 },
+ new Binding() { DisplayName = "Toggle OBJ 2", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 5 },
+ new Binding() { DisplayName = "Toggle OBJ 3", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 6 },
+ new Binding() { DisplayName = "Toggle OBJ 4", Bindings = "", TabGroup = "SNES", DefaultBinding = "", Ordinal = 7 },
+
+ //Analog
+ new Binding() { DisplayName = "Y Up Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 0 },
+ new Binding() { DisplayName = "Y Up Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 1 },
+ new Binding() { DisplayName = "Y Down Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 2 },
+ new Binding() { DisplayName = "Y Down Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 3 },
+ new Binding() { DisplayName = "X Up Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 4 },
+ new Binding() { DisplayName = "X Up Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 5 },
+ new Binding() { DisplayName = "X Down Small", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 6 },
+ new Binding() { DisplayName = "X Down Large", Bindings = "", TabGroup = "Analog", DefaultBinding = "", Ordinal = 7 },
+
+ };
+ }
+ }
+ }
+
+ public class Binding
+ {
+ //TODO: how about a delegate, that would be called by the mainform? Thereby putting all the action logic in one place
+ public string DisplayName;
+ public string Bindings;
+ public string DefaultBinding;
+ public string TabGroup;
+ public int Ordinal = 0;
+ public Binding() { }
+ }
+
+ public class PathEntryCollection : IEnumerable
+ {
+ public List Paths { get; private set; }
+
+ public PathEntryCollection()
+ {
+ Paths = new List();
+ Paths.AddRange(DefaultValues);
+ }
+
+ public void Add(PathEntry p)
+ {
+ Paths.Add(p);
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ return Paths.GetEnumerator();
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public PathEntry this[string system, string type]
+ {
+ get
+ {
+ return Paths.FirstOrDefault(x => x.HasSystem(system) && x.Type == type);
+ }
+ }
+
+ public void ResolveWithDefaults()
+ {
+ //Add missing entries
+ foreach (PathEntry defaultpath in DefaultValues)
+ {
+ var path = Paths.FirstOrDefault(x => x.System == defaultpath.System && x.Type == defaultpath.Type);
+ if (path == null)
+ {
+ Paths.Add(defaultpath);
+ }
+ }
+
+ List entriesToRemove = new List();
+
+ //Remove entries that no longer exist in defaults
+ foreach (PathEntry pathEntry in Paths)
+ {
+ var path = DefaultValues.FirstOrDefault(x => x.System == pathEntry.System && x.Type == pathEntry.Type);
+ if (path == null)
+ {
+ entriesToRemove.Add(pathEntry);
+ }
+ }
+
+ foreach (PathEntry entry in entriesToRemove)
+ {
+ Paths.Remove(entry);
+ }
+
+ //Add missing displaynames
+ var missingDisplayPaths = Paths.Where(x => x.SystemDisplayName == null).ToList();
+ foreach (PathEntry path in missingDisplayPaths)
+ {
+ path.SystemDisplayName = DefaultValues.FirstOrDefault(x => x.System == path.System).SystemDisplayName;
+
+ }
+ }
+
+ //Some frequently requested paths, made into a property for convenience
+ public string WatchPath { get { return Global.Config.PathEntries["Global", "Watch (.wch)"].Path; } }
+ public string MoviesPath { get { return Global.Config.PathEntries["Global", "Movies"].Path; } }
+ public string LuaPath { get { return Global.Config.PathEntries["Global", "Lua"].Path; } }
+ public string LogPath { get { return Global.Config.PathEntries["Global", "Debug Logs"].Path; } }
+ public string FirmwaresPath { get { return Global.Config.PathEntries["Global", "Firmware"].Path; } }
+ public string AVPath { get { return Global.Config.PathEntries["Global", "A/V Dumps"].Path; } }
+ public string GlobalBase { get { return Global.Config.PathEntries["Global", "Base"].Path; } }
+
+ public static List DefaultValues
+ {
+ get
+ {
+ return new List()
+ {
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Movies", Path = Path.Combine(".", "Movies"), Ordinal = 0 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Movie backups", Path = Path.Combine(".", "Movies", "backup"), Ordinal = 1 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Lua", Path = Path.Combine(".", "Lua"), Ordinal = 2 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Watch (.wch)", Path = ".", Ordinal = 3 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "A/V Dumps", Path = ".", Ordinal = 4 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Debug Logs", Path = ".", Ordinal = 5 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Firmware", Path = Path.Combine(".", "Firmware"), Ordinal = 6 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Base ROM", Path = ".", Ordinal = 6 },
+ new PathEntry() { System = "Global_NULL", SystemDisplayName="Global", Type = "Base", Path = ".", Ordinal = 6 },
+
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Base", Path = Path.Combine(".", "Intellivision"), Ordinal = 0 },
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+ new PathEntry() { System = "INTV", SystemDisplayName="Intellivision", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 },
+
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Base", Path = Path.Combine(".", "NES"), Ordinal = 0 },
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+ new PathEntry() { System = "NES", SystemDisplayName="NES", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 },
+
+ new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Base", Path= Path.Combine(".", "SNES"), Ordinal = 0 },
+ new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "SNES_SGB", SystemDisplayName="SNES", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Base", Path= Path.Combine(".", "GBA"), Ordinal = 0 },
+ new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "GBA", SystemDisplayName="GBA", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Base", Path= Path.Combine(".", "SMS"), Ordinal = 0 },
+ new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "SMS", SystemDisplayName="SMS", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Base", Path= Path.Combine(".", "Game Gear"), Ordinal = 0 },
+ new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "GG", SystemDisplayName="GG", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Base", Path= Path.Combine(".", "SG-1000"), Ordinal = 0 },
+ new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "SG", SystemDisplayName="SG", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Base", Path= Path.Combine(".", "Genesis"), Ordinal = 0 },
+ new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "GEN", SystemDisplayName="Genesis", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Base", Path= Path.Combine(".", "PC Engine"), Ordinal = 0 },
+ new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "PCE_PCECD_SGX", SystemDisplayName="PC Engine", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Base", Path= Path.Combine(".", "Gameboy"), Ordinal = 0 },
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+ new PathEntry() { System = "GB_GBC", SystemDisplayName="Gameboy", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 },
+
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Base", Path= Path.Combine(".", "Dual Gameboy"), Ordinal = 0 },
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+ new PathEntry() { System = "DGB", SystemDisplayName="Dual Gameboy", Type = "Palettes", Path = Path.Combine(".", "Palettes"), Ordinal = 6 },
+
+ new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Base", Path= Path.Combine(".", "TI83"), Ordinal = 0 },
+ new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "TI83", SystemDisplayName="TI83", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Base", Path= Path.Combine(".", "Atari 2600"), Ordinal = 0 },
+ new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "A26", SystemDisplayName="Atari 2600", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Base", Path= Path.Combine(".", "Atari 7800"), Ordinal = 0 },
+ new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "A78", SystemDisplayName="Atari 7800", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Base", Path= Path.Combine(".", "C64"), Ordinal = 0 },
+ new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "C64", SystemDisplayName="Commodore 64", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Base", Path= Path.Combine(".", "PSX"), Ordinal = 0 },
+ new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "PSX", SystemDisplayName="Playstation", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Base", Path= Path.Combine(".", "Coleco"), Ordinal = 0 },
+ new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "Coleco", SystemDisplayName = "Coleco", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Base", Path= Path.Combine(".", "N64"), Ordinal = 0 },
+ new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "N64", SystemDisplayName = "N64", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+
+ new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Base", Path= Path.Combine(".", "Saturn"), Ordinal = 0 },
+ new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "ROM", Path = ".", Ordinal = 1 },
+ new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 },
+ new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 },
+ new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 },
+ new PathEntry() { System = "SAT", SystemDisplayName = "Saturn", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 },
+ };
+ }
+ }
+ }
+
+ public class PathEntry
+ {
+ public string SystemDisplayName;
+ public string Type;
+ public string Path;
+ public string System;
+ public int Ordinal;
+ public PathEntry() { }
+ public bool HasSystem(string systemID)
+ {
+ string[] ids = System.Split('_');
+ return ids.Contains(systemID);
+ }
+ }
+
+ public enum PLUGINTYPE { RICE, GLIDE, GLIDE64MK2 };
+
+ public interface iPluginSettings
+ {
+ PLUGINTYPE PluginType { get; }
+ Dictionary GetPluginSettings();
+ }
+
+ public class N64RicePluginSettings : iPluginSettings
+ {
+ public PLUGINTYPE PluginType
+ {
+ get { return PLUGINTYPE.RICE; }
+ }
+
+ public void FillPerGameHacks(GameInfo game)
+ {
+ if (Global.Config.RicePlugin.UseDefaultHacks)
+ {
+ DisableTextureCRC = game.GetBool("RiceDisableTextureCRC", false);
+ DisableCulling = game.GetBool("RiceDisableCulling", false);
+ IncTexRectEdge = game.GetBool("RiceIncTexRectEdge", false);
+ ZHack = game.GetBool("RiceZHack", false);
+ TextureScaleHack = game.GetBool("RiceTextureScaleHack", false);
+ PrimaryDepthHack = game.GetBool("RicePrimaryDepthHack", false);
+ Texture1Hack = game.GetBool("RiceTexture1Hack", false);
+ FastLoadTile = game.GetBool("RiceFastLoadTile", false);
+ UseSmallerTexture = game.GetBool("RiceUseSmallerTexture", false);
+ VIWidth = game.GetInt("RiceVIWidth", -1);
+ VIHeight = game.GetInt("RiceVIHeight", -1);
+ UseCIWidthAndRatio = game.GetInt("RiceUseCIWidthAndRatio", 0);
+ FullTMEM = game.GetInt("RiceFullTMEM", 0);
+ TxtSizeMethod2 = game.GetBool("RiceTxtSizeMethod2", false);
+ EnableTxtLOD = game.GetBool("RiceEnableTxtLOD", false);
+ FastTextureCRC = game.GetInt("RiceFastTextureCRC", 0);
+ EmulateClear = game.GetBool("RiceEmulateClear", false);
+ ForceScreenClear = game.GetBool("RiceForceScreenClear", false);
+ AccurateTextureMappingHack = game.GetInt("RiceAccurateTextureMappingHack", 0);
+ NormalBlender = game.GetInt("RiceNormalBlender", 0);
+ DisableBlender = game.GetBool("RiceDisableBlender", false);
+ ForceDepthBuffer = game.GetBool("RiceForceDepthBuffer", false);
+ DisableObjBG = game.GetBool("RiceDisableObjBG", false);
+ FrameBufferOption = game.GetInt("RiceFrameBufferOption", 0);
+ RenderToTextureOption = game.GetInt("RiceRenderToTextureOption", 0);
+ ScreenUpdateSettingHack = game.GetInt("RiceScreenUpdateSettingHack", 0);
+ EnableHacksForGame = game.GetInt("RiceEnableHacksForGame", 0);
+ }
+ }
+
+ public Dictionary GetPluginSettings()
+ {
+ //TODO: deal witn the game depedent settings
+ Dictionary dictionary = new Dictionary();
+ System.Reflection.FieldInfo[] members = Global.Config.RicePlugin.GetType().GetFields();
+ foreach (System.Reflection.FieldInfo member in members)
+ {
+ object field = Global.Config.RicePlugin.GetType().GetField(member.Name).GetValue(Global.Config.RicePlugin);
+ dictionary.Add(member.Name, field);
+ }
+
+ return dictionary;
+ }
+
+ public int FrameBufferSetting = 0;
+ public int FrameBufferWriteBackControl = 0;
+ public int RenderToTexture = 0;
+ public int ScreenUpdateSetting = 4;
+ public int Mipmapping = 2;
+ public int FogMethod = 0;
+ public int ForceTextureFilter = 0;
+ public int TextureEnhancement = 0;
+ public int TextureEnhancementControl = 0;
+ public int TextureQuality = 0;
+ public int OpenGLDepthBufferSetting = 16;
+ public int MultiSampling = 0;
+ public int ColorQuality = 0;
+ public int OpenGLRenderSetting = 0;
+ public int AnisotropicFiltering = 0;
+
+
+ public bool NormalAlphaBlender = false;
+ public bool FastTextureLoading = false;
+ public bool AccurateTextureMapping = true;
+ public bool InN64Resolution = false;
+ public bool SaveVRAM = false;
+ public bool DoubleSizeForSmallTxtrBuf = false;
+ public bool DefaultCombinerDisable = false;
+ public bool EnableHacks = true;
+ public bool WinFrameMode = false;
+ public bool FullTMEMEmulation = false;
+ public bool OpenGLVertexClipper = false;
+ public bool EnableSSE = true;
+ public bool EnableVertexShader = false;
+ public bool SkipFrame = false;
+ public bool TexRectOnly = false;
+ public bool SmallTextureOnly = false;
+ public bool LoadHiResCRCOnly = true;
+ public bool LoadHiResTextures = false;
+ public bool DumpTexturesToFiles = false;
+
+ public bool UseDefaultHacks = true;
+ public bool DisableTextureCRC = false;
+ public bool DisableCulling = false;
+ public bool IncTexRectEdge = false;
+ public bool ZHack = false;
+ public bool TextureScaleHack = false;
+ public bool PrimaryDepthHack = false;
+ public bool Texture1Hack = false;
+ public bool FastLoadTile = false;
+ public bool UseSmallerTexture = false;
+ public int VIWidth = -1;
+ public int VIHeight = -1;
+ public int UseCIWidthAndRatio = 0;
+ public int FullTMEM = 0;
+ public bool TxtSizeMethod2 = false;
+ public bool EnableTxtLOD = false;
+ public int FastTextureCRC = 0;
+ public bool EmulateClear = false;
+ public bool ForceScreenClear = false;
+ public int AccurateTextureMappingHack = 0;
+ public int NormalBlender = 0;
+ public bool DisableBlender = false;
+ public bool ForceDepthBuffer = false;
+ public bool DisableObjBG = false;
+ public int FrameBufferOption = 0;
+ public int RenderToTextureOption = 0;
+ public int ScreenUpdateSettingHack = 0;
+ public int EnableHacksForGame = 0;
+ }
+
+ public class N64GlidePluginSettings : iPluginSettings
+ {
+ public PLUGINTYPE PluginType
+ {
+ get { return PLUGINTYPE.GLIDE; }
+ }
+
+ public void FillPerGameHacks(GameInfo game)
+ {
+ if (Global.Config.GlidePlugin.UseDefaultHacks)
+ {
+ alt_tex_size = Global.Game.GetBool("Glide_alt_tex_size", false);
+ buff_clear = Global.Game.GetBool("Glide_buff_clear", true);
+ decrease_fillrect_edge = Global.Game.GetBool("Glide_decrease_fillrect_edge", false);
+ detect_cpu_write = Global.Game.GetBool("Glide_detect_cpu_write", false);
+ fb_clear = Global.Game.GetBool("Glide_fb_clear", false);
+ fb_hires = Global.Game.GetBool("Glide_fb_clear", true);
+ fb_read_alpha = Global.Game.GetBool("Glide_fb_read_alpha", false);
+ fb_smart = Global.Game.GetBool("Glide_fb_smart", false);
+ fillcolor_fix = Global.Game.GetBool("Glide_fillcolor_fix", false);
+ fog = Global.Game.GetBool("Glide_fog", true);
+ force_depth_compare = Global.Game.GetBool("Glide_force_depth_compare", false);
+ force_microcheck = Global.Game.GetBool("Glide_force_microcheck", false);
+ fb_hires_buf_clear = Global.Game.GetBool("Glide_fb_hires_buf_clear", true);
+ fb_ignore_aux_copy = Global.Game.GetBool("Glide_fb_ignore_aux_copy", false);
+ fb_ignore_previous = Global.Game.GetBool("Glide_fb_ignore_previous", false);
+ increase_primdepth = Global.Game.GetBool("Glide_increase_primdepth", false);
+ increase_texrect_edge = Global.Game.GetBool("Glide_increase_texrect_edge", false);
+ fb_optimize_texrect = Global.Game.GetBool("Glide_fb_optimize_texrect", true);
+ fb_optimize_write = Global.Game.GetBool("Glide_fb_optimize_write", false);
+ PPL = Global.Game.GetBool("Glide_PPL", false);
+ soft_depth_compare = Global.Game.GetBool("Glide_soft_depth_compare", false);
+ use_sts1_only = Global.Game.GetBool("Glide_use_sts1_only", false);
+ wrap_big_tex = Global.Game.GetBool("Glide_wrap_big_tex", false);
+
+ depth_bias = Global.Game.GetInt("Glide_depth_bias", 20);
+ filtering = Global.Game.GetInt("Glide_filtering", 1);
+ fix_tex_coord = Global.Game.GetInt("Glide_fix_tex_coord", 0);
+ lodmode = Global.Game.GetInt("Glide_lodmode", 0);
+
+ stipple_mode = Global.Game.GetInt("Glide_stipple_mode", 2);
+ stipple_pattern = Global.Game.GetInt("Glide_stipple_pattern", 1041204192);
+ swapmode = Global.Game.GetInt("Glide_swapmode", 1);
+ enable_hacks_for_game = Global.Game.GetInt("Glide_enable_hacks_for_game", 0);
+ }
+ }
+
+ public Dictionary GetPluginSettings()
+ {
+ //TODO: deal witn the game depedent settings
+ Dictionary dictionary = new Dictionary();
+ System.Reflection.FieldInfo[] members = Global.Config.GlidePlugin.GetType().GetFields();
+ foreach (System.Reflection.FieldInfo member in members)
+ {
+ object field = Global.Config.GlidePlugin.GetType().GetField(member.Name).GetValue(Global.Config.GlidePlugin);
+ dictionary.Add(member.Name, field);
+ }
+
+ return dictionary;
+ }
+
+ public int wfmode = 1;
+ public bool wireframe = false;
+ public int card_id = 0;
+ public bool flame_corona = false;
+ public int ucode = 2;
+ public bool autodetect_ucode = true;
+ public bool motionblur = false;
+ public bool fb_read_always = false;
+ public bool unk_as_red = false;
+ public bool filter_cache = false;
+ public bool fast_crc = false;
+ public bool disable_auxbuf = false;
+ public bool fbo = false;
+ public bool noglsl = true;
+ public bool noditheredalpha = true;
+ public int tex_filter = 0;
+ public bool fb_render = false;
+ public bool wrap_big_tex = false;
+ public bool use_sts1_only = false;
+ public bool soft_depth_compare = false;
+ public bool PPL = false;
+ public bool fb_optimize_write = false;
+ public bool fb_optimize_texrect = true;
+ public bool increase_texrect_edge = false;
+ public bool increase_primdepth = false;
+ public bool fb_ignore_previous = false;
+ public bool fb_ignore_aux_copy = false;
+ public bool fb_hires_buf_clear = true;
+ public bool force_microcheck = false;
+ public bool force_depth_compare = false;
+ public bool fog = true;
+ public bool fillcolor_fix = false;
+ public bool fb_smart = false;
+ public bool fb_read_alpha = false;
+ public bool fb_get_info = false;
+ public bool fb_hires = true;
+ public bool fb_clear = false;
+ public bool detect_cpu_write = false;
+ public bool decrease_fillrect_edge = false;
+ public bool buff_clear = true;
+ public bool alt_tex_size = false;
+ public bool UseDefaultHacks = true;
+ public int enable_hacks_for_game = 0;
+ public int swapmode = 1;
+ public int stipple_pattern = 1041204192;
+ public int stipple_mode = 2;
+ public int scale_y = 100000;
+ public int scale_x = 100000;
+ public int offset_y = 0;
+ public int offset_x = 0;
+ public int lodmode = 0;
+ public int fix_tex_coord = 0;
+ public int filtering = 1;
+ public int depth_bias = 20;
+ }
+
+ public class N64Glide64mk2PluginSettings : iPluginSettings
+ {
+ public PLUGINTYPE PluginType
+ {
+ get { return PLUGINTYPE.GLIDE64MK2; }
+ }
+
+ public void FillPerGameHacks(GameInfo game)
+ {
+ if (Global.Config.Glide64mk2Plugin.UseDefaultHacks)
+ {
+ use_sts1_only = Global.Game.GetBool("Glide64mk2_use_sts1_only", false);
+ optimize_texrect = Global.Game.GetBool("Glide64mk2_optimize_texrect", true);
+ increase_texrect_edge = Global.Game.GetBool("Glide64mk2_increase_texrect_edge", false);
+ ignore_aux_copy = Global.Game.GetBool("Glide64mk2_ignore_aux_copy", false);
+ hires_buf_clear = Global.Game.GetBool("Glide64mk2_hires_buf_clear", true);
+ force_microcheck = Global.Game.GetBool("Glide64mk2_force_microcheck", false);
+ fog = Global.Game.GetBool("Glide64mk2_fog", true);
+ fb_smart = Global.Game.GetBool("Glide64mk2_fb_smart", false);
+ fb_read_alpha = Global.Game.GetBool("Glide64mk2_fb_read_alpha", false);
+ fb_hires = Global.Game.GetBool("Glide64mk2_fb_hires", true);
+ detect_cpu_write = Global.Game.GetBool("Glide64mk2_detect_cpu_write", false);
+ decrease_fillrect_edge = Global.Game.GetBool("Glide64mk2_decrease_fillrect_edge", false);
+ buff_clear = Global.Game.GetBool("Glide64mk2_buff_clear", true);
+ alt_tex_size = Global.Game.GetBool("Glide64mk2_alt_tex_size", true);
+ swapmode = Global.Game.GetInt("Glide64mk2_swapmode", 1);
+ stipple_pattern = Global.Game.GetInt("Glide64mk2_stipple_pattern", 1041204192);
+ stipple_mode = Global.Game.GetInt("Glide64mk2_stipple_mode", 2);
+ lodmode = Global.Game.GetInt("Glide64mk2_lodmode", 0);
+ filtering = Global.Game.GetInt("Glide64mk2_filtering", 0);
+ correct_viewport = Global.Game.GetBool("Glide64mk2_correct_viewport", false);
+ force_calc_sphere = Global.Game.GetBool("Glide64mk2_force_calc_sphere", false);
+ pal230 = Global.Game.GetBool("Glide64mk2_pal230", false);
+ texture_correction = Global.Game.GetBool("Glide64mk2_texture_correction", true);
+ n64_z_scale = Global.Game.GetBool("Glide64mk2_n64_z_scale", false);
+ old_style_adither = Global.Game.GetBool("Glide64mk2_old_style_adither", false);
+ zmode_compare_less = Global.Game.GetBool("Glide64mk2_zmode_compare_less", false);
+ adjust_aspect = Global.Game.GetBool("Glide64mk2_adjust_aspect", true);
+ clip_zmax = Global.Game.GetBool("Glide64mk2_clip_zmax", true);
+ clip_zmin = Global.Game.GetBool("Glide64mk2_clip_zmin", false);
+ force_quad3d = Global.Game.GetBool("Glide64mk2_force_quad3d", false);
+ useless_is_useless = Global.Game.GetBool("Glide64mk2_useless_is_useless", false);
+ fb_read_always = Global.Game.GetBool("Glide64mk2_fb_read_always", false);
+ aspectmode = Global.Game.GetInt("Glide64mk2_aspectmode", 0);
+ fb_crc_mode = Global.Game.GetInt("Glide64mk2_fb_crc_mode", 1);
+ enable_hacks_for_game = Global.Game.GetInt("Glide64mk2_enable_hacks_for_game", 0);
+ read_back_to_screen = Global.Game.GetInt("Glide64mk2_read_back_to_screen", 0);
+ fast_crc = Global.Game.GetBool("Glide64mk2_fast_crc", true);
+ }
+ }
+
+ public Dictionary GetPluginSettings()
+ {
+ //TODO: deal witn the game depedent settings
+ Dictionary dictionary = new Dictionary();
+ System.Reflection.FieldInfo[] members = Global.Config.Glide64mk2Plugin.GetType().GetFields();
+ foreach (System.Reflection.FieldInfo member in members)
+ {
+ object field = Global.Config.Glide64mk2Plugin.GetType().GetField(member.Name).GetValue(Global.Config.Glide64mk2Plugin);
+ dictionary.Add(member.Name, field);
+ }
+
+ return dictionary;
+ }
+
+ public bool wrpFBO = true;
+ public int card_id = 0;
+ public bool use_sts1_only = false;
+ public bool optimize_texrect = true;
+ public bool increase_texrect_edge = false;
+ public bool ignore_aux_copy = false;
+ public bool hires_buf_clear = true;
+ public bool force_microcheck = false;
+ public bool fog = true;
+ public bool fb_smart = false;
+ public bool fb_read_alpha = false;
+ public bool fb_hires = true;
+ public bool detect_cpu_write = false;
+ public bool decrease_fillrect_edge = false;
+ public bool buff_clear = true;
+ public bool alt_tex_size = false;
+ public int swapmode = 1;
+ public int stipple_pattern = 1041204192;
+ public int stipple_mode = 2;
+ public int lodmode = 0;
+ public int filtering = 0;
+ public bool wrpAnisotropic = false;
+ public bool correct_viewport = false;
+ public bool force_calc_sphere = false;
+ public bool pal230 = false;
+ public bool texture_correction = true;
+ public bool n64_z_scale = false;
+ public bool old_style_adither = false;
+ public bool zmode_compare_less = false;
+ public bool adjust_aspect = true;
+ public bool clip_zmax = true;
+ public bool clip_zmin = false;
+ public bool force_quad3d = false;
+ public bool useless_is_useless = false;
+ public bool fb_read_always = false;
+ public bool fb_get_info = false;
+ public bool fb_render = true;
+ public int aspectmode = 0;
+ public int fb_crc_mode = 1;
+ public bool fast_crc = true;
+ public bool UseDefaultHacks = true;
+ public int enable_hacks_for_game = 0;
+ public int read_back_to_screen = 0;
+ }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/BizHawk.Client.Common/ConfigService.cs b/BizHawk.Client.Common/ConfigService.cs
new file mode 100644
index 0000000000..d661838e35
--- /dev/null
+++ b/BizHawk.Client.Common/ConfigService.cs
@@ -0,0 +1,61 @@
+using System;
+using System.IO;
+using System.Reflection;
+using Newtonsoft.Json;
+
+namespace BizHawk.Client.Common
+{
+ public static class ConfigService
+ {
+ public static T Load(string filepath, T currentConfig) where T : new()
+ {
+ T config = new T();
+
+ try
+ {
+ var file = new FileInfo(filepath);
+ if (file.Exists)
+ using (var reader = file.OpenText())
+ {
+ var s = new JsonSerializer {SuppressMissingMemberException = true, SuppressDuplicateMemberException = true};
+ var r = new JsonReader(reader);
+ config = (T)s.Deserialize(r, typeof(T));
+ }
+ }
+ catch (Exception e) { /*TODO MessageBox.Show(e.ToString(), "Config Error"); */ }
+ if (config == null) return new T();
+
+ //patch up arrays in the config with the minimum number of things
+ foreach(var fi in typeof(T).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public))
+ if (fi.FieldType.IsArray)
+ {
+ Array aold = fi.GetValue(currentConfig) as Array;
+ Array anew = fi.GetValue(config) as Array;
+ if (aold.Length == anew.Length) continue;
+
+ //create an array of the right size
+ Array acreate = Array.CreateInstance(fi.FieldType.GetElementType(), Math.Max(aold.Length,anew.Length));
+
+ //copy the old values in, (presumably the defaults), and then copy the new ones on top
+ Array.Copy(aold, acreate, Math.Min(aold.Length,acreate.Length));
+ Array.Copy(anew, acreate, Math.Min(anew.Length, acreate.Length));
+
+ //stash it into the config struct
+ fi.SetValue(config, acreate);
+ }
+
+ return config;
+ }
+
+ public static void Save(string filepath, object config)
+ {
+ var file = new FileInfo(filepath);
+ using (var writer = file.CreateText())
+ {
+ var s = new JsonSerializer();
+ var w = new JsonWriter(writer) { Formatting = Formatting.Indented };
+ s.Serialize(w, config);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/BizHawk.Client.Common/Global.cs b/BizHawk.Client.Common/Global.cs
new file mode 100644
index 0000000000..dfc3095265
--- /dev/null
+++ b/BizHawk.Client.Common/Global.cs
@@ -0,0 +1,8 @@
+namespace BizHawk.Client.Common
+{
+ public static class Global
+ {
+ public static Config Config;
+ public static GameInfo Game;
+ }
+}
diff --git a/Client.Core/KeyTurbo.cs b/BizHawk.Client.Common/KeyTurbo.cs
similarity index 87%
rename from Client.Core/KeyTurbo.cs
rename to BizHawk.Client.Common/KeyTurbo.cs
index 955ce0ca1e..4bf0ab628b 100644
--- a/Client.Core/KeyTurbo.cs
+++ b/BizHawk.Client.Common/KeyTurbo.cs
@@ -1,4 +1,4 @@
-namespace BizHawk.Client.Core
+namespace BizHawk.Client.Common
{
public class TurboKey
{
diff --git a/Client.Core/Properties/AssemblyInfo.cs b/BizHawk.Client.Common/Properties/AssemblyInfo.cs
similarity index 100%
rename from Client.Core/Properties/AssemblyInfo.cs
rename to BizHawk.Client.Common/Properties/AssemblyInfo.cs
diff --git a/Client.Core/RecentFiles.cs b/BizHawk.Client.Common/RecentFiles.cs
similarity index 93%
rename from Client.Core/RecentFiles.cs
rename to BizHawk.Client.Common/RecentFiles.cs
index ac227aedfb..d98e6e3d1e 100644
--- a/Client.Core/RecentFiles.cs
+++ b/BizHawk.Client.Common/RecentFiles.cs
@@ -3,7 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Linq;
-namespace BizHawk.Client.Core
+namespace BizHawk.Client.Common
{
public class RecentFiles : IEnumerable
{
diff --git a/Client.Core/InputValidate.cs b/BizHawk.Client.Common/helpers/InputValidate.cs
similarity index 95%
rename from Client.Core/InputValidate.cs
rename to BizHawk.Client.Common/helpers/InputValidate.cs
index c2f3241c9f..d33c944eb7 100644
--- a/Client.Core/InputValidate.cs
+++ b/BizHawk.Client.Common/helpers/InputValidate.cs
@@ -1,6 +1,6 @@
using System.Text;
-namespace BizHawk.Client.Core
+namespace BizHawk.Client.Common
{
///
/// Includes helper functions to validate user input
diff --git a/Client.Core/StringHelpers.cs b/BizHawk.Client.Common/helpers/StringHelpers.cs
similarity index 92%
rename from Client.Core/StringHelpers.cs
rename to BizHawk.Client.Common/helpers/StringHelpers.cs
index 2c290748ea..b231101b49 100644
--- a/Client.Core/StringHelpers.cs
+++ b/BizHawk.Client.Common/helpers/StringHelpers.cs
@@ -1,7 +1,7 @@
using System;
using System.Linq;
-namespace BizHawk.Client.Core
+namespace BizHawk.Client.Common
{
public static class StringHelpers
{
diff --git a/BizHawk.Client.Common/tools/Watch.cs b/BizHawk.Client.Common/tools/Watch.cs
new file mode 100644
index 0000000000..5c0f8c1834
--- /dev/null
+++ b/BizHawk.Client.Common/tools/Watch.cs
@@ -0,0 +1,930 @@
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+
+namespace BizHawk.Client.Common
+{
+ public abstract class Watch
+ {
+ public enum WatchSize { Byte = 1, Word = 2, DWord = 4, Separator = 0 };
+ public enum DisplayType { Separator, Signed, Unsigned, Hex, Binary, FixedPoint_12_4, FixedPoint_20_12, Float };
+ public enum PreviousType { Original = 0, LastSearch = 1, LastFrame = 2, LastChange = 3 };
+
+ public static string DisplayTypeToString(DisplayType type)
+ {
+ switch (type)
+ {
+ default:
+ return type.ToString();
+ case DisplayType.FixedPoint_12_4:
+ return "Fixed Point 12.4";
+ case DisplayType.FixedPoint_20_12:
+ return "Fixed Point 20.12";
+ }
+ }
+
+ public static DisplayType StringToDisplayType(string name)
+ {
+ switch (name)
+ {
+ default:
+ return (DisplayType)Enum.Parse(typeof(DisplayType), name);
+ case "Fixed Point 12.4":
+ return DisplayType.FixedPoint_12_4;
+ case "Fixed Point 20.12":
+ return DisplayType.FixedPoint_20_12;
+ }
+ }
+
+ protected int _address;
+ protected MemoryDomain _domain;
+ protected DisplayType _type;
+ protected bool _bigEndian;
+ protected int _changecount;
+ protected string _notes = String.Empty;
+
+ public abstract int? Value { get; }
+ public abstract string ValueString { get; }
+ public abstract WatchSize Size { get; }
+
+ public abstract int? Previous { get; }
+ public abstract string PreviousStr { get; }
+ public abstract void ResetPrevious();
+
+ public abstract bool Poke(string value);
+
+ public virtual DisplayType Type { get { return _type; } set { _type = value; } }
+ public virtual bool BigEndian { get { return _bigEndian; } set { _bigEndian = value; } }
+
+ public MemoryDomain Domain { get { return _domain; } }
+
+ public string DomainName { get { return _domain != null ? _domain.Name : String.Empty; } }
+
+ public virtual int? Address { get { return _address; } }
+
+ public virtual string AddressString { get { return _address.ToString(AddressFormatStr); } }
+
+ public virtual bool IsSeparator { get { return false; } }
+
+ public char SizeAsChar
+ {
+ get
+ {
+ switch (Size)
+ {
+ default:
+ case WatchSize.Separator:
+ return 'S';
+ case WatchSize.Byte:
+ return 'b';
+ case WatchSize.Word:
+ return 'w';
+ case WatchSize.DWord:
+ return 'd';
+ }
+ }
+ }
+
+ public static WatchSize SizeFromChar(char c)
+ {
+ switch (c)
+ {
+ default:
+ case 'S':
+ return WatchSize.Separator;
+ case 'b':
+ return WatchSize.Byte;
+ case 'w':
+ return WatchSize.Word;
+ case 'd':
+ return WatchSize.DWord;
+ }
+ }
+
+ public char TypeAsChar
+ {
+ get
+ {
+ switch (Type)
+ {
+ default:
+ case DisplayType.Separator:
+ return '_';
+ case DisplayType.Unsigned:
+ return 's';
+ case DisplayType.Signed:
+ return 'u';
+ case DisplayType.Hex:
+ return 'h';
+ case DisplayType.Binary:
+ return 'b';
+ case DisplayType.FixedPoint_12_4:
+ return '1';
+ case DisplayType.FixedPoint_20_12:
+ return '2';
+ case DisplayType.Float:
+ return 'f';
+ }
+ }
+ }
+
+ public static DisplayType DisplayTypeFromChar(char c)
+ {
+ switch (c)
+ {
+ default:
+ case '_':
+ return DisplayType.Separator;
+ case 'u':
+ return DisplayType.Unsigned;
+ case 's':
+ return DisplayType.Signed;
+ case 'h':
+ return DisplayType.Hex;
+ case 'b':
+ return DisplayType.Binary;
+ case '1':
+ return DisplayType.FixedPoint_12_4;
+ case '2':
+ return DisplayType.FixedPoint_20_12;
+ case 'f':
+ return DisplayType.Float;
+ }
+ }
+
+ public string AddressFormatStr
+ {
+ get
+ {
+ if (_domain != null)
+ {
+ return "X" + IntHelpers.GetNumDigits(_domain.Size - 1).ToString();
+ }
+ else
+ {
+ return "";
+ }
+ }
+ }
+
+ protected byte GetByte()
+ {
+ return _domain.PeekByte(_address);
+ }
+
+ protected ushort GetWord()
+ {
+ return _domain.PeekWord(_address, _bigEndian ? Endian.Big : Endian.Little);
+ }
+
+ protected uint GetDWord()
+ {
+ return _domain.PeekDWord(_address, _bigEndian ? Endian.Big : Endian.Little);
+ }
+
+ protected void PokeByte(byte val)
+ {
+ _domain.PokeByte(_address, val);
+ }
+
+ protected void PokeWord(ushort val)
+ {
+ _domain.PokeWord(_address, val, _bigEndian ? Endian.Big : Endian.Little);
+ }
+
+ protected void PokeDWord(uint val)
+ {
+ _domain.PokeDWord(_address, val, _bigEndian ? Endian.Big : Endian.Little);
+ }
+
+ public void ClearChangeCount() { _changecount = 0; }
+
+ public string Notes { get { return _notes; } set { _notes = value; } }
+
+ public static Watch GenerateWatch(MemoryDomain domain, int address, WatchSize size, DisplayType type, string notes, bool bigEndian)
+ {
+ switch (size)
+ {
+ default:
+ case WatchSize.Separator:
+ return SeparatorWatch.Instance;
+ case WatchSize.Byte:
+ return new ByteWatch(domain, address, type, bigEndian, notes);
+ case WatchSize.Word:
+ return new WordWatch(domain, address, type, bigEndian, notes);
+ case WatchSize.DWord:
+ return new DWordWatch(domain, address, type, bigEndian, notes);
+ }
+ }
+
+ public static Watch GenerateWatch(MemoryDomain domain, int address, WatchSize size, DisplayType type, bool bigendian, int prev, int changecount)
+ {
+ switch (size)
+ {
+ default:
+ case WatchSize.Separator:
+ return SeparatorWatch.Instance;
+ case WatchSize.Byte:
+ return new ByteWatch(domain, address, type, bigendian, (byte)prev, changecount);
+ case WatchSize.Word:
+ return new WordWatch(domain, address, type, bigendian, (ushort)prev, changecount);
+ case WatchSize.DWord:
+ return new DWordWatch(domain, address, type, bigendian, (uint)prev, changecount);
+ }
+ }
+
+ public static List AvailableTypes(WatchSize size)
+ {
+ switch (size)
+ {
+ default:
+ case WatchSize.Separator:
+ return SeparatorWatch.ValidTypes;
+ case WatchSize.Byte:
+ return ByteWatch.ValidTypes;
+ case WatchSize.Word:
+ return WordWatch.ValidTypes;
+ case WatchSize.DWord:
+ return DWordWatch.ValidTypes;
+ }
+ }
+
+ public int ChangeCount { get { return _changecount; } }
+
+ public abstract string Diff { get; }
+
+ public abstract void Update();
+ }
+
+ public sealed class SeparatorWatch : Watch
+ {
+ public static SeparatorWatch Instance
+ {
+ get { return new SeparatorWatch(); }
+ }
+
+ public override int? Address
+ {
+ get { return null; }
+ }
+
+ public override int? Value
+ {
+ get { return null; }
+ }
+
+ public override int? Previous
+ {
+ get { return null; }
+ }
+
+ public override string AddressString
+ {
+ get { return String.Empty; }
+ }
+
+ public override string ValueString
+ {
+ get { return String.Empty; }
+ }
+
+ public override string PreviousStr
+ {
+ get { return String.Empty; }
+ }
+
+ public override string ToString()
+ {
+ return "----";
+ }
+
+ public override bool IsSeparator
+ {
+ get { return true; }
+ }
+
+ public override WatchSize Size
+ {
+ get { return WatchSize.Separator; }
+ }
+
+ public static List ValidTypes
+ {
+ get { return new List { DisplayType.Separator }; }
+ }
+
+ public override DisplayType Type
+ {
+ get { return DisplayType.Separator; }
+ }
+
+ public override bool Poke(string value)
+ {
+ return false;
+ }
+
+ public override void ResetPrevious()
+ {
+ return;
+ }
+
+ public override string Diff { get { return String.Empty; } }
+
+ public override void Update() { return; }
+ }
+
+ public sealed class ByteWatch : Watch
+ {
+ private byte _previous;
+ private byte _value;
+
+ public ByteWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, string notes)
+ {
+ _address = address;
+ _domain = domain;
+ _value = _previous = GetByte();
+ if (Watch.AvailableTypes(WatchSize.Byte).Contains(type))
+ {
+ _type = type;
+ }
+ _bigEndian = bigEndian;
+ if (notes != null)
+ {
+ Notes = notes;
+ }
+ }
+
+ public ByteWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, byte prev, int changeCount, string notes = null)
+ : this(domain, address, type, bigEndian, notes)
+ {
+ _previous = prev;
+ _changecount = changeCount;
+ }
+
+ public override int? Address
+ {
+ get { return _address; }
+ }
+
+ public override int? Value
+ {
+ get { return GetByte(); }
+ }
+
+ public override string ValueString
+ {
+ get { return FormatValue(GetByte()); }
+ }
+
+ public override int? Previous
+ {
+ get { return _previous; }
+ }
+
+ public override string PreviousStr
+ {
+ get { return FormatValue(_previous); }
+ }
+
+ public override void ResetPrevious()
+ {
+ _previous = GetByte();
+ }
+
+ public override string ToString()
+ {
+ return Notes + ": " + ValueString;
+ }
+
+ public override bool IsSeparator
+ {
+ get { return false; }
+ }
+
+ public override WatchSize Size
+ {
+ get { return WatchSize.Byte; }
+ }
+
+ public static List ValidTypes
+ {
+ get
+ {
+ return new List
+ {
+ DisplayType.Unsigned, DisplayType.Signed, DisplayType.Hex, DisplayType.Binary
+ };
+ }
+ }
+
+ public string FormatValue(byte val)
+ {
+ switch (Type)
+ {
+ default:
+ case DisplayType.Unsigned:
+ return val.ToString();
+ case DisplayType.Signed:
+ return ((sbyte)val).ToString();
+ case DisplayType.Hex:
+ return String.Format("{0:X2}", val);
+ case DisplayType.Binary:
+ return Convert.ToString(val, 2).PadLeft(8, '0').Insert(4, " ");
+ }
+ }
+
+ public override bool Poke(string value)
+ {
+ try
+ {
+ byte val = 0;
+ switch (Type)
+ {
+ case DisplayType.Unsigned:
+ if (InputValidate.IsValidUnsignedNumber(value))
+ {
+ val = (byte)int.Parse(value);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Signed:
+ if (InputValidate.IsValidSignedNumber(value))
+ {
+ val = (byte)(sbyte)int.Parse(value);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Hex:
+ if (InputValidate.IsValidHexNumber(value))
+ {
+ val = (byte)int.Parse(value, NumberStyles.HexNumber);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Binary:
+ if (InputValidate.IsValidBinaryNumber(value))
+ {
+ val = (byte)Convert.ToInt32(value, 2);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ }
+
+ PokeByte(val);
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public override string Diff
+ {
+ get
+ {
+ string diff = String.Empty;
+ int diffVal = _value - _previous;
+ if (diffVal > 0)
+ {
+ diff = "+";
+ }
+ else if (diffVal < 0)
+ {
+ diff = "-";
+ }
+ return diff + FormatValue((byte)(_previous - _value));
+ }
+ }
+
+ public override void Update()
+ {
+ switch (Global.Config.RamWatchDefinePrevious)
+ {
+ case PreviousType.Original:
+ return;
+ case PreviousType.LastChange:
+ var temp = _value;
+ _value = GetByte();
+ if (_value != temp)
+ {
+ _previous = _value;
+ _changecount++;
+ }
+ break;
+ case PreviousType.LastFrame:
+ _previous = _value;
+ _value = GetByte();
+ if (_value != Previous)
+ {
+ _changecount++;
+ }
+ break;
+ }
+ }
+ }
+
+ public sealed class WordWatch : Watch
+ {
+ private ushort _previous;
+ private ushort _value;
+
+ public WordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, string notes)
+ {
+ _domain = domain;
+ _address = address;
+ _value = _previous = GetWord();
+
+ if (Watch.AvailableTypes(WatchSize.Word).Contains(type))
+ {
+ _type = type;
+ }
+ _bigEndian = bigEndian;
+
+ if (notes != null)
+ {
+ Notes = notes;
+ }
+ }
+
+ public WordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, ushort prev, int changeCount, string notes = null)
+ : this(domain, address, type, bigEndian, notes)
+ {
+ _previous = prev;
+ _changecount = changeCount;
+ }
+
+ public override int? Value
+ {
+ get { return GetWord(); }
+ }
+
+ public override int? Previous
+ {
+ get { return _previous; }
+ }
+
+ public override string PreviousStr
+ {
+ get { return FormatValue(_previous); }
+ }
+
+ public override void ResetPrevious()
+ {
+ _previous = GetWord();
+ }
+
+ public override WatchSize Size
+ {
+ get { return WatchSize.Word; }
+ }
+
+ public static List ValidTypes
+ {
+ get
+ {
+ return new List
+ {
+ DisplayType.Unsigned, DisplayType.Signed, DisplayType.Hex, DisplayType.FixedPoint_12_4, DisplayType.Binary
+ };
+ }
+ }
+
+ public override string ValueString
+ {
+ get { return FormatValue(GetWord()); }
+ }
+
+ public override string ToString()
+ {
+ return Notes + ": " + ValueString;
+ }
+
+ public string FormatValue(ushort val)
+ {
+ switch (Type)
+ {
+ default:
+ case DisplayType.Unsigned:
+ return val.ToString();
+ case DisplayType.Signed:
+ return ((short)val).ToString();
+ case DisplayType.Hex:
+ return String.Format("{0:X4}", val);
+ case DisplayType.FixedPoint_12_4:
+ return String.Format("{0:F4}", (val / 16.0));
+ case DisplayType.Binary:
+ return Convert.ToString(val, 2).PadLeft(16, '0').Insert(8, " ").Insert(4, " ").Insert(14, " ");
+ }
+ }
+
+ public override bool Poke(string value)
+ {
+ try
+ {
+ ushort val = 0;
+ switch (Type)
+ {
+ case DisplayType.Unsigned:
+ if (InputValidate.IsValidUnsignedNumber(value))
+ {
+ val = (ushort)int.Parse(value);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Signed:
+ if (InputValidate.IsValidSignedNumber(value))
+ {
+ val = (ushort)(short)int.Parse(value);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Hex:
+ if (InputValidate.IsValidHexNumber(value))
+ {
+ val = (ushort)int.Parse(value, NumberStyles.HexNumber);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Binary:
+ if (InputValidate.IsValidBinaryNumber(value))
+ {
+ val = (ushort)Convert.ToInt32(value, 2);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.FixedPoint_12_4:
+ if (InputValidate.IsValidFixedPointNumber(value))
+ {
+ val = (ushort)(double.Parse(value) * 16.0);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ }
+ PokeWord(val);
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public override string Diff
+ {
+ get { return FormatValue((ushort)(_previous - _value)); }
+ }
+
+ public override void Update()
+ {
+ switch (Global.Config.RamWatchDefinePrevious)
+ {
+ case PreviousType.Original:
+ return;
+ case PreviousType.LastChange:
+ var temp = _value;
+ _value = GetWord();
+
+ if (_value != temp)
+ {
+ _previous = temp;
+ _changecount++;
+ }
+ break;
+ case PreviousType.LastFrame:
+ _previous = _value;
+ _value = GetWord();
+ if (_value != Previous)
+ {
+ _changecount++;
+ }
+ break;
+ }
+ }
+ }
+
+ public sealed class DWordWatch : Watch
+ {
+ private uint _value;
+ private uint _previous;
+
+ public DWordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, string notes)
+ {
+ _domain = domain;
+ _address = address;
+ _value = _previous = GetDWord();
+
+ if (Watch.AvailableTypes(WatchSize.DWord).Contains(type))
+ {
+ _type = type;
+ }
+ _bigEndian = bigEndian;
+
+ if (notes != null)
+ {
+ Notes = notes;
+ }
+ }
+
+ public DWordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, uint prev, int changeCount, string notes = null)
+ : this(domain, address, type, bigEndian, notes)
+ {
+ _previous = prev;
+ _changecount = changeCount;
+ _type = type;
+ _bigEndian = bigEndian;
+ }
+
+ public override int? Value
+ {
+ get { return (int)GetDWord(); }
+ }
+
+ public override int? Previous
+ {
+ get { return (int)_previous; }
+ }
+
+ public override string PreviousStr
+ {
+ get { return FormatValue(_previous); }
+ }
+
+ public override void ResetPrevious()
+ {
+ _previous = GetWord();
+ }
+
+ public override WatchSize Size
+ {
+ get { return WatchSize.DWord; }
+ }
+
+ public static List ValidTypes
+ {
+ get
+ {
+ return new List
+ {
+ DisplayType.Unsigned, DisplayType.Signed, DisplayType.Hex, DisplayType.FixedPoint_20_12, DisplayType.Float
+ };
+ }
+ }
+
+ public override string ValueString
+ {
+ get { return FormatValue(GetDWord()); }
+ }
+
+ public override string ToString()
+ {
+ return Notes + ": " + ValueString;
+ }
+
+ public string FormatValue(uint val)
+ {
+ switch (Type)
+ {
+ default:
+ case DisplayType.Unsigned:
+ return val.ToString();
+ case DisplayType.Signed:
+ return ((int)val).ToString();
+ case DisplayType.Hex:
+ return String.Format("{0:X8}", val);
+ case DisplayType.FixedPoint_20_12:
+ return String.Format("{0:0.######}", (val / 4096.0));
+ case DisplayType.Float:
+ byte[] bytes = BitConverter.GetBytes(val);
+ float _float = BitConverter.ToSingle(bytes, 0);
+ return String.Format("{0:0.######}", _float);
+ }
+ }
+
+ public override bool Poke(string value)
+ {
+ try
+ {
+ uint val = 0;
+ switch (Type)
+ {
+ case DisplayType.Unsigned:
+ if (InputValidate.IsValidUnsignedNumber(value))
+ {
+ val = (uint)int.Parse(value);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Signed:
+ if (InputValidate.IsValidSignedNumber(value))
+ {
+ val = (uint)int.Parse(value);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Hex:
+ if (InputValidate.IsValidHexNumber(value))
+ {
+ val = (uint)int.Parse(value, NumberStyles.HexNumber);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.FixedPoint_20_12:
+ if (InputValidate.IsValidFixedPointNumber(value))
+ {
+ val = (uint)(int)(double.Parse(value) * 4096.0);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ case DisplayType.Float:
+ if (InputValidate.IsValidDecimalNumber(value))
+ {
+ byte[] bytes = BitConverter.GetBytes(float.Parse(value));
+ val = BitConverter.ToUInt32(bytes, 0);
+ }
+ else
+ {
+ return false;
+ }
+ break;
+ }
+ PokeDWord(val);
+ return true;
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public override string Diff
+ {
+ get { return FormatValue(_previous - _value); }
+ }
+
+ public override void Update()
+ {
+ switch (Global.Config.RamWatchDefinePrevious)
+ {
+ case PreviousType.Original:
+ return;
+ case PreviousType.LastChange:
+ var temp = _value;
+ _value = GetDWord();
+ if (_value != temp)
+ {
+ _previous = _value;
+ _changecount++;
+ }
+ break;
+ case PreviousType.LastFrame:
+ _previous = _value;
+ _value = GetDWord();
+ if (_value != Previous)
+ {
+ _changecount++;
+ }
+ break;
+ }
+ }
+ }
+}
diff --git a/BizHawk.MultiClient/AVOut/AviWriter.cs b/BizHawk.MultiClient/AVOut/AviWriter.cs
index 379f277755..c0b1ebd79f 100644
--- a/BizHawk.MultiClient/AVOut/AviWriter.cs
+++ b/BizHawk.MultiClient/AVOut/AviWriter.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
//some helpful p/invoke from http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx?msg=1142967
diff --git a/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs b/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs
index 8d1fc70625..8e18f84052 100644
--- a/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs
+++ b/BizHawk.MultiClient/AVOut/FFmpegWriterForm.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/AVOut/GifWriter.cs b/BizHawk.MultiClient/AVOut/GifWriter.cs
index e1dc2dc463..2029977ed2 100644
--- a/BizHawk.MultiClient/AVOut/GifWriter.cs
+++ b/BizHawk.MultiClient/AVOut/GifWriter.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.IO;
using System.Drawing;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.AVOut
{
diff --git a/BizHawk.MultiClient/AVOut/GifWriterForm.cs b/BizHawk.MultiClient/AVOut/GifWriterForm.cs
index 74c7521d0c..76eb79e0d8 100644
--- a/BizHawk.MultiClient/AVOut/GifWriterForm.cs
+++ b/BizHawk.MultiClient/AVOut/GifWriterForm.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.AVOut
{
diff --git a/BizHawk.MultiClient/AVOut/JMDWriter.cs b/BizHawk.MultiClient/AVOut/JMDWriter.cs
index 46faffd022..fd154f2719 100644
--- a/BizHawk.MultiClient/AVOut/JMDWriter.cs
+++ b/BizHawk.MultiClient/AVOut/JMDWriter.cs
@@ -7,7 +7,7 @@ using System.Text;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.Zip.Compression;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs b/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs
index a75663a354..14dc35dee8 100644
--- a/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs
+++ b/BizHawk.MultiClient/AVOut/VideoWriterChooserForm.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/BizHawk.MultiClient.csproj b/BizHawk.MultiClient/BizHawk.MultiClient.csproj
index d8fb797705..65ba18ba53 100644
--- a/BizHawk.MultiClient/BizHawk.MultiClient.csproj
+++ b/BizHawk.MultiClient/BizHawk.MultiClient.csproj
@@ -978,9 +978,9 @@
{EE135301-08B3-4EFC-A61C-1C53E1C65CB9}
BizHawk.Util
-
+
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}
- Client.Core
+ BizHawk.Client.Common
diff --git a/BizHawk.MultiClient/DisplayManager/DisplayManager.cs b/BizHawk.MultiClient/DisplayManager/DisplayManager.cs
index 9bae8b03bb..152bd3f1e0 100644
--- a/BizHawk.MultiClient/DisplayManager/DisplayManager.cs
+++ b/BizHawk.MultiClient/DisplayManager/DisplayManager.cs
@@ -11,7 +11,7 @@ using System.Drawing.Imaging;
//using dx=SlimDX;
//using d3d=SlimDX.Direct3D9;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/FirmwareManager.cs b/BizHawk.MultiClient/FirmwareManager.cs
index 57b8815f50..fce8307986 100644
--- a/BizHawk.MultiClient/FirmwareManager.cs
+++ b/BizHawk.MultiClient/FirmwareManager.cs
@@ -3,7 +3,7 @@ using System.Linq;
using System.IO;
using System.Collections.Generic;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
//IDEA: put filesizes in DB too. then scans can go real quick by only scanning filesizes that match (and then scanning filesizes that dont match, in case of an emergency)
//this would be adviseable if we end up with a very large firmware file
diff --git a/BizHawk.MultiClient/Input/ControllerBinding.cs b/BizHawk.MultiClient/Input/ControllerBinding.cs
index 6e5b1e9701..189db973f7 100644
--- a/BizHawk.MultiClient/Input/ControllerBinding.cs
+++ b/BizHawk.MultiClient/Input/ControllerBinding.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Linq;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
@@ -16,7 +16,7 @@ namespace BizHawk.MultiClient
private readonly Dictionary FloatRanges = new WorkingDictionary();
- private readonly Dictionary FloatBinds = new Dictionary();
+ private readonly Dictionary FloatBinds = new Dictionary();
public Controller(ControllerDefinition definition)
{
@@ -155,7 +155,7 @@ namespace BizHawk.MultiClient
bindings[button].Add(control.Trim());
}
- public void BindFloat(string button, BizHawk.Client.Core.Config.AnalogBind bind)
+ public void BindFloat(string button, BizHawk.Client.Common.Config.AnalogBind bind)
{
FloatBinds[button] = bind;
}
diff --git a/BizHawk.MultiClient/LogConsole.cs b/BizHawk.MultiClient/LogConsole.cs
index c2b25990b1..f9de1c7591 100644
--- a/BizHawk.MultiClient/LogConsole.cs
+++ b/BizHawk.MultiClient/LogConsole.cs
@@ -3,7 +3,7 @@ using System.Text;
using System.IO;
using System.Runtime.InteropServices;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
#pragma warning disable 162
diff --git a/BizHawk.MultiClient/LogWindow.cs b/BizHawk.MultiClient/LogWindow.cs
index c0247c9b4d..b0ad3b4908 100644
--- a/BizHawk.MultiClient/LogWindow.cs
+++ b/BizHawk.MultiClient/LogWindow.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
//todo - perks - pause, copy to clipboard, backlog length limiting
diff --git a/BizHawk.MultiClient/MainForm.MenuItems.cs b/BizHawk.MultiClient/MainForm.MenuItems.cs
index 3938b058c5..5c482b7418 100644
--- a/BizHawk.MultiClient/MainForm.MenuItems.cs
+++ b/BizHawk.MultiClient/MainForm.MenuItems.cs
@@ -7,7 +7,7 @@ using BizHawk.Emulation.Consoles.Calculator;
using BizHawk.Emulation.Consoles.GB;
using BizHawk.Emulation.Consoles.Nintendo.SNES;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/MainForm.Movie.cs b/BizHawk.MultiClient/MainForm.Movie.cs
index 5152900f60..bf3fb520a5 100644
--- a/BizHawk.MultiClient/MainForm.Movie.cs
+++ b/BizHawk.MultiClient/MainForm.Movie.cs
@@ -2,7 +2,7 @@
using System.IO;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/MainForm.Rewind.cs b/BizHawk.MultiClient/MainForm.Rewind.cs
index c0664adc7f..981955cab1 100644
--- a/BizHawk.MultiClient/MainForm.Rewind.cs
+++ b/BizHawk.MultiClient/MainForm.Rewind.cs
@@ -4,7 +4,7 @@ using System.Threading;
using System.Collections.Generic;
using System.Collections.Concurrent;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs
index fbfb122975..7d2ea66d4a 100644
--- a/BizHawk.MultiClient/MainForm.cs
+++ b/BizHawk.MultiClient/MainForm.cs
@@ -22,7 +22,7 @@ using BizHawk.Emulation.Consoles.Nintendo.SNES;
using BizHawk.Emulation.Consoles.Sega;
using BizHawk.Emulation.Consoles.TurboGrafx;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
@@ -967,7 +967,7 @@ namespace BizHawk.MultiClient
}
}
- static Controller BindToDefinition(ControllerDefinition def, Dictionary> allbinds, Dictionary> analogbinds)
+ static Controller BindToDefinition(ControllerDefinition def, Dictionary> allbinds, Dictionary> analogbinds)
{
var ret = new Controller(def);
Dictionary binds;
diff --git a/BizHawk.MultiClient/Program.cs b/BizHawk.MultiClient/Program.cs
index f466f7aad3..b8bcf452cc 100644
--- a/BizHawk.MultiClient/Program.cs
+++ b/BizHawk.MultiClient/Program.cs
@@ -12,7 +12,7 @@ using Microsoft.VisualBasic.ApplicationServices;
#pragma warning disable 618
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/RenderPanel.cs b/BizHawk.MultiClient/RenderPanel.cs
index 4c3ae34eb0..bdec14fb5c 100644
--- a/BizHawk.MultiClient/RenderPanel.cs
+++ b/BizHawk.MultiClient/RenderPanel.cs
@@ -11,7 +11,7 @@ using SlimDX.Direct3D9;
using d3d9font=SlimDX.Direct3D9.Font;
#endif
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Core;
namespace BizHawk.MultiClient
diff --git a/BizHawk.MultiClient/SavestateManager.cs b/BizHawk.MultiClient/SavestateManager.cs
index fb30336089..b4dab846d2 100644
--- a/BizHawk.MultiClient/SavestateManager.cs
+++ b/BizHawk.MultiClient/SavestateManager.cs
@@ -1,6 +1,6 @@
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/Sound.cs b/BizHawk.MultiClient/Sound.cs
index b26404ed22..a481e17934 100644
--- a/BizHawk.MultiClient/Sound.cs
+++ b/BizHawk.MultiClient/Sound.cs
@@ -6,7 +6,7 @@ using SlimDX.DirectSound;
using SlimDX.Multimedia;
#endif
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/Throttle.cs b/BizHawk.MultiClient/Throttle.cs
index b5708e98d2..20ea680b93 100644
--- a/BizHawk.MultiClient/Throttle.cs
+++ b/BizHawk.MultiClient/Throttle.cs
@@ -2,7 +2,7 @@
using System.Runtime.InteropServices;
using System.Threading;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
//this throttle is nitsuja's fine-tuned techniques from desmume
diff --git a/BizHawk.MultiClient/config/AutofireConfig.cs b/BizHawk.MultiClient/config/AutofireConfig.cs
index 1d2ee433c1..a5a53d4400 100644
--- a/BizHawk.MultiClient/config/AutofireConfig.cs
+++ b/BizHawk.MultiClient/config/AutofireConfig.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/ControllerConfig.cs b/BizHawk.MultiClient/config/ControllerConfig.cs
index 32b135e945..9adffdd766 100644
--- a/BizHawk.MultiClient/config/ControllerConfig.cs
+++ b/BizHawk.MultiClient/config/ControllerConfig.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Linq;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
@@ -53,7 +53,7 @@ namespace BizHawk.MultiClient
return cp;
}
- Control CreateAnalogPanel(Dictionary settings, List buttons, Size size)
+ Control CreateAnalogPanel(Dictionary settings, List buttons, Size size)
{
var acp = new AnalogBindPanel(settings, buttons) { Dock = DockStyle.Fill };
return acp;
@@ -155,7 +155,7 @@ namespace BizHawk.MultiClient
private void LoadPanels(Dictionary> normal,
Dictionary> autofire,
- Dictionary> analog)
+ Dictionary> analog)
{
LoadToPanel(tabPage1, the_definition.Name, the_definition.BoolButtons, normal, "", CreateNormalPanel);
LoadToPanel(tabPage2, the_definition.Name, the_definition.BoolButtons, autofire, "", CreateNormalPanel);
@@ -172,7 +172,7 @@ namespace BizHawk.MultiClient
LoadPanels(cd.AllTrollers, cd.AllTrollersAutoFire, cd.AllTrollersAnalog);
}
- private void LoadPanels(BizHawk.Client.Core.Config c)
+ private void LoadPanels(BizHawk.Client.Common.Config c)
{
LoadPanels(c.AllTrollers, c.AllTrollersAutoFire, c.AllTrollersAnalog);
}
@@ -358,10 +358,10 @@ namespace BizHawk.MultiClient
{
public Dictionary> AllTrollers = new Dictionary>();
public Dictionary> AllTrollersAutoFire = new Dictionary>();
- public Dictionary> AllTrollersAnalog = new Dictionary>();
+ public Dictionary> AllTrollersAnalog = new Dictionary>();
}
- public static void ConfigCheckAllControlDefaults(BizHawk.Client.Core.Config c)
+ public static void ConfigCheckAllControlDefaults(BizHawk.Client.Common.Config c)
{
if (c.AllTrollers.Count == 0 && c.AllTrollersAutoFire.Count == 0 && c.AllTrollersAnalog.Count == 0)
{
@@ -382,7 +382,7 @@ namespace BizHawk.MultiClient
cd = ConfigService.Load(ControlDefaultPath, cd);
cd.AllTrollers[the_definition.Name] = new Dictionary();
cd.AllTrollersAutoFire[the_definition.Name] = new Dictionary();
- cd.AllTrollersAnalog[the_definition.Name] = new Dictionary();
+ cd.AllTrollersAnalog[the_definition.Name] = new Dictionary();
SaveToDefaults(cd);
diff --git a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs
index 2ebe26bad2..61d2797747 100644
--- a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs
+++ b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindControl.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
@@ -19,10 +19,10 @@ namespace BizHawk.MultiClient
}
public string ButtonName;
- public BizHawk.Client.Core.Config.AnalogBind Bind;
+ public BizHawk.Client.Common.Config.AnalogBind Bind;
bool listening = false;
- public AnalogBindControl(string ButtonName, BizHawk.Client.Core.Config.AnalogBind Bind)
+ public AnalogBindControl(string ButtonName, BizHawk.Client.Common.Config.AnalogBind Bind)
: this()
{
this.Bind = Bind;
diff --git a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs
index bcfb0ffa63..ea9bafc8bc 100644
--- a/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs
+++ b/BizHawk.MultiClient/config/ControllerConfig/AnalogBindPanel.cs
@@ -5,15 +5,15 @@ using System.Text;
using System.Windows.Forms;
using System.Drawing;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
class AnalogBindPanel : UserControl
{
- Dictionary RealConfigObject;
+ Dictionary RealConfigObject;
- public AnalogBindPanel(Dictionary RealConfigObject, List RealConfigButtons = null)
+ public AnalogBindPanel(Dictionary RealConfigObject, List RealConfigButtons = null)
:base()
{
this.RealConfigObject = RealConfigObject;
@@ -40,7 +40,7 @@ namespace BizHawk.MultiClient
/// save to config
///
/// if non-null, save to possibly different config object than originally initialized from
- public void Save(Dictionary SaveConfigObject = null)
+ public void Save(Dictionary SaveConfigObject = null)
{
var saveto = SaveConfigObject ?? RealConfigObject;
foreach (Control c in Controls)
diff --git a/BizHawk.MultiClient/config/FirmwaresConfig.cs b/BizHawk.MultiClient/config/FirmwaresConfig.cs
index 2fc974a21f..bdd18ef39a 100644
--- a/BizHawk.MultiClient/config/FirmwaresConfig.cs
+++ b/BizHawk.MultiClient/config/FirmwaresConfig.cs
@@ -9,7 +9,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
//notes: eventually, we intend to have a "firmware acquisition interface" exposed to the emulator cores.
//it will be implemented by the multiclient, and use firmware keys to fetch the firmware content.
diff --git a/BizHawk.MultiClient/config/GifAnimator.cs b/BizHawk.MultiClient/config/GifAnimator.cs
index 6093c45284..82a6ba4cfe 100644
--- a/BizHawk.MultiClient/config/GifAnimator.cs
+++ b/BizHawk.MultiClient/config/GifAnimator.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/HotkeyConfig.cs b/BizHawk.MultiClient/config/HotkeyConfig.cs
index 3f396f53f0..7e88f32686 100644
--- a/BizHawk.MultiClient/config/HotkeyConfig.cs
+++ b/BizHawk.MultiClient/config/HotkeyConfig.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/MessageConfig.cs b/BizHawk.MultiClient/config/MessageConfig.cs
index 56c4e65039..0ab1b62c50 100644
--- a/BizHawk.MultiClient/config/MessageConfig.cs
+++ b/BizHawk.MultiClient/config/MessageConfig.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/PathConfig.cs b/BizHawk.MultiClient/config/PathConfig.cs
index 7b9f75fd62..d5b0bb0806 100644
--- a/BizHawk.MultiClient/config/PathConfig.cs
+++ b/BizHawk.MultiClient/config/PathConfig.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/PathManager.cs b/BizHawk.MultiClient/config/PathManager.cs
index 015008f3ef..31daf6cb6e 100644
--- a/BizHawk.MultiClient/config/PathManager.cs
+++ b/BizHawk.MultiClient/config/PathManager.cs
@@ -3,7 +3,7 @@ using System.Linq;
using System.IO;
using System.Reflection;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/RewindConfig.cs b/BizHawk.MultiClient/config/RewindConfig.cs
index 86e4119e92..8258b20e4c 100644
--- a/BizHawk.MultiClient/config/RewindConfig.cs
+++ b/BizHawk.MultiClient/config/RewindConfig.cs
@@ -2,7 +2,7 @@
using System.Windows.Forms;
using System.Drawing;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/config/SoundConfig.cs b/BizHawk.MultiClient/config/SoundConfig.cs
index 407940f229..6ebb714f08 100644
--- a/BizHawk.MultiClient/config/SoundConfig.cs
+++ b/BizHawk.MultiClient/config/SoundConfig.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/movie/InputAdapters.cs b/BizHawk.MultiClient/movie/InputAdapters.cs
index 09a54abe41..96c86553de 100644
--- a/BizHawk.MultiClient/movie/InputAdapters.cs
+++ b/BizHawk.MultiClient/movie/InputAdapters.cs
@@ -2,7 +2,7 @@
using System.Text;
using System.Collections.Generic;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/movie/Movie.cs b/BizHawk.MultiClient/movie/Movie.cs
index 1e77996e6e..f39d2be5b0 100644
--- a/BizHawk.MultiClient/movie/Movie.cs
+++ b/BizHawk.MultiClient/movie/Movie.cs
@@ -3,7 +3,7 @@ using System.IO;
using System.Windows.Forms;
using System.Globalization;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/movie/MovieHeader.cs b/BizHawk.MultiClient/movie/MovieHeader.cs
index c529ce3d3f..aaf28e73ad 100644
--- a/BizHawk.MultiClient/movie/MovieHeader.cs
+++ b/BizHawk.MultiClient/movie/MovieHeader.cs
@@ -2,7 +2,7 @@
using System.IO;
using System.Linq;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/movie/MovieImport.cs b/BizHawk.MultiClient/movie/MovieImport.cs
index 21e406e54f..c7b32acd65 100644
--- a/BizHawk.MultiClient/movie/MovieImport.cs
+++ b/BizHawk.MultiClient/movie/MovieImport.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
#pragma warning disable 219
diff --git a/BizHawk.MultiClient/movie/MovieMnemonics.cs b/BizHawk.MultiClient/movie/MovieMnemonics.cs
index 963e82cc32..9010e71051 100644
--- a/BizHawk.MultiClient/movie/MovieMnemonics.cs
+++ b/BizHawk.MultiClient/movie/MovieMnemonics.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/movie/PlayMovie.cs b/BizHawk.MultiClient/movie/PlayMovie.cs
index c3f6942d47..aabff08a0a 100644
--- a/BizHawk.MultiClient/movie/PlayMovie.cs
+++ b/BizHawk.MultiClient/movie/PlayMovie.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Windows.Forms;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/movie/RecordMovie.cs b/BizHawk.MultiClient/movie/RecordMovie.cs
index 5f850453c6..2a0732d841 100644
--- a/BizHawk.MultiClient/movie/RecordMovie.cs
+++ b/BizHawk.MultiClient/movie/RecordMovie.cs
@@ -2,7 +2,7 @@
using System.Windows.Forms;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.GB;
using BizHawk.Emulation.Consoles.Nintendo.SNES;
using BizHawk.Emulation.Consoles.Sega;
diff --git a/BizHawk.MultiClient/tools/Cheats/Cheat.cs b/BizHawk.MultiClient/tools/Cheats/Cheat.cs
index b8e703179c..075ce4b73f 100644
--- a/BizHawk.MultiClient/tools/Cheats/Cheat.cs
+++ b/BizHawk.MultiClient/tools/Cheats/Cheat.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs b/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs
index 5c18572e97..06664f11eb 100644
--- a/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs
+++ b/BizHawk.MultiClient/tools/Cheats/CheatEdit.Designer.cs
@@ -231,7 +231,7 @@
//
// CompareBox
//
- this.CompareBox.ByteSize = BizHawk.Client.Core.Watch.WatchSize.Byte;
+ this.CompareBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte;
this.CompareBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.CompareBox.Location = new System.Drawing.Point(113, 91);
this.CompareBox.MaxLength = 2;
@@ -240,11 +240,11 @@
this.CompareBox.Size = new System.Drawing.Size(65, 20);
this.CompareBox.TabIndex = 15;
this.CompareBox.Text = "00";
- this.CompareBox.Type = BizHawk.Client.Core.Watch.DisplayType.Hex;
+ this.CompareBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex;
//
// ValueBox
//
- this.ValueBox.ByteSize = BizHawk.Client.Core.Watch.WatchSize.Byte;
+ this.ValueBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte;
this.ValueBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.ValueBox.Location = new System.Drawing.Point(113, 65);
this.ValueBox.MaxLength = 2;
@@ -253,7 +253,7 @@
this.ValueBox.Size = new System.Drawing.Size(65, 20);
this.ValueBox.TabIndex = 12;
this.ValueBox.Text = "00";
- this.ValueBox.Type = BizHawk.Client.Core.Watch.DisplayType.Hex;
+ this.ValueBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex;
//
// CheatEdit
//
diff --git a/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs b/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs
index 5a6b539c9f..29ebb51a7c 100644
--- a/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs
+++ b/BizHawk.MultiClient/tools/Cheats/CheatEdit.cs
@@ -8,7 +8,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Cheats/CheatForm.cs b/BizHawk.MultiClient/tools/Cheats/CheatForm.cs
index 5b7f55091a..4707d9008d 100644
--- a/BizHawk.MultiClient/tools/Cheats/CheatForm.cs
+++ b/BizHawk.MultiClient/tools/Cheats/CheatForm.cs
@@ -9,7 +9,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Nintendo.SNES;
using BizHawk.Emulation.Consoles.Nintendo;
using BizHawk.Emulation.Consoles.Sega;
diff --git a/BizHawk.MultiClient/tools/Cheats/CheatList.cs b/BizHawk.MultiClient/tools/Cheats/CheatList.cs
index 6878c78327..8f8a194e7f 100644
--- a/BizHawk.MultiClient/tools/Cheats/CheatList.cs
+++ b/BizHawk.MultiClient/tools/Cheats/CheatList.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs b/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs
index e5a63abcaf..26bb9e794f 100644
--- a/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs
+++ b/BizHawk.MultiClient/tools/GB/CGBColorChooserForm.cs
@@ -3,7 +3,7 @@ using System.Drawing;
using System.Windows.Forms;
using BizHawk.Emulation.Consoles.GB;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.GBtools
{
diff --git a/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs b/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs
index 3b806a82a3..f9abe99ca1 100644
--- a/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs
+++ b/BizHawk.MultiClient/tools/GB/ColorChooserForm.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Windows.Forms;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.GBtools
{
diff --git a/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs b/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs
index ea2b98625a..2f5cf11e6e 100644
--- a/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs
+++ b/BizHawk.MultiClient/tools/GB/DualGBFileSelector.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.GBtools
{
diff --git a/BizHawk.MultiClient/tools/GB/GBGPUView.cs b/BizHawk.MultiClient/tools/GB/GBGPUView.cs
index 652ff35352..b25a8e3492 100644
--- a/BizHawk.MultiClient/tools/GB/GBGPUView.cs
+++ b/BizHawk.MultiClient/tools/GB/GBGPUView.cs
@@ -3,7 +3,7 @@ using System.Drawing;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.GBtools
{
diff --git a/BizHawk.MultiClient/tools/GB/GBGameGenie.cs b/BizHawk.MultiClient/tools/GB/GBGameGenie.cs
index 4cdd88b8c1..cd5dbd6177 100644
--- a/BizHawk.MultiClient/tools/GB/GBGameGenie.cs
+++ b/BizHawk.MultiClient/tools/GB/GBGameGenie.cs
@@ -5,7 +5,7 @@ using System.Windows.Forms;
using System.Globalization;
using System.Text.RegularExpressions;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs b/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs
index 46d9bc8ffd..dc0d796f9e 100644
--- a/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs
+++ b/BizHawk.MultiClient/tools/Genesis/GenGameGenie.cs
@@ -5,7 +5,7 @@ using System.Windows.Forms;
using System.Globalization;
using System.Text.RegularExpressions;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Sega;
#pragma warning disable 675 //TOOD: fix the potential problem this is masking
diff --git a/BizHawk.MultiClient/tools/HexEditor/HexColor.cs b/BizHawk.MultiClient/tools/HexEditor/HexColor.cs
index 977e44dd90..ac606925ed 100644
--- a/BizHawk.MultiClient/tools/HexEditor/HexColor.cs
+++ b/BizHawk.MultiClient/tools/HexEditor/HexColor.cs
@@ -1,7 +1,7 @@
using System;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs b/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs
index 7696ff5717..537989b54e 100644
--- a/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs
+++ b/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs
@@ -8,7 +8,7 @@ using System.Windows.Forms;
using System.Globalization;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs b/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs
index c3965367bc..61ba8ff484 100644
--- a/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs
+++ b/BizHawk.MultiClient/tools/HexEditor/MemoryViewer.cs
@@ -4,7 +4,7 @@ using System.Windows.Forms;
using System.Text;
using System.Globalization;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/InputPrompt.cs b/BizHawk.MultiClient/tools/InputPrompt.cs
index 328b249dd8..ec438f67df 100644
--- a/BizHawk.MultiClient/tools/InputPrompt.cs
+++ b/BizHawk.MultiClient/tools/InputPrompt.cs
@@ -2,7 +2,7 @@
using System.Drawing;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Lua/LuaConsole.cs b/BizHawk.MultiClient/tools/Lua/LuaConsole.cs
index 9a2ec4ced6..718d4839f6 100644
--- a/BizHawk.MultiClient/tools/Lua/LuaConsole.cs
+++ b/BizHawk.MultiClient/tools/Lua/LuaConsole.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Windows.Forms;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs b/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs
index a48c5c9b02..a237a0d73c 100644
--- a/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs
+++ b/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs
@@ -8,7 +8,7 @@ using System.Drawing;
using System.Threading;
using System.Globalization;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Nintendo;
using System.Text;
diff --git a/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs b/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs
index b525e60adc..234b33c50b 100644
--- a/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs
+++ b/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs
@@ -1,6 +1,6 @@
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient.tools
{
diff --git a/BizHawk.MultiClient/tools/Lua/LuaWriter.cs b/BizHawk.MultiClient/tools/Lua/LuaWriter.cs
index 55c472f4c6..db6713f3dc 100644
--- a/BizHawk.MultiClient/tools/Lua/LuaWriter.cs
+++ b/BizHawk.MultiClient/tools/Lua/LuaWriter.cs
@@ -7,7 +7,7 @@ using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs
index 5066d9eae9..850ce6b138 100644
--- a/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs
+++ b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs
@@ -2,7 +2,7 @@
using System.Drawing;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs b/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs
index 4fbb16c22f..7a3c6bfab2 100644
--- a/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs
+++ b/BizHawk.MultiClient/tools/N64/N64VideoPluginconfig.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/NESDebugger.cs b/BizHawk.MultiClient/tools/NES/NESDebugger.cs
index 7a4ced4fbe..bf02d04f48 100644
--- a/BizHawk.MultiClient/tools/NES/NESDebugger.cs
+++ b/BizHawk.MultiClient/tools/NES/NESDebugger.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Windows.Forms;
using BizHawk.Emulation.Consoles.Nintendo;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/NESGameGenie.cs b/BizHawk.MultiClient/tools/NES/NESGameGenie.cs
index ce1be9793b..39db092aa6 100644
--- a/BizHawk.MultiClient/tools/NES/NESGameGenie.cs
+++ b/BizHawk.MultiClient/tools/NES/NESGameGenie.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Windows.Forms;
using System.Globalization;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Nintendo;
namespace BizHawk.MultiClient
diff --git a/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs b/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs
index 98326daba1..ae6f3ebfab 100644
--- a/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs
+++ b/BizHawk.MultiClient/tools/NES/NESGraphicsConfig.cs
@@ -3,7 +3,7 @@ using System.Drawing;
using System.Windows.Forms;
using BizHawk.Emulation.Consoles.Nintendo;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs b/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs
index 8b3bbfdd77..34680352b0 100644
--- a/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs
+++ b/BizHawk.MultiClient/tools/NES/NESNameTableViewer.cs
@@ -4,7 +4,7 @@ using System.Drawing.Imaging;
using System.Windows.Forms;
using BizHawk.Emulation.Consoles.Nintendo;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/NESPPU.cs b/BizHawk.MultiClient/tools/NES/NESPPU.cs
index ce9175a10b..cce077e0c3 100644
--- a/BizHawk.MultiClient/tools/NES/NESPPU.cs
+++ b/BizHawk.MultiClient/tools/NES/NESPPU.cs
@@ -3,7 +3,7 @@ using System.Drawing;
using System.Windows.Forms;
using System.Globalization;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Nintendo;
namespace BizHawk.MultiClient
diff --git a/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs b/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs
index dae0998650..e6000f8ca2 100644
--- a/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs
+++ b/BizHawk.MultiClient/tools/NES/NESSoundConfig.cs
@@ -1,7 +1,7 @@
using System;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/NameTableViewer.cs b/BizHawk.MultiClient/tools/NES/NameTableViewer.cs
index 6cd769ec19..4815187a33 100644
--- a/BizHawk.MultiClient/tools/NES/NameTableViewer.cs
+++ b/BizHawk.MultiClient/tools/NES/NameTableViewer.cs
@@ -3,7 +3,7 @@ using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/PaletteViewer.cs b/BizHawk.MultiClient/tools/NES/PaletteViewer.cs
index b9a2b58c0b..c0e9b2c542 100644
--- a/BizHawk.MultiClient/tools/NES/PaletteViewer.cs
+++ b/BizHawk.MultiClient/tools/NES/PaletteViewer.cs
@@ -3,7 +3,7 @@ using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/PatternViewer.cs b/BizHawk.MultiClient/tools/NES/PatternViewer.cs
index c5b53184c6..6553719bae 100644
--- a/BizHawk.MultiClient/tools/NES/PatternViewer.cs
+++ b/BizHawk.MultiClient/tools/NES/PatternViewer.cs
@@ -3,7 +3,7 @@ using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/NES/SpriteViewer.cs b/BizHawk.MultiClient/tools/NES/SpriteViewer.cs
index cd55040afa..0224b717de 100644
--- a/BizHawk.MultiClient/tools/NES/SpriteViewer.cs
+++ b/BizHawk.MultiClient/tools/NES/SpriteViewer.cs
@@ -3,7 +3,7 @@ using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs b/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs
index 49bdd4ae28..616fcddbca 100644
--- a/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs
+++ b/BizHawk.MultiClient/tools/PCE/PCEBGViewer.cs
@@ -3,7 +3,7 @@ using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.TurboGrafx;
namespace BizHawk.MultiClient
diff --git a/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs b/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs
index 177f4c6b78..f004263f41 100644
--- a/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs
+++ b/BizHawk.MultiClient/tools/PCE/PCEGraphicsConfig.cs
@@ -1,7 +1,7 @@
using System;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs b/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs
index 750b367859..5ee17fd91a 100644
--- a/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs
+++ b/BizHawk.MultiClient/tools/SMS/SMSGraphicsConfig.cs
@@ -1,7 +1,7 @@
using System;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs b/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs
index b25220c4b1..45e5a1d88c 100644
--- a/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs
+++ b/BizHawk.MultiClient/tools/SNES/SNESGameGenie.cs
@@ -6,7 +6,7 @@ using System.Globalization;
using System.Text.RegularExpressions;
using BizHawk.Emulation.Consoles.Nintendo.SNES;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs b/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs
index 8f90fe289f..cfd05fa592 100644
--- a/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs
+++ b/BizHawk.MultiClient/tools/SNES/SNESGraphicsDebugger.cs
@@ -29,7 +29,7 @@ using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Nintendo.SNES;
using BizHawk.Core;
diff --git a/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs b/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs
index 1fc1cd4a2c..13469d1357 100644
--- a/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs
+++ b/BizHawk.MultiClient/tools/Saturn/SaturnPrefs.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/StateVisualizer.cs b/BizHawk.MultiClient/tools/StateVisualizer.cs
index 5ddc765858..bd656c453b 100644
--- a/BizHawk.MultiClient/tools/StateVisualizer.cs
+++ b/BizHawk.MultiClient/tools/StateVisualizer.cs
@@ -2,7 +2,7 @@
using System.Linq;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/TAStudio.cs b/BizHawk.MultiClient/tools/TAStudio.cs
index 34845441b3..8d627506b9 100644
--- a/BizHawk.MultiClient/tools/TAStudio.cs
+++ b/BizHawk.MultiClient/tools/TAStudio.cs
@@ -4,7 +4,7 @@ using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs b/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs
index e956966b50..b0d362b417 100644
--- a/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs
+++ b/BizHawk.MultiClient/tools/TI83/TI83KeyPad.cs
@@ -3,7 +3,7 @@ using System.Drawing;
using System.Windows.Forms;
using BizHawk.Emulation.Consoles.Calculator;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/ToolBox.cs b/BizHawk.MultiClient/tools/ToolBox.cs
index 53831b8ee1..286f0f2aa2 100644
--- a/BizHawk.MultiClient/tools/ToolBox.cs
+++ b/BizHawk.MultiClient/tools/ToolBox.cs
@@ -2,7 +2,7 @@
using System.Drawing;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
using BizHawk.Emulation.Consoles.Nintendo;
using BizHawk.Emulation.Consoles.Calculator;
using BizHawk.Emulation.Consoles.Nintendo.SNES;
diff --git a/BizHawk.MultiClient/tools/ToolHelpers.cs b/BizHawk.MultiClient/tools/ToolHelpers.cs
index 2fe299aeac..c103fbfa32 100644
--- a/BizHawk.MultiClient/tools/ToolHelpers.cs
+++ b/BizHawk.MultiClient/tools/ToolHelpers.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/TraceLogger.cs b/BizHawk.MultiClient/tools/TraceLogger.cs
index daa83c30ff..d3c3af016c 100644
--- a/BizHawk.MultiClient/tools/TraceLogger.cs
+++ b/BizHawk.MultiClient/tools/TraceLogger.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Windows.Forms;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs
index 482880104e..0096de93e5 100644
--- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs
+++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadForm.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Windows.Forms;
using BizHawk.Emulation.Consoles.Nintendo.N64;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs
index 27ca3384da..fd0bcbaa37 100644
--- a/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs
+++ b/BizHawk.MultiClient/tools/VirtualPads/VirtualPadN64.cs
@@ -4,7 +4,7 @@ using System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs
index a18cc65249..723c2da48c 100644
--- a/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs
+++ b/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs
@@ -99,7 +99,7 @@
//
// ValueBox
//
- this.ValueBox.ByteSize = BizHawk.Client.Core.Watch.WatchSize.Byte;
+ this.ValueBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte;
this.ValueBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.ValueBox.Location = new System.Drawing.Point(82, 57);
this.ValueBox.MaxLength = 9;
@@ -108,7 +108,7 @@
this.ValueBox.Size = new System.Drawing.Size(116, 20);
this.ValueBox.TabIndex = 10;
this.ValueBox.Text = "0000";
- this.ValueBox.Type = BizHawk.Client.Core.Watch.DisplayType.Hex;
+ this.ValueBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex;
//
// ValueHexLabel
//
diff --git a/BizHawk.MultiClient/tools/Watch/RamPoke.cs b/BizHawk.MultiClient/tools/Watch/RamPoke.cs
index ba4a53d57e..e0f9f77b39 100644
--- a/BizHawk.MultiClient/tools/Watch/RamPoke.cs
+++ b/BizHawk.MultiClient/tools/Watch/RamPoke.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Linq;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs
index 747d78f362..7d068caff9 100644
--- a/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs
+++ b/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs
@@ -1352,7 +1352,7 @@
//
this.SpecificValueBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.SpecificValueBox.ByteSize = BizHawk.Client.Core.Watch.WatchSize.Byte;
+ this.SpecificValueBox.ByteSize = BizHawk.Client.Common.Watch.WatchSize.Byte;
this.SpecificValueBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.SpecificValueBox.Enabled = false;
this.SpecificValueBox.Location = new System.Drawing.Point(114, 38);
@@ -1362,7 +1362,7 @@
this.SpecificValueBox.Size = new System.Drawing.Size(72, 20);
this.SpecificValueBox.TabIndex = 15;
this.SpecificValueBox.Text = "00";
- this.SpecificValueBox.Type = BizHawk.Client.Core.Watch.DisplayType.Hex;
+ this.SpecificValueBox.Type = BizHawk.Client.Common.Watch.DisplayType.Hex;
this.SpecificValueBox.TextChanged += new System.EventHandler(this.CompareToValue_TextChanged);
//
// RamSearch
diff --git a/BizHawk.MultiClient/tools/Watch/RamSearch.cs b/BizHawk.MultiClient/tools/Watch/RamSearch.cs
index 53d1518c87..948703f67e 100644
--- a/BizHawk.MultiClient/tools/Watch/RamSearch.cs
+++ b/BizHawk.MultiClient/tools/Watch/RamSearch.cs
@@ -10,7 +10,7 @@ using System.Windows.Forms;
using System.IO;
using System.Globalization;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs b/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs
index a495e95c69..98179ec8eb 100644
--- a/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs
+++ b/BizHawk.MultiClient/tools/Watch/RamSearchEngine.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/RamWatch.cs b/BizHawk.MultiClient/tools/Watch/RamWatch.cs
index 73cfdc69b5..1452a85265 100644
--- a/BizHawk.MultiClient/tools/Watch/RamWatch.cs
+++ b/BizHawk.MultiClient/tools/Watch/RamWatch.cs
@@ -7,7 +7,7 @@ using System.Text;
using System.Windows.Forms;
using System.IO;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/WatchEditor.cs b/BizHawk.MultiClient/tools/Watch/WatchEditor.cs
index 96af86e45d..7a58a966ef 100644
--- a/BizHawk.MultiClient/tools/Watch/WatchEditor.cs
+++ b/BizHawk.MultiClient/tools/Watch/WatchEditor.cs
@@ -4,7 +4,7 @@ using System.Drawing;
using System.Linq;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/WatchList.cs b/BizHawk.MultiClient/tools/Watch/WatchList.cs
index 2d40c8e0d1..d3cdaa2d47 100644
--- a/BizHawk.MultiClient/tools/Watch/WatchList.cs
+++ b/BizHawk.MultiClient/tools/Watch/WatchList.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs b/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs
index 25a392fcab..83d2e832b8 100644
--- a/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs
+++ b/BizHawk.MultiClient/tools/Watch/WatchValueBox.cs
@@ -2,7 +2,7 @@
using System.Globalization;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk.MultiClient
{
diff --git a/BizHawk.PCE_Debugger/Mainform.Designer.cs b/BizHawk.PCE_Debugger/Mainform.Designer.cs
index 28ee4980bf..2dc5fc8d9a 100644
--- a/BizHawk.PCE_Debugger/Mainform.Designer.cs
+++ b/BizHawk.PCE_Debugger/Mainform.Designer.cs
@@ -1,4 +1,4 @@
-namespace BizHawk.PCE_Debugger
+namespace BizHawk.Client.PCE_Debugger
{
partial class Mainform
{
@@ -28,53 +28,54 @@
///
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Mainform));
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.menuStrip1.SuspendLayout();
- this.SuspendLayout();
- //
- // menuStrip1
- //
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Mainform));
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(284, 24);
- this.menuStrip1.TabIndex = 0;
- this.menuStrip1.Text = "menuStrip1";
- //
- // fileToolStripMenuItem
- //
- this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(284, 24);
+ this.menuStrip1.TabIndex = 0;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // fileToolStripMenuItem
+ //
+ this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.exitToolStripMenuItem});
- this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
- this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
- this.fileToolStripMenuItem.Text = "&File";
- //
- // exitToolStripMenuItem
- //
- this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
- this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+F4";
- this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
- this.exitToolStripMenuItem.Text = "E&xit";
- this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
- //
- // Mainform
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(284, 262);
- this.Controls.Add(this.menuStrip1);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MainMenuStrip = this.menuStrip1;
- this.Name = "Mainform";
- this.Text = "PCE Debugger";
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
+ this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
+ this.fileToolStripMenuItem.Text = "&File";
+ //
+ // exitToolStripMenuItem
+ //
+ this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+ this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+F4";
+ this.exitToolStripMenuItem.Size = new System.Drawing.Size(134, 22);
+ this.exitToolStripMenuItem.Text = "E&xit";
+ this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
+ //
+ // Mainform
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(284, 262);
+ this.Controls.Add(this.menuStrip1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MainMenuStrip = this.menuStrip1;
+ this.Name = "Mainform";
+ this.Text = "PCE Debugger";
+ this.Load += new System.EventHandler(this.Mainform_Load);
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
}
diff --git a/BizHawk.PCE_Debugger/Mainform.cs b/BizHawk.PCE_Debugger/Mainform.cs
index 8ea1f76ea2..a9644107d2 100644
--- a/BizHawk.PCE_Debugger/Mainform.cs
+++ b/BizHawk.PCE_Debugger/Mainform.cs
@@ -7,18 +7,23 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
-namespace BizHawk.PCE_Debugger
+namespace BizHawk.Client.PCE_Debugger
{
- public partial class Mainform : Form
- {
- public Mainform()
- {
- InitializeComponent();
- }
+ public partial class Mainform : Form
+ {
+ public Mainform()
+ {
+ InitializeComponent();
+ }
- private void exitToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Close();
- }
- }
+ private void exitToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ Close();
+ }
+
+ private void Mainform_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
}
diff --git a/BizHawk.PCE_Debugger/Program.cs b/BizHawk.PCE_Debugger/Program.cs
index 5477352940..ab7f0b8025 100644
--- a/BizHawk.PCE_Debugger/Program.cs
+++ b/BizHawk.PCE_Debugger/Program.cs
@@ -3,19 +3,19 @@ using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
-namespace BizHawk.PCE_Debugger
+namespace BizHawk.Client.PCE_Debugger
{
- static class Program
- {
- ///
- /// The main entry point for the application.
- ///
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Mainform());
- }
- }
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Mainform());
+ }
+ }
}
diff --git a/BizHawk.Util/BizHawk.Util.csproj b/BizHawk.Util/BizHawk.Util.csproj
index 0f0043c09a..d34ac185c1 100644
--- a/BizHawk.Util/BizHawk.Util.csproj
+++ b/BizHawk.Util/BizHawk.Util.csproj
@@ -188,9 +188,9 @@
-
+
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}
- Client.Core
+ BizHawk.Client.Common
diff --git a/BizHawk.Util/HexTextBox.cs b/BizHawk.Util/HexTextBox.cs
index b0cab50ac6..9313865bf1 100644
--- a/BizHawk.Util/HexTextBox.cs
+++ b/BizHawk.Util/HexTextBox.cs
@@ -2,7 +2,7 @@
using System.Globalization;
using System.Windows.Forms;
-using BizHawk.Client.Core;
+using BizHawk.Client.Common;
namespace BizHawk
{
diff --git a/BizHawk.sln b/BizHawk.sln
index ca621aa86c..afa768da43 100644
--- a/BizHawk.sln
+++ b/BizHawk.sln
@@ -11,9 +11,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscoHawk", "DiscoHawk\Disc
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.PCE_Debugger", "BizHawk.PCE_Debugger\BizHawk.PCE_Debugger.csproj", "{2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LuaHawk", "LuaHawk\LuaHawk.csproj", "{B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Core", "Client.Core\Client.Core.csproj", "{24A0AA3C-B25F-4197-B23D-476D6462DBA0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Client.Common", "Client.Core\BizHawk.Client.Common.csproj", "{24A0AA3C-B25F-4197-B23D-476D6462DBA0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -95,18 +93,6 @@ Global
{2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}.Release|Win32.ActiveCfg = Release|x86
{2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}.Release|x86.ActiveCfg = Release|x86
{2D7F5A4A-C3C4-41CD-839C-C35F3DD58725}.Release|x86.Build.0 = Release|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Any CPU.ActiveCfg = Debug|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|Win32.ActiveCfg = Debug|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|x86.ActiveCfg = Debug|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Debug|x86.Build.0 = Debug|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Any CPU.ActiveCfg = Release|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Mixed Platforms.Build.0 = Release|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|Win32.ActiveCfg = Release|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|x86.ActiveCfg = Release|x86
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}.Release|x86.Build.0 = Release|x86
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{24A0AA3C-B25F-4197-B23D-476D6462DBA0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
diff --git a/LuaHawk/LuaHawk.csproj b/LuaHawk/LuaHawk.csproj
deleted file mode 100644
index 0463fa0c70..0000000000
--- a/LuaHawk/LuaHawk.csproj
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
- Debug
- x86
- 8.0.30703
- 2.0
- {B7FA7300-52DF-4A3F-84EF-D69E40CF60AF}
- WinExe
- Properties
- LuaHawk
- LuaHawk
- v4.0
- Client
- 512
-
-
- x86
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- x86
- pdbonly
- true
- ..\BizHawk.MultiClient\output\
- TRACE
- prompt
- 4
-
-
- logo.ico
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- LuaHawkMainForm.cs
-
-
-
-
- LuaHawkMainForm.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
-
-
-
-
-
-
- "$(SolutionDir)subwcrev.bat" "$(ProjectDir)"
-
-
-
\ No newline at end of file
diff --git a/LuaHawk/LuaHawkMainForm.Designer.cs b/LuaHawk/LuaHawkMainForm.Designer.cs
deleted file mode 100644
index 5dc95dcc6d..0000000000
--- a/LuaHawk/LuaHawkMainForm.Designer.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-namespace LuaHawk
-{
- partial class LuaHawkMainForm
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LuaHawkMainForm));
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.menuStrip1.SuspendLayout();
- this.SuspendLayout();
- //
- // menuStrip1
- //
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.fileToolStripMenuItem});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(284, 24);
- this.menuStrip1.TabIndex = 0;
- this.menuStrip1.Text = "menuStrip1";
- //
- // fileToolStripMenuItem
- //
- this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.openToolStripMenuItem,
- this.toolStripSeparator1,
- this.exitToolStripMenuItem});
- this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
- this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
- this.fileToolStripMenuItem.Text = "&File";
- //
- // openToolStripMenuItem
- //
- this.openToolStripMenuItem.Name = "openToolStripMenuItem";
- this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
- this.openToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
- this.openToolStripMenuItem.Text = "&Open";
- //
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
- //
- // exitToolStripMenuItem
- //
- this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
- this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+F4";
- this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
- this.exitToolStripMenuItem.Text = "E&xit";
- this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
- //
- // LuaHawkMainForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(284, 262);
- this.Controls.Add(this.menuStrip1);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MainMenuStrip = this.menuStrip1;
- this.Name = "LuaHawkMainForm";
- this.Text = "LuaHawk";
- this.Load += new System.EventHandler(this.LuaHawkMainForm_Load);
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.MenuStrip menuStrip1;
- private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
- private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
- }
-}
-
diff --git a/LuaHawk/LuaHawkMainForm.cs b/LuaHawk/LuaHawkMainForm.cs
deleted file mode 100644
index 3d489b91d1..0000000000
--- a/LuaHawk/LuaHawkMainForm.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace LuaHawk
-{
- public partial class LuaHawkMainForm : Form
- {
- public LuaHawkMainForm()
- {
- InitializeComponent();
- }
-
- private void exitToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Close();
- }
-
- private void LuaHawkMainForm_Load(object sender, EventArgs e)
- {
-
- }
- }
-}
diff --git a/LuaHawk/LuaHawkMainForm.resx b/LuaHawk/LuaHawkMainForm.resx
deleted file mode 100644
index 487177ea6d..0000000000
--- a/LuaHawk/LuaHawkMainForm.resx
+++ /dev/null
@@ -1,1127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
-
-
- AAABAAkAICAQAAEABADoAgAAlgAAABAQEAABAAQAKAEAAH4DAAAwMAAAAQAIAKgOAACmBAAAICAAAAEA
- CACoCAAAThMAABAQAAABAAgAaAUAAPYbAAAAAAAAAQAgAPaNAABeIQAAMDAAAAEAIACoJQAAVK8AACAg
- AAABACAAqBAAAPzUAAAQEAAAAQAgAGgEAACk5QAAKAAAACAAAABAAAAAAQAEAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A
- AAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI53d3eAAAAA
- AAAAAAAACHY0AAB2d3AAAAAAAAAAAHdAAAcAAAZ3gAAAAAAAAIZQIAAIAAAAd2gAAAAAAAhwAAAAf4AG
- AABngAAAAAAHAAJAB/X3AAAABoAAAAAAcgAAAAjwfwBCAgB4AAAACGAAQQB/cH+AAAAARwAAAAcEACAA
- /2AP9wQEACaAAAAGAAIAB/gBCPcAAgAFcAAAiAAEAAj4AAf/IEAEBHAAAIZAAgBP+ABI/wAAIAeAAACI
- ZAAAD/8wD/9SBABOiAAAjscAAA//cH//cAAk54AAAIfocAcP+IR/j3RwSH6AAACOiMZBePhwOPh3JIjo
- cAAAiO+GACd4gHiHh3aIjoAAAIjvjnQABDR3eHhIiOiAAAAI6P6AAwB4iIiIaPjoAAAAB46PhhAAd3iI
- +IiOiAAAAACIj3YEAAh3j4iIjoAAAAAAiOg3EzFSWP//eOiAAAAAAA6ImzMyF4/4/2iIAAAAAAAAh7s5
- NDB4iPh44AAAAAAAAAgzMwBzCP/4eAAAAAAAAAAAhzeHiP//hwAAAAAAAAAAAAiP//+I+HAAAAAAAAAA
- AAAAiP+IiIAAAAAAAAAAAAAAAAB3iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////+AH//+A
- Af//AAB//AAAP/gAAB/4AAAf8AAAD+AAAA/gAAAH4AAAB8AAAAfAAAAHwAAAA8AAAAfAAAAHwAAAB8AA
- AAfAAAAH4AAAD+AAAA/wAAAf8AAAH/gAAD/8AAB//gAA//8AA///gAf//8Af///w////////KAAAABAA
- AAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
- AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAACHZ3cAAAAA9wBAAG
- gAAAgAAIcAB4AABgAHeHAAcACAAG8HgEBwAIAAeAfwAEgAhkB/N/AkeADoYHh4h0foAIiEJ0d4eOAAjv
- cAeIiIgAAIhwF3+I4AAACLMwj4iAAAAAc3ePiAAAAAAI/4gAAAAAAAAAAAAAAP/////4H///4Af//8AD
- ///AA///gAP//4AB//+AAf//gAH//4AD//+AA///wAf//+AH///wD///+D////////8oAAAAMAAAAGAA
- AAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgHBwAGCQUACgsGAAwNCQARDgoADRAJABYU
- CwANDxQADRIWABYVFwAhHAwAIBwXACkiCwAnIxsAODEbAA8cJAAcHyIAFyEnABIuOQAaNz0AJyUmADIr
- KAAoMCoANTMlADEvMQAuNjgANjY3AEw6GwBFOiwAUD4lAEI6NwBLRB4AVkMdAFVHIwBJQzMAU0ozAFxU
- OQBjVCwAdVwlAGJYOwBpZDsAd2I2AAwxQQAPPVUAJkNHAD9CRgAnUVUAPVRVAA1LYQAOU2wAFlFqAApZ
- dQA1Wm4AO2tqACx9fgA7cHwARkZHAFBOSABRVE8AR01RAEtUUwBWVlcAeEtGAGNVRwBuaUQAfHRGAFpg
- YgBnaGkAdXNnAGxucgByb3EAb3FzAHd4eQCBYS0AmHgsAIluMwCMcTgAmXo6AKl+MgCFd0YAjH9cALB/
- dACqhjYAvJU0AMqXOADHoDQA0aI+AI2CTACUh04Ak4xNAJWSTQCbk00AnZpLAIqHVwCSi1QAm5dSAJuY
- UACUlFgAkJxYAKKaTACimlMAqaVXALKrXACvsVsAjIxrAJmHYACQjmMAkI1rAJqZZQCTlmsAhIN5AI2c
- dQCRkXwAm5p8AKGeZQCpp2MAuathAK6wawC4tGsAralzALe2cgDOnkQA2ptGAMeGXQDfmVYA4J9JANuq
- RgDJpVQA1atVANqyUQDhqEkA57JMAOqqUgDmtVQA8bpTANu4aADCqXYAwrp6AN++egDyqG4A6LtpAPO7
- aQDzpnMA5L11APq1ewDuw14A9cZYAPzWXwDExHwA+MplAPnUZwDnxXkA+cZ3APjUcwAOZYoACnWSABB9
- nAAHeqYACYOsAAaLuwBDho8AWJeUAH+AgAB3mJcACI3AAAeXxAAVmsYAC5zRAC2kwAAErOQAA7X0AIaG
- hgCQjIUAkJCFAJKRjgCPkZIAmJiYAKGfnwCWq50ApaKDALWpigC4t4oApqWYALqzmQCenaAAn6ChAKeo
- qACwr68Ar7GrAL25rQCusLEAsrKzALW2uAC4t7kAuru7AMivgADBvYAA0beIANu9kwDwpIMA+72HAOC1
- mgD0up4AwL+8APO2oAC+wr8AyMaIANjCiADNy5kA18WXANfRlgDoyokA9taJAP3LmgDs1JoA9deWAPzm
- igDu654A+eGdAMjFqQDTzagA1tWmANHOvgDX07EA5s6iAPXHogDo16YA+NioAO7bsQD13LQA7+mlAPXk
- qQD25LQAvsDBAMbGxwDQz84Azc7QAM7Q0ADX2NgA4dzDAODe3gD468kA+e3VAPnx2ADc3+AA4d/hANzh
- 4QDo6OkA8O/vAO/x7wD68+EA7e/wAPr6+gDa0f8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwsLBw8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAL60bVxbW1pia3GvsrvMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAC2ZlxfKSVAKCgoUFtlW2yuusEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeWVCHQwEAwMDAQIB
- AwUWJV9da626zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZgKQwDAwMDAwQFFgQEAQMCBgMdWGRpr8AA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAdFAOCAQEBAYFBwYOrwUFBQQBAQQGByRcYq27AAAAAAAAAAAAAAAA
- AAAAAAAAAOBlKAUGBAYGBQcHBQNJ+TkFBQcFBgQEBAQOXmFvuwAAAAAAAAAAAAAAAAAAAAAA3V0jBQME
- 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
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
- /////wAA////////AAD///4P//8AAP//wAD//wAA//8AAD//AAD//AAAD/8AAP/wAAAH/wAA/+AAAAP/
- AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAA/AAD4AAAAAB8AAPAA
- AAAAHwAA8AAAAAAfAADwAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAP
- AADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAfAADwAAAAAB8AAPAA
- AAAAHwAA8AAAAAA/AAD4AAAAAD8AAPgAAAAAfwAA/AAAAAD/AAD+AAAAAP8AAP4AAAAB/wAA/wAAAAP/
- AAD/gAAAB/8AAP/AAAAP/wAA//AAAB//AAD/+AAAf/8AAP/4AAD//wAA//wAAf//AAD//gAP//8AAP//
- gH///wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAABgkGAAkKBgAMDQkAEA4KAA8QBgAOEAoAEREHABMSCgAZFgsAFxgJABwaDAAOERUADhIYABES
- FAAZExYAFxgTABwbFQARFBgAHRcZABYZHQAdGhsAIB0NACAbGwAsJhcAKiUdADUnEwAbHiEAIx0gAB4m
- KAASKjAAGC0xACQjIwAoIyUAIyUqAC8uLAAxKy4AOzUgADQyLgAtLTIALzQ2ADMyMwA3ODUAOTg1ADA3
- OgA5ODgAQTYXAEQ7IgBCOyoAVEEbAFxJHgBGQCoAUEElAE9MMABCRT0AUUI7AFZRNQBZUTMAcFkiAGld
- OgBuZjkAdXA/AA84RgARNEMADDxRAAxAUgAqSEoAN1daAAtceQAmU2MAOmVrAENDQwBMTE0AUlNTAFhW
- VwBYW18AY1lAAGJcXgB1bkIAfnZDAGJiXgBjZGMAbWpqAHR0YQBxb3EAb3FyAHNzcwB5encAe3p8AIFo
- KgCZdC0AkHU5AJh9OQCFfUYAgH9+AK97cACphi0AjoZMAJiRTwCVjVAAmpNUAJmWWQCfm1wAr5JMAKGY
- VwChl1kAj4xmAI2NagCWlWYAn5xhAJWTawCOjHkAkY50AJycegC6gWIAopxhAKumbACwp2cArat8ALay
- cgC+s3EAvbl1AL27eQDAmkMAx5pIAM6gSgDOrFEA5aNcAOikXADtulcA4rpbAOy6WADmnmEA559zANey
- ZADYsWIA3blrAMWucQDDsHQAxbV6AMi1fADfunAA7KphAOS5YwDgumkA9LVuAOrJZQD2xWMA+MRiAPTJ
- aAD702YA+tJuAObEewDoxXsADGiGAAlzmQAJeZ8ACXukAIF/gAAJhbMAIJi1ADKWtQB+gYQAe5STAHeo
- pgAFksQACJnNAASh1AAFsOwABLb1AIKDhACFh4wAiIeKAIaIiwCKi4sAlJSFAJWWlgCbnZUAm5ydAKCd
- ngCHqocAla6MAJKxlwCso4wAsKiCALCsiAC6vIUAoqCbALOsnwCfoaMAo6SkAK+vpwCmqKkAq6usAK6u
- sACzs7QAtba4ALW4uAC7vb0Azb6WAMTBhgDNxYcAxsWOANHHhwDRyYYAyciSAMfEnQDNzJwA+seHAPfI
- hwD414YA+dmEAO/PmgDi0JwA79CZAOvenADz2JcA+dqTAPLYmADt5J8A8eSdAMvJrwDSz6IA1dOpAMnI
- uwDW1bQA3ti3ANjVuwDu2a0A9+GsAPfqvwCywcAAw8PEAMfIxgDMy8UAxsjJAMvLzQDa2MQAztHRANTU
- 1ADc3NwA9ujGAPvpwAD458gA+e3RAPry3ADe4OEA4+PjAOvr6wDt7/AA8O7wAPP09AD4+PcA9/j4APv7
- +wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAA4LltaGllZW6vvgAAAAAAAAAAAAAAAAAAAAAAAAAA3XM8MBcCAQIR
- MDxia7IAAAAAAAAAAAAAAAAAAAAAAHQ4CAMCAwcmBAMBAgg5Ym/CAAAAAAAAAAAAAAAAAONdEQYDAwgH
- DukhCAQEAwMRXWrBAAAAAAAAAAAAAADhPQ4DAwYKBQJX/MAECAkGAwMETmrDAAAAAAAAAAAAAE8GBgMG
- CQUCKvhI+EoECQsIAwMGT3AAAAAAAAAAAABmEwQGBAoEAg7p7g/B9yEICwsGBgQQY7sAAAAAAAAA3jME
- DAQJCAMBWP6eE03+wQQJCwsGAwYzbgAAAAAAAABjAwQGCAkDAhf4/ikTIfj9LQgJFggDBgNhvwAAAAAA
- AEwDBgQJCAMBVv/sDxMTwf6wBAkWCwQDAzVxAAAAAADNXwMGBAkEAgHo/6wTExNU/vcECREWBAMDN3MA
- AAAAAIuFGgYICQMBDvj/6A8TE8H//CMICxYJBAZydQAAAAAAioRaBgkIAwEg+//+JBMh+v/+SAgJFgkD
- MYSK6gAAAACMgH1bFgYDAyn8/v5YE1L+/v5QCAkWCzR8gIwAAAAAAIyOho0yDgJJR/vw98QTs/fw/a4r
- UBEujYaOjAAAAAAAeJGQ5Hs6GA5LwPj4SiEp9/joVrIpL2fkkJF4AAAAAADI0Y/0mVkRFBuuSensHFbC
- vljCUatcmfSP0HcAAAAAAN/Wg/PxgmAlEhQSIEdHVqqw66rFK4Lz84HUzgAAAAAAAMuT2vXlfhkSEg0N
- Sb3owe7r6Paex/XYk8kAAAAAAAAAetmV8vTVOxISEhJHVaro6ff8s8O85pXZegAAAAAAAAAAzJfS4qQ2
- EhISEizFsq3G/ujwxrfTl8wAAAAAAAAAAADP15a1oUY+QUQeSCdIxvn7/P6tiZbXzwAAAAAAAAAAAAB5
- 3LSopqWdm0A/ou75/un7+1GS3MgAAAAAAAAAAAAAAAB6tqmop50+LB0oXsDv9/7CuNvKAAAAAAAAAAAA
- AAAAAAC6oJ+cmg0fQ0Iivv3//rF2zQAAAAAAAAAAAAAAAAAAAADto0VexMLn7Pz//v7FUwAAAAAAAAAA
- AAAAAAAAAAAAAADCwe/+//7/+MP+7J4AAAAAAAAAAAAAAAAAAAAAAAAAAADE7/7+vvDvvsIAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAva3AwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAP///////////+AH//+AAf//AAB//AAAP/gAAB/4AAAf8AAAD+AAAA/gAAAH4AAAB8AA
- AAfAAAAHwAAAA8AAAAfAAAAHwAAAB8AAAAfAAAAH4AAAD+AAAA/wAAAf8AAAH/gAAD/8AAB//gAA//8A
- A///gAf//8Af///w////////KAAAABAAAAAgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAALCwcACwwHAA4PBwAKCgkADAsIAA0OCgAQDwkAEREJABQSCwAUFAsAEBAMABQTDwAVFAwAGxgMABwZ
- DQAPExcAFhcRABEUFwAaGBMAHBYZACAfFAAkIBEAKScZACIdIAAPJzIADys2ACYkIQAoKSgAPTskAD47
- LwA1NDAAOTQ3ADM1OAA+OzgARTsfAEk4LABFQSoAVVAvAE1KMQBYVTMAZ1MkAGViPwAVSFsAN0RKAEdH
- QwBUUFIAUlRVAFhZXABeXFwAcm1JAHBsTQB3dFcAYV5gAGFpbABoamsAcXFxAHVycwB1dXUAfnx8AIJm
- LwCOfVUAkYBRALqHSACFgWEAr5ZgALuvegDXqmsA2bNvAMemewDQtHEA5rJnAN3HfADuwncA4MB6APbQ
- fgD3130ALm2CAEl6gQAHirgAd4uNAGakrgAFrOcAh4aHAImMjQCMjo8AkZGRAJOUkwCSlJUAoJ+LAKCd
- nwCyvo0AraaSAKynmgC3tJwAvLibAJ2foACopqYAqqqqAKutrgC+uqQAsLGqALW0rgCvsLEAsbGxALe4
- ugC6uLkAxb6jANnMjADe0IoA3sqSAPDSlQDd2awAwcC8ANPOtQDX1rcA3927APbfpwDz4bYAwcHCAMXG
- xgDJyckAzc7OANjXwQDc28sAz9DRANLR0gDe398A+evGAN/g4ADk5OQA6+vsAPT09AD6+/sA+/z7APDD
- AAD/0hEA/9gxAP/dUQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9b
- AADwaQAA/3kRAP+KMQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAK
- AADPDAAA8A4AAP8gEgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAA
- KwCwADYAzwBAAPAASQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAA
- TACQAGIAsAB4AM8AjgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsA
- UABpAHAAhwCQAKUAsADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsA
- 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
- Cg4J/xEQC/8QDwv/FxcN/xYVCv8QDgn/DAsJ/wcHBv8FBQX/WVlZ//v7+//+/v7/+/v7/2dnaP8bFxn/
- Hhca/x0WGf8dGBr/HBga/7Sztf/8+/z//v7+/+3t7f8iISD/EQ4K/xcUDP8bFg7/HxsO/yAeDf8VFAr/
- DQwI/w0NCf8NDgj/Ew8N/7B/dP+5q2H/g4JqtaenpVja2dwk8/PzCQAAAAAAAAAAAAAAAP778QuqpFb5
- 8bag/9+ZVv9bRB7/CAwL/w4RCP8QDw//GBgN/xUUCv8ODQn/CgsI/wYHBv8EBAT/hISE//39/f/+/v7/
- /f39/7m5uf8UEBL/Hxgb/x4XGv8dFxn/ODQ2/+jm6P/9/f7//v7+//n5+f9IR0b/Dw0J/xUSDP8ZFgz/
- HhoO/yEeD/8ZGAv/Dw0I/w0OCv8KDQz/TDob//Ckg//BsXf/jYlizaSko1vX19om8/PzCgAAAAAAAAAA
- AAAAAPTq0FirplP/9bag/9+ZSf+rgjD/KR8O/wwPCv8QEQz/GBgL/xUSDP8NDAr/CQoH/wYGBv8EBAT/
- oqKi//39/f/9/f3//Pz8//T09P8rJij/Hxgb/x0WGf8aFBf/fnp8//r4+v/9/P3//v7+//n5+f9sa2v/
- DgwI/xUSDP8ZFQz/HRoN/yAdDv8cGw3/Dw0I/wwMCP8hGgv/qX4y//aidv/Rt4j/k5Ja66ekolrX19gn
- 8/PzCgAAAAAAAAAAAAAAANjQqVmxrFr/9Lif/96aS//LlTf/jHE4/yAYC/8OEg3/GhkK/xAQDf8MCwn/
- CAkH/wUFBf8HBwf/sLCw//z8/P/+/v7//f39//7+/v9yb3H/GhUX/x4YG/8dGBr/xsPE//79/v/9/f3/
- /f39//v7+/+Dg4H/CwsG/xMQCv8ZFQ3/HRkO/yAdDv8bHQ//EhAJ/xAQDP+BYS3/x5U3//Ckcv/bvZP/
- mJZX6qiopVfa2dol8/PzCQAAAAAAAAAAAAAAAM/KnV21q1//9Lyd/+CfSf/OnkT/0Kxf/51+Pf8pIgv/
- GBYJ/wwPDf8KCgn/Dw8P/w4ODv8JCQn/urq6//39/f/6+vr/9vb2//39/f++vL3/GhYY/xwXGf9EQEL/
- 7+3t//38/P/19PT/+/v7//z8/P+QkI//DAwJ/xAOCf8XFA3/GxgP/x4dD/8cHRL/JhwJ/4xzQf/Sp1j/
- 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
- +Om1/+Lbwv9Dho//urOZ/wwSE/8RFBj/ERQY/xEUGP8RFBj/DxIW/xATF/8SFRf/dXd4/77Awf+1t7j/
- rK6v/4+Rkv+Wl5f/7Ozs//39/f/k5OT/jo6O/+7u7v/Qz87/dnRz/7Wpjf/54Z3/+cxi//rQcf/w46j/
- pqdZ8tDMpjMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLeuimrqVfy
- 5d+n//nafP/6zmL/9tuL/5arnf8tpMD/1sym/ygwKv8SERb/ERMU/xASF/8QExf/ERQb/xAUGf9UV1f/
- mp2d/4SGif9JS03/REVG/4WHiP/W19f/8/Pz/+zs7P/Dw8P/9fX1//39/f/u7+3/mZeR/+rVnP/51HH/
- /dBh//vmoP+/uXH+wLyHf+ng2gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAADQ0J9wr7Fa/fjnsf/22W3/9s5m/1+Wlv8Ln9P/O3B8/xZRav8NSmD/Dk1j/whcd/8JeqT/
- CnWQ/xchIf84NDv/FhYa/xQTGP9LT1H/rrCx/9vd3v/u7/D/+/v7//Ly8v/9/f3//v7+//j4+P92eHz/
- UE5I/+fHcv/6zmT/++eM/9fRlv+yrl6719SzDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAADk6MQDurpwsrq3bP/366z/9tNw/1CWlv8Ft/b/CYvA/wmSwP8Gi7v/
- Bnqo/wmDrv8LlcT/Dz1V/wwxQf8SLjn/JERM/7Gztv/T2Nj/4ePk//P19v/8/f3/+/v7/9XV1f/r6+v/
- /v7+//X19f+Hh4X/mYdg//zWX//95Iv/39uh/6WnWePh3MAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3NexFr67esTCvXj/7+ml/1makf8Btvj/
- A7X2/wa18v8Bren/BpjH/weEq/8KdZX/B1dy/zVabv8TIC7/Dxwk/2RiZP+3t7j/09TW/+bo6P/s7e3/
- np6e/6+vr//6+vn/6err/5aWlf9YXFv/ppFZ//3oif/j3af/raxa3dnSo0AAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO3qwiC6u3nU
- vrlq/3ifnP8Gtvb/ArPw/wes4f8Fn8n/C5nQ/wtWdP8QGB//EBIT/zAzMP8vOzz/DBga/0pMUP9YVlr/
- YWJl/5yenv/p6ur/5+fn//z8/P/+/f3/7e/w/8C/vP+1qof/7uue/9zXoP+nqVnZ086kNQAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAADv5tMOxb+DopCcWP8Vmsb/Bqvj/w5liv8OU2z/BJfC/xB9nP8MFR7/EhIW/xo3Pf8nUVX/
- O2tq/xQkKP8NDxT/QEFE/6KkpP/v7+///Pz8//39/f/+/f3/3N3e/4CBd/+ZmH7/xMR8/66qW8bLx5Aa
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8e3YB9XSpnuGlm3wLH1+/wuCrP8Hj8H/Dlx4/x4hJ/81NTj/
- MS8x/yhDQ/89VFX/d5GS/1ZgY/+SkpX/wMHC//Lz8//9/f3//f39//z8/P/8/Pz/qKes/3VzZ/+jn2T4
- urp1q9rXsREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+8QLr6Mw3npyK4Ly9uP9ATVT/
- S1RT/77Cv//b3+H/5+fo/+Ll5v/g6Of/2uDg//f6+v/9/f7//f39//39/f/9/f3//f39//X19f+rrq//
- hYeB/4uPbf/Q0alp9fTZCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- t7q8ksTEyP+0trv/cXd6/+Lh4//59/j//f79//79/f/+/Pz//v38//79/f/5+fn/xMTE/76+vv/5+fn/
- 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
-
-
-
\ No newline at end of file
diff --git a/LuaHawk/Program.cs b/LuaHawk/Program.cs
deleted file mode 100644
index 0ec269a80b..0000000000
--- a/LuaHawk/Program.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows.Forms;
-
-namespace LuaHawk
-{
- static class Program
- {
- ///
- /// The main entry point for the application.
- ///
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new LuaHawkMainForm());
- }
- }
-}
diff --git a/LuaHawk/Properties/AssemblyInfo.cs b/LuaHawk/Properties/AssemblyInfo.cs
deleted file mode 100644
index ff9212305f..0000000000
--- a/LuaHawk/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("LuaHawk")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("LuaHawk")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("f0d38019-a1d0-47d8-869d-2cce26a40ca2")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/LuaHawk/Properties/Resources.Designer.cs b/LuaHawk/Properties/Resources.Designer.cs
deleted file mode 100644
index 9c512f6bb6..0000000000
--- a/LuaHawk/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18052
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace LuaHawk.Properties
-{
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LuaHawk.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
- }
-}
diff --git a/LuaHawk/Properties/Resources.resx b/LuaHawk/Properties/Resources.resx
deleted file mode 100644
index ffecec851a..0000000000
--- a/LuaHawk/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/LuaHawk/Properties/Settings.Designer.cs b/LuaHawk/Properties/Settings.Designer.cs
deleted file mode 100644
index c436d97df4..0000000000
--- a/LuaHawk/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18052
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace LuaHawk.Properties
-{
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/LuaHawk/Properties/Settings.settings b/LuaHawk/Properties/Settings.settings
deleted file mode 100644
index abf36c5d3d..0000000000
--- a/LuaHawk/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/LuaHawk/logo.ico b/LuaHawk/logo.ico
deleted file mode 100644
index 40cf4e3eee..0000000000
Binary files a/LuaHawk/logo.ico and /dev/null differ