# Color Graphics Adapter

La Color Graphics Adapter (Adaptador de Gràfics de Color) o CGA, comercialitzada en 1981, va ser la primera targeta gràfica en color d'IBM (originalment anomenada Color/Graphics Adapter or IBM Color/Graphics Monitor Adapter,), i el primer estàndard gràfic en color per a l'IBM PC.
Quan IBM va introduir al mercat el seu PC en 1981, l'estàndard CGA, malgrat haver aparegut al mateix temps, era poc utilitzat al principi, ja que la majoria dels compradors adquirien un PC per a ús professional. Per a jocs hi havia altres ordinadors molt més populars, i en aquella època no es considerava que els gràfics en color tinguessin un altre ús que el purament lúdic. En conseqüència, molts dels primers compradors del PC van optar per la Monochrome Display Adapter (MDA), que només permetia la visualització de text.
El 1982 es va comercialitzar la Hercules Graphics Card, que permetia mostrar gràfics monocromàtics a una resolució molt major que la CGA, a més de ser compatible amb la MDA, la qual cosa va perjudicar encara més a les vendes de la CGA. Tot va canviar el 1984 quan IBM va introduir l'IBM Personal Computer/AT i la Enhanced Graphics Adapter (EGA). Amb això, el preu de l'antiga targeta CGA va baixar considerablement i es va convertir en una interessant alternativa de baix cost, per la qual cosa les noves empreses dedicades a la fabricació de PC clònics la van adoptar ràpidament. Els PC no-AT de baix cost amb targetes CGA es van vendre molt bé en els anys següents, i com a conseqüència molts jocs van ser editats per a ells malgrat les seves limitacions. La popularitat de la CGA va començar a desaparèixer quan al 1987 la targeta VGA es va convertir en la nova solució d'alt nivell, relegant la EGA als PC de baix cost.
La targeta estàndard CGA d'IBM incorporava 16 kilobytes de VRAM, i podia connectar-se a un monitor de vídeo compost NTSC o a una televisió mitjançant un connector RCA, o a un monitor de 4-bit "RGBI" com l'IBM 5153 mitjançant un connector DE-9. Permetia mostrar diverses maneres gràfiques i de text. La resolució màxima era 640×200, i la major profunditat de color suportada era de 2 bits (4 colors). La manera més coneguda, usat en la majoria dels jocs CGA, mostrava 4 colors a una resolució de 320×200.
Encara que els 4 colors estaven considerats generalment com el límit per a la targeta CGA, era possible augmentar aquesta quantitat mitjançant diversos mètodes (alguns oficials, uns altres no).

## La paleta de colors de la CGA

'''Paleta completa de 16 colors CGA''' :
| 0 — negre#000000 | 8 — gris (fosc)#555555 |
| 1 — blau#0000AA | 9 — blau intens#5555FF |
| 2 — verd#00AA00 | 10 — verd intens#55FF55 |
| 3 — cian#00AAAA | 11 — cian intens#55FFFF |
| 4 — vermell#AA0000 | 12 — vermell intens#FF5555 |
| 5 — magenta#AA00AA | 13 — magenta intens#FF55FF |
| 6 — marró#AA5500 | 14 — groc#FFFF55 |
| 7 — blanc (gris clar)#AAAAAA | 15 — blanc intens#FFFFFF |
La targeta CGA funcionava amb monitors en color CRT RGBI. Estava basada en el controlador de vídeo Motorola 6845 i tenia una paleta de 16 colors. El vermell, el verd i el blau corresponien a cadascun dels tres rajos catòdics i el negre significava que tots els rajos estaven gairebé apagats. El cian era una mescla dels rajos verd i blau, el magenta de blau i vermell, i el marró de verd i vermell. El blanc (o gris clar) era una mescla dels tres rajos.
Els 8 colors restants s'aconseguien mitjançant l'activació d'un bit d'intensificació, aconseguint una versió més brillant de cada color, encara que el gris fosc no es podia distingir del negre en molts monitors. El disseny RGB + bit d'intensificació de la CGA es denominava RGBI.
El Commodore 128 utilitzava el mateix mètode per transmetre colors per la seva sortida RGBI, per la qual cosa es podien connectar els mateixos monitors i mostrar els mateixos 16 colors.
Existeix certa confusió respecte al color #6 en els monitors RGBI: seguint estrictament el model de color RGBI, el color #6 hauria de ser groc fosc (#AAAA00) (veure més a baix). No obstant això, IBM va optar per incloure un circuit addicional en el monitor de color 5153 per detectar el color #6 i rebaixar el component verd per convertir-lo en un to marró més agradable (#AA5500), així que la majoria de monitors "compatibles amb CGA" imiten aquest comportament. La teoria predominant sobre aquesta decisió és que IBM pretenia que els colors s'aproximessin als del terminal del mainframe 3270, concretament el 3279, però aquesta informació no està comprovada.

