Game emulators take tiny 256x224 images and scale them up for monitors that display 1280x1024 or more. Simple scaling doesn't work well. Pixel duplication is blocky and bicubic interpolation blurs out the lovely crisp details of hand drawn game sprites. Worse, old games were meant to show on TVs with weird interlacing and blurring; it's hard to get the look right on a PC monitor.

Fine emulators have a diversity of algorithms for scaling images up. Eagle and 2xSal (aka sai2x) are the ones in common use. scale2x and hq3x are new and promising.

The underlying problem is creating the illusion of more information than is really present. All the algorithms above have the same basic idea; try to detect features like edges and scale them appropriately. This needs to work really fast; the code is usually a mess of MMX assembly.
  2003-10-18 20:00 Z