CoCoVGA currently supports these types of NTSC artifact color emulation:
- Standard - this is simple emulation where monochrome pixels are taken two-at-a-time to produce one of four colors while preserving the resolution of the current RG monochrome mode.
- "Fat bits" - similar to simple emulation, however pixels are doubled in width.
- "smArtifact" - a simple 6-tap filter which attempts to improve readability of text while producing more colors than either standard or "fat bits" modes. 8 colors can be produced by various 6-pixel patterns.
- MAME/MESS - a 6-tap filter which is a port of the C algorithm embedded within MAME/MESS for 6847-based NTSC systems such as the Color Computer. 16 colors can be produced by various 6-pixel patterns. Default color register values were also interpolated using the MAME/MESS algorithm.
Color Palettes
As described in Software Mode Control under CoCoVGA register addresses and Artifact Palette Register Summary, there are two sets of 16 (for a total of 32) artifact/VG6 palette register pairs. Each set of 16 register pairs applies to a particular CSS (6847 VDG Color Set Select control pin). On the Color Computer and Dragon, these are black/white and green/dark green color sets.
Color Selection
In the following tables, colors are specified as 15 bit binary values. The most significant 5 bits specify red, the middle 5 bits specify green, and the least significant 5 bits specify blue. For more details about how to interpret these values, see Software Mode Control's General Palette Register Description.
Standard/Fat Bit Color Selection
Only palette register pairs 0, 9, 10, and 15 are used from each set for each CSS. Rows highlighted in green are swapped when artifact color swap is requested by way of the button board or Software Mode Control's color swap bit within the artifact register.
2-bit Pixel Pattern | Artifact Palette Register Pair | CSS 1 defaults | CSS 0 defaults |
2'b00 | 0 | black 15'b00000_00000_00000 | dark green 15'b11111_11111_11111 |
2'b01 | 9 | red 15'b10100_00000_00000 | 15'b00000_11000_00000 |
2'b10 | 10 | blue 15'b00000_00000_11000 |
15'b00000_10000_00000 |
2'b11 | 15 | buff (white) 15'b11111_11111_11111 |
green 15'b00000_11111_00000 |
MAME/MESS Color Selection
All 16 palette register pairs are used for each CSS. In the below, a letter "x" denotes a "don't care," meaning that the bit may either be a 0 or a 1. Note that odd palette register pairs can be swapped with their next even register pair when artifact color swap is requested by way of the button board or Software Mode Control's color swap bit within the artifact register. For example, dark purple (palette register pair 1 for CSS 1) and dark green (palette register pair 2 for CSS 1) could be swapped depending on the color swap configuration of CoCoVGA.
6-bit Pixel Pattern |
Horizontal Position (0 = even, 1 = odd, x = even or odd) |
Palette Register Pair | CSS 1 defaults | CSS 0 defaults |
6'b00000x | x | 0 | black 15'b00000_00000_00000 |
dark green 15'b11111_11111_11111 |
6'b000010 | 0 | |||
6'b000011 | 0 | |||
6'b010010 | 1 | |||
6'b10000x | 1 | |||
6'b10010x | 0 | |||
6'b110010 | 1 | |||
6'b000110 | 0 | 1 | dark purple 15'b00100_00000_00100 |
15'b00000_01000_00000 |
6'b000111 | 0 | |||
6'b01100x | 1 | |||
6'b100110 | 0 | |||
6'b100111 | 0 | |||
6'b11100x | 1 | |||
6'b000011 | 1 | 2 | dark green 15'b00000_00100_00000 |
15'b00000_01000_00000 |
6'b010011 | 1 | |||
6'b100011 | 1 | |||
6'b11000x | 0 | |||
6'b110010 | 0 | |||
6'b110011 | x | |||
6'b000110 | 1 | 3 | light purple 15'b11100_11000_11100 |
15'b00000_11000_00000 |
6'b01100x | 0 | |||
6'b100110 | 1 | |||
6'b001100 | x | 4 | light green 15'b11000_11100_11000 |
15'b00000_11100_00000 |
6'b001101 | 0 | |||
6'b101100 | 1 | |||
6'b00010x | 0 | 5 | dark blue 15'b00000_00100_10100 |
15'b00000_01000_00000 |
6'b01000x | 0 | |||
6'b000010 | 1 | 6 | dark red 15'b01100_00100_00000 |
15'b00000_01000_00000 |
6'b001000 | 1 | |||
6'b100010 | 1 | |||
6'b101000 | 1 | |||
6'b00010x | 1 | 7 | light blue 15'b01100_10000_11100 |
15'b00000_10000_00000 |
6'b10010x | 1 | |||
6'b001000 | 0 | 8 | light red 15'b11100_11000_01000 |
15'b00000_10100_00000 |
6'b001001 | 0 | |||
6'b00101x | 0 | |||
6'b00101x | 1 | 9 | red 15'b11100_01000_01000 |
15'b00000_11000_00000 |
6'b01101x | 1 | |||
6'b101000 | 0 | |||
6'b101001 | 0 | |||
6'b10101x | x | |||
6'b11101x | 1 | |||
6'b01010x | x | 10 | blue 15'b00000_10000_11100 |
15'b00000_10000_00000 |
6'b010110 | 0 | |||
6'b010111 | 0 | |||
6'b11010x | x | |||
6'b110110 | 0 | |||
6'b110111 | 0 | |||
6'b000111 | 1 | 11 | cyan 15'b11000_11100_11100 |
15'b00000_11100_00000 |
6'b010111 | 1 | |||
6'b01110x | x | |||
6'b100111 | 1 | |||
6'b110111 | 1 | |||
6'b11110x | 1 | |||
6'b001110 | x | 12 | yellow 15'b11100_11100_01100 |
15'b00000_11100_00000 |
6'b001111 | 0 | |||
6'b101110 | x | |||
6'b101111 | 0 | |||
6'b11100x | 0 | |||
6'b11101x | 0 | |||
6'b01000x | 1 | 13 | dark dark blue 15'b00000_00000_00100 |
15'b00000_01000_00000 |
6'b010010 | 0 | |||
6'b010011 | 0 | |||
6'b11000x | 1 | |||
6'b001001 | 1 | 14 | dark dark red 15'b00100_00000_00000 |
15'b00000_01000_00000 |
6'b10000x | 0 | |||
6'b100010 | 0 | |||
6'b100011 | 0 | |||
6'b101001 | 1 | |||
6'b001101 | 1 | 15 | buff (white) 15'b11111_11111_11111 |
green 15'b00000_11111_00000 |
6'b001111 | 1 | |||
6'b010110 | 1 | |||
6'b01101x | 0 | |||
6'b01111x | x | |||
6'b101100 | 0 | |||
6'b101101 | x | |||
6'b101111 | 1 | |||
6'b110110 | 1 | |||
6'b11110x | 0 | |||
6'b11111x | x |