This is the final part of this little research about hardware and graphics capabilities of old generation consoles, we will cover the 32-bit and 64-bit generation consoles specs comparison, evaluating Sega Saturn, Sony Playstation and Nintendo 64 hardware-wise. As an extra bonus, I'm also adding the Gameboy Advance to the list, having a 32-bit cpu! Maybe it's a bit unfair, but it's the last full 2D console produced, so at least we could compare its 2D graphics capabilities to the others.
I could also have added the Atari Jaguar, 3DO and Amiga CD32 but I'm running out of time lately. Anyway, if someone else want to keep doing this for the next generations of consoles, I will be happy to follow the discussion in the forum ;)
But first, if you missed the other parts, you can check generation comparisons here:
- Part 1: 8-bit Generation
- Part 2: 16-bit Generation
As for the other topics I tried to search for every information I could find on the web, trying to be as accurate as possible but, again, feel free to post corrections and report errors if needed.
Let's start!
Hardware Comparison: Saturn Vs PSX Vs N64 Vs Gameboy Advance
Saturn | PSX | N64 | Gameboy Advance | |
|
||||
Producer |
Sega |
Sony |
Nintendo |
Nintendo |
Year |
1994 |
1994 |
1996 |
2001 |
Lifespan |
1994-2000 |
1994-2006 |
1996-2002 |
2001-2008 |
Media |
CD-ROM | up to 680 MB |
CD-ROM | up to 680 MB |
ROM Cartridge | 4 MB ~ 64 MB |
ROM Cartridge | 4 MB ~ 32 MB |
Bit-Generation |
32-bit |
32-bit |
64-bit |
32-bit |
CPU |
2x Hitachi SH-2 | 32-bit | 28.63 MHz | 50 MIPS (in total) |
Sony R3000A | 32-bit | 33.86 MHz | 33 MIPS |
NEC VR4300 | 64-bit | 93.75 MHz | 125 MIPS |
ARM7TDMI | 32-bit | 16.78 MHz | 28 MIPS |
CPU Co-Processors |
SCU Geometry DSP | 32-bit | 14.31 MHz | 84 MIPS |
Sony GTE | 32-bit | 33.86 MHz | 66 MIPS |
- |
Sharp LR35902 | 8-bit | 4.19 MHz / 8.38 MHz |
RAM |
2 MB onboard + 4 MB optional (expansion cartridge) |
2 MB onboard |
4 MB onboard (unified) + 4 MB optional (expansion pak) |
32 KB onboard + 256 KB external |
GPU |
Sega/Hitachi VDP1 315-5883 | 32-bit | 28.63 MHz |
Sony/Toshiba GPU | 32-bit | 33.86 MHz |
NEC/SGI RCP | 64-bit | 62.5 MHz |
Embedded PPU | 16-bit | 16.78 MHz |
GPU Co-Processors |
- | - |
NEC/SGI RDP | 64-bit | 62.5 MHz |
- |
VRAM |
1.5 MB |
1 MB |
512 KB exclusive |
96 KB |
Texture Cache |
512 KB |
2 KB |
4 KB |
- |
Gamepad |
DPAD + 8 Buttons (A, B, C, X, Y, Z, SL, SR) + 1 Service Button (START) |
DPAD + 6 Buttons (CROSS, CIRCLE, SQUARE, TRIANGLE, SL, SR) + 2 Service Buttons (START, SELECT) |
DPAD + 1 Analog STICK + 8 Buttons (A, B, UP, DW, LX, RX, SL, SR) + 1 Trigger (Z) + 1 Service Button (START) |
DPAD + 4 Buttons (A, B, SL, SR) + 2 Service Buttons (START, SELECT) |
Max Players |
2 Players |
2 Players |
4 Players |
1 Player |
[About SATURN Hardware]
SCU Geometry DSP: Handles vector and matrix calculations, 3D point transformations, lighting, geometry and coordinate transformations. That's a powerful co-processor that unfortunately required assembly-only for coding and it's estimated to have been used by only the 15~20% of games (profiling on emulators). Having both the SH-2 CPU a DSP Math core, often they were preferred for those type of calculations despite being slower in this task.
VDP1: Handles sprite/texture and polygonal drawing, color calculation and shading of geometry. It used it's own framebuffer.
VDP2: Handles backgrounds, 2D special effects, 2D scrolling and 3D rotation planes with texture perspective correction. It accessed the VDP1 framebuffer (at any stage) to read it and then writing to its own framebuffer to compose the final image output.
[About PSX Hardware]
GTE (Geometry Transform Engine): Handles vector and high-speed matrix multiplications, lighting, geometry, polygon and coordinate transformations.
GPU: Handles display of graphics, controls its own framebuffer, drawing of polygons and textures (3D Engine), 2D graphics processing (Sprite Engine).
MDEC: Handles fullscreen, high quality FMV, decompression of images and video into VRAM.
[About N64 Hardware]
RSP: Handles transform, clipping, lighting calculations and triangles setup. It featured programmable microcode, default microcodes were Fast3D (for accuracy) and Turbo3D (for performance). Nintendo encouraged devs to use Fast3D for better quality polygons over its rivals, purposely limiting the maximum number of polygons on screen, while with Turbo3D the GPU could have rendered many more polygons at Saturn/PSX quality levels.
RDP: Handles the 3D fixed-pipeline and pixel drawing engine (including z-buffering), performs rasterization and drawing or texturing of pixels in the framebuffer. It used its own framebuffer and the texture cache.
2D Specs:
Saturn | PSX | N64 | Gameboy Advance | |
Color Palette |
16.7M colors |
16.7M colors |
16.7M colors |
32’768 colors |
Max Colors on Screen |
16.7M (VDP1) | 32’768 (VDP2) |
16.7M |
32’768 |
512 |
Max Sprites on Screen* |
8000 |
4000 |
6000 |
1024 |
Max Sprites/Sec* |
500’000 |
240’000 |
400’000 |
- |
Max Sprite Size |
504x255 |
256x256 |
1024x256 |
64x64 |
Max Resolution |
704x512 |
640x480 |
640x480 |
240x160 |
Parallax Scrolling |
5 Scrolling Planes implemented in hardware, multiple scrolling layers (vertical and horizontal) |
1 Scrolling Plane implemented in hardware, multiple scrolling layers, 3D Engine emulated scrolling (vertical and horizontal) |
3D Pipeline emulated scrolling (vertical and horizontal) |
4 Scrolling Planes implemented in hardware, multiple scrolling layers, line/tile scrolling (vertical and horizontal) |
Special 2D FX |
Background and Sprite Scaling and Rotation (hardware), Basic/True-Transparency Fx (Dithering or Alpha Blending with VDP1, Per-Pixel Transparency with VDP2), Warping Fx, Distortion Fx, Flipping Fx, Fog Fx, Heat Fx, Misting Fx, Reflective Surfaces Fx, Full Motion Video |
Background and Sprite Scaling and Rotation (only using 3D Engine), True-Transparency Fx (Alpha Blending), Warping Fx, Fading Fx, Full Motion Video, Framebuffer Fx |
Background and Sprite Scaling (with sprite-microcode or by using the 3D Pipeline) and Rotation (only using the 3D Pipeline), True-Transparency Fx (Alpha Blending), Framebuffer Fx |
Color Cycling and Swapping, Tile Animation, Sprite/Tile Flip, Wobble Fx, Shearing Fx, True-Transparency (Alpha Blending, hardware), Mosaic Fx (hardware), Windowing Fx (hardware), Background and Sprite Scaling and Rotation (hardware), Bitmap Mode with full frame image at 32’768 colors (hardware), 3D Rendering (software) |
Max 2D Pixel Fill-Rate |
84 MPixels/sec (VDP1+VDP2) |
33 MPixels/sec (using 3D Engine) or 67 MPixels/sec (using Sprite Engine) |
62 MPixels/sec |
- |
* Theoretical peak numbers.
Some examples of 2D graphics output comparison:
Saturn | PSX | N64 | Gameboy Advance |
[SATURN 2D/Sprite Implementation]
Sprites and 3D-Primitive/Shapes are handled both in the same way, being made of quads, the machine considered 3D-Objects like they were “meshes of transformed/distorted sprites”. VDP1 can render up to 8000 sprites on screen at peak with transformations, can apply additional effects such as true-transparency (alpha blending, limited use) or basic-transparency (dithering), while VDP2 blended it all together with its 3D infinite planes (Mode7-like planes), backgrounds and parallax scrolling.
[PSX 2D/Sprite Implementation]
The machine managed sprites in two ways, using the Sprite Engine by issuing sprite-commands for rendering up to 4000 sprites at peak but without transformations, a sprite is composed of a 2D quad, or by using the 3D Engine for rendering actual 3D flat-textured quads (2x triangles) as sprites.
[N64 2D/Sprite Implementation]
The machine managed sprites in two ways, using the sprite-microcode (Sprite Lib) for rendering up to 6000 sprites at peak with scaling only, a sprite is composed of a 2D quad, or by using the 3D Pipeline for rendering actual 3D flat-textured quads (2x triangles) as sprites.
[GBA 2D/Sprite Implementation]
This system had a standard 2D Tile/Sprite engine, as previous generations consoles, rendering on the fly per scanline.
3D Specs:
Saturn | PSX | N64 | |
3D Primitive* |
Quads |
Triangles |
Triangles |
Hardware T&L** |
yes |
yes |
yes |
Polygon Accuracy |
Low/Medium Polygon Accuracy (resulting in less seams between polygons) |
Low Polygon Accuracy (resulting in seams between polygons) |
High/Medium Polygon Accuracy, based on selected microcode (resulting in seamless polygons) |
Features |
Alpha Blending (limited), Dithering, Luminance, Shadows, Clipping, Wire-Frame, Flat Shading, Gouraud Shading (additive), Forward Texture Mapping (bilinear approximation), Multi-Texturing (VDP2), 3D Lighting, Colored Light Sourcing, 2x Textured 3D Infinite Planes (VDP2) |
Alpha Blending, Dithering, Clipping, Wire-Frame, Flat Shading, Gouraud Shading (multiplicative), Affine Texture Mapping (linear approximation), 3D Lighting, Colored Light Sourcing, Mask Bit, Fog Depth Cueing, Motion-Blur Fx, Render to Texture, Offscreen Rendering, Adjustable Framebuffer, Framebuffer Fx |
Alpha Blending, Anti-Aliasing, Z-Buffering, Mip-Mapping, Clipping, Wire-Frame, Flat Shading, Gouraud Shading (additive), Texture Mapping (Linear/Bilinear/Trilinear Filtering), Perspective Correction, 3D Lighting, Colored Light Sourcing, Fog, LoD management, Motion-Blur Fx, Render to Texture, Offscreen Rendering, Framebuffer Fx |
Max Polygons / Sec*** |
1'800'000 poly/sec |
1'300'000 poly/sec |
2'000'000 poly/sec |
Polygons / Sec with Flat-Shading |
240'000 poly/sec |
360'000 poly/sec |
600'000 poly/sec |
Polygons / Sec with Texturing |
120'000 poly/sec |
180'000 poly/sec |
300'000 poly/sec |
Polygons / Sec with Lighting and additional features |
60'000 poly/sec |
90'000 poly/sec |
150'000 poly/sec |
Max 3D Pixel Fill-Rate |
28 MPixels/sec (VDP1) |
33 MPixels/sec |
62 MPixels/sec |
Max Frame-Rate |
60 FPS |
60 FPS |
60 FPS |
* To render the equivalent of a quad the other systems would have used 2x triangles.
** It's not a modern hardware Transform & Lighting, at the time T&L was implemented in software while running on a dedicated co-processor.
*** Theoretical peak numbers, referred to calculated/transformed-only polygons not drawn on screen.
[SATURN]: With its dual CPUs in master/slave configuration, each with a DSP core, a dedicated math co-processor and two different GPUs, one for 2D/3D (polygons and sprites rendering) and the other for 2D only (special effects, backgrounds and parallax scrolling), this machine was flexible, powerful but yet very difficult to develop for. Master SH-2 could pass instructions to Slave SH-2, while the SCU DSP could run in parallel, however, each one needed to sync on access to the same memory and bus. Also, the two VDP were very different from each other, with VDP1 in charge of filling the framebuffer while the other in need of drawing it too. The most important issue, above all, was the very limited SDK libraries Sega distributed to developers at start, absolutely not capable of using at best this highly parallelized machine. Most notably, in the first version of the SDK, there were no reference on how to use and program the SCU DSP, which required assembly in any case. The result was that the first generation of games used only 1x SH-2 and VDP1 while have been estimated that of all games released, only 15~20% used the SCU DSP effectively. Subsequently, the SDK was rewrote and optimized, finally letting developers to fully use the hardware at its best.
[PSX]: A powerful straightforward 2D/3D-capable machine that could easily handle dynamic lighting with multiple colored light-sourcing, true transparency in both 2D and 3D games and a solid fast 3D engine for innovative special effects such as motion blur and fog. Developers side, it was the easiest of the 3 to code for, thanks to very high quality libraries developed by Sony Computer Entertainment simply available from the start. It hadn't a dedicated 2D graphic processing unit like the Saturn nor an advanced sprite-based rendering system, but thanks to its Sprite Engine and the ability to easily elaborate the framebuffer this was more than enough to reach highest levels in 2D based games.
[N64]: A powerhouse in heavy computational tasks and very advanced in 3D rendering, it featured many novel 3D features for the time, such as Z-Buffering and Mip-Mapping, Anti-Aliasing, and a very effective hardware-based "Level of Details" (LoD) system. It didn't feature a dedicated graphic processing unit for 2D and the microcode and libraries for 2D graphics weren't much advanced for the task, in comparison to its rivals, but this was only a Nintendo's choice, such as the one to limit its polygonal output on screen in favor of a more accurate polygons rendering or for the use of ROM cartridge instead of CD-ROM, which limited space for more detailed textures, images and prevented it from having Full Motion Video in games, an highly spectacular feature at the time.
[GBA]: Historically the last true full-2D system released on the market, it featured a fast ARM-based CPU and a secondary CPU for compatibility with original Gameboy and Gameboy Color games. With its tile/sprite based hardware rendering was able to output many colorful sprites on screen, outclassing any previous 2D machine while inheriting all the 2D features and special effects from the SNES, although at a lower resolution, thanks to its enhanced 16-bit PPU. Moreover, its 32-bit CPU was capable of 3D software rendering at higher performance then previous generation 3D chips (SVP and SFX), reaching an estimated peak of 4'000 poly/sec with shading and texture mapping at an acceptable framerate (in few games, like V-Rally 3 and Monkey Ball).
Some examples of 3D graphics output comparison:
Saturn | PSX | N64 | Gameboy Advance |
These additional data may help to understand the evolution of graphics quality in games through the years, thanks to improved libraries and better knowledge of the hardware by developers at the time. Data may contain some inaccuracies and have been rounded.
Saturn Games:
Year | FPS | Polygons / Sec* | Dynamic Lighting | |
Virtua Fighter |
1994 |
30 |
~42'000 poly/sec |
yes |
Daytona USA |
1995 |
20 |
~30'000 poly/sec |
none |
Virtua Racing |
1995 |
60 |
~86'000 poly/sec |
yes |
Virtua Fighter 2 |
1995 (late) |
60 |
~50'000 poly/sec |
none |
Fighting Vipers |
1996 (late) |
60 |
~55'000 poly/sec |
yes |
Sonic R |
1997 |
30 |
~60'000 poly/sec |
yes |
* Data obtained from Yabause emulator’s profiler while running games.
* SATURN used quads while PSX and N64 used triangles, to draw a quad they used 2x triangles.
** All polygons / sec data include polygons drawn by frame + polygons calculated (transformed) and submitted to the GPU but not seen (clipped), to approximate polygons / sec effectively drawn, reduce by a 30~35% these raw values. Eg. for Daytona USA, the Yabause emulator reports about ~ 19k poly/sec effectively drawn.
PSX Games:
Year | FPS | Polygons / Sec* | Dynamic Lighting | |
Ridge Racer |
1994 |
30 |
~90'000 poly/sec |
none |
Toshinden |
1994 |
30 |
~90'000 poly/sec |
none |
MotorToon GP2 |
1996 |
30 |
~82'000 poly/sec |
yes |
Tobal 2 |
1997 |
60 |
~90'000 poly/sec |
yes |
Tekken 3 |
1997 |
60 |
~95'000 poly/sec |
yes |
Ridge Racer Hi-Spec Demo** |
1998 |
60 |
~120'000 poly/sec |
none |
* Data obtained from official profiling documentation, developers declarations or deducted by scenes/characters poly-count ripped from the games.
** Only 2 cars on screen (instead of 5)
*** All polygons / sec data include polygons drawn by frame + may include polygons calculated (transformed) and submitted to the GPU but not seen (clipped). Eg. for MotorToon GP2 the PSX Profiler Analyzer manual from Polyphony Digital reports about ~55k poly/sec effectively drawn.
N64 Games:
Year | FPS | Polygons / Sec* | Dynamic Lighting | |
Super Mario 64 |
1996 |
30 |
~100'000 poly/sec |
yes |
F-Zero X |
1998 |
60 |
~160'000 poly/sec |
yes |
Perfect Dark |
2000 |
20~30 |
~150'000 poly/sec |
yes |
* Data deducted by scenes/characters poly-count ripped from the games.
** All polygons / sec data include polygons drawn by frame + may include polygons calculated (transformed) and submitted to the GPU but not seen (clipped).
---------------------------------------------------------------------------------------------
So, in your opinion which was the best hardware of the 32/64-bit generation?
Which console had the most impressive 2D graphics or 3D visuals?
Which one had the best overall 2D/3D graphics for the time?
Just choose based on your personal preferences for 2D graphics, 3D graphics or overall 2D/3D visuals.
Let the 32/64-bit war begin (again)!
Last edited by JimmyFantasy - on 27 August 2023