Mostrando entradas con la etiqueta spectrum. Mostrar todas las entradas
Mostrando entradas con la etiqueta spectrum. Mostrar todas las entradas

viernes, 14 de febrero de 2014

¿Tienes un "Súper MSX"? ¡Zas, en toda la boca! ... (o cómo retrocagarla)


Que a estas alturas del partido, haya "fanboys" de MSX y de cualquier otro sistema, proclamando a los cuatro vientos lo bonito de sus equipos de antaño, me parece casi normal. Que estos "fanboys", además empiecen en plan: ¡el mío es mejor que el tuyo!, pues ya me chirría un poco... Que este "fanboy" de MSX (msx land), además, se monte un canal de MSX en Youtube, se dedique a "desinformar" a la peña, y que cuando se le dan datos e información sobre su GRAN EQUIVOCACIÓN, su opción es no publicar el comentario (normal, a mí también me daría vergüenza ir de listo y quedar como un retropaleto informático), pues ya me toca la moralcilla, vecinillo...

Es lo que ha ocurrido hoy con un colega y posteriormente conmigo, en el canal de youtube de este señor, gran especialista en MSX y en hardware (nótese la ironía). Con ustedes, el canal desinformativo de MSX Land (clap, clap, clap, aplausos):


Este señor, hace un par de días, publicó un vídeo mostrándole al mundo su gran descubrimiento: Cargar cintas mu, mu, mu, rápido desde un CD en un MSX, partiendo como origen de un archivo ROM (¡la leche!). El vídeo al respecto, aquí:


Pues bien, tras el visionado de ese pedazo de vídeo desinformativo, donde este personaje hace gala de "su gran conocimiento del MSX y de otras plataformas", suelta perlas como:

  1. Se me ha roto un MSX, creo que es la tarjeta gráfica (claro, o el condensador de Fluzo).
  2. Cargo las cintas a 2400 baudios desde un CD molón, aunque se puede un poco más rápido, pero da fallos en algunos MSX (realmente, se pueden cargar muuuucho más rápido, muchacho).
  3. Los grabo en CD porque es más retro (pero enchufo el MSX a una tarjeta capturadora conectada a un PC, en lugar de usar un televisor y grabarlo todo con una cámara de vídeo super 8). xDDDD

Pues bien... Lo mejor llega en los comentarios del vídeo. Un usuario de Amstrad CPC, (que se muestre si él quiere), le comentaba inocentemente, que él quería intentar algo parecido con su CPC... La respuesta del señor MSX Land (la que se ve, pues por lo visto hay mucho que no ha publicado, incluyendo insultos), resumida:
Pues que sepas, que tu CPC eso no puede hacerlo. El MSX puede modificar los baudios y hacer estas cosas, porque es mucho más potente que el Amstrad CPC...
¡Uy, uy, uy! Atención al iluminado... Aquí demuestra lo muchísimo que sabe sobre el tema. Este señor se dedica a "informar" al resto del personal. Pues estamos apañados. Y que sepáis, que ya ha borrado esa contestación tras "mi actuación"...

Mi actuación, sí, porque muy amablemente le he informado de su equivocación. ¿Qué ha hecho? No publicar mi comentario y, además, borrar su comentario donde quedaba con el culo al aire (más bien su ignorancia y sapiencia retro).

Mi comentario "desaparecido"
(y no soy el único)
Aquí, mi contestación en su canal y la captura de pantalla correspondiente (algo que, por el momento, parece que jamás podréis leer, porque NO LA HA PUBLICADO...):

"Buenas. No he podido evitar ver detenidamente tu vídeo y alguna contestación a un usuario de Amstrad sobre la supuesta superioridad del MSX sobre el resto de ordenadores de 8 bits del globo. Me ha llamado mucho la atención que seas tan tajante, pero mucho me temo que desconoces bastante el hardware que hace funcionar a tu MSX (y por supuesto al resto de ordenadores que nombras).

Sin entrar en debate sobre qué máquina es mejor o peor (no porque no me apetezca, pues puedo darte unos cuantos datos que tal vez te sorprendan), voy a centrarme en tu afirmación de que el MSX es superior por ser capaz de cargar desde "cinta" a 2400 baudios, mientras que el resto de equipos no pueden...

Desconozco cuales son tus fuentes (esas del mundillo que conoces), pero yo, que pertenezco a él (estoy muy dentro del mundo cepecero, pero también muy cerca del spectrum y del MSX, pues me nutro de TODOS ellos) te digo que estas completamente equivocado.

