Difference between revisions of "Sega Master System/Hardware comparison"
From Sega Retro
Line 282: | Line 282: | ||
! Colors per tile | ! Colors per tile | ||
| 16 colors (default), 2 colors (SG-1000 mode) | | 16 colors (default), 2 colors (SG-1000 mode) | ||
− | | 4 colors | + | | 4 colors (default), 7 colors (combining 2 tiles) |
| 3-9 colors (160×192 display), <br> 2-3 colors (320×192 display){{ref|[http://www.randomterrain.com/7800basic.html 7800basic Guide]}} | | 3-9 colors (160×192 display), <br> 2-3 colors (320×192 display){{ref|[http://www.randomterrain.com/7800basic.html 7800basic Guide]}} | ||
|- | |- |
Revision as of 15:35, 3 May 2019
- For technical details on the Sega Master System, see Sega Master System/Technical specifications.
This article presents a hardware comparison between the Sega Master System (SMS) and other rival systems in its time, most notably the NES. The article compares the technical specifications and hardware advantages/disadvantages between the systems.
Contents
Vs. Game Gear
As was tradition with Sega consoles at the time, the handheld Sega Game Gear is backwards compatible with the Master System and can run Master System carts through an adapter. The most noticeable hardware difference is the VDP's color palette allows selecting 32 out of 4,096 possible colors (12-bit). The Master System VDP has the same number of active colors, but can only select out of 64 colors (6-bit). Due to the higher color depth, the Game Gear has twice as much color RAM, and it doesn't use the same format as the Master System. As such, if you attempt to run a Game Gear game on a Master System, it will run, but the colors will be incorrect.
The Game Gear's display is also lower resolution than the Master System: 160x144 compared to 256x192. For Game Gear games, the 160x144 is a window within the 256x192 SMS display. When using the Master Gear adapter, the 256x192 SMS display is shrunken to fit, which can result in image artifacting.
Finally, the Game Gear has a Start button, and it also has an extra register for PSG stereo. The Start button is technically a separate register, not part of the controller, which prevents Game Gear games from being run on Master System without modifications.
Vs. NES
The Master System is overall a more powerful console than the Nintendo Entertainment System (NES), its main rival. The NES has an 8-bit memory architecture, with its Ricoh 2A03 CPU (an adaptation of the MOS 6502 with additional features) and Ricoh PPU graphics processor each having an 8-bit data bus. In comparison, the Master System has a hybrid 8/16-bit memory architecture, with its NEC 780C CPU (essentially a second-sourced Zilog Z80) having an 8-bit data bus and its Sega VDP graphics processor having a 16-bit data bus.[1][2][3] This makes the Master System's hybrid 8/16-bit memory architecture comparable to the PC-Engine/TurboGrafx-16, which similarly has an 8-bit CPU bus and 16-bit graphics data bus (see below). In addition, the Z80 supports both 8-bit and 16-bit registers,[4] whereas the 2A03 only supports 8-bit registers. However, the Z80 and 2A03/6502 both have 4-bit ALUs (arithmetic logic units).[5]
The Master System's Z80 CPU has approximately twice the clock rate (MHz) of the NES's 2A03 CPU, but this does not necessarily mean twice the performance. The 2A03 requires less cycles per instruction, thus it can actually output slightly more instructions per second (MIPS) than the Z80. However, comparing the MIPS of both CPUs would be just as misleading as comparing their MHz. The Z80 has a more powerful hybrid 8/16-bit instruction set, so it requires fewer instructions to perform similar tasks. The performance of each CPU varies depending on the tasks. For accessing memory, the 2A03 is faster in that regard, but the Z80 doesn't need to access the memory as much since it requires fewer instructions to perform similar tasks. Where the Z80 has a significant performance advantage is the arithmetic. While the Z80 only has a single 4-bit ALU, compared to the 2A03's dual 4-bit ALU, the Z80 has native support for 16-bit arithmetic and is faster for most arithmetic operations. Both CPUs have similar performance when it comes to the addition and subtraction of smaller 8-bit numbers, but the Z80 has a significant performance advantage for most other arithmetic operations, including multiplications and divisions (for both 8-bit and 16-bit numbers), as well as the addition and subtraction of larger 16-bit numbers (due to the Z80's native 16-bit support). The faster arithmetic of the Z80 gives it an overall performance advantage over the 2A03.
The Master System's VDP has a 16-bit data bus,[1][2][3] compared to the NES's PPU which has an 8-bit data bus, thus the Master System has a higher memory bandwidth than the NES. The SMS VDP's wider 16-bit data bus allows it to access 16-bit data in a single cycle, whereas the NES PPU can only access 8-bit data in a single cycle, giving the SMS VDP a faster data transfer speed. The higher bandwidth allows the SMS to access and transfer more graphics data.
The Master System displays 16 colors per tile and 16 colors per sprite, like the 16-bit Mega Drive and SNES, compared to 4 colors per tile and 4 colors per sprite for the NES. The Master System also displays 32 colors on screen, compared to the Nintendo's 25 colors on screen. The Master System also supports diagonal scrolling as well as line scrolling, allowing it to simulate parallax scrolling.
The NES can flip sprites but not background tiles, whereas the SMS can flip background tiles (BG tiles) but not sprites. Both features save memory and bandwidth in different ways. Out of the two flipping features, the Master System's BG tile flipping saves considerably more memory and bandwidth, as the number of BG tiles on a screen significantly outnumbers the number of sprites on a screen. This allows the Master System to have more detailed and animated backgrounds, with some games (such as Golden Axe, Space Harrier, Altered Beast, Road Rash and Mortal Kombat) even making use of BG tile flipping to render software sprites, or a bitmap, using the BG tiles. On the other hand, the Nintendo's sprite flipping can save more bandwidth for the sprites. However, the SMS already has more bandwidth, and with its BG tile flipping feature saving bandwidth on the more intensive background, that can allow the SMS to use more tiles for the sprites. Overall, the Master System's BG tile flipping is more useful than the Nintendo's sprite flipping.
A hardware feature that the NES has (as well as the Atari 7800) which the SMS hardware lacks is DMA (direct memory access), which allows data transfers between different parts of the memory architecture. The NES (like the 7800) relies on DMA to transfer sprite display lists between the GPU cache and the RAM. However, the SMS doesn't need to use DMA for such a task, as the SMS accesses sprite display information directly from its VRAM, which has a higher bandwidth, bypassing the need for DMA to access a sprite display list. Both of their 16-bit successors, the Mega Drive and SNES, have DMA controllers which make more extensive use of DMA, particularly the Mega Drive which has faster DMA bandwidth.
A clear advantage of the NES its its Ricoh sound chip, which is more advanced than the PSG in Western Master System hardware, but not quite as advanced as the Yamaha FM synthesis chip in Japanese Master System hardware. The NES was also capable of enhancement chips. Some of them added diagonal scrolling and line scrolling, both of which the Master System was already capable of. There were also enhancement chips which added FM synthesis capabilities, which only the Japanese Master System was capable of.
Vs. 7800
The Master System is a more powerful system than the Atari 7800. Its CPU, the MOS 6502, is nearly identical to the 6502-based 2A03 CPU of the NES. The SMS thus has most of the same advantages over the 7800 CPU as it does over the NES CPU, for the same reasons (see above).
Both the NES and SMS use tile-based graphics compression, where the graphics are rendered tile-by-tile, rather than pixel-by-pixel. They have two planes, a background (BG) tilemap plane below and hardware sprites on top, each referencing and recycling sets of tiles. In comparison, the 7800 uses uncompressed bitmap rendering, where the graphics are rendered pixel-by-pixel and line-by-line. As the 7800 doesn't have enough RAM for a framebuffer, it renders graphics by "zones" which typically refers to a set of 4-16 scanlines. The 7800 does not have hardware sprites or a BG tilemap plane, but can use software rendering routines accelerated by its MARIA graphics chip to draw software sprites and tiles, but this can strain the MARIA which has to draw them pixel-by-pixel and line-by-line. The tile-based compression of the NES and SMS allows much more efficient usage of resources, including a significant reduction in processing, memory and bandwidth requirements for rendering graphics.
Both the NES and SMS also have separate data buses for the CPU and GPU, with a combined system data bus width of 16-bit for the NES (8-bit CPU bus and 8-bit PPU bus) and 24-bit for the SMS (8-bit CPU bus and 16-bit VDP bus). In comparison, the 7800 only has a single 8-bit data bus, which is shared by both its CPU and MARIA graphics chip. This means the 7800 has a smaller bus width and thus a lower memory bandwidth than both the NES and SMS. This also negatively affects the performance of both the CPU and MARIA, as the CPU has to be halted whenever MARIA accesses the bus, as only one of the two processors can access the memory at any one time. The lack of bandwidth, combined with the lack of tile compression, means that the 7800 cannot push as much graphics data as the NES or SMS, nor can the 7800's CPU perform as well (due to the CPU being routinely halted by the MARIA). The 7800 also lacks smooth per-pixel hardware scrolling, but supports coarse scrolling, which scrolls in 8-pixel increments (though smooth scrolling is possible on the 7800, with intensive software routines).
On the other hand, the 7800's bitmap rendering is more flexible in some ways. While its ability to render large, detailed, scrolling backgrounds is inferior to the NES and especially the SMS, the 7800 can push a large amount of software sprites for games that have no backgrounds, such as Robotron. However, such games without backgrounds became rare in the NES/SMS era, where games with full scrolling backgrounds became the norm. The SMS's ability to flip background tiles also allows it to essentially manipulate background tiles as if they are sprites, or manipulate its tilemap background as if it was a bitmap, thus the SMS could technically also push a large amount of software sprites in a similar manner in addition to having a full background (as seen in titles such as Golden Axe, Space Harrier, Altered Beast, Road Rash and Mortal Kombat).
An advantage of the 7800 is that it has access to a larger selectable color palette. While this allows more shades, its overall palette is darker and more muted compared to the NES and SMS, both of which have brighter palettes with more contrast and luminance.[6] The number of colors the 7800 can practically display on each scanline is also more limited than the NES and SMS, as the 7800 is limited to 12 colors per "zone" (4-16 scanlines), whereas the NES and SMS can display up to 25 colors and 32 colors per scanline, respectively.[7] The 7800 also displays less colors on screen than the SMS, as well as less colors per tile. The 7800 also has a hi-res mode that displays a higher resolution than the NES and SMS resolutions, but the 7800's hi-res mode was rarely used by games as it displays significantly less colors on screen, and the MARIA did not have enough processing power to render a full background in this mode.
Vs. C64 and ZX
The Master System's main rivals in Europe were the 8-bit home computers, the ZX Spectrum and Commodore 64 (C64). Despite the rivalry, however, Sega supported these platforms as a third-party licensor of arcade ports. The Master System was the most powerful 8-bit home system, surpassing the NES, ZX, and C64, while at the same time the SMS had a lower price point than the ZX and C64.
Vs. Amiga
The Commodore Amiga 500 (A500) released just a month after the Master System's European release in 1987. However, they were generally not in direct competition, as the Amiga was significantly more expensive than the Master System. The Amiga's direct competitor would later be the Sega Mega Drive. The Master System was instead competing with the 8-bit home computers, particularly the ZX and C64, though the Master System's hardware capabilities were closer to the Amiga than to the ZX or C64.
Compared to the 16-bit Amiga 500, the A500 was generally more powerful overall, with a more powerful 16-bit 68000 CPU, higher resolution, larger color palette, larger sprites, faster blitting, and superior audio capabilities (like the Mega Drive released a year later). However, the Master System did have several advantages, with its VDP graphics chip supporting more hardware sprites, superior hardware tile capabilities, and smoother scrolling. Its tilemap backgrounds require up to 64 times less processing, memory and bandwidth than the A500's bitmap backgrounds,[8] allowing the Master System to produce smoother scrolling and animations. The Master System displays 32 hardware sprites on screen, compared to the A500's 8 hardware sprites (though blitting allows the A500 to exceed this limit). The Master System displays 32 colors on screen and 16 colors per sprite, while for the A500, colors range from 2 to 32 on screen and it displays 2 to 4 colors per sprite. The A500's parallax scrolling reduces performance and colors, while the Master System's line scrolling simulates parallax scrolling without affecting performance or colors.
However, it is worth noting that most of the built-in hardware features of the SMS graphics chip mentioned above can be achieved on the Amiga with software rendering, using its 68000 CPU along with its blitter. A clear advantage the Master System does have, however, it that its cartridges load faster than the Amiga's floppy disks. Nevertheless, the A500 was more advanced overall, but the Master System hardware was strong enough to remain competitive at a significantly lower price point, up until the release of the more advanced Mega Drive (see Sega Mega Drive/Hardware comparison for a technical comparison between the Mega Drive and Amiga).
Vs. PC Engine
The Master System has a similar 8/16-bit hybrid design as the NEC PC Engine (TurboGrafx-16). The Master System has an 8/16-bit NEC 780C (Zilog Z80) CPU, supporting both 8-bit and 16-bit instructions and with an 8-bit data bus, compared to the PC Engine which has an entirely 8-bit CPU. The Master System's Sega VDP graphics processor has a 16-bit data bus, while the PC-Engine has a dual-GPU setup sharing a 16-bit data bus. The Master System is thus no less of a "16-bit" system than the TurboGrafx-16. Nevertheless, the PC Engine is a more powerful system than the Master System, and can be considered a next-generation system, even if both systems have a similar numbers of "bits".
Comparison table
Console | Sega Master System (SMS)[1][9] | Nintendo Entertainment System (NES)[10][11][12][13][14] | Atari 7800[15][16][17] | |
---|---|---|---|---|
System master clock rate |
NTSC | 53.693175 MHz | 21.47727 MHz | 14.31818 MHz |
PAL | 53.203424 MHz | 26.6017125 MHz | 14.187576 MHz | |
System data bus width | 24-bit (8-bit CPU bus, 16-bit VDP bus) | 16-bit (8-bit CPU bus, 8-bit PPU bus) | 8-bit (shared by CPU and MARIA) | |
Central processing unit (CPU) | NEC 780C (Zilog Z80) | Ricoh 2A03 (based on MOS 6502) | MOS 6502 | |
Clock rate | NTSC | 3.579545 MHz | 1.789773 MHz | 1.789773 MHz (inactive display), 868,820 Hz (active display)[n 1] |
PAL | 3.546894 MHz | 1.662607 MHz | 1.773447 MHz (inactive display), 806,988 Hz (active display)[n 2] | |
Data bus width | 8-bit (dedicated) | 8-bit (dedicated) | 8-bit (shared with MARIA) | |
Word length | 8-bit | 8-bit | 8-bit | |
Instructions | Instruction set (registers) | 8-bit, 16-bit[4] | 8-bit | 8-bit |
Instructions per second | 0.52 MIPS (8-bit and 16-bit instructions) | 0.7 MIPS (8-bit instructions)[4] | Inactive display: 0.7 MIPS (8-bit instructions) Active display: 0.37 MIPS (8-bit instructions)[4] | |
Arithmetic logic unit(s) | ALU(s) | 4-bit ALU[5] | 2× 4-bit ALU[5] | 2× 4-bit ALU[5] |
Arithmetic values | 8-bit, 16-bit[19] | 8-bit[20] | 8-bit[20] | |
8-bit arithmetic | Additions[n 3] | Up to 800,000 adds/sec[n 4] | Up to 800,000 adds/sec[n 5] | Up to 800,000 adds/sec (inactive display) 400,000 adds/sec (active display)[n 6] |
Multiplications | Up to 140,000 multiplies/sec[n 7] | Up to 100,000 multiplies/sec[n 8] | Up to 100,000 multiplies/sec (inactive display) 50,000 multiplies/sec (active display)[n 9] | |
Divisions | Up to 40,000 divides/sec[n 10] | Up to 18,000 divides/sec[n 11] | Up to 18,000 divides/sec (inactive display) 8,000 divides/sec (active display)[n 12] | |
16-bit arithmetic | Additions[n 3] | Up to 300,000 adds/sec[n 13] | Up to 80,000 adds/sec[n 14] | Up to 80,000 adds/sec (inactive display) 30,000 adds/sec (active display)[n 15] |
Multiplications | Up to 30,000 multiplies/sec[n 16] | Up to 9,000 multiplies/sec[n 17] | Up to 9,000 multiplies/sec (inactive display) 4,000 multiplies/sec (active display)[n 18] | |
Divisions | Up to 3,000 divides/sec[n 19] | Up to 1,000 divides/sec[n 20] | Up to 1,000 divides/sec (inactive display) 400 divides/sec (active display)[n 21] | |
Graphics processing unit (GPU) | Sega VDP | Ricoh PPU | GCC MARIA | |
Clock rate (internal) |
NTSC | 10.738635 MHz | 5.369317 MHz | 7.159091 MHz |
PAL | 10.640685 MHz | 5.320342 MHz | 7.093788 MHz | |
Data bus clock rate |
NTSC | 5.369318 MHz | 5.369318 MHz | 4.984658 MHz[18] |
PAL | 5.320342 MHz | 5.320342 MHz | 5.230959 MHz[18] | |
Bits | Data bus width | 16-bit (dedicated) | 8-bit (dedicated) | 8-bit (shared with CPU) |
Registers | 8-bit, 16-bit | 8-bit | 8-bit | |
Internal cache | Cache | 64 bytes (32 bytes CRAM, 32 bytes sprite line buffer) | 256 bytes (OAM) | 225 bytes (200 bytes line buffer, 25 bytes color map) |
Bandwidth | 10 MB/s | 5.369317 MB/s (NTSC), 5.320342 MB/s (PAL) | 6.060606 MB/s[n 22] | |
Hardware rendering |
Tile compression | Yes | Yes | No |
Hardware sprites | Yes | Yes | No | |
Bitmap rendering | SG-1000 mode only | No | Yes | |
Graphical planes | 2 planes (hardware sprites, tilemap background) | 2 planes (hardware sprites, tilemap background) | 1 plane (bitmap) | |
Scrolling capabilities | Per-pixel scrolling, vertical/horizontal scrolling, diagonal scrolling, line scrolling, split-screen scrolling |
Per-pixel scrolling, vertical/horizontal scrolling, split-screen scrolling |
Coarse scrolling (8-pixel increments), vertical/horizontal scrolling | |
IRQ interrupt | Yes | MMC enhancement chips only | No | |
Resolution | Pixel clock rate | 5.369318 MHz (NTSC), 5.320342 MHz (PAL) | 5.369318 MHz (NTSC), 5.320342 MHz (PAL) | Default: 3.579546 MHz (NTSC), 3.546894 MHz (PAL) Hi-res: 7.159091 MHz (NTSC), 7.093788 MHz (PAL) |
Overscan | 342×262 (NTSC), 342×313 (PAL) | 341×262 (NTSC), 341×312 (PAL)[31][32] | 227×263 (NTSC), 227×313 (PAL) | |
Display resolution | Default: 256×192, 256×224 Hi-res: 256×240 |
Default: 256×192, 256×224 Hi-res: 256×240 |
Default: 160×192 Hi-res: 160×242, 320×192 | |
Refresh rate | 59.922743 Hz (NTSC), 49.701459 Hz (PAL) | 60.099143 Hz (NTSC), 50.006979 Hz (PAL) | 59.957873 Hz (NTSC), 49.920395 Hz (PAL) | |
Colors | Color format | RGB | YIQ | Y/C[6] |
Luma brightness | 100% | 100% | 50%[6] | |
Total palette | 64 colors (absolute) | 54 colors (absolute) | 16 colors (absolute), 256 colors (relative)[6] | |
Colors on screen | 32 colors | 25 colors | 25 colors (160×192 mode), 6 colors (320×192 mode)[33] | |
Colors per scanline | 32 colors | 25 colors | 12 colors[34] | |
Colors per tile | 16 colors (default), 2 colors (SG-1000 mode) | 4 colors (default), 7 colors (combining 2 tiles) | 3-9 colors (160×192 display), 2-3 colors (320×192 display)[35] | |
Tiles (8×8 pixel tiles) |
Tiles on screen | 1152 tiles (16-color), 1280 tiles (2-color) | 1152 tiles (4-color) | 252 tiles (4-color)[36] |
Unique tiles on screen | 488 tiles (16-color), 1024 tiles (2-color) Tile flipping: 1152 tiles (16-color) |
512 tiles (4-color) Tile flipping: 640 tiles (4-color) |
252 tiles (4-color) | |
Tiles per scanline | 40 tiles (16-color), 48 tiles (2-color) | 40 tiles (4-color) | 21 tiles (4-color), 27 tiles (2-color)[36] | |
Tile draw fillrate | 16-color tiles: 69,030 tiles/sec (NTSC), 57,256 tiles/sec (PAL) 2-color tiles: 76,701 tiles/sec (NTSC), 63,617 tiles/sec (PAL) |
4-color tiles: 69,234 tiles/sec (NTSC), 57,608 tiles/sec (PAL) | 4-color tiles: 15,109 tiles/sec (NTSC), 12,579 tiles/sec (PAL) | |
Tile texels | Tile texels per scanline | 320 texels (16-color tiles), 342 texels (2-color tiles) | 320 texels (4-color tiles) | 168 texels (4-color tiles), 216 texels (2-color tiles)[36] |
Tile draw fillrate | 16-color tiles: 4.417 MTexels/s (NTSC), 3.664 MTexels/s (PAL) 2-color tiles: 4.908 MTexels/s, 4.071 MTexels/s (PAL) |
4-color tiles: 4.43 MTexels/s (NTSC), 3.686 MTexels/s (PAL) | 4-color tiles: 966,976 texels/s (NTSC), 805,056 texels/s (PAL) | |
VRAM tile transfer | Texel fillrate (256×192 display) |
16-color tiles: 348,990 texels/s (NTSC), 359,440 texels/s (PAL)[n 23] 2-color tiles: 1.395 MTexels/s (NTSC), 1.447 MTExels/s (PAL)[n 24] |
4-color tiles: 234,627 texels/s (NTSC), 361,650 texels/s (PAL)[n 25] | N/A |
Texel fillrate (256×224 display) |
16-color tiles: 161,072 texels/s (NTSC), 241,747 texels/s (PAL)[n 26] 2-color tiles: 651,959 texels/s (NTSC), 973,353 texels/s (PAL)[n 27] |
4-color tiles: 88,465 texels/s (NTSC), 246,434 texels/s (PAL)[n 28] | ||
Tile fillrate (256×192 display) |
16-color tiles: 5452 tiles/sec (NTSC), 5616 tiles/sec (PAL) 2-color tiles: 21,811 tiles/sec (NTSC), 22,614 tiles/sec (PAL) |
4-color tiles: 3666 tiles/sec (NTSC), 5650 tiles/sec (PAL) | ||
Tile fillrate (256×224 display) |
16-color tiles: 2516 tiles/sec (NTSC), 3777 tiles/sec (PAL) 2-color tiles: 10,186 tiles/sec (NTSC), 15,208 tiles/sec (PAL) |
4-color tiles: 1382 tiles/sec (NTSC), 3850 tiles/sec (PAL) | ||
Transfer per refresh (256×192 display) |
16-color tiles: 91 tiles (NTSC), 113 tiles (PAL) 2-color tiles: 364 tiles (NTSC), 455 tiles (PAL)[n 29] |
4-color tiles: 61 tiles (NTSC), 113 tiles (PAL)[n 30] | ||
Transfer per refresh (256×224 display) |
16-color tiles: 42 tiles (NTSC), 76 tiles (PAL)[n 31] 2-color tiles: 170 tiles (NTSC), 306 tiles (PAL)[n 32] |
4-color tiles: 23 tiles (NTSC), 77 tiles (PAL)[n 33] | ||
Hardware sprite plane |
Colors per sprite | 16 colors (default), 2 colors (SG-1000 mode) | 4 colors (default), 7 colors (combining 2 sprites) | N/A |
Sprites on screen | 64 sprites (16-color) | 64 sprites (4-color), 32 sprites (7-color) | ||
Sprite tiles on screen | 128 sprite tiles (16-color), 256 sprite tiles (2-color) | 128 sprite tiles (4-color), 64 sprite tiles (7-color) | ||
Sprite sizes | 16-color sprites: 8×8, 8×16 2-color sprites: 8×8, 16×16 |
4-color sprites: 8x8, 8x16 | ||
Sprite zooming | 16-color sprites: 16×16, 16×32 2-color sprites: 16×16, 32×32 |
N/A | ||
Sprites per scanline | 8 sprites (16-color) | 8 sprites (4-color), 4 sprites (7-color) | ||
Sprite tiles per scanline | 8 sprite tiles (16-color), 16 sprite tiles (2-color) |
8 sprite tiles (4-color), 4 sprite tiles (7-color) | ||
Sprite texels per scanline | 64 texels (16-color), 128 texels (2-color) | 64 texels (4-color), 32 texels (7-color) | ||
Sprite flipping | No | Yes | ||
Draw fillrate | 490,000 texels/s (16-color sprites), 980,000 texels/s (2-color sprites) |
490,000 texels/s (4-color sprites), 240,000 texels/s (7-color sprites) | ||
Write fillrate (256×192 display) |
16-color sprites: 349,000 texels/s (NTSC), 362,000 texels/s 2-color sprites: 980,000 texels/s |
4-color sprites: 236,000 texels/s (NTSC), 362,000 texels/s (PAL) 7-color sprites: 110,000 texels/s (NTSC), 180,000 texels/s (PAL) | ||
Write fillrate (256×224 display) |
16-color sprites: 163,000 pixels/s (NTSC), 243,000 pixels/s (PAL) 2-color sprites: 655,000 pixels/s (NTSC), 974,000 pixels/s (PAL) |
4-color sprites: 90,000 pixels/s (NTSC), 248,000 pixels/s (PAL) 7-color sprites: 110,000 texels/s (NTSC), 180,000 texels/s (PAL) | ||
Transfer per frame (256×192) | 16-color sprites: 64 sprites[9] | 4-color sprites: 61 sprites (NTSC), 64 sprites (PAL) | ||
Transfer per frame (256×224) | 16-color tiles: 42 sprites (NTSC), 64 sprites (PAL), 2-color sprites: 64 sprites |
4-color tiles: 23 sprites (NTSC), 64 sprites (PAL) | ||
Background (BG) tilemap plane |
Tilemap resolution | 256×256 texels | 256×256 texels | N/A |
Colors per BG tile | 16 colors (default), 2 colors (SG-1000 mode) | 4 colors | ||
BG tiles on screen | 1024 tiles | 1024 tiles | ||
Unique BG tiles on screen | 448 tiles (16-color), 768 tiles (2-color) Tile flipping: 1024 tiles (16-color) |
512 tiles (4-color) | ||
Background tile flipping | Yes | No | ||
BG tiles per scanline | 32 tiles | 32 tiles | ||
BG texels per scanline | 256 texels | 256 texels | ||
Random access memory (RAM) | Sega Master System (SMS) | Nintendo Entertainment System (NES) | Atari 7800 | |
Total RAM | Memory | 24 KB (XRAM/SRAM, PSRAM) | 4 KB (SRAM) | 4 KB (SRAM) |
Data bus width | 24-bit (8-bit WRAM, 16-bit VRAM) | 16-bit (8-bit WRAM, 8-bit VRAM) | 8-bit (shared by CPU and MARIA) | |
Bandwidth | 11 MB/s | 7.15 MB/s (NTSC), 6.66 MB/s (PAL) | 1.7 MB/s to 3.5 MB/s[n 34] | |
CPU instruction fetch | 1.2 MB/s[n 35] | Up to 1.6 MB/s[n 36] | Up to 1.6 MB/s (inactive display), 800,000 KB/s (active display)[n 36] | |
GPU tile fetch (8×8 tiles) | 2.208 MB/s (NTSC), 1.832 MB/s (PAL) | 1.107 MB/s (NTSC), 921,728 KB/s (PAL) | 241.75 KB/s (NTSC), 201.279 KB/s (PAL)[36] | |
CPU Work RAM (WRAM) |
Memory | 8 KB (XRAM/SRAM, 8-bit) | 2 KB (SRAM, 8-bit) | N/A |
Bandwidth | 3.579545 MB/s (NTSC), 3.546894 MB/s (PAL) | 1.789773 MB/s (NTSC), 1.662607 MB/s (PAL) | ||
GPU Video RAM (VRAM) |
Memory | 16 KB (XRAM/PSRAM) | 2 KB (SRAM) | N/A |
Bandwidth | 7.692306 MB/s[n 37] | 5.369317 MB/s (NTSC), 5 MB/s (PAL)[n 38] | ||
Transfer (inactive display) | 298.295 KB/s (NTSC), 295.574 KB/s (PAL)[n 39] | 298.295 KB/s (NTSC), 277.101 KB/s (PAL)[n 40] | ||
Transfer (256×192 display) | 174.794 KB/s (NTSC),[n 41] 181.112 KB/s (PAL)[n 42] | 59.137 KB/s (NTSC),[n 43] 90.562 KB/s (PAL)[n 44] | ||
Transfer (256×224 display) | 81.914 KB/s (NTSC),[n 45] 121.818 KB/s (PAL)[n 46] | 22.717 KB/s (NTSC),[n 47] 62.158 KB/s (PAL)[n 48] |
Notes
- ↑ [6502 loses at least 920,953 Hz from MARIA stealing cycles during visible active display[18] 6502 loses at least 920,953 Hz from MARIA stealing cycles during visible active display[18]]
- ↑ [6502 loses at least 966,459 Hz from MARIA stealing cycles during visible active display[18] 6502 loses at least 966,459 Hz from MARIA stealing cycles during visible active display[18]]
- ↑ 3.0 3.1 [Same performance for subtractions Same performance for subtractions]
- ↑ [Minimum 4 cycles per 8-bit add[19] Minimum 4 cycles per 8-bit add[19]]
- ↑ [Minimum 2 cycles per 8-bit add[20] Minimum 2 cycles per 8-bit add[20]]
- ↑ [Minimum 2 cycles per 8-bit add Minimum 2 cycles per 8-bit add]
- ↑ [Minimum 25 cycles per 8-bit multiply[21] Minimum 25 cycles per 8-bit multiply[21]]
- ↑ [Minimum 17 cycles per 8-bit multiply[22] Minimum 17 cycles per 8-bit multiply[22]]
- ↑ [Minimum 17 cycles per 8-bit multiply Minimum 17 cycles per 8-bit multiply]
- ↑ [Minimum 81 cycles per 8-bit divide[23] Minimum 81 cycles per 8-bit divide[23]]
- ↑ [Minimum 98 cycles per 8-bit divide[24] Minimum 98 cycles per 8-bit divide[24]]
- ↑ [Minimum 98 cycles per 8-bit divide Minimum 98 cycles per 8-bit divide]
- ↑ [Minimum 11 cycles per 16-bit add[19] Minimum 11 cycles per 16-bit add[19]]
- ↑ [Minimum 22 cycles per 16-bit add (2 cycles CLC, 4 cycles LDA, 4 cycles ADC, 6 cycles STA, 6 cycles RTS)[25][20] Minimum 22 cycles per 16-bit add (2 cycles CLC, 4 cycles LDA, 4 cycles ADC, 6 cycles STA, 6 cycles RTS)[25][20]]
- ↑ [Minimum 22 cycles per 16-bit add (2 cycles CLC, 4 cycles LDA, 4 cycles ADC, 6 cycles STA, 6 cycles RTS) Minimum 22 cycles per 16-bit add (2 cycles CLC, 4 cycles LDA, 4 cycles ADC, 6 cycles STA, 6 cycles RTS)]
- ↑ [Minimum 95 cycles per 16-bit multiply (10 cycles LD HL, 7 cycles LD A, 22 cycles ADD HL, 16 cycles RL, 10 cycles JP NC, 6 cycles INC DE, 4 cycles DEC A, 10 cycles JP NZ, 10 cycles RET)[26][19] Minimum 95 cycles per 16-bit multiply (10 cycles LD HL, 7 cycles LD A, 22 cycles ADD HL, 16 cycles RL, 10 cycles JP NC, 6 cycles INC DE, 4 cycles DEC A, 10 cycles JP NZ, 10 cycles RET)[26][19]]
- ↑ [Minimum 192 cycles per 16-bit multiply[27] Minimum 192 cycles per 16-bit multiply[27]]
- ↑ [Minimum 192 cycles per 16-bit multiply Minimum 192 cycles per 16-bit multiply]
- ↑ [Approximately 1070 cycles per 16-bit divide[28] Approximately 1070 cycles per 16-bit divide[28]]
- ↑ [Approximately 1900 cycles per 16-bit divide[29] Approximately 1900 cycles per 16-bit divide[29]]
- ↑ [Approximately 1900 cycles per 16-bit divide Approximately 1900 cycles per 16-bit divide]
- ↑ [8-bit, 165 ns[30] 8-bit, 165 ns[30]]
- ↑ [NTSC: 91 tiles per frame
113 tiles per frame NTSC: 91 tiles per frame
113 tiles per frame] - ↑ [NTSC: 2.917 KB (364 tiles) per frame
PAL: 3.644 KB (455 tiles) per frame NTSC: 2.917 KB (364 tiles) per frame
PAL: 3.644 KB (455 tiles) per frame] - ↑ [NTSC: 984 bytes (61 tiles) per frame, 52 VBlank scanlines, 5909 CPU cycles, 6 cycles per byte
PAL: 1.811 KB (113 tiles) per frame, 102 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte NTSC: 984 bytes (61 tiles) per frame, 52 VBlank scanlines, 5909 CPU cycles, 6 cycles per byte
PAL: 1.811 KB (113 tiles) per frame, 102 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte] - ↑ [NTSC: 1.367 KB (42 tiles) per frame, 224 active scanlines (2.5 bytes per line), 38 VBlank scanlines (21.25 bytes per line)
PAL: 2.451 KB (76 tiles) per frame, 224 active scanlines (2.5 bytes per line), 89 VBlank scanlines (21.25 bytes per line) NTSC: 1.367 KB (42 tiles) per frame, 224 active scanlines (2.5 bytes per line), 38 VBlank scanlines (21.25 bytes per line)
PAL: 2.451 KB (76 tiles) per frame, 224 active scanlines (2.5 bytes per line), 89 VBlank scanlines (21.25 bytes per line)] - ↑ [NTSC: 1.367 KB (170 tiles) per frame
PAL: 2.451 KB (306 tiles) per frame NTSC: 1.367 KB (170 tiles) per frame
PAL: 2.451 KB (306 tiles) per frame] - ↑ [NTSC: 378 bytes (23 tiles) per frame, 20 VBlank scanlines, 2273 CPU cycles, 6 cycles per byte
PAL: 1.243 KB (77 tiles) per frame, 70 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte NTSC: 378 bytes (23 tiles) per frame, 20 VBlank scanlines, 2273 CPU cycles, 6 cycles per byte
PAL: 1.243 KB (77 tiles) per frame, 70 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte] - ↑ [NTSC: 2.917 KB per frame
PAL: 3.644 KB per frame NTSC: 2.917 KB per frame
PAL: 3.644 KB per frame] - ↑ [NTSC: 984 bytes per frame, 52 VBlank scanlines, 5909 CPU cycles, 6 cycles per byte
PAL: 1.811 KB per frame, 102 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte NTSC: 984 bytes per frame, 52 VBlank scanlines, 5909 CPU cycles, 6 cycles per byte
PAL: 1.811 KB per frame, 102 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte] - ↑ [NTSC: 1.367 KB per frame, 224 active scanlines (2.5 bytes per line), 38 VBlank scanlines (21.25 bytes per line)
PAL: 2.451 KB per frame, 224 active scanlines (2.5 bytes per line), 89 VBlank scanlines (21.25 bytes per line) NTSC: 1.367 KB per frame, 224 active scanlines (2.5 bytes per line), 38 VBlank scanlines (21.25 bytes per line)
PAL: 2.451 KB per frame, 224 active scanlines (2.5 bytes per line), 89 VBlank scanlines (21.25 bytes per line)] - ↑ [NTSC: 1.367 KB per frame
PAL: 2.451 KB per frame NTSC: 1.367 KB per frame
PAL: 2.451 KB per frame] - ↑ [NTSC: 378 bytes per frame, 20 VBlank scanlines, 2273 CPU cycles, 6 cycles per byte
PAL: 1.243 KB per frame, 70 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte NTSC: 378 bytes per frame, 20 VBlank scanlines, 2273 CPU cycles, 6 cycles per byte
PAL: 1.243 KB per frame, 70 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte] - ↑ [8-bit, 285 ns[30] 8-bit, 285 ns[30]]
- ↑ [3 cycles per byte[37] 3 cycles per byte[37]]
- ↑ 36.0 36.1 [Minimum 1 cycle per byte Minimum 1 cycle per byte]
- ↑ [16-bit, 260 ns 16-bit, 260 ns]
- ↑ [8-bit, 150 ns (NTSC), 200 ns (PAL)[12] 8-bit, 150 ns (NTSC), 200 ns (PAL)[12]]
- ↑ [12 CPU cycles per byte 12 CPU cycles per byte]
- ↑ [6 CPU cycles per byte 6 CPU cycles per byte]
- ↑ [2.917 KB per frame 2.917 KB per frame]
- ↑ [3.644 KB per frame 3.644 KB per frame]
- ↑ [984 bytes per frame: 52 VBlank scanlines, 5909 CPU cycles, 6 cycles per byte 984 bytes per frame: 52 VBlank scanlines, 5909 CPU cycles, 6 cycles per byte]
- ↑ [1.811 KB per frame: 102 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte 1.811 KB per frame: 102 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte]
- ↑ [1.367 KB per frame: 224 active scanlines (2.5 bytes per line), 38 VBlank scanlines (21.25 bytes per line) 1.367 KB per frame: 224 active scanlines (2.5 bytes per line), 38 VBlank scanlines (21.25 bytes per line)]
- ↑ [2.451 KB per frame: 224 active scanlines (2.5 bytes per line), 89 VBlank scanlines (21.25 bytes per line) 2.451 KB per frame: 224 active scanlines (2.5 bytes per line), 89 VBlank scanlines (21.25 bytes per line)]
- ↑ [378 bytes per frame: 20 VBlank scanlines, 2273 CPU cycles, 6 cycles per byte 378 bytes per frame: 20 VBlank scanlines, 2273 CPU cycles, 6 cycles per byte]
- ↑ [1.243 KB per frame: 70 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte 1.243 KB per frame: 70 VBlank scanlines, 7459 CPU cycles, 6 cycles per byte]
References
- ↑ 1.0 1.1 1.2 Sega Master System/Technical specifications
- ↑ 2.0 2.1 File:SMSServiceManualEU.pdf
- ↑ 3.0 3.1 File:SMS2ServiceManualEU.pdf
- ↑ 4.0 4.1 4.2 4.3 Obsolete Microprocessors
- ↑ 5.0 5.1 5.2 5.3 The Z-80 has a 4-bit ALU. Here's how it works.
- ↑ 6.0 6.1 6.2 6.3 7800 compared to the NES
- ↑ Can an NES game be made into a 7800 version?
- ↑ Before the Crash: Early Video Game History, page 173
- ↑ 9.0 9.1 How many bytes can I write to VRAM per frame?
- ↑ NES hardware specifications
- ↑ Sega Master System vs Nintendo Entertainment System
- ↑ 12.0 12.1 Nintendo NES-001
- ↑ Cycle reference chart
- ↑ Screen flashes garbage chars when I update background tiles
- ↑ 7800 hardware facts
- ↑ Atari 7800 Progamming
- ↑ Video Game Systems: Atari 7800
- ↑ 18.0 18.1 18.2 18.3 [http://7800.8bitdev.org/index.php/7800_Software_Guide 7800 Software Guide
- ↑ 19.0 19.1 19.2 19.3 Instruction Set
- ↑ 20.0 20.1 20.2 20.3 6502 Instruction Set
- ↑ The fast multiplication
- ↑ 8-bit Multiply
- ↑ Math
- ↑ 8bit Divide - 8bit Result
- ↑ 16-bit addition and subtraction
- ↑ htt (Wayback Machine: 2011-01-02 16:06)
- ↑ Fastest 16x16 unsigned multiplication
- ↑ Multiplications, divisions and shifts
- ↑ Math stuff
- ↑ 30.0 30.1 170B timing
- ↑ NTSC video
- ↑ PAL video
- ↑ Testing 320 mode with Pac-Man
- ↑ Can an NES game be made into a 7800 version?
- ↑ 7800basic Guide
- ↑ 36.0 36.1 36.2 36.3 Realistic Sprite Limits?
- ↑ File:Zilog Z80 Programmer's Reference Manual.pdf, page 33