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); }
private void ApplyIPSRecord(IPSRecord record, byte[] data) { Bits.SetBytes(data, record.offset, record.recordData); }