Para empezar, debes saber, que tanto tu MSX, como el Spectrum o el Amstrad, funcionan con un procesador Z80, a velocidades muy similares. Partiendo de esa base, la decodificación y codificación del sonido en el puerto de cinta de todos ellos, es gestionado prácticamente en su totalidad por el Z80 y el PPI. Tanto en el Amstrad CPC como en el MSX, el PPI (donde va el puerto de cintas) es el 8255 (consulta cualquier diagrama de hardware en un service manual de MSX, te sorprenderás).

Por lo tanto, tanto tu MSX como el Amstrad CPC comparten procesador y sistema de lectura y escritura de cintas. Nada especial, en absoluto.

Una vez teniendo la base del hardware común bien clara, informarte que los baudios capaces de ser interpretados y procesador por tu MSX o por cualquier equipo de 8 bits, depende de;
  1. Velocidad del procesador (Z80 entre 3.5 y 4Mhz, dependiendo del sistema)
  2. Optimización de la rutina de carga
  3. Soporte usado (ese wav que generas, sobre un soporte magnético como una cinta, probablemente no funcionará, o lo hará con errores o de modo inestable).
Por lo tanto, a nivel hardware, no existe ninguna superioridad entre tu MSX y el resto del mundo (refiriéndonos por ahora al tema de las cintas y los baudios).

Por otro lado, si conoces a gente del mundillo de Amstrad y de Spectrum (que tenga algo de idea de las tripas de las respectivas máquinas), te deberían haber informado que un tal "decicoder", hace ya unos cuantos años, programó una rutina de carga para Amstrad y Spectrum (puedes buscar el hilo en los foros de  Amstrad ESP), capaz de cargar sin errores en estos equipos (incluso para MSX, creo recordar), "cintas" (desde soportes digitales como CDs, MP3s o directamente desde la salida de LINEA de un PC) a aproximadamente 12.600 (sí, lees bien) baudios, sin errores. Es lo que se denomina, PROYECTO OTLA.

Es posible usar la misma rutina tanto en Amstrad, como en Spectrum, como en MSX, porque comparten hardware en ese sentido. Incluso en Spectrum, aún se consiguen mayores velocidades, precisamente porque no usa PPI y la ULA es la que ataca directamente al puerto de cintas.

Si no me crees, puedes ver un vídeo de Decicoder, donde muestra como en un Amstrad, carga un snapshot del Manic Miner de 64K a 12.600 baudios en apenas 20 segundos:

Fast loading for Amstrad CPC (aquí instructivo vídeo de decicoder) 

Y para que veas lo desinformado que estás, hace lo propio con un Spectrum y con un MSX (a la misma velocidad):

Fast loading for MSX computer (aquí otro instructivo vídeo de decicoder) 
Resumiendo: Antes de ser tan tajante descalificando al personal, infórmate antes o quedarás en ridículo. Es, simplemente un consejo, sin ánimo de ofender...

Por lo menos, ahora sabes que tu MSX y el RESTO, pueden cargar cintas aún más rápido de lo que tú lo haces y llegar a los 12.600 baudios...

Un saludo."

Creo que con mi comentario del vídeo, sobra decir nada más.

Pero os lo resumo en que, personalmente, pienso que una persona que habla de lo que no sabe (ni se preocupa por saber) capaz de manipular a su antojo la poca información que asimila y ocultar lo que le interesa por tener simplemente la razón, no debería tener un canal "desinformativo"... Debería ser "político" por lo menos.

¡Un saludo a todos!

miércoles, 9 de enero de 2013

Amstrad CPC: "Teodoro No Sabe Volar" versión disco disponible para descarga

Lo prometido es deuda. Ya podéis descargar la versión en disco de Teodoro.

Sigue siendo el mismo juego, pero he añadido un par de extras a la versión de disco, como el menú de selección de idioma y un bonito CAT'art...

Quien no sepa lo que es el CAT'art, lo verá claramente al hacer el catálogo del disco para ver como se ejecuta el juego (el famoso comando CAT que usamos desde BASIC los cepeceros).

Os dejo un vídeo demostrativo del asunto y el link de descarga.

¡Que lo disfrutéis!






domingo, 6 de enero de 2013

Amstrad CPC: ¡"Teodoro No Sabe Volar" ya está aquí!


Así es, niños y niñas...

Me congratula anunciarles que hoy, el día de Sus Majestades los Reyes Majos (son majísimos oigan), RetroWorks y Dimension Z (y yo mismo) han publicado su primer juego para la plataforma Amstrad CPC: "Teodoro No Sabe Volar".

