VRAM

VRAM stand for Video RAM.

The NeoGeo has 128kByte (64k + *k in LSPC2-A2 ?) of VRAM (64kWords), which is used to store sprite attributes and the map for the fix layer. Contrary to other systems, the VRAM here does not contain actual graphics.

It isn't mapped in the 68k's address space. The only way to read and write to it is by using 3 Memory mapped registers. Data in VRAM is always seen as 16 bits words. Every address points to a word, not a byte.


 * $3C0000 (VRAM_ADDR) sets the VRAM address
 * $3C0002 (VRAM_RW) is the data to read or write
 * $3C0004 (VRAM_MOD) is the signed value added to the VRAM address after a write

Memory map

 * $0000 to $6FFF : SCB1
 * $7000 to $7FFF : Fix map
 * $8000 to $81FF : SCB2
 * $8200 to $8400 : SCB3
 * $8400 to $8600 : SCB4
 * $8600 to $FFFF : used by GPU, sprite display lists

VRAM can be modified at any time, even during active display.