## Modes de text estàndard

La CGA permetia utilitzar dos modes de text:
* 40×25 caràcters amb 16 colors per al text i 8 de fons. Cada caràcter està format per un patró de 8×8 píxels. La resolució efectiva d'aquesta manera és de 320×200 píxels (amb una relació d'aspecte d'1:1.2), encara que no és possible accedir als píxels individuals. Per tant, els patrons estaven limitats a un dels 256 caràcters emmagatzemats en un xip de ROM en la pròpia targeta, per la qual cosa la tipografia de les maneres de text era fixa i no es podia canviar (encara que en una targeta IBM CGA original de l'IBM PC era possible seleccionar entre dues tipografies diferents, normal o prima, canviant un jumper no present en la majoria dels clons). En aquest mode cada caràcter podia tenir un color primari i un altre de fons que podien ser escollits lliurement de la taujana CGA completa (veure taula); per exemple, text groc per a un caràcter, blanc sobre negre per al següent i cian sobre gris per a un altre. La targeta tenia suficient VRAM per 8 pàgines de text diferents en aquest mode.
* 80×25 caràcters amb 16 colors per al text i 8 de fons. Novament cada caràcter era un patró de punts de 8×8 (amb el mateix joc de caràcters de la manera de 40×25), amb una relació d'aspecte d'1:2.4. La resolució efectiva era de 640×200 píxels, que igual que en l'altre mode de text no eren accessibles individualment. A causa que la quantitat de caràcters en pantalla d'aquest mode era el doble, només 4 pàgines de text podien ser emmagatzemades en la VRAM.

## Modes gràfiques estàndard

Paleta CGA fixa de 4 colors #1 :
| color per defecte | 5 — magenta |
| 3 — cian | 7 — blanc (gris clar) |
| Paleta CGA fixa de 4 colors #2 ||
| color per defecte | 4 — vermell |
| 2 — verd | 6 — marró (groc) |
La CGA oferia dos modes gràfics utilitzats habitualment:
* 320×200 píxels, com en la manera de text de 40×25. No obstant això, en el mode gràfic era possible accedir a cada píxel individualment, encara que només 4 colors podien ser mostrats simultàniament. Aquests 4 colors no es podien triar lliurement d'entre els 16 totals, ja que només hi havia dues paletes oficials per a aquest mode:
* # Magenta, cian, blanc i el color de fons (negre per defecte).
* # Vermell, verd, marró/groc i el color de fons (negre per defecte).
Activant el bit d'intensificació era possible aconseguir versions més brillants d'aquests colors.
    La relació d'aspecte d'1:1.2 s'havia de tenir en compte a l'hora de dibuixar grans formes geomètriques en la pantalla.
* 640×200 píxels, com en el mode de text de 80×25. Tots els píxels podien ser accedits lliurement. Aquest mode era monocroma, permetent solament els colors blanc i negre (encara que això podia ser al revés), amb una relació d'aspecte d'1:2.4.
En el mode de text, els mapa de bits de les tipografies provenien de la ROM de caràcters, que només era accessible per a la pròpia targeta. En els modes gràfics, en canvi, la sortida de text utilitzava dues taules diferents: els primers 128 caràcters del conjunt eren obtinguts d'una taula en la BIOS en l'adreça F000:FA6I, i els 128 restants provenien de l'adreça indicada per la interrupció 1F (0000:007C). Aquesta segona meitat apareixia com a espais en blanc (o com a caràcters sense sentit, depèn de la implementació) tret que fossin definits explícitament, normalment per una utilitat com GRAFTABL o pel programa executat.

