Mostrando entradas con la etiqueta resolución. Mostrar todas las entradas
Mostrando entradas con la etiqueta resolución. Mostrar todas las entradas

lunes, 4 de abril de 2011

Entrelazando que es gerundio - Amstrad CPC

Mi modesta aportación a "Batman Forever"
Mucho tiempo ha pasado desde mi última publicación. Y muchas cosas han acontecido en el mundillo cepeceril. Cosas que han revolucionado el panorama demoscene retro y ha meneado unos cuantos cimientos. Me refiero a la demo para Amstrad CPC denominada "Batman Forever". Producción en la que he tenido el gusto de participar aportando una pantallita (y otra que al final fue desechada) junto a Rhino (gran programador) y su equipo y que no ha pasado desapercibida.

Ganadora de la pasada "ForeverC 2011", demo del año en "Pouet.net"... En fin... 

Primera imagen que hice para "Batman Forever".
Al final fue desestimada a favor de "Joker Vs Batman"
Para los que no los conozcan, me refiero al grupo "Batman Group", "sceners" amigueros que le han echado un par de huevos al asunto y han abierto los ojos de muchísima gente en cuanto a la potencia real del Amstrad CPC y lo mal aprovechado que ha estado siempre. Y tiene cojones el asunto que hayan sido un grupo destacado en la programación de demos para Commodore Amiga, los que hayan abierto las puertas hacia el cielo de nuestra plataforma y que haya inundado de envidia (alguna sana y otras no tanto) a más de uno.

Pero ya se han escrito ríos de tínta al respecto (incluso hay una entrevista circulando ya, en inglés y otra está al caer) y no es el tema que nos ocupa en esta ocasión.

Así que felicito al grupo "Batman Group" (y a mí mismo por mi modesta aportación) y paso a otros asuntos. Por donde iba... ejem... a sí... EL ENTRELAZADO leches.

Este tipo tiene cara de cabreo... Y mucha resolución.
¿Alguien no sabe lo que es el entrelazado? Resumiéndolo, diremos que es la última tontería aplicada al Amstrad CPC que me pone palote, jajajajajaja. Pero veamos por qué tanto palotismo.

Muchos os habéis dado cuenta que los televisores y los monitores de ordenador tienen muchas cosas en común. Entre esas cosas que comparten se encuentra la capacidad de mostrarnos "animaciones" o secuencias animadas... Vamos, que se mueven cosas en la pantalla. Esta sensación de movimiento viene determinada por el transcurrir de imágenes estáticas, una tras otra, a gran velocidad (en el caso Europeo o sistema PAL, 50 veces por segundo). En un solo segundo, la pantalla de nuestro monitor (o del televisor) bombardea nuestra retina 50 veces con 50 imágenes distintas, que colocadas una tras otra en el transcurso del tiempo generan la sensación de que "algo se mueve suavemente" ante nosotros.

Estamos en CRYSIS... De verdad, que es un Amstrad CPC.
¿Aún no os lo creéis?
Cada una de estas imágenes es lo que se denomina "frame" o "cuadro" en castizo. Por lo tanto, se suele decir que la imagen de televisión nos llega a 50 fps (frames per second - cuadros por segundo) o que se refresca a 50 hz (50 ciclos por segundo). Algún día os explicaré por qué los emuladores que usamos en nuestras PeCeras actuales no muestran las imágenes tan suaves y fluidas como el ordenador original (los antiguos equipos muestran la imagen a 50 hz mientras que los monitores VGA actuales a 60 hz como mínimo).

Ya sé que es un tema denso, así que no me voy a extender más... Hay amplia información por ahí mucho más detallada al respecto.

Teniendo esto más o menos claro, tenemos que entender otro concepto nuevo: SCANLINE. A modo muy simple, una imagen está dividida en líneas horizontales, una sobre otra, como si de ladrillos que componen una pared se tratase. Estos scanlines tienen una duración (ancho) determinado y el total de scanlines superpuestos conforman el frame (cuadro). Repito que lo he simplificado muchísimo, pero ahora lo entenderéis mejor.

