As some of you may recall, A few months ago, there was a lot of hoopla about an unofficial P.C. port of Super Mario 64. Fans had managed to decompile and reverse engineer the source code of Mario 64 and made the necessary changes to compile and run the game on Windows. So why is this such a big deal when we can already play N64 games using emulators? Conversely, what’s it matter that the games in the Super Mario 3D All-Stars Collection are emulated and not ported? What’s the difference between porting and emulating? And why would developers choose one over the other? Read more Emulation vs. Porting ›
We’ve all been there. Maybe you just entered a new shrine in Breath of the Wild or you got enough moons to go to the next kingdom in Super Mario Odyssey. Whatever game it is, you press the confirm button, eager to see what’s next, only to be met with a mostly blank screen and the words:
Slumping back in your seat (assuming you’re not playing at a rooftop party and sitting on the parapet), you glare intently at the message, brow furrowed. After a long and agonizing five seconds, you can’t help but wonder, “what on earth is taking so long?”
Ah, pixel art…Nothing says “video games” quite like a 32×32 pixel sprite. Retro sprites are a fascinating art form: unlike many other mediums, the conventions of pixel art were born of technical limitations, not creative freedom. While the nuances of the medium are often lost on modern developers, who see the limitations as an excuse to churn out overly simplistic animations, classic games would often feature impressively detailed animation frames. To this day, even single frames of these animations are downright iconic and instantly recognizable to fans around the world, something that few other animated works can boast!
Pop quiz! Which of the following are 8-bit images?
Believe it or not, only the second one from the right is 8-bit. “B-but, but the NES and the Gameboy were both 8-bit systems!” you say. Yes, well, maybe it’s time we actually examine what exactly “8-bit” means.
In Computer Imagery
Let’s start with what bits mean for pictures. There are two basic ways of composing pictures: color channels and indexing. In a picture that uses color channels, each color is represented by a mixture of primary colors with each primary color composing one of the image’s color channels. These colors are red, green, blue, and sometimes an additional “alpha” channel that represents opacity (i.e. how much you can’t see through it). Every pixel in the image is a combination of these channels.
The number of bits dedicated to each pixel is known as the image’s color depth. As you may know, bits are binary digits, hence the name (binary digit). Because of this, every sequence of bits can represent 2n values (where n is the number of bits used). That means an image with a color depth of three—which is to say one bit per channel—can have two shades of red (fully black and fully red), two shades of green, and two shades of blue, which combine for a total of eight (23) colors. In today’s day and age, most images either have a color depth of 24 for plain R.G.B. or 32 for R.G.B.A., dedicating eight bits (one byte) to each color channel. That means R.G.B. images these days can contain up to 16,777,216 colors. Any more than a byte per color channel results in diminishing returns.
The number of bits dedicated to each pixel is known as the image’s color depth.
As you can imagine, three bytes per pixel adds up quickly on a console that only has 2 kilobytes of video R.A.M. While it’s easy to forget in this age where most computers typically have four to sixteen gigabytes of R.A.M. and terabytes of storage, space—both memory and long-term storage—was a valuable commodity back in the 80’s and 90’s. That’s where color indexing comes into play. Instead of storing color values per pixel, indexed images have a set of color values stored in a lookup table (i.e. the palette) with each pixel being represented by a single number that refers back to a position in the lookup table. For instance, if the color in position 5 of the table is red, then every pixel with the value 5 will be displayed as red. While this would limit the number of colors in an 8-bit image to 256, that’s 256 out of any of the thousands or millions of 16-bit or 24-bit colors available.
So, knowing this, where does this leave the NES’s graphics? An NES sprite consists of four colors, three visible and one transparent. That makes NES sprites 2-bit sprites. Don’t look at me like that, it’s the truth!
Now I’m sure some of you are thinking, “well, just because the sprites are only 2-bit doesn’t mean NES graphics aren’t 8-bit. The NES could produce way more than four colors at a time!” Okay, while we’re stretching terms a bit (or more accurately, crumpling them up and chucking them into the fireplace), I’ll be generous. The NES used the YpbPr palette, which consisted of 64 colors. So if we were to hypothetically classify the NES’s graphics in regards to the total number of colors available, that would mean the NES has 6-bit graphics. To add insult to injury, only 54 of the colors are useful, as many of them are identical shades of black. That said, the NES did include an additional three tinting bits (one for each primary color). While this increases the theoretical number of colors to 432, the tint is applied globally, meaning all sprites and tiles on screen were tinted at the same time. So, in actuality, it really just had 8 sets of 54 colors. What are we at now, 9-bits?
What Does 8-Bit Really Mean Then?
So why is it we call sprites from the NES “8-bit” when they’re actually 2/6/9-bit? Simple, they were from games released on an 8-bit console. Of course, that begs the question: “what’s it mean when we say a console is 8-bit?” The number of bits ascribed to a console refers to its central processing unit. The NES used a Ricoh 2A03 processor (or its counterpart the 2A07, used in P.A.L. consoles), which is an 8-bit processor.
So what’s makes an 8-bit processor an 8-bit processor? When someone says a processor is “X-bits”, they are referring to the processor’s word size. In computer science, the term word refers to the standard computational unit of a machine. That means an 8-bit processor has a word that’s eight bits long, which in turn means that the C.P.U. processes eight bits in one operation.
My System Has More Bits Than Yours!
Just how important is a system’s word size? These days, manufacturers don’t even mention their consoles’ word size, but back in the 80’s and 90’s, it was a major part of a platform’s marketing. The logic was if a system had a 16-bit C.P.U., it could process twice as much data as a console that only had an 8-bit C.P.U., right? Unfortunately, the reality isn’t that simple.
While technically a 16-bit C.P.U. processes twice as much data bit-wise as an 8-bit C.P.U. per calculation, we need to keep in mind what that data is actually representing. Consider the following binary numbers:
Both the 8-bit value and the 16-bit value equal 25, with each representing the contents of one word for an 8-bit and a 16-bit system, respectively. Notice how they appear identical save for the number of leading zeros? Words can be thought of like boxes: if the number placed inside is smaller than the box, then the excess space is filled with packing peanuts… or, zeros. This way, the processor doesn’t have to worry about how long the number’s binary representation is and instead just performs whatever calculations are needed on the entire word. All of that is to say that unless the calculation in question requires numbers that exceed the maximum value that can be represented with the number of bits in the system’s C.P.U., there isn’t actually any speed boost.
That said, when the largest number you can handle at one time is 255, those extra-bits really do make a difference, so maybe the 8-bit and 16-bit divide isn’t the best example.
In the end, the reason we call sprites from NES games “8-bit” isn’t because the graphics themselves are 8-bit, but because of a sort of linguistic cross-contamination. The systems of the 80’s and 90’s were advertised by exploiting consumer ignorance to turn technical terms into marketing buzzwords, resulting in the systems having much of their identity tied to these terms. Because of that, anything associated with the consoles from that era is going to be collectively referred to by the one unifying descriptor available: 8, 16, 32, or even 64-bit. In the end, it’s ultimately harmless; these terms have an understood meaning and are thus perfectly descriptive in the context in which they’re used. Really, the only real confusion this causes is that I’m somehow okay with it; normally I’m the type go on a long rant whenever anyone says “Ethernet cable” when they really mean “Cat-5”.