A new colour display technology

Subject: A new colour display technology
From: "Andrew Davie" <atari2600@xxxxxxxxxxxxx>
Date: Sun, 22 Aug 2004 22:45:36 +1000
I thought I'd post this idea to the list, in case someone wants to have a go
at implementing it.  I don't have the time right now, but I do know it will
work.  This is a new technique for displaying colour graphics.

You may recall, some time ago we went through an interesting development
process which culminated in the Interleaved Chronocolor(TM) technique.  In a
nutshell, this technique had the red components only of a line of pixels on
one line, green components only, of the next line and blue components only
of the third line.  It then displayed successive frames (3 in total) where
the component colour for each line was successively the red pixels, the
green pixels, and then the blue pixels.

In summary, in three frames on any given scanline you'd see all the red
pixels only, then all the green pixels only, then all the blue pixels only.
And the successive lines would be 'out of phase' by displaying the
next-colour (red green or blue) from the line above.  And *finally* this
technique actually managed to look OK by preprocessing of the image -- 
separating an image into separate colour planes and then (and this is the
REALLY important bit) colour-reducing these planes to a single bit per pixel
WITH DITHERING.  The dithering was the ultimate important step to getting
the best quality from the technique.

OK, now here's the new technique;  We start with the same base frame as
before -- a single colour per line, with each successive line alternating
between red, green, blue.  Now we can consider each group of three scanlines
(for any pixel position) forming a RGB triad (ie: a visible colour to the
eye).  If this is ALL that we do, then we have an OK-looking image which
actually looks like it's in colour from a distance.  The memory requirements
are 1/3 of the original interleaved chronocolor(TM) technique, but this
technique is a lot less flickery.  Actually, it doesn't flicker at all.  So
it's an acceptable method.

But consider if we also combine the above two techniques with an interlaced
display.  The really nice thing about an interlaced display is that each
scanline of field 2 of a frame will be inbetween scanlines of the previous
field.  So, if our first field displayed an image as described above (ie:
with successive lines having RGBRGBRGB format), and we used an image for the
second field with successive lines offset by a colour position (ie:
BRGBRGBRG format), then as a part of the interlacing process of the TV, what
the eye would ACTUALLY see would be a combnied frame (interlaced) with a
very interesting potential combination of scanline/colour/pixels.

Consider a vertical representation of the lines we're displaying....

FIELD 1        FIELD 2
 R1               b1
 G2               r1
 B3               g1
 R4               b2
 G5               r2
 B6               g3

What we effectively see if we combine triplets of lines (two from one field
and the one inbetween from the other field) are

R1b1G2/G2r1B3/B3g1R4 etc,
and also  b1G2r1/r1B3g1/g1R4b2 etc.

we also get vertical triplets  R1G2B3 (1st three lines of field 1) and
G2B3R4 (2nd three lines) etc.
same for vertical triplets in field 2 (eg: b1r1g1)

These triplets all operate simultaneously (that is, they combine in the eye
to give an overall impression of colour for an area;  they do not
specifically refer to an individual pixel).  In fact, colours are shared
between multiple pixels.  But the overall effect of this two frame technique
with interlacing is;

* no flicker (other than interlacing, which we're all used to)
* 2/3 of the graphics memory requirement of interleaved chronocolor(tm)
* improved perceived resolution (we're doubling vertical resolution with the
interlacing anyway)
* a much nicer image overall.

OK, proof is in the pudding.  I will do this when I get time, but thought
I'd write it down in case I get run over by a truck.  I dub this technique
"Interlaced spasticolor(TM)"

Cheers
A


Current Thread