Since a byte of video RAM holds two pixels, each byte written to video memory must modify two bytes in my destination bitmap. The offset of 16 added to each pixel is to match the colors in my identity palette. Character graphics is where one or two bytes of video memory specify a character pattern retrieved from ROM by the video controller. This way, a screen full of graphics may require only 1 or 2K of RAM memory. Each character will typically map a 8x8 pixel character cell where one byte of the character memory specifies the pattern and another may specify the color.
Phoenix is an example of a character based video game.
Since the entire screen is mapped to only 1 or 2K of RAM, a slow 8-bit CPU is able to handle screen updates without having to modify very much memory. Since character graphics tend to be rather chunky and are not addressable on a pixel by pixel basis, one solution is to add what are generally called sprites. Sprites can number from a few to a hundred per game and are usually used for the moving objects. Sprites also have transparent parts so that their edges don't look like square black blocks and objects 'behind' them can be seen through holes in the object such as eyes. Mappy and Jr. PacMan are examples of games where characters can have priority over sprites.