Source: http://ladrillopixeles.blogspot.com.es/2010/11/
Timestamp: 2018-05-25 09:01:54+00:00

Document:
Ladrillo-Píxeles de Colores: noviembre 2010
Pantalla de carga que hice en la época de CEZ.
Habrá que reaprovecharla, ¿no?
Hace ya algunos años, cuando el grupo de programadores de CEZ (CEZ Games Studio) seguía en activo y yo formaba parte de él, surgió la idea de crear un juego sencillo, pero al mismo tiempo divertido. Realmente la idea se gestó en la mente de los que actualmente conforman el grupo "MojonTwins" que también formaban parte de CEZ. Así nació UWOL.
Lo que pudo ser UWOL para
Amstrad CPC hace unos años.
Mi misión en la época era convertir los gráficos de otras plataformas para usarlos en Amstrad CPC, así que me puse a ello (lo cual no fue tarea fácil). La resolución oficial de la zona de juego de UWOL es de 192x160 píxeles. Esa resolución ya es menor que la pantalla del Spectrum o MSX (256x192 píxeles), así que ahora imaginaros el tamaño de esa pantalla en un monitor de Amstrad (con una resolución total de 384x272). La verdad es que resulta diminuta para un Amstrad... Ahora imaginaros que hacemos el juego en Mode 0 y 16 colores, quedando la resolución equivalente de la zona de juego en unos escasos 96x160 píxeles. Podéis deducir que no es algo fácil de realizar. El resultado previo lo tenéis en una de las capturas (de la época de CEZ).
Y aquí "lo que será" Uwol para Amstrad CPC.
Al final, el desarrollo se detuvo y nunca más se supo, hasta ahora. En la actualidad, los "MojonTwins" han sacado la versión para Spectrum y otros grupos han hecho lo propio y convertido el original para otros sistemas, como el Commodore 64, Commodore 16 / Plus4 y Sega Megadrive.
Ahora le toca el turno al Amstrad CPC. Cómo el compañero Syx tiene contacto con los "mojones" y tiene permiso para ponerse con la versión de Amstrad y como a mí me hacen gracia los gráficos de la versión de Megadrive y también tenemos permiso expreso para usar esos gráficos como base en la conversión, pues hemos dicho... qué narices, vamos con ello.
Comparativa de los tamaños de las zonas
de juego de las distintas versiones.
Pero no vamos a quedarnos en una conversión, sin más. Somos cómo somos y queremos darle una vuelta de tuerca al asunto. Queremos exprimir el Amstrad CPC, así que ya hay unos cuantos conceptos claros para esta versión:
Resolución en Mode 0 de 144x240 píxeles (equivalente a 288x240 píxeles en el resto de sistemas).
Rutinas de impresión de Tiles y Sprites megaoptimizadas (cortesía de Syx el grande).
Tiles y Sprites de 12x24 píxeles (equivalente a 24x24 píxeles contra los 16x16 usados en el resto de sistemas, cortesía de un servidor).
Reconversión de todo el código original escrito en C a lenguaje ensamblador, para ir rapiditos.
Remasterizado de todo el apartado sonoro usando el "Arkos Player", para exprimir al máximo las capacidades sonoras del Amstrad CPC y haciendo uso de la característica "estéreo" que únicamente el Amstrad CPC tiene (cortesía de un servidor).
Modo de 2 jugadores (aún está por definir si modo "versus" o modo "cooperativo").
Fases de bonus (de dos tipos, "buenas" y "malas").
Nuevos fondos y plataformas (de momento, hemos doblado el número de fondos original, cortesía de un servidor).
Fondos animados... Queremos muchísima movilidad. De momento, tenemos las monedas animadas (al estilo Megadrive) y fondos animados en las fases bonus.
La intención final es equiparar la versión Amstrad a sistemas de 16 bits.
Todos estos extras, tienen un coste: memoria RAM. Así que la idea es que este UWOL sea para equipos con 128Kbytes de RAM (y sin que sirva de precedente, esto incluye a los Amstrad CPC464 y CPC664 con ampliación de RAM, pues no vamos a usar ningún modo "especial" de paginación de RAM no soportado por estas máquinas).
Una de las nuevas fases de bonus, con nuevos fondos
y nuevas plataformas.
Una versión de 64K también está contemplada, pero sin la mayoría de extras. La versión de 64K básicamente sería como la del resto de sistemas, pero con unos gráficos mayores y la música "remasterizada", nada más.
De momento os dejo unas cuantas imágenes de "pantallazos" para que vayáis viendo el resultado de la conversión, así como un archivo de audio para que escuchéis como sonará el invento en el Amstrad CPC ("In Stereo Where Avaliable"), También podéis comparar el tamaño de la zona de juego con el resto de versiones en relación a la resolución del Amstrad CPC y su monitor.
Pirámide. ¿Dónde estamos?
Pronto os subiré un vídeo del motor de juego en movimiento, donde veréis cantidades ingentes de monedas y los enemigos, todos en movimiento, para gusto y disfrute de todos nosotros. De momento, os tendréis que conformar con unos pantallazos y el nuevo audio.
Publicado por DaDMaN en 14:43 12 comentarios: Enlaces a esta entrada
Etiquetas: amstrad, commodore, dadman, game, juego, megadrive, mojontwins, spectrum, syx, uwol
Impresionante preview del R-Type este fin de semana - Amstrad CPC
¿Una partidita? Jugar al nuevo R-Type en el Amstrad CPC
con el X-Arcade, es otra historia, sin duda.
Pues como ya os adelanté en la anterior entrada, este fin de semana se ha podido ver en movimiento (y escuchar) la nueva y remozada versión del R-Type para Amstrad CPC.
La verdad es que la cosa no tiene mala pinta. Como mejoras se pueden observar:
Nueva pantalla de menú, animada y en overscan (pantalla completa) usando el hardware del CPC
Música tanto en el menú como en pleno juego (música ingame, música de Boss, de inicio de level)
Nuevos gráficos en Mode 0, y una velocidad muchísimo mayor.
En el tema sonido, parece ser que se ha usado la banda sonora de la versión de Atari ST del juego. Si nos referimos al apartado gráfico, todo parece discurrir suavemente y a gran velocidad. Parece ser que han usado "doble buffer" para conseguirlo (es lo que deduzco mirando los vídeos). No es una mala solución para conseguir suavidad, si bien parece que todo está hecho por software (no hacen uso del scroll hardware del CPC).
Todo esto es una suposición viendo el vídeo, como ya he dicho. Hasta que no lo tengamos delante (o Fano lo especifique), no se puede asegurar a ciencia cierta que no hagan uso del scroll hardware.
A la izquierda, el menú de la versión "remozada",
a la derecha, el menú de "toda la vida"
Donde sí se aprecian rutinas de scroll hardware, es en el desplazamiento de las letras "RTYPE" en el menú del juego.
Ciertamente, en su conjunto, tiene una pinta cojonuda. Os dejo un par de fotos y de vídeos de la muestra. La calidad no es demasiado buena, pero aún así se puede apreciar el potencial del trabajo de Fano y compañía, así como la posibilidad de compararlo con la versión "original" de Amstrad (ejecutaron ambos juegos simultáneamente en dos Amstrad CPC, uno al ladito del otro).
Publicado por DaDMaN en 15:32 5 comentarios: Enlaces a esta entrada
Etiquetas: amstrad, fano, francia, reloaded, rtype, spectrum
Publicado por DaDMaN en 16:15 10 comentarios: Enlaces a esta entrada
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
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.
Publicado por DaDMaN en 13:23 10 comentarios: Enlaces a esta entrada
Etiquetas: amstrad, colores, cpc, cpcview, dadman, dados2, devianart, gráficos, graphics, manuel, paleta, resolución, sagra, syx
¿Qué es un microcontrolador? Pues algo muy molón...
No es la primera vez (ni la última, seguro) que nombro a los microcontroladores en mis entradas... Y posiblemente os suceda lo mismo que ocurrió en el caso de los FPGA. Así que vamos a explicar brevemente lo que es un microcontrolador y para qué sirve (o para qué puede servirnos a nosotros).
Un microcontrolador, a grandes rasgos, es como un ordenador "completo" dentro de un único circuito integrado (ala, qué bestia, tú lo flipas). Si nos fijamos, por ejemplo, en un Spectrum molón (por ser el más sencillito), podemos dividirlo en varias partes, a saber:
Microprocesador (nuestro conocido Z80 de Zilog a 3,5Mhz)
Memoria RAM (memoria de lectura y escritura y volátil, los famosos 48K del gomas para almacenar programas y datos)
Memoria ROM (memoria de sólo lectura, donde reside el BASIC, por ejemplo, entre otras cosas. No se borra al apagar el equipo, al contrario de lo que ocurre con la RAM)
Dispositivos I/O (periféricos que usamos para introducir datos al ordenador, como el teclado o la unidad de cinta externa o para extraerlos y/o visualizarlos, como puede ser la pantalla o la misma unidad de cinta cuando grabamos un programa en ella)
Bus de expansión (donde podemos incluir el conector del casete o el propio "Bus de Expansión", que se encuentra situado en la parte trasera del Spectrum y que permite añadirle externamente ampliaciones de hardware, como ampliaciones de RAM, controladoras de disco, etc).
Básicamente, así tenemos definido un ordenador personal sencillo. Al encender nuestro equipo, el microprocesador lee primero de la ROM el programa de "inicialización", que prepara y configura el estado inicial de nuestra máquina, configura los dispositivos, limpia la RAM y arranca el interfaz de usuario que nos permitirá comunicarnos con el ordenador (en este caso, el BASIC). Todo eso reside en la ROM.
Mi proyecto USB usa este microcontrolador
A partir de ese punto, cualquier línea de código que tecleemos (usando el teclado) o que carguemos (usando la unidad de cintas) se almacenará en la memoria RAM, y ahí seguirá hasta que reiniciemos el ordenador o lo apaguemos.
Una vez que tenemos estos conceptos más o menos claros (perdón por el discurso), ya podemos abarcar lo que es un microcontrolador con más detalle.
Hay miles de tipos distintos de microcontroladores, de todos los tamaños, de todos los precios, de distintos fabricantes... Algunos son específicos para ciertas tareas, otros son genéricos... Yo me voy a centrar en un microcontrolador genérico, que "vale para todo".
Un microcontrolador es simplemente un chip, un circuito integrado, de igual o menor tamaño que un procesasdor Z80 (depende del modelo). Dentro de este circuito integrado, podemos encontrar:
Un Microprocesador (depende del tipo de microcontrolador; los hay de 8 bits, los más baratos y comunes y los hay de 32 bits, mucho más potentes; desde los que funcionan a 10 Mhz hasta los 80 Mhz o más)
Memoria RAM (tambien depende del modelo...; los hay con 8Kbytes de RAM, con 64Kbytes de RAM...)
Memoria ROM (lo mismo que antes, es un valor variable: 8Kbytes, 16Kbytes...)
Bus I/O (digamos que es el "Bus de Expansión"; son varias señales de entrada y salida completamente programables para comunicarnos con el exterior; el número de señales disponibles también depende del modelo de microcontrolador que tengamos)
Si os habéis fijado, en un único chip prácticamente tenemos todos los componentes presentes en un ordenador completo como puede ser el Spectrum y su funcionamiento es muy parecido.
Al poner en marcha el microcontrolador (darle alimentación) el procesador lee el programa que hayamos programado en su ROM. Este programa puede ser cualquier cosa que se nos ocurra (siempre dentro de los límites de proceso y espacio del microcontrolador) y sus funciones depende directamente de ese programa. Básicamente se configuran las entradas y las salidas y se interpretan para dar un resultado que puede almacenarse en la RAM y que va en función de cálculos internos que hayamos realizado y del estado de las entradas que estemos comprobando.
Patillaje: PAx, PBx, PCx y PDx son puertos
de 8 bits configurables por el usuario
Podemos, por ejemplo programar un simple contador de segundos que nos muestre el resultado encendiendo unos leds que estén conectados en algunas de sus salidas (programadas en modo salida). En este caso, el programa no necesita ningún tipo de entrada y se limita simplemente a "contar" y darnos el resultado. También podemos mejorar ese programa y que el contador se inicie o se pare al accionar un pulsador. Este pulsador irá conectado a una patilla del microcontrolador que habremos configurado en modo "entrada" y nuestro programa en este caso deberá inspeccionar el estado de esa entrada regularmente para actuar en consecuencia parando o iniciando la rutina del contador.
Todo esto, puede complicarse mucho más, hasta el punto de que podemos crear un sistema complejo, como puede ser una consola de videojuegos, usando únicamente un microcontrolador y un par de componentes de apoyo (como la Uzebox que comenté en una entrada anterior):
http://ladrillopixeles.blogspot.com/2010/10/uzebox-un-microcontrolador-convertido.html
Mini ordenador montado con un microcontrolador AVR
(en el centro). Incluye puerto serie, de vídeo y de teclado.
¡Y hasta un intérprete de BASIC!
Cómo veis, las posibilidades son infinitas y nos abre un mundo inmenso de posibilidades, desde la creación de periféricos hardware para nuestros equipos retro (como he hecho yo con el aparato USB para Amstrad CPC) hasta montar equipos completos (Uzebox).
Otra de las ventajas importantes es el precio de estos integrados. El microcontrolador que yo uso para mi proyecto, funciona a 16 Mhz y tiene una CPU de 8 bits (que nos da unos 16 millones de instrucciones por segundo aproximadamente, mucha más potencia que el Z80). Su aspecto es idéntico al de un Z80 (40 patillas), y todo esto por unos 6€. El mayor desembolso reside en el programador (necesitamos un aparato para programar los chips), que en mi caso me costó unos 50€ por eBay, y me permite programar miles de microcontroladores y eproms distintas.
Un juego de ejemplo programado en BASIC para el
"ordenador" de la foto anterior. ¿Mola o no mola?
El lenguaje de programación que se suele usar, es el C, aunque hay muchas posibilidades más (dependiendo del fabricante). Mucha gente los programa directamente en ensamblador, y si eres como yo (más simple que el mecanismo de un botijo) puedes hacerlo en BASIC (sí, mi interfaz USB para Amstrad está programado en BASIC). Es tan sencillo como crear el programa en el PC, compilarlo y generar el archivo que luego meteremos dentro del microcontrolador con el programador.
Un ejemplo de programa, creado en BASIC (FASTAVR) para microcontroladores ATMEL puede ser este:
'/// FastAVR Basic Compiler for AVR by MICRODESIGN ///
'/// 3 flashing Leds STK-500 www.FastAVR.com ///
$Device= 8515 ' modelo de microcontrolador
$Stack = 32 ' stack depth
$Clock = 8 ' velocidad del cristal en Mhz
$Lcd = PORTC.0, Rs=PORTC.5, En=PORTC.4, 20, 4
$Timer1=Timer, Prescale=256
$Source=On
$LeadChar=" "
$Def LED0=PORTA.0 ' Asignamos nombres a los 3 primeros bits
$Def LED1=PORTA.1 ' del puerto A
$Def LED2=PORTA.2
Declare Interrupt Ovf1()
Dim time As Word
Dim tLed0 As Word, tLed1 As Word, tLed2 As Word
Dim d0 As Word, d1 As Word, d2 As Word
Dim d00 As Byte, d11 As Byte, d22 As Byte
PORTA=&hf8 ' Aquí configuramos los 3 primeros bits del puerto A
' en modo salida. 11111000 en binario
DDRA=&h07 ' Aquí inicializamos los bits. Al arrancar el
' programa los leds se encenderán.
' En binario: 00000111
' 0 = apagado, 1 = encendido
Timer1=&hf3cb ' 100 ms time
d0=time-tLed0: d00=d0 ' d00... back to 8 bit
d1=time-tLed1: d11=d1 ' because IF is shorter
d2=time-tLed2: d22=d2
If LED0 Then
If d00>8 Then
Reset LED0 ' LED0 ON
tLed0=time
If d00>10 Then
Set LED0 ' LED0 OFF
If d11>10 Then
Reset LED1 ' LED0 ON
tLed1=time
If d11>15 Then
Set LED1 ' LED1 OFF
If LED2 Then
If d22>12 Then
Reset LED2 ' LED2 ON
tLed2=time
If d22>20 Then
Set LED2 ' LED2 OFF
Interrupt Ovf1(), Save 1
Timer1=&hf3cb ' 100 ms time @ 8MHz
Incr time ' just incr time tick
Podéis ver que el programa es bastante sencillo de entender. Se trata simplemente de encender y apagar 3 diodos LED que están conectados al puerto A del microcontrolador. Cada puerto, por regla general, consta de 8 bits (8 patillas), con lo que podríamos controlar hasta 8 diodos LED.
En definitiva, que todo es ponerse y realmente no es complicado. Si os gusta trastear y diseñar hardware, los microcontroladores son un buen punto de partida, y no necesitáis ser expertos para hacer cosas chulas, os lo digo yo, jejejejeje.
Si queréis más información sobre microcontroladores y características específicas y modelos, os recomiendo que visitéis los sitios web de los dos principales fabricantes de microcontroladores:
ATMEL - http://www.atmel.com
Espero que alguno de vosotros os animéis a trastear con ellos. Os lo pasaréis pipa, garantizado.
Publicado por DaDMaN en 16:46 4 comentarios: Enlaces a esta entrada
Etiquetas: amstrad, atmega, atmel, avr, casero, commodore, cpu, hardware, home, made, microcontrolador, microhip, periférico, pic, spectrum

References: resolución 
 resolución 
 resolución 
 resolución 

Resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución