anchor.diff:          Break;
         end;
   
  -      // path
  +      // path of current --> child
         TileWeights := Store.Info.TileWeights[ChildNodeInfo and 1];
         Path := TileWeights[NodeInfo shr 24];
  -      Inc(Path, TileWeights[ChildNodeInfo shr 24{Cell.Tile}]);
  +      Inc(Path, TileWeights[ChildNodeInfo shr 24]);
  +
  +      // Path test
  +      // todo
  +
  +      // from start point path
         Path := Store.Current.Path + (Path shr 1);
   
         // if node is exists
  
positive.code:   next_current:
      Node := Store.Current.Node.Next;
    current_initialize:
      Store.Current.Node := Node;
      Store.Current.Path := Node.Path;
      if (Store.Current.Path = High(Cardinal)) then
      begin
        Result := False;
        Exit;
      end;
  
      // cell
      NodeInfo{XY} := Cardinal(Node.Coordinates);
      Cardinal(Store.Current.Coordinates) := NodeInfo{XY};
      Cell := @Store.Info.Cells[(NativeInt(NodeInfo{XY}) shr 16) + Store.Info.MapWidth * Word(NodeInfo{XY})];
      Store.Current.Cell := Cell;
  
      // lock
  
negative.code:   Dest := Src;
  end;
  
  function TPathMap.DoFindPath(MapSelf: Pointer; StartNode: PPathMapNode): PPathMapNode;
  label
    nextchild, child_tobuffer, next_current, current_initialize;
  const
    DELTA_CLEAR_MASK = not Cardinal(((1 shl 4) - 1) shl 3);
    X86EXISTS_CLEAR_MASK = Integer(not 1);
    COUNTER_OFFSET = 16;
  type
  