jueves, 5 de enero de 2017

Regreso al pasado: CGA: Menos resolución para mejorar los gráficos


Hubo un tiempo en que tu sargento te pedía que saltaras 2m a la pata coja con un grillete de 10Kg y, por absurdo que parezca, los desarrolladores de videojuegos lo conseguían. Los juegos no podían mostrar grandes gráficos programando tal y como se aprendía a programar cualquier programa de gestión. Tenías que ser más listo e ir más allá de lo obvio y aparecieron los gráficos CGA.

Para el que no lo sepa, CGA es un estándar gráfico de 1981 que permitía mostrar hasta 16 colores en modo texto y 4 en modo gráfico. Esto era porque el modo texto en lugar de píxeles, representaba caracteres, por lo que la resolución de 80x25 (terminal típico) x 16 colores posibles, ocupaba poca memoria. En cambio el modo gráfico típico de 320x200 con 4 colores ya se comía la mitad de la memoria de un PC de la época y existía un modo de 640x200.

La paleta por defecto tenía unos colores característicos. Marcó el estilo de la época.


Como comprenderéis, mostrar gráficos buenos con esos recursos era algo muy complicado y en cambio había juegos bastante vistosos para la época. La forma en que lo consiguieron fue estudiando el modo en que interactuaba el PC con el monitor, sabiendo cómo funcionaba un monitor CRT y la señal que recibía.

Podría extenderme con el tema hablando de cómo aprovechaban el tiempo de retraso en el dibujado de las líneas para realizar más cálculos o las formas de aprovechar el espacio de color YUV para comprimir la señal, pero lo que quiero explicaros hoy es menos aburrido para vosotros e igualmente fascinante para mí.

Como mencioné antes, tenía unos modos gráficos muy limitados en cuanto a colores. La forma de solucionarlo fue a las bravas. La mayoría de los desarrolladores se conformaban con lo que había. O bien no conocían esta posibilidad, o bien no les merecía la pena la inversión con las escasas ventas de la época.

Esto es un ejemplo de tramado. Cuanto más pequeños, más parece ser violeta.
Para los rellenos de grandes zonas se usaba el tramado, que en televisores normales se creaba un color aproximado y daba la impresión de ser un color más en la paleta. El tramado no es más que ir metiendo un píxel de otro color por medio de vez en cuando. El que haya usado Windows 3.11 o inferior con pocos colores recordará algunas decoraciones de ventanas que dolían a la vista y que usaban este sistema. En televisores normales el mismo color se veía mejor. Básicamente es hacer un tablerito de ajedrez y aprovechar que el brillo de un píxel invadía a los que le rodeaban para que se mezclasen los colores un poco. Eso del brillo invasor de píxeles es también la razón por la que los juegos no nos parecían (tan) pixelados en los tiempos de la MD/SNES y sí en los emuladores. Era casi como un antialiasing "natural".

Aparte de ese truquito, también se aprovechaba lo que decía del dibujado de líneas para ir cambiando la paleta de colores. Esto ya ponía de manifiesto que querían sacarle el máximo jugo posible, pero en este caso había una limitación y era la frecuencia del procesador. Hacía falta una sincronización perfecta con la pantalla y eso sólo ocurría con un 8088 a 4,77MHz. Sí, hablamos de MHz. Eran lentitos entonces nuestros ordenadores.

California Games con el truco CGA para el IBM 8088. ¡Qué diferencia!
 En cambio, el modo que siempre me llamó la atención y el que propició esta entrada, fue el 160x100 a 16 colores. ¿Pero qué? Sí, sí. Ya dije que el modo gráfico se quedaba con 4 colores y, como mucho, 7 con el truco de la frecuencia. La razón por la que esto es posible es que no es un modo gráfico. Era el modo texto 80x25 a 16 colores tuneado un poquito. No se pintaban píxeles, sino caracteres. La forma de hacer que parecieran píxeles fue hacer que en lugar de medir 8 píxeles de alto cada carácter, hacer que midiese 2. Así cuadruplicaban las líneas a pintar. ¡Estaban recortando los caracteres! Se hacía lo propio para pintar el doble de columnas y ya teníamos la resolución adecuada, algo baja en comparación, pero muy colorida.

Si os fijáis en la bola, los colores se "mezclan" por el cambio de paleta.

La forma de pintar píxeles era un tanto compleja, pues había que usar dos caracteres concretos, el 221 y el 222, que eran los que siguiendo ese modo, mostraba dos píxeles superiores del carácter y esos permitían pintar uno con el color de frente (letra) y el color de fondo. También se podía usar el espacio para que los dos píxeles fueran el color de fondo, etc. Ya tenías que pintar los píxeles de dos en dos y era algo relativamente tedioso que requería pensar el juego de otro modo, pero nada preocupante.

Aquí se ve el resultado, el resultado sin recortar los caracteres y lo que se ve de cada carácter.

