Retro games did not simply have fewer pixels because their makers lacked ambition. Their visual language was shaped by machines built to perform a very particular job: turn a limited set of artwork, maps and position data into the electrical signal a CRT television could display. For much of console history, graphics hardware was not a broadly programmable processor. It was a purpose-built picture generator with firm rules about what it could draw, how it could draw it and, crucially, what it had to leave out.
That is why technical behavior became part of the look of old games. Repeating background tiles, compact sprites, occasional flicker and careful use of color were not merely stylistic choices. They were practical answers to hardware that could render efficiently but could not execute arbitrary graphics code. The route from that world to present-day consoles was gradual: from scanline-driven image chips, through custom multi-chip 3D designs, to hardware based on the programmable GPU model familiar from PCs.
The NES picture processor and the meaning of sprite flicker
The Nintendo Entertainment System is an especially clear example because one of its limitations is immediately visible in Super Mario Bros.. Put too many enemies along the same horizontal band of the screen and some will flicker. This is not a random glitch. The NES graphics hardware can handle no more than eight sprites on a single scanline, meaning one horizontal line of the image. When a ninth sprite would be needed, the system drops it; games can alternate which sprites are shown from one frame to the next, producing the familiar flicker.
Its graphics chip, the Ricoh 2C02 Picture Processing Unit, or PPU, did not run game code. The CPU ran the game logic and prepared the data, while the PPU converted that data into a picture. It pulled tile artwork from the cartridge and consulted lookup tables in memory, then produced the television image one scanline at a time.
A tile is a small reusable block of graphics. On the NES, the display was built from 8-by-8-pixel tiles, at an output resolution of 256 by 240 pixels. Rather than storing a wholly unique illustration for every part of every level, a game could keep a relatively small library of tile shapes and use a map to specify where each one belonged. Reuse is the essential trick: one grass, brick or cloud tile can appear repeatedly across a scene without requiring new artwork data for each appearance.
The PPU worked from roughly 10kB of memory. Around 8kB held tile shapes on the cartridge, while 2kB of console RAM held one or more background maps. Small dedicated memories within the chip also retained details for up to 64 sprites, including their location, form and orientation. A sprite is an independently positioned image element, commonly used for a player character, enemy, projectile or other moving object.
Those figures can sound restrictive now, but the important point is not simply that the memory budget was small. The PPU was engineered around an immediate timing obligation: it had to provide pixels in lockstep with a CRT’s scanning electron beam. As the beam progressed across each line, the chip determined the relevant background tile, checked the sprites that occupied that line, and selected the pixel to send to the TV.
Because the picture was actively being drawn, the CPU could not safely rewrite it at arbitrary moments. Developers had to work within the display’s timing, rather than treating the screen as a freely editable canvas. The system’s visual limits were thus rules embedded in the process of making a frame, not just a checklist of cosmetic restrictions.
Related coverage includes How Retro Consoles Drew Graphics Before Programmable GPUs.
Scanlines were not an abstract concept
A scanline is one horizontal row in the displayed image. It matters so much to early console design because CRT televisions created their pictures line by line. The NES PPU’s eight-sprite limit applies to each such row, which explains why a crowded vertical arrangement may behave differently from a crowded horizontal one. The constraint tracks the path of the television display hardware itself.
Earlier machines could demand even more direct involvement from the CPU. The Atari 2600’s Television Interface Adaptor had no frame buffer. A frame buffer is memory that holds a complete or substantial image before it is displayed. Without one, the Atari 2600’s processor had to supply new values for every scanline as the CRT beam drew it. In other words, the CPU was involved in feeding the picture at the pace the television required.
Go back another five years to the 1972 Magnavox Odyssey and the arrangement is more elemental still. It had neither a processor nor memory, drawing dots and lines through discrete diode-transistor logic. These systems were designed around CRT behavior from the outset, which is one reason their graphics can appear more at home on an old CRT than on a modern display. The output, timing and intended display technology were closely linked.
This does not mean every older console used the same method or carried the same bottlenecks. It means the underlying philosophy was widespread from the late 1970s into the 2000s: a dedicated display-oriented component received instructions and data from a CPU, then generated an image according to fixed hardware capabilities. The chips could draw very quickly within their prescribed jobs. They could not be repurposed by a game to run arbitrary graphics programs.
Early 3D did not instantly make a modern GPU
The move to 3D changed what consoles had to calculate, but it did not immediately create the unified, programmable graphics setup now associated with a GPU. The PlayStation 2 illustrates how specialized roles could be distributed across custom silicon.
Sony revealed the PS2’s chips in March 1999. Its CPU, the 128-bit Emotion Engine developed with Toshiba, ran at about 295 MHz in final consoles. The separate Graphics Synthesizer ran at about 147 MHz. Yet the Graphics Synthesizer was not responsible for every aspect of 3D rendering. By the point a triangle arrived at that chip, its position in the frame had already been worked out. The Graphics Synthesizer’s job was to fill that triangle with color and texture.
The earlier work was performed on the Emotion Engine through two vector units. VU0 could be assigned miscellaneous tasks, while VU1 was primarily used for 3D transforms. A 3D transform is the mathematical work that takes model information and places it into the view that will become the screen image, yielding triangles in their intended on-screen positions. Engineers involved with the design said one vector unit could handle 85 million such transforms per second.
This division matters because it corrects an easy assumption: a chip called a graphics processor does not necessarily perform all graphics computation. On the PS2, geometry—the positioning work needed before triangles could be filled—was handled elsewhere. The final picture was the product of a coordinated pipeline, with different processors doing different categories of work.
Sony had already used the term “GPU” for the Toshiba-designed graphics chip in the 1994 PlayStation, years before NVIDIA promoted the GeForce 256 as the first GPU in 1999. But branding alone does not settle the technical distinction. The more consequential definition of a modern GPU in this story is programmability: the ability for developers to write small programs that run on the graphics hardware itself.
Why programmable shaders changed the model
A shader is a small program used by graphics hardware. Vertex shaders operate on vertex data, the points used to define geometry such as triangles. Pixel shaders determine how individual pixels are treated. What matters is that developers can write these programs, giving them a way to define parts of the graphics process rather than only supplying data to a completely fixed pipeline.
NVIDIA’s GeForce 3, announced in February 2001, was the first GPU to let developers program both pixel and vertex shaders. That is the key break from the older console arrangement. Fixed-function hardware offers a set of predetermined operations; a programmable GPU lets a game supply limited programs for stages of the rendering process. It remains specialized hardware, but it is no longer restricted to one immovable recipe for producing an image.
Microsoft’s original Xbox made that transition unusually visible in the console market. NVIDIA and Microsoft signed their agreement in March 2000, and the console was announced five days later. The finished system launched in November 2001 with an Intel Pentium III-class CPU and a custom NVIDIA graphics processor based on the GeForce 3. It had 64MB of memory shared by CPU and graphics hardware, plus an 8GB hard drive.
The Xbox was therefore a major departure from the long era of bespoke, fixed-function console picture chips. It paired a PC-derived processor approach with a graphics design rooted in the first generation of programmable-shader GPUs. For readers interested in the broader relationship between PC setups and play spaces, a second monitor can make PC gaming and everyday multitasking far less fiddly.
Console hardware did not become PC hardware overnight
The original Xbox did not mean every console immediately adopted the same CPU strategy. The Nintendo GameCube launched in the same month as the Xbox with an IBM PowerPC processor. PowerPC designs then remained common in major consoles for roughly another decade: the Xbox 360 used three IBM PowerPC cores in 2005; the PlayStation 3’s Cell chip, created by Sony, Toshiba and IBM, was built around a PowerPC core; and the Wii and Wii U used updated versions of the GameCube’s IBM processor.
Graphics hardware had moved closer to PC-derived designs earlier than console CPUs had. The Xbox 360 used an ATI graphics chip, while the PS3 used one from NVIDIA. The more complete convergence arrived with the 2013 PS4, which employed eight AMD CPU cores and a graphics design derived from AMD Radeon PC cards.
Current PlayStation 5 and Xbox Series X hardware continues that direction: both combine eight AMD Zen 2 CPU cores and AMD RDNA 2 graphics on the same chip. That arrangement contrasts sharply with the NES model, where a PPU read small amounts of tile and sprite data and emitted a timed TV signal. It also differs from the PS2’s explicitly divided geometry and rasterization workload, even though specialization remains central to graphics processing.
What the hardware story changes when looking at retro games
The practical value of this history is not that every flickering enemy, tiled wall or textured triangle needs to be treated as a technical artifact first. It is that visual design and hardware design were inseparable. In the NES generation, character placement could collide with a scanline sprite limit. In early 3D, a game had to organize work across distinct pieces of custom silicon. With programmable shaders, developers gained new control over parts of the graphics pipeline.
Those eras should not be reduced to a simple ladder from primitive to sophisticated. The older systems were extremely capable at the narrowly defined tasks for which they were built. The Ricoh 2C02 could efficiently assemble a 256-by-240 image from tiles and sprites while synchronizing with a CRT. The PS2 could split intensive 3D work between its vector units and Graphics Synthesizer. The original Xbox’s GPU foundation represented a different kind of flexibility rather than merely a larger number.
Ultimately, the economics shifted along with the technology. Once established GPU architectures could meet a console’s budget, designing a completely new graphics architecture for each machine made less sense. But the recognizable quirks of older consoles remain useful evidence of how their systems worked. NES sprite flicker is not just nostalgia; it is the visible edge of a machine drawing a game under a hard, elegant rule.







