According to wikipedia, the Atari 2600 had a resolution of 160 x 192 pixels. had it been monochrome, it would had needed 160*192 = 30,720 bits of video RAM, or 3,840 bytes.
Even more taking colour into account as the VCS could do 16 colours in 8 shades each. That'll be 7 bits per 'pixel' for a total of 215,040 bits or 26.25 KiB - not to mention that the PAL version could do 228 lines instead of 192. All with the same 128 Bytes not being used ::))
Note that already the basic Atari 2600 Wikipedia article explains the design as being not based on a frame buffer, but 'Racing the Beam'.
The corresponding TIA article (also linked in the very Wikipedia entry cited in your question) provides a dedicated section to its RAM-Less-Design.
How did managed to reach that resolution with that memory?
First of all, you're mixing up resolution - which is the number of screen positions that can be addressed - with placeable elements - that is the graphic items that can be present. In frame-buffer systems this is usually equal, with each addressable element having its own data storage. That's not true for non-frame-buffer systems.
The VCS was a non-frame-buffer system. The TIA 'graphics' chip worked more like today's GPUs. It rendered a new picture every frame from live data it got passed by the CPU. Think of it like DMA feeding the GPU (*1). And, while those elements (background, player, missiles, ball) could be places at (almost) every location, there weren't enough elements to also fill all locations.
Since rendering was done on a line by line basis, the base resolution was not 160 pixel, but a background of:
- 40 blocks, each 4 pixels wide, using two colours (out of 128).
Those blocks could be overlayed at any pixel position (0..159) by
- two 8 pixel wide 'players' using one colour each,
- two 1, 2, 4 or 8 pixel blocks called 'missiles', using the same two colours, and
- one 1, 2, 4 or 8 pixel wide block called 'ball', using one of the background colours.
That way, a single screen line used anywhere from 20 bits (3 bytes) for a simple background with no sprites, up to 8 bytes with sprites. All that data got transferred live, every line (*2), from CPU into TIA Registers.
Since all of that data was provided by the CPU, it could be sourced from any location, RAM, ROM or even code. Fixed screen data came almost always from ROM. For variable data RAM only held pointers to ROM sections with those bitmaps. If at all, it was only copied to RAM for some critical high speed sections.
Using some clever program timing it was possible to reload sprites and background during line display improving resolution a bit. For example maximum resolution could be reached for up to 48 consecutive pixels, but only once per line. Or 4-8 times 8 pixels within defined distances. But at that point we're way past beginner programming :))
*1 - Which is what the later Atari home computers did - their video design is a much powered up extension of the VCS. That's why they allow such awesome graphics without much programming.
*2 - Well, to be exact, only on lines with new content. As long as no timing tricks were needed, the TIA would repeat basic lines on their own.
160x192. It had a resolution of160. And it's not160by anything. It's160pixels. Source: David Crane – Ian Boyd Mar 20 '24 at 19:56