I wrote a program in AVR assembly language that generated video test patterns by bit-banging two bits of digital I/O. I connected two carefully chosen series resistors to those pins such that I would get 1 volt video into 75 ohms.
Crosshatch test pattern shows that sweep is linear and video bandwidth satisfactory.
The two bits of I/O gave me four levels: white, gray, black and sync. The levels weren't critical because analog television would find black and adjust everything else accordingly.
For timing I captured a base-band video signal on my digital storage oscilloscope. Then I would tune my horizontal and vertical loops to match the stored timing.
Gray bars were once a common video test pattern for brightness linearity.
I started making a cross-hatch pattern by generating white dots for every eighth dot and all white rows for every eight row. This used three out of my four levels.
I then changed this to generate gray bars using the one additional shade of gray.
I considered writing a pong game which would seem to be within the capabilities of the Atmel AVR Tiny12 processor. First I checked online and found that this had already been done with the less powerful PIC processor.
I later squeezed a simple version of Bill Mills' picture model into AVR. See Video Circles