anchor.diff:  
   ;;;; Sprites: How do they work?
   
  +(declaim (inline make-sprite))
   (defstruct sprite
     (x           0 :type u8)
     (y           0 :type u8)
  
positive.code:              (when (plusp (logand initial 1))
                 (incf first #x1000))
               (list first (1+ first)))))))
  
  ;;;; Graphics Cards: How do they work?
  
  
negative.code:   (mask      0 :type u8)
    (status    0 :type u8)
    (oam-addr  0 :type u8)
    (cycles    0 :type u8)
    (scroll    '(:x 0 :y 0 :next :x))
    (addr      '(:val 0 :next :hi))
    (meta      '(:scanline 0 :buffer 0 :x 0 :y 0)))
  
  (defmethod initialize-instance :after ((ppu ppu) &key)
    ; TODO: handle variable size nametables in vram, stuff in oam, based on mapper.
  