Line buffers

From NeoGeo Development Wiki
Jump to navigation Jump to search

Like many other 2D systems from that era, the NeoGeo doesn't have a full frame buffer for rendering but only line buffers.

Operation

The 384 pixels of a complete raster line are stored in a pair of buffers: one for even pixels, one for odd pixels. Each buffer is at least 192 pixels long, with 12-bit depth (8-bit palette + 4-bit color index).

There are two of these pairs, to allow flipping them between the rendering and output phases.

  • Pair A, even pixels
  • Pair A, odd pixels
  • Pair B, even pixels
  • Pair B, odd pixels

Rendering phase

During rendering, the sprites pixels are written one by one in the buffers at different X positions. Overlapping sprites just overwrite the previously written pixels. Special logic is used to select which odd or even buffer must be used for each pixel.

Note that the fix layer is rendered in real time: it isn't copied to line buffers but overlaid during output.

Output phase

When rendering is complete, the pairs of buffers are flipped and the rendered buffer shifts its pixels out in a linear manner for display.

Physical location

They are made of RAM cells located in either the (PRO-C0 and PRO-B0) or NEO-B1 chips.

The NeoGeo ancestor, the Alpha68k, used 8 fast SRAM chips.