From 72fb3061a3b8b3129fde6f42a692faac08bea9f9 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Fri, 16 Aug 2024 23:14:39 +1000 Subject: [PATCH] Change ToRawInt to ToRawUInt --- .../tools/RamSearchEngine/IMiniWatch.cs | 16 +++--- .../tools/RamSearchEngine/RamSearchEngine.cs | 33 ++++++------ .../CustomControls/HexTextBox.cs | 24 ++++----- src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs | 2 +- .../tools/Cheats/CheatEdit.cs | 12 ++--- .../tools/Debugger/AddBreakpointDialog.cs | 4 +- .../tools/Debugger/GenericDebugger.cs | 4 +- .../tools/TAStudio/FramesPrompt.cs | 2 +- .../tools/Watch/RamSearch.cs | 28 +++++----- .../tools/Watch/WatchEditor.cs | 2 +- .../tools/Watch/WatchValueBox.cs | 52 +++++++++---------- 11 files changed, 89 insertions(+), 90 deletions(-) diff --git a/src/BizHawk.Client.Common/tools/RamSearchEngine/IMiniWatch.cs b/src/BizHawk.Client.Common/tools/RamSearchEngine/IMiniWatch.cs index 33a37a2c93..05162aa157 100644 --- a/src/BizHawk.Client.Common/tools/RamSearchEngine/IMiniWatch.cs +++ b/src/BizHawk.Client.Common/tools/RamSearchEngine/IMiniWatch.cs @@ -8,8 +8,8 @@ namespace BizHawk.Client.Common.RamSearchEngine internal interface IMiniWatch { long Address { get; } - long Previous { get; } // do not store sign extended variables in here. - long Current { get; } + uint Previous { get; } + uint Current { get; } int ChangeCount { get; } void ClearChangeCount(); void SetPreviousToCurrent(); @@ -35,8 +35,8 @@ namespace BizHawk.Client.Common.RamSearchEngine _previous = _current; } - public long Previous => _previous; - public long Current => _current; + public uint Previous => _previous; + public uint Current => _current; public int ChangeCount { get; private set; } @@ -87,8 +87,8 @@ namespace BizHawk.Client.Common.RamSearchEngine _previous = _current; } - public long Previous => _previous; - public long Current => _current; + public uint Previous => _previous; + public uint Current => _current; public int ChangeCount { get; private set; } @@ -139,8 +139,8 @@ namespace BizHawk.Client.Common.RamSearchEngine _previous = _current; } - public long Previous => _previous; - public long Current => _current; + public uint Previous => _previous; + public uint Current => _current; public int ChangeCount { get; private set; } diff --git a/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs b/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs index c527e210c6..a4c3f3bf7d 100644 --- a/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs +++ b/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs @@ -7,7 +7,6 @@ using BizHawk.Common.CollectionExtensions; using BizHawk.Common.NumberExtensions; using BizHawk.Emulation.Common; -// ReSharper disable PossibleInvalidCastExceptionInForeachLoop namespace BizHawk.Client.Common.RamSearchEngine { public class RamSearchEngine @@ -38,7 +37,7 @@ namespace BizHawk.Client.Common.RamSearchEngine }; } - public RamSearchEngine(SearchEngineSettings settings, IMemoryDomains memoryDomains, Compare compareTo, long? compareValue, int? differentBy) + public RamSearchEngine(SearchEngineSettings settings, IMemoryDomains memoryDomains, Compare compareTo, uint? compareValue, uint? differentBy) : this(settings, memoryDomains) { _compareTo = compareTo; @@ -156,7 +155,7 @@ namespace BizHawk.Client.Common.RamSearchEngine } } - public long? CompareValue { get; set; } + public uint? CompareValue { get; set; } public ComparisonOperator Operator { get; set; } @@ -164,7 +163,7 @@ namespace BizHawk.Client.Common.RamSearchEngine /// zero 07-sep-2014 - this isn't ideal. but don't bother changing it (to a long, for instance) until it can support floats. maybe store it as a double here.
/// it already supported floats by way of reinterpret-cast, it just wasn't implemented correctly on this side --yoshi /// - public int? DifferentBy { get; set; } + public uint? DifferentBy { get; set; } public void Update(bool updatePrevious) { @@ -318,7 +317,7 @@ namespace BizHawk.Client.Common.RamSearchEngine case ComparisonOperator.LessThanEqual: return watchList.Where(w => SignExtendAsNeeded(w.Current) <= SignExtendAsNeeded(w.Previous)); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); return watchList.Where(w => differentBy == Math.Abs(SignExtendAsNeeded(w.Current) - SignExtendAsNeeded(w.Previous))); } @@ -349,7 +348,7 @@ namespace BizHawk.Client.Common.RamSearchEngine return val < prev || val.HawkFloatEquality(prev); }); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); var differentByF = ReinterpretAsF32(differentBy); return watchList.Where(w => Math.Abs(ReinterpretAsF32(w.Current) - ReinterpretAsF32(w.Previous)) .HawkFloatEquality(differentByF)); @@ -358,7 +357,7 @@ namespace BizHawk.Client.Common.RamSearchEngine private IEnumerable CompareSpecificValue(IEnumerable watchList) { - if (CompareValue is not long compareValue) throw new InvalidOperationException(); + if (CompareValue is not uint compareValue) throw new InvalidOperationException(); if (_settings.Type is not WatchDisplayType.Float) { switch (Operator) @@ -377,7 +376,7 @@ namespace BizHawk.Client.Common.RamSearchEngine case ComparisonOperator.LessThanEqual: return watchList.Where(w => SignExtendAsNeeded(w.Current) <= SignExtendAsNeeded(compareValue)); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); return watchList.Where(w => differentBy == Math.Abs(SignExtendAsNeeded(w.Current) - SignExtendAsNeeded(compareValue))); } @@ -407,7 +406,7 @@ namespace BizHawk.Client.Common.RamSearchEngine return val < compareValueF || val.HawkFloatEquality(compareValueF); }); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); var differentByF = ReinterpretAsF32(differentBy); return watchList.Where(w => Math.Abs(ReinterpretAsF32(w.Current) - compareValueF) .HawkFloatEquality(differentByF)); @@ -416,7 +415,7 @@ namespace BizHawk.Client.Common.RamSearchEngine private IEnumerable CompareSpecificAddress(IEnumerable watchList) { - if (CompareValue is not long compareValue) throw new InvalidOperationException(); + if (CompareValue is not uint compareValue) throw new InvalidOperationException(); switch (Operator) { default: @@ -433,14 +432,14 @@ namespace BizHawk.Client.Common.RamSearchEngine case ComparisonOperator.LessThanEqual: return watchList.Where(w => w.Address <= compareValue); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); return watchList.Where(w => Math.Abs(w.Address - compareValue) == differentBy); } } private IEnumerable CompareChanges(IEnumerable watchList) { - if (CompareValue is not long compareValue) throw new InvalidOperationException(); + if (CompareValue is not uint compareValue) throw new InvalidOperationException(); switch (Operator) { default: @@ -457,14 +456,14 @@ namespace BizHawk.Client.Common.RamSearchEngine case ComparisonOperator.LessThanEqual: return watchList.Where(w => w.ChangeCount <= compareValue); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); return watchList.Where(w => Math.Abs(w.ChangeCount - compareValue) == differentBy); } } private IEnumerable CompareDifference(IEnumerable watchList) { - if (CompareValue is not long compareValue) throw new InvalidCastException(); //TODO typo for IOE? + if (CompareValue is not uint compareValue) throw new InvalidCastException(); //TODO typo for IOE? if (_settings.Type is not WatchDisplayType.Float) { switch (Operator) @@ -483,9 +482,9 @@ namespace BizHawk.Client.Common.RamSearchEngine case ComparisonOperator.LessThanEqual: return watchList.Where(w => SignExtendAsNeeded(w.Current) - SignExtendAsNeeded(w.Previous) <= compareValue); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); return watchList.Where(w => - differentBy == Math.Abs(SignExtendAsNeeded(w.Current) - SignExtendAsNeeded(w.Previous) - compareValue)); + differentBy == Math.Abs(Math.Abs(SignExtendAsNeeded(w.Current) - SignExtendAsNeeded(w.Previous)) - compareValue)); } } var compareValueF = ReinterpretAsF32(compareValue); @@ -513,7 +512,7 @@ namespace BizHawk.Client.Common.RamSearchEngine return diff < compareValueF || diff.HawkFloatEquality(compareValueF); }); case ComparisonOperator.DifferentBy: - if (DifferentBy is not int differentBy) throw new InvalidOperationException(); + if (DifferentBy is not uint differentBy) throw new InvalidOperationException(); var differentByF = ReinterpretAsF32(differentBy); return watchList.Where(w => Math.Abs(ReinterpretAsF32(w.Current) - ReinterpretAsF32(w.Previous) - compareValueF) .HawkFloatEquality(differentByF)); diff --git a/src/BizHawk.Client.EmuHawk/CustomControls/HexTextBox.cs b/src/BizHawk.Client.EmuHawk/CustomControls/HexTextBox.cs index bd3a40636b..4573ddd482 100644 --- a/src/BizHawk.Client.EmuHawk/CustomControls/HexTextBox.cs +++ b/src/BizHawk.Client.EmuHawk/CustomControls/HexTextBox.cs @@ -10,8 +10,8 @@ namespace BizHawk.Client.EmuHawk public interface INumberBox { bool Nullable { get; } - int? ToRawInt(); - void SetFromRawInt(int? rawInt); + uint? ToRawUInt(); + void SetFromRawUInt(uint? rawUInt); } public class HexTextBox : ClipboardEventTextBox, INumberBox @@ -85,7 +85,7 @@ namespace BizHawk.Client.EmuHawk { if (Text.IsHex() && !string.IsNullOrEmpty(_addressFormatStr)) { - var val = (uint)ToRawInt(); + var val = ToRawUInt(); if (val == GetMax()) { @@ -103,7 +103,7 @@ namespace BizHawk.Client.EmuHawk { if (Text.IsHex() && !string.IsNullOrEmpty(_addressFormatStr)) { - var val = (uint)ToRawInt(); + var val = ToRawUInt(); if (val == 0) { val = (uint)GetMax(); // int to long todo @@ -146,7 +146,7 @@ namespace BizHawk.Client.EmuHawk base.OnPaste(e); } - public int? ToRawInt() + public uint? ToRawUInt() { if (string.IsNullOrWhiteSpace(Text)) { @@ -158,10 +158,10 @@ namespace BizHawk.Client.EmuHawk return 0; } - return int.Parse(Text, NumberStyles.HexNumber); + return uint.Parse(Text, NumberStyles.HexNumber); } - public void SetFromRawInt(int? val) + public void SetFromRawUInt(uint? val) { Text = val.HasValue ? string.Format(_addressFormatStr, val) : ""; } @@ -230,7 +230,7 @@ namespace BizHawk.Client.EmuHawk { if (Text.IsHex()) { - var val = (uint)ToRawInt(); + var val = ToRawUInt().Value; if (val == uint.MaxValue) { val = 0; @@ -247,7 +247,7 @@ namespace BizHawk.Client.EmuHawk { if (Text.IsHex()) { - var val = (uint)ToRawInt(); + var val = ToRawUInt().Value; if (val == 0) { @@ -279,7 +279,7 @@ namespace BizHawk.Client.EmuHawk base.OnTextChanged(e); } - public int? ToRawInt() + public uint? ToRawUInt() { if (string.IsNullOrWhiteSpace(Text) || !Text.IsHex()) { @@ -291,10 +291,10 @@ namespace BizHawk.Client.EmuHawk return 0; } - return (int)uint.Parse(Text); + return uint.Parse(Text); } - public void SetFromRawInt(int? val) + public void SetFromRawUInt(uint? val) { Text = val?.ToString() ?? ""; } diff --git a/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs b/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs index d3e8603cce..7a01d3aca3 100644 --- a/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs +++ b/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs @@ -593,7 +593,7 @@ namespace BizHawk.Client.EmuHawk if (StopOnFrameCheckbox.Checked) { if (LastFrameCheckbox.Checked) _mainForm.PauseOnFrame = _movieSession.Movie.InputLogLength; - else if (StopOnFrameTextBox.ToRawInt() is int i) _mainForm.PauseOnFrame = i; + else if (StopOnFrameTextBox.ToRawUInt() is uint i) _mainForm.PauseOnFrame = (int)i; } Close(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Cheats/CheatEdit.cs b/src/BizHawk.Client.EmuHawk/tools/Cheats/CheatEdit.cs index 7b8ec3bdeb..040e2a10a1 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Cheats/CheatEdit.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Cheats/CheatEdit.cs @@ -93,7 +93,7 @@ namespace BizHawk.Client.EmuHawk CheckFormState(); if (!_cheat.Compare.HasValue) { - CompareBox.Text = ""; // Necessary hack until WatchValueBox.ToRawInt() becomes nullable + CompareBox.Text = ""; // Necessary hack until WatchValueBox.ToRawUInt() becomes nullable } _loading = false; @@ -132,7 +132,7 @@ namespace BizHawk.Client.EmuHawk SetTypeSelected(WatchDisplayType.Hex); CheckFormState(); - CompareBox.Text = ""; // TODO: A needed hack until WatchValueBox.ToRawInt() becomes nullable + CompareBox.Text = ""; // TODO: A needed hack until WatchValueBox.ToRawUInt() becomes nullable _loading = false; } @@ -310,7 +310,7 @@ namespace BizHawk.Client.EmuHawk public Cheat GetCheat() { var domain = MemoryDomains[DomainDropDown.SelectedItem.ToString()]!; - var address = AddressBox.ToRawInt().Value; + var address = AddressBox.ToRawUInt().Value; if (address < domain.Size) { var watch = Watch.GenerateWatch( @@ -333,11 +333,11 @@ namespace BizHawk.Client.EmuHawk _ => Cheat.CompareType.None }; - var compare = CompareBox.ToRawInt(); + var compare = CompareBox.ToRawUInt(); return new Cheat( watch, - value: ValueBox.ToRawInt().Value, - compare: compare, + value: (int)ValueBox.ToRawUInt().Value, + compare: (int?)compare, enabled: true, comparisonType); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Debugger/AddBreakpointDialog.cs b/src/BizHawk.Client.EmuHawk/tools/Debugger/AddBreakpointDialog.cs index 38eda9d704..08930db061 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Debugger/AddBreakpointDialog.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Debugger/AddBreakpointDialog.cs @@ -100,13 +100,13 @@ namespace BizHawk.Client.EmuHawk public uint Address { - get => (uint)AddressBox.ToRawInt().Value & AddressMask; + get => AddressBox.ToRawUInt().Value & AddressMask; set => AddressBox.SetFromLong(value & AddressMask); } public uint AddressMask { - get => (uint)AddressMaskBox.ToRawInt().Value; + get => AddressMaskBox.ToRawUInt().Value; set => AddressMaskBox.SetFromLong(value); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs b/src/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs index a668b5480a..9a991d001d 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Debugger/GenericDebugger.cs @@ -118,7 +118,7 @@ namespace BizHawk.Client.EmuHawk var pc = PCRegister; SeekToBox.Nullable = false; SeekToBox.SetHexProperties((long)Math.Pow(2, pc.BitSize)); - SeekToBox.SetFromRawInt(0); + SeekToBox.SetFromRawUInt(0); } else { @@ -263,7 +263,7 @@ namespace BizHawk.Client.EmuHawk private void SeekToBtn_Click(object sender, EventArgs e) { CancelSeekBtn.Enabled = true; - var pcVal = (uint)(SeekToBox.ToRawInt() ?? 0); + var pcVal = SeekToBox.ToRawUInt() ?? 0; var pcBitSize = PCRegister.BitSize; BreakPointControl1.RemoveCurrentSeek(); diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/FramesPrompt.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/FramesPrompt.cs index 32449a7d09..be350c264f 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/FramesPrompt.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/FramesPrompt.cs @@ -17,7 +17,7 @@ namespace BizHawk.Client.EmuHawk this.label1.Text = bodyMessage; } - public int Frames => NumFramesBox.ToRawInt() ?? 0; + public int Frames => (int)(NumFramesBox.ToRawUInt() ?? 0); private void FramesPrompt_Load(object sender, EventArgs e) { diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs index bd7edbd18d..f6166455af 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs @@ -421,7 +421,7 @@ namespace BizHawk.Client.EmuHawk WatchListView.AnyRowsSelected && _searches.Domain.Writable; } - private long? CompareToValue + private uint? CompareToValue { get { @@ -432,29 +432,29 @@ namespace BizHawk.Client.EmuHawk if (SpecificValueRadio.Checked) { - return (long)SpecificValueBox.ToRawInt() & 0x00000000FFFFFFFF; + return SpecificValueBox.ToRawUInt(); } if (SpecificAddressRadio.Checked) { - return SpecificAddressBox.ToRawInt(); + return SpecificAddressBox.ToRawUInt(); } if (NumberOfChangesRadio.Checked) { - return NumberOfChangesBox.ToRawInt(); + return NumberOfChangesBox.ToRawUInt(); } if (DifferenceRadio.Checked) { - return DifferenceBox.ToRawInt(); + return DifferenceBox.ToRawUInt(); } return null; } } - private int? DifferentByValue => DifferentByRadio.Checked ? DifferentByBox.ToRawInt() : null; + private uint? DifferentByValue => DifferentByRadio.Checked ? DifferentByBox.ToRawUInt() : null; private ComparisonOperator Operator { @@ -737,7 +737,7 @@ namespace BizHawk.Client.EmuHawk WatchListView.Refresh(); } - private void SetCompareValue(int? value) + private void SetCompareValue(uint? value) { _searches.CompareValue = value; WatchListView.Refresh(); @@ -1441,7 +1441,7 @@ namespace BizHawk.Client.EmuHawk SpecificAddressBox.ResetText(); } - _searches.CompareValue = SpecificValueBox.ToRawInt(); + _searches.CompareValue = SpecificValueBox.ToRawUInt(); if (Focused) { @@ -1463,7 +1463,7 @@ namespace BizHawk.Client.EmuHawk SpecificAddressBox.ResetText(); } - _searches.CompareValue = SpecificAddressBox.ToRawInt(); + _searches.CompareValue = SpecificAddressBox.ToRawUInt(); if (Focused) { @@ -1485,7 +1485,7 @@ namespace BizHawk.Client.EmuHawk NumberOfChangesBox.ResetText(); } - _searches.CompareValue = NumberOfChangesBox.ToRawInt(); + _searches.CompareValue = NumberOfChangesBox.ToRawUInt(); if (Focused) { @@ -1507,7 +1507,7 @@ namespace BizHawk.Client.EmuHawk DifferenceBox.ResetText(); } - _searches.CompareValue = DifferenceBox.ToRawInt(); + _searches.CompareValue = DifferenceBox.ToRawUInt(); if (Focused) { @@ -1519,7 +1519,7 @@ namespace BizHawk.Client.EmuHawk private void CompareToValue_TextChanged(object sender, EventArgs e) { - SetCompareValue(((INumberBox)sender).ToRawInt()); + SetCompareValue(((INumberBox)sender).ToRawUInt()); } private void EqualToRadio_Click(object sender, EventArgs e) @@ -1567,7 +1567,7 @@ namespace BizHawk.Client.EmuHawk DifferentByBox.ResetText(); } - _searches.DifferentBy = DifferenceBox.ToRawInt(); + _searches.DifferentBy = DifferenceBox.ToRawUInt(); if (Focused) { @@ -1579,7 +1579,7 @@ namespace BizHawk.Client.EmuHawk private void DifferentByBox_TextChanged(object sender, EventArgs e) { - _searches.DifferentBy = !string.IsNullOrWhiteSpace(DifferentByBox.Text) ? DifferentByBox.ToRawInt() : null; + _searches.DifferentBy = !string.IsNullOrWhiteSpace(DifferentByBox.Text) ? DifferentByBox.ToRawUInt() : null; WatchListView.Refresh(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs index e0dd13a435..92550e0807 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs @@ -275,7 +275,7 @@ namespace BizHawk.Client.EmuHawk Watches[i] = Watch.GenerateWatch( Watches[i].Domain, - Watches.Count == 1 ? AddressBox.ToRawInt() ?? 0 : Watches[i].Address, + Watches.Count == 1 ? AddressBox.ToRawUInt() ?? 0 : Watches[i].Address, size, _changedDisplayType ? displayType : Watches[i].Type, Watches[i].BigEndian, diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/WatchValueBox.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/WatchValueBox.cs index d543e86b83..485634daf3 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/WatchValueBox.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/WatchValueBox.cs @@ -56,10 +56,10 @@ namespace BizHawk.Client.EmuHawk get => _type; set { - var val = ToRawInt(); + var val = ToRawUInt(); _type = value; SetMaxLength(); - SetFromRawInt(val); + SetFromRawUInt(val); } } @@ -197,7 +197,7 @@ namespace BizHawk.Client.EmuHawk { default: case WatchDisplayType.Signed: - int val = ToRawInt() ?? 0; + int val = (int)(ToRawUInt() ?? 0); if (val == MaxSignedInt) { val = MinSignedInt; @@ -210,7 +210,7 @@ namespace BizHawk.Client.EmuHawk Text = val.ToString(); break; case WatchDisplayType.Unsigned: - var uval = (uint)(ToRawInt() ?? 0); + var uval = ToRawUInt() ?? 0; if (uval == MaxUnsignedInt) { uval = 0; @@ -223,7 +223,7 @@ namespace BizHawk.Client.EmuHawk Text = uval.ToString(); break; case WatchDisplayType.Binary: - var bVal = (uint)(ToRawInt() ?? 0); + var bVal = ToRawUInt() ?? 0; if (bVal == MaxUnsignedInt) { bVal = 0; @@ -237,7 +237,7 @@ namespace BizHawk.Client.EmuHawk Text = Convert.ToString(bVal, 2).PadLeft(numBits, '0'); break; case WatchDisplayType.Hex: - var hexVal = (uint)(ToRawInt() ?? 0); + var hexVal = ToRawUInt() ?? 0; if (hexVal == MaxUnsignedInt) { hexVal = 0; @@ -309,7 +309,7 @@ namespace BizHawk.Client.EmuHawk { default: case WatchDisplayType.Signed: - int val = ToRawInt() ?? 0; + int val = (int)(ToRawUInt() ?? 0); if (val == MinSignedInt) { val = MaxSignedInt; @@ -322,7 +322,7 @@ namespace BizHawk.Client.EmuHawk Text = val.ToString(); break; case WatchDisplayType.Unsigned: - var uval = (uint)(ToRawInt() ?? 0); + var uval = ToRawUInt() ?? 0; if (uval == 0) { uval = MaxUnsignedInt; @@ -335,7 +335,7 @@ namespace BizHawk.Client.EmuHawk Text = uval.ToString(); break; case WatchDisplayType.Binary: - var bVal = (uint)(ToRawInt() ?? 0); + var bVal = ToRawUInt() ?? 0; if (bVal == 0) { bVal = MaxUnsignedInt; @@ -349,7 +349,7 @@ namespace BizHawk.Client.EmuHawk Text = Convert.ToString(bVal, 2).PadLeft(numBits, '0'); break; case WatchDisplayType.Hex: - var hexVal = (uint)(ToRawInt() ?? 0); + var hexVal = ToRawUInt() ?? 0; if (hexVal == 0) { hexVal = MaxUnsignedInt; @@ -445,23 +445,23 @@ namespace BizHawk.Client.EmuHawk base.OnPaste(e); } - public int? ToRawInt() + public uint? ToRawUInt() { - static int ReinterpretAsS32(float f) - => Unsafe.As(ref f); + static uint ReinterpretAsU32(float f) + => Unsafe.As(ref f); try { return _type switch { - WatchDisplayType.Signed => int.Parse(Text), - WatchDisplayType.Unsigned => (int)uint.Parse(Text), - WatchDisplayType.Binary => Convert.ToInt32(Text, 2), - WatchDisplayType.Hex => int.Parse(Text, NumberStyles.HexNumber), - WatchDisplayType.FixedPoint_12_4 => (int)(double.Parse(Text, NumberFormatInfo.InvariantInfo) * 16.0), - WatchDisplayType.FixedPoint_20_12 => (int)(double.Parse(Text, NumberFormatInfo.InvariantInfo) * 4096.0), - WatchDisplayType.FixedPoint_16_16 => (int)(double.Parse(Text, NumberFormatInfo.InvariantInfo) * 65536.0), - WatchDisplayType.Float => ReinterpretAsS32(float.Parse(Text, NumberFormatInfo.InvariantInfo)), - _ => int.Parse(Text) + WatchDisplayType.Signed => (uint)int.Parse(Text), + WatchDisplayType.Unsigned => uint.Parse(Text), + WatchDisplayType.Binary => Convert.ToUInt32(Text, 2), + WatchDisplayType.Hex => uint.Parse(Text, NumberStyles.HexNumber), + WatchDisplayType.FixedPoint_12_4 => (uint)(double.Parse(Text, NumberFormatInfo.InvariantInfo) * 16.0), + WatchDisplayType.FixedPoint_20_12 => (uint)(double.Parse(Text, NumberFormatInfo.InvariantInfo) * 4096.0), + WatchDisplayType.FixedPoint_16_16 => (uint)(double.Parse(Text, NumberFormatInfo.InvariantInfo) * 65536.0), + WatchDisplayType.Float => ReinterpretAsU32(float.Parse(Text, NumberFormatInfo.InvariantInfo)), + _ => uint.Parse(Text) }; } catch @@ -472,9 +472,9 @@ namespace BizHawk.Client.EmuHawk return Nullable ? null : 0; } - public void SetFromRawInt(int? val) + public void SetFromRawUInt(uint? val) { - if (val is not int i) + if (val is not uint i) { Text = string.Empty; return; @@ -482,13 +482,13 @@ namespace BizHawk.Client.EmuHawk Text = _type switch { WatchDisplayType.Signed => i.ToString(), - WatchDisplayType.Unsigned => ((uint) i).ToString(), + WatchDisplayType.Unsigned => i.ToString(), WatchDisplayType.Binary => Convert.ToString(i, toBase: 2).PadLeft(8 * (int) ByteSize, '0'), WatchDisplayType.Hex => i.ToHexString(MaxLength), WatchDisplayType.FixedPoint_12_4 => (i / 16.0).ToString("F5", NumberFormatInfo.InvariantInfo), WatchDisplayType.FixedPoint_20_12 => (i / 4096.0).ToString("F5", NumberFormatInfo.InvariantInfo), WatchDisplayType.FixedPoint_16_16 => (i / 65536.0).ToString("F5", NumberFormatInfo.InvariantInfo), - WatchDisplayType.Float => Unsafe.As(ref i).ToString("F6", NumberFormatInfo.InvariantInfo), + WatchDisplayType.Float => Unsafe.As(ref i).ToString("F6", NumberFormatInfo.InvariantInfo), _ => i.ToString() }; }