anchor.diff:    KM_PathFindingAStarOld, KM_PathFindingAStarNew, KM_PathFindingJPS,
     KM_Projectiles, KM_AIFields, KM_NetworkTypes,
     KM_Main, KM_System, KM_GameApp, KM_RenderPool, KM_GameInfo, KM_GameClasses,
  -  KM_Terrain, KM_HandsCollection, KM_HandSpectator, KM_MapEdTypes,
  +  KM_Terrain, KM_TerrainTypes, KM_HandsCollection, KM_HandSpectator, KM_MapEdTypes,
     KM_MissionScript, KM_MissionScript_Info, KM_MissionScript_Standard,
     KM_GameInputProcess_Multi, KM_GameInputProcess_Single,
     KM_Resource, KM_ResSound, KM_ResWares, KM_ResTypes,
  
positive.code: 
  //Saves the game in TKMemoryStream
  procedure TKMGame.SaveGameToStream(aTimestamp: TDateTime; aHeaderStream, aBodyStream: TKMemoryStream);
  var
    gameInfo: TKMGameInfo;
    I, netIndex: Integer;
  
negative.code: begin
    gameInfo := TKMGameInfo.Create;
  
    // Pre-allocate memory for save stream, could save up to 25% of save time
    // Even if we make a bad guess, Stream will reallocate more by itself, if needed
    if fLastSaveStreamSize = 0 then
      sizeToAllocate := gTerrain.MapX * gTerrain.MapY * SizeOf(TKMTerrainTile) + EXTRA_ALLOC_FOR_SAVE // Allocate a lot first time
    else
      sizeToAllocate := Round(fLastSaveStreamSize * 1.25); // Assume save didn't grow more then 1.25 times
  
    //@Rey: MakePOT here seems really superfluous or even harmfull, since we just eat a lot more memory for no good reason
    aBodyStream.SetSize({MakePOT(}sizeToAllocate{)});
  
    if aHeaderStream = nil then
      aHeaderStream := aBodyStream; //Write into the body stream, since we don't use compression
  