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.[1]
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.[2][3] 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).
'''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.
La CGA permetia utilitzar dos modes de text:
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:
Activant el bit d'intensificació era possible aconseguir versions més brillants d'aquests colors.
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.
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.
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.
Algunes d'aquestes tècniques es podien combinar. Es poden trobar alguns exemples en jocs.[6] La majoria dels títols no van utilitzar aquestes possibilitats, però hi ha algunes excepcions sorprenents.
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. | |
221 amb text blau i fons vermell. | |
221 amb text vermell i fons blau. | |
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.
|
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.[7]
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.[8][9][10]
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[11] 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.
CGA ha tingut dos principals competidors:
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.
Altres targetes gràfiques: