/[RomCheater]/trunk/RomCheater/Docking/UI/UIMemoryViewer.cs
ViewVC logotype

Diff of /trunk/RomCheater/Docking/UI/UIMemoryViewer.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 200 by william, Thu May 31 07:29:44 2012 UTC revision 202 by william, Thu May 31 08:38:16 2012 UTC
# Line 29  namespace RomCheater.Docking.UI Line 29  namespace RomCheater.Docking.UI
29              txtData.UseFixedBytesPerLine = true;              txtData.UseFixedBytesPerLine = true;
30              txtData.StringViewVisible = true;              txtData.StringViewVisible = true;
31              ramScroll.Minimum = (int)MemoryStart;              ramScroll.Minimum = (int)MemoryStart;
32              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; }
33              ramScroll.Value = ramScroll.Minimum;              ramScroll.Value = ramScroll.Minimum;
34              this.CanChangeUpdateInterval = false;              this.CanChangeUpdateInterval = false;
35    
# Line 40  namespace RomCheater.Docking.UI Line 40  namespace RomCheater.Docking.UI
40                  lblAddressMarker.Text = lblAddressMarker.Text + string.Format("{0:X2} ", i);                  lblAddressMarker.Text = lblAddressMarker.Text + string.Format("{0:X2} ", i);
41              }              }
42              this.AcceptedPlugin = null; this.AcceptedProcess = null;              this.AcceptedPlugin = null; this.AcceptedProcess = null;
43          }  
44                txtAddresses.MouseWheel += new MouseEventHandler(txtAddresses_MouseWheel);
45                txtData.MouseWheel += new MouseEventHandler(txtData_MouseWheel);
46            }
47          #region IProcessConfig Members          #region IProcessConfig Members
48          private Process _AcceptedProcess;          private Process _AcceptedProcess;
49          public Process AcceptedProcess          public Process AcceptedProcess
# Line 58  namespace RomCheater.Docking.UI Line 61  namespace RomCheater.Docking.UI
61          public IConfigPlugin AcceptedPlugin { get; set; }          public IConfigPlugin AcceptedPlugin { get; set; }
62          #endregion          #endregion
63          #region IAcceptsMemoryRange members          #region IAcceptsMemoryRange members
64          public uint MemoryStart { get; set; }          private uint MemoryStart { get { return 0; } }
65          public uint MemorySize { get; set; }          private uint MemorySize { get { return int.MaxValue; } }
66          #endregion          #endregion
67          public void GotoTop() { this.CURRENT_TOP_ADDR = 0; }          public void GotoTop() { this.CURRENT_TOP_ADDR = 0; }
68          public void GotoBottom() { uint size = MemorySize; this.CURRENT_TOP_ADDR = (uint)((size - 1) - max_ram_view); }          public void GotoBottom() { uint size = MemorySize; this.CURRENT_TOP_ADDR = (uint)((size - 1) - max_ram_view); }
# Line 196  namespace RomCheater.Docking.UI Line 199  namespace RomCheater.Docking.UI
199                  if (AcceptedPlugin == null) { return; }                  if (AcceptedPlugin == null) { return; }
200    
201                  byte[] data = GetMemory();                  byte[] data = GetMemory();
   
                 List<byte> ByteData = new List<byte>((int)(address + (max_ram_view - 0)));  
   
