Atari 2600 Service Manual [pdf]
console5.com
console5.com
[0] https://atariage.com/store/index.php?l=product_list&c=24
[1] https://atariage.com/forums/topic/276956-zeropage-homebrew-t...
The TIA had some delay bits/latches so you could write player 1 data and player 2 data on alternate lines, but with one delayed so they'd appear on the same line.
Your actual game code was expected to run in VBLANK.
You can of course alter registers while the line is being drawn, if your timing is precise and your data is prepared, and that's the basis of doing advanced things like 6 digit scores and non-symmetrical playfields.
https://www.timexsinclair.com/computers/sinclair-zx80/
And the Apple-1 which is also a very elegant solution to the same problem but without some of the drawbacks (it does have video memory but the CPU isn't slowed down much):
The ZX81 used the CPU for generating the video signal, but it had a character ROM (small, of course. https://en.wikipedia.org/wiki/ZX80_character_set), used its copious (ha!) memory for storing data for the entire screen, and shipped with the necessary software so that it, when left alone, would show the contents of the current screen without aid from the currently running program.
IIRC, ZX80 video memory wasn’t a width × height matrix, but more like in a text file, with a special byte value separating lines, making empty lines cheap (you only needed to store the EOL token), and left-aligned text cheaper than right-aligned text, memory-wise (leading spaces ate into memory use, trailing ones needn’t be stored). The system needed that because that memory came from your one kilobyte of RAM. Filling the screen would use a large fraction of available memory)
If you’re interested in a quick writeup with some pointers to reference material and sample code, check out my post: https://blog.classycode.com/the-atari-2600-a-personal-journe...
You might enjoy it.
Oh, there are lots of tricks. And when the tricks run out, you run on desperation, you rewrite your display kernel for the fifth time, to get 8 precious cycles back just before the score line. Victory is sweet.
I had a cow-orker (we were both out of the 8-bit computer games division) who decided it would be good for his career (at Atari) to learn 2600 game programming. He got a Stella devkit, a copy of the same dev documentation that has been published everywhere (that's all that anyone got at the time), and over the next four months or so I watched him slowly go mad. I'm not kidding, his mental state was terrible. About then Jack Tramiel bought the company and we all got to work on different stuff, yay.
The 2600 hackers over in Consumer games had a reputation for being pretty wild and unhinged. I am half serious when I say that it was the machine that did it to them.
Another way of looking at it is that the video "RAM" is actually the phosphor on the display screen, persisting each scanline when written until refreshed on the next frame.
And iiuc it's only abt 40% of the line. You have to update it during the line! and sometimes it's fwd and sometimes bkwd so you can't simply let it repeat a simple pattern!
"Sometimes forward and sometimes backward" would only apply to the three registers of playfield bits, and is fully controllable by software, in the CTRLPF register.
https://www.ecosia.org/images?q=plastic%20flowchart%20templa...
I'll tell you how to service an Atari 2600, though. Even in 1982, chuck it in the dumpster and head down to K Mart for a new one. Put that in a flowchart.