CGA
La Color Graphics Adapter (Adaptador de Gráficos en Color) o CGA, comercializada en 1981, fue la primera tarjeta gráfica en color de IBM (originalmente llamada "Color/Graphics Monitor Adapter"), y el primer estándar gráfico en color para el IBM PC.
Cuando IBM introdujo en el mercado su PC en 1981, el estándar CGA, a pesar de haber aparecido al mismo tiempo, era poco usado al principio, ya que la mayoría de los compradores adquirían un PC para uso profesional. Para juegos había otros ordenadores mucho más populares, y en aquella época no se consideraba que los gráficos en color tuvieran otro uso que el puramente lúdico. En consecuencia, muchos de los primeros compradores del PC optaron por la MDA (Monochrome Display Adapter), que sólo permitía la visualización de texto.
En 1982 se comercializó la Hercules Graphics Card, que permitía mostrar gráficos en monocromo a una resolución mucho mayor que la CGA, además de ser más compatible con la MDA, lo que perjudicó todavía más a las ventas de la CGA. Todo cambió en 1984 cuando IBM introdujo el PC AT y la Enhanced Graphics Adapter (EGA). Con ello, el precio de la antigua tarjeta CGA bajó considerablemente y se convirtió en una interesante alternativa de bajo coste, por lo que las nuevas empresas dedicadas a la fabricación de PCs clónicos la adoptaron rápidamente. Los PCs no-AT de bajo coste con tarjetas CGA se vendieron muy bien en los años siguientes, y como consecuencia muchos juegos fueron editados para ellos a pesar de sus limitaciones. La popularidad de la CGA comenzó a desaparecer cuando en 1987 la tarjeta VGA se convirtió en la nueva solución de alto nivel, relegando la EGA a los PCs de bajo coste.
La tarjeta estándar CGA de IBM incorporaba 16 kilobytes de VRAM, y permitía mostrar varios modos gráficos y de texto. La resolución máxima de cualquier modo era 640×200, y la mayor profundidad de color soportada era de 4 bits (16 colores). El modo más conocido, usado en la mayoría de los juegos CGA, mostraba 4 colores a una resolución de 320×200.
Aunque los 4 colores estaban considerados generalmente como el límite para la tarjeta CGA, era posible aumentar esa cantidad mediante varios métodos (algunos oficiales, otros no).
La paleta de colores de la CGA
'''Paleta completa de 16 colores CGA''' | |
---|---|
0 — negro #000000 |
8 — gris (oscuro) #555555 |
1 — azul #0000AA |
9 — azul intenso #5555FF |
2 — verde #00AA00 |
10 — verde intenso #55FF55 |
3 — cian #00AAAA |
11 — cian intenso #55FFFF |
4 — rojo #AA0000 |
12 — rojo intenso #FF5555 |
5 — magenta #AA00AA |
13 — magenta intenso #FF55FF |
6 — marrón #AA5500 |
14 — amarillo #FFFF55 |
7 — blanco (gris claro) #AAAAAA |
15 — blanco intenso #FFFFFF |
La tarjeta CGA funcionaba con monitores en color CRT RGBI. Estaba basada en el controlador de vídeo Motorola MC6845 y tenía una paleta de 16 colores. El rojo, el verde y el azul correspondían a cada uno de los tres rayos catódicos y el negro significaba que todos los rayos estaban casi apagados. El cian era una mezcla de los rayos verde y azul, el magenta de azul y rojo, y el marrón de verde y rojo. El blanco (o gris claro) era una mezcla de los tres rayos.
Los 8 colores restantes se conseguían mediante la activación de un bit de intensificación, consiguiendo una versión más brillante de cada color, aunque el gris oscuro no se podía distinguir del negro en muchos monitores. El diseño RGB + bit de intensificación de la CGA se denominaba RGBI.
El Commodore 128 utilizaba el mismo método para transmitir colores por su salida RGBI, por lo que se podían conectar los mismos monitores y mostrar los mismos 16 colores.
Existe cierta confusión respecto al color #6 en los monitores RGBI: siguiendo estrictamente el modelo de color RGBI, el color #6 debería ser amarillo oscuro (#AAAA00) (ver más abajo). Sin embargo, IBM optó por incluir circuitería adicional en el monitor en color 5153 para detectar el color #6 y rebajar el componente verde para convertirlo en un tono marrón más agradable (#AA5500), así que la mayoría de monitores "compatibles con CGA" imitan este comportamiento. La teoría predominante sobre esta decisión es que IBM pretendía que los colores se aproximaran a los del terminal del mainframe 3270, concretamente el 3279, pero esta información no está comprobada.
Modos de texto estándar
La CGA permitía usar dos modos de texto:
- 40×25 caracteres con hasta 16 colores. Cada carácter es un patrón de 8×8 puntos. La resolución efectiva de este modo es de 320×200 píxeles (con una relación de aspecto de 1:1.2), aunque no es posible acceder a los píxeles individuales. Por lo tanto, los patrones estaban limitados a uno de los 256 caracteres almacenados en un chip de ROM en la propia tarjeta, por lo que la tipografía de los modos de texto era fija y no se podía cambiar (aunque en una tarjeta IBM CGA original en un IBM PC original era posible seleccionar entre dos tipografías diferentes, normal o delgada, cambiando un jumper no presente en la mayoría de los clones). En este modo cada carácter podía tener un color primario y otro de fondo que podían ser escogidos libremente de la paleta CGA completa (ver tabla); por ejemplo, texto amarillo para un carácter, blanco sobre negro para el siguiente y cian sobre gris para otro. La tarjeta tenía suficiente RAM de vídeo para 8 páginas de texto diferentes en este modo.
- 80×25 caracteres con hasta 16 colores. Nuevamente cada carácter era un patrón de puntos de 8×8 (con el mismo juego de caracteres del modo de 40×25), con una relación de aspecto de 1:2.4. La resolución efectiva era de 640×200 píxeles, que al igual que en el otro modo no eran accesibles individualmente. Debido a que la cantidad de caracteres en pantalla de este modo era el doble, sólo 4 páginas de texto podían ser almacenadas en la RAM de vídeo.
Modos gráficos estándar
Paleta CGA fija de 4 colores #1 | ||
color por defecto | 5 — magenta | |
3 — cian | 7 — blanco (gris claro) | |
Paleta CGA fija de 4 colores #2 | ||
color por defecto | 4 — rojo | |
2 — verde | 6 — marrón (naranja) |
La CGA ofrecía dos modos gráficos usados habitualmente:
- 320×200 píxeles, como en el modo de texto de 40×25. Sin embargo, en el modo gráfico era posible acceder a cada píxel individualmente, aunque sólo 4 colores podían ser mostrados simultáneamente. Esos 4 colores no se podían elegir libremente de entre los 16 totales, ya que sólo había dos paletas oficiales para este modo:
- Magenta, cian, blanco y el color de fondo (negro por defecto).
- Rojo, verde, marrón/amarillo y el color de fondo (negro por defecto).
Activando el bit de intensificación era posible conseguir versiones más brillantes de estos colores.
- La relación de aspecto de 1:1.2 debía ser tenida en cuenta a la hora de dibujar grandes formas geométricas en la pantalla.
- 640×200 píxeles, como en el modo de texto de 80×25. Todos los píxeles podían ser accedidos libremente. Este modo era monocromo, permitiendo solamente los colores blanco y negro (aunque esto podía ser cambiado), con una relación de aspecto de 1:2.4.
En el modo de texto, los mapa de bits de las tipografías provenían de la ROM de caracteres, que sólo era accesible para la propia tarjeta. En los modos gráficos, en cambio, la salida de texto usaba dos tablas diferentes: los primeros 128 caracteres del conjunto eran obtenidos de una tabla en la BIOS en la dirección F000:FA6E, y los 128 restantes provenían de la dirección indicada por la interrupción 1F (0000:007C). Esta segunda mitad aparecía como espacios en blanco (o como caracteres sin sentido, depende de la implementación) a menos que fueran definidos explícitamente, normalmente por una utilidad como GRAFTABL o por el programa ejecutado.
El modo de vídeo compuesto
Aunque desconocido para muchos, existía un modo gráfico adicional de video compuesto de 160×200 (con relación de aspecto de 1.67:1), en el que se podían utilizar 16 colores diferentes. Este modo no utilizaba la tabla de colores CGA, sino que era más parecido al modo de "alta resolución duplicada" del Apple II, ya que ambos utilizaban una técnica similar. El modo compuesto fue raramente utilizado; la falta de soporte en la BIOS impidió que muchos programadores lo adoptaran, y el coste de un sistema IBM era tan alto que la mayoría de los compradores podían permitirse también el costoso monitor RGB. Sólo unos pocos títulos de software (la mayoría juegos) utilizaron este modo.
Una equivocación común es que el modo compuesto era soportado por algunas máquinas con monitor RGB, pero esto sería una contradicción teniendo en cuenta el funcionamiento de este modo. La explicación más probable es la creencia de que los modos de 160×200 del IBM PCjr / Tandy 1000 o el Amstrad CPC son lo mismo (son iguales en cuanto a resolución, pero no en cuanto a color y organización de memoria). Cualquier intento de activar el modo compuesto en un monitor RGB producía un resultado idéntico al modo gráfico de 640×200.
Otros modos gráficos y trucos
Tercera paleta fija CGA "trucada" | ||
color por defecto | 4 - rojo | |
3 — cian | 7 — blanco (gris claro) | |
Existía una serie de posibilidades oficiales y no oficiales que podían ser utilizadas para conseguir mejores gráficos.
- En el modo de 320×200, el color de fondo, que por defecto era el negro después de la inicialización, podía ser cambiado por cualquiera de los otros 15 colores de la paleta CGA. Esto permitía introducir cierta variedad y algunos efectos de destellos, ya que era posible cambiar el color sin tener que redibujar la pantalla.
- En el modo de 640×200, el color principal podía ser cambiado por cualquier de los otros 15.
- En los modos de texto, el color del borde (mostrado fuera del área de visualización, y normalmente negro) podía ser cambiado por cualquiera de los otros 15.
- Existía una tercera paleta de 4 colores para el modo de 320×200 que podía ser utilizada activando el bit de monocromo con el modo de color activado. Esto cambiaba los colores de paleta a rojo, cian, blanco y el color de fondo.
- Mediante una sincronización precisa, era posible cambiar de paleta mientras el contenido de la pantalla todavía se estaba dibujando, permitiendo usar cualquiera de las 3 en cada línea de escaneo. El mejor ejemplo de uso de esta técnica es el juego California Games [1] cuando se ejecuta en un 8088 a 4.77 MHz (en un ordenador más rápido no se obtendría el efecto, ya que se perdería la sincronización necesaria para cambiar las paletas en el momento adecuado)
- Se podían aproximar colores adicionales mediante dithering, pero la baja resolución lo hacía muy evidente.
Algunas de estas técnicas se podían combinar. Se pueden encontrar algunos ejemplos en juegos [2]. La mayoría de los títulos no utilizaron estas posibilidades, pero hay algunas excepciones sorprendentes.
El modo de 160×100 con 16 colores
Técnicamente este no era un modo gráfico, sino un truco realizado mediante el modo de texto de 80×25. Consistía en cambiar el registro que indicaba la altura de las celdas de los caracteres para que mostrara sólo 2 líneas por celda en vez de las 8 normales. Esto cuadruplicaba el número de líneas de texto visibles, de 25 a 100. Estos caracteres "comprimidos" no se mostraban completos, sino solamente las dos líneas superiores, de 8 píxeles cada una.
Archivo:ASCII.221.character.gif | Carácter 221. |
Archivo:Half-block.character.blue.red.gif | 221 con texto azul y fondo rojo. |
Archivo:Half-block.character.red.blue.gif | 221 con texto rojo y fondo azul. |
Archivo:ASCII.222.character.gif | Carácter 222. |
El carácter 221 del juego extendido de caracteres ASCII es un rectángulo que ocupa la mitad izquierda de la celda, mientras que el carácter 222 ocupa la mitad derecha.
Cada carácter podía tener un color diferente para el texto y el fondo, por lo que podía ser coloreado, por ejemplo, azul en la izquierda (texto) y rojo en la derecha (fondo), con la posibilidad de invertirlo intercambiando los colores de texto y fondo.
Usando el carácter 221 o 222, cada mitad de cada carácter podía ser usado como un píxel individual, lo cual daba un total de 160 píxels por línea horizontal. Así era posible mostrar 160×100 píxeles con 16 colores simultáneos y una relación de aspecto de 1:1.2.
|
Aunque suponía dar un rodeo considerable para conseguir el objetivo final de mostrar 16 colores simultáneos, funcionaba bastante bien [3] y este modo era mencionado (aunque no explicado en detalle) en la documentación oficial del hardware de IBM.
Usando otros caracteres para combinar el arte ASCII con esta técnica, era posible conseguir un nivel de detalle mayor.
La misma técnica de reducción de las celdas de texto se podía usar con el modo de 40×25, pero sólo tenía sentido combinándolo con arte ASCII, ya que de lo contrario la resolución resultante sería de sólo 80×100 [4] [5] [6].
Errores y errata
El error más notable del hardware CGA fue la "nieve" en el modo de texto 80x25. La VRAM en la tarjeta IBM CGA original no era de doble puerto, po lo que el acceso de lectura y escritura no era posible hacerlo de manera simultánea. Por ello se veían pixels aleatorios encendidos siempre que se escribía en la memoria al mismo tiempo que se leía. Este error fue reparado en la mayoría de los clones, pero aún existe en algunas iteraciones (como en el AT&T PC 6300).
La memoria CGA en modos gráficos era entrelazada, esto era una molestia para los programadores. Normalmente, la memoria de video es estrictamente lineal: la siguiente fila de datos de imagen corresponde a la siguiente fila de pixels. Pero con CGA, la siguiente fila de datos de imagen correspondía a la fila de pixels dos filas más abajo. Esto continúa así hasta el final de la pantalla y sólo entonces se comienzan a rellenar las filas vacantes. con lo que la primera mitad de la memoria de pantalla son las filas 0, 2, 4, etc., hasta el fin de la pantalla y la segunda mitad de la VRAM de la CGA es para las filas 1, 3, 5, etc. Esto añade pasos de cálculo para muchas operaciones gráficas en la CGA si el programador buscaba tener artefactos visuales'cuando actualizara la pantalla.
Amarillo Oscuro |
#AAAA00 |
IBM diseñó el monitor CGA 5153 para intencionadamente oscurecer el color indexado #6 de amarillo oscuro a marrón; sin embargo, algunos monitores clónicos no tenían ese circuito. En esos monitores y en monitores 5153 con le circuito defectuoso, el color idexado #6 permanecía amarillo oscuro (see color example).
La totalidad de la VRAM de una tarjeta CGA (16.384 bytes) no es utilizada por completo por todos los modos de video inicializados por la BIOS (texto en 40×25 y 80×25, gráficos de 320×200 y 640×200). Sólo estableciendo los modos de video manualmente usando los puertos de escritura de la CGA se pueden mostar los 16384 bytes como pixels individules simultáneamente.
Adaptadores rivales
CGA ha tenido dos principales competidores:
- Para negocios y procesado de texto, IBM lanza su Monochrome Display Adapter (MDA) al mismo tiempor que la CGA. La MDA produce texto en 80×25, dibujando cada caracter en una caja de 9×14 pixels, de los que 7×11 son el carácter en sí (lo que nos daría 720 x 350). Es claramente superior a los 8×8 de los modos de texto de la CGA. Debido al alto precio de la CGA en su momentos, MDA fué la elección preferida para los negocios.
- En 1982 aparece la Hercules Graphics Card (HGC), que no es fabricada por IBM. Ofrece un modo de texto en alta resolución compatible MDA y un modo gráfico monocromo de 720×348 pixels, mucho mejor que la máxima resolución que la CGA puede ofrecer. Por ello, incluso sin ningún tipo de capacidad de color, el adaptador de Hercules ofrece unos mejores gráficos monocromos y la posibiliad de trabajar con monitores mucho menos costosos lo convierten en la opción preferida por muchos. Al principio de 1985, programas emuladores residentes en memoria como SIMCGA permitían mostrar modos gráficos CGA en el modo gráfco de la Hercules (el resultado parecía dithering crudo). La Hercules es probalemente la tarjeta más utilizada para conectar monitores monocromo en la vida del IBM PC.
Un competidor menos utilizado fué la Plantronics Colorplus, una tarjeta CGA compatible que dobla la VRAM a 32 KB, lo que le permite utilizar 16 colores a 320×200 y 4 colores a 640×200. Los modos extendidos CGA presentes en el IBM PCjr y los Tandy 1000 son similares a estos modos.
La CGA fué sustituida en el tramo de consumo por la tarjeta IBM Enhanced Graphics Adapter (EGA), que soportaba la mayoría de los modos de la CGA, y añadía una resolución adicional de 640×350 además de una paleta seleccionable por software de 16 colores de entre 64 tanto en los modos de texto como en los gráficos.
Referencias
- Website de ZiffDavis-Net con información de los viejos adaptadores gráficos, incluyendo la CGA (nota: erróneamente sostiene que la Hercules tiene 4 colores.)
- Amplia FAQ de los viejos adaptadores gráficos (Archivo de Usenet algunos detalles especulativos o erróneos)
- IBM PC-Compatible CGA Video Reference — incluye detalles técnicos
- calibración de un monitor CGA — Información técnica del sistema de decodificación y calibrado del monitor IBM 5153.
- IBM Color Graphics Adapter (CGA) (Thor Kildsen)
- El artículo de la WP Inglesa del que procede este artículo está basado originalmente en material del Free On-line Dictionary of Computing.
Ver también
Enlaces externos
Atribución
Este artículo proviene originalmente de Wikipedia y por ello no sigue la licencia general del site, sino la
GFDL: Se autoriza la copia, la distribución y la modificación de este documento bajo los términos de la licencia de documentación libre GNU, versión 1.2 o cualquier otra que posteriormente publique la Fundación del Software Libre (Free Software Fundation); sin secciones invariables (Unvariant Sections), textos de portada (Front-Cover Texts), ni textos de contraportada (Back-Cover Texts).
Se incluye una copia en inglés de esta licencia en el artículo "GNU Free Documentation License". |