anchor.diff:  
   ;;;; Sprite RAM/Object Attribute Memory (OAM)
   
  +(declaim (inline read-oam))
   (defmethod read-oam ((ppu ppu) addr)
     (aref (ppu-oam ppu) addr))
   
  
positive.code:                      (t #x2000))))
      (list base (mod x 32) (mod y 30))))
  
  (defun get-sprite (ppu index)
    (let ((base (* index 4)))
      (make-sprite :y          (1+ (read-oam ppu (+ 0 base)))
                   :tile-index (read-oam ppu (+ 1 base))
                   :attribute  (read-oam ppu (+ 2 base))
                   :x          (read-oam ppu (+ 3 base)))))
  
  (defun get-attrib (ppu base x y)
    (flet ((magic (x y) ; TODO: Why? Rename after enlightenment.
  
negative.code:             (top (logand (ash attr-byte -2) #x03))
              (left (logand (ash attr-byte -4) #x03))
              (t (logand (ash attr-byte -6) #x03))))))
  
  (defun get-bg-pixel (ppu x)
    (let* ((x (+ (getf (ppu-meta ppu) :x) x))
  