anchor.diff:  
           Cardinals: array[0..255] of Cardinal;
           CardinalsDiagonal: array[0..255] of Cardinal;
  -        Singles: array[0..255] of Single;
  -        SinglesDiagonal: array[0..255] of Single;
  +      case Boolean of
  +        False: (
  +                 Singles: array[0..255] of Single;
  +                 SinglesDiagonal: array[0..255] of Single;
  +                );
  +         True: (SingleValues: array[0..1, 0..255] of Single);
         end;
         Starts: record
           Buffer: TCPFBuffer;
  
positive.code:     RaiseCoordinates(S.X, S.Y, 'finish');
      Exit;
    end;
  
    // test excluded points coordinates
    FinishX := Params.Finish.X;
  
negative.code:     // allocate start node
      Node := AllocateHeuristedNode(StartPoint.X, StartPoint.Y);
      StartPoint.Node := Node;
      // pathless start tile
      // todo
      if (Node.NodeInfo and FLAG_KNOWN_PATH <> 0) then
      begin
        StartPoint.AttainableNode := Node;
  