202                  try                  try
203                  {                  {
204                      AddressList = "";                      RamData = data;
                     AsciiData = "";  
205    
                     // 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]); }  
206    
207                        AddressList = "";
208                        AsciiData = "";
209                      // write the addreses out                      // write the addreses out
210                      for (uint i = address; i < (address + max_ram_view); i += max_address_width)                      for (uint i = address; i < (address + max_ram_view); i += max_address_width)
211                      {                      {
212                          AddressList = AddressList + string.Format("{0:X8}:\n", i);                          AddressList = AddressList + string.Format("{0:X8}:\n", i);
213                      }                      }
214                      // write out the ascii data                      //// write out the ascii data
215                      StringBuilder builder = new StringBuilder();                      StringBuilder builder = new StringBuilder();
216                      for (uint i = address; i < (address + max_ram_view); i += max_address_width)                      for (uint i = address; i < (address + max_ram_view); i += max_address_width)
217                      {                      {
218                          for (uint j = 0; j < max_address_width; j++)                          try
219                          {                          {
220                              uint current_addr = i + j;                              for (uint j = 0; j < max_address_width; 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  
221                              {                              {
222                                  builder.Append(".");                                  uint current_addr = i + j;
223                                    if (current_addr >= MemorySize) break;
224                                    byte ascii_value_raw = data[j];
225                                    char ascii_value = (char)data[j];
226                                    if (ascii_value_raw >= 0x20 && ascii_value_raw <= 0x7e)
227                                    {
228                                        builder.Append(ascii_value.ToString());
229                                    }
230                                    else
231                                    {
232                                        builder.Append(".");
233                                    }
234                              }                              }
235                                builder.AppendLine();
236                            }
237                            catch (Exception ex)
238                            {
239                                logger.Error.WriteLine("{0}.UpdateMemroyView().BuildingAsciiString:{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString());
240                                return;
241                          }                          }
                         builder.AppendLine();  
242                      }                      }
243                      AsciiData = builder.ToString();                      AsciiData = builder.ToString();
                     // write out the bytes  
                     RamData = ByteData.ToArray();  
244    
245    
246                  }                  }
# Line 303  namespace RomCheater.Docking.UI Line 308  namespace RomCheater.Docking.UI
308              uint ORIGINAL_ADDR = this.CURRENT_TOP_ADDR;              uint ORIGINAL_ADDR = this.CURRENT_TOP_ADDR;
309    
310              ////if (e.Type == ScrollEventType.EndScroll) return;              ////if (e.Type == ScrollEventType.EndScroll) return;
311              uint size = MemorySize;              uint size = max_ram_view;
312    
313              bool haveModifier = false;              bool haveModifier = false;
314              switch (e.Modifiers)              switch (e.Modifiers)
# Line 347  namespace RomCheater.Docking.UI Line 352  namespace RomCheater.Docking.UI
352              }              }
353              if (this.CURRENT_TOP_ADDR < MemoryStart) this.CURRENT_TOP_ADDR = MemoryStart;              if (this.CURRENT_TOP_ADDR < MemoryStart) this.CURRENT_TOP_ADDR = MemoryStart;
354              //if (this.CURRENT_TOP_ADDR >= VTLB_VADDR_SIZE) this.CURRENT_TOP_ADDR = (size - 1) - max_ram_view;              //if (this.CURRENT_TOP_ADDR >= VTLB_VADDR_SIZE) this.CURRENT_TOP_ADDR = (size - 1) - max_ram_view;
355              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);
356    
357              //this.UpdateEnabled = reenable;              //this.UpdateEnabled = reenable;
358          }          }
# Line 357  namespace RomCheater.Docking.UI Line 362  namespace RomCheater.Docking.UI
362          private void txtData_KeyDown(object sender, KeyEventArgs e) { this.Handle_KeyDown(sender, e); }          private void txtData_KeyDown(object sender, KeyEventArgs e) { this.Handle_KeyDown(sender, e); }
363    
364          private void ramScroll_Scroll(object sender, ScrollEventArgs e) { this.Handle_Scroll(sender, e); }          private void ramScroll_Scroll(object sender, ScrollEventArgs e) { this.Handle_Scroll(sender, e); }
365    
366            private ScrollEventArgs GetMouseWheelScrollChange(int WheelDelta)
367            {
368                ScrollEventArgs args = new ScrollEventArgs(ScrollEventType.SmallIncrement,1);
369                if (WheelDelta < 0)
370                {
371                    //// negative: scroll down
372                    //// SmallDecrement -or- LargeDecrement
373                    //if (WheelDelta <= small_scroll_change)
374                    //{
375                    //    args = new ScrollEventArgs(ScrollEventType.SmallDecrement,(int)small_scroll_change);
376                    //}
377                    //if (WheelDelta > small_scroll_change && WheelDelta <= large_scroll_change)
378                    //{
379                    //    args = new ScrollEventArgs(ScrollEventType.LargeDecrement, (int)large_scroll_change);
380                    //}
381                    args = new ScrollEventArgs(ScrollEventType.SmallIncrement, 1);
382                }
383                else
384                {
385                    //// positive: scroll up
386                    //// SmallIncrement  -or- LargeIncrement
387                    //if (WheelDelta <= small_scroll_change)
388                    //{
389                    //    args = new ScrollEventArgs(ScrollEventType.SmallIncrement, (int)small_scroll_change);
390                    //}
391                    //if (WheelDelta > small_scroll_change && WheelDelta <= large_scroll_change)
392                    //{
393                    //    args = new ScrollEventArgs(ScrollEventType.LargeIncrement, (int)large_scroll_change);
394                    //}
395                    args = new ScrollEventArgs(ScrollEventType.SmallDecrement, 1);
396                }
397                return args;
398            }
399    
400            void txtAddresses_MouseWheel(object sender, MouseEventArgs e) { this.Handle_Scroll(sender, GetMouseWheelScrollChange(e.Delta)); }
401            void txtData_MouseWheel(object sender, MouseEventArgs e) { this.Handle_Scroll(sender, GetMouseWheelScrollChange(e.Delta)); }
402          
403    
404          private void Handle_Scroll(object sender, ScrollEventArgs e)          private void Handle_Scroll(object sender, ScrollEventArgs e)
405          {          {
406              //isScrolling = true;              //isScrolling = true;
# Line 372  namespace RomCheater.Docking.UI Line 416  namespace RomCheater.Docking.UI
416              switch (e.Type)              switch (e.Type)
417              {              {
418                  case ScrollEventType.SmallDecrement:                  case ScrollEventType.SmallDecrement:
419                      this.CURRENT_TOP_ADDR -= (small_scroll_change);                      if (this.CURRENT_TOP_ADDR == 0 && ((this.CURRENT_TOP_ADDR - small_scroll_change) > this.CURRENT_TOP_ADDR))
420                        {
421                            this.CURRENT_TOP_ADDR = ORIGINAL_ADDR;
422                        }
423                        else
424                        {
425                            this.CURRENT_TOP_ADDR -= (small_scroll_change);
426                        }
427                      break;                      break;
428                  case ScrollEventType.SmallIncrement:                  case ScrollEventType.SmallIncrement:
429                      this.CURRENT_TOP_ADDR += (small_scroll_change);                      this.CURRENT_TOP_ADDR += (small_scroll_change);
430                      break;                      break;
431    
432                  case ScrollEventType.LargeDecrement:                  case ScrollEventType.LargeDecrement:
433                      this.CURRENT_TOP_ADDR -= (large_scroll_change);                      if (this.CURRENT_TOP_ADDR == 0 && ((this.CURRENT_TOP_ADDR - large_scroll_change) > this.CURRENT_TOP_ADDR))
434                        {
435                            this.CURRENT_TOP_ADDR = ORIGINAL_ADDR;
436                        }
437                        else
438                        {
439                            this.CURRENT_TOP_ADDR -= (large_scroll_change);
440                        }
441                      break;                      break;
442                  case ScrollEventType.LargeIncrement:                  case ScrollEventType.LargeIncrement:
443                      this.CURRENT_TOP_ADDR += (large_scroll_change);                      this.CURRENT_TOP_ADDR += (large_scroll_change);

Legend:
Removed from v.200  
changed lines
  Added in v.202

  ViewVC Help
Powered by ViewVC 1.1.22