Y no sólo es el primer juego de RetroWorks para CPC. Es el primer juego publicado en el recién entrado año 2013, así que ¡estamos de enhorabuena!

Un gran trabajo de su programador, José Vila Cuadrillero (zilogZ80a), exprogramador de la "dorada" New Frontier y un duro trabajo gráfico por mi parte.

Por ahora, tenéis disponible la versión cinta (en español e inglés) para Amstrad CPC 464 (64K). De camino viene la versión en disco "temporal". La versión en disco definitiva aún tardará un poco, pues incluirá el juego exclusivo para los modelos de 128K con varios extras y añadidos... Paciencia.
Y para los usuarios de Commodore, en primicia os digo que... ¡Algo se cuece!

De momento, os dejo unas "pantallicas" cepeceras y el link de descarga para que podáis disfrutarlo.

¡Saludos!
DaD.





miércoles, 26 de enero de 2011

Speccy2010 - Los rusos liándola con el FPGA

Y es que me pregunto yo lo que tendrán estos FPGA que a todo el mundo gustan...

El Spectrum del siglo XXI
En cualquier caso, los aficionados y amantes del Spectrum están de suerte.Un grupo de desarrollo ruso lleva perfeccionando desde hace unos años un clon mejorado del Spectrum original. El Speccy2010 es una placa base de pequeño tamaño con un FPGA Altera como encargado de reproducir todo el hardware original del Spectrum y de mejorarlo.

A diferencia de otros proyectos para otros sistemas (concretamente el CPCTREX, un Amstrad CPC clonado en un FPGA), estos rusos han creado ellos mismos la placa base a medida y a sus necesidades. No han usado placas de desarrollo de terceros (el CPCTREX usa una placa de desarrollo de Terasic, que por cierto, ya está descatalogada...). La ventaja es evidente: habrá disponibilidad mientras la gente esté interesada en comprarla.

Por otro lado, también está disponible todo el código fuente del proyecto para aquellos que quieran ojearlo (o hacer uso de él).

Casi a diario se actualiza el Firmware de este invento, para mejorar su funcionamiento o añadir nuevas funciones que seguro harán las delicias de los spectrumitas que decidan pillarse uno.

Entre sus características hay que destacar:
  • Modelos con 16 Mbytes de RAM y 32 Mbytes de RAM.
  • Lector de tarjetas SD (emulación de disquetera y carga de snapshots SNA).
  • Conexiones PS/2 para teclado y ratón.
  • Dos puertos de joystick.
  • Salida de video de 8 bits (256 colores) por RGB, Video compuesto o SVideo a través de un conector VGA.
  • Conexión USB para reprogramación del firmware.
  • Modo de funcionamiento del Z80 a 3.5, 7, 14 y 28 Mhz.
  • Reproducción del hardware del Spectrum 48 y Pentagon (con 1 Mbyte de RAM).
Cómo veis, la cosa promete. Ahora solo falta que los rusos se aficionen al Amstrad CPC para ver si sacan cacharros así para nosotros, porque visto lo visto, mal lo llevamos los cepeceros.

Para los que sepáis ruso, os dejo la web (aunque podéis usar el Google Traductor):


¡Hasta pronto!

Códigos fuente Retro - Design Design



Kat-Trap (1987) en Amstrad CPC
"Design Design" fue una empresa de diseño de hardware fundada en Manchester allá por el año 1976. Durante el año 1983 empezó su andadura en el desarrollo de software para microordenadores de la mano de Greg Stafford. Publicaron varios juegos en varios sistemas (Amstrad CPC, Spectrum, Amiga, IBM-PC...). Entre los juegos más conocidos en su catálogo se encuentra el Kat Trap (1987) que seguro muchos recordaréis.

Técnicamente los juegos estaban muy bien, aprovechando el hardware sobre el que se desarrollaban (como se puede observar en la imagen adjunta).

Pues bien... "Design Design", no sólo NO ha desaparecido, sino que sigue actualmente en funcionamiento. Pero lo mejor de todo es que son unos chicos muy simpáticos y agradables (deduzco) y, pensando en nosotros, han publicado en su web decenas y decenas de códigos fuente de sus juegos de todos los sistemas.


Por curiosidad, Syx ha compilado uno de ellos (concretamente el del Kat Trap) y ha funcionado a la perfección.

Así que chavales, ya estáis tardando en descargaros todo ese material (por lo que pueda pasar). Sinceramente, NO TIENE PRECIO y es otro trocito de nuestra historia que debemos preservar.

¡Saludos!

