Inventing the Atari 2600 (1983)
spectrum.ieee.org
spectrum.ieee.org
That's some rose-coloured glasses right there if there ever were any.
"You know, we COULD give this thing hardware sprites, independent video and audio chips!" "No! Think of the game programmers! They thrive on constraint!"
My money is on the money.. The cheapest design that still allowed (the best programmers to make) reasonably good games.
That said, the system was enjoyable to play when I was a kid, and it's enjoyable to read about now, great article!
“Over two days, MOS and Cyan engineers sketched out a 6502-based console design by Meyer and Milner's specifications. Financial models showed that even at $25, the 6502 would be too expensive, and Peddle offered them a planned 6507 microprocessor, a cost-reduced version of the 6502, and MOS's RIOT chip for input/output. Cyan and MOS negotiated the 6507 and RIOT chips at $12 a pair“
Programming used to be an art.
Even arcade games of the era (late 1970s) tended to use framebuffer displays. The mechanic of the invaders slowly speeding up as they were picked off in Space Invaders (1978) stems from the fact that the fewer invaders on screen, the faster the CPU could blit them all.
So much graph paper...so much conversions of binary to hex.
The 4A was a nerfed machine in general: its powerful 16-bit CPU could only access directly 256 bytes of RAM, with the rest being mediated through the video chip. Its built-in BASIC was both slow, being written in GPL bytecode, and nerfed in that it provided virtually no direct access to the machine's features and actually locked you out of some of them, like bitmap and multicolor mode and even sprites. Extended BASIC got you sprites and some other features, but you still needed the expensive PEB in order to load machine code routines.
These limitations were tragic, as the machine itself was rather powerful even compared to machines from a few years later, and there wasn't much reason to limit it except that TI saw it as a giant version of their calculators and wanted it to be cartridge-driven with only the barest allowable user programmability.
I was "lucky" enough to get a 99/4a early on, then a job at Deere converting DNOS systems to Xenix and TI System V on 68000 NuBus.
But you look at that fast scrolling routine in Parsec, or something like "Don't Mess with Texas" (https://www.youtube.com/watch?v=ZhSUhE03XFw) and you wonder what might've been.
/Just/ fast enough. One can actually emulate a normal framebuffer on the 2600 if there's extra RAM on the cartridge. Or display a bitmap image from ROM. Since the 2600 can only draw from shift registers, including two 1-bit tall by 8-bit wide "sprites", one has to position the sprites to interleave, and then load the correct byte values into the shift registers, the exact cycle before it's clocked out to the display. There are 76 cycles during a scanline, and without self-modifying code it takes a minimum of 8 cycles to do the right kind of load-store for a single sprite. Add some accounting overhead, and there's just enough time to do this 6 times per line, giving a practical resolution of 48 pixels horizontal. (My attempt has 5 cycles spare in the main loop, IIRC.)
One can double the 48 pixels further by interlacing. Switching between two frames offset by one pixel, yielding an effective 96 x 96 pixels when motion-blurred together. This is the technique by which the high-resolution title screens of some later and homebrew games are displayed.
The processor is lock-stepped with the CRT beam the whole time. It runs the loop of load/store instructions typically 192 times for each of the 192 scanlines drawn. A hard real-time obligation 60 times a second that uses 70% of your CPU time. Any game logic or calculations, detecting the controller inputs, etc. must be left to the short vertical blanking interval. And there's no interrupt so you have to time most of this with cycle counting and polling the timer.
I really don't know how the wizards did it back in the day, without the excellent emulators available today. I found rewinding and single-stepping the 'hardware', comparing the TIA's registers with the scan cycle step-by-step, to be essential for getting it to display basically anything. Developers in the 70s just got an Atari 2600 motherboard with RAM or EEPROMs. No debugging tools per se, really.
Cycle counting is pretty important, but there is the WSYNC register to pause the CPU until the next Horzintal Blanking time. (Of course, this was patented and Nintendo avoided it in the NES/Famicom, although some mappers had a similar thing (and interrupts!)
1) they would start with a working kernel from an existing game, and incrementally modify it to create a new kernel for a new game.
2) they would code 2-dimensionally on large sheets of graph paper, where each cell corresponded to both a 6507 CPU cycle and a portion of the horizontal scan line.
By writing out the instructions this way, they could visually check that the code would execute at the correct time.
Not really true. The Famicom(identical tech specs to the NES) was released in 1983 while the VCS came out in 1977. There's also a big difference betwen 2KB of ram plus 2KB dedicated video vs. the 128 bytes of an Atari 2600.
https://mitpress.mit.edu/books/racing-beam
https://en.wikipedia.org/wiki/Racing_the_Beam
https://www.amazon.com/Racing-Beam-Computer-Platform-Studies...
It goes in to deep detail on a handful of Atari games, and discusses the tricks and hacks the programmers used. If you're in development now and grew up on these games, it's a great book.
How it Happened, The Idea Factory, Dealers of Lightning, The Innovators, and Weaving the Web are still on the to-read list. If anyone has suggestions of which of those to read first I appreciate it.
Also recommend The Friendly Orange Glow, which is about PLATO
Also interesting: Konrad Zuse's "The Computer, My Life".
You beat me to it :)
I had an 18-month-old and a newborn and our lives were completely upside-down ... and I could not put that book down.
At 4am ...
The Atari age (late 70s - mid 80s) was my 'golden era' and RtB gave so much tech detail and explained the 'magic' I remembered. The doom era was... a bit beyond me. I played it a bit and I was impressed with what I saw at the time, but was working 3 jobs while going to college, so never got immersed in that world.
Yeah, the original Pac-Man on the Atari 2600 sucked, and has nothing to do with why it's popular today. Any of the Atari 2600 baseball games of its era also sucked.
> its flexible design
The only thing "flexible" about the Atari's video chip, the TIA, is that you can choose what to do with each scan line. Too bad you are so limited on what you can actually do on that scan line and need insane tricks to get things like 48 useable 160x200 resolution pixels in a row for score display. On top of that, you only have 128 bytes of RAM.
It's fun to program if you like constraints, but programmable sprites, nametables, and sound channels that can play musical notes might be considered funner.
The Atari 2600 has great charm because so much was done with something so primitive, and it's awesome to see new games developed with it with increased RAM and mapper chips. A new chess game But hardware with better capabilities may have been just as popular if available for $199 in late 1970's dollars. Arcade games of the time with much more flexible display hardware were also popular.
2600: US$190 in 1977, sold 30 million units as of 2004.
Colecovision: $175, 1982. 2 million units sold.
Intellivision: US$275 in 1979, sold 3 million.
Pac-Man for the 2600: 1982, 8 million units sold.
The 2600 was discontinued after the technologically-superior Intellivision and Colecovision were discontinued. The Colecovision cost less than the Atari when it came out and still couldn't move more consoles than Atari moved copies of Pac-Man.
Technically I guess the Intellivision and Colecovision were competing with the 5200 (1982, $270, 1 million sold) but none of them lasted more than a couple of years, versus the 2600 finally going out of production for good in 1992.
(All data from Wikipedia except for the Coleco and 5200's launch prices, which came from an IGN page listing launch prices.)
While the Atari 800 and Amigas are my favourite systems, I'm not a fan of the Atari 2600. I'll take the Mattel Intellivision or Coleco ColecoVision any day.
The only 2600 game I liked was Frostbite but it's available on the Commodore 64 now so...
[0] https://en.wikipedia.org/wiki/Television_Interface_Adaptor
There also was a “Stella Programmer’s Guide”, which discussed how to program the TIA (https://cdn.hackaday.io/files/1646277043401568/stella.pdf)
Elsewhere, Chuck Peddle claimed only the chips on the top of the barrel worked. The rest underneath were duds.