VDP2 (Saturn)

From Sega Retro

(Redirected from VDP2 32-bit background and scroll plane video display processor)
This article needs cleanup.
This article needs to be edited to conform to a higher standard of article quality. After the article has been cleaned up, you may remove this message. For help, see the How to Edit a Page article.
315-5690 VDP2 01.jpg
VDP2 (Saturn)

Video Display Processor 2 (VDP2) is one of two graphics processing units housed within the Sega Saturn console. It is a custom integrated circuit used only in Saturn hardware, and the Saturn-derived Sega Titan Video arcade hardware.

VDP2 is typically responsible for rendering "background" graphics. It works in conjunction with a second graphics processor, VDP1, to render an image onto the screen.

The existence of VDP2 was unusual even for its day, as most graphical processing systems rely on a single chip to handle both foregrounds and backgrounds. The Saturn's choice to delegate these two "layers" to different processors can lead to greater performance at the expense of simplicity. The VDP2 is designed to render relatively large graphics, rotating, scaling and translating their contents at high speeds. With clever manipulation, its features can fulfill other roles, such as creating various visual effects, including transparency effects, something the "foreground" processor, VDP1, had issues with.

This article needs to be rewritten.
This article needs to be rewritten to conform to a higher standard of article quality. After the article has been rewritten, you may remove this message. For help, see the How to Edit a Page article.

The VDP 2 serves as the Sega Saturn's background processor. Certain special effects such as texture transparency and playfield rotation and scrolling (up to five fields at any given time) are handled here.

Both the VDP2 and VDP1 32-bit video display processor have direct access to the both SH2s, as well as direct memory access (DMA) to both the main and video RAM.


The VDP2 was based on Sega System 32 technology, itself an evolution of Super Scaler technology. The VDP2's tiled infinite plane engine uses tilemap compression and a form of scanline/tiled rendering. It draws large 2D background planes and/or large 3D textured infinite planes (for things such as grounds, seas, walls, ceilings, skies, etc.) with perspective correction and a virtually unlimited draw distance, at a very high fillrate for its time. It is also capable of effects such as transparency, parallax scrolling, water, fire, fog, heat haze, etc.

The VDP2 can render up to four 2D planes and one 3D plane,[1] or two 3D planes.[2] One 3D plane is capable of three-axis rotation, while the other is capable of two-axis rotation.[3] The 3D planes can be manipulated as polygon objects,[4] with perspective transformation calculations,[5] essentially making the 3D planes two very large polygons. The VDP2 has its own internal geometry processing unit for rotating and transforming 3D planes.

The VDP2 draws perspective-correct 3D infinite planes as large as 4096×4096 pixels, with a fillrate of over 500 megapixels/sec, significantly larger than what other console or PC hardware were capable of with polygons at the time. It requires 1 million textured 500-pixel polygons/sec to draw a textured 4096×4096 infinite plane at 30 FPS; the Dreamcast was the first home system capable of doing this with polygons, as it was the first home system with a polygon fillrate exceeding 500 megapixels/sec. If the VDP2 is used for drawing infinite planes, this frees up the VDP1's polygons for other 3D assets, whereas other home systems at the time needed to draw many polygons to construct 3D planes (with very limited draw distance compared to the VDP2).

The VDP2 also has full transparency, which does not affect the VDP2's performance. It could make up for the VDP1's transparency issue, either by VDP1 sprites/polygons using the VDP2 palette, or by using a VDP2 bitmap layer as an additional transparent framebuffer, copying transparent assets from the VDP1 framebuffer to a VDP2 bitmap framebuffer layer (e.g. the transparent polygons in Burning Rangers). A faster technique for transparency was multi-texturing, applying a VDP2 layer as a transparent overlay for certain VDP1 polygon objects (e.g. Sonic R).

The VDP2's tiled infinite plane engine, which could draw large 3D infinite planes with a much higher draw distance, texture details and fillrate than polygons at the time, was unfamiliar to most developers who relied on polygons to construct 3D planes. Sega's first-party 3D games often utilized the VDP2, but the hardware's complexity and difficult 3D development environment led to most third-party developers only utilizing the VDP1, just a portion of the Saturn's power, for 3D games. While the VDP2 was under-utilized for 3D games, it was frequently used for 2D games, where the VDP1 draws sprites and the VDP2 draws scrolling backgrounds. The Saturn's combination of a VDP1 sprite framebuffer and VDP2 parallax scrolling backgrounds made it both more powerful and straightforward to program 2D graphics, compared to other 3D systems which draw all 2D graphics to a single framebuffer.

Unlike the VDP1's polygons, the VDP2's 3D rotation planes lack hardware lighting or Gouraud shading capabilities, but it is possible to approximate these with the VDP2's color gradient capabilities. The VDP2 also has shadow capabilities, which the VDP1 struggles with. It is also possible to program software lighting for VDP2 planes, such as ambient lighting (e.g. Panzer Dragoon Saga).

Technical specifications

