anchor.diff:    LookupLine(Format(FmtStr, Args));
   end;
   
  -procedure AddChildArray(WayX, WayY: Integer; Finalize: Boolean);
  +procedure AddChildArray(WayX, WayY: Integer; dXSmall, Finalize: Boolean);
   const
     CHILD_VALUES: array[0..7] of Word = (
       ((1 shl 0) shl 8) or (0 shl 4),
  
positive.code:     ((1 shl 6) shl 8) or (6 shl 4),
      ((1 shl 7) shl 8) or (7 shl 4)
    );
  var
    ChildList: TChildList;
    Child: PWord;
    WayChild, i: Integer;
    N1, N2: Byte;
    S: string;
  
    procedure AddChild(C: Byte);
    begin
      Child^ := CHILD_VALUES[C];
      Inc(Child);
    end;
  
  begin
  
negative.code:           if (Store.MapKindFlags <> 2) then
            begin
              // simple, diagonal, diagonalex
              if (X >= Y) then
              begin
                ChildNode.SortValue := {$ifdef CPUX86}ChildNode.{$endif}Path +
                   Cardinal(Y * Store.Info.HeuristicsDiagonal + (X - Y) * Store.Info.HeuristicsLine);
              end else
              begin
                ChildNode.SortValue := {$ifdef CPUX86}ChildNode.{$endif}Path +
                   Cardinal(X * Store.Info.HeuristicsDiagonal + (Y - X) * Store.Info.HeuristicsLine);
                ChildNode.NodeInfo := ChildNode.NodeInfo or FLAG_DX_SMALLER;
              end;
            end else
            begin
              // hexagonal
              ChildNode.NodeInfo := ChildNode.NodeInfo or Cardinal(((X - Y) shr (HIGH_NATIVE_BIT - 6)) and FLAG_DX_SMALLER);
              X := X - ((Mask xor PNativeInt(@Store.Info.FinishPoint)^) and Y and 1) - (Y shr 1);
              ChildNode.SortValue := {$ifdef CPUX86}ChildNode.{$endif}Path +
                 Cardinal(Store.Info.HeuristicsLine * (Y + (X and ((X shr HIGH_NATIVE_BIT) - 1))));
  