When talking about retro games, terms like "8-bit music" or "16-bit graphics" often come up. I myself often use these terms, but I'm not exactly sure what they refer to. What do they mean?
|
|
8-bit and 16-bit, for video games, specifically refers to the processors used in the console. The number references the size of the words of data used by each processor. The 8-bit generation of consoles (starting with the Japan's Famicom, the equivalent of the US Nintendo Entertainment System) used 8-bit processors; the 16-bit generation (starting with Japan's Turbografix-16) used 16-bit processors. This affects the quality and variety in the graphics and the music by affecting how much data can be stored; Oak's answer details the specifics of graphics. If you don't know about a computer bit, then here is the Wikipedia article on bits: http://en.wikipedia.org/wiki/Bit, which I'll quote the first sentence that is all one really needs to know.
Now, note that in modern times, things like "8-bit music" and "16-bit graphics" don't necessarily have anything to do with processors or data size, as most machinery doesn't run that small anymore. They may instead refer specifically to the style of music or graphics used in games during those generations, done as a homage to nostalgia. 8-bit music is the standard chiptune fare, the graphics were simplistic in terms of colour. 16-bit music is higher quality but often still has a distinct electronic feel, while the graphics got much more complex. |
|||||||||||||||||
|
|
8-bit, 16-bit, 32-bit and 64-bit all refer to a processor's word size. A "word" in processor parlance means the native size of information it can place into a register and process without special instructions. It also refers to the size of the memory address space. The word size of any chip is the most defining aspect of it's design. There are several reasons why it is so important:
TL;DRThe difference in word size has a dramatic impact on the capabilities and performance of a given chip. Once you get up to 32-bits, the differences mainly become those of refinement (unless you are running a really big application, like genetic analysis or counting all the stars in the galaxy big). I hope this ramble of an answer is of some help. |
|||||||
|
|
The term "8-bit graphics" literally means that every pixel uses 8 bits for storing the color value - so only 256 options. Modern systems use 8 bits to store each color channel, so every pixel typically uses 24 bits. There's nothing preventing modern games from limiting themselves to a stricter, 8-bit color palette; but the term is often used to describe old games in which using 8 bits per pixel was necessary. |
|||||||||||||||||||
|
|
In addition to Oak's answer, the 8 bits for graphic not only limit1 the color palette, but also the screen resolution to a maximum of 256 in each direction (e.g. the NES has 256x224 pixels). For sprite graphics you need to split these 8 bit, e.g. to obtain 32 = 2⁵ different x-positions and 16 = 2⁴ different y-positions, you have 8x16 (2³x2⁴) pixels left for a sprite's resolution. That is why you get that typical pixel look. The same applies for music, 8 bit means a maximum of 256 levels of your sound output level (per sample, the temporal resolution is another issue), which is to coarse to provide sounds that do not sound Chiptune (or noisy, if still trying PCM sound) to the human ear. 16 bits per sample is what the CD standard uses, by the way. But 16 bit music more refers to Tracker music, where I can't tell you much about the implications of 16 bit limitations though. Another interesting point is that 8 bit limits1 the state of of your input device to 8 boolean button states split up into the four directions of the D-pad plus four buttons. Or a 2 button joystick with 3 bits (a mere 8 levels, including the sign!) remaining for both the x- and y-axis. So, for originally old games, 8 bit / 16 bit might be considered referring to the system's capabilities (but consider Grace's point about the incosistency in the label "8 bit"). For a retro game, consider the question whether it would be theoretically possible to obey the mentioned constraints (neglecting shader effects like Bloom), although you might have to allow some "cheating" - I'd consider a sprite based game using 8x16 squares sprites still 8 bit even if sprites could be floating at any position in HD resolution and the squares were 16x16 pixels each... 1) well obviously you can use 2 times 8 bit to circumvent that limit, but as BlueRaja points out in a comment on Grace's answer, considering the accumulator register to be 8 bit only as well, that would cause a performance loss. Also, it would be cheating your way to 16 bit IMHO |
||||
|
|
|
Way back in the day the bit size of a CPU was a reference to how wide the processors registers where. A CPU typically has several registers in which you can move data around and do operations on it. For example add 2 numbers together then store the results in another register. In the 8 bit era the registers were 8 bits wide and of you had a big number like 4000 it wouldn't fit in a single register so your would have to do two operations to simulate a 16 bit operation. For example if you have got 10,000 gold coins you would need to use to add instructions to add them together. One to handle the lower 8bits and another to add the upper 8bits(With carrying taken into account). Where as a 16bit system could have just done it in one operation. You may remember in the legend of Zelda you would max out at 255 rupees as its the largest unsigned 8bit number possible. Nowadays registers in a CPU come in all different sizes so this isn't really good measure anymore. For example the SSE Registers in the amd64 processors of today are 256 bits wide(For real) but the processors are still considered 64 bit. Lately these days most people are thinking of the addressing size the CPU is capable of supporting. It seems the bit size of a machine is really based on the current trends of hardware of the time. But for me I still consider the size of a native integer register which seems correct even today and still matches the addressing size of the CPU as well. Which makes since since the native integer size of a register is typically the same size as a memory pointer. |
||||
|
|