Emulando el BEEPER del Spectrum 48K con el puerto de cinta del Amstrad CPC

No, no me he vuelto loco. Así es, tal cual lo habéis leído. Pero antes pongámonos en situación.

Spectrum 16K / 48K (el "gomas")
Como muchos sabréis, el ZX Spectrum en sus primeras versiones generaba sonido usando un pequeño altavoz interno (un buzzer) como única arma. Cuantísimas risas nos hemos echado los cepeceros en la época, comparando las músicas y el sonido de nuestro flamante Amstrad CPC y su AY8912, con los pitiditos "cutres" del ZX Spectrum 48K (el famoso "gomas") del vecino / compañero de clase.

Ciertamente, los pobres usuarios de los primeros Spectrum (aquellos que no poseían nuestro querido AY) tenían todas las de perder. Su sistema de generación de sonido es bien simple: enviar 1 para que el cacharro pite o enviar un 0 para que deje de pitar, sin más. Digamos que únicamente genera sonido usando 1 bit, lo cual no deja demasiado margen de actuación... Sin embargo, visionarios como el señor Joffa cayeron en la cuenta de que enviando unos y ceros (1010101010101...) a gran velocidad a ese primitivo altavoz, se podría simular tener varios canales de sonido a distintas frecuencias en ese diminuto buzzer. Por supuesto, ese envío masivo de bits a gran velocidad se realiza tirando de procesador, así que el pobre Z80 del Spectrum va un poquito pasado de vueltas. Por ese motivo, los juegos de 48K tenían música multicanal en los menús, pantallas de Game Over y poco más, donde podías dedicar la mayoría del tiempo de procesador en generar sonido y lo restante en mostrarnos el menú y esperar alguna pulsación de teclas.

Placa Base del Spectrum 48.
Abajo a la derecha, el zumbador de marras, alias
"LOUD SPEAKER"
Y los años pasan, señores... Y las tecnologías mejoran... Y la inventiva y el ingenio también. Hoy en día, para Spectrum 48 y su beeper existen verdaderas obras de arte sonoras multicanal. Existen varios motores de sonido (el más moderno y potente, el Phazer 1, con baterías sampleadas), que permiten tener 2 canales de sonido y uno de percusión, por ejemplo. También tenemos trackers para generar esas melodías, como el Beepola, donde se pueden generar composiciones con todos esos "motores".

El resultado, ciertamente es increíble (teniendo en cuenta que hablamos de un simple beeper conectado al Z80, sin más).

El PPI 8255 encargado de controlar el puerto de cintas,
el puerto de impresora y el propio AY del
Amstrad CPC
Pues bien, teniendo esto claro, al chalado de Syx y a mí se nos ocurrió que, el chip PPI 8255 del Amstrad CPC, encargado entre otras cosas de generar "los pitiditos" de carga en las cintas, pues... vaya, que funcionaba igual que el beeper del Spectrum. Es tan simple como que los pulsos (los soniditos de carga) de una cinta no son más que secuencias de unos y ceros (11101010101010...) a distintas frecuencias (esto a grandes rasgos). Pues nada hombre, vamos a emular el beeper del Spectrum usando el PPI 8255 del Amstrad, adaptando el motor de sonido Phazer 1 usado en Spectrum y a ver qué pasa.

El resultado lo tenéis justo debajo de esta línea (dadle al PLAY y me comentáis qué tal):



Eso es, señores, nada más y nada menos, que una grabación hecha en el portátil resultado de conectar el cable de cinta al Line In del portátil. Si no lo recordáis, el cable tenía 3 cables, uno azul (el de entrada), otro rojo (para grabar nuestros programillas en una cinta) y uno blanco más pequeño que era el control remoto, encargado de encender y parar el motor del cassette. Pues bien, el cable rojo (REC) conectado al portátil. El resultado es el que habéis escuchado.

El tracker Beepola, con el que podemos componer
musicones para el beeper del Spectrum
Y repito, aquí no ha participado el chip de sonido del CPC en absoluto (el AY). Es sonido de 1 bit puro y duro, directo del puerto de cintas del Amstrad a nuestros oídos.

Observaréis que se oyen algunos defectillos en la reproducción, pero el culpable es el compresor de MP3 (el WAV original se oye perfecto)...

Resumiendo: una chorrada como un piano, pero a mí me mola y... bueno... si sumamos los 3 canales de sonido del PPI a los 3 canales del AY... pues... tenemos 6 canales de sonido, por si alguien se anima.

En fin, que lo paséis bien y hasta la próxima chorrada tecnológica.

¡Saludos!

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.

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.

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.