ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater/Docking/UI/UIMemoryViewer.cs
(Generate patch)

Comparing trunk/RomCheater/Docking/UI/UIMemoryViewer.cs (file contents):
Revision 200 by william, Thu May 31 07:29:44 2012 UTC vs.
Revision 201 by william, Thu May 31 08:10:25 2012 UTC

--- trunk/RomCheater/Docking/UI/UIMemoryViewer.cs	2012/05/31 07:29:44	200
+++ trunk/RomCheater/Docking/UI/UIMemoryViewer.cs	2012/05/31 08:10:25	201
@@ -29,7 +29,7 @@ namespace RomCheater.Docking.UI
             txtData.UseFixedBytesPerLine = true;
             txtData.StringViewVisible = true;
             ramScroll.Minimum = (int)MemoryStart;
-            for (uint i = MemoryStart; i < (MemoryStart + MemorySize); i += max_address_width) { ramScroll.Maximum += (int)max_address_width; }
+            for (uint i = MemoryStart; i < (MemoryStart + max_ram_view); i += max_address_width) { ramScroll.Maximum += (int)max_address_width; }
             ramScroll.Value = ramScroll.Minimum;
             this.CanChangeUpdateInterval = false;
 
@@ -58,8 +58,8 @@ namespace RomCheater.Docking.UI
         public IConfigPlugin AcceptedPlugin { get; set; }
         #endregion
         #region IAcceptsMemoryRange members
-        public uint MemoryStart { get; set; }
-        public uint MemorySize { get; set; }
+        private uint MemoryStart { get { return 0; } }
+        private uint MemorySize { get { return int.MaxValue; } }
         #endregion
         public void GotoTop() { this.CURRENT_TOP_ADDR = 0; }
         public void GotoBottom() { uint size = MemorySize; this.CURRENT_TOP_ADDR = (uint)((size - 1) - max_ram_view); }
@@ -196,46 +196,48 @@ namespace RomCheater.Docking.UI
                 if (AcceptedPlugin == null) { return; }
 
                 byte[] data = GetMemory();
-
-                List<byte> ByteData = new List<byte>((int)(address + (max_ram_view - 0)));
-
                 try
                 {
-                    AddressList = "";
-                    AsciiData = "";
+                    RamData = data;
 
-                    // create a byte array holding only the bytes that we need
-                    for (uint i = address; i < (address + (max_ram_view + 1)); i += 1) { ByteData.Add(data[i]); }
 
+                    AddressList = "";
+                    AsciiData = "";
                     // write the addreses out
                     for (uint i = address; i < (address + max_ram_view); i += max_address_width)
                     {
                         AddressList = AddressList + string.Format("{0:X8}:\n", i);
                     }
-                    // write out the ascii data
+                    //// write out the ascii data
                     StringBuilder builder = new StringBuilder();
                     for (uint i = address; i < (address + max_ram_view); i += max_address_width)
                     {
-                        for (uint j = 0; j < max_address_width; j++)
+                        try
                         {
-                            uint current_addr = i + j;
-                            if (current_addr >= MemorySize) break;
-                            byte ascii_value_raw = data[current_addr];
-                            char ascii_value = (char)data[current_addr];
-                            if (ascii_value_raw >= 0x20 && ascii_value_raw <= 0x7e)
-                            {
-                                builder.Append(ascii_value.ToString());
-                            }
-                            else
+                            for (uint j = 0; j < max_address_width; j++)
                             {
-                                builder.Append(".");
+                                uint current_addr = i + j;
+                                if (current_addr >= MemorySize) break;
+                                byte ascii_value_raw = data[j];
+                                char ascii_value = (char)data[j];
+                                if (ascii_value_raw >= 0x20 && ascii_value_raw <= 0x7e)
+                                {
+                                    builder.Append(ascii_value.ToString());
+                                }
+                                else
+                                {
+                                    builder.Append(".");
+                                }
                             }
+                            builder.AppendLine();
+                        }
+                        catch (Exception ex)
+                        {
+                            logger.Error.WriteLine("{0}.UpdateMemroyView().BuildingAsciiString:{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString());
+                            return;
                         }
-                        builder.AppendLine();
                     }
                     AsciiData = builder.ToString();
-                    // write out the bytes
-                    RamData = ByteData.ToArray();
 
 
                 }
@@ -303,7 +305,7 @@ namespace RomCheater.Docking.UI
             uint ORIGINAL_ADDR = this.CURRENT_TOP_ADDR;
 
             ////if (e.Type == ScrollEventType.EndScroll) return;
-            uint size = MemorySize;
+            uint size = max_ram_view;
 
             bool haveModifier = false;
             switch (e.Modifiers)
@@ -347,7 +349,7 @@ namespace RomCheater.Docking.UI
             }
             if (this.CURRENT_TOP_ADDR < MemoryStart) this.CURRENT_TOP_ADDR = MemoryStart;
             //if (this.CURRENT_TOP_ADDR >= VTLB_VADDR_SIZE) this.CURRENT_TOP_ADDR = (size - 1) - max_ram_view;
-            if (this.CURRENT_TOP_ADDR + max_ram_view >= MemoryStart) this.CURRENT_TOP_ADDR = (size - 1) - max_ram_view;
+            if (this.CURRENT_TOP_ADDR + max_ram_view >= MemorySize) this.CURRENT_TOP_ADDR = (size - 1);
 
             //this.UpdateEnabled = reenable;
         }