anchor.diff:                       (logior (wrap-byte (getf meta :x)) x-base))))))))
   
   (defmethod read-vram ((ppu ppu) addr)
  -  (cond ((< addr #x2000) (get-mapper (nes-mapper *nes*) addr))
  +  (cond ((< addr #x2000) (aref (ppu-pattern-table ppu) addr))
           ((< addr #x3f00) (aref (ppu-nametable ppu) (logand addr #x07ff)))
           ((< addr #x4000) (aref (ppu-palette ppu) (logand addr #x1f)))
           (t (error "READ: invalid vram address ~a" addr))))
  
positive.code:   (:method ((ppu ppu)) ;; TODO: Mirroring. Scrolling?
      (let* ((bd-index (logand (read-vram ppu #x3f00) #x3f))
             (bd-color (get-color bd-index)))
        (dotimes (x (getf *resolution* :width))
          (let* ((bg-color (when (show-bg ppu)
                             (get-bg-pixel ppu x)))
                 (sprite-color (when (show-sprites ppu)
  
negative.code: (defmethod tiles ((sprite sprite) ppu)
    (let ((base (pattern-table-addr ppu)))
      (ecase (sprite-size ppu)
        (8 (logior (sprite-tile-index sprite) base))
        (16 (let* ((initial (sprite-tile-index sprite))
                    (first (logandc2 initial 1)))
               (when (plusp (logand initial 1))
                 (incf first #x1000))
  