anchor.diff:    (incf (sprite-x sp) dx)
     (incf (sprite-y sp) dy)
     (translate-shape (sprite-shape sp) dx dy)
  -  (bbox-translate (sprite-bbox sp) dx dy))
  +  (when (sprite-bbox sp) (bbox-translate (sprite-bbox sp) dx dy)))
   
   (defun move-sprite (sp x y)
     "Set sprite position."
  
positive.code: (defstruct sprite
    "On screen image with transform and animation capabilities."
    x y width height
    (bbox (make-bbox))
    shape
    texture
    (flip nil))      ;; TODO: handle :vertical, :horizontal or :both
  
  (defun create-sprite (x y width height texture)
    (let ((sp (make-sprite :texture texture
                           :x x :y y :width width :height height
                           :shape (create-rectangle-shape x y (+ x width) (+ y height)))))
      (bbox-overwrite/shape (sprite-bbox sp) (sprite-shape sp))
      sp))
  
  (defmethod (setf flip) (value (it sprite))
  
negative.code: 
  (defun rotate-sprite (sp dangle)
    (rotate-shape-2d (sprite-shape sp) dangle (sprite-x sp) (sprite-y sp))
    (when (sprite-bbox sp) (bbox-overwrite/shape (sprite-bbox sp) (sprite-shape sp))))
  
  ;;; Tilemap
  (defstruct tileset
  