Difference between revisions of "VDP2 (Saturn)"

From Sega Retro

Line 45: Line 45:
 
** Versions: Sega 315‑5890 ([[Yamaha]]) Video Display Processor 2 (VDP2),{{ref|[https://github.com/mamedev/mame/blob/master/src/mame/drivers/saturn.cpp Sega Saturn (MAME)]}} Yamaha 315‑5690 VDP2{{fileref|Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf}}
 
** Versions: Sega 315‑5890 ([[Yamaha]]) Video Display Processor 2 (VDP2),{{ref|[https://github.com/mamedev/mame/blob/master/src/mame/drivers/saturn.cpp Sega Saturn (MAME)]}} Yamaha 315‑5690 VDP2{{fileref|Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf}}
 
** Adjustable video clock rate: 28.6364 MHz (NTSC), 28.4375 MHz (PAL)
 
** Adjustable video clock rate: 28.6364 MHz (NTSC), 28.4375 MHz (PAL)
* Features: Transparency (32 levels),{{fileref|ST-TECH.pdf|page=147}} shadowing, 2 windows for special calculations,{{ref|[https://github.com/mamedev/mame/blob/master/src/devices/video/stvvdp2.cpp STV VDP2 (MAME)]}} matrix calculations,{{fileref|ST-058-R2-060194.pdf|page=163}} 3D infinite planes (grounds, seas, walls, ceilings, skies, etc.), can be manipulated as polygon objects,{{fileref|TUTORIAL.pdf|page=223}} visual effects (water, fire, fog, heat haze, etc.)
+
* Features: Transparency (32 levels of transparency, can also be applied to VDP1 polygons/sprites),{{fileref|ST-TECH.pdf|page=147}} shadowing, 2 windows for special calculations,{{ref|[https://github.com/mamedev/mame/blob/master/src/devices/video/stvvdp2.cpp STV VDP2 (MAME)]}} matrix calculations{{fileref|ST-058-R2-060194.pdf|page=163}}
 +
** 3D infinite planes: Can be manipulated as polygon objects,{{fileref|TUTORIAL.pdf|page=223}} used for grounds, walls, ceilings, seas, skies, etc.
 +
** Visual effects: Water, fire, fog, heat haze, misting, reflective water surfaces{{fileref|Edge UK 030.pdf|page=99}}
 
* Planes: 7 layers, 2–6 simultaneous layers (1–4 scrolling 2D backgrounds, 1–2 rotating 3D playfields, 1 back screen){{ref|[https://github.com/mamedev/mame/blob/master/src/devices/video/stvvdp2.cpp STV VDP2 (MAME)]}}{{fileref|ST-058-R2-060194.pdf|page=24}}{{fileref|ST-058-R2-060194.pdf|page=132}}
 
* Planes: 7 layers, 2–6 simultaneous layers (1–4 scrolling 2D backgrounds, 1–2 rotating 3D playfields, 1 back screen){{ref|[https://github.com/mamedev/mame/blob/master/src/devices/video/stvvdp2.cpp STV VDP2 (MAME)]}}{{fileref|ST-058-R2-060194.pdf|page=24}}{{fileref|ST-058-R2-060194.pdf|page=132}}
 
** 2D scrolling backgrounds: Scrolling, parallax scrolling, single-axis 2D rotation{{fileref|13-APR-94.pdf|page=12}}
 
** 2D scrolling backgrounds: Scrolling, parallax scrolling, single-axis 2D rotation{{fileref|13-APR-94.pdf|page=12}}

Revision as of 08:27, 23 October 2016

VDP2 1st version.

Video Display Processor 1 (VDP1) 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 - while VDP2 is designed to render relatively large graphics, rotating, scaling and translating their contents at high speeds, with clever manipulation of its features it can fulfill other roles, such as helping create various visual effects, including transparency effects for sprites and polygons, something the "foreground" processor, VDP1, struggled to do on its own.


Rewrite.svg
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.

  • 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

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)

Overview

The VDP2 was based on Sega System 32 technology (an evolution of Super Scaler technology). The VDP2's tiled infinite plane engine uses tilemap compression and a form of scanline/tiled rendering to draw large, detailed, 3D textured infinite planes (for things such as grounds, seas, walls, ceilings, skies, etc.), with perspective correction and a virtually unlimited draw distance (and capable of effects such as transparency, parallax scrolling, water, fire, fog, heat haze, etc.), at a very high effective fillrate for its time. The VDP2 draws 3D infinite planes with perspective correction as large as 4096×4096 pixels at 30 FPS, equivalent to a fillrate of over 500 MPixels/s, significantly larger than what any console or PC hardware were capable of with polygons at the time. It requires 1 million texture-mapped polygons/sec, with 500 pixels per polygon, 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 that exceeded 500 MPixels/s polygon fillrate (using tiled rendering). 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 effective transparency, which does not affect the VDP2's performance. It could make up for the VDP1's transparency issue, 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).

The VDP2's tiled infinite plane engine, which could draw large 3D infinite planes with a much higher draw distance, texture details and effective 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.

Technical specifications

  • VDP2 32-bit background and scroll plane video display processor @ 28.6364 MHz: Handles background, scroll and 3D rotation planes[1]
    • Versions: Sega 315‑5890 (Yamaha) Video Display Processor 2 (VDP2),[2] Yamaha 315‑5690 VDP2[3]
    • Adjustable video clock rate: 28.6364 MHz (NTSC), 28.4375 MHz (PAL)
  • Features: Transparency (32 levels of transparency, can also be applied to VDP1 polygons/sprites),[4] shadowing, 2 windows for special calculations,[5] matrix calculations[6]
    • 3D infinite planes: Can be manipulated as polygon objects,[7] used for grounds, walls, ceilings, seas, skies, etc.
    • Visual effects: Water, fire, fog, heat haze, misting, reflective water surfaces[8]
  • Planes: 7 layers, 2–6 simultaneous layers (1–4 scrolling 2D backgrounds, 1–2 rotating 3D playfields, 1 back screen)[5][9][10]
    • 2D scrolling backgrounds: Scrolling, parallax scrolling, single-axis 2D rotation[11]
      • 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)
    • 3D rotating playfields: Scrolling, scaling, dual-axis 3D rotation,[11] 3D infinite ground planes, perspective correct 3D rotation, can be manipulated as polygon objects[7]
      • 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,[12] 1 to 240 colors (1 color/scanline)
  • Tilemap capabilities: 8×8 and 16×16 tile sizes,[9] scroll plane up to 8192×8192 pixels,[13] rotating 3D infinite planes up to 4096×4096 pixels each,[10] tile compression, tiled rendering, virtually unlimited draw distance
  • Bitmap capabilities: Bitmap layers can be used as additional framebuffer[14] (with full transparency), displays VDP1 framebuffer as additional bitmap layer, can rotate VDP1 framebuffer[15]
  • 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)[16][17]
  • Bitmap fillrate:[18][19]
    • 2D scrolling planes: 14.21875–114.5456 MPixels/s
      • 16,777,216 colors on screen: 14.3182 MPixels/s (NTSC), 14.21875 MPixels/s (PAL), 2 cycles/pixel
      • 32,768 colors per plane: 28.6364 MPixels/s (NTSC), 28.4375 MPixels/s (PAL), 1 pixel/cycle
      • 256 colors per plane: 57.2728 MPixels/s (NTSC), 56.875 MPixels/s (PAL), 2 pixels/cycle
      • 16 colors per plane: 114.5456 MPixels/s (NTSC), 113.75 MPixels/s (PAL), 4 pixels/cycle
    • 3D rotating playfield: 14.3182 MPixels/s (NTSC), 14.21875 MPixels/s (PAL), 2 cycles/pixel
  • Tilemap fillrate: 2x 128×128 to 512×512 tiles/frame, 1.96608–7.86432 million tiles/sec
    • 2D scrolling planes: 2x 1024×1024 to 2048×2048 pixels/frame, 125.82912–503.31648 MPixels/s (effective fillrate)
    • 3D rotating playfields: 2048×2048 to 4096×4096 pixels/frame, 251.65824–503.31648 MPixels/s (effective fillrate)
      • Effective polygon fillrate: 1 million texture-mapped polygons/sec, 500 texels/polygon

References