Usuari:Mcapdevila/Color Graphics Adapter

De Viquipèdia
Dreceres ràpides: navegació, cerca

La Color Graphics Adapter Adaptador de Gràfics en Color o CGA, comercialitzada el 1981, va ser la primera targeta gràfica en color d'IBM (originalment anomenada "Color/Graphics Monitor Adapter"), i el primer estàndard gràfic en color per al IBM PC.

Quan IBM va introduir al mercat el seu PC el 1981, l'estàndard CGA, tot i haver aparegut al mateix temps, era poc usat al principi, ja que la majoria dels compradors adquirien un PC per a ús professional. Per jocs hi havia altres ordinadors molt més populars, i en aquella època no es considerava que els gràfics en color tinguessin altre ús que el purament lúdic. En conseqüència, molts dels primers compradors del PC van optar per la MDA (Monochrome Display Adapter), que només permetia la visualització de text.

El 1982 es va comercialitzar l'Hercules Graphics Card, que permetia mostrar gràfics en monocrom a una resolució molt més gran que la CGA, a part de ser del tot compatible amb la MDA, fet que va perjudicar encara més les vendes de la CGA. Tot va canviar el 1984 quan IBM va introduir el 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, de manera que 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 aquest estàndar malgrat les seves limitacions. La popularitat de la CGA va començar a desaparèixer quan el 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 permetia mostrar diversos modes gràfics i de text. La resolució màxima de qualsevol manera era 640 × 200, i la major profunditat de color suportada era de 4 bits (16 colors). El "mode" més conegut, usat en la majoria dels jocs CGA, mostrava 4 colors a una resolució de 320 × 200.

Tot i que els 4 colors eren considerats generalment com el límit per a la targeta CGA, era possible augmentar aquesta quantitat mitjançant diversos mètodes (alguns oficials, altres no).

Tarja CGA amb chip Synertek SY6845 (= MC6845).
Cga en mode 640×200 (2 colors) amb el color per defecte — Arachne Internet suite.

La paleta de colors de la CGA[modifica | modifica el codi]

Paleta de 16 colors de Windows.

La targeta CGA funcionava amb monitors en color CRT RGBI. Estava basada en el controlador de vídeo Motorola MC6845 i tenia una paleta de 16 colors. El vermell, el verd i el blau corresponien a cada un dels tres raigs catòdics i el negre significava que tots els raigs estaven gairebé apagats. El cian era una barreja dels raigs verd i blau, el magenta de blau i vermell, i el marró de verd i vermell. El blanc (o gris clar) era una barreja dels tres raigs.

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 s'anomenava RGBI .

El Commodore 128 utilitzava el mateix mètode per a transmetre colors per la seva sortida RGBI, de manera que 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) (vegeu més avall). No obstant això, IBM va optar per incloure circuiteria addicional al monitor en 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[modifica | modifica el codi]

