anchor.diff:  
     ScrollAdv := (SCROLLSPEED + fGameApp.GameSettings.ScrollSpeed / 3) * aFrameTime / 100; //1-5 tiles per second
   
  -  PrevScrollPos := (PrevScrollPos + 1) mod length(PrevScrollAdv) + 1; //Position in ring-buffer
  -  PrevScrollAdv[PrevScrollPos] := ScrollAdv; //Replace oldest value
  -  for Temp := 1 to length(PrevScrollAdv) do //Compute average
  -    ScrollAdv := ScrollAdv + PrevScrollAdv[Temp];
  -  ScrollAdv := ScrollAdv / Length(PrevScrollAdv);
  -
  -  Temp := 0; //That is our bitfield variable for directions, 0..12 range
  +  fPrevScrollPos := (fPrevScrollPos + 1) mod Length(fPrevScrollAdv); //Position in ring-buffer
  +  fPrevScrollAdv[fPrevScrollPos] := ScrollAdv; //Replace oldest value
  +  for I := Low(fPrevScrollAdv) to High(fPrevScrollAdv) do //Compute average
  +    ScrollAdv := ScrollAdv + fPrevScrollAdv[I];
  +  ScrollAdv := ScrollAdv / Length(fPrevScrollAdv);
  +
  +  I := 0; //That is our bitfield variable for directions, 0..12 range
     //    3 2 6  These are directions
     //    1 * 4  They are converted from bitfield to actual cursor constants, see Arr array
     //    9 8 12
  
positive.code:   ScrollAdv: Single;
    CursorPoint: TKMPointI;
    ScreenBounds: TRect;
    Temp:byte;
    MousePos: TPoint;
  begin
    {$IFDEF MSWindows}
  
negative.code:     fTopHill: Single;
      fPosition: TKMPointF;
      fScrolling: Boolean;
      fPrevScrollAdv: array [0..24] of Single;
      fPrevScrollPos: Byte;
      fViewportClip: TPoint;
      fViewRect: TKMRect;
      fZoom: Single;
  