Like many other 2D systems from that era, the NeoGeo doesn't have a full frame buffer for rendering but only line buffers.
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
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.
When rendering is complete, the pairs of buffers are flipped and the rendered buffer shifts its pixels out in a linear manner for display.
The NeoGeo ancestor, the Alpha68k, used 8 fast SRAM chips.