¿No os mola esta pilingui a todo color?
El Amstrad CPC, en su modo de pantalla "Mode 1", tiene una resolución de 384x272 píxeles como máximo visibles. Para que lo entendáis, eso significa que un frame o cuadro, está compuesto por 272 scanlines de altura y cada scanline tiene 384 píxeles de ancho. Repito que es algo más completo que esto, pero así lo entenderéis perfectamente.

Pues el ENTRELAZADO sirve, entre otras cosas, para simular un aumento de la resolución. En el caso que nos trae, pasaríamos de 384x272 píxeles a 384x544 píxeles.¿Cómo? Pues si cada frame tiene 272 scanlines de altura como hemos dicho antes, pues lo que se hace es dividir la imagen de origen de mayor resolución (544 scanlines) en dos partes o frames. En el primer frame pondremos los scanlines impares y en el segundo frame los scanlines pares. El inteligente lector pensará entonces que algo falla aquí, pues si empleamos 2 frames para representar una sola imagen, estamos reduciendo la tasa de refresco a 25 fps (en lugar de 50 fps). Y tiene toda la razón. Los modos entrelazados aumentan la resolución a cambio de reducir la tasa de refresco a la mitad, lo cual genera un ligero parpadeo en la imagen (por reducir a la mitad el número de imágenes por segundo que llega hasta nuestros ojos).

Venga, más cerquita, que no se diga...
Pero a pesar del ligero parpadeo, usado con astucia, puede generar verdaderas maravillas en sistemas limitados en color y resolución (como el Amstrad CPC). 

Una de las características del chip de vídeo del Amstrad (el famoso CRTC) es la capacidad de generar un entrelazado automático que no requiere de mantenimiento por parte del procesador. Si bien es una característica a explorar, pues esta capacidad aparentemente difiere entre distintas revisiones de CRTC. En nuestro caso, hemos hecho las pruebas con un CRTC0 (el que tiene mi Amstrad CPC6128). Habría que hacer pruebas para el resto de versiones de CRTC (1,2, preASIC y ASIC); todo se andará.

El modo entrelazado "automático" se consigue en el CPC toqueteando el registro 8 (R8) del CRTC. Por supuesto, que no todo iban a ser ventajas. Además del problema del "parpadeo", en el caso del Amstrad CPC, implica tener 2 copias de la misma imagen (una con las scanlines pares y otra con las impares) en memoria. Como hablamos de una imagen en Overscan (pantalla completa), cada frame requiere de 25.5Kbytes de RAM, que al ser una imagen entrelazada se multiplica por 2, lo que nos deja que mostrar una imagen de este tipo a pantalla completa en el Amstrad CPC requiere de 51Kbytes de RAM, osea, casi toda la RAM disponible en el primer banco de memoria (64Kbytes)...

Scarlett, ven a mí cariñín.
Pero bueno, considerando el resultado, merece la pena. Además de las imágenes que acompañan al artículo, os dejo un vídeo para que veáis que aquí no hay ni trampa ni cartón.

Las muestras que veis usan una resolución entrelazada de 384x544 pixeles (que voy a bautizar 544i, jejejeje) y únicamente 4 colores (los que permite el Mode 1 del Amstrad CPC). Sin embargo, gracias al entrelazado y el efecto "mezcla" entre imágenes y eligiendo cuidadosamente esos 4 colores, da la sensación de que tenemos una imagen de muchísimos más... ¿O alguno de vosotros es capaz de asegurarme que en esas imágenes sólo hay 4 colores? Yo os lo prometo, que sólo hay 4.

Si es que para el que aún no se haya enterado, el CPC es mucho CPC. Y tener una paleta de colores "viva" (o saturada) y la mayor resolución de pantalla en el mundo de los 8 bits (en modo entrelazado llega a los 768x544 píxeles, casi 800x600!!!!) tiene sus ventajas.

Juzgad vosotros mismos.

Un saludo fieras y hasta pronto.

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.