anchor.diff:                 (sprite-color (when (show-sprites ppu)
                                  (get-sprite-pixel ppu x bg-color)))
                  (color (pick-color bg-color sprite-color bd-color)))
  -          ;(put-pixel x (ppu-scanline ppu) color)
  -          (sdl:with-pixel (pixels (sdl:fp *screen*))
  -            (sdl:write-pixel pixels x (ppu-scanline ppu) color)))))))
  -
  -(defgeneric start-vblank (ppu)
  -  (:method ((ppu ppu))
  -    (set-in-vblank ppu 1)
  -    (set-sprite-zero-hit ppu 0)
  -    (when (vblank-nmi ppu) t)))
  -
  -(defgeneric new-frame (ppu)
  -  (:method ((ppu ppu))
  -    (setf (ppu-scanline ppu) 0)
  -    (set-in-vblank ppu 0)
  -    t))
  +          (sdl:with-pixel (screen (sdl:fp *screen*))
  +            (sdl:write-pixel screen x (ppu-scanline ppu) color)))))))
  +
  +(defun start-vblank (ppu)
  +  (set-in-vblank ppu 1)
  +  (set-sprite-zero-hit ppu 0)
  +  (when (vblank-nmi ppu) t))
  +
  +(defun new-frame (ppu)
  +  (setf (ppu-scanline ppu) 0)
  +  (set-in-vblank ppu 0)
  +  t)
   
   (defgeneric ppu-step (ppu to-cycle)
     (:method ((ppu ppu) to-cycle)
  
positive.code:          (result (read-vram ppu addr)))
      (incf (ppu-addr ppu) (vram-step ppu))
      (if (< addr #x3f00)
          (prog1
              (ppu-buffer ppu)
            (setf (ppu-buffer ppu) result))
          result)))
  
  
negative.code: 
  ;;;; Colors
  
  (declaim (inline get-color))
  (defmethod get-color ((ppu ppu) vram-index)
    (let* ((color-index (logand (read-vram ppu vram-index) #x3f))
           (base (* color-index 3))
           (red   (aref *color-palette* (+ 2 base)))
           (green (aref *color-palette* (+ 1 base)))
           (blue  (aref *color-palette* (+ 0 base))))
      (logior (ash red 16) (ash green 8) blue)))
  
  (defmethod get-pattern-color ((ppu ppu) kind tile x y)
    (let ((offset (+ y (ash tile 4))))
  