Sprites
------
  GameBoy video controller can display up to 40 sprites
 either in 8x8 or in 8x16 pixels. Because of a limitation
 of hardware, only ten sprites can be displayed per scan
 line. Sprite patterns have the same format as tiles, but
 they are taken from the Sprite Pattern Table located at
 $8000-8FFF and have unsigned numbering. Sprite
 attributes reside in the Sprite Attribute Table (OAM
 - Object Attribute Memory) at $FE00-FE9F. OAM is divided
 into 40 4-byte blocks each of which corresponds to a sprite.
  In 8x16 sprite mode, the least significant bit of the
 sprite pattern number is ignored and treated as 0.
  When sprites with different x coordinate values overlap,
 the one with the smaller x coordinate (closer to the left)
 will have priority and appear above any others.
  When sprites with the same x coordinate values overlap,
 they have priority according to table ordering. (i.e.
 $FE00 - highest, $FE04 - next highest, etc.)
  Please note that Sprite X=0, Y=0 hides a sprite. To
 display a sprite use the following formulas:
 SpriteScreenPositionX(Upper left corner of sprite) = SpriteX - 8
 SpriteScreenPositionY(Upper left corner of sprite) = SpriteY - 16
  To display a sprite in the upper left corner of the
 screen set sprite X=8, Y=16.
  Only 10 sprites can be displayed on any one line.
 When this limit is exceeded, the lower priority sprites
 (priorities listed above) won't be displayed. To keep
 unused sprites from affecting onscreen sprites set their
 Y coordinate to Y=0 or Y=>144+16. Just setting the X
 coordinate to X=0 or X=>160+8 on a sprite will hide it
 but it will still affect other sprites sharing the same
 lines.
 Blocks have the following
 format:
  Byte0  Y position on the screen
  Byte1  X position on the screen
  Byte2  Pattern number 0-255 (Unlike some tile
         numbers, sprite pattern numbers are unsigned.
         LSB is ignored (treated as 0) in 8x16 mode.)
  Byte3  Flags:
         Bit7  Priority
               If this bit is set to 0, sprite is displayed
               on top of background & window. If this bit
               is set to 1, then sprite will be hidden behind
               colors 1, 2, and 3 of the background & window.
               (Sprite only prevails over color 0 of BG & win.)
         Bit6  Y flip
               Sprite pattern is flipped vertically if
               this bit is set to 1.
         Bit5  X flip
               Sprite pattern is flipped horizontally if
               this bit is set to 1.
         Bit4  Palette number
               Sprite colors are taken from OBJ1PAL if
               this bit is set to 1 and from OBJ0PAL
               otherwise.