--- trunk/RomCheater.EmuMMAPPlugin/EmuMEMMapDockControl.cs 2013/06/08 20:31:20 640 +++ trunk/RomCheater.EmuMMAPPlugin/EmuMEMMapDockControl.cs 2013/06/08 21:50:28 641 @@ -12,9 +12,226 @@ namespace RomCheater.EmuMMAPPlugin { public partial class EmuMEMMapDockControl : DockContent { + private List DeviceMemoryMaps = new List(); public EmuMEMMapDockControl() { InitializeComponent(); + CreateMaps(); } + private void EmuMEMMapDockControl_Shown(object sender, EventArgs e) + { + txtDeviceMap.Clear(); + txtDeviceMap.AppendText(string.Format("Device Memory Map(s):{0}", System.Environment.NewLine)); + foreach (var k in DeviceMemoryMaps) + { + string devicename = k.DeviceName; + txtDeviceMap.AppendText(string.Format("{0}:{1}", devicename, System.Environment.NewLine)); + var map = k.MemoryMap; + foreach (var mapped in map) + { + var mapped_name = mapped.Key; + var mapped_data = mapped.Value; + var t = mapped_data.ToString(); + txtDeviceMap.AppendText(string.Format("\t{0}{1}", t, System.Environment.NewLine)); + } + } + } + private void CreateMaps() + { + var map = new DeviceMemoryMap(); + + #region NES + map = CreateNESMemMap(); + DeviceMemoryMaps.Add(map); + #endregion + #region SNES + map = CreateSNESMemMap(); + DeviceMemoryMaps.Add(map); + #endregion + #region PS1 + map = CreatePS1MemMap(); + DeviceMemoryMaps.Add(map); + #endregion + #region PS2 + map = CreatePS2MemMap(); + DeviceMemoryMaps.Add(map); + #endregion + #region N64 + map = CreateN64MemMap(); + DeviceMemoryMaps.Add(map); + #endregion + #region NGC + map = CreateNGCMemMap(); + DeviceMemoryMaps.Add(map); + #endregion + #region WII + map = CreateWIIMemMap(); + DeviceMemoryMaps.Add(map); + #endregion + map = null; + } + + #region NES + private DeviceMemoryMap CreateNESMemMap() + { + const string name = "NES"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + #region SNES + private DeviceMemoryMap CreateSNESMemMap() + { + const string name = "SNES"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + #region PS1 + private DeviceMemoryMap CreatePS1MemMap() + { + const string name = "PS1"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + #region PS2 + private DeviceMemoryMap CreatePS2MemMap() + { + const string name = "PS2"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + #region N64 + private DeviceMemoryMap CreateN64MemMap() + { + const string name = "N64"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + #region NGC + private DeviceMemoryMap CreateNGCMemMap() + { + const string name = "NGC"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + #region WII + private DeviceMemoryMap CreateWIIMemMap() + { + const string name = "WII"; + DeviceMemoryMap map = new DeviceMemoryMap(); + List maprange = new List(); + #region memory maps + maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + #endregion + map = new DeviceMemoryMap(name, maprange); + return map; + } + #endregion + } + + #region Memory Map Helper Classes + internal interface IMemMap + { + string MapName { get; } + string MapStart { get; } + string MapEnd { get; } + string MapSize { get; } + string ToString(); + } + internal interface IDeviceMemoryMap + { + string DeviceName { get; } + IDictionary MemoryMap { get; } + string ToString(); + } + + internal class MemMap : IMemMap + { + public MemMap() : this(string.Empty, 0, 0) { } + public MemMap(string name) + { + this.MapName = name; + } + public MemMap(string name, ulong start, ulong end) : this(name, string.Format("0x{0}", start.ToString("X")), string.Format("0x{0}", end.ToString("X")), string.Format("0x{0}", (end - start).ToString("X"))) { } + public MemMap(string name, string start, string end, string size) + : this(name) + { + this.MapStart = start; + this.MapEnd = end; + this.MapSize = size; + } + #region IMappedMemRange Members + public string MapName { get; private set; } + public string MapStart { get; private set; } + public string MapEnd { get; private set; } + public string MapSize { get; private set; } + public override string ToString() + { + return string.Format("[{0}]==>[{1}-{2}] [{3}]", MapName, MapStart, MapEnd, MapSize); + } + #endregion + } + + internal class DeviceMemoryMap : IDeviceMemoryMap + { + public DeviceMemoryMap() { this.DeviceName = string.Empty; this.MemoryMap = this.MemoryMap = new Dictionary(); } + public DeviceMemoryMap(string device, List memorymap) + { + this.DeviceName = device; + this.MemoryMap = new Dictionary(); + + foreach (var map in memorymap) + { + this.MemoryMap.Add(map.MapName, map); + } + + } + + #region IDeviceMemoryMap Members + public string DeviceName { get; private set; } + public IDictionary MemoryMap { get; private set; } + public override string ToString() + { + return string.Format("[{0}]==>{1} mapped memory range(s)", DeviceName, MemoryMap.Count); + } + #endregion } + + #endregion } +