Exemplo n.º 1
0
        private int ParseRecord(byte[] patch, int index)
        {
            IPSRecord record = new IPSRecord();

            record.offset = Bits.GetInt24Reversed(patch, index); index += 3;
            record.size   = Bits.GetShortReversed(patch, index); index += 2;
            // RLE encoded
            if (record.size == 0)
            {
                record.size       = Bits.GetShortReversed(patch, index); index += 2;
                record.recordData = new Byte[record.size];
                byte value = patch[index]; index++;
                for (int i = 0; i < record.recordData.Length; i++)
                {
                    record.recordData[i] = value;
                }
                this.records.Add(record); // Save the record
                // Return
                return(8);
            }
            // Not RLE encoded
            record.recordData = Bits.GetBytes(patch, index, record.size); index += record.size;
            // Save the record
            this.records.Add(record);
            // Return
            return(record.size + 5);
        }
Exemplo n.º 2
0
 private void ApplyIPSRecord(IPSRecord record, byte[] data)
 {
     Bits.SetBytes(data, record.offset, record.recordData);
 }