diff --git a/BizHawk.MultiClient/BizHawk.MultiClient.csproj b/BizHawk.MultiClient/BizHawk.MultiClient.csproj index fd70c44bba..2dca27179b 100644 --- a/BizHawk.MultiClient/BizHawk.MultiClient.csproj +++ b/BizHawk.MultiClient/BizHawk.MultiClient.csproj @@ -325,7 +325,6 @@ - Form @@ -486,58 +485,73 @@ N64VideoPluginconfig.cs - + Form - + HexColor.cs - + Form - + + HexEditor.cs + + + Form + + HexFind.cs - + Component - - + Form - + + LuaConsole.cs + + + + + Form + + + LuaFunctionList.cs + + + + Form + + LuaRegisteredFunctionsList.cs - + + Component - + Form - + LuaWinform.cs - + Form - + LuaWriter.cs - + Component - + Form - + LuaWriterColorConfig.cs - - Form - - - NewRamWatch.cs - @@ -643,7 +657,45 @@ Component - + + Form + + + NewRamWatch.cs + + + Form + + + RamPoke.cs + + + Form + + + RamSearch.cs + + + Form + + + RamWatch.cs + + + Form + + + RamWatchNewWatch.cs + + + + + Form + + + WatchEditor.cs + + FFmpegWriterForm.cs @@ -762,43 +814,38 @@ N64VideoPluginconfig.cs - - HexColor.cs - - - HexFind.cs - - - LuaFunctionList.cs - - - LuaRegisteredFunctionsList.cs - - - LuaWinform.cs - - - LuaWriter.cs - - - LuaWriterColorConfig.cs - - - NewRamWatch.cs - - - RamWatch.cs - Designer - - - RamWatchNewWatch.cs - Designer - True Resources.resx True + + HexColor.cs + + + HexEditor.cs + + + HexFind.cs + + + LuaConsole.cs + + + LuaFunctionList.cs + + + LuaRegisteredFunctionsList.cs + + + LuaWinform.cs + + + LuaWriter.cs + + + LuaWriterColorConfig.cs + VirtualPad.cs @@ -826,6 +873,24 @@ VirtualPadSaturnControl.cs + + NewRamWatch.cs + + + RamPoke.cs + + + RamSearch.cs + + + RamWatch.cs + + + RamWatchNewWatch.cs + + + WatchEditor.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -858,60 +923,16 @@ Cheats.cs - - Form - - - LuaFunctionList.cs - - - Form - - - HexEditor.cs - - - Form - - - LuaConsole.cs - - - Component - - Form - - - RamPoke.cs - Form InputPrompt.cs - - Form - - - RamSearch.cs - - - Form - - - RamWatch.cs - - - Form - - - RamWatchNewWatch.cs - @@ -929,7 +950,6 @@ ToolBox.cs - @@ -1015,29 +1035,14 @@ TraceLogger.cs - - HexEditor.cs - Designer - - - LuaConsole.cs - MemoryViewer.cs Designer - - RamPoke.cs - Designer - InputPrompt.cs Designer - - RamSearch.cs - Designer - TAStudio.cs diff --git a/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj b/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj index f4ff57614e..a76836806b 100644 --- a/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj +++ b/BizHawk.MultiClient/BizHawk.MultiClient_v4.5.csproj @@ -339,7 +339,6 @@ - Form @@ -488,58 +487,73 @@ SNESOptions.cs - + Form - + HexColor.cs - + Form - + + HexEditor.cs + + + Form + + HexFind.cs - + Component - - + Form - + + LuaConsole.cs + + + + + Form + + + LuaFunctionList.cs + + + + Form + + LuaRegisteredFunctionsList.cs - + + Component - + Form - + LuaWinform.cs - + Form - + LuaWriter.cs - + Component - + Form - + LuaWriterColorConfig.cs - - Form - - - NewRamWatch.cs - @@ -645,7 +659,45 @@ Component - + + Form + + + NewRamWatch.cs + + + Form + + + RamPoke.cs + + + Form + + + RamSearch.cs + + + Form + + + RamWatch.cs + + + Form + + + RamWatchNewWatch.cs + + + + + Form + + + WatchEditor.cs + + FFmpegWriterForm.cs @@ -762,43 +814,38 @@ SNESOptions.cs - - HexColor.cs - - - HexFind.cs - - - LuaFunctionList.cs - - - LuaRegisteredFunctionsList.cs - - - LuaWinform.cs - - - LuaWriter.cs - - - LuaWriterColorConfig.cs - - - NewRamWatch.cs - - - RamWatch.cs - Designer - - - RamWatchNewWatch.cs - Designer - True Resources.resx True + + HexColor.cs + + + HexEditor.cs + + + HexFind.cs + + + LuaConsole.cs + + + LuaFunctionList.cs + + + LuaRegisteredFunctionsList.cs + + + LuaWinform.cs + + + LuaWriter.cs + + + LuaWriterColorConfig.cs + VirtualPad.cs @@ -826,6 +873,24 @@ VirtualPadSaturnControl.cs + + NewRamWatch.cs + + + RamPoke.cs + + + RamSearch.cs + + + RamWatch.cs + + + RamWatchNewWatch.cs + + + WatchEditor.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -858,60 +923,16 @@ Cheats.cs - - Form - - - LuaFunctionList.cs - - - Form - - - HexEditor.cs - - - Form - - - LuaConsole.cs - - - Component - - Form - - - RamPoke.cs - Form InputPrompt.cs - - Form - - - RamSearch.cs - - - Form - - - RamWatch.cs - - - Form - - - RamWatchNewWatch.cs - @@ -929,7 +950,6 @@ ToolBox.cs - @@ -1015,29 +1035,14 @@ TraceLogger.cs - - HexEditor.cs - Designer - - - LuaConsole.cs - MemoryViewer.cs Designer - - RamPoke.cs - Designer - InputPrompt.cs Designer - - RamSearch.cs - Designer - TAStudio.cs diff --git a/BizHawk.MultiClient/HistoryCollection.cs b/BizHawk.MultiClient/HistoryCollection.cs index 709466cafd..3fad588818 100644 --- a/BizHawk.MultiClient/HistoryCollection.cs +++ b/BizHawk.MultiClient/HistoryCollection.cs @@ -5,26 +5,26 @@ namespace BizHawk.MultiClient { public class HistoryCollection { - public List> History { get; private set; } + public List> History { get; private set; } private int curPos; //1-based public bool Enabled { get; private set; } public HistoryCollection(bool enabled) { - History = new List>(); + History = new List>(); Enabled = enabled; } - public HistoryCollection(List newState, bool enabled) + public HistoryCollection(List newState, bool enabled) { - History = new List>(); + History = new List>(); AddState(newState); Enabled = enabled; } public void Clear() { - History = new List>(); + History = new List>(); } public bool CanUndo @@ -42,7 +42,7 @@ namespace BizHawk.MultiClient get { return Enabled && History.Any(); } } - public void AddState(List newState) + public void AddState(List newState) { if (Enabled) { @@ -59,7 +59,7 @@ namespace BizHawk.MultiClient } } - public List Undo() + public List Undo() { if (CanUndo && Enabled) { @@ -72,7 +72,7 @@ namespace BizHawk.MultiClient } } - public List Redo() + public List Redo() { if (CanRedo && Enabled) { diff --git a/BizHawk.MultiClient/tools/HexColor.Designer.cs b/BizHawk.MultiClient/tools/HexEditor/HexColor.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/HexColor.Designer.cs rename to BizHawk.MultiClient/tools/HexEditor/HexColor.Designer.cs diff --git a/BizHawk.MultiClient/tools/HexColor.cs b/BizHawk.MultiClient/tools/HexEditor/HexColor.cs similarity index 100% rename from BizHawk.MultiClient/tools/HexColor.cs rename to BizHawk.MultiClient/tools/HexEditor/HexColor.cs diff --git a/BizHawk.MultiClient/tools/HexColor.resx b/BizHawk.MultiClient/tools/HexEditor/HexColor.resx similarity index 100% rename from BizHawk.MultiClient/tools/HexColor.resx rename to BizHawk.MultiClient/tools/HexEditor/HexColor.resx diff --git a/BizHawk.MultiClient/tools/HexEditor.Designer.cs b/BizHawk.MultiClient/tools/HexEditor/HexEditor.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/HexEditor.Designer.cs rename to BizHawk.MultiClient/tools/HexEditor/HexEditor.Designer.cs diff --git a/BizHawk.MultiClient/tools/HexEditor.cs b/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs similarity index 95% rename from BizHawk.MultiClient/tools/HexEditor.cs rename to BizHawk.MultiClient/tools/HexEditor/HexEditor.cs index 076a2b4a60..02f89204a4 100644 --- a/BizHawk.MultiClient/tools/HexEditor.cs +++ b/BizHawk.MultiClient/tools/HexEditor/HexEditor.cs @@ -665,20 +665,20 @@ namespace BizHawk.MultiClient UpdateValues(); } - private Watch MakeWatch(int address) + private Watch_Legacy MakeWatch(int address) { - Watch w = new Watch {Address = address, BigEndian = BigEndian, Signed = Watch.DISPTYPE.HEX, Domain = Domain}; + Watch_Legacy w = new Watch_Legacy {Address = address, BigEndian = BigEndian, Signed = Watch_Legacy.DISPTYPE.HEX, Domain = Domain}; switch (DataSize) { default: case 1: - w.Type = Watch.TYPE.BYTE; + w.Type = Watch_Legacy.TYPE.BYTE; break; case 2: - w.Type = Watch.TYPE.WORD; + w.Type = Watch_Legacy.TYPE.WORD; break; case 4: - w.Type = Watch.TYPE.DWORD; + w.Type = Watch_Legacy.TYPE.DWORD; break; } return w; @@ -708,12 +708,12 @@ namespace BizHawk.MultiClient { int p = GetHighlightedAddress(); if (p < 0) return; - Watch w = new Watch + Watch_Legacy w = new Watch_Legacy { Address = p, Value = MakeValue(p), BigEndian = BigEndian, - Signed = Watch.DISPTYPE.HEX, + Signed = Watch_Legacy.DISPTYPE.HEX, Domain = Domain }; @@ -721,13 +721,13 @@ namespace BizHawk.MultiClient { default: case 1: - w.Type = Watch.TYPE.BYTE; + w.Type = Watch_Legacy.TYPE.BYTE; break; case 2: - w.Type = Watch.TYPE.WORD; + w.Type = Watch_Legacy.TYPE.WORD; break; case 4: - w.Type = Watch.TYPE.DWORD; + w.Type = Watch_Legacy.TYPE.DWORD; break; } diff --git a/BizHawk.MultiClient/tools/HexEditor.resx b/BizHawk.MultiClient/tools/HexEditor/HexEditor.resx similarity index 100% rename from BizHawk.MultiClient/tools/HexEditor.resx rename to BizHawk.MultiClient/tools/HexEditor/HexEditor.resx diff --git a/BizHawk.MultiClient/tools/HexFind.Designer.cs b/BizHawk.MultiClient/tools/HexEditor/HexFind.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/HexFind.Designer.cs rename to BizHawk.MultiClient/tools/HexEditor/HexFind.Designer.cs diff --git a/BizHawk.MultiClient/tools/HexFind.cs b/BizHawk.MultiClient/tools/HexEditor/HexFind.cs similarity index 100% rename from BizHawk.MultiClient/tools/HexFind.cs rename to BizHawk.MultiClient/tools/HexEditor/HexFind.cs diff --git a/BizHawk.MultiClient/tools/HexFind.resx b/BizHawk.MultiClient/tools/HexEditor/HexFind.resx similarity index 100% rename from BizHawk.MultiClient/tools/HexFind.resx rename to BizHawk.MultiClient/tools/HexEditor/HexFind.resx diff --git a/BizHawk.MultiClient/tools/LuaButton.cs b/BizHawk.MultiClient/tools/Lua/LuaButton.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaButton.cs rename to BizHawk.MultiClient/tools/Lua/LuaButton.cs diff --git a/BizHawk.MultiClient/tools/LuaConsole.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaConsole.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaConsole.Designer.cs rename to BizHawk.MultiClient/tools/Lua/LuaConsole.Designer.cs diff --git a/BizHawk.MultiClient/tools/LuaConsole.cs b/BizHawk.MultiClient/tools/Lua/LuaConsole.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaConsole.cs rename to BizHawk.MultiClient/tools/Lua/LuaConsole.cs diff --git a/BizHawk.MultiClient/tools/LuaConsole.resx b/BizHawk.MultiClient/tools/Lua/LuaConsole.resx similarity index 100% rename from BizHawk.MultiClient/tools/LuaConsole.resx rename to BizHawk.MultiClient/tools/Lua/LuaConsole.resx diff --git a/BizHawk.MultiClient/tools/LuaDocumentation.cs b/BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaDocumentation.cs rename to BizHawk.MultiClient/tools/Lua/LuaDocumentation.cs diff --git a/BizHawk.MultiClient/tools/LuaFiles.cs b/BizHawk.MultiClient/tools/Lua/LuaFiles.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaFiles.cs rename to BizHawk.MultiClient/tools/Lua/LuaFiles.cs diff --git a/BizHawk.MultiClient/tools/LuaFunctionList.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaFunctionList.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaFunctionList.Designer.cs rename to BizHawk.MultiClient/tools/Lua/LuaFunctionList.Designer.cs diff --git a/BizHawk.MultiClient/tools/LuaFunctionList.cs b/BizHawk.MultiClient/tools/Lua/LuaFunctionList.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaFunctionList.cs rename to BizHawk.MultiClient/tools/Lua/LuaFunctionList.cs diff --git a/BizHawk.MultiClient/tools/LuaFunctionList.resx b/BizHawk.MultiClient/tools/Lua/LuaFunctionList.resx similarity index 100% rename from BizHawk.MultiClient/tools/LuaFunctionList.resx rename to BizHawk.MultiClient/tools/Lua/LuaFunctionList.resx diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/tools/Lua/LuaImplementation.cs similarity index 100% rename from BizHawk.MultiClient/LuaImplementation.cs rename to BizHawk.MultiClient/tools/Lua/LuaImplementation.cs diff --git a/BizHawk.MultiClient/tools/LuaRegisteredFunctionsList.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaRegisteredFunctionsList.Designer.cs rename to BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.Designer.cs diff --git a/BizHawk.MultiClient/tools/LuaRegisteredFunctionsList.cs b/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaRegisteredFunctionsList.cs rename to BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.cs diff --git a/BizHawk.MultiClient/tools/LuaRegisteredFunctionsList.resx b/BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.resx similarity index 100% rename from BizHawk.MultiClient/tools/LuaRegisteredFunctionsList.resx rename to BizHawk.MultiClient/tools/Lua/LuaRegisteredFunctionsList.resx diff --git a/BizHawk.MultiClient/tools/LuaText.cs b/BizHawk.MultiClient/tools/Lua/LuaText.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaText.cs rename to BizHawk.MultiClient/tools/Lua/LuaText.cs diff --git a/BizHawk.MultiClient/tools/LuaTextBox.cs b/BizHawk.MultiClient/tools/Lua/LuaTextBox.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaTextBox.cs rename to BizHawk.MultiClient/tools/Lua/LuaTextBox.cs diff --git a/BizHawk.MultiClient/tools/LuaWinform.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaWinform.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWinform.Designer.cs rename to BizHawk.MultiClient/tools/Lua/LuaWinform.Designer.cs diff --git a/BizHawk.MultiClient/tools/LuaWinform.cs b/BizHawk.MultiClient/tools/Lua/LuaWinform.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWinform.cs rename to BizHawk.MultiClient/tools/Lua/LuaWinform.cs diff --git a/BizHawk.MultiClient/tools/LuaWinform.resx b/BizHawk.MultiClient/tools/Lua/LuaWinform.resx similarity index 100% rename from BizHawk.MultiClient/tools/LuaWinform.resx rename to BizHawk.MultiClient/tools/Lua/LuaWinform.resx diff --git a/BizHawk.MultiClient/tools/LuaWriter.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaWriter.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriter.Designer.cs rename to BizHawk.MultiClient/tools/Lua/LuaWriter.Designer.cs diff --git a/BizHawk.MultiClient/tools/LuaWriter.cs b/BizHawk.MultiClient/tools/Lua/LuaWriter.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriter.cs rename to BizHawk.MultiClient/tools/Lua/LuaWriter.cs diff --git a/BizHawk.MultiClient/tools/LuaWriter.resx b/BizHawk.MultiClient/tools/Lua/LuaWriter.resx similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriter.resx rename to BizHawk.MultiClient/tools/Lua/LuaWriter.resx diff --git a/BizHawk.MultiClient/tools/LuaWriterBox.cs b/BizHawk.MultiClient/tools/Lua/LuaWriterBox.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriterBox.cs rename to BizHawk.MultiClient/tools/Lua/LuaWriterBox.cs diff --git a/BizHawk.MultiClient/tools/LuaWriterColorConfig.Designer.cs b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriterColorConfig.Designer.cs rename to BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.Designer.cs diff --git a/BizHawk.MultiClient/tools/LuaWriterColorConfig.cs b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriterColorConfig.cs rename to BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.cs diff --git a/BizHawk.MultiClient/tools/LuaWriterColorConfig.resx b/BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.resx similarity index 100% rename from BizHawk.MultiClient/tools/LuaWriterColorConfig.resx rename to BizHawk.MultiClient/tools/Lua/LuaWriterColorConfig.resx diff --git a/BizHawk.MultiClient/tools/NewRamWatch.Designer.cs b/BizHawk.MultiClient/tools/Watch/NewRamWatch.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/NewRamWatch.Designer.cs rename to BizHawk.MultiClient/tools/Watch/NewRamWatch.Designer.cs diff --git a/BizHawk.MultiClient/tools/NewRamWatch.cs b/BizHawk.MultiClient/tools/Watch/NewRamWatch.cs similarity index 100% rename from BizHawk.MultiClient/tools/NewRamWatch.cs rename to BizHawk.MultiClient/tools/Watch/NewRamWatch.cs diff --git a/BizHawk.MultiClient/tools/NewRamWatch.resx b/BizHawk.MultiClient/tools/Watch/NewRamWatch.resx similarity index 100% rename from BizHawk.MultiClient/tools/NewRamWatch.resx rename to BizHawk.MultiClient/tools/Watch/NewRamWatch.resx diff --git a/BizHawk.MultiClient/tools/RamPoke.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/RamPoke.Designer.cs rename to BizHawk.MultiClient/tools/Watch/RamPoke.Designer.cs diff --git a/BizHawk.MultiClient/tools/RamPoke.cs b/BizHawk.MultiClient/tools/Watch/RamPoke.cs similarity index 78% rename from BizHawk.MultiClient/tools/RamPoke.cs rename to BizHawk.MultiClient/tools/Watch/RamPoke.cs index 5a18fca50d..01de4da264 100644 --- a/BizHawk.MultiClient/tools/RamPoke.cs +++ b/BizHawk.MultiClient/tools/Watch/RamPoke.cs @@ -7,7 +7,7 @@ namespace BizHawk.MultiClient { public partial class RamPoke : Form { - public Watch Watch = new Watch(); + public Watch_Legacy Watch = new Watch_Legacy(); public MemoryDomain Domain = Global.Emulator.MainMemory; public Point NewLocation = new Point(); @@ -16,10 +16,10 @@ namespace BizHawk.MultiClient InitializeComponent(); } - public void SetWatchObject(Watch w) + public void SetWatchObject(Watch_Legacy w) { PopulateMemoryDomainComboBox(); - Watch = new Watch(w); + Watch = new Watch_Legacy(w); Domain = w.Domain; } @@ -29,7 +29,7 @@ namespace BizHawk.MultiClient PopulateMemoryDomainComboBox(); SetTypeRadio(Watch.Type); SetSignedRadio(Watch.Signed); - if (Watch.Signed == Watch.DISPTYPE.HEX) + if (Watch.Signed == Watch_Legacy.DISPTYPE.HEX) { ValueHexLabel.Text = "0x"; } @@ -68,15 +68,15 @@ namespace BizHawk.MultiClient { switch (Watch.Signed) { - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: SignedRadio.Checked = true; ValueHexLabel.Text = ""; break; - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: UnsignedRadio.Checked = true; ValueHexLabel.Text = ""; break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: ValueHexLabel.Text = "0x"; HexRadio.Checked = true; break; @@ -90,7 +90,7 @@ namespace BizHawk.MultiClient { ValueHexLabel.Text = "0x"; ValueBox.MaxLength = GetValueNumDigits(); - Watch.Signed = Watch.DISPTYPE.HEX; + Watch.Signed = Watch_Legacy.DISPTYPE.HEX; FormatValue(); } @@ -98,7 +98,7 @@ namespace BizHawk.MultiClient { ValueHexLabel.Text = ""; ValueBox.MaxLength = GetValueNumDigits(); - Watch.Signed = Watch.DISPTYPE.UNSIGNED; + Watch.Signed = Watch_Legacy.DISPTYPE.UNSIGNED; FormatValue(); } @@ -106,7 +106,7 @@ namespace BizHawk.MultiClient { ValueHexLabel.Text = ""; ValueBox.MaxLength = GetValueNumDigits(); - Watch.Signed = Watch.DISPTYPE.SIGNED; + Watch.Signed = Watch_Legacy.DISPTYPE.SIGNED; FormatValue(); } @@ -130,33 +130,33 @@ namespace BizHawk.MultiClient Text = "Ram Poke - " + Domain; } - private void SetTypeRadio(Watch.TYPE a) + private void SetTypeRadio(Watch_Legacy.TYPE a) { switch (a) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: Byte1Radio.Checked = true; break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: Byte2Radio.Checked = true; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: Byte4Radio.Checked = true; break; } } - private void SetSignedRadio(Watch.DISPTYPE a) + private void SetSignedRadio(Watch_Legacy.DISPTYPE a) { switch (a) { - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: SignedRadio.Checked = true; break; - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: UnsignedRadio.Checked = true; break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: HexRadio.Checked = true; break; } @@ -183,28 +183,28 @@ namespace BizHawk.MultiClient if (SignedRadio.Checked) { - Watch.Signed = Watch.DISPTYPE.SIGNED; + Watch.Signed = Watch_Legacy.DISPTYPE.SIGNED; } else if (UnsignedRadio.Checked) { - Watch.Signed = Watch.DISPTYPE.UNSIGNED; + Watch.Signed = Watch_Legacy.DISPTYPE.UNSIGNED; } else if (HexRadio.Checked) { - Watch.Signed = Watch.DISPTYPE.HEX; + Watch.Signed = Watch_Legacy.DISPTYPE.HEX; } if (Byte1Radio.Checked) { - Watch.Type = Watch.TYPE.BYTE; + Watch.Type = Watch_Legacy.TYPE.BYTE; } else if (Byte2Radio.Checked) { - Watch.Type = Watch.TYPE.WORD; + Watch.Type = Watch_Legacy.TYPE.WORD; } else if (Byte4Radio.Checked) { - Watch.Type = Watch.TYPE.DWORD; + Watch.Type = Watch_Legacy.TYPE.DWORD; } if (BigEndianRadio.Checked) @@ -261,7 +261,7 @@ namespace BizHawk.MultiClient switch (Watch.Signed) { - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: if (!InputValidate.IsValidUnsignedNumber(ValueBox.Text)) { ValueBox.Focus(); @@ -270,7 +270,7 @@ namespace BizHawk.MultiClient t.Show("Must be a valid unsigned decimal value", ValueBox, 5000); } break; - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: if (!InputValidate.IsValidSignedNumber(ValueBox.Text)) { ValueBox.Focus(); @@ -279,7 +279,7 @@ namespace BizHawk.MultiClient t.Show("Must be a valid signed decimal value", ValueBox, 5000); } break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: if (!InputValidate.IsValidHexNumber(ValueBox.Text)) { ValueBox.Focus(); @@ -292,23 +292,23 @@ namespace BizHawk.MultiClient } - private Watch.DISPTYPE GetDataType() + private Watch_Legacy.DISPTYPE GetDataType() { if (SignedRadio.Checked) { - return Watch.DISPTYPE.SIGNED; + return Watch_Legacy.DISPTYPE.SIGNED; } if (UnsignedRadio.Checked) { - return Watch.DISPTYPE.UNSIGNED; + return Watch_Legacy.DISPTYPE.UNSIGNED; } if (HexRadio.Checked) { - return Watch.DISPTYPE.HEX; + return Watch_Legacy.DISPTYPE.HEX; } else { - return Watch.DISPTYPE.UNSIGNED; //Just in case + return Watch_Legacy.DISPTYPE.UNSIGNED; //Just in case } } @@ -318,19 +318,19 @@ namespace BizHawk.MultiClient switch (GetDataType()) { - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: if (!InputValidate.IsValidUnsignedNumber(e.KeyChar)) { e.Handled = true; } break; - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: if (!InputValidate.IsValidSignedNumber(e.KeyChar)) { e.Handled = true; } break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: if (!InputValidate.IsValidHexNumber(e.KeyChar)) { e.Handled = true; @@ -339,23 +339,23 @@ namespace BizHawk.MultiClient } } - private Watch.TYPE GetDataSize() + private Watch_Legacy.TYPE GetDataSize() { if (Byte1Radio.Checked) { - return Watch.TYPE.BYTE; + return Watch_Legacy.TYPE.BYTE; } else if (Byte2Radio.Checked) { - return Watch.TYPE.WORD; + return Watch_Legacy.TYPE.WORD; } else if (Byte4Radio.Checked) { - return Watch.TYPE.DWORD; + return Watch_Legacy.TYPE.DWORD; } else { - return Watch.TYPE.BYTE; + return Watch_Legacy.TYPE.BYTE; } } @@ -365,7 +365,7 @@ namespace BizHawk.MultiClient bool i; switch (GetDataType()) { - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: i = InputValidate.IsValidUnsignedNumber(ValueBox.Text); if (!i) { @@ -375,7 +375,7 @@ namespace BizHawk.MultiClient { return (int)Int64.Parse(ValueBox.Text); //Note: 64 to be safe } - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: i = InputValidate.IsValidSignedNumber(ValueBox.Text); if (!i) { @@ -385,7 +385,7 @@ namespace BizHawk.MultiClient { return (int)Int64.Parse(ValueBox.Text); } - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: i = InputValidate.IsValidHexNumber(ValueBox.Text); if (!i) { @@ -404,15 +404,15 @@ namespace BizHawk.MultiClient switch (GetDataSize()) { default: - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: if (HexRadio.Checked) return 2; else if (UnsignedRadio.Checked) return 3; else return 4; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: if (HexRadio.Checked) return 4; else if (UnsignedRadio.Checked) return 5; else return 6; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: if (HexRadio.Checked) return 8; else if (UnsignedRadio.Checked) return 10; else return 11; diff --git a/BizHawk.MultiClient/tools/RamPoke.resx b/BizHawk.MultiClient/tools/Watch/RamPoke.resx similarity index 100% rename from BizHawk.MultiClient/tools/RamPoke.resx rename to BizHawk.MultiClient/tools/Watch/RamPoke.resx diff --git a/BizHawk.MultiClient/tools/RamSearch.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/RamSearch.Designer.cs rename to BizHawk.MultiClient/tools/Watch/RamSearch.Designer.cs diff --git a/BizHawk.MultiClient/tools/RamSearch.cs b/BizHawk.MultiClient/tools/Watch/RamSearch.cs similarity index 89% rename from BizHawk.MultiClient/tools/RamSearch.cs rename to BizHawk.MultiClient/tools/Watch/RamSearch.cs index 8bb7cedfa7..5fe8e87c06 100644 --- a/BizHawk.MultiClient/tools/RamSearch.cs +++ b/BizHawk.MultiClient/tools/Watch/RamSearch.cs @@ -20,7 +20,7 @@ namespace BizHawk.MultiClient //Multiple undo levels (List> UndoLists) private string systemID = "NULL"; - private List Searches = new List(); + private List Searches = new List(); private HistoryCollection SearchHistory = new HistoryCollection(enabled:true); private bool IsAWeededList = false; //For deciding whether the weeded list is relevant (0 size could mean all were removed in a legit preview private readonly List domainMenuItems = new List(); @@ -337,43 +337,43 @@ namespace BizHawk.MultiClient StartNewSearch(); } - private Watch.DISPTYPE GetDataType() + private Watch_Legacy.DISPTYPE GetDataType() { if (unsignedToolStripMenuItem.Checked) { - return Watch.DISPTYPE.UNSIGNED; + return Watch_Legacy.DISPTYPE.UNSIGNED; } else if (signedToolStripMenuItem.Checked) { - return Watch.DISPTYPE.SIGNED; + return Watch_Legacy.DISPTYPE.SIGNED; } else if (hexadecimalToolStripMenuItem.Checked) { - return Watch.DISPTYPE.HEX; + return Watch_Legacy.DISPTYPE.HEX; } else { - return Watch.DISPTYPE.UNSIGNED; //Just in case + return Watch_Legacy.DISPTYPE.UNSIGNED; //Just in case } } - private Watch.TYPE GetDataSize() + private Watch_Legacy.TYPE GetDataSize() { if (byteToolStripMenuItem.Checked) { - return Watch.TYPE.BYTE; + return Watch_Legacy.TYPE.BYTE; } else if (bytesToolStripMenuItem.Checked) { - return Watch.TYPE.WORD; + return Watch_Legacy.TYPE.WORD; } else if (dWordToolStripMenuItem1.Checked) { - return Watch.TYPE.DWORD; + return Watch_Legacy.TYPE.DWORD; } else { - return Watch.TYPE.BYTE; + return Watch_Legacy.TYPE.BYTE; } } @@ -408,10 +408,10 @@ namespace BizHawk.MultiClient { switch (GetDataSize()) { - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: divisor = 2; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: divisor = 4; break; } @@ -419,7 +419,7 @@ namespace BizHawk.MultiClient for (int x = 0; x <= ((Domain.Size / divisor) - 1); x++) { - Searches.Add(new Watch()); + Searches.Add(new Watch_Legacy()); Searches[x].Address = count; Searches[x].Type = GetDataSize(); Searches[x].BigEndian = GetBigEndian(); @@ -437,13 +437,13 @@ namespace BizHawk.MultiClient { switch (GetDataSize()) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: count++; break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: count += 2; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: count += 4; break; } @@ -675,7 +675,7 @@ namespace BizHawk.MultiClient private void ClearChangeCounts() { - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { t.Changecount = 0; } @@ -819,7 +819,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) < Searches[x].SignedVal(previous)) { @@ -847,7 +847,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) > Searches[x].SignedVal(previous)) { @@ -875,7 +875,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) <= Searches[x].SignedVal(previous)) { @@ -903,7 +903,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) >= Searches[x].SignedVal(previous)) { @@ -931,7 +931,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) == Searches[x].SignedVal(previous)) { @@ -959,7 +959,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) != Searches[x].SignedVal(previous)) { @@ -989,7 +989,7 @@ namespace BizHawk.MultiClient for (int x = 0; x < Searches.Count; x++) { int previous = GetPreviousValue(x); - if (Searches[x].Signed == Watch.DISPTYPE.SIGNED) + if (Searches[x].Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (Searches[x].SignedVal(Searches[x].Value) == Searches[x].SignedVal(previous) + diff || Searches[x].SignedVal(Searches[x].Value) == Searches[x].SignedVal(previous) - diff) { @@ -1036,9 +1036,9 @@ namespace BizHawk.MultiClient switch (GetOperator()) { case SOperator.LESS: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) < t.SignedVal((int)value)) { @@ -1063,9 +1063,9 @@ namespace BizHawk.MultiClient } break; case SOperator.GREATER: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) > t.SignedVal((int)value)) { @@ -1090,9 +1090,9 @@ namespace BizHawk.MultiClient } break; case SOperator.LESSEQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) <= t.SignedVal((int)value)) { @@ -1117,9 +1117,9 @@ namespace BizHawk.MultiClient } break; case SOperator.GREATEREQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) >= t.SignedVal((int)value)) { @@ -1144,9 +1144,9 @@ namespace BizHawk.MultiClient } break; case SOperator.EQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) == t.SignedVal((int)value)) { @@ -1172,9 +1172,9 @@ namespace BizHawk.MultiClient } break; case SOperator.NOTEQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) != t.SignedVal((int)value)) { @@ -1201,9 +1201,9 @@ namespace BizHawk.MultiClient case SOperator.DIFFBY: int diff = GetDifferentBy(); if (diff < 0) return false; - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { - if (t.Signed == Watch.DISPTYPE.SIGNED) + if (t.Signed == Watch_Legacy.DISPTYPE.SIGNED) { if (t.SignedVal(t.Value) == t.SignedVal((int)value) + diff || t.SignedVal(t.Value) == t.SignedVal((int)value) - diff) { @@ -1237,27 +1237,27 @@ namespace BizHawk.MultiClient bool i; switch (GetDataType()) { - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: i = InputValidate.IsValidUnsignedNumber(SpecificValueBox.Text); if (!i) return null; return (int)Int64.Parse(SpecificValueBox.Text); //Note: 64 to be safe since 4 byte values can be entered - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: i = InputValidate.IsValidSignedNumber(SpecificValueBox.Text); if (!i) return null; int value = (int)Int64.Parse(SpecificValueBox.Text); switch (GetDataSize()) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: return (byte)value; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: return (ushort)value; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: return (int)(uint)value; } return value; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: i = InputValidate.IsValidHexNumber(SpecificValueBox.Text); if (!i) return null; @@ -1303,7 +1303,7 @@ namespace BizHawk.MultiClient switch (GetOperator()) { case SOperator.LESS: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address < address) { @@ -1316,7 +1316,7 @@ namespace BizHawk.MultiClient } break; case SOperator.GREATER: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address > address) { @@ -1329,7 +1329,7 @@ namespace BizHawk.MultiClient } break; case SOperator.LESSEQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address <= address) { @@ -1342,7 +1342,7 @@ namespace BizHawk.MultiClient } break; case SOperator.GREATEREQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address >= address) { @@ -1355,7 +1355,7 @@ namespace BizHawk.MultiClient } break; case SOperator.EQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address == address) { @@ -1368,7 +1368,7 @@ namespace BizHawk.MultiClient } break; case SOperator.NOTEQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address != address) { @@ -1384,7 +1384,7 @@ namespace BizHawk.MultiClient { int diff = GetDifferentBy(); if (diff < 0) return false; - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address == address + diff || t.Address == address - diff) { @@ -1423,7 +1423,7 @@ namespace BizHawk.MultiClient switch (GetOperator()) { case SOperator.LESS: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Changecount < changes) { @@ -1436,7 +1436,7 @@ namespace BizHawk.MultiClient } break; case SOperator.GREATER: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Changecount > changes) { @@ -1449,7 +1449,7 @@ namespace BizHawk.MultiClient } break; case SOperator.LESSEQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Changecount <= changes) { @@ -1462,7 +1462,7 @@ namespace BizHawk.MultiClient } break; case SOperator.GREATEREQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Changecount >= changes) { @@ -1475,7 +1475,7 @@ namespace BizHawk.MultiClient } break; case SOperator.EQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Changecount == changes) { @@ -1488,7 +1488,7 @@ namespace BizHawk.MultiClient } break; case SOperator.NOTEQUAL: - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Changecount != changes) { @@ -1503,7 +1503,7 @@ namespace BizHawk.MultiClient case SOperator.DIFFBY: int diff = GetDifferentBy(); if (diff < 0) return false; - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { if (t.Address == changes + diff || t.Address == changes - diff) { @@ -1519,16 +1519,16 @@ namespace BizHawk.MultiClient return true; } - private void ConvertListsDataType(Watch.DISPTYPE s) + private void ConvertListsDataType(Watch_Legacy.DISPTYPE s) { - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { t.Signed = s; } - foreach (List state in SearchHistory.History) + foreach (List state in SearchHistory.History) { - foreach (Watch watch in state) + foreach (Watch_Legacy watch in state) { watch.Signed = s; } @@ -1540,7 +1540,7 @@ namespace BizHawk.MultiClient DisplaySearchList(); } - private void ConvertListsDataSize(Watch.TYPE s, bool bigendian) + private void ConvertListsDataSize(Watch_Legacy.TYPE s, bool bigendian) { ConvertDataSize(s, ref Searches); @@ -1556,23 +1556,23 @@ namespace BizHawk.MultiClient DisplaySearchList(); } - private void ConvertDataSize(Watch.TYPE s, ref List list) + private void ConvertDataSize(Watch_Legacy.TYPE s, ref List list) { - List converted = new List(); + List converted = new List(); int divisor = 1; if (!includeMisalignedToolStripMenuItem.Checked) { switch (s) { - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: divisor = 2; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: divisor = 4; break; } } - foreach (Watch t in list) + foreach (Watch_Legacy t in list) if (t.Address % divisor == 0) { int changes = t.Changecount; @@ -1591,50 +1591,50 @@ namespace BizHawk.MultiClient private void unsignedToolStripMenuItem_Click(object sender, EventArgs e) { - Watch specificValue = new Watch(); + Watch_Legacy specificValue = new Watch_Legacy(); int? value = GetSpecificValue(); ValidateSpecificValue(value); if (value != null) specificValue.Value = (int)value; - specificValue.Signed = Watch.DISPTYPE.UNSIGNED; + specificValue.Signed = Watch_Legacy.DISPTYPE.UNSIGNED; specificValue.Type = GetDataSize(); string converted = specificValue.ValueString; unsignedToolStripMenuItem.Checked = true; signedToolStripMenuItem.Checked = false; hexadecimalToolStripMenuItem.Checked = false; SpecificValueBox.Text = converted; - ConvertListsDataType(Watch.DISPTYPE.UNSIGNED); + ConvertListsDataType(Watch_Legacy.DISPTYPE.UNSIGNED); } private void signedToolStripMenuItem_Click(object sender, EventArgs e) { - Watch specificValue = new Watch(); + Watch_Legacy specificValue = new Watch_Legacy(); int? value = GetSpecificValue(); ValidateSpecificValue(value); if (value != null) specificValue.Value = (int)value; - specificValue.Signed = Watch.DISPTYPE.SIGNED; + specificValue.Signed = Watch_Legacy.DISPTYPE.SIGNED; specificValue.Type = GetDataSize(); string converted = specificValue.ValueString; unsignedToolStripMenuItem.Checked = false; signedToolStripMenuItem.Checked = true; hexadecimalToolStripMenuItem.Checked = false; SpecificValueBox.Text = converted; - ConvertListsDataType(Watch.DISPTYPE.SIGNED); + ConvertListsDataType(Watch_Legacy.DISPTYPE.SIGNED); } private void hexadecimalToolStripMenuItem_Click(object sender, EventArgs e) { - Watch specificValue = new Watch(); + Watch_Legacy specificValue = new Watch_Legacy(); int? value = GetSpecificValue(); ValidateSpecificValue(value); if (value != null) specificValue.Value = (int)value; - specificValue.Signed = Watch.DISPTYPE.HEX; + specificValue.Signed = Watch_Legacy.DISPTYPE.HEX; specificValue.Type = GetDataSize(); string converted = specificValue.ValueString; unsignedToolStripMenuItem.Checked = false; signedToolStripMenuItem.Checked = false; hexadecimalToolStripMenuItem.Checked = true; SpecificValueBox.Text = converted; - ConvertListsDataType(Watch.DISPTYPE.HEX); + ConvertListsDataType(Watch_Legacy.DISPTYPE.HEX); } private void SearchListView_MouseDoubleClick(object sender, MouseEventArgs e) @@ -1650,16 +1650,16 @@ namespace BizHawk.MultiClient { switch (GetDataType()) { - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: switch (GetDataSize()) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: SpecificValueBox.MaxLength = 3; break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: SpecificValueBox.MaxLength = 5; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: SpecificValueBox.MaxLength = 10; break; default: @@ -1667,16 +1667,16 @@ namespace BizHawk.MultiClient break; } break; - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: switch (GetDataSize()) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: SpecificValueBox.MaxLength = 4; break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: SpecificValueBox.MaxLength = 6; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: SpecificValueBox.MaxLength = 11; break; default: @@ -1684,16 +1684,16 @@ namespace BizHawk.MultiClient break; } break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: switch (GetDataSize()) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: SpecificValueBox.MaxLength = 2; break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: SpecificValueBox.MaxLength = 4; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: SpecificValueBox.MaxLength = 8; break; default: @@ -1712,7 +1712,7 @@ namespace BizHawk.MultiClient byteToolStripMenuItem.Checked = true; bytesToolStripMenuItem.Checked = false; dWordToolStripMenuItem1.Checked = false; - ConvertListsDataSize(Watch.TYPE.BYTE, GetBigEndian()); + ConvertListsDataSize(Watch_Legacy.TYPE.BYTE, GetBigEndian()); } private void bytesToolStripMenuItem_Click(object sender, EventArgs e) @@ -1720,7 +1720,7 @@ namespace BizHawk.MultiClient byteToolStripMenuItem.Checked = false; bytesToolStripMenuItem.Checked = true; dWordToolStripMenuItem1.Checked = false; - ConvertListsDataSize(Watch.TYPE.WORD, GetBigEndian()); + ConvertListsDataSize(Watch_Legacy.TYPE.WORD, GetBigEndian()); } private void dWordToolStripMenuItem1_Click(object sender, EventArgs e) @@ -1728,7 +1728,7 @@ namespace BizHawk.MultiClient byteToolStripMenuItem.Checked = false; bytesToolStripMenuItem.Checked = false; dWordToolStripMenuItem1.Checked = true; - ConvertListsDataSize(Watch.TYPE.DWORD, GetBigEndian()); + ConvertListsDataSize(Watch_Legacy.TYPE.DWORD, GetBigEndian()); } private void includeMisalignedToolStripMenuItem_Click_1(object sender, EventArgs e) @@ -1831,7 +1831,7 @@ namespace BizHawk.MultiClient DisplaySearchList(); } - bool LoadSearchFile(string path, bool append, List list) + bool LoadSearchFile(string path, bool append, List list) { string domain; bool result = WatchCommon.LoadWatchFile(path, append, list, out domain); @@ -2047,19 +2047,19 @@ namespace BizHawk.MultiClient switch (GetDataType()) { - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: if (!InputValidate.IsValidUnsignedNumber(e.KeyChar)) { e.Handled = true; } break; - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: if (!InputValidate.IsValidSignedNumber(e.KeyChar)) { e.Handled = true; } break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: if (!InputValidate.IsValidHexNumber(e.KeyChar)) { e.Handled = true; @@ -2120,7 +2120,7 @@ namespace BizHawk.MultiClient var file = GetFileFromUser(); if (file != null) { - List temp = new List(); + List temp = new List(); LoadSearchFile(file.FullName, false, temp); TruncateList(temp); DoTruncate(); @@ -2130,17 +2130,17 @@ namespace BizHawk.MultiClient private void ClearWeeded() { - foreach (Watch watch in Searches) + foreach (Watch_Legacy watch in Searches) { watch.Deleted = false; } } - private void TruncateList(IEnumerable toRemove) + private void TruncateList(IEnumerable toRemove) { ClearWeeded(); - foreach (Watch watch in toRemove) + foreach (Watch_Legacy watch in toRemove) { var first_or_default = Searches.FirstOrDefault(x => x.Address == watch.Address); if (first_or_default != null) @@ -2181,7 +2181,7 @@ namespace BizHawk.MultiClient private void CopyValueToPrev() { - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { t.LastSearch = t.Value; t.Original = t.Value; @@ -2194,7 +2194,7 @@ namespace BizHawk.MultiClient private void UpdateLastSearch() { - foreach (Watch t in Searches) + foreach (Watch_Legacy t in Searches) { t.LastSearch = t.Value; } @@ -2247,14 +2247,14 @@ namespace BizHawk.MultiClient { switch (Searches[indexes[i]].Type) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: Global.CheatList.Remove(Domain, Searches[indexes[i]].Address); break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: Global.CheatList.Remove(Domain, Searches[indexes[i]].Address); Global.CheatList.Remove(Domain, Searches[indexes[i]].Address + 1); break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: Global.CheatList.Remove(Domain, Searches[indexes[i]].Address); Global.CheatList.Remove(Domain, Searches[indexes[i]].Address + 1); Global.CheatList.Remove(Domain, Searches[indexes[i]].Address + 2); @@ -2279,12 +2279,12 @@ namespace BizHawk.MultiClient { switch (Searches[indexes[i]].Type) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: Cheat c = new Cheat("", Searches[indexes[i]].Address, (byte)Searches[indexes[i]].Value, true, Domain); Global.MainForm.Cheats1.AddCheat(c); break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: { byte low = (byte)(Searches[indexes[i]].Value / 256); byte high = (byte)(Searches[indexes[i]].Value); @@ -2306,7 +2306,7 @@ namespace BizHawk.MultiClient } } break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: { byte HIWORDhigh = (byte)(Searches[indexes[i]].Value / 0x1000000); byte HIWORDlow = (byte)(Searches[indexes[i]].Value / 0x10000); @@ -2561,7 +2561,7 @@ namespace BizHawk.MultiClient string columnName = SearchListView.Columns[columnToOrder].Text; if (sortedCol.CompareTo(columnName) != 0) sortReverse = false; - Searches.Sort((x, y) => x.CompareTo(y, columnName, (Watch.PREVDEF)Global.Config.RamSearchPreviousAs) * (sortReverse ? -1 : 1)); + Searches.Sort((x, y) => x.CompareTo(y, columnName, (Watch_Legacy.PREVDEF)Global.Config.RamSearchPreviousAs) * (sortReverse ? -1 : 1)); sortedCol = columnName; sortReverse = !(sortReverse); SearchListView.Refresh(); diff --git a/BizHawk.MultiClient/tools/RamSearch.resx b/BizHawk.MultiClient/tools/Watch/RamSearch.resx similarity index 100% rename from BizHawk.MultiClient/tools/RamSearch.resx rename to BizHawk.MultiClient/tools/Watch/RamSearch.resx diff --git a/BizHawk.MultiClient/tools/RamWatch.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamWatch.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/RamWatch.Designer.cs rename to BizHawk.MultiClient/tools/Watch/RamWatch.Designer.cs diff --git a/BizHawk.MultiClient/tools/RamWatch.cs b/BizHawk.MultiClient/tools/Watch/RamWatch.cs similarity index 93% rename from BizHawk.MultiClient/tools/RamWatch.cs rename to BizHawk.MultiClient/tools/Watch/RamWatch.cs index 78b47af927..33e3a24e6e 100644 --- a/BizHawk.MultiClient/tools/RamWatch.cs +++ b/BizHawk.MultiClient/tools/Watch/RamWatch.cs @@ -26,7 +26,7 @@ namespace BizHawk.MultiClient private string systemID = "NULL"; private MemoryDomain Domain = new MemoryDomain("NULL", 1, Endian.Little, addr => 0, (a, v) => { }); - private readonly List Watches = new List(); + private readonly List Watches = new List(); private string currentFile = ""; private bool changes = false; private readonly List domainMenuItems = new List(); @@ -52,9 +52,9 @@ namespace BizHawk.MultiClient } } - public List GetRamWatchList() + public List GetRamWatchList() { - return Watches.Select(t => new Watch(t)).ToList(); + return Watches.Select(t => new Watch_Legacy(t)).ToList(); } public void DisplayWatchList() @@ -69,7 +69,7 @@ namespace BizHawk.MultiClient return; } - foreach (Watch t in Watches) + foreach (Watch_Legacy t in Watches) { t.PeekAddress(); } @@ -91,7 +91,7 @@ namespace BizHawk.MultiClient WatchListView.BlazingFast = false; } - public void AddWatch(Watch w) + public void AddWatch(Watch_Legacy w) { Watches.Add(w); Changes(); @@ -195,7 +195,7 @@ namespace BizHawk.MultiClient if (column == 0) { - if (Watches[index].Type == Watch.TYPE.SEPARATOR) + if (Watches[index].Type == Watch_Legacy.TYPE.SEPARATOR) { color = BackColor; } @@ -210,7 +210,7 @@ namespace BizHawk.MultiClient { text = ""; - if (Watches[index].Type == Watch.TYPE.SEPARATOR || index >= Watches.Count) + if (Watches[index].Type == Watch_Legacy.TYPE.SEPARATOR || index >= Watches.Count) { return; } @@ -334,7 +334,7 @@ namespace BizHawk.MultiClient private void UpdateWatchCount() { - int count = Watches.Count(w => w.Type != Watch.TYPE.SEPARATOR); + int count = Watches.Count(w => w.Type != Watch_Legacy.TYPE.SEPARATOR); WatchCountLabel.Text = count.ToString() + (count == 1 ? " watch" : " watches"); } @@ -346,7 +346,7 @@ namespace BizHawk.MultiClient if (result) { - foreach (Watch w in Watches) + foreach (Watch_Legacy w in Watches) { InitializeAddress(w); } @@ -375,7 +375,7 @@ namespace BizHawk.MultiClient private void AddNewWatch() { RamWatchNewWatch r = new RamWatchNewWatch {location = GetPromptPoint()}; - Watch w = new Watch {Domain = Domain}; + Watch_Legacy w = new Watch_Legacy {Domain = Domain}; r.SetWatch(w); Global.Sound.StopSound(); r.ShowDialog(); @@ -390,7 +390,7 @@ namespace BizHawk.MultiClient } } - private void InitializeAddress(Watch w) + private void InitializeAddress(Watch_Legacy w) { w.PeekAddress(); w.Prev = w.Value; @@ -485,7 +485,7 @@ namespace BizHawk.MultiClient if (indexes.Count == 0) return; foreach (int index in indexes) { - Watch temp = Watches[index]; + Watch_Legacy temp = Watches[index]; Watches.Remove(Watches[index]); Watches.Insert(index - 1, temp); @@ -514,7 +514,7 @@ namespace BizHawk.MultiClient if (indexes.Count == 0) return; foreach (int index in indexes) { - Watch temp = Watches[index]; + Watch_Legacy temp = Watches[index]; if (index < Watches.Count - 1) { @@ -787,7 +787,7 @@ namespace BizHawk.MultiClient private void InsertSeparator() { Changes(); - Watch w = new Watch {Type = Watch.TYPE.SEPARATOR}; + Watch_Legacy w = new Watch_Legacy {Type = Watch_Legacy.TYPE.SEPARATOR}; ListView.SelectedIndexCollection indexes = WatchListView.SelectedIndices; if (indexes.Count > 0) @@ -1065,7 +1065,7 @@ namespace BizHawk.MultiClient private void ClearChangeCounts() { - foreach (Watch t in Watches) + foreach (Watch_Legacy t in Watches) { t.Changecount = 0; } @@ -1196,12 +1196,12 @@ namespace BizHawk.MultiClient { switch (Watches[indexes[i]].Type) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: Cheat c = new Cheat("", Watches[indexes[i]].Address, (byte)Watches[indexes[i]].Value, true, Domain); Global.MainForm.Cheats1.AddCheat(c); break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: { byte low = (byte)(Watches[indexes[i]].Value / 256); byte high = (byte)(Watches[indexes[i]].Value); @@ -1223,7 +1223,7 @@ namespace BizHawk.MultiClient } } break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: { byte HIWORDhigh = (byte)(Watches[indexes[i]].Value >> 24); byte HIWORDlow = (byte)(Watches[indexes[i]].Value >> 16); @@ -1275,14 +1275,14 @@ namespace BizHawk.MultiClient { switch (Watches[indexes[i]].Type) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: Global.CheatList.Remove(Domain, Watches[indexes[i]].Address); break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: Global.CheatList.Remove(Domain, Watches[indexes[i]].Address); Global.CheatList.Remove(Domain, Watches[indexes[i]].Address + 1); break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: Global.CheatList.Remove(Domain, Watches[indexes[i]].Address); Global.CheatList.Remove(Domain, Watches[indexes[i]].Address + 1); Global.CheatList.Remove(Domain, Watches[indexes[i]].Address + 2); @@ -1494,7 +1494,7 @@ namespace BizHawk.MultiClient { sortReverse = false; } - Watches.Sort((x, y) => x.CompareTo(y, columnName, Global.Config.RamWatchPrev_Type == 1 ? Watch.PREVDEF.LASTFRAME : Watch.PREVDEF.LASTCHANGE) * (sortReverse ? -1 : 1)); + Watches.Sort((x, y) => x.CompareTo(y, columnName, Global.Config.RamWatchPrev_Type == 1 ? Watch_Legacy.PREVDEF.LASTFRAME : Watch_Legacy.PREVDEF.LASTCHANGE) * (sortReverse ? -1 : 1)); sortedCol = columnName; sortReverse = !(sortReverse); WatchListView.Refresh(); diff --git a/BizHawk.MultiClient/tools/RamWatch.resx b/BizHawk.MultiClient/tools/Watch/RamWatch.resx similarity index 100% rename from BizHawk.MultiClient/tools/RamWatch.resx rename to BizHawk.MultiClient/tools/Watch/RamWatch.resx diff --git a/BizHawk.MultiClient/tools/RamWatchNewWatch.Designer.cs b/BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.Designer.cs similarity index 100% rename from BizHawk.MultiClient/tools/RamWatchNewWatch.Designer.cs rename to BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.Designer.cs diff --git a/BizHawk.MultiClient/tools/RamWatchNewWatch.cs b/BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.cs similarity index 83% rename from BizHawk.MultiClient/tools/RamWatchNewWatch.cs rename to BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.cs index db892c9954..6680ff803c 100644 --- a/BizHawk.MultiClient/tools/RamWatchNewWatch.cs +++ b/BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.cs @@ -7,7 +7,7 @@ namespace BizHawk.MultiClient { public partial class RamWatchNewWatch : Form { - public Watch Watch = new Watch(); + public Watch_Legacy Watch = new Watch_Legacy(); public bool SelectionWasMade = false; public Point location = new Point(); @@ -18,10 +18,10 @@ namespace BizHawk.MultiClient InitializeComponent(); } - public void SetWatch(Watch watch, string message = "New Watch") + public void SetWatch(Watch_Legacy watch, string message = "New Watch") { DoNotResetAddress = true; //Hack for the drop down event changing when initializing the drop down - Watch = new Watch(watch); + Watch = new Watch_Legacy(watch); Text = message; NotesBox.Text = watch.Notes; @@ -70,28 +70,28 @@ namespace BizHawk.MultiClient if (SignedRadio.Checked) { - Watch.Signed = Watch.DISPTYPE.SIGNED; + Watch.Signed = Watch_Legacy.DISPTYPE.SIGNED; } else if (UnsignedRadio.Checked) { - Watch.Signed = Watch.DISPTYPE.UNSIGNED; + Watch.Signed = Watch_Legacy.DISPTYPE.UNSIGNED; } else if (HexRadio.Checked) { - Watch.Signed = Watch.DISPTYPE.HEX; + Watch.Signed = Watch_Legacy.DISPTYPE.HEX; } if (Byte1Radio.Checked) { - Watch.Type = Watch.TYPE.BYTE; + Watch.Type = Watch_Legacy.TYPE.BYTE; } else if (Byte2Radio.Checked) { - Watch.Type = Watch.TYPE.WORD; + Watch.Type = Watch_Legacy.TYPE.WORD; } else if (Byte4Radio.Checked) { - Watch.Type = Watch.TYPE.DWORD; + Watch.Type = Watch_Legacy.TYPE.DWORD; } if (BigEndianRadio.Checked) @@ -153,13 +153,13 @@ namespace BizHawk.MultiClient { switch (Watch.Type) { - case Watch.TYPE.BYTE: + case Watch_Legacy.TYPE.BYTE: Byte1Radio.Checked = true; break; - case Watch.TYPE.WORD: + case Watch_Legacy.TYPE.WORD: Byte2Radio.Checked = true; break; - case Watch.TYPE.DWORD: + case Watch_Legacy.TYPE.DWORD: Byte4Radio.Checked = true; break; default: @@ -223,13 +223,13 @@ namespace BizHawk.MultiClient { switch (Watch.Signed) { - case Watch.DISPTYPE.SIGNED: + case Watch_Legacy.DISPTYPE.SIGNED: SignedRadio.Checked = true; break; - case Watch.DISPTYPE.UNSIGNED: + case Watch_Legacy.DISPTYPE.UNSIGNED: UnsignedRadio.Checked = true; break; - case Watch.DISPTYPE.HEX: + case Watch_Legacy.DISPTYPE.HEX: HexRadio.Checked = true; break; } diff --git a/BizHawk.MultiClient/tools/RamWatchNewWatch.resx b/BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.resx similarity index 100% rename from BizHawk.MultiClient/tools/RamWatchNewWatch.resx rename to BizHawk.MultiClient/tools/Watch/RamWatchNewWatch.resx diff --git a/BizHawk.MultiClient/tools/Watch.cs b/BizHawk.MultiClient/tools/Watch/Watch.cs similarity index 50% rename from BizHawk.MultiClient/tools/Watch.cs rename to BizHawk.MultiClient/tools/Watch/Watch.cs index b6c1e7c146..430814eb43 100644 --- a/BizHawk.MultiClient/tools/Watch.cs +++ b/BizHawk.MultiClient/tools/Watch/Watch.cs @@ -9,894 +9,7 @@ using System.Windows.Forms; namespace BizHawk.MultiClient { - #region Legacy watch object - /// - /// An object that represent a ram address and related properties - /// - public class Watch - { - public enum TYPE { BYTE, WORD, DWORD, SEPARATOR }; - public enum DISPTYPE { SIGNED, UNSIGNED, HEX }; - public enum PREVDEF { LASTSEARCH, ORIGINAL, LASTFRAME, LASTCHANGE }; - - #region Constructors - - public Watch() - { - Address = 0; - Value = 0; - Type = TYPE.BYTE; - Signed = DISPTYPE.UNSIGNED; - BigEndian = true; - Notes = ""; - Changecount = 0; - Prev = 0; - Original = 0; - LastChange = 0; - LastSearch = 0; - Deleted = false; - Domain = Global.Emulator.MainMemory; - } - - public Watch(Watch w) - { - Address = w.Address; - Value = w.Value; - Type = w.Type; - Signed = w.Signed; - BigEndian = w.BigEndian; - Notes = w.Notes; - Changecount = w.Changecount; - Prev = w.Prev; - Original = w.Original; - LastChange = w.LastChange; - LastSearch = w.LastSearch; - Domain = w.Domain; - Deleted = w.Deleted; - } - - public Watch(MemoryDomain _domain, int _address, int _value, TYPE _type, DISPTYPE _disptype, bool _bigendian, string _notes) - { - Domain = _domain; - Address = _address; - Value = _value; - Type = _type; - Signed = _disptype; - BigEndian = _bigendian; - Notes = _notes; - Changecount = 0; - Prev = _value; - Original = _value; - LastChange = _value; - LastSearch = _value; - } - - #endregion - - #region Publics - - public MemoryDomain Domain; - public int Address; - public int Value; - public int Prev; - public int Original; - public int LastChange; - public int LastSearch; - public TYPE Type; - public DISPTYPE Signed; - public bool BigEndian; - public string Notes; - public int Changecount; - public bool Deleted; - - #endregion - - #region Properties - - public int DiffPrev - { - get { return Value - Prev; } - } - - public int DiffOriginal - { - get { return Value - Original; } - } - - public int DiffLastChange - { - get { return Value - LastChange; } - } - - public int DiffLastSearch - { - get { return Value - LastSearch; } - } - - public string ValueString - { - get { return ValToString(Value); } - } - - public string PrevString - { - get { return ValToString(Prev); } - } - - public string OriginalString - { - get { return ValToString(Original); } - } - - public string LastChangeString - { - get { return ValToString(LastChange); } - } - - public string LastSearchString - { - get { return ValToString(LastSearch); } - } - - public string DiffOriginalString - { - get { return DiffToString(Original); } - } - - public string DiffLastSearchString - { - get { return DiffToString(LastSearch); } - } - - public uint UnsignedValue - { - get { return UnsignedVal(Value); } - } - - public int SignedValue - { - get { return SignedVal(Value); } - } - - public char TypeChar - { - get - { - switch (Type) - { - case TYPE.BYTE: - return 'b'; - case TYPE.WORD: - return 'w'; - case TYPE.DWORD: - return 'd'; - case TYPE.SEPARATOR: - return 'S'; - default: - return 'b'; //Just in case - } - } - } - - public char SignedChar - { - get - { - switch (Signed) - { - case DISPTYPE.SIGNED: - return 's'; - case DISPTYPE.UNSIGNED: - return 'u'; - case DISPTYPE.HEX: - return 'h'; - default: - return 's'; //Just in case - } - } - } - - public string DiffPrevString - { - get { return DiffToString(DiffPrev); } - } - - public string DiffLastChangeString - { - get { return DiffToString(DiffLastChange); } - } - - #endregion - - #region Public Methods - - public bool SetTypeByChar(char c) //b = byte, w = word, d = dword - { - switch (c) - { - case 'b': - Type = TYPE.BYTE; - return true; - case 'w': - Type = TYPE.WORD; - return true; - case 'd': - Type = TYPE.DWORD; - return true; - case 'S': - Type = TYPE.SEPARATOR; - return true; - default: - return false; - } - } - - public bool SetSignedByChar(char c) //s = signed, u = unsigned, h = hex - { - switch (c) - { - case 's': - Signed = DISPTYPE.SIGNED; - return true; - case 'u': - Signed = DISPTYPE.UNSIGNED; - return true; - case 'h': - Signed = DISPTYPE.HEX; - return true; - default: - return false; - } - } - - public void PeekAddress() - { - if (Type == TYPE.SEPARATOR) - { - return; - } - - Prev = Value; - - switch (Type) - { - case TYPE.BYTE: - Value = Domain.PeekByte(Address); - break; - case TYPE.WORD: - if (BigEndian) - { - Value = 0; - Value |= Domain.PeekByte(Address) << 8; - Value |= Domain.PeekByte(Address + 1); - } - else - { - Value = 0; - Value |= Domain.PeekByte(Address); - Value |= Domain.PeekByte(Address + 1) << 8; - } - break; - case TYPE.DWORD: - if (BigEndian) - { - Value = 0; - Value |= Domain.PeekByte(Address) << 24; - Value |= Domain.PeekByte(Address + 1) << 16; - Value |= Domain.PeekByte(Address + 2) << 8; - Value |= Domain.PeekByte(Address + 3) << 0; - } - else - { - Value = 0; - Value |= Domain.PeekByte(Address) << 0; - Value |= Domain.PeekByte(Address + 1) << 8; - Value |= Domain.PeekByte(Address + 2) << 16; - Value |= Domain.PeekByte(Address + 3) << 24; - } - break; - } - - if (Value != Prev) - { - LastChange = Prev; - Changecount++; - } - } - - public void PokeAddress() - { - if (Type == TYPE.SEPARATOR) - return; - - switch (Type) - { - case TYPE.BYTE: - PokeByte(); - break; - case TYPE.WORD: - PokeWord(); - break; - case TYPE.DWORD: - PokeDWord(); - break; - } - } - - public uint UnsignedVal(int val) - { - switch (Type) - { - case TYPE.BYTE: - return (byte)val; - case TYPE.WORD: - return (ushort)val; - } - return (uint)val; - } - - public int SignedVal(int val) - { - switch (Type) - { - case TYPE.BYTE: - return (sbyte)val; - case TYPE.WORD: - return (short)val; - } - return val; - } - - public override string ToString() - { - if (Type == TYPE.SEPARATOR) - { - return "----"; - } - - StringBuilder str = new StringBuilder(Notes); - str.Append(": "); - str.Append(ValToString(Value)); - return str.ToString(); - } - - public void TrySetValue(string value) - { - switch (Signed) - { - case DISPTYPE.SIGNED: - try - { - Value = int.Parse(value); - } - catch { } - break; - case DISPTYPE.UNSIGNED: - try - { - Value = (int)uint.Parse(value); - } - catch { } - break; - case DISPTYPE.HEX: - try - { - Value = int.Parse(value, NumberStyles.HexNumber); - } - catch { } - break; - } - } - - #endregion - - #region Helpers - - private string ValToString(int val) - { - if (Type == TYPE.SEPARATOR) - { - return ""; - } - else - { - switch (Signed) - { - default: - case DISPTYPE.UNSIGNED: - return UnsignedVal(val).ToString(); - case DISPTYPE.SIGNED: - return SignedVal(val).ToString(); - case DISPTYPE.HEX: - switch (Type) - { - default: - case TYPE.BYTE: - return String.Format("{0:X2}", val); - case TYPE.WORD: - return String.Format("{0:X4}", val); - case TYPE.DWORD: - return String.Format("{0:X8}", val); - } - } - } - } - - - - private string DiffToString(int diff) - { - string converted = diff.ToString(); - if (diff >= 0) - converted = "+" + converted; - return converted; - } - - private void PokeByte() - { - Domain.PokeByte(Address, (byte)Value); - } - - private void PokeWord() - { - if (BigEndian) - { - Domain.PokeByte(Address + 0, (byte)(Value >> 8)); - Domain.PokeByte(Address + 1, (byte)(Value)); - } - else - { - Domain.PokeByte(Address + 0, (byte)(Value)); - Domain.PokeByte(Address + 1, (byte)(Value >> 8)); - } - } - - private void PokeDWord() - { - if (BigEndian) - { - Domain.PokeByte(Address + 0, (byte)(Value >> 24)); - Domain.PokeByte(Address + 1, (byte)(Value >> 16)); - Domain.PokeByte(Address + 2, (byte)(Value >> 8)); - Domain.PokeByte(Address + 3, (byte)(Value)); - } - else - { - Domain.PokeByte(Address + 0, (byte)(Value)); - Domain.PokeByte(Address + 1, (byte)(Value >> 8)); - Domain.PokeByte(Address + 2, (byte)(Value >> 16)); - Domain.PokeByte(Address + 3, (byte)(Value >> 24)); - } - } - - #endregion - - #region Compare Methods - - private int ComparePrevious(Watch Other, PREVDEF previous) - { - switch (previous) - { - case PREVDEF.LASTSEARCH: - return CompareLastSearch(Other); - case PREVDEF.ORIGINAL: - return CompareOriginal(Other); - default: - case PREVDEF.LASTFRAME: - return ComparePrev(Other); - case PREVDEF.LASTCHANGE: - return CompareLastChange(Other); - } - } - - private int CompareDiff(Watch Other, PREVDEF previous) - { - switch (previous) - { - case PREVDEF.LASTSEARCH: - return CompareDiffLastSearch(Other); - case PREVDEF.ORIGINAL: - return CompareDiffOriginal(Other); - default: - case PREVDEF.LASTFRAME: - return CompareDiffPrev(Other); - case PREVDEF.LASTCHANGE: - return CompareDiffLastChange(Other); - } - } - - private int CompareAddress(Watch Other) - { - if (Address < Other.Address) - return -1; - else if (Address > Other.Address) - return 1; - else - return 0; - } - - private int CompareValue(Watch Other) - { - if (Signed == DISPTYPE.SIGNED) - { - if (SignedVal(Value) < SignedVal(Other.Value)) - return -1; - else if (SignedVal(Value) > SignedVal(Other.Value)) - return 1; - else - return 0; - } - if (UnsignedVal(Value) < UnsignedVal(Other.Value)) - return -1; - else if (UnsignedVal(Value) > UnsignedVal(Other.Value)) - return 1; - else - return 0; - } - - private int ComparePrev(Watch Other) - { - if (Signed == DISPTYPE.SIGNED) - { - if (SignedVal(Prev) < SignedVal(Other.Prev)) - return -1; - else if (SignedVal(Prev) > SignedVal(Other.Prev)) - return 1; - else - return 0; - } - if (UnsignedVal(Prev) < UnsignedVal(Other.Prev)) - return -1; - else if (UnsignedVal(Prev) > UnsignedVal(Other.Prev)) - return 1; - else - return 0; - } - - private int CompareOriginal(Watch Other) - { - if (Signed == DISPTYPE.SIGNED) - { - if (SignedVal(Original) < SignedVal(Other.Original)) - return -1; - else if (SignedVal(Original) > SignedVal(Other.Original)) - return 1; - else - return 0; - } - if (UnsignedVal(Original) < UnsignedVal(Other.Original)) - return -1; - else if (UnsignedVal(Original) > UnsignedVal(Other.Original)) - return 1; - else - return 0; - } - - private int CompareLastChange(Watch Other) - { - if (Signed == DISPTYPE.SIGNED) - { - if (SignedVal(LastChange) < SignedVal(Other.LastChange)) - return -1; - else if (SignedVal(LastChange) > SignedVal(Other.LastChange)) - return 1; - else - return 0; - } - if (UnsignedVal(LastChange) < UnsignedVal(Other.LastChange)) - return -1; - else if (UnsignedVal(LastChange) > UnsignedVal(Other.LastChange)) - return 1; - else - return 0; - } - - private int CompareLastSearch(Watch Other) - { - if (Signed == DISPTYPE.SIGNED) - { - if (SignedVal(LastSearch) < SignedVal(Other.LastSearch)) - return -1; - else if (SignedVal(LastSearch) > SignedVal(Other.LastSearch)) - return 1; - else - return 0; - } - if (UnsignedVal(LastSearch) < UnsignedVal(Other.LastSearch)) - return -1; - else if (UnsignedVal(LastSearch) > UnsignedVal(Other.LastSearch)) - return 1; - else - return 0; - } - - private int CompareDiffPrev(Watch Other) - { - if (DiffPrev < Other.DiffPrev) - return -1; - else if (DiffPrev > Other.DiffPrev) - return 1; - else - return 0; - } - - private int CompareDiffOriginal(Watch Other) - { - if (DiffOriginal < Other.DiffOriginal) - return -1; - else if (DiffOriginal > Other.DiffOriginal) - return 1; - else - return 0; - } - - private int CompareDiffLastChange(Watch Other) - { - if (DiffLastChange < Other.DiffLastChange) - return -1; - else if (DiffLastChange > Other.DiffLastChange) - return 1; - else - return 0; - } - - private int CompareDiffLastSearch(Watch Other) - { - if (DiffLastSearch < Other.DiffLastSearch) - return -1; - else if (DiffLastSearch > Other.DiffLastSearch) - return 1; - else - return 0; - } - - private int CompareChanges(Watch Other) - { - if (Changecount < Other.Changecount) - return -1; - else if (Changecount > Other.Changecount) - return 1; - else - return 0; - } - - private int CompareNotes(Watch Other) - { - if (Notes == null & Other.Notes == null) - return 0; - else if (Notes == null) - return -1; - else if (Other.Notes == null) - return 1; - else - return Notes.CompareTo(Other.Notes); - } - - private int CompareDomain(Watch Other) - { - if (Domain == null & Other.Domain == null) - { - return 0; - } - else if (Domain == null) - { - return -1; - } - else if (Other.Domain == null) - { - return 1; - } - else - { - return Domain.Name.CompareTo(Other.Domain.Name); - } - } - - public int CompareTo(Watch Other, string parameter, PREVDEF previous) - { - int compare = 0; - if (parameter == "Address") - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareDomain(Other); - if (compare == 0) - { - compare = CompareDiff(Other, previous); - if (compare == 0) - { - compare = CompareNotes(Other); - } - } - } - } - } - } - } - - else if (parameter == "Value") - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareDiff(Other, previous); - if (compare == 0) - { - compare = CompareDomain(Other); - if (compare == 0) - { - compare = CompareNotes(Other); - } - } - } - } - } - } - } - - else if (parameter == "Changes") - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareDiff(Other, previous); - if (compare == 0) - compare = CompareNotes(Other); - } - } - } - } - } - - else if (parameter == "Prev") - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = CompareDiff(Other, previous); - if (compare == 0) - { - compare = CompareDomain(Other); - if (compare == 0) - { - compare = CompareNotes(Other); - } - } - } - } - } - } - } - - else if (parameter == "Diff") - { - compare = CompareDiff(Other, previous); - if (compare == 0) - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareDomain(Other); - if (compare == 0) - { - compare = CompareNotes(Other); - } - } - } - } - } - } - } - - else if (parameter == "Domain") - { - compare = CompareDomain(Other); - if (compare == 0) - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareNotes(Other); - } - } - } - } - } - } - - else if (parameter == "Notes") - { - compare = CompareNotes(Other); - if (compare == 0) - { - compare = CompareAddress(Other); - if (compare == 0) - { - compare = CompareValue(Other); - if (compare == 0) - { - compare = CompareChanges(Other); - if (compare == 0) - { - compare = ComparePrevious(Other, previous); - if (compare == 0) - { - compare = CompareDiff(Other, previous); - if (compare == 0) - { - compare = CompareDomain(Other); - } - } - } - } - } - } - } - - return compare; - } - - #endregion - } - - #endregion - - public abstract class WatchBase + 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 }; @@ -1070,7 +183,7 @@ namespace BizHawk.MultiClient } } - public static WatchBase GenerateWatch(MemoryDomain domain, int address, WatchSize size, bool details) + public static Watch GenerateWatch(MemoryDomain domain, int address, WatchSize size, bool details) { switch (size) { @@ -1086,7 +199,6 @@ namespace BizHawk.MultiClient { return new ByteWatch(domain, address); } - break; case WatchSize.Word: if (details) { @@ -1123,7 +235,7 @@ namespace BizHawk.MultiClient void Update(); } - public class SeparatorWatch : WatchBase + public class SeparatorWatch : Watch { public SeparatorWatch() { } @@ -1185,7 +297,7 @@ namespace BizHawk.MultiClient } } - public class ByteWatch : WatchBase + public class ByteWatch : Watch { public ByteWatch(MemoryDomain domain, int address) { @@ -1292,7 +404,7 @@ namespace BizHawk.MultiClient } } - public class WordWatch : WatchBase + public class WordWatch : Watch { public WordWatch(MemoryDomain domain, int address) { @@ -1391,7 +503,7 @@ namespace BizHawk.MultiClient } } - public class DWordWatch : WatchBase + public class DWordWatch : Watch { public DWordWatch(MemoryDomain domain, int address) { @@ -1498,12 +610,12 @@ namespace BizHawk.MultiClient public enum WatchPrevDef { LastSearch, Original, LastFrame, LastChange }; - private List _watchList = new List(); + private List _watchList = new List(); private MemoryDomain _domain = null; public WatchList() { } - public IEnumerator GetEnumerator() + public IEnumerator GetEnumerator() { return _watchList.GetEnumerator(); } @@ -1518,7 +630,7 @@ namespace BizHawk.MultiClient get { return _watchList.Count; } } - public WatchBase this[int index] + public Watch this[int index] { get { @@ -1575,19 +687,19 @@ namespace BizHawk.MultiClient } } - public void Add(WatchBase watch) + public void Add(Watch watch) { _watchList.Add(watch); Changes = true; } - public void Remove(WatchBase watch) + public void Remove(Watch watch) { _watchList.Remove(watch); Changes = true; } - public void Insert(int index, WatchBase watch) + public void Insert(int index, Watch watch) { _watchList.Insert(index, watch); } @@ -1660,7 +772,7 @@ namespace BizHawk.MultiClient .Append("Domain ").AppendLine(_domain.Name) .Append("SystemID ").AppendLine(Global.Emulator.SystemId); - foreach (WatchBase w in _watchList) + foreach (Watch w in _watchList) { sb .Append(String.Format(AddressFormatStr, w.Address)).Append('\t') @@ -1757,8 +869,8 @@ namespace BizHawk.MultiClient //Temporary, rename if kept int addr = 0; - WatchBase.WatchSize size = WatchBase.WatchSize.Separator; - WatchBase.DisplayType type = WatchBase.DisplayType.Unsigned; + Watch.WatchSize size = Watch.WatchSize.Separator; + Watch.DisplayType type = Watch.DisplayType.Unsigned; bool bigEndian = false; MemoryDomain memDomain = Global.Emulator.MainMemory; string notes; @@ -1775,12 +887,12 @@ namespace BizHawk.MultiClient startIndex = line.IndexOf('\t') + 1; line = line.Substring(startIndex, line.Length - startIndex); //Type - size = WatchBase.SizeFromChar(line[0]); + size = Watch.SizeFromChar(line[0]); startIndex = line.IndexOf('\t') + 1; line = line.Substring(startIndex, line.Length - startIndex); //Signed - type = WatchBase.DisplayTypeFromChar(line[0]); + type = Watch.DisplayTypeFromChar(line[0]); startIndex = line.IndexOf('\t') + 1; line = line.Substring(startIndex, line.Length - startIndex); //Endian @@ -1812,7 +924,7 @@ namespace BizHawk.MultiClient startIndex = line.IndexOf('\t') + 1; notes = line.Substring(startIndex, line.Length - startIndex); //User notes - WatchBase w = WatchBase.GenerateWatch(memDomain, addr, size, details); + Watch w = Watch.GenerateWatch(memDomain, addr, size, details); w.BigEndian = bigEndian; w.Type = type; if (w is iWatchEntryDetails) diff --git a/BizHawk.MultiClient/tools/WatchCommon.cs b/BizHawk.MultiClient/tools/Watch/WatchCommon.cs similarity index 93% rename from BizHawk.MultiClient/tools/WatchCommon.cs rename to BizHawk.MultiClient/tools/Watch/WatchCommon.cs index 9760a90901..adb678fecf 100644 --- a/BizHawk.MultiClient/tools/WatchCommon.cs +++ b/BizHawk.MultiClient/tools/Watch/WatchCommon.cs @@ -27,7 +27,7 @@ namespace BizHawk.MultiClient return file; } - public static bool SaveWchFile(string path, string domain_name, List watchList) + public static bool SaveWchFile(string path, string domain_name, List watchList) { using (StreamWriter sw = new StreamWriter(path)) { @@ -39,7 +39,7 @@ namespace BizHawk.MultiClient str.Append(Global.Emulator.SystemId); str.Append('\n'); - foreach (Watch t in watchList) + foreach (Watch_Legacy t in watchList) { str.Append(string.Format("{0:X4}", t.Address)); str.Append('\t'); @@ -67,7 +67,7 @@ namespace BizHawk.MultiClient return true; } - public static bool LoadWatchFile(string path, bool append, List watchList, out string domain) + public static bool LoadWatchFile(string path, bool append, List watchList, out string domain) { domain = ""; var file = new FileInfo(path); @@ -125,7 +125,7 @@ namespace BizHawk.MultiClient { continue; //If not 4, something is wrong with this line, ignore it } - Watch w = new Watch(); + Watch_Legacy w = new Watch_Legacy(); string temp = s.Substring(0, s.IndexOf('\t')); try diff --git a/BizHawk.MultiClient/tools/Watch/WatchEditor.Designer.cs b/BizHawk.MultiClient/tools/Watch/WatchEditor.Designer.cs new file mode 100644 index 0000000000..427b302496 --- /dev/null +++ b/BizHawk.MultiClient/tools/Watch/WatchEditor.Designer.cs @@ -0,0 +1,311 @@ +namespace BizHawk.MultiClient +{ + partial class WatchEditor + { + /// + /// 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() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.AddressBox = new BizHawk.HexTextBox(); + this.NotesBox = new System.Windows.Forms.TextBox(); + this.DataTypeGroupBox = new System.Windows.Forms.GroupBox(); + this.HexRadio = new System.Windows.Forms.RadioButton(); + this.UnsignedRadio = new System.Windows.Forms.RadioButton(); + this.SignedRadio = new System.Windows.Forms.RadioButton(); + this.DataSizeBox = new System.Windows.Forms.GroupBox(); + this.Byte4Radio = new System.Windows.Forms.RadioButton(); + this.Byte2Radio = new System.Windows.Forms.RadioButton(); + this.Byte1Radio = new System.Windows.Forms.RadioButton(); + this.EndianBox = new System.Windows.Forms.GroupBox(); + this.LittleEndianRadio = new System.Windows.Forms.RadioButton(); + this.BigEndianRadio = new System.Windows.Forms.RadioButton(); + this.OK = new System.Windows.Forms.Button(); + this.Cancel = new System.Windows.Forms.Button(); + this.label6 = new System.Windows.Forms.Label(); + this.DomainComboBox = new System.Windows.Forms.ComboBox(); + this.DataTypeGroupBox.SuspendLayout(); + this.DataSizeBox.SuspendLayout(); + this.EndianBox.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(62, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Address: 0x"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 35); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(38, 13); + this.label2.TabIndex = 1; + this.label2.Text = "Notes:"; + // + // AddressBox + // + this.AddressBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.AddressBox.Location = new System.Drawing.Point(69, 6); + this.AddressBox.MaxLength = 8; + this.AddressBox.Name = "AddressBox"; + this.AddressBox.Size = new System.Drawing.Size(100, 20); + this.AddressBox.TabIndex = 2; + this.AddressBox.Text = "00000000"; + this.AddressBox.Leave += new System.EventHandler(this.AddressBox_Leave); + // + // NotesBox + // + this.NotesBox.Location = new System.Drawing.Point(69, 32); + this.NotesBox.MaxLength = 256; + this.NotesBox.Name = "NotesBox"; + this.NotesBox.Size = new System.Drawing.Size(100, 20); + this.NotesBox.TabIndex = 3; + // + // DataTypeGroupBox + // + this.DataTypeGroupBox.Controls.Add(this.HexRadio); + this.DataTypeGroupBox.Controls.Add(this.UnsignedRadio); + this.DataTypeGroupBox.Controls.Add(this.SignedRadio); + this.DataTypeGroupBox.Location = new System.Drawing.Point(12, 67); + this.DataTypeGroupBox.Name = "DataTypeGroupBox"; + this.DataTypeGroupBox.Size = new System.Drawing.Size(95, 79); + this.DataTypeGroupBox.TabIndex = 4; + this.DataTypeGroupBox.TabStop = false; + this.DataTypeGroupBox.Text = "Data Type"; + // + // HexRadio + // + this.HexRadio.AutoSize = true; + this.HexRadio.Location = new System.Drawing.Point(4, 51); + this.HexRadio.Name = "HexRadio"; + this.HexRadio.Size = new System.Drawing.Size(86, 17); + this.HexRadio.TabIndex = 2; + this.HexRadio.Text = "Hexadecimal"; + this.HexRadio.UseVisualStyleBackColor = true; + // + // UnsignedRadio + // + this.UnsignedRadio.AutoSize = true; + this.UnsignedRadio.Checked = true; + this.UnsignedRadio.Location = new System.Drawing.Point(4, 34); + this.UnsignedRadio.Name = "UnsignedRadio"; + this.UnsignedRadio.Size = new System.Drawing.Size(70, 17); + this.UnsignedRadio.TabIndex = 1; + this.UnsignedRadio.TabStop = true; + this.UnsignedRadio.Text = "Unsigned"; + this.UnsignedRadio.UseVisualStyleBackColor = true; + // + // SignedRadio + // + this.SignedRadio.AutoSize = true; + this.SignedRadio.Location = new System.Drawing.Point(4, 17); + this.SignedRadio.Name = "SignedRadio"; + this.SignedRadio.Size = new System.Drawing.Size(58, 17); + this.SignedRadio.TabIndex = 0; + this.SignedRadio.Text = "Signed"; + this.SignedRadio.UseVisualStyleBackColor = true; + // + // DataSizeBox + // + this.DataSizeBox.Controls.Add(this.Byte4Radio); + this.DataSizeBox.Controls.Add(this.Byte2Radio); + this.DataSizeBox.Controls.Add(this.Byte1Radio); + this.DataSizeBox.Location = new System.Drawing.Point(115, 67); + this.DataSizeBox.Name = "DataSizeBox"; + this.DataSizeBox.Size = new System.Drawing.Size(83, 79); + this.DataSizeBox.TabIndex = 5; + this.DataSizeBox.TabStop = false; + this.DataSizeBox.Text = "Data Size:"; + // + // Byte4Radio + // + this.Byte4Radio.AutoSize = true; + this.Byte4Radio.Location = new System.Drawing.Point(5, 51); + this.Byte4Radio.Name = "Byte4Radio"; + this.Byte4Radio.Size = new System.Drawing.Size(60, 17); + this.Byte4Radio.TabIndex = 2; + this.Byte4Radio.Text = "4 Bytes"; + this.Byte4Radio.UseVisualStyleBackColor = true; + // + // Byte2Radio + // + this.Byte2Radio.AutoSize = true; + this.Byte2Radio.Location = new System.Drawing.Point(5, 34); + this.Byte2Radio.Name = "Byte2Radio"; + this.Byte2Radio.Size = new System.Drawing.Size(60, 17); + this.Byte2Radio.TabIndex = 1; + this.Byte2Radio.Text = "2 Bytes"; + this.Byte2Radio.UseVisualStyleBackColor = true; + // + // Byte1Radio + // + this.Byte1Radio.AutoSize = true; + this.Byte1Radio.Checked = true; + this.Byte1Radio.Location = new System.Drawing.Point(5, 17); + this.Byte1Radio.Name = "Byte1Radio"; + this.Byte1Radio.Size = new System.Drawing.Size(55, 17); + this.Byte1Radio.TabIndex = 0; + this.Byte1Radio.TabStop = true; + this.Byte1Radio.Text = "1 Byte"; + this.Byte1Radio.UseVisualStyleBackColor = true; + // + // EndianBox + // + this.EndianBox.Controls.Add(this.LittleEndianRadio); + this.EndianBox.Controls.Add(this.BigEndianRadio); + this.EndianBox.Location = new System.Drawing.Point(12, 152); + this.EndianBox.Name = "EndianBox"; + this.EndianBox.Size = new System.Drawing.Size(117, 55); + this.EndianBox.TabIndex = 6; + this.EndianBox.TabStop = false; + this.EndianBox.Text = "Endian"; + // + // LittleEndianRadio + // + this.LittleEndianRadio.AutoSize = true; + this.LittleEndianRadio.Location = new System.Drawing.Point(4, 35); + this.LittleEndianRadio.Name = "LittleEndianRadio"; + this.LittleEndianRadio.Size = new System.Drawing.Size(83, 17); + this.LittleEndianRadio.TabIndex = 1; + this.LittleEndianRadio.Text = "Little Endian"; + this.LittleEndianRadio.UseVisualStyleBackColor = true; + // + // BigEndianRadio + // + this.BigEndianRadio.AutoSize = true; + this.BigEndianRadio.Checked = true; + this.BigEndianRadio.Location = new System.Drawing.Point(4, 18); + this.BigEndianRadio.Name = "BigEndianRadio"; + this.BigEndianRadio.Size = new System.Drawing.Size(76, 17); + this.BigEndianRadio.TabIndex = 0; + this.BigEndianRadio.TabStop = true; + this.BigEndianRadio.Text = "Big Endian"; + this.BigEndianRadio.UseVisualStyleBackColor = true; + // + // OK + // + this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.OK.Location = new System.Drawing.Point(12, 260); + this.OK.Name = "OK"; + this.OK.Size = new System.Drawing.Size(75, 23); + this.OK.TabIndex = 7; + this.OK.Text = "Ok"; + this.OK.UseVisualStyleBackColor = true; + this.OK.Click += new System.EventHandler(this.OK_Click); + // + // Cancel + // + this.Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.Cancel.Location = new System.Drawing.Point(123, 260); + this.Cancel.Name = "Cancel"; + this.Cancel.Size = new System.Drawing.Size(75, 23); + this.Cancel.TabIndex = 8; + this.Cancel.Text = "Cancel"; + this.Cancel.UseVisualStyleBackColor = true; + this.Cancel.Click += new System.EventHandler(this.Cancel_Click); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(11, 214); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(83, 13); + this.label6.TabIndex = 15; + this.label6.Text = "Memory Domain"; + // + // DomainComboBox + // + this.DomainComboBox.FormattingEnabled = true; + this.DomainComboBox.Location = new System.Drawing.Point(12, 230); + this.DomainComboBox.Name = "DomainComboBox"; + this.DomainComboBox.Size = new System.Drawing.Size(141, 21); + this.DomainComboBox.TabIndex = 14; + this.DomainComboBox.SelectedIndexChanged += new System.EventHandler(this.DomainComboBox_SelectedIndexChanged); + // + // WatchEditor + // + this.AcceptButton = this.OK; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.Cancel; + this.ClientSize = new System.Drawing.Size(213, 296); + this.Controls.Add(this.label6); + this.Controls.Add(this.DomainComboBox); + this.Controls.Add(this.Cancel); + this.Controls.Add(this.OK); + this.Controls.Add(this.EndianBox); + this.Controls.Add(this.DataSizeBox); + this.Controls.Add(this.DataTypeGroupBox); + this.Controls.Add(this.NotesBox); + this.Controls.Add(this.AddressBox); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "WatchEditor"; + this.Text = "New Watch"; + this.Load += new System.EventHandler(this.RamWatchNewWatch_Load); + this.DataTypeGroupBox.ResumeLayout(false); + this.DataTypeGroupBox.PerformLayout(); + this.DataSizeBox.ResumeLayout(false); + this.DataSizeBox.PerformLayout(); + this.EndianBox.ResumeLayout(false); + this.EndianBox.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private HexTextBox AddressBox; + private System.Windows.Forms.TextBox NotesBox; + private System.Windows.Forms.GroupBox DataTypeGroupBox; + private System.Windows.Forms.RadioButton SignedRadio; + private System.Windows.Forms.RadioButton UnsignedRadio; + private System.Windows.Forms.RadioButton HexRadio; + private System.Windows.Forms.GroupBox DataSizeBox; + private System.Windows.Forms.RadioButton Byte1Radio; + private System.Windows.Forms.RadioButton Byte2Radio; + private System.Windows.Forms.RadioButton Byte4Radio; + private System.Windows.Forms.GroupBox EndianBox; + private System.Windows.Forms.RadioButton BigEndianRadio; + private System.Windows.Forms.RadioButton LittleEndianRadio; + private System.Windows.Forms.Button OK; + private System.Windows.Forms.Button Cancel; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox DomainComboBox; + } +} \ No newline at end of file diff --git a/BizHawk.MultiClient/tools/Watch/WatchEditor.cs b/BizHawk.MultiClient/tools/Watch/WatchEditor.cs new file mode 100644 index 0000000000..daa7e84a7f --- /dev/null +++ b/BizHawk.MultiClient/tools/Watch/WatchEditor.cs @@ -0,0 +1,248 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using System.Globalization; + +namespace BizHawk.MultiClient +{ + public partial class WatchEditor : Form + { + public Watch_Legacy Watch = new Watch_Legacy(); + public bool SelectionWasMade = false; + public Point location = new Point(); + + private bool DoNotResetAddress; + + public WatchEditor() + { + InitializeComponent(); + } + + public void SetWatch(Watch_Legacy watch, string message = "New Watch") + { + DoNotResetAddress = true; //Hack for the drop down event changing when initializing the drop down + Watch = new Watch_Legacy(watch); + Text = message; + + NotesBox.Text = watch.Notes; + setTypeRadio(); + setSignedRadio(); + setEndianBox(); + setDomainSelection(); + setAddressBox(); + } + + #region Events + + private void RamWatchNewWatch_Load(object sender, EventArgs e) + { + if (location.X > 0 && location.Y > 0) + { + Location = location; + } + + populateMemoryDomainComboBox(); + DoNotResetAddress = false; + } + + private void Cancel_Click(object sender, EventArgs e) + { + SelectionWasMade = false; + Close(); + } + + private void OK_Click(object sender, EventArgs e) + { + //Put user settings in the watch file + SelectionWasMade = true; + if (InputValidate.IsValidHexNumber(AddressBox.Text)) + { + Watch.Address = int.Parse(AddressBox.Text, NumberStyles.HexNumber); + } + else + { + MessageBox.Show("Not a valid address (enter a valid Hex number)", "Invalid Address", MessageBoxButtons.OK, MessageBoxIcon.Error); + AddressBox.Focus(); + AddressBox.SelectAll(); + + return; + } + + if (SignedRadio.Checked) + { + Watch.Signed = Watch_Legacy.DISPTYPE.SIGNED; + } + else if (UnsignedRadio.Checked) + { + Watch.Signed = Watch_Legacy.DISPTYPE.UNSIGNED; + } + else if (HexRadio.Checked) + { + Watch.Signed = Watch_Legacy.DISPTYPE.HEX; + } + + if (Byte1Radio.Checked) + { + Watch.Type = Watch_Legacy.TYPE.BYTE; + } + else if (Byte2Radio.Checked) + { + Watch.Type = Watch_Legacy.TYPE.WORD; + } + else if (Byte4Radio.Checked) + { + Watch.Type = Watch_Legacy.TYPE.DWORD; + } + + if (BigEndianRadio.Checked) + { + Watch.BigEndian = true; + } + else if (LittleEndianRadio.Checked) + { + Watch.BigEndian = false; + } + + Watch.Domain = Global.Emulator.MemoryDomains[DomainComboBox.SelectedIndex]; + Watch.Notes = NotesBox.Text; + + Close(); + } + + private void AddressBox_Leave(object sender, EventArgs e) + { + AddressBox.Text = AddressBox.Text.Replace(" ", ""); + if (!InputValidate.IsValidHexNumber(AddressBox.Text)) + { + AddressBox.Focus(); + AddressBox.SelectAll(); + ToolTip t = new ToolTip(); + t.Show("Must be a valid hexadecimal vaue", AddressBox, 5000); + } + else + { + try + { + Watch.Address = int.Parse(AddressBox.Text, NumberStyles.HexNumber); + AddressBox.Text = String.Format("{0:X" + getNumDigits(Watch.Domain.Size - 1) + "}", Watch.Address); + } + catch + { + //Do nothing + } + } + } + + private void DomainComboBox_SelectedIndexChanged(object sender, EventArgs e) + { + if (!DoNotResetAddress) + { + Watch.Domain = Global.Emulator.MemoryDomains[DomainComboBox.SelectedIndex]; + Watch.Address = 0; + Watch.Value = 0; + setAddressBox(); + AddressBox.MaxLength = getNumDigits(Watch.Domain.Size); + } + } + + #endregion + + #region Helpers + + private void setTypeRadio() + { + switch (Watch.Type) + { + case Watch_Legacy.TYPE.BYTE: + Byte1Radio.Checked = true; + break; + case Watch_Legacy.TYPE.WORD: + Byte2Radio.Checked = true; + break; + case Watch_Legacy.TYPE.DWORD: + Byte4Radio.Checked = true; + break; + default: + break; + } + } + + private void setEndianBox() + { + if (Watch.BigEndian == true) + { + BigEndianRadio.Checked = true; + } + else + { + LittleEndianRadio.Checked = true; + } + } + + private void setDomainSelection() + { + //Counts should always be the same, but just in case, let's check + int max; + if (Global.Emulator.MemoryDomains.Count < DomainComboBox.Items.Count) + { + max = Global.Emulator.MemoryDomains.Count; + } + else + { + max = DomainComboBox.Items.Count; + } + + for (int i = 0; i < max; i++) + { + if (Watch.Domain.ToString() == DomainComboBox.Items[i].ToString()) + { + DomainComboBox.SelectedIndex = i; + } + } + } + + private void populateMemoryDomainComboBox() + { + DomainComboBox.Items.Clear(); + if (Global.Emulator.MemoryDomains.Count > 0) + { + foreach (MemoryDomain t in Global.Emulator.MemoryDomains) + { + DomainComboBox.Items.Add(t.ToString()); + } + } + setDomainSelection(); + } + + private void setAddressBox() + { + AddressBox.Text = String.Format("{0:X" + getNumDigits(Watch.Domain.Size - 1) + "}", Watch.Address); + } + + private void setSignedRadio() + { + switch (Watch.Signed) + { + case Watch_Legacy.DISPTYPE.SIGNED: + SignedRadio.Checked = true; + break; + case Watch_Legacy.DISPTYPE.UNSIGNED: + UnsignedRadio.Checked = true; + break; + case Watch_Legacy.DISPTYPE.HEX: + HexRadio.Checked = true; + break; + } + } + + private int getNumDigits(Int32 i) + { + if (i < 0x10000) return 4; + if (i < 0x1000000) return 6; + if (i < 0x10000000) return 7; + else return 8; + } + + #endregion + } +} diff --git a/BizHawk.MultiClient/tools/Watch/WatchEditor.resx b/BizHawk.MultiClient/tools/Watch/WatchEditor.resx new file mode 100644 index 0000000000..29dcb1b3a3 --- /dev/null +++ b/BizHawk.MultiClient/tools/Watch/WatchEditor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/BizHawk.MultiClient/tools/Watch/WatchLegacy.cs b/BizHawk.MultiClient/tools/Watch/WatchLegacy.cs new file mode 100644 index 0000000000..f2ca5c9a77 --- /dev/null +++ b/BizHawk.MultiClient/tools/Watch/WatchLegacy.cs @@ -0,0 +1,895 @@ +using System; +using System.Text; +using System.Globalization; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.IO; +using System.Windows.Forms; + +namespace BizHawk.MultiClient +{ + /// + /// An object that represent a ram address and related properties + /// + public class Watch_Legacy + { + public enum TYPE { BYTE, WORD, DWORD, SEPARATOR }; + public enum DISPTYPE { SIGNED, UNSIGNED, HEX }; + public enum PREVDEF { LASTSEARCH, ORIGINAL, LASTFRAME, LASTCHANGE }; + + #region Constructors + + public Watch_Legacy() + { + Address = 0; + Value = 0; + Type = TYPE.BYTE; + Signed = DISPTYPE.UNSIGNED; + BigEndian = true; + Notes = ""; + Changecount = 0; + Prev = 0; + Original = 0; + LastChange = 0; + LastSearch = 0; + Deleted = false; + Domain = Global.Emulator.MainMemory; + } + + public Watch_Legacy(Watch_Legacy w) + { + Address = w.Address; + Value = w.Value; + Type = w.Type; + Signed = w.Signed; + BigEndian = w.BigEndian; + Notes = w.Notes; + Changecount = w.Changecount; + Prev = w.Prev; + Original = w.Original; + LastChange = w.LastChange; + LastSearch = w.LastSearch; + Domain = w.Domain; + Deleted = w.Deleted; + } + + public Watch_Legacy(MemoryDomain _domain, int _address, int _value, TYPE _type, DISPTYPE _disptype, bool _bigendian, string _notes) + { + Domain = _domain; + Address = _address; + Value = _value; + Type = _type; + Signed = _disptype; + BigEndian = _bigendian; + Notes = _notes; + Changecount = 0; + Prev = _value; + Original = _value; + LastChange = _value; + LastSearch = _value; + } + + #endregion + + #region Publics + + public MemoryDomain Domain; + public int Address; + public int Value; + public int Prev; + public int Original; + public int LastChange; + public int LastSearch; + public TYPE Type; + public DISPTYPE Signed; + public bool BigEndian; + public string Notes; + public int Changecount; + public bool Deleted; + + #endregion + + #region Properties + + public int DiffPrev + { + get { return Value - Prev; } + } + + public int DiffOriginal + { + get { return Value - Original; } + } + + public int DiffLastChange + { + get { return Value - LastChange; } + } + + public int DiffLastSearch + { + get { return Value - LastSearch; } + } + + public string ValueString + { + get { return ValToString(Value); } + } + + public string PrevString + { + get { return ValToString(Prev); } + } + + public string OriginalString + { + get { return ValToString(Original); } + } + + public string LastChangeString + { + get { return ValToString(LastChange); } + } + + public string LastSearchString + { + get { return ValToString(LastSearch); } + } + + public string DiffOriginalString + { + get { return DiffToString(Original); } + } + + public string DiffLastSearchString + { + get { return DiffToString(LastSearch); } + } + + public uint UnsignedValue + { + get { return UnsignedVal(Value); } + } + + public int SignedValue + { + get { return SignedVal(Value); } + } + + public char TypeChar + { + get + { + switch (Type) + { + case TYPE.BYTE: + return 'b'; + case TYPE.WORD: + return 'w'; + case TYPE.DWORD: + return 'd'; + case TYPE.SEPARATOR: + return 'S'; + default: + return 'b'; //Just in case + } + } + } + + public char SignedChar + { + get + { + switch (Signed) + { + case DISPTYPE.SIGNED: + return 's'; + case DISPTYPE.UNSIGNED: + return 'u'; + case DISPTYPE.HEX: + return 'h'; + default: + return 's'; //Just in case + } + } + } + + public string DiffPrevString + { + get { return DiffToString(DiffPrev); } + } + + public string DiffLastChangeString + { + get { return DiffToString(DiffLastChange); } + } + + #endregion + + #region Public Methods + + public bool SetTypeByChar(char c) //b = byte, w = word, d = dword + { + switch (c) + { + case 'b': + Type = TYPE.BYTE; + return true; + case 'w': + Type = TYPE.WORD; + return true; + case 'd': + Type = TYPE.DWORD; + return true; + case 'S': + Type = TYPE.SEPARATOR; + return true; + default: + return false; + } + } + + public bool SetSignedByChar(char c) //s = signed, u = unsigned, h = hex + { + switch (c) + { + case 's': + Signed = DISPTYPE.SIGNED; + return true; + case 'u': + Signed = DISPTYPE.UNSIGNED; + return true; + case 'h': + Signed = DISPTYPE.HEX; + return true; + default: + return false; + } + } + + public void PeekAddress() + { + if (Type == TYPE.SEPARATOR) + { + return; + } + + Prev = Value; + + switch (Type) + { + case TYPE.BYTE: + Value = Domain.PeekByte(Address); + break; + case TYPE.WORD: + if (BigEndian) + { + Value = 0; + Value |= Domain.PeekByte(Address) << 8; + Value |= Domain.PeekByte(Address + 1); + } + else + { + Value = 0; + Value |= Domain.PeekByte(Address); + Value |= Domain.PeekByte(Address + 1) << 8; + } + break; + case TYPE.DWORD: + if (BigEndian) + { + Value = 0; + Value |= Domain.PeekByte(Address) << 24; + Value |= Domain.PeekByte(Address + 1) << 16; + Value |= Domain.PeekByte(Address + 2) << 8; + Value |= Domain.PeekByte(Address + 3) << 0; + } + else + { + Value = 0; + Value |= Domain.PeekByte(Address) << 0; + Value |= Domain.PeekByte(Address + 1) << 8; + Value |= Domain.PeekByte(Address + 2) << 16; + Value |= Domain.PeekByte(Address + 3) << 24; + } + break; + } + + if (Value != Prev) + { + LastChange = Prev; + Changecount++; + } + } + + public void PokeAddress() + { + if (Type == TYPE.SEPARATOR) + return; + + switch (Type) + { + case TYPE.BYTE: + PokeByte(); + break; + case TYPE.WORD: + PokeWord(); + break; + case TYPE.DWORD: + PokeDWord(); + break; + } + } + + public uint UnsignedVal(int val) + { + switch (Type) + { + case TYPE.BYTE: + return (byte)val; + case TYPE.WORD: + return (ushort)val; + } + return (uint)val; + } + + public int SignedVal(int val) + { + switch (Type) + { + case TYPE.BYTE: + return (sbyte)val; + case TYPE.WORD: + return (short)val; + } + return val; + } + + public override string ToString() + { + if (Type == TYPE.SEPARATOR) + { + return "----"; + } + + StringBuilder str = new StringBuilder(Notes); + str.Append(": "); + str.Append(ValToString(Value)); + return str.ToString(); + } + + public void TrySetValue(string value) + { + switch (Signed) + { + case DISPTYPE.SIGNED: + try + { + Value = int.Parse(value); + } + catch { } + break; + case DISPTYPE.UNSIGNED: + try + { + Value = (int)uint.Parse(value); + } + catch { } + break; + case DISPTYPE.HEX: + try + { + Value = int.Parse(value, NumberStyles.HexNumber); + } + catch { } + break; + } + } + + #endregion + + #region Helpers + + private string ValToString(int val) + { + if (Type == TYPE.SEPARATOR) + { + return ""; + } + else + { + switch (Signed) + { + default: + case DISPTYPE.UNSIGNED: + return UnsignedVal(val).ToString(); + case DISPTYPE.SIGNED: + return SignedVal(val).ToString(); + case DISPTYPE.HEX: + switch (Type) + { + default: + case TYPE.BYTE: + return String.Format("{0:X2}", val); + case TYPE.WORD: + return String.Format("{0:X4}", val); + case TYPE.DWORD: + return String.Format("{0:X8}", val); + } + } + } + } + + + + private string DiffToString(int diff) + { + string converted = diff.ToString(); + if (diff >= 0) + converted = "+" + converted; + return converted; + } + + private void PokeByte() + { + Domain.PokeByte(Address, (byte)Value); + } + + private void PokeWord() + { + if (BigEndian) + { + Domain.PokeByte(Address + 0, (byte)(Value >> 8)); + Domain.PokeByte(Address + 1, (byte)(Value)); + } + else + { + Domain.PokeByte(Address + 0, (byte)(Value)); + Domain.PokeByte(Address + 1, (byte)(Value >> 8)); + } + } + + private void PokeDWord() + { + if (BigEndian) + { + Domain.PokeByte(Address + 0, (byte)(Value >> 24)); + Domain.PokeByte(Address + 1, (byte)(Value >> 16)); + Domain.PokeByte(Address + 2, (byte)(Value >> 8)); + Domain.PokeByte(Address + 3, (byte)(Value)); + } + else + { + Domain.PokeByte(Address + 0, (byte)(Value)); + Domain.PokeByte(Address + 1, (byte)(Value >> 8)); + Domain.PokeByte(Address + 2, (byte)(Value >> 16)); + Domain.PokeByte(Address + 3, (byte)(Value >> 24)); + } + } + + #endregion + + #region Compare Methods + + private int ComparePrevious(Watch_Legacy Other, PREVDEF previous) + { + switch (previous) + { + case PREVDEF.LASTSEARCH: + return CompareLastSearch(Other); + case PREVDEF.ORIGINAL: + return CompareOriginal(Other); + default: + case PREVDEF.LASTFRAME: + return ComparePrev(Other); + case PREVDEF.LASTCHANGE: + return CompareLastChange(Other); + } + } + + private int CompareDiff(Watch_Legacy Other, PREVDEF previous) + { + switch (previous) + { + case PREVDEF.LASTSEARCH: + return CompareDiffLastSearch(Other); + case PREVDEF.ORIGINAL: + return CompareDiffOriginal(Other); + default: + case PREVDEF.LASTFRAME: + return CompareDiffPrev(Other); + case PREVDEF.LASTCHANGE: + return CompareDiffLastChange(Other); + } + } + + private int CompareAddress(Watch_Legacy Other) + { + if (Address < Other.Address) + return -1; + else if (Address > Other.Address) + return 1; + else + return 0; + } + + private int CompareValue(Watch_Legacy Other) + { + if (Signed == DISPTYPE.SIGNED) + { + if (SignedVal(Value) < SignedVal(Other.Value)) + return -1; + else if (SignedVal(Value) > SignedVal(Other.Value)) + return 1; + else + return 0; + } + if (UnsignedVal(Value) < UnsignedVal(Other.Value)) + return -1; + else if (UnsignedVal(Value) > UnsignedVal(Other.Value)) + return 1; + else + return 0; + } + + private int ComparePrev(Watch_Legacy Other) + { + if (Signed == DISPTYPE.SIGNED) + { + if (SignedVal(Prev) < SignedVal(Other.Prev)) + return -1; + else if (SignedVal(Prev) > SignedVal(Other.Prev)) + return 1; + else + return 0; + } + if (UnsignedVal(Prev) < UnsignedVal(Other.Prev)) + return -1; + else if (UnsignedVal(Prev) > UnsignedVal(Other.Prev)) + return 1; + else + return 0; + } + + private int CompareOriginal(Watch_Legacy Other) + { + if (Signed == DISPTYPE.SIGNED) + { + if (SignedVal(Original) < SignedVal(Other.Original)) + return -1; + else if (SignedVal(Original) > SignedVal(Other.Original)) + return 1; + else + return 0; + } + if (UnsignedVal(Original) < UnsignedVal(Other.Original)) + return -1; + else if (UnsignedVal(Original) > UnsignedVal(Other.Original)) + return 1; + else + return 0; + } + + private int CompareLastChange(Watch_Legacy Other) + { + if (Signed == DISPTYPE.SIGNED) + { + if (SignedVal(LastChange) < SignedVal(Other.LastChange)) + return -1; + else if (SignedVal(LastChange) > SignedVal(Other.LastChange)) + return 1; + else + return 0; + } + if (UnsignedVal(LastChange) < UnsignedVal(Other.LastChange)) + return -1; + else if (UnsignedVal(LastChange) > UnsignedVal(Other.LastChange)) + return 1; + else + return 0; + } + + private int CompareLastSearch(Watch_Legacy Other) + { + if (Signed == DISPTYPE.SIGNED) + { + if (SignedVal(LastSearch) < SignedVal(Other.LastSearch)) + return -1; + else if (SignedVal(LastSearch) > SignedVal(Other.LastSearch)) + return 1; + else + return 0; + } + if (UnsignedVal(LastSearch) < UnsignedVal(Other.LastSearch)) + return -1; + else if (UnsignedVal(LastSearch) > UnsignedVal(Other.LastSearch)) + return 1; + else + return 0; + } + + private int CompareDiffPrev(Watch_Legacy Other) + { + if (DiffPrev < Other.DiffPrev) + return -1; + else if (DiffPrev > Other.DiffPrev) + return 1; + else + return 0; + } + + private int CompareDiffOriginal(Watch_Legacy Other) + { + if (DiffOriginal < Other.DiffOriginal) + return -1; + else if (DiffOriginal > Other.DiffOriginal) + return 1; + else + return 0; + } + + private int CompareDiffLastChange(Watch_Legacy Other) + { + if (DiffLastChange < Other.DiffLastChange) + return -1; + else if (DiffLastChange > Other.DiffLastChange) + return 1; + else + return 0; + } + + private int CompareDiffLastSearch(Watch_Legacy Other) + { + if (DiffLastSearch < Other.DiffLastSearch) + return -1; + else if (DiffLastSearch > Other.DiffLastSearch) + return 1; + else + return 0; + } + + private int CompareChanges(Watch_Legacy Other) + { + if (Changecount < Other.Changecount) + return -1; + else if (Changecount > Other.Changecount) + return 1; + else + return 0; + } + + private int CompareNotes(Watch_Legacy Other) + { + if (Notes == null & Other.Notes == null) + return 0; + else if (Notes == null) + return -1; + else if (Other.Notes == null) + return 1; + else + return Notes.CompareTo(Other.Notes); + } + + private int CompareDomain(Watch_Legacy Other) + { + if (Domain == null & Other.Domain == null) + { + return 0; + } + else if (Domain == null) + { + return -1; + } + else if (Other.Domain == null) + { + return 1; + } + else + { + return Domain.Name.CompareTo(Other.Domain.Name); + } + } + + public int CompareTo(Watch_Legacy Other, string parameter, PREVDEF previous) + { + int compare = 0; + if (parameter == "Address") + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareDomain(Other); + if (compare == 0) + { + compare = CompareDiff(Other, previous); + if (compare == 0) + { + compare = CompareNotes(Other); + } + } + } + } + } + } + } + + else if (parameter == "Value") + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareDiff(Other, previous); + if (compare == 0) + { + compare = CompareDomain(Other); + if (compare == 0) + { + compare = CompareNotes(Other); + } + } + } + } + } + } + } + + else if (parameter == "Changes") + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareDiff(Other, previous); + if (compare == 0) + compare = CompareNotes(Other); + } + } + } + } + } + + else if (parameter == "Prev") + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = CompareDiff(Other, previous); + if (compare == 0) + { + compare = CompareDomain(Other); + if (compare == 0) + { + compare = CompareNotes(Other); + } + } + } + } + } + } + } + + else if (parameter == "Diff") + { + compare = CompareDiff(Other, previous); + if (compare == 0) + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareDomain(Other); + if (compare == 0) + { + compare = CompareNotes(Other); + } + } + } + } + } + } + } + + else if (parameter == "Domain") + { + compare = CompareDomain(Other); + if (compare == 0) + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareNotes(Other); + } + } + } + } + } + } + + else if (parameter == "Notes") + { + compare = CompareNotes(Other); + if (compare == 0) + { + compare = CompareAddress(Other); + if (compare == 0) + { + compare = CompareValue(Other); + if (compare == 0) + { + compare = CompareChanges(Other); + if (compare == 0) + { + compare = ComparePrevious(Other, previous); + if (compare == 0) + { + compare = CompareDiff(Other, previous); + if (compare == 0) + { + compare = CompareDomain(Other); + } + } + } + } + } + } + } + + return compare; + } + + #endregion + } +}