anchor.diff:    FallingTrees.LoadFromStream(LoadStream);
   
     for I := 1 to fMapY do
  -    for J := 1 to fMapX do
  -    begin
  -      ReadTileFromStream(LoadStream, tileBasic, GAME_REVISION_NUM);
  -      Land[I,J].BaseLayer := tileBasic.BaseLayer;
  -      Land[I,J].Height := tileBasic.Height;
  -      Land[I,J].Obj := tileBasic.Obj;
  -      Land[I,J].IsCustom := tileBasic.IsCustom;
  -      Land[I,J].BlendingLvl := tileBasic.BlendingLvl;
  -      Land[I,J].TileOverlay := tileBasic.TileOverlay;
  -      Land[I,J].LayersCnt := tileBasic.LayersCnt;
  -
  -      for L := 0 to 2 do
  -        Land[I,J].Layer[L] := tileBasic.Layer[L];
  -
  -      LoadStream.Read(Land[I,J].Passability, SizeOf(Land[I,J].Passability));
  -      LoadStream.Read(Land[I,J].WalkConnect, SizeOf(Land[I,J].WalkConnect));
  -      LoadStream.Read(Land[I,J].TreeAge);
  -      LoadStream.Read(Land[I,J].FieldAge);
  -      LoadStream.Read(Land[I,J].TileLock,SizeOf(Land[I,J].TileLock));
  -      LoadStream.Read(Land[I,J].JamMeter);
  -      LoadStream.Read(Land[I,J].TileOwner,SizeOf(Land[I,J].TileOwner));
  -      LoadStream.Read(Land[I,J].IsUnit, 4);
  -      LoadStream.Read(Land[I,J].IsVertexUnit,SizeOf(Land[I,J].IsVertexUnit));
  -    end;
  +    LoadStream.Read(Land[I,1], SizeOf(Land[I,1]) * fMapX);
   
     for I := 1 to fMapY do
       for J := 1 to fMapX do
  
positive.code:     procedure CopyCorners(aLayer: TKMTerrainLayer);
      procedure SwapCorners(aLayer: TKMTerrainLayer);
      procedure SetAllCOrners;
    end;
  
  
  
negative.code: begin
    for I := 0 to 3 do
      Result[I] := Corner[I];
  end;
  
  
  procedure TKMTerrainLayer.Save(aSaveStream: TKMemoryStream);
  begin
    aSaveStream.Write(Terrain);
    aSaveStream.Write(Rotation);
    aSaveStream.Write(Corners);
  end;
  
  
  