anchor.diff:           if SegmentType = $FF then
            begin
              AStream.Seek(BaseOffsetor+Int32(BaseOffset), soFromBeginning);
  -           for i := 0 to SegmentLength - 1 do
  -           begin
  -             SetRaw(AStream.ReadByte(), i + ftcp);
  -           end;
  +           AStream.Read(FBuffer[ftcp],SegmentLength);
              BaseOffset += SegmentLength;
            end
            else begin
  -           SetRaw(SegmentType, ftcp, SegmentLength);
  +           FillChar(FBuffer[ftcp],SegmentLength,SegmentType);
            end;
   
            Skip(SegmentLength);
  
positive.code:   procedure ReadType1;
    var
      //RWEntriesLoc: Int32;
      row: Integer;
      TotalRowLength : Int32;
      RowAdd: UInt32;
      SegmentLength: Int32;
      SegmentType: UInt8;
      i: Int32;
    begin
      //const ui32 * RWEntriesLoc = reinterpret_cast<const ui32 *>(FDef+BaseOffset);
  
  
negative.code: 
    PEntry: PDefEntry;
  
    procedure ReadType0;
    var
      row: Int32;
    begin
      for row:=0 to SpriteHeight - 1 do
      begin
        SkipIfPositive(LeftMargin);
  
        AStream.Read(FBuffer[ftcp+row * Int32(h.FullWidth)],SpriteWidth);
  
        SkipIfPositive(RightMargin);
      end;
  