anchor.diff:  
   (defgeneric new-frame (ppu)
     (:method ((ppu ppu))
  -    (setf (getf (ppu-meta ppu) :scanline) 0)
  +    (setf (ppu-scanline ppu) 0)
       (set-in-vblank ppu 0)
       t))
   
   (defgeneric ppu-step (ppu to-cycle)
     (:method ((ppu ppu) to-cycle)
  -    (let ((cycles-per-scanline 114))
  -      (loop with result = '(:vblank-nmi nil :new-frame nil)
  -         for next-scanline = (+ (ppu-cycles ppu) cycles-per-scanline)
  -         until (> next-scanline to-cycle)
  -         do (progn
  -              (when (< (getf (ppu-meta ppu) :scanline) +height+)
  -                (render-scanline ppu))
  -              (incf (getf (ppu-meta ppu) :scanline))
  -              (case (getf (ppu-meta ppu) :scanline)
  -                (241 (setf (getf result :vblank-nmi) (start-vblank ppu)))
  -                (261 (setf (getf result :new-frame) (new-frame ppu))))
  -              (incf (ppu-cycles ppu) cycles-per-scanline))
  -         finally (return result)))))
  +    (with-accessors ((scanline ppu-scanline)) ppu
  +      (let ((cycles-per-scanline 114))
  +        (loop with result = '(:vblank-nmi nil :new-frame nil)
  +           for next-scanline = (+ (ppu-cycles ppu) cycles-per-scanline)
  +           until (> next-scanline to-cycle)
  +           do (progn
  +                (when (< scanline +height+)
  +                  (render-scanline ppu))
  +                (incf scanline)
  +                (case scanline
  +                  (241 (setf (getf result :vblank-nmi) (start-vblank ppu)))
  +                  (261 (setf (getf result :new-frame) (new-frame ppu))))
  +                (incf (ppu-cycles ppu) cycles-per-scanline))
  +           finally (return result))))))
  
positive.code:             (etypecase tile
                (fixnum
                 (let ((x (- x (sprite-x sprite)))
                       (y (- (getf (ppu-meta ppu) :scanline) (sprite-y sprite))))
                   (when (flip-h sprite) (setf x (- 7 x)))
                   (when (flip-v sprite) (setf y (- 7 y)))
                   (setf pattern-color (get-pixel-color ppu :sprite tile x y))))
  
negative.code:   (scroll-next   :x  :type keyword)
    (addr          0   :type u16)
    (addr-next     :hi :type keyword)
    (buffer        0   :type u8)
    (scanline      0   :type u16)
    (cycles        0   :type fixnum)
    (meta          '(:x 0 :y 0)))
  
  ;;;; PPU Register methods
  
  