## El mode de vídeo compost

Encara que era desconegut per a molts, existia un mode gràfic addicional de video compost de 160×200 (amb relació d'aspecte d'1.67:1), en el qual es podien utilitzar 16 colors diferents. Aquesta manera no utilitzava la taula de colors CGA, sinó que era més semblant al mode "d'alta resolució duplicada" de l'Apple II, ja que tots dos utilitzaven una tècnica similar. El mode compost va ser rarament utilitzat; la falta de suport en la BIOS va impedir que molts programadors ho adoptessin, i el cost d'un sistema IBM era tan alt que la majoria dels compradors no podien permetre's comprar el també costós monitor RGB. Només uns pocs títols de programari (la majoria jocs) van utilitzar aquest mode.
Una equivocació comuna és que el mode compost era suportat per algunes màquines amb monitor RGB, però això és una contradicció tenint en compte el funcionament d'aquest mode. L'explicació més probable és la creença que les maneres de 160×200 de l'IBM PCjr / Tandy 1000 o el Amstrad CPC són el mateix (són iguals quant a resolució, però no quant a color i organització de memòria). Qualsevol intent d'activar el mode compost en un monitor RGB produïa un resultat idèntic al mode gràfic de 640×200.

## Altres modes gràfics i trucs

Tercera paleta fixa CGA "trucada" :
| color per defecte | 4 - vermell |
| 3 — cian | 7 — blanc (gris clar) |
Existia una sèrie de possibilitats oficials i no oficials que podien ser utilitzades per aconseguir millors gràfics.
* En el mode de 320×200, el color de fons, que per defecte era el negre després de la inicialització, podia ser canviat per a qualsevol dels 16 colors de la paleta CGA. Això permetia introduir certa varietat i alguns efectes de centelleigs, ja que era possible canviar el color sense haver de redibuixar la pantalla.
* En el mode de 640×200, el color principal podia ser canviat per a qualsevol dels 16 colors bàsics.
* En els modes de text, el color del costat (mostrat fora de l'àrea de visualització, i normalment negre) podia ser canviat a qualsevol dels 16 colors.
* Existia una tercera paleta de 4 colors pel mode de 320×200 que podia ser utilitzada activant el bit de monocrom amb la manera de color activat. Això canviava els colors de paleta a vermell, cian, blanc, més el color de fons.
* Mitjançant una sincronització precisa, era possible canviar de paleta mentre el contingut de la pantalla encara s'estava dibuixant, permetent usar qualsevol de les 3 en cada línia d'escaneig. El millor exemple d'ús d'aquesta tècnica és el joc Califòrnia Games quan s'executa en un 8088 a 4.77 MHz (en un ordinador més ràpid no s'obtindria l'efecte, ja que es perdria la sincronització necessària per canviar les paletes al moment adequat). El mateix es pot fer amb el color de fons, per crear el riu i la carretera en Frogger. Un altre exemple documentat d'aquesta tècnica és la conversió realitzada per Atarisoft de Jungle Hunt a l'IBM PC.
* Es podien aproximar colors addicionals mitjançant el tramat. Si la imatge era desplegada en un televisor convencional (que tenien en aquells dies una baixa resolució), es podien veure 16 colors sòlids quan es treballava amb la resolució estàndard de 320×200, però si la imatge era vista en un monitor de color (d'alta resolució) no apareixien els 16 colors sinó que es notava el tramat.
Algunes d'aquestes tècniques es podien combinar. Es poden trobar alguns exemples en jocs. La majoria dels títols no van utilitzar aquestes possibilitats, però hi ha algunes excepcions sorprenents.

### El mode de 160×100 amb 16 colors

Tècnicament aquest no era un mode gràfic, sinó un truc realitzat mitjançant el mode de text de 80×25. Consistia a canviar el registre que indicava l'altura de les cel·les dels caràcters perquè mostrés només 2 línies per cel·la en comptes de les 8 normals. Això quadruplicava el nombre de línies de text visibles, de 25 a 100. Aquests caràcters "comprimits" no es mostraven complets, sinó solament les dues línies superiors, de 8 píxels cadascuna.
* $_{Caràcter}$ 221.
* $_{221ambtextblauifonsvermell.}$
* $_{221ambtextvermellifonsblau.}$
* $_{Caràcter}$ 222.
El caràcter 221 del joc estès de caràcters ASCII és un rectangle que ocupa la meitat esquerra de la cel·la, mentre que el caràcter 222 ocupa la meitat dreta.
Cada caràcter podia tenir un color diferent per al text i el fons, per la qual cosa podia ser acolorit, per exemple, blau en l'esquerra (text) i vermell en la dreta (fons), amb la possibilitat d'invertir-ho intercanviant els colors de text i fons.
Utilitzant el caràcter 221 o 222, cada meitat de cada caràcter podia ser utilitzat com un píxel individual, la qual cosa donava un total de 160 píxels per línia horitzontal. Així era possible mostrar 160×100 píxels amb 16 colors simultanis i una relació d'aspecte d'1:1.2.
* Un únic gran "píxel" en la manera de 160×100.
* Aquestes són les dues files superiors de la meitat del caràcter 221.
* Tingui's en compte els 8 pixels que ho formen i la proporció 1:1.2 dels pixels.
Encara que suposava fer un recorregut considerable per aconseguir l'objectiu final de mostrar 16 colors simultanis, funcionava bastant bé i aquesta manera era esmentada (encara que no explicat detalladament) en la documentació oficial del maquinari d'IBM.
Utilitzant altres caràcters per combinar l'art ASCII amb aquesta tècnica, era possible aconseguir un nivell de detall major.
La mateixa tècnica de reducció de les cel·les de text es podia utilitzar amb el mode de 40×25, però només tenia sentit combinant-ho amb art ASCII, ja que en cas contrari la resolució resultant seria de només 80×100.

## Errors

L'error més notable del maquinari de la CGA era la "neu" que apareixia en el mode de text 80x25. La VRAM en la targeta IBM CGA original no era de doble port, per la qual cosa l'accés de lectura o escriptura no era possible fer-lo de manera simultània entre el controlador de vídeo Motorola 6845 i el CPU. Per això es veien blocs rectangulars aleatoris que s'encenien i s'apagaven sempre que se cessava la memòria simultàniament pel CPU i el controlador de video. Aquest error va ser reparat en la majoria dels clons, però encara existeix en algunes iteracions (com en el AT&T PC 6300).
La memòria CGA en els modes gràfics era entrellaçada, això era una molèstia per als programadors. Normalment, la memòria de vídeo és estrictament lineal: la següent fila de dades d'imatge correspon a la següent fila de píxels. Però amb CGA, la següent fila de dades d'imatge corresponia a la fila de píxels dues files més a baix. Això continua així fins al final de la pantalla i només llavors es comencen a emplenar les files vacants. amb el que la primera meitat de la memòria de pantalla són les files 0, 2, 4, etc., fins a la fi de la pantalla i la segona meitat de la VRAM de la CGA és per a les files 1, 3, 5, etc. Això afegeix passos de càlcul per a moltes operacions gràfiques en la CGA si el programador buscava tenir artefactes visuals quan actualitzés la pantalla.
* Groc Fosc
* #AAAA00
IBM va dissenyar el monitor CGA IBM 5153 per intencionadament enfosquir el color indexat #6 de groc fosc a marró; no obstant això, alguns monitors clònics no tenien aquest circuit. En aquests monitors i en monitors 5153 amb el circuit defectuós, el color indexat #6 seguia sent groc fosc (veure imatge).
La totalitat de la VRAM d'una targeta CGA (16.384 bytes) no és utilitzada per complet per totes les maneres de vídeo inicialitzats per la BIOS (text en 40×25 i 80×25, gràfics de 320×200 i 640×200). Només establint modes de vídeo manualment programant el Motorola 6845 de la CGA es poden mostar els 16384 bytes com píxels individuals simultàniament.

## Adaptadors rivals

CGA ha tingut dos principals competidors:
* Per a negocis i processament de text, IBM llança el seu Monochrome Display Adapter (MDA) al mateix temps que la CGA. La MDA produeix text en 80×25, dibuixant cada caràcter en una caixa de 9×14 píxels, dels quals 7×11 són el caràcter en si, la qual cosa ens donaria una resolució de 720 x 350 píxels, que eren clarament superior als 8×8 dels modes de text de la CGA. A causa de l'alt preu de la CGA al seu moments, el MDA va ser l'elecció preferida pels negocis.
* Al 1982 apareix la Hercules Graphics Card (HGC), que no és fabricada per IBM. Ofereix un mode de text en alta resolució compatible a la MDA i un mode gràfic monocromàtic de 720×348 píxels, molt millor que la màxima resolució de la qual la CGA pot oferir. Per això, fins i tot sense cap mena de capacitat de color, l'adaptador de Hercules ofereix uns millors gràfics monocromàtics i la possibiliad de treballar amb monitors molt menys costosos ho converteixen en l'opció preferida per molts. Al principi de 1985, programes emuladors residents en memòria com SIMCGA permetien mostrar modes gràfics CGA en el mode gràfic de la Hercules (el resultat semblava tramat, cru. La Hercules és probablement la targeta més utilitzada per connectar monitors monocromàtics en era de l'IBM PC.
Un competidor menys utilitzat va ser la Plantronics Colorplus, una targeta CGA compatible que doblega la VRAM a 32 KB, la qual cosa li permet utilitzar nous modes gràfics de 16 colors a 320×200 i 4 colors a 640×200. Els modes estesos CGA presents en l'IBM PCjr i els Tandy 1000 són similars a aquests modes.
La CGA va ser substituïda en el tram de consum per la targeta IBM Enhanced Graphics Adapter (EGA), que suportava la majoria dels modes de la CGA, i afegia una resolució addicional de 640×350 a més d'una paleta de 16 colors d'entre 64 seleccionables per programari, tant en els modes de text com en els gràfics.

## Referències

* ↑ Arxivat 2016-03-04 a Wayback Machine.; cf. section 1-133, "Color/Graphics Adapter", page 143 of ibm_techref_v202_1.pdf
* ↑ Red, Green, Blue, Intensity
* ↑ Anmol Publications.. ISBN 9788126110308.
* ↑ «mobygames.com». Arxivat de l'original el 2018-09-25. [Consulta: 13 desembre 2016].
* ↑ «mobygames.com». Arxivat de l'original el 2016-12-20. [Consulta: 13 desembre 2016].
* ↑ «mobygames.com». Arxivat de l'original el 2018-10-01. [Consulta: 13 desembre 2016].
* ↑ «mobygames.com». Arxivat de l'original el 2018-10-01. [Consulta: 13 desembre 2016].
* ↑ oldskool.org
* ↑ oldskool.org
* ↑ oldskool.org
* ↑ International Business Machines Corporation (1983): IBM Personal Computer XT Technical Reference Manual, pages D-42 to D-43.
* Website de ZiffDavis-Net amb informació dels vells adaptadors gràfics, incloent la CGA (nota: erròniament sosté que la Hercules té 4 colors.)
* Àmplia FAQ dels vells adaptadors gràfics (Arxiu de Usenet alguns detalls especulatius o erronis)
* IBM PC-Compatible CGA Video Reference Arxivat 2005-10-24 a Wayback Machine. — inclou detalls tècnics
* calibratge d'un monitor CGA — Informació tècnica del sistema de descodificació i calibrat del monitor IBM 5153.
* IBM Color Graphics Adapter (CGA) (Thor Kildsen)
* L'article de la WP Anglesa del qual procedeix aquest article està basat originalment en material del Free On-line Dictionary of Computing.

## Vegeu també

* Model de color RGB
* Targeta gràfica
* Graphics Processing Unit
Altres targetes gràfiques:
* MDA Monochrome Display Adapter
* HGC Hercules Graphics Card
* EGA Enhanced Graphics Adapter
* MCGA Multicolor Graphics Adapter
* VGA Video Graphics Array
* SVGA Super Video Graphics Array
* XGA Esteneu Graphics Array

## Enllaços externs

* Games with CGA Graphics