3D Display Control

This chapter talks about the registers used to control the 3D display.

DISP3DCNT: 3D display control (0x4000060, R/W)

Bit(s)Description
0Texture mapping enable (0=Disable, 1=Enable)
1Shading polygon attribute (0=Toon Shading, 1=Highlight Shading)
2Alpha test (0=Disable, 1=Enable) (see ALPHA_TEST_REF)
3Alpha blending (0=Disable, 1=Enable)
4Anti-aliasing (0=Disable, 1=Enable)
5Edge marking (0=Disable, 1=Enable) (see EDGE_COLOR)
6Fog color alpha mode (0=Alpha and color, 1=Only alpha) (see FOG_COLOR)
7Fog enable (0=Disable, 1=Enable)
8-11Fog depth shift (FOG_STEP = 0x400 >> FOG_SHIFT) (see FOG_OFFSET)
12Framebuffer RDLINES underflow (0=None, 1=Underflow)
13Polygon/vertex RAM overflow (0=None, 1=Overflow)
14Rear plane mode (0=Use clear color, 1=Bitmap)
15-31Unused

To fill the screen: X1=0, Y1=0, X2=255, Y2=191

Note that coordinate (0, 0) is the bottom-left corner of the screen, while ht is the upper-left corner of the screen in the 2D graphics engine.

DISP_1DOT_DEPTH: 1-dot polygon render depth (0x4000610, W)

When a polygon is too small or too far away it is reduced to a single pixel on the screen. This register will determine the cutoff distance that the 3D engine will use to determine whether to render them or not.

Bit(s)Description
0-14Max W value (12.3 unsigned fixed point)
15-31Unused

This check can be enabled on a per-polygon basis with bit 13 of POLYGON_ATTR.

The comparison always uses the W coordinate regardless of the buffering mode.

ALPHA_TEST_REF: Alpha test reference (0x4000340, W)

When alpha test mode is enabled in DISP3DCNT, pixels will only be rendered if their alpha value is greater than the value in ALPHA_TEST_REF. Normally, when it is disabled, all pixels are rendered if their alpha value is greater than zero. A value of 31 will hide all polygons.

This test is done after applying texture and polygon transparency.

Bit(s)Description
0-4Alpha test reference (0…31)
5-31Unused