La CGA permetia utilitzar dues maneres de text:

  • 40 × 25 caràcters amb fins a 16 colors. Cada caràcter és un patró de 8 × 8 punts. La resolució efectiva d'aquesta manera és de 320 × 200 píxel és (amb una relació d'aspecte de 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 circuit integrat de memòria ROM en la pròpia targeta, de manera que la tipografia de les maneres de text era fixa i no es podia canviar (encara que en una targeta IBM CGA original en un IBM PC original era possible seleccionar entre dues tipografies diferents, normal o prima, canviant un jumper no present a 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 paleta 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 prou RAM de vídeo per a 8 pàgines de text diferents en aquesta manera.
  • 80 × 25 caràcters amb fins a 16 colors. 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 de 1:2.4. La resolució efectiva era de 640 × 200 píxels, que igual que en l'altra manera no eren accessibles individualment. Com que la quantitat de caràcters a la pantalla d'aquesta manera era el doble, només 4 pàgines de text podien ser emmagatzemades a la RAM de vídeo.

Modes gràfics estàndard[modifica | modifica el codi]

La CGA oferia dos modes gràfics usats habitualment:

  • 320 × 200 píxels, com en el mode 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 dos paletes oficials per aquesta manera:
  • # 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 de 1:1.2 havia de ser tinguda en compte a l'hora de dibuixar grans formes geomètriques a la pantalla.
  • 640 × 200 píxels, com en el mode de text de 80 × 25. Tots els píxels podien ser accedits lliurement. Aquesta manera era monocrom, permetent només els colors blanc i negre (encara que això podia ser canviat), amb una relació d'aspecte de 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 modes gràfics, en canvi, la sortida de text feia servir dues taules diferents: els primers 128 caràcters del conjunt eren obtinguts d'una taula a la BIOS en la direcció F000: FA6E, i els 128 restants provenien de la direcció indicada per la interrupció 1F (0000:007 C). Aquesta segona meitat apareixia com a espais en blanc (o com caràcters sense sentit, depèn de la implementació) a menys que fossin definits explícitament, normalment per una utilitat com GRAFTABL o pel programa executat.

El mode de vídeo compost[modifica | modifica el codi]

Encara que desconegut per a molts, hi havia un mode gràfic addicional de vídeo compost de 160 × 200 (amb relació d'aspecte de 1.67:1), en el qual es podien utilitzar 16 colors diferents. Aquest mode no utilitzava la taula de colors CGA, sinó que era més semblant a la manera d ' "alta resolució duplicada" del Apple II, ja que ambdós utilitzaven una tècnica similar. El mode compost va ser rarament utilitzat, la manca de suport a la BIOS va impedir que molts programadors ho adoptar, i el cost d'un sistema IBM era tan alt que la majoria dels compradors podien permetre també el costós monitor RGB. Només uns pocs títols de programari (la majoria jocs) utilitzar aquesta manera.

Un error comú és que el mode compost era suportat per algunes màquines amb monitor RGB, però això seria una contradicció tenint en compte el funcionament d'aquesta manera. L'explicació més probable és la creença que les maneres de 160 × 200 del IBM PCJr/Tandy 1.000 o el Amstrad CPC són el mateix (són iguals pel que fa 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[modifica | modifica el codi]

Hi havia 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 qualsevol dels altres 15 colors de la paleta CGA. Això permetia introduir certa varietat i alguns efectes de llampades, 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 qualsevol dels altres 15.
  • En modes de text, el color de la vora (mostrat fora de l'àrea de visualització, i normalment negre) podia ser canviat per qualsevol dels altres 15.
  • Hi havia una tercera paleta de 4 colors per al mode de 320 × 200 que podia ser utilitzada activant el bit de monocrom amb el mode de color activat. Això canviava els colors de paleta a vermell, cian, blanc i 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 a cada línia d'escaneig. El millor exemple d'ús d'aquesta tècnica és el joc Califòrnia Games 2/gameId, 1823/gameShotId, 7.722/ quan s'executa en un 8.088 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 en el moment adequat)
  • Es podien aproximar colors addicionals mitjançant dithering, però la baixa resolució ho feia molt evident.

Algunes d'aquestes tècniques es podien combinar. Es poden trobar alguns exemples en jocs 2/attributeId, 5/. La majoria dels títols no utilitzar aquestes possibilitats, però hi ha excepcions sorprenents.

El mode de 160 × 100 amb 16 colors[modifica | modifica el codi]

Tècnicament aquest no era un mode gràfic, sinó un truc realitzat mitjançant el mode de text de 80 × 25. Consistia en canviar el registre que indicava l'altura de les cel dels caràcters perquè mostrés només 2 línies per cel 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ó només les dues línies superiors, de 8 píxels cadascuna.

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 a l'esquerra (text) i vermell a la dreta (fons), amb la possibilitat d'invertir intercanviant els colors de text i fons.

Usant el caràcter 221 o 222, cada meitat de cada caràcter podia ser usat 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 de 1:1.2.

Tot i que suposava fer una volta considerable per aconseguir l'objectiu final de mostrar 16 colors simultanis, funcionava bastant bé [1] i aquesta manera era esmentat (encara que no explicat en detall) a la documentació oficial del maquinari d'IBM.

Usant altres caràcters per combinar el ASCII amb aquesta tècnica, era possible aconseguir un nivell de detall més gran.

La mateixa tècnica de reducció de les cel de text es podia utilitzar amb el mode de 40 × 25, però només tenia sentit en combinació amb art ASCII, ja que en cas contrari la resolució resultant seria de només 80 × 100.[2][3][4]

Errors i errada[modifica | modifica el codi]

L'error més notable del maquinari CGA va ser la "neu" en la manera de text 80x25. La VRAM a la targeta IBM CGA original no era de doble port, i per això va l'accés de lectura i escriptura no era possible fer-ho de manera simultània. Per això es veien píxels aleatoris encesos sempre que s'escrivia en la memòria al mateix temps que es llegia. Aquest error va ser reparat en la majoria dels clons, però encara existeix en algunes iteracions (com en el AT & T PC 6.300).

La memòria CGA en 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 avall. Això continua així fins al final de la pantalla i només llavors es comencen a omplir 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 actualitzeu la pantalla.

IBM va dissenyar el monitor CGA 5153 per intencionadament enfosquir el color indexat # 6 de groc fosc a marró, però, alguns monitors clònics no tenien aquest circuit. En aquests monitors i en monitors 5.153 amb el circuit defectuós, el color idexado # 6 estava groc fosc (veure imatge).

La totalitat de la VRAM d'una targeta CGA (16.384 bytes) no és utilitzada per complet per tots els modes 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 els modes de vídeo manualment usant els ports d'escriptura de la CGA es poden mostar els 16.384 bytes com píxels Individuals simultàniament.

Adaptadors rivals[modifica | modifica el codi]

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 (el que ens donaria 720 x 350). És clarament superior als 8 × 8 dels modes de text de la CGA. A causa de l'alt preu de la CGA en el seu moment, la MDA va ser l'elecció preferida per als negocis.
  • El 1982 apareix la Hercules Graphics Card (HGC), que no és fabricada per IBM. Ofereix una mode de text en alta resolució compatible MDA i un mode gràfic monocrom de 720 × 348 píxels, molt millor que la màxima resolució que la CGA pot oferir. Per això, fins i tot sense cap tipus de capacitat de color, l'adaptador de Hercules ofereix uns millors gràfics monocroms i la possiblitat de treballar amb monitors molt menys costosos el converteixen en l'opció preferida per molts. Al principi de 1985, programes emulador residents en memòria (com SIMCGA) permetien mostrar modes gràfics CGA en el mode gráfic de l'Hercules (el resultat era una mica cru). L'Hercules va ser probablement la targeta més utilitzada per connectar monitors monocroms en la vida de l'IBM PC.

Un competidor menys utilitzat va ser la Plantronics Colorplus, una targeta CGA compatible que doblava la VRAM a 32 KB, cosa que li permetia utilitzar 16 colors a 320 × 200 i 4 colors a 640 × 200. Els modes estesos CGA presents al IBM PCJr i els Tandy 1.000 són semblants a aquests modes.

La CGA va ser substituïda a l'entorn 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 seleccionable per programari de 16 colors d'entre 64 tant en els modes de text com en els gràfics.

Vegeu també[modifica | modifica el codi]

Referències[modifica | modifica el codi]

  1. [enllaç sense format] http://mobygames.com/game/shots/p,4/gameId,22/gameShotId,919/
  2. [enllaç sense format] http://www.oldskool.org/shrines/lbd/graphics/icon4.gif
  3. [enllaç sense format] http://www.oldskool.org/shrines/lbd/graphics/icon3.gif
  4. [enllaç sense format] http://www.oldskool.org/shrines/lbd/graphics/icon2.gif

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Mcapdevila/Color Graphics Adapter