using System;
using System.Globalization;

namespace BizHawk.Client.Common.cheats
{
	public static class SmsActionReplayDecoder
	{
		public static IDecodeResult Decode(string code)
		{
			if (code == null)
			{
				throw new ArgumentNullException(nameof(code));
			}

			if (code.IndexOf("-") != 3 && code.Length != 9)
			{
				return new InvalidCheatCode("Action Replay Codes must be 9 characters with a dash after the third character");
			}

			var result = new DecodeResult { Size = WatchSize.Byte };

			var s = code.Remove(0, 2);
			var ramAddress = s.Remove(4, 2).Replace("-", "");
			var ramValue = s.Remove(0, 5);
			result.Address = int.Parse(ramAddress, NumberStyles.HexNumber);
			result.Value = int.Parse(ramValue, NumberStyles.HexNumber);
			return result;
		}
	}
}
