diff --git a/BizHawk.MultiClient/tools/RamSearch.cs b/BizHawk.MultiClient/tools/RamSearch.cs index 670d1b4543..72cb3cfec0 100644 --- a/BizHawk.MultiClient/tools/RamSearch.cs +++ b/BizHawk.MultiClient/tools/RamSearch.cs @@ -764,10 +764,23 @@ namespace BizHawk.MultiClient private int GetSpecificValue() { if (SpecificValueBox.Text == "") return 0; - bool i = InputValidate.IsValidSignedNumber(SpecificValueBox.Text); - if (!i) return -1; - - return int.Parse(SpecificValueBox.Text); + bool i = false; + switch (GetDataType()) + { + case asigned.UNSIGNED: + i = InputValidate.IsValidUnsignedNumber(SpecificValueBox.Text); + if (!i) return -1; + return int.Parse(SpecificValueBox.Text); + case asigned.SIGNED: + i = InputValidate.IsValidSignedNumber(SpecificValueBox.Text); + if (!i) return -1; + return int.Parse(SpecificValueBox.Text); + case asigned.HEX: + i = InputValidate.IsValidHexNumber(SpecificValueBox.Text); + if (!i) return -1; + return int.Parse(SpecificValueBox.Text, NumberStyles.HexNumber); + } + return -1; } private int GetSpecificAddress() @@ -1412,8 +1425,22 @@ namespace BizHawk.MultiClient { if (e.KeyChar == '\b') return; - if (!InputValidate.IsValidUnsignedNumber(e.KeyChar)) - e.Handled = true; + switch (GetDataType()) + { + case asigned.UNSIGNED: + if (!InputValidate.IsValidUnsignedNumber(e.KeyChar)) + e.Handled = true; + break; + case asigned.SIGNED: + if (!InputValidate.IsValidSignedNumber(e.KeyChar)) + e.Handled = true; + break; + case asigned.HEX: + if (!InputValidate.IsValidHexNumber(e.KeyChar)) + e.Handled = true; + break; + } + } private void SpecificAddressBox_KeyPress(object sender, KeyPressEventArgs e) diff --git a/BizHawk.Util/InputValidate.cs b/BizHawk.Util/InputValidate.cs index a21a4c6b41..c455d22e06 100644 --- a/BizHawk.Util/InputValidate.cs +++ b/BizHawk.Util/InputValidate.cs @@ -93,12 +93,18 @@ namespace BizHawk byte[] bc = AE.GetBytes(input[x].ToString()); // Determine if the ASCII code is within the valid range of numerical values. - if (bc[0] < 47) + if (bc[0] < 47) //0 return false; - if (bc[0] > 58) + if (bc[0] > 58) //9 { - if (bc[0] < 65 || bc[0] > 70) //A-F capital letters only! + if (bc[0] < 65) //A return false; + + if (bc[0] > 70) //F + { + if (bc[0] < 97 || bc[0] > 102) //a-f + return false; + } } } return true;