[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Apple II colors (was: Apple IIe power...)



Pim Blokland wrote:
> 
> Jonathan Schattke wrote:
> >
> > Well, technically, Hi-res can display all 16 colors of lo-res.
> 
> I'd like to see you do that! My record is 12, and I haven't been able
> to produce more, unless it was with dithering (i.e. displaying
> different colors on odd and even lines).
> 
> > Half-pixels could be made on byte boundaries by changing the hi bit of the
> > adjacent bytes, allowing the display of
> > Dk Green
> > Dk Purple
> > Brown
> > Dk Blue
> 
> This for instance, is not possible: there are only two positions in
> which you can put a half pixel (odd and even), so that you cannot get
> dark green and dark red (purple). Only brouwn and dark blue are possible.
> Unless you know something I don't. Show me!

HCOLOR=3
HPLOT 0,0 TO 0,10
HPLOT 1,11 TO 1,20
HPLOT 6,11 TO 6,20
HPLOT 13,0 TO 13,10
HCOLOR=4
HPLOT 13,11 TO 13,20
HPLOT 20,0 TO 20,10

Shows that what you say is indeed the case, you cannot display the dim purple
and dark green.

Here's why:
Every pixel is passed through the same colorburst circuit, which does not care
about what type of mode the system is in (if it is on).
This circuit has 4 base states, oscillating between mgnta, blue, green, and
orange.  When a pixel is sent in, it will get the color of whatever the circuit
is currently ready to display.  Each of the 4 states has 8 colors, depending on
what bit pattern is being sent through:

0000	Black
1000    Dim color
1100    Normal color - hi-res mode colors
1010    Tinted grey
1110    Bright Color
1011    Mix of Dim Color & Color +2
1101    Bright Mix of Color & Color +3
1111	White

So, for Magenta, the first color, the resulting colors would be:
0000	Black
1000	Magenta
1100	Purple
1010	Purple tinted grey
1110	Bright Purple
1011	Magenta + Green = Yellow
1101	Purple + Orange = Pink
1111	White

The Low-Res generator stuffs the bit buffer with the nybble being displayed:
those possibilities are:

0000	Black
1000	Magenta (Base)
0100	Dark Blue (Base)
1100	Purple
0010	Dark Green (Base)
1010	Grey 1 - purpleish/Green fringes
0110	Blue
1110	Light Blue (Blue mixed with some magenta)
0001	Dark Orange
1001	Orange
0101	Grey 2 - orangish/blue fringes
1101	Pink (Purple with some Orange Added)
0011	Green
1011	Yellow (Green with some purple)
0111	Aqua (Green with some blue)
1111	White

Some colors are missing from this table, but the patterns normalize to these 16
colors.  The Color finges on the lo-res screen are artifacts of the colors
turning on in sequence and/or nor being off yet.

In the original Hi-Res mode, a pixel made 2 bits come on, so the typical
possibilities were:
0000	Black
1100	Purple
0110	Blue
0011	Green
00011=1001	Orange
1111	White

However, when a shifted bit is on a byte boundry, if the next byte did not
match, things would be odd:

0100	Dark Blue
0111	Aqua
0001	Dark Orange
000111=1101	Pink

Also, certain effects happen when you have a normal byte followed by a shifted
byte: the last normal pixel stretches another 1/2 pixel:

1110	Lt. Blue
00111=1011	Yellow

So, the colors which can be displayed staticly on the Hi-res screen are:

0000	Black
0100	Dk. Blue
1100	Purple
0110	Blue
1110	Lt. Blue
0001	Brown
1001	Orange
0011	Green
1011	Yellow
1101	Pink
0111	Aqua
1111	White

Dim Purple, Dark Green and both Greys are not availiable.  And that is 12, as
you note.

-- 
\  /\  /                                       If you aren't happy,
 VVizVVom - Wandering Kernel of Happiness           it's not my fault.
 ~~~> homepage at http://pages.ripco.net/~wizwom/ <~~~