sábado, 11 de febrero de 2012

RGBI: 4Bits = 16 colores

Dejando un poco de lado el tema de los 256 colores, he querido probar la entrada RGBI del monitor. Se trata de una señal de color de 4 bits, 3 de los cuales son RGB y el otro es la intensidad. Lo interesante de este puerto de entrada es que los niveles son TTL (Transistor-Transistor Logic), lo que quiere decir que es un puerto digital, por lo tanto el pin de Arduino se conecta directo al pin del monitor. El sistema RBGI es el utilizado por las tarjetas gráficas CGA (Color Graphics Adapter) utilizadas en los 80's.

Algunos modelos de Commodore 1084 tienen un conector D-SUB 9, el conector estándar de CGA. Este no es mi caso, mi conector es un DIN de 8 pins.

1. N/C - 2. Rojo - 3. Verde - 4. Azul - 5. Intensidad - 6. Tierra - 7. Sincronía horizontal - 8. Sincronía vertical
Imagen original (Autor: Mobius)



La paleta de colores RGBI es parecida que publiqué en el artículo RGB, pero con un tono más oscuro. Al utilizar un bit más, se multiplican por 2 los colores, resultado otra vez los mismos pero con un tono más claro.

El caso del color 6 es especial, algunos monitores utilizan el color, que según el RGBI sería el correcto (amarillo oscuro) y otros (IBM y cónicos) utilizan el marrón, que se consigue reduciendo a la mitad el componente verde. Mi monitor tiene marrón, ¿Es Commodore un clónico de IBM? No lo sé.




Así que he abierto el código "RGB_3Bits.ino" y haciendo una pequeña modificación y conectándolo al DIN8 he visto los 16 colores en mi monitor.


 
...

// Video out voltage levels
//                  RGBIVH
#define _SYNC     0b000000
#define _HSYNC    0b000001
#define _VSYNC    0b000010
#define _BLACK    0b000001
#define _BLUE     0b001001
#define _GREEN    0b010001
#define _CYAN     0b011001
#define _RED      0b100001
#define _MAGENTA  0b101001
#define _BROWN    0b110001
#define _LGRAY    0b111001
#define _GRAY     0b000101
#define _LBLUE    0b001101
#define _LGREEN   0b010101
#define _LCYAN    0b011101
#define _LRED     0b100101
#define _LMAGENTA 0b101101
#define _YELLOW   0b110101
#define _WHITE    0b111101

...

//video pins
#define R_PIN    32
#define G_PIN    33
#define B_PIN    34
#define I_PIN    35
#define V_PIN    36
#define H_PIN    37

...
 


Y como siempre...

Esquema de conexiones


Resultado en el monitor


Y, aunque pueda parecer un retroceso en mi investigación de la profundidad de color para la futura consola, no lo es, ya que por ahora es la forma más cómoda de trabajar al no haber componentes entre Arduino y el monitor. De hecho las dos míticas consolas de 8 bits de los 80's, NES y Master System, sólo utilizaban 52 y 64 colores respectivamente.

Pronto publicaré la pruebas que estoy haciendo con mapas de bits, por ahora podeis bajar el código RGBI aquí.

No hay comentarios:

Publicar un comentario