Run-length encoding replaces a run of one value with the value and how many times it repeats. Screens, tile maps, and tile patterns hold long runs, and the decoder is short enough to run while it writes to video memory.