anchor.diff:    (with-accessors ((oam ppu-oam)) ppu
       (loop with count = 0 with result = (make-array 8 :initial-element nil)
          for i from 0 to 64 for sprite = (from-oam oam i)
  -       when (on-scanline sprite ppu (getf (ppu-meta ppu) :scanline))
  +       when (on-scanline sprite ppu)
          do (if (< count 8)
                 (setf (aref result count) i
                       count (1+ count))
  
positive.code:                (palette-index (logand (read-vram ppu (+ #x3f00 tile-color)) #x3f)))
            (get-color palette-index)))))
  
  (defun get-sprite-pixel (ppu sprites x opaque-p)
    ; TODO
    )
  
  (defun on-top (x y)
    y ; TODO: determine sprite priority
  
negative.code:       :above
        :below))
  
  (defmethod on-scanline ((sprite sprite) ppu)
    (let ((scanline (getf (ppu-meta ppu) :scanline)))
      (if (< scanline (sprite-y sprite))
          nil
          (ecase (sprite-size ppu)
            (:8 (< scanline (+ (sprite-y sprite) 8)))
            (:16 (< scanline (+ (sprite-y sprite) 16)))))))
  
  (defmethod in-bounding-box ((sprite sprite) ppu x &optional y)
    (and (>= x (sprite-x sprite))
         (< x (+ (sprite-x sprite) 8))
         (on-scanline sprite ppu)))
  
  (defmethod tiles ((sprite sprite) ppu)
    (let ((base (pattern-table-addr ppu)))
  