/[RomCheater]/trunk/RomCheater/Docking/FloatingMemorySearcher.cs
ViewVC logotype

Diff of /trunk/RomCheater/Docking/FloatingMemorySearcher.cs

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

revision 400 by william, Thu Jun 21 03:37:14 2012 UTC revision 401 by william, Thu Jun 21 05:14:38 2012 UTC
# Line 26  using RomCheater.PluginFramework.Events; Line 26  using RomCheater.PluginFramework.Events;
26  using System.Reflection;  using System.Reflection;
27  using Sojaner.MemoryScanner;  using Sojaner.MemoryScanner;
28  using System.Collections;  using System.Collections;
29    using RomCheater.Serialization;
30    
31  namespace RomCheater.Docking  namespace RomCheater.Docking
32  {  {
# Line 82  namespace RomCheater.Docking Line 83  namespace RomCheater.Docking
83  #if FORCE_USE_OF_MEMORYSIZECONSTANTS  #if FORCE_USE_OF_MEMORYSIZECONSTANTS
84              // force use of MemorySizeConstants              // force use of MemorySizeConstants
85              txtMemoryRangeStart.Value = MemorySizeConstants.MinimumSearchAddress;              txtMemoryRangeStart.Value = MemorySizeConstants.MinimumSearchAddress;
86              unchecked { txtMemoryRangeSize.Value = MemorySizeConstants.MinimumSearchAddress + MemorySizeConstants.MaximumSearchSize; }              txtMemoryRangeSize.Value = MemorySizeConstants.MinimumSearchAddress + MemorySizeConstants.MaximumSearchSize;
87  #endif  #endif
88  #if USE_AUTOMATIC_MEMORY_SEARCH_RANGE && !FORCE_USE_OF_MEMORYSIZECONSTANTS  #if USE_AUTOMATIC_MEMORY_SEARCH_RANGE && !FORCE_USE_OF_MEMORYSIZECONSTANTS
89              ////// code to automatically choose the best starting memory address and size              ////// code to automatically choose the best starting memory address and size
# Line 148  namespace RomCheater.Docking Line 149  namespace RomCheater.Docking
149              get              get
150              {              {
151  #if FORCE_USE_OF_MEMORYSIZECONSTANTS  #if FORCE_USE_OF_MEMORYSIZECONSTANTS
152                  unchecked { return MemorySizeConstants.MinimumSearchAddress + MemorySizeConstants.MaximumSearchSize; }                  return MemorySizeConstants.MinimumSearchAddress + MemorySizeConstants.MaximumSearchSize;
153  #else  #else
154                  return _MemoryRangeSize;                  return _MemoryRangeSize;
155  #endif  #endif
# Line 1061  namespace RomCheater.Docking Line 1062  namespace RomCheater.Docking
1062                      if (SearchArgs.IsFirstSearch)                      if (SearchArgs.IsFirstSearch)
1063                      {                      {
1064                          st_first_search.Start();                          st_first_search.Start();
1065                          SearchArgs.Results.Clear();                          //SearchArgs.Results.Clear();
1066                          r_ms.BaseStream.Seek(0, SeekOrigin.Begin);                          r_ms.BaseStream.Seek(0, SeekOrigin.Begin);
1067                          //List<ResultType<object>> results_list = new List<ResultType<object>>();                          using (SearchResultWriter writer = new SearchResultWriter((int)buffered_mem.Length / (int)STEP_SIZE))
                         //for (uint i = 0; i < buffered_mem.Length; i += STEP_SIZE)  
                         //{  
                         while (r_ms.BaseStream.Position < r_ms.BaseStream.Length)  
1068                          {                          {
1069                              using (ResultType<object> _tmp_result = new ResultType<object>())                              //List<ResultType<object>> results_list = new List<ResultType<object>>();
1070                                //for (uint i = 0; i < buffered_mem.Length; i += STEP_SIZE)
1071                                //{
1072                                #region while (r_ms.BaseStream.Position < r_ms.BaseStream.Length)
1073                                while (r_ms.BaseStream.Position < r_ms.BaseStream.Length)
1074                              {                              {
1075                                    //using (ResultType<object> _tmp_result = new ResultType<object>())
1076                                    //{
1077                                  switch (sdt)                                  switch (sdt)
1078                                  {                                  {
1079                                      case SearchDataTypes._8bits:                                      case SearchDataTypes._8bits:
1080                                          if (unsigned) { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadByte(); }                                          if (unsigned) { writer.WriteResult<Byte>((uint)r_ms.BaseStream.Position, r_ms.ReadByte()); }
1081                                          else { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadSByte(); } break;                                          else { writer.WriteResult<SByte>((uint)r_ms.BaseStream.Position, r_ms.ReadSByte()); } break;
1082                                      case SearchDataTypes._16bits:                                      case SearchDataTypes._16bits:
1083                                          if (unsigned) { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadUInt16(); }                                          if (unsigned) { writer.WriteResult<UInt16>((uint)r_ms.BaseStream.Position, r_ms.ReadUInt16()); }
1084                                          else { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadInt16(); } break;                                          else { writer.WriteResult<Int16>((uint)r_ms.BaseStream.Position, r_ms.ReadInt16()); } break;
1085                                      case SearchDataTypes._32bits:                                      case SearchDataTypes._32bits:
1086                                          if (unsigned) { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadUInt32(); }                                          if (unsigned) { writer.WriteResult<UInt32>((uint)r_ms.BaseStream.Position, r_ms.ReadUInt32()); }
1087                                          else { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadInt32(); } break;                                          else { writer.WriteResult<Int32>((uint)r_ms.BaseStream.Position, r_ms.ReadInt32()); } break;
1088                                      case SearchDataTypes._64bits:                                      case SearchDataTypes._64bits:
1089                                          if (unsigned) { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadUInt64(); }                                          if (unsigned) { writer.WriteResult<UInt64>((uint)r_ms.BaseStream.Position, r_ms.ReadUInt64()); }
1090                                          else { _tmp_result.Address = (uint)r_ms.BaseStream.Position; _tmp_result.Value = r_ms.ReadInt64(); } break;                                          else { writer.WriteResult<Int64>((uint)r_ms.BaseStream.Position, r_ms.ReadInt64()); } break;
1091                                  }                                  }
1092                                  //results_list.Add(_tmp_result);                                  //results_list.Add(_tmp_result);
1093                                  SearchArgs.Results.Add(_tmp_result);                                  //SearchArgs.Results.Add(_tmp_result);
1094                              }                                  double double_percent_done = 100.0 * (double)((double)r_ms.BaseStream.Position / (double)r_ms.BaseStream.Length);
1095                              double double_percent_done = 100.0 * (double)((double)r_ms.BaseStream.Position / (double)r_ms.BaseStream.Length);                                  int int_percent_done = (int)double_percent_done;
1096                              int int_percent_done = (int)double_percent_done;                                  if (int_percent_done != Last_Whole_Percent_Done)
1097                              if (int_percent_done != Last_Whole_Percent_Done && r_ms.BaseStream.Position % ElementsBeforeDisplay == 0)                                  {
1098                              {                                      resultsprogress.Value = int_percent_done;
1099                                  resultsprogress.Value = int_percent_done;                                      resultsprogress.Message = string.Format(" -> Reading Address: 0x{0:x8}", (r_ms.BaseStream.Position + MemoryRangeStart));
1100                                  resultsprogress.Message = string.Format(" -> Reading Address: 0x{0:x8}", r_ms.BaseStream.Position + MemoryRangeStart);                                      Last_Whole_Percent_Done = int_percent_done;
1101                                  Last_Whole_Percent_Done = int_percent_done;                                      //Application.DoEvents();
1102                                  //Application.DoEvents();                                  }
1103                              }                              }
   
1104                              if (SearchWorkerThread.CancellationPending == true)                              if (SearchWorkerThread.CancellationPending == true)
1105                              {                                  {
1106                                  e.Cancel = true;                                      e.Cancel = true;
1107                                  return;                                      return;
1108                              }                                  }
1109                              //Application.DoEvents();                              #endregion                  
1110                          }                          }
1111                          //}                          //}
1112                          //SearchArgs.Results.AddRange(results_list);                          //SearchArgs.Results.AddRange(results_list);

Legend:
Removed from v.400  
changed lines
  Added in v.401

  ViewVC Help
Powered by ViewVC 1.1.22