Repair & Schematics
Neo Geo AES

Graphics Rendering (Neo Geo AES)

10min

When you get issues with the Neo Geo not rendering correctly it is good to know how the screen generally renders.

The Neo Geo has various layers and graphics overlays.

A great site for much more technical details is https://wiki.neogeodev.org/īģŋ

Fix Layer

The fix layer is a tile-based layer, which supports transparency and always overlaps sprites.

The fix layer is non-scrollable. It is often used for text, HUDs, scores and health bars.

The tiles are 8x8 pixels. They can be grouped into meta-tiles of 16x16 and 32x32.

The tiles are stored in the S ROM (Static ROM).

In some MVS systems, there is a DIP32 IC labelled SFIX (System FIX) ROM. It is a 64KiB or 128KiB ROM containing the default fix layer tileset loaded into S ROM and used to display menus and text when no cartridge is inserted.

As well as the LSPC handling the fix layer, the NEO-B1 handles the fix layer and reads in the FIXDC pins from the cartridge slot directly.

Fix Layer
Fix Layer
īģŋ

Sprites

The sprites are all drawn below the fix layer. This is for everything else including backgrounds, characters, objects, bullets, effects and anything else that is not on the fix layer.

Sprites are stored in the C ROMs.

Sprites are made of tiles (called characters) from the C ROMs on the cartridge.

Tiles are always 16x16 pixels in size and can contain 15 colors (the color index 0 is used for transparency).

Sprite Layer
Sprite Layer
īģŋ

When combined (Fix + Sprite Layers) you end up with the final image.

Fix + Sprite Layers
Fix + Sprite Layers
īģŋ

L0 ROM

The L0 ROM is a 64KiB (or 128KiB with A16 tied to ground) ROM chip.

It is either a DIP28 TC531000, a SOP32 TC531001 or integrated into the NEO-GRC2 (on M1VS and CDZ for example).

The L0 ROM stores byte values used by LSPC to shrink sprites vertically.

Faults in the L0 ROM lead to vertical stretching or shrinking issues.

Pins / Trace Routes

It is useful to understand where some of the data, address and control pins go to from the cartrige and how they relate to the graphics.

P Bus Pins

The P Bus (labelled PCx on schematic nets) is the C ROM (Sprites) and S ROM (Fix Layer) addresses going between the cartridge slot and LSPC, as well as several other places.

The P Bus is a multiplexed address lane that has the C ROM And S ROM addresses and goes to the LSPC Px pins.

68k Address / Data Pins

The address and data pins for the cartridge (labelled ACx and DCx on the schematic nets) go to the 68k as well as the LSPC Ax and Dx pins.

Fix Layer Data Pins

The fix layer data pins from the cartrigde (labelled FIXDCx on the schematic nets) go to the NEO-B1 which is the graphics processor for the fix layer.

LSPC

The LSPC / LSPC2 is the Line SPrite Controller. It is responsible for generating S ROM, C ROM and L0 ROM addresses based on current display line and VRAM content.

As well as this is also generates Sync output, talks to the NEO-B1, generates 68k IRQs and handles 68k VRAM access arbitration.

The P Bus, 68k Data/Address pins and many other pins from the cartridges all go to the LSPC.

Example Layers

Here are a few more examples of the fix layer and sprite layers separated, and then the final image.

This is from Metal Slug X on the MVS.

Document image
īģŋ
Sprite Layer 2
Sprite Layer 2
īģŋ
Final Image 2
Final Image 2
īģŋ

And another one in game.

Fix Layer 3
Fix Layer 3
īģŋ
Sprite Layer 3
Sprite Layer 3
īģŋ
Final Image 3
Final Image 3
īģŋ

īģŋ