/[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 402 by william, Thu Jun 21 06:30:33 2012 UTC revision 403 by william, Thu Jun 21 07:13:04 2012 UTC
# Line 1146  namespace RomCheater.Docking Line 1146  namespace RomCheater.Docking
1146                              {                              {
1147                                  for (int i = 0; i < reader.ResultCount; i += 1)                                  for (int i = 0; i < reader.ResultCount; i += 1)
1148                                  {                                  {
1149                                        if (reader.ReadCurrentAddess)
1150                                        {
1151                                            if (!reader.ReadCurrentValue)
1152                                            {
1153                                                switch (SearchArgs.DataType)
1154                                                {
1155                                                    case SearchDataTypes._8bits: if (unsigned) { reader.CurrentResult<byte>(); } else { reader.CurrentResult<sbyte>(); } break;
1156                                                    case SearchDataTypes._16bits: if (unsigned) { reader.CurrentResult<ushort>(); } else { reader.CurrentResult<short>(); } break;
1157                                                    case SearchDataTypes._32bits: if (unsigned) { reader.CurrentResult<uint>(); } else { reader.CurrentResult<int>(); } break;
1158                                                    case SearchDataTypes._64bits: if (unsigned) { reader.CurrentResult<ulong>(); } else { reader.CurrentResult<long>(); } break;
1159                                                }
1160                                            }
1161                                        }
1162                                      uint address = reader.CurrentAddress();                                      uint address = reader.CurrentAddress();
1163                                      if (MemoryRangeStart > 0 && !SearchArgs.IsFirstSearch) { address = address - MemoryRangeStart; }                                      if (MemoryRangeStart > 0 && !SearchArgs.IsFirstSearch) { address = address - MemoryRangeStart; }
1164                                      r_ms.BaseStream.Seek(address, SeekOrigin.Begin);                                      try
1165                                        {
1166                                            r_ms.BaseStream.Seek(address, SeekOrigin.Begin);
1167                                        }
1168                                        catch(Exception)
1169                                        {
1170                                            throw;
1171                                        }
1172                                      switch (SearchArgs.DataType)                                      switch (SearchArgs.DataType)
1173                                      {                                      {
1174                                          #region Comparer Support                                          #region Comparer Support
# Line 1248  namespace RomCheater.Docking Line 1268  namespace RomCheater.Docking
1268                                          case SearchDataTypes._32bits:                                          case SearchDataTypes._32bits:
1269                                              if (SearchArgs.IsUnsignedDataType)                                              if (SearchArgs.IsUnsignedDataType)
1270                                              {                                              {
1271                                                  uint lookup_value = reader.CurrentResult<uint>();                                                  uint lookup_value = r_ms.ReadUInt32();
1272                                                  _32bit_unsigned_comparer_ comparer = new _32bit_unsigned_comparer_(SearchArgs, address);                                                  _32bit_unsigned_comparer_ comparer = new _32bit_unsigned_comparer_(SearchArgs, address);
1273                                                  uint value = 0;                                                  uint value = 0;
1274                                                  if (SearchArgs.CompareValueType == CompareValueTypes.OldValue)                                                  if (SearchArgs.CompareValueType == CompareValueTypes.OldValue)
# Line 1418  namespace RomCheater.Docking Line 1438  namespace RomCheater.Docking
1438                      if (NeedToCompare)                      if (NeedToCompare)
1439                      {                      {
1440                          // fix addresses when memory start is not zero                          // fix addresses when memory start is not zero
1441                          if (MemoryRangeStart > 0 && SearchArgs.IsFirstSearch)                          if (MemoryRangeStart > 0 && SearchArgs.IsFirstSearch) { for (int i = 0; i < second_tmp_Results.Count; i++) { second_tmp_Results[i].Address = second_tmp_Results[i].Address + MemoryRangeStart; } }
1442                            using (SearchResultWriter writer = new SearchResultWriter(second_tmp_Results.Count))
1443                          {                          {
1444                              using (SearchResultWriter writer = new SearchResultWriter(second_tmp_Results.Count))                              for (int i = 0; i < second_tmp_Results.Count; i++)
1445                              {                              {
1446                                  for (int i = 0; i < second_tmp_Results.Count; i++)                                  switch (sdt)
1447                                  {                                  {
1448                                      second_tmp_Results[i].Address = second_tmp_Results[i].Address + MemoryRangeStart;                                      case SearchDataTypes._8bits:
1449                                      switch (sdt)                                          if (unsigned) { writer.WriteResult<Byte>(second_tmp_Results[i].Address, Convert.ToByte(second_tmp_Results[i].Value)); }
1450                                      {                                          else { writer.WriteResult<SByte>(second_tmp_Results[i].Address, Convert.ToSByte(second_tmp_Results[i].Value)); } break;
1451                                          case SearchDataTypes._8bits:                                      case SearchDataTypes._16bits:
1452                                              if (unsigned) { writer.WriteResult<Byte>((uint)i, Convert.ToByte(second_tmp_Results[i].Value)); }                                          if (unsigned) { writer.WriteResult<UInt16>(second_tmp_Results[i].Address, Convert.ToUInt16(second_tmp_Results[i].Value)); }
1453                                              else { writer.WriteResult<SByte>((uint)i, Convert.ToSByte(second_tmp_Results[i].Value)); } break;                                          else { writer.WriteResult<Int16>(second_tmp_Results[i].Address, Convert.ToInt16(second_tmp_Results[i].Value)); } break;
1454                                          case SearchDataTypes._16bits:                                      case SearchDataTypes._32bits:
1455                                              if (unsigned) { writer.WriteResult<UInt16>((uint)i, Convert.ToUInt16(second_tmp_Results[i].Value)); }                                          if (unsigned) { writer.WriteResult<UInt32>(second_tmp_Results[i].Address, Convert.ToUInt32(second_tmp_Results[i].Value)); }
1456                                              else { writer.WriteResult<Int16>((uint)i, Convert.ToInt16(second_tmp_Results[i].Value)); } break;                                          else { writer.WriteResult<Int32>(second_tmp_Results[i].Address, Convert.ToInt32(second_tmp_Results[i].Value)); } break;
1457                                          case SearchDataTypes._32bits:                                      case SearchDataTypes._64bits:
1458                                              if (unsigned) { writer.WriteResult<UInt32>((uint)i, Convert.ToUInt32(second_tmp_Results[i].Value)); }                                          if (unsigned) { writer.WriteResult<UInt64>(second_tmp_Results[i].Address, Convert.ToUInt64(second_tmp_Results[i].Value)); }
1459                                              else { writer.WriteResult<Int32>((uint)i,Convert.ToInt32(second_tmp_Results[i].Value)); } break;                                          else { writer.WriteResult<Int64>(second_tmp_Results[i].Address, Convert.ToInt64(second_tmp_Results[i].Value)); } break;
                                         case SearchDataTypes._64bits:  
                                             if (unsigned) { writer.WriteResult<UInt64>((uint)i, Convert.ToUInt64(second_tmp_Results[i].Value)); }  
                                             else { writer.WriteResult<Int64>((uint)i, Convert.ToInt64(second_tmp_Results[i].Value)); } break;  
                                     }  
1460                                  }                                  }
1461                              }                              }
1462                          }                          }                      
1463                          second_tmp_Results = null; // free memory                                                second_tmp_Results = null; // free memory                      
1464                      }                      }
1465    

Legend:
Removed from v.402  
changed lines
  Added in v.403

  ViewVC Help
Powered by ViewVC 1.1.22