viernes, 31 de diciembre de 2010

¡Feliz Año 2011!

Bueno, ya tenemos aquí al nuevo año. Esperemos que sea mejor que el que dejamos atrás (seguro que sí, ya veréis).

Antes de pillar el avión para pasar el fin de año con mi familia política, sólo quería deciros:

¡FELIZ AÑO NUEVO!
HAPPY NEW YEAR!
BONES FESTES!

Nos vemos el año que viene señores.

Salu2.

lunes, 20 de diciembre de 2010

Uwol Amstrad CPC - Game engine preview VIDEO

Hace ya varios días que no doy señales de vida (demasiados). Tengo poquito tiempo últimamente, y el poco tiempo disponible lo dedico a lo que os dejo a continuación...

Lo prometido es deuda y más vale tarde que nunca (o eso dicen). Vamos lentos pero seguros, así que ya tenemos un primer vídeo para que podáis ver en movimiento lo que será el engine de Uwol para nuestro Amstrad CPC (128K).

Vais a ver sprites y tiles morrocotudamente grandes (comparado con otras versiones), una zona de juego generosa y mucho, mucho, ¡mucho! movimiento (enemigos, monedas...). Exprimiendo el hardware del CPC y el Z80 al máximo y optimizando, que es gerundio.

Lo siguiente: empezar a integrar la lógica del juego. Espero que disfrutéis del vídeo.

Saludotes,

DaD.

viernes, 3 de diciembre de 2010

Podcast RetroActivo - ¡Lo retro mola!


Han pasado ya unos meses desde el nacimiento del evento retro más importante acontecido en la isla de Mallorca (RetroMallorca 2010). Vale, tenéis razón, es el único evento retro de la isla, pero una cosa no es incompatible con la otra. Y es que no puedo dejar de ver el evento con los mismos ojos de un padre que mira a su hijo cuando da sus primeros pasos o vocaliza sus primeras palabras...

Pues bien, para los que aún no lo sepan, parte del staff de tal evento han puesto en marcha un podcast de temática también retro que ha sido bautizado como "RetroActivo". 

Un podcast hecho con cariño y de manera artesanal, que mañana sábado dará a luz su segundo programa. No hay que perdérselo.

Según informan en la web de RetroActivo (http://retroactivo.es/2010/11/se-acerca-retroactivo-podcast-1/), además de informarnos sobre las noticias mensuales más destacadas del mundillo retro, en esta ocasión contarán con la participación de David Vila, fundador de Infoconsolas. También se hablará sobre RetroMallorca (pasado, presente y futuro) y tendréis la oportunidad de participar en directo, opinando, preguntando o haciendo lo que se os antoje a través de Twitter (http://twitter.com/retroactivos).

Seguro que pasaremos un rato divertido.

La cita: Sábado día 11 de diciembre a las 19 horas, pinchando en el siguiente enlace: http://retroactivo.es/podcast.

Y si os perdísteis la anterior emisión, aquí os dejo el vídeo para que podáis disfrutarla (disponible en la web de RetroActivo).

¡Suerte apañeros!

sábado, 20 de noviembre de 2010

Proyecto: "UWOL - Quest For Money" - Amstrad CPC

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.
Mejor, ¿no?
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.

Saludos.

lunes, 15 de noviembre de 2010

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).

Disfrutadlo.





lunes, 8 de noviembre de 2010

R-Type "Reloaded" - Amstrad CPC


Todos sabemos que el juego R-Type es un juegazo como la copa de un pino. Los usuarios de Spectrum están más que satisfechos con su conversión, eso también es sabido por todos... Al igual que sabemos que la versión para Amstrad, si bien era jugable, fue una pifia de escándalo (aún así, me lo compré original).

Versión Amstrad... Pufff, huele
a Spectrum tela marinera.
La versión de Amstrad es uno de esos famosos "ports directos" de Spectrum, que dan penita verlos y que, encima, van bastante más lentos que la versión de la que descienden. Y es que "emular" la pantalla de un Spectrum no es la mejor solución para tener un juego fluido en Amstrad CPC...

El caso es que se ha escrito ríos de tinta sobre el tema, hasta el punto de que el propio autor de la conversión se ha visto obligado a "defender" su conversión directa:

You make one little mistake in your life and the internet will never let you live it down....
Electric Dreams / Activision gave me 21 days to do the port. I wish i had the time to do a nice mode 0 port with new graphics, but alas it was never to be.
Keith A Goodyer at CPCwiki forum, 02/25/2010

Lo que viene a significar algo así como:

Te equivocas una vez en la vida e Internet nunca permitirá que sea olvidado....
Electric Dreams / Activision me dio 21 días para realizar el port. Ojalá hubiese tenido tiempo suficiente para hacer un port digno en mode 0 con nuevos gráficos, pero desafortunadamente  nunca pudo ser posible.
Keith A Goodyer en el foro de CPCwiki, 02/25/2010


Nueva versión remozada...
¡Esto ya es otra cosa!
Visto lo visto, un grupo de franceses se ha puesto manos a la obra y tras entablar conversación con Bob Pape (el autor de la versión de Spectrum) y conseguir el código fuente, le están pegando un lavado de cara de escándalo.

