Skip to content
Techniques & Technology

Character Graphics

Building worlds from 8×8 blocks

Character graphics used redefined text characters as game graphics, enabling colourful displays with minimal memory on systems designed primarily for text.

C64zx-spectrumbbc-microVIC-20 graphicsmemorytechnique 1977–present

Overview

Before dedicated graphics hardware, computers displayed text using character sets—grids of 8×8 pixel patterns. Programmers realised they could redefine these characters to create game graphics, building entire worlds from 256 small tiles. The technique was memory-efficient and surprisingly flexible.

How it works

Standard text mode

ElementDescription
Screen memoryOne byte per character position
Character ROM256 pre-defined 8×8 patterns
DisplayROM pattern at screen position

Custom characters

ChangeResult
Point to RAMUse custom definitions
Define 8 bytesCreate 8×8 tile
Reference by numberDisplay anywhere

Memory efficiency

Display methodMemory for 40×25 screen
Bitmap (mono)8,000 bytes
Bitmap (colour)8,000+ bytes
Character mode1,000 + 2,048 (charset)

Character mode uses far less RAM.

C64 implementation

Pointing to custom charset

    lda #$1c        ; Bits 1-3 select charset
    sta $d018       ; Character at $3000

Defining a character

; Character 0 = solid block
    lda #$ff
    sta $3000       ; Row 0
    sta $3001       ; Row 1
    ; ... continue for 8 rows

Building game screens

Tile-based levels

Tile numberRepresents
0Empty space
1Ground
2Brick
3Ladder
4-7Decorations

Screen composition

Level data: 32 × 8 = 256 bytes per screen
Charset: 64 tiles × 8 = 512 bytes
Total: 768 bytes vs 8KB bitmap

Multicolour character mode

On C64:

  • Each character uses 4 colours
  • Half horizontal resolution
  • Richer graphics
  • 160×200 effective pixels

Animation techniques

Character cycling

Animate by changing character definitions:

  • Water ripples
  • Fire flickering
  • Blinking lights

Character swapping

Change which character displays:

  • Player animation frames
  • Different tiles same position

Platform variations

PlatformCharactersColours
C64256Per-character
Spectrum256Per-8×8 block
BBC Micro256Mode-dependent
VIC-20256Per-character

Limitations

LimitationWorkaround
8×8 grid alignmentSprite overlay
256 character maxBank switching
Colour restrictionsCareful palette

Notable uses

GameCharacter graphics use
Boulder DashEntire playfield
Impossible MissionBackgrounds
Manic MinerLevel tiles
Most platformersBackground scenery

See also