sábado, 6 de noviembre de 2010

CPCVIEW para Amstrad CPC - ¿Son 16 colores suficientes?

El señor Horatio, tras pasar por las manos del CPCVIEW
y con el filtro simulador de monitor activado


El otro día, ojeando el blog de Manuel Sagra, "Paraíso Friki" (http://paraisofriki.com/post/1486365429/yeeppy-ki-yay-d), descubrí en "DevianArt" el fantástico trabajo de Anthony Geoffroy. Este gran dibujante tiene unas cuantas caricaturas espectaculares de varios y variopintos personajes conocidos por todos y de rabiosa actualidad.

Visto lo visto, he pensado que puede ser una buena excusa para explicaros por encima las características gráficas del Amstrad CPC y enseñaros una preview del conversor en el que trabajamos Syx y yo, usando para la demostración las imágenes de Anthony y así demostrar la potencia gráfica del Amstrad CPC y su paleta de colores si se usa con conocimiento y cabeza.

El Amstrad CPC tiene una paleta total de 27 colores (realmente son 32, pero 5 son colores repetidos, así que tenemos un total de 27 distintos). Técnicamente se resume en que tenemos 3 componentes de color (Rojo, Verde y Azul - RGB = Red, Green, Blue) y cada uno de ellos puede tener 3 valores posibles (0, 127 y 255). Eso son 3^3 colores, osea, 27.

Por ejemplo, el color NEGRO equivale a los valores RGB (0,0,0), el BLANCO equivale a los valores RGB (255,255,255), el GRIS sería RGB (127,127,127), el ROJO INTENSO pues RGB (255,0,0), etc.

Teniendo esto claro, ahora definamos la cantidad de colores disponibles en pantalla simultáneamente, que son directamente proporcionales al modo (Mode) de pantalla que usemos.

De modo oficial, el Amstrad CPC tiene 3 modos de pantalla para uso y disfrute del usuario, a saber:
  • Mode 0: 192x272 píxeles (160x200 píxeles en modo Firmware), 16 colores simultáneos de 27.
  • Mode 1: 384x272 píxeles (320x200 píxeles en modo Firmware), 4 colores simultáneos de 27.
  • Mode 2: 768x272 píxeles (640x200 píxeles en modo Firmware), 2 colores simultáneos de 27.
¿Qué es eso del modo "Firmware"? El Firmware son el conjunto de rutinas que trae preprogramadas el Amstrad CPC en su memoria ROM. Esas resoluciones, son las resoluciones que decidieron los fabricantes poner como "predeterminadas" al arrancar el equipo, pero gracias a la flexibilidad del hardware gráfico del Amstrad CPC, esas resoluciones son completamente variables "a gusto del consumidor". Los "ports directos" de Spectrum para Amstrad CPC, por ejemplo, usan una resolución de pantalla de 256x192 píxeles REALES (idéntica a la del Spectrum y MSX).

Una muestra del tramado LINEAL en el fondo.
Gregory House nos saluda desde nuestros
Amstrad CPC
Esta flexibilidad siempre ha sido una característica "oscura" para los usuarios españoles de Amstrad CPC, y algo muy poco usado en las compañías de videojuegos españolas de la época (cuando la usaban, era precisamente para reducir el tamaño de la pantalla hasta el más absoluto ridículo, dejándonos con un inmenso BORDE negro alrededor).

En cuanto las limitaciones a nivel de color por zonas de pantalla, el Amstrad CPC destaca sobre el Spectrum, el MSX y el propio Commodore 64, pues podemos usar un color por píxel, sin más. Recordemos que el Spectrum puede usar únicamente 2 colores por cada 8x8 píxeles, por ejemplo.

El señor Horatio del principio, sin ningún tipo de filtro
y usando tramado LINEAL
En esta entrada no voy a abordar ni los RASTERS, ni los SPLIT SCREENS, ni el SCROLL HARDWARE suave del que dispone el Amstrad y que es otro gran desconocido para los usuarios españoles y las susodichas compañías de software (menos alguna pequeña excepción). Estas técnicas permiten tener más colores en pantalla, mezclar modos de pantalla y ver correr un scroll de fondo a pantalla completa (sin bordes) a velocidades de infarto y a 50 fps. Todo esto lo abordaremos en una próxima entrada, y espero contar con la genialidad de Syx para ello, pues es el maestro español en este tipo de técnicas.

Lo que sí podéis deducir, mirando las cifras anteriores es que el Amstrad CPC es el ordenador con mayor resolución de pantalla en la historia de los 8 bits (768x272 píxeles y 96x34 caracteres en pantalla), aunque únicamente con dos colores. Ese modo de pantalla es perfecto para gráficos tramados en alta definición, procesamiento de texto, hojas de cálculo, etc. 

Conversiones realizadas con el programa
CPCVIEW, tramado ALEATORIO y el modo de
cuantización de color "optimizado" para la paleta
del Amstrad CPC.
Para juegos, el modo "natural", es el "Mode 0", que tiene 16 colores disponibles de los 27 que nos ofrece el Amstrad CPC, aunque con una resolución menor (el famoso "Ladrillo Píxel", donde el píxel no es cuadrado, más bien es rectangular, el doble de ancho que alto). El "Mode 1" también fue bastante usado para juegos, con mucho menos colorido pero mayor resolución (píxel cuadrado, equivalente al de MSX y Spectrum). El "Mode 2" fue usado en un par de juegos, no más.

Ahora que lo tenemos todo más o menos claro, llega el momento de presentaros el programa de Syx y mío, CPCVIEW. El CPCVIEW es un conversor (pendiente de terminar) enormemente flexible (mucho más que los existentes actualmente) a la hora de convertir gráficos y hacerlos compatibles para el Amstrad CPC. Permite definir cualquier tipo de resolución para la conversión, cambiar los valores de color, brillo, contraste, enfoque, 3 tipos distintos de dithering (aleatorio, ordenado y lineal, este último, marca de la casa, jejejeje), filtros de pantalla y el modo de pantalla "inventado" por Syx y por mí que hemos denominado "Mode 5", que permite tener los 27 colores de la paleta de colores simultáneamente en un modo de resolución equivalente al "Mode 1 oficial" (resolución media). También dispone de 3 tipos distintos de "cuantización" de color seleccionables a la hora de realizar la conversión. Dos de ellos son "matemáticos" (y son los que por regla general usan el resto de programas existentes), pero el tercero es "manual" (o a ojímetro, como yo le llamo) y está optimizado por "un servidor" (yo mismo) para que la adaptación de color se haga pensando en la paleta del Amstrad CPC, y los resultados son brutales (como podéis observar en las capturas que acompañan a la entrada).

Pero el punto fuerte de la aplicación, es que es multisistema. Está programada en Python, y mientras que Syx la programa en su Linuxete Debian, yo lo pruebo y ejecuto en mi Windows XP sin problema alguno. El programa funcionará en cualquier sistema que disponga de intérprete Python (la gran mayoría).

CPCVIEW en pleno funcionamiento. Click en la imagen
para verla a tamaño real.
El programa sigue en desarrollo y todavía no está disponible para descarga, pero yo hace ya meses que lo uso habitualmente y el resultado que hemos obtenido en las conversiones es más que óptimo (como podréis observar en las capturas que acompañan esta entrada).

En definitiva, que he matado varios pájaros de un tiro con esta entrada, que espero que haya aclarado algunas cosas a muchísimas personas que no hacen más que preguntarse una y otra vez... ¿Pero cuantos colores tiene el Amstrad? ¿Qué colores son?...

Un saludete a todos y gracias por su atención.

12 comentarios:

  1. Q imagenes mas guapas!! Muy buen curro, si señor!! :)

    ResponderEliminar
  2. muy educativo el artículo. Estoy deseando echarle un vistazo a vuestro programa. Que pasada con el Mode 5 de cosecha propia. Bien hecho!

    ResponderEliminar
  3. syx y tú sois unos auténticos figuras del cpc, cada vez que veo un trabajo vuestro me sorprendo más, las imágenes y el programa tal como lo presentas tienen una pinta estupenda.

    Estoy deseando de probar vuestro programa y ver los resultados por mí mismo en el amstrad. chapó por ustedes

    ResponderEliminar
  4. ¡¡Que gráficos más chulos, señores!!

    Enhorabuena por la paciencia y curro que ponéis al servicio de nuestra plataforma preferida.

    ResponderEliminar
  5. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  6. Hola Rhino, he eliminado tu mensaje para quitar tu dirección de correo de la vista de todo el mundo. Dejo transcrito tu mensaje aquí debajo.

    Saludos.
    ________________________________________________

    Rhino escribió:

    Hola, Veo que estais haciendo un buen trabajo.. quería comentaros que estoy desarrollando la que probablemente sea la mejor demo de 8 bits, y quizá pueda incluir algún gráfico pasado por vuestro conversor. También me interesaría saber más sobre ese Mode 5 que decís, ya que también he desarrollado un modo nuevo que pienso estrenar con el lanzamiento de la demo y puede que se trate del mismo truco :). Mi correo es xxxxxx@xxxxxx.com Gracias.

    ResponderEliminar
  7. Hola DadMan;
    Hace poco que ehe entrado en el mundillo del diseño retro y me he quedado prendado de tu programa. Existe alguna manera de obtenerlo, aunque sea beta.
    Muchas gracias y gran trabajo

    ResponderEliminar
  8. Hola a todos:
    Enhorabuena por el programa, me parece genial. Yo vengo del mundo MSX y soy muy consciente del potencial que tienen otras máquinas contemporaneas, como Amstrad CPC.
    Recientemente he estado programando una aplicación similar a la tuya para imágenes MSX2, con algún que otro arreglillo en las imágenes para mejorar el resultado, y se lo que cuesta currarse estos programas para encajar correctamente los colores reales en una paleta muy limitada como las que tienen nuestros equipos y mostrar unos resultados tan estupendos.
    Por eso quiero felicitaros por vuestro trabajo y animaros a continuar manteniendo vivo el espiritu de estas máquinas tan entrañables.
    OsIsEs.

    ResponderEliminar
  9. Hola estoy intentando imitar un juego de Amstrad en Java. Me ha servido de ayuda tus datos sobre la resolución de 768x272 pixeles.

    No se si podrias ayudarme con estos 2 problemas que tengo en Java ya que no encuentro Documentación o ejemplos por internet al respecto:

    ¿ Como emular en Java un pixel intermitente entre 2 colores como tenia el modo 0 del Amstrad. ?

    ¿ Como hacer que el Sprite no se borre al imprimir en Java para que luego si hay otro que pasa por encima pisando los pixels del anterior Sprite se vea la huella en negro.?

    ResponderEliminar
  10. Hola;
    ¿Ha cambiado algo la situación, hay algún avance? Me encantaría trastear ese programa vuestro 😅😅😅

    ResponderEliminar
  11. Genial la info, colega. Realmente GENIAL,

    Aunque hay algo que me extraña, y seguramente a vosotros tambien.

    El Modo 0 tenia 192 Pixeles de ancho (y 8 bits dedicados a pixeles) y 16 colores (4 bits dedicados a color)
    El Modo 1 tenia 384, con lo que eran 9 bits dedicados a pixeles, y 2 bits dedicados a color
    El Modo 2 tenia 786, con 10 bits dedicados a resolucion de pixeles y sólo 1 dedicado al color.

    ¿Soy yo, o entre el modo 0 y los otros dos modos se perdía un bit extra de memoria del adaptador gráfico?

    ResponderEliminar
  12. Este trabajo demuestra que un hardware bien exprimido puede hacer maravillas. Recuerdo que siempre se comentó en la época de los 16 bits que megadrive tenía una paleta de colores muy deficiente (512 con 64 simultáneos en pantalla). Pues sí vosotros hacéis esas maravillas con 16 colores no quiero imaginar que podría salir con 64 colores simultáneos (además de trucos gráficos como el shadow/highlight mode). El saber usar el color es incluso más importante que el número de colores, queda demostrado

    ResponderEliminar