See also Sega Saturn/Technical specifications
  • VDP2 @ 57.27272 MHz: Handles background, scroll and 3D rotation planes[6]
  • Versions: Sega 315‑5890 (Yamaha) Video Display Processor 2 (VDP2),[7] Yamaha 315‑5690 VDP2[8]
  • Video clock rate: 26.8426–28.63636 MHz (NTSC), 26.6564–28.4375 MHz (PAL)[9][10]
  • Memory clock rate: 53.6852–57.27272 MHz (NTSC), 53.3128–56.875 MHz (PAL)[fn 1]
  • VDP2 cores: 4 parallel cores (17 units), 28.63636 MHz per core[13]
  • Bus control
  • H/V counter & timing generator
  • Scroll picture block: 8 units (Normal picture coordinate calculation, Rotation picture coordinate calculation, Pattern name control, Window control, Character control, Line picture control, VRAM control, Dot data control)
  • Video process: 7 units (Color offset & shadow, Output data control, Color computing control, Color RAM, Priority control, Color RAM control, Sprite control)
  • Background engine
  • Four simultaneous scrolling backgrounds
  • Uses 8x8 or 16x16 tiles or bitmap display per background
  • Programmable memory access controller for VDP2 VRAM
  • Two simultaneous rotating playfields
  • VDP2 can rotate VDP1 framebuffer position while scanning out to display for rotation effects
  • Color RAM supports 15-bit (32768 colors) and 24-bit (16.7 million colors) display modes
  • Programmable priority at the per-background / per-tile / per-pixel levels
  • Background color tinting/fading, and transparency effects
  • Background blur effect (gradation) to simulate distance
  • 3D infinite planes: Can be manipulated as large polygon objects,[4] with perspective transformation[5][19] and rotation. Can have curved surface and bumps,[20] and be used for grounds, walls, ceilings, seas, skies, etc.
  • Visual effects: Water, fire, fog, heat haze, misting, reflective water surfaces[21]
  • Programmable display resolution:
  • Horizontal sizes of 320, 352, 640, 704 pixels
  • Vertical sizes of 224, 240, 256 scanlines, non-interlaced
  • Vertical sizes of 448, 480, 512 scanlines, interlaced (only PAL consoles support 256 and 512 scanline displays)
  • Hi-Vision (EDTV) and 31KHz (VGA) display support:
  • 31KHz: 320x480 or 640x480, non-interlaced (progressive scan)
  • Hi-Vision: 352x480 or 704x480, non-interlaced (progressive scan) (requires compatible monitor and video cable)
  • Rotation picture coordinate calculation: Geometry processing unit within Scroll picture block,[13] rotation and transformation of 3D planes,[5] manipulates 3D planes as very large polygons,[4] 24-bit fixed-point operations,[5] 28.63636 MOPS (million operations per second)
  • Planes: 7 layers, 2–6 simultaneous layers (1–4 scrolling 2D backgrounds, 1–2 rotating 3D playfields, 1 back screen)[15][1][22]
  • 2D scrolling backgrounds: Scrolling, parallax scrolling, single-axis 2D rotation[23]
  • NBG0: 16–16,777,216 colors, tilemap (1024×1024 to 2048×2048) or bitmap (512×256 to 1024×512), column/row/line scrolling, scaling
  • NBG1: 16–32,768 colors, tilemap (1024×1024 to 2048×2048) or bitmap (512×256 to 1024×512), column/row/line scrolling, scaling
  • NBG2/NBG3: 16–256 colors, tilemap (1024×1024 to 2048×2048)
  • RBG0: 16–16,777,216 colors, tilemap (2048×2048 to 4096×4096) or bitmap (512×256 to 512×512)
  • RBG1: 16–16,777,216 colors, tilemap (2048×2048 to 4096×4096)
  • Back screen: 1 plain background,[24] 1 to 240 colors (1 color/scanline)
  • Tile capabilities: 8×8 and 16×16 tile sizes,[1] scroll plane up to 8192×8192 pixels,[25] rotating 3D infinite planes up to 4096×4096 pixels each,[22] tile compression, tile-based texture compression, tiled rendering, virtually unlimited draw distance
  • Bitmap capabilities: Bitmap layers can be used as additional framebuffer[26] (with full transparency), displays VDP1 framebuffer as additional bitmap layer, can rotate VDP1 framebuffer[27]
  • Color palette: 16,777,216 colors (24-bit), 32,768 colors (15-bit), 65,536 colors (15-bit with transparency)
  • Colors per plane: 16,777,216 colors (3 planes, Lo-Res), 32,768 colors (4 planes), 16–256 colors (6 planes)[28][29]
  • 2D scrolling planes: 26.8426–229.09088 MPixels/s
  • 16,777,216 colors on screen: 26.8426–28.63636 MPixels/s[fn 2]
  • 32,768 colors per plane: 53.6852–57.27272 MPixels/s[fn 3]
  • 256 colors per plane: 107.3704–114.54544 MPixels/s[fn 4]
  • 16 colors per plane: 214.7408–229.09088 MPixels/s[fn 5]
  • 3D rotation planes: 26.8426–28.63636 MPixels/s[fn 6]
  • 2D scrolling planes: 251.65824–503.31648 MPixels/s[fn 8]
  • Tile fillrate: 3,932,160 tiles/sec, 65,536 tiles per frame[fn 9]
  • 3D rotating playfields: 251.65824–503.31648 MPixels/s[fn 10]
  • Effective polygon fillrate: 1 million texture-mapped polygons/sec (500-texel polygons)


  1. 4 system cycles per per display pixel,[10] 8 VDP2 memory cycles per lo-res display pixel, 4 VDP2 memory cycles per hi-res display pixel,[11] VDP2 memory clock twice as high as system clock, 16-bit access per memory cycle[12]
  2. 2 memory cycles per pixel (8 memory cycles per 4 pixels)[11][30]
  3. 1 pixel per memory cycle (4 pixels per 4 memory cycles)[11][30]
  4. 2 pixels per memory cycle (4 pixels per 2 memory cycles)[11][30]
  5. 4 pixels per memory cycle[11][30]
  6. 2 memory cycles per pixel (8 memory cycles per 4 pixels)[11][30]
  7. 4096×4096 texel texture, 1024×1024 texel texture, 30 frames per second[31]
  8. 1024×1024 to 2048×2048 pixel tilemaps
  9. 4x 128×128 tiles[22]
  10. 2048×2048 to 4096×4096 texel textures