Difference between revisions of "VDP2 (Saturn)"

From Sega Retro

m (Text replacement - "{{fileref\|Edge UK 0([1-9][0-9])\.pdf\|page=(.*)}}" to "{{magref|edge|$1|$2}}")
 
(35 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[image:315-5690_VDP2_01.jpg|thumb|VDP2 1st version.]]
+
{{cleanup}}
'''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.
+
{{ICBob
 +
| image=315-5690_VDP2_01.jpg
 +
| title=
 +
| designer=
 +
| date=
 +
}}
 +
'''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 (Saturn)|VDP1]], to render an image onto the screen.
 
VDP2 is typically responsible for rendering "background" graphics. It works in conjunction with a second graphics processor, [[VDP1 (Saturn)|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 [[sprite]]s and polygons, something the "foreground" processor, VDP1, struggled to do on its own.
+
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.
  
  
Line 15: Line 21:
  
 
==Overview==
 
==Overview==
The VDP2 was based on [[Sega System 32]] technology (an evolution of [[Super Scaler]] technology). The VDP2's tiled infinite plane engine uses [[wikipedia:Tile engine|tilemap]] compression and a form of [[wikipedia:Scanline rendering|scanline]]/[[wikipedia:Tiled rendering|tiled rendering]] to draw large, detailed, 3D textured infinite planes (for things such as grounds, seas, walls, ceilings, skies, etc.), with [[wikipedia:Texture mapping#Perspective correctness|perspective correction]] and a virtually unlimited [[wikipedia:Draw distance|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 [[wikipedia:Texture mapping#Perspective correctness|perspective correction]] as large as 4096×4096 pixels at 30 FPS, equivalent to a fillrate of over 500 [[Pixel|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 was based on [[Sega System 32]] technology, itself an evolution of [[Super Scaler]] technology. The VDP2's tiled infinite plane engine uses [[wikipedia:Tile engine|tilemap]] compression and a form of [[wikipedia:Scanline rendering|scanline]]/[[wikipedia:Tiled rendering|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 [[wikipedia:Texture mapping#Perspective correctness|perspective correction]] and a virtually unlimited [[wikipedia:Draw distance|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 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]]''). Another technique for transparency was to simulate [[wikipedia:Multitexturing|multi-texturing]], by applying a transparent overlay (e.g. ''[[Sonic R]]'').
+
The VDP2 can render up to four 2D planes and one 3D plane,{{fileref|ST-058-R2-060194.pdf|page=24}} or two 3D planes.{{fileref|TUTORIAL.pdf|page=41}} One 3D plane is capable of three-axis rotation, while the other is capable of two-axis rotation.{{ref|''[[Sega DTS Saturn official documentation|Sega DTS]]'', March 1996, Dual Rotating Background Demos}} The 3D planes can be manipulated as polygon objects,{{fileref|TUTORIAL.pdf|page=223}} with [[wikipedia:3D projection|perspective transformation]] calculations,{{fileref|ST-TECH.pdf|page=165}} 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'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 [[sprite]]s 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.
+
The VDP2 draws perspective-correct 3D infinite planes as large as 4096×4096 pixels, with a fillrate of over 500 [[Pixel|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 [[wikipedia:Multitexturing|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 [[sprite]]s 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 [[wikipedia:Gouraud shading|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]]'').
 
Unlike the VDP1's polygons, the VDP2's 3D rotation planes lack hardware lighting or [[wikipedia:Gouraud shading|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==
 
==Technical specifications==
 +
:''See also [[Sega Saturn/Technical specifications]]''
 +
 
{{multicol|
 
{{multicol|
* VDP2 @ 28.63636 MHz: Handles background, scroll and 3D rotation planes{{fileref|ST-058-R2-060194.pdf}}
+
* VDP2 @ 57.27272 MHz: Handles background, scroll and 3D rotation planes{{fileref|ST-058-R2-060194.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}}
+
:* 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.63636 MHz (NTSC), 28.4375 MHz (PAL)
+
:* Video clock rate: 26.8426–28.63636 MHz (NTSC), 26.6564–28.4375 MHz (PAL){{fileref|ST-013-R3-061694.pdf|page=52}}{{intref|Sega Saturn hardware notes (2004-04-27)}}
* VDP2 cores: 4 parallel cores (17 units),{{fileref|Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf|page=38}} 114.5456 million operations/sec{{ref|28.4375 MHz per core|group=fn}}
+
:* Memory clock rate: 53.6852–57.27272 MHz (NTSC), 53.3128–56.875 MHz (PAL){{ref|4 system cycles per per display pixel,{{intref|Sega Saturn hardware notes (2004-04-27)}} 8 VDP2 memory cycles per lo-res display pixel, 4 VDP2 memory cycles per hi-res display pixel,{{fileref|ST-TECH.pdf|page=142}} VDP2 memory clock twice as high as system clock, 16-bit access per memory cycle{{fileref|ST-058-R2-060194.pdf|page=162}}|group=fn}}
** Bus control
+
* VDP2 cores: 4 parallel cores (17 units), 28.63636 MHz per core{{fileref|Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf|page=38}}
** H/V counter & timing generator
+
:* Bus control
** 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)
+
:* H/V counter & timing generator
** Video process: 7 units (Color offset & shadow, Output data control, Color computing control, Color RAM, Priority control, Color RAM control, Sprite control)
+
:* 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)
* 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}} can simulate [[wikipedia:Multitexturing|multi-texturing]],{{intref|Sonic R}} color gradient
+
:* Video process: 7 units (Color offset & shadow, Output data control, Color computing control, Color RAM, Priority control, Color RAM control, Sprite control)
** Background engine
+
* 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}} [[wikipedia:Multitexturing|multi-texturing]],{{intref|Sonic R}} [[wikipedia:Bump mapping|bump mapping]],{{ref|[https://farm6.staticflickr.com/5628/23262355633_f3b5b12bb0_b.jpg Pure Entertainment Interview]}} color gradients
** Four simultaneous scrolling backgrounds
+
:* Background engine
** Uses 8x8 or 16x16 tiles or bitmap display per background
+
:* Four simultaneous scrolling backgrounds
** Programmable memory access controller for VDP2 VRAM
+
:* Uses 8x8 or 16x16 tiles or bitmap display per background
** Two simultaneous rotating playfields
+
:* Programmable memory access controller for VDP2 VRAM
** VDP2 can rotate VDP1 framebuffer position while scanning out to display for rotation effects
+
:* Two simultaneous rotating playfields
** Color RAM supports 15-bit (32768 colors) and 24-bit (16.7 million colors) display modes
+
:* VDP2 can rotate VDP1 framebuffer position while scanning out to display for rotation effects
** Programmable priority at the per-background / per-tile / per-pixel levels
+
:* Color RAM supports 15-bit (32768 colors) and 24-bit (16.7 million colors) display modes
** Background color tinting/fading, and transparency effects
+
:* Programmable priority at the per-background / per-tile / per-pixel levels
** Background blur effect (gradation) to simulate distance
+
:* Background color tinting/fading, and transparency effects
** 3D infinite planes: Can be manipulated as large polygon objects,{{fileref|TUTORIAL.pdf|page=223}} with [[wikipedia:3D projection|perspective transformation]]{{ref|1=''[[Mass Destruction]]'', [https://www.youtube.com/watch?v=sNL07BtCWUw developer note]}} and rotation. Can have curved surface and bumps,{{ref|''[[Sega DTS Saturn official documentation|Sega DTS]]'', March 1996, Coefficient Table Madness Demo}} and be used for grounds, walls, ceilings, seas, skies, etc.
+
:* Background blur effect (gradation) to simulate distance
** Visual effects: Water, fire, fog, heat haze, misting, reflective water surfaces{{fileref|Edge UK 030.pdf|page=99}}
+
:* 3D infinite planes: Can be manipulated as large polygon objects,{{fileref|TUTORIAL.pdf|page=223}} with [[wikipedia:3D projection|perspective transformation]]{{fileref|ST-TECH.pdf|page=165}}{{ref|1=''[[Mass Destruction]]'', [https://www.youtube.com/watch?v=sNL07BtCWUw developer note]}} and rotation. Can have curved surface and bumps,{{ref|''[[Sega DTS Saturn official documentation|Sega DTS]]'', March 1996, Coefficient Table Madness Demo}} and be used for grounds, walls, ceilings, seas, skies, etc.
 +
:* Visual effects: Water, fire, fog, heat haze, misting, reflective water surfaces{{magref|edge|30|99}}
 
* Programmable display resolution:
 
* Programmable display resolution:
** Horizontal sizes of 320, 352, 640, 704 pixels
+
:* Horizontal sizes of 320, 352, 640, 704 pixels
** Vertical sizes of 224, 240, 256 scanlines, non-interlaced
+
:* 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)
+
:* 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:
 
* Hi-Vision ([[EDTV]]) and 31KHz (VGA) display support:
** 31KHz: 320x480 or 640x480, non-interlaced (progressive scan)
+
:* 31KHz: 320x480 or 640x480, non-interlaced (progressive scan)
** Hi-Vision: 352x480 or 704x480, non-interlaced (progressive scan) (requires compatible monitor and video cable)
+
:* 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,{{fileref|Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf|page=38}} rotation and transformation of 3D planes,{{fileref|ST-TECH.pdf|page=165}} manipulates 3D planes as very large polygons,{{fileref|TUTORIAL.pdf|page=223}} 24-bit fixed-point operations,{{fileref|ST-TECH.pdf|page=165}} 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){{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}}
*** NBG0: 16–16,777,216 colors, [[wikipedia:Tile engine|tilemap]] (1024×1024 to 2048×2048) or [[wikipedia:Bitmap|bitmap]] (512×256 to 1024×512), column/row/line scrolling, scaling
+
::* NBG0: 16–16,777,216 colors, [[wikipedia:Tile engine|tilemap]] (1024×1024 to 2048×2048) or [[wikipedia:Bitmap|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
+
::* 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)
+
::* NBG2/NBG3: 16–256 colors, tilemap (1024×1024 to 2048×2048)
** 3D rotating playfields: Scrolling, scaling, dual-axis 3D rotation,{{fileref|13-APR-94.pdf|page=12}} 3D infinite ground planes, [[wikipedia:Texture mapping#Perspective correctness|perspective correct]] 3D rotation, can be manipulated as large polygon objects,{{fileref|TUTORIAL.pdf|page=223}} [[wikipedia:3D projection|perspective transformation]],{{ref|1=''[[Mass Destruction]]'', [https://www.youtube.com/watch?v=sNL07BtCWUw developer note]}} can have curved surface and bumps{{ref|''[[Sega DTS Saturn official documentation|Sega DTS]]'', March 1996, Coefficient Table Madness Demo}}
+
:* 3D rotating playfields: Scrolling, scaling, dual-axis 3D rotation,{{fileref|13-APR-94.pdf|page=12}} three-axis 3D rotation,{{ref|''[[Sega DTS Saturn official documentation|Sega DTS]]'', March 1996, Dual Rotating Background Demos}} 3D infinite ground planes, [[wikipedia:Texture mapping#Perspective correctness|perspective correct]] 3D rotation, can be manipulated as large polygon objects,{{fileref|TUTORIAL.pdf|page=223}} [[wikipedia:3D projection|perspective transformation]],{{fileref|ST-TECH.pdf|page=165}}{{ref|1=''[[Mass Destruction]]'', [https://www.youtube.com/watch?v=sNL07BtCWUw developer note]}} can have curved surface and bumps{{ref|''[[Sega DTS Saturn official documentation|Sega DTS]]'', March 1996, Coefficient Table Madness Demo}}
*** RBG0: 16–16,777,216 colors, tilemap (2048×2048 to 4096×4096) or bitmap (512×256 to 512×512)
+
::* 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)
+
::* RBG1: 16–16,777,216 colors, tilemap (2048×2048 to 4096×4096)
** Back screen: 1 plain background,{{fileref|ST-058-R2-060194.pdf|page=23}} 1 to 240 colors (1 color/scanline)
+
:* Back screen: 1 plain background,{{fileref|ST-058-R2-060194.pdf|page=23}} 1 to 240 colors (1 color/scanline)
* Tilemap capabilities: 8×8 and 16×16 tile sizes,{{fileref|ST-058-R2-060194.pdf|page=24}} scroll plane up to 8192×8192 [[pixel]]s,{{fileref|13-APR-94.pdf|page=28}} rotating 3D infinite planes up to 4096×4096 pixels each,{{fileref|ST-058-R2-060194.pdf|page=132}} tile compression, tiled rendering, virtually unlimited draw distance
+
* Tile capabilities: 8×8 and 16×16 tile sizes,{{fileref|ST-058-R2-060194.pdf|page=24}} scroll plane up to 8192×8192 [[pixel]]s,{{fileref|13-APR-94.pdf|page=28}} rotating 3D infinite planes up to 4096×4096 pixels each,{{fileref|ST-058-R2-060194.pdf|page=132}} tile compression, tile-based [[wikipedia:Texture compression|texture compression]], tiled rendering, virtually unlimited draw distance
 
* Bitmap capabilities: Bitmap layers can be used as additional framebuffer{{fileref|ST-058-R2-060194.pdf|page=54}} (with full transparency), displays VDP1 framebuffer as additional bitmap layer, can rotate VDP1 framebuffer{{fileref|ST-058-R2-060194.pdf|page=177}}
 
* Bitmap capabilities: Bitmap layers can be used as additional framebuffer{{fileref|ST-058-R2-060194.pdf|page=54}} (with full transparency), displays VDP1 framebuffer as additional bitmap layer, can rotate VDP1 framebuffer{{fileref|ST-058-R2-060194.pdf|page=177}}
 
* Color palette: 16,777,216 colors (24-bit), 32,768 colors (15-bit), 65,536 colors (15-bit with transparency)
 
* 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){{fileref|ST-058-R2-060194.pdf|page=79}}{{fileref|ST-058-R2-060194.pdf|page=360}}
+
:* Colors per plane: 16,777,216 colors (3 planes, Lo-Res), 32,768 colors (4 planes), 16–256 colors (6 planes){{fileref|ST-058-R2-060194.pdf|page=79}}{{fileref|ST-058-R2-060194.pdf|page=360}}
 
* Bitmap [[fillrate]]:
 
* Bitmap [[fillrate]]:
** 2D scrolling planes: 14.31818–114.54544 [[Pixel|MPixels/s]]
+
:* 2D scrolling planes: 26.8426–229.09088 [[Pixel|MPixels/s]]
*** 16,777,216 colors on screen: 14.31818 MPixels/s{{ref|2 cycles per pixel (8 cycles per 4 pixels){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
+
::* 16,777,216 colors on screen: 26.8426–28.63636 MPixels/s{{ref|2 memory cycles per pixel (8 memory cycles per 4 pixels){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
*** 32,768 colors per plane: 28.63636 MPixels/s{{ref|1 pixel per cycle (4 pixels per 4 cycles){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
+
::* 32,768 colors per plane: 53.6852–57.27272 MPixels/s{{ref|1 pixel per memory cycle (4 pixels per 4 memory cycles){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
*** 256 colors per plane: 57.27272 MPixels/s{{ref|2 pixels per cycle (4 pixels per 2 cycles){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
+
::* 256 colors per plane: 107.3704–114.54544 MPixels/s{{ref|2 pixels per memory cycle (4 pixels per 2 memory cycles){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
*** 16 colors per plane: 114.54544 MPixels/s{{ref|4 pixels per cycle{{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
+
::* 16 colors per plane: 214.7408–229.09088 MPixels/s{{ref|4 pixels per memory cycle{{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
** 3D rotating playfield: 14.31818 MPixels/s{{ref|2 cycles per pixel (8 cycles per 4 pixels){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
+
:* 3D rotation planes: 26.8426–28.63636 MPixels/s{{ref|2 memory cycles per pixel (8 memory cycles per 4 pixels){{fileref|ST-TECH.pdf|page=142}}{{fileref|ST-058-R2-060194.pdf|page=49}}|group=fn}}
* [[Fillrate|Effective tile fillrate]]: 125.82912–534.77376 MPixels/s{{ref|4096×4096 pixel texture, 1024×1024 pixel texture, 30 frames per second{{ref|1=[http://forums.sonicretro.org/?showtopic=30680&st=60 Sega Saturn interesting finds]}}|group=fn}}
+
* [[Fillrate|Tile fillrate]]: 251.65824–534.77376 MPixels/s{{ref|4096×4096 texel texture, 1024×1024 texel texture, 30 frames per second{{ref|1=[http://forums.sonicretro.org/?showtopic=30680&st=60 Sega Saturn interesting finds]}}|group=fn}}
** 2D scrolling planes: 125.82912–503.31648 MPixels/s{{ref|1024×1024 to 2048×2048 pixel tilemaps|group=fn}}
+
:* 2D scrolling planes: 251.65824–503.31648 MPixels/s{{ref|1024×1024 to 2048×2048 pixel tilemaps|group=fn}}
** 3D rotating playfields: 125.82912–503.31648 MPixels/s{{ref|2048×2048 to 4096×4096 texel textures|group=fn}}
+
::* Tile fillrate: 3,932,160 tiles/sec, 65,536 tiles per frame{{ref|4x 128×128 tiles{{fileref|ST-058-R2-060194.pdf|page=132}}|group=fn}}
** Effective polygon fillrate: 1 million texture-mapped polygons/sec (500-texel polygons)
+
:* 3D rotating playfields: 251.65824–503.31648 MPixels/s{{ref|2048×2048 to 4096×4096 texel textures|group=fn}}
 +
::* Effective polygon fillrate: 1 million texture-mapped polygons/sec (500-texel polygons)
 
}}
 
}}
  
Line 83: Line 98:
 
<references group="fn"/>
 
<references group="fn"/>
 
}}
 
}}
 +
 +
==Documentation==
 +
<gallery>
 +
ST-058-R2-060194.pdf|User's Manual (ST-058-R2-060194)
 +
</gallery>
  
 
==References==
 
==References==
Line 90: Line 110:
  
 
[[Category:Saturn hardware]]
 
[[Category:Saturn hardware]]
[[Category:Microchips]]
 

Latest revision as of 12:06, 30 May 2019

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


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.

Overview

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)

Footnotes

  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] 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] 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] 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] 2 pixels per memory cycle (4 pixels per 2 memory cycles)[11][30]]
  5. [4 pixels per memory cycle[11][30] 4 pixels per memory cycle[11][30]]
  6. [2 memory cycles per pixel (8 memory cycles per 4 pixels)[11][30] 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] 4096×4096 texel texture, 1024×1024 texel texture, 30 frames per second[31]]
  8. [1024×1024 to 2048×2048 pixel tilemaps 1024×1024 to 2048×2048 pixel tilemaps]
  9. [4x 128×128 tiles[22] 4x 128×128 tiles[22]]
  10. [2048×2048 to 4096×4096 texel textures 2048×2048 to 4096×4096 texel textures]

Documentation

References

  1. 1.0 1.1 1.2 File:ST-058-R2-060194.pdf, page 24
  2. File:TUTORIAL.pdf, page 41
  3. 3.0 3.1 [Sega DTS, March 1996, Dual Rotating Background Demos Sega DTS, March 1996, Dual Rotating Background Demos]
  4. 4.0 4.1 4.2 4.3 File:TUTORIAL.pdf, page 223
  5. 5.0 5.1 5.2 5.3 5.4 File:ST-TECH.pdf, page 165
  6. File:ST-058-R2-060194.pdf
  7. Sega Saturn (MAME)
  8. File:Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf
  9. File:ST-013-R3-061694.pdf, page 52
  10. 10.0 10.1 Sega Saturn hardware notes (2004-04-27)
  11. 11.0 11.1 11.2 11.3 11.4 11.5 File:ST-TECH.pdf, page 142
  12. File:ST-058-R2-060194.pdf, page 162
  13. 13.0 13.1 File:Sega Service Manual - Sega Saturn (PAL) - 013-1 - June 1995.pdf, page 38
  14. File:ST-TECH.pdf, page 147
  15. 15.0 15.1 STV VDP2 (MAME)
  16. File:ST-058-R2-060194.pdf, page 163
  17. Sonic R
  18. Pure Entertainment Interview
  19. 19.0 19.1 [Mass Destruction, developer note Mass Destruction, developer note]
  20. 20.0 20.1 [Sega DTS, March 1996, Coefficient Table Madness Demo Sega DTS, March 1996, Coefficient Table Madness Demo]
  21. Edge, "March 1996" (UK; 1996-02-09), page 99
  22. 22.0 22.1 22.2 File:ST-058-R2-060194.pdf, page 132
  23. 23.0 23.1 File:13-APR-94.pdf, page 12
  24. File:ST-058-R2-060194.pdf, page 23
  25. File:13-APR-94.pdf, page 28
  26. File:ST-058-R2-060194.pdf, page 54
  27. File:ST-058-R2-060194.pdf, page 177
  28. File:ST-058-R2-060194.pdf, page 79
  29. File:ST-058-R2-060194.pdf, page 360
  30. 30.0 30.1 30.2 30.3 30.4 File:ST-058-R2-060194.pdf, page 49
  31. Sega Saturn interesting finds