El programador encargado de tal proeza es conocido como "Fano" (quien también modificó el Rick Dangerous para adaptarlo al CPC+) y el grafista es un tal "Toto". De momento, lo poco que se ha visto, promete: gráficos en Mode 0, mayor velocidad... Tal vez, scroll hardware y música ingame... Pronto lo sabremos, pues va a ser presentado este próximo fin de semana (13 y 14 de Noviembre) en la "Retro-gaming Connexion 2010" que se celebrará en Francia.

Nuevo menú, mucho más conseguido que el original.
Así que pronto saldremos de dudas. De momento nos conformaremos con las capturas de pantalla.

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.

martes, 2 de noviembre de 2010

¿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):


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
Enable Ovf1
Enable Interrupts
Start Timer1

Do
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
End If
Else
If d00>10 Then
Set LED0 ' LED0 OFF
tLed0=time
End If
End If
If LED1 Then
If d11>10 Then
Reset LED1 ' LED0 ON
tLed1=time
End If
Else
If d11>15 Then
Set LED1 ' LED1 OFF
tLed1=time
End If
End If
If LED2 Then
If d22>12 Then
Reset LED2 ' LED2 ON
tLed2=time
End If
Else
If d22>20 Then
Set LED2 ' LED2 OFF
tLed2=time
End If
End If
Loop

'/////////////////////////////////////////////////////////
Interrupt Ovf1(), Save 1
Timer1=&hf3cb ' 100 ms time @ 8MHz
Incr time ' just incr time tick
End Interrupt

----------------------------------------------------------------------------------------------
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:
Espero que alguno de vosotros os animéis a trastear con ellos. Os lo pasaréis pipa, garantizado.

Saludos.

domingo, 31 de octubre de 2010

XGameStation (TM) - Diseña tu propia consola... (HOW TO...)



Kit de desarrollo "HYDRA"
Si te gusta la electrónica, si te gusta el mundo Retro, si te gustan los videojuegos y además te encanta trastear y aprender cosas nuevas, esta entrada es para ti.

¿Imaginas un libro donde te expliquen desde la base, empezando por una simple resistencia, cómo diseñar desde cero tu propia consola u ordenador? Pues ese libro existe (en inglés, eso sí).

Hace un par de años, me dio por empezar a trastear con hardware retro. Si bien tengo una mínima base de electrónica analógica y digital,  siempre he tenido montones de preguntas sin respuesta. No encontraba a nadie capaz de enseñarme o con la paciencia suficiente para hacerlo. Tenía tantas dudas y tantas ganas de entender el funcionamiento de un sistema informático "sencillo"... Pero cierto día, buscando información, me tropecé con este lugar:


Un lugar maravilloso, sin duda... Esta gente tiene varios kits de desarrollo para montarte tu propio sistema (desde el más simple hasta el más avanzado y completo, como es el Hydra). Los kits de desarrollo tienen todos los componentes necesarios para montarte en casa, con un soldador, tu propio sistema retro en un tiempo record. Los kits de desarrollo incluyen también la placa PCB (la placa con agujeritos donde sueldas todos los componentes) y una placa protoboard (para prototipar).

Formato eBook de este fantástico libro
Pero lo más interesante de todo, es que junto al kit se incluye un eBook dentro de un CD, con el siguiente nombre: "Design Your Own Video Game Console". Un libro con más de 800 páginas explicándote paso a paso todas las etapas de desarrollo de una consola, explicándote desde lo más sencillo como son los valores de las resistencias y sus correspondencia en color, la ley de Ohm, etc., hasta llegar a la finalización de tu diseño.

El libro, es sencillamente, INCREIBLE. Estuve tan cerca del orgasmo que no lo dudé ni un momento y me pedí uno de los kits de desarrollo sin pensarlo, pero además, me pedí el libro en formato físico (tengo el eBook también) para poder leérmelo o consultarlo cuando no estuviese delante del ordenador... Además, qué narices, me gusta el tacto del papel para leer libros; los eBooks no es lo mío.

"Game Console Starter Kit" - ¡Yo tengo uno!
En cuanto al kit de desarrollo, el que yo me pedí hace un par de años es el "Game Console Starter Kit", que es el más sencillo y perfecto para iniciarse en el mundillo. También es cierto que hace un par de años, el kit "HYDRA" no estaba disponible aún, y hubiese sido sin duda mi elección, pues es mucho más completo y avanzado, además de permitir cosas más "burras" en cuanto a desarrollo se refiere. Sin embargo, lo más importante es el libro en sí, y es el mismo en cualquier kit.

Versión en papel (Hard Copy)
El libro en formato papel, tiene un nombre muy sugerente: "Black Art of Video Game Console Design". De verdad que este libro (tanto su versión electrónica como la versión física) han sido de un valor incalculable para mí, que soy un personaje enganchado a trastear con hardware, y con ganas de entender "todo" lo que me rodea.

No se si algún día llegaré a diseñar mi propio ordenador o consola "Retro", pero lo que sí os puedo asegurar que desde entonces entiendo el funcionamiento de muchísimas cosas que antes desconocía y que, ciertamente, ahora estoy mucho más cerca de embarcarme en un proyecto de esa envergadura. 
Kit "HYDRA" funcionando

De corazón, pegadle un vistazo a la web y a todo el material que tienen en venta, pues merece la pena. No es caro, y tener un libro de esas características entre mis manos, no tiene precio.

Os dejo unos vídeos (de los varios que circulan) del kit de desarrollo "Hydra" en pleno funcionamiento.

Saludos.