--- trunk/RomCheater.EmuMMAPPlugin/EmuMEMMapDockControl.cs 2013/06/09 00:30:55 652 +++ trunk/RomCheater.EmuMMAPPlugin/EmuMEMMapDockControl.cs 2013/06/09 00:40:20 654 @@ -10,6 +10,7 @@ namespace RomCheater.EmuMMAPPlugin { + #region EmuMEMMapDockControl public partial class EmuMEMMapDockControl : DockContent { private List DeviceMemoryMaps = new List(); @@ -39,7 +40,6 @@ private void CreateMaps() { var map = new DeviceMemoryMap(); - #region NES map = CreateNESMemMap(); DeviceMemoryMaps.Add(map); @@ -68,15 +68,14 @@ map = CreateWIIMemMap(); DeviceMemoryMaps.Add(map); #endregion - map = null; + map = null; // free memory } - #region NES private DeviceMemoryMap CreateNESMemMap() { /* http://en.wikibooks.org/wiki/NES_Programming */ const string name = "NES"; - DeviceMemoryMap map = new DeviceMemoryMap(); + DeviceMemoryMap map = new DeviceMemoryMap(); List maprange = new List(); #region memory maps //maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); @@ -90,7 +89,7 @@ maprange.Add(new MemMap("ZeroPage/Stack/Ram Mirror2", 0x1000, 0x17FF)); // mirror maprange.Add(new MemMap("ZeroPage/Stack/Ram Mirror3", 0x1800, 0x1FFF)); - + maprange.Add(new MemMap("IO Reg1", 0x2000, 0x2007)); maprange.Add(new MemMap("IO reg1 mirror - repeated", 0x2000, 0x3FFF)); maprange.Add(new MemMap("IO Reg2", 0x4000, 0x401F)); @@ -136,7 +135,7 @@ maprange.Add(new MemMap("User Memory", 0x00010000, 0x001FFFFF)); maprange.Add(new MemMap("Parallel Port", 0x1f000000, 0x1f00ffff)); maprange.Add(new MemMap("Scratch Pad", 0x1f800000, 0x1f8003ff)); - maprange.Add(new MemMap("HW Registers", 0x1f801000, 0x1f802fff)); + maprange.Add(new MemMap("HW Registers", 0x1f801000, 0x1f802fff)); maprange.Add(new MemMap("BIOS", 0x1FC00000, 0x1FC7FFFF)); maprange.Add(new MemMap("Kernel & User Memory (cached)", 0x80000000, 0x801fffff)); @@ -214,19 +213,27 @@ #region WII private DeviceMemoryMap CreateWIIMemMap() { + /* http://wiibrew.org/wiki/Memory_Map */ 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)); + //maprange.Add(new MemMap(string.Format("{0}_test", name), 0, 0)); + maprange.Add(new MemMap("MEM1 [cached]", 0x80000000, 0x817FFFFF)); + maprange.Add(new MemMap("MEM1 [uncached]", 0xC0000000, 0xC17FFFFF)); + maprange.Add(new MemMap("MEM2 [cached]", 0x90000000, 0x93FFFFFF)); + maprange.Add(new MemMap("MEM2 [uncached]", 0xD0000000, 0xD3FFFFFF)); + maprange.Add(new MemMap("Hollywood/Starlet Registers?", 0xCD000000, 0xCD008000)); #endregion map = new DeviceMemoryMap(name, maprange); return map; } #endregion } + #endregion #region Memory Map Helper Classes + #region IMemMap internal interface IMemMap { string MapName { get; } @@ -235,30 +242,29 @@ string MapSize { get; } string ToString(); } + #endregion + #region IDeviceMemoryMap internal interface IDeviceMemoryMap { string DeviceName { get; } IDictionary MemoryMap { get; } string ToString(); } - + #endregion + #region MemMap 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")), end-start) { } + 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")), end - start) { } public MemMap(string name, string start, string end, ulong size) : this(name) { this.MapStart = start; this.MapEnd = end; - ulong _size = size + 1; double t = 1024.0 * 1024.0; - double __size = (double)_size/t; + double __size = (double)_size / t; this.MapSize = string.Format("0x{0}={1:0.000000}MB", _size.ToString("X"), __size); } #region IMappedMemRange Members @@ -266,13 +272,11 @@ 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); - } + public override string ToString() { return string.Format("[{0}]==>[{1}-{2}] [{3}]", MapName, MapStart, MapEnd, MapSize); } #endregion } - + #endregion + #region DeviceMemoryMap internal class DeviceMemoryMap : IDeviceMemoryMap { public DeviceMemoryMap() { this.DeviceName = string.Empty; this.MemoryMap = this.MemoryMap = new Dictionary(); } @@ -280,24 +284,14 @@ { this.DeviceName = device; this.MemoryMap = new Dictionary(); - - foreach (var map in memorymap) - { - this.MemoryMap.Add(map.MapName, map); - } - + 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); - } + public override string ToString() { return string.Format("[{0}]==>{1} mapped memory range(s)", DeviceName, MemoryMap.Count); } #endregion } - + #endregion #endregion } -