コード例 #1
0
        public bool IsPatchEqual(PatchedByteArray patchedByteArray)
        {
            if (patchedByteArray == null)
            {
                return(false);
            }

            if ((Sector != patchedByteArray.Sector) || (Offset != patchedByteArray.Offset))
            {
                return(false);
            }

            byte[] compareBytes = patchedByteArray.GetBytes();

            if ((bytes == null) || (compareBytes == null))
            {
                return(false);
            }

            if (bytes.Length != compareBytes.Length)
            {
                return(false);
            }

            for (int index = 0; index < bytes.Length; index++)
            {
                if (bytes[index] != compareBytes[index])
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public bool HasConflict(PatchedByteArray patchedByteArray)
        {
            if (patchedByteArray == null)
            {
                return(false);
            }

            if (Sector != patchedByteArray.Sector)
            {
                return(false);
            }

            byte[] compareBytes = patchedByteArray.GetBytes();

            if ((bytes == null) || (compareBytes == null))
            {
                return(false);
            }

            if ((bytes.Length == 0) || (compareBytes.Length == 0))
            {
                return(false);
            }

            PatchRange range      = new PatchRange(this);
            PatchRange inputRange = new PatchRange(patchedByteArray);

            if (!range.HasOverlap(inputRange))
            {
                return(false);
            }

            uint greaterStartOffset = Math.Max(range.StartOffset, inputRange.StartOffset);
            uint lesserEndOffset    = Math.Min(range.EndOffset, inputRange.EndOffset);
            uint length             = lesserEndOffset - greaterStartOffset + 1;

            System.Collections.Generic.IList <byte> overlapBytes      = GetBytes().SubLength(greaterStartOffset - range.StartOffset, length);
            System.Collections.Generic.IList <byte> inputOverlapBytes = patchedByteArray.GetBytes().SubLength(greaterStartOffset - inputRange.StartOffset, length);

            for (int index = 0; index < length; index++)
            {
                if (overlapBytes[index] != inputOverlapBytes[index])
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
        public PatchedByteArray Copy()
        {
            PatchedByteArray result = new PatchedByteArray(Sector, Offset, bytes);

            result.SectorEnum         = SectorEnum;
            result.IsAsm              = IsAsm;
            result.MarkedAsData       = MarkedAsData;
            result.IsCheckedAsm       = IsCheckedAsm;
            result.IsSequentialOffset = IsSequentialOffset;
            result.IsMoveSimple       = IsMoveSimple;
            result.AsmText            = AsmText;
            result.RamOffset          = RamOffset;
            result.ErrorText          = ErrorText;
            result.Label              = Label;
            return(result);
        }
コード例 #4
0
ファイル: PspIso.cs プロジェクト: xjamxx/FFTPatcher
 public static void ApplyPatch(Stream stream, PspIsoInfo info, PatcherLib.Datatypes.PatchedByteArray patch)
 {
     if (patch.SectorEnum != null)
     {
         if (patch.SectorEnum.GetType() == typeof(PspIso.Sectors))
         {
             stream.WriteArrayToPosition(patch.GetBytes(), (int)(info[(PspIso.Sectors)patch.SectorEnum] * 2048) + patch.Offset);
         }
         else if (patch.SectorEnum.GetType() == typeof(FFTPack.Files))
         {
             FFTPack.PatchFile(stream, info, (int)((FFTPack.Files)patch.SectorEnum), (int)patch.Offset, patch.GetBytes());
         }
         else
         {
             throw new ArgumentException("invalid type");
         }
     }
 }
コード例 #5
0
 public bool IsContainedWithin(PatchedByteArray patchedByteArray)
 {
     return(IsContainedWithin(new PatchRange(patchedByteArray)));
 }
コード例 #6
0
 public bool HasOverlap(PatchedByteArray patchedByteArray)
 {
     return(HasOverlap(new PatchRange(patchedByteArray)));
 }
コード例 #7
0
 public PatchRange(PatchedByteArray patchedByteArray) : this(patchedByteArray.Sector, (uint)patchedByteArray.Offset, (uint)(patchedByteArray.Offset + patchedByteArray.GetBytes().Length - 1))
 {
 }
コード例 #8
0
ファイル: AbstractSprite.cs プロジェクト: Wi150nZ/lioneditor
 public IList<PatchedByteArray> GetPatchedByteArrays( Context context )
 {
     PatchedByteArray[] result = new PatchedByteArray[Filenames.Count];
     for ( int i = 0; i < Filenames.Count; i++ )
     {
         result[i] = GetPatchedByteArray( context, i );
     }
     return result;
 }