Como algo anecdótico, se consiguieron mostrar hasta 1024 colores en pantalla con CGA y todos los trucos habidos y por haber sobre la pantalla. El resultado era espectacular, pero esto es un logo tardío que surgió como reto, no como algo jugable en realidad. Podéis verlo a continuación:

1024 colores en CGA. ¡Sorprendente!
He usado más fuentes, pero si estáis interesados en saber cómo funcionan los trucos para televisores CRT aprovechando los modos YUV y demás, os dejo este enlace. Si por el contrario queréis disfrutar con cómo aprovechaban esta técnica diferentes juegos, preferiréis visitar este otro enlace.

12 comentarios:

  1. oh si, ahí conocí la existencia del cyan y el magenta

    ah señor, que tiempos en que los programadores exprimían al máximo las máquinas, no como ahora que son puros señoritos que si su editor de niveles no funciona en una consola, pasan de programar para ella y han escuchado hablar del lenguaje ensamblador en documentales del canal historia

    ResponderEliminar
  2. Me ha dado por imaginarme una entrada como esta en VX ¿Cómo actuaría la comunidad con ella?

    Una información muy curiosa relacionada con la historia de los videojuegos (y de cómo la tecnología está ligada a ellos xD). Es un tipo de entradas que faltan en lugares más abiertos al público.

    EDIT: Maldita falta de botón Editar...

    ResponderEliminar
    Respuestas
    1. en vida extra dices...

      https://www.vidaextra.com/respuestas/the-order-1886-lo-recomiendo-para-todo-poseedor-de-una-ps4

      https://pbs.twimg.com/media/CqVzzWsUsAAAbk5.jpg

      Eliminar
    2. Los videojuegos son industria del entretenimiento, eso no cabe duda. Pero es cierto, van de la mano de la tecnología. Aparentemente ahora que las consolas son PCs con fuerte retraso mental, se deja de lado la tecnología (pero entonces los mongoles no entienden que de ser así pues no habría necesidad de nuevas consolas) Pero en fin.

      Kabuki, no te burles de los foreros de vidaextra, anda de capa caída y uno lo quiere levantar a base de troleos, pero ya no da para más, cualquier día de estos hago lo que hicieron varios como tú o ese trolaco nolan fag de black mesa y me vengo para acá de tiempo completo.

      saludos

      Eliminar
    3. jaja bienvenido, este es un blog humilde de cuatro amiguetes, pero por lo menos no es tan aburrido como ir a misa

      Eliminar
    4. @Alevoso
      Yo creo que en VX la mayor parte de la comunidad pasaría del tema. Algunos lo agradecerían, como aquél curso de programación de videojuegos que empezaron y dejaron de lado en la segunda entrada. :(

      @Kabuki
      Además sin publicidad. Para que no se diga que nos vendimos porque tal compañía se anuncia aquí. xD

      Eliminar
  3. DISONANCIA LUDONARRATIVAAAAAAAAAAAAA

    ResponderEliminar
    Respuestas
    1. No entendí. Si es una sugerencia, puedo escribir del tema, aunque últimamente le doy más a los juegos de acción directa que a los de historia.

      Eliminar
  4. ¿Qué nota obtuvo este juego en mi metacritic?

    Muy entretenido de leer, debo decir que yo jugaría encantado a un titulo actual con el aspecto de la segunda imagen esa, oh dios, que lindo se ve.

    Por cierto, entré a uno de los links que dejaste y mira esta maravilla:

    [img]http://3.bp.blogspot.com/-b6kYkUgqhsM/VBo5i4OPFBI/AAAAAAAABnY/c9VtnyNktYk/s1600/icondemo_003.png[/img]

    Aunque claro, en mi lista de sueños las prioridades están en volver a ver gráficas pixels como los juegos de NEO GEO en la época KOF/Metal Slug.

    ResponderEliminar
    Respuestas
    1. El pixelart de Neo-Geo era bastante bueno, pero básicamente era tratar de hacerlo lo más realista posible sin quitarle la fantasía de los efectos especiales.

      No entiendo por qué la mayoría de los juegos de ahora hacen esos gráficos retro. Alguno queda bien. Ver Fez es una maravilla porque entiendes el trabajo que hay detrás de ese falso entorno 2D, pero verlo en otros juegos daña la vista irreversiblemente y sin razón. Sólo porque vende. Yo haría gráficos 2D buenos como en Dust, por ejemplo. Me gustarían más juegos así.

      Eliminar
  5. Oye pues ha estado curioso el artículo. Gracias por el aporte *pulgar arriba*

    ResponderEliminar
    Respuestas
    1. Gracias. Me alegro de que os guste. Iba a explayarme con las teles y la compresión YUV, pero me iba a quedar un tochaco que no iba a caber ni en Bluray.

      Eliminar