10 de Febrero, 2016

Nuevo juego en camino

Estas navidades me puse a programar un juego de plataformas para el ZX Spectrum, a ver si me salía algo para enviar al concurso ZX Dev 2015 (que acaba en el 2016 :P), y el resultado es Castaway que, si no pasa nada, estará acabado a finales de este mes.

Castaway para el ZX Spectrum 48K
Una pantalla del juego

Me está costando mucho, porque como ya me pasó con Escape from Colony 8, el 48K es poca cosa si usas Z88DK y la librería SP1 implementada especialmente para este compilador cruzado.

Básicamente SP1 hace todo lo posible para dar el mejor rendimiento en su motor de tiles y sprites (y funciona muy bien), pero para conseguirlo usa un buffer doble y muchas tablas pre-calculadas que... usan mucha memoria.

Al final resulta que de esos 48 KB (que no son tales, porque eso incluye la memoria de video y la pila), tenemos para trabajar unos 26 KB; y aún utilzando compresión y mil trucos, el código y los gráficos usan espacio.

Así que estoy dedicando mucho tiempo a reescribir código C en ensamblador del Z80, y poco a poco le voy cogiendo el truquillo. Las rutinas que son fáciles de convertir resulta que son las que menos beneficio aportan, pero solo por eliminar variables y mover las operaciones a usar registros, se suele ganar en espacio (¡y velocidad!).

No es que Z88DK sea tan malo, pero no es el mejor compilador con el que he trabajado, y solo implementa optimizaciones peephole, con lo que el ensamblador escrito a mano suele ser más compacto.

Ya me queda poco código para reescribir, que es precisamente la parte más complicada (la lógica de las plataformas, por ejemplo; ya es bastante liado en C), pero estoy acabando el juego... así que al final va a quedar bastante bien.

Estoy pensando seriamente en dejar finalmente el 48K y empezar a hacer cosas para el 128K, que tiene sus propios retos, como el chip de audio AY-3-8912 o usar los bancos de memoria para acceder a todos esos 128 KB. Igual no significa dejar de lado completamente el 48K, pero creo que merece la pena al menos para juegos como este que son ya demasiado grandes para usar la librería SP1 en tan poco espacio.

Hay 2 comentarios, anotación clasificada en: programming, speccy.

1 de Febrero, 2016

»10 líneas de BASIC · Se trata de un interesante concurso de programación para el cual hay que escribir un programa en 10 lineas de BASIC para cualquier ordenador de 8-bits (evidentemente se usarán emuladores, porque es probable que los jueces no tengan acceso a todas los sistemas). Hay varias categorías, dependiendo del número de caracteres permitidos por línea. En su tiempo creo que programé cosas mucho más largas de 10 líneas ;), pero ceñirse al límite de espacio tiene que ser complicado (por no hablar de los años que llevo sin escribir nada en BASIC :P).

Hay 0 comentarios, anotación clasificada en: programming.

19 de Enero, 2016

»Haz copia de seguridad de tus crontabs · En Debian es tan sencillo como incluir /var/spool/cron/crontabs en la lista de cosas a guardar para tener copia de los ficheros de usuario, que son los importantes (ojo si tus crontabs tiene información sensible, que igual no deberían). Más que nada porque si hay que restaurar el sistema tras un desastre, esas cosillas automatizadas que hacen que todo funcione no se nos pueden olvidar (al hilo de usar Let's Encrypt).

Hay 0 comentarios, anotación clasificada en: scripting.

7 de Enero, 2016

»Nuevos juegos para el ZX Spectrum · Es una pena que WOS lleve sin actualizarse desde principios del 2014. Como la producción de nuevos juegos para el ZX Spectrum sigue adelante, alguien ha montado Speccy21, que mantiene una base de datos con los juegos que van saliendo para sistema, pero que no han sido incluidos en WOS (todavía, espero que algún día la web vuelva a la normalidad).

Hay 0 comentarios, anotación clasificada en: speccy.

25 de Diciembre, 2015

Se acaba el 2015

Aunque aún quedan algunos días, me apetece revisar ese ¿y ahora qué? de hace un año. Parece que sí cumplí un poco con mi pronóstico :).

En primer lugar publiqué mi proyecto de electrónica el DAN64, un microcomputador basado en el ATmega328 (que es el microcontrador que lleva el Arduino Uno).

Fue muy divertido y aprendí muchas cosas. Desde entonces he tenido muchas ideas sobre cómo mejorar el diseño, probablemente como un shield para Arduino en lugar de una placa autónoma, pero la verdad es que el hardware requiere mucho más tiempo que el software, así que tendré que dejar este tema para más adelante. Espero que, cuando llegue el momento, aún recuerde algo de lo aprendido :).

Aparte de ese proyecto he programado algún juego, pero desde luego no un juego al mes ;).

Primero fue The Return of Traxtor para el ZX Spectrum 48K, que tuvo buena acogida. Añade algunas ideas al original y básicamente corrige todos los problemas que aquel tenía. Esta review en Youtube está bastante bien :).

Después vino mi primera participación en una jam este año, y muy satisfactoria porque conseguí ganar una de las categorías con Blackstar en la BitBit Jam 2015. Hacer un juego en 48 horas es muy difícil, pero además hacerlo para el Spectrum 48K es... un cutre-clón del Space Invaders, porque el tiempo no dió para más :).

Desde luego no es un gran juego o, al menos, no está en la categoría de The Return of Traxtor, pero me sirvió para ganar mi primera jam, y además ayudó a que mis otros juegos se conocieran un poco más (incluyendo una entrevista en ZXDevs).

Llevaba tiempo que me apetecía probar otros sistemas, y le tenía ganas al Amstrad CPC, que fue el otro gran ordenador personal, junto al Spectrum, con el que tuve contacto cuando era un crío.

El CPC es una máquina completamente distinta y no pude reciclar muchos conocimientos, empezando por tener que usar un compilador diferente, encontrar un emulador en condiciones (al final lo tengo que ejecutar con WINE, que no es ideal), y mucho que aprender.

Mi primer juego fue Space Pest control que acabó nominado en CPC Retro Dev 2015; pese a ser un juego incompleto y tener bastantes bugs.

Imagino que me dejé llevar por el optimismo y por los ánimos de la gente cuando estaba desarrollando el juego; pero viendo los resultados de la competición, no tenía muchas posibilidades pese a todo el esfuerzo por entrar en plazos. Sigo trabajando en el juego y espero publicar la versión final el próximo año.

Lo que sí ha sido positivo es que programé mi propio motor gráfico, apoyado en librerías existentes, y eso me ha permitido entender mucho mejor cómo funcionan las cosas. Además es muy fácil cambiar el motor para hacer casi cualquier cosa, con lo que una versión para el CPC de Return of Traxtor era bastante viable.

Y esa ha sido my cuarta y última entrega del año: The Return of Traxtor para CPC. El juego funciona muy bien en el CPC, estoy muy contento con el resultado, y a la gente le ha gustado bastante.

El tema del CPC es interesante; completamente diferente del Spectrum, no solo a nivel ténico, sino en lo que respecta a comunidades de usuarios. Por ejemplo: se publican muchos menos juegos nuevos para el CPC que para el Spectrum, pero ya hablaré mas sobre ese tema en otra ocasión.

Lo que se ha resentido un poco es esta bitácora, y en cierto modo mis contribuciones a proyectos Open Source, porque no da tiempo a todo (más cuando hasta nos dió por tener un video blog :D).

La verdad es que ha sido un año muy bueno, especialmente ahora que mi tiempo para programar se ha reducido bastante tras el nacimiento de Daniel, y estoy muy contento de haber cumplido con mis planes de hace un año ;).

Hay 0 comentarios

12 de Diciembre, 2015

»Mozilla deja de desarrollar Firefox OS · Ha sido noticia hace un par de días que Mozilla deja de trabajar en Firefox OS para móviles y se centrará en IoT (eso es Internet of Things). Es triste, porque cuando probé Firefox OS era prometedor, y lamentablemente... se quedó en eso: promesas (finalmente dejé de usarlo tras 6 meses de problemas). No sé qué pasará con el proyecto, incluyendo el ¿fallido? Firefox Marketplace; pero si el cambio es para centrarse en IoT, me parece que va a ser simplemente desperdiciar más recursos :(.

Hay 0 comentarios, anotación clasificada en: firefox.

9 de Diciembre, 2015

»usebox.net con cifrado · Desde anoche usebox.net pasa a servir el contenido usando SSL, y cualquier petición al puerto 80 se redigirá al mismo servicio usando https; espero que no hayan problemas con el cambio ;). Todo esto gracias al proyecto Let's Encrypt, que proporciona certificados gratuitos y un conjunto de herramientas para manejarlos de forma cómoda y eficiente.

Actualización: ahora blackshell también se puede navegar con SSL; aunque en este caso la bitácora se seguirá pudiendo leer sin cifrado. Nuevamente, espero no haber roto nada ;).

Hay 2 comentarios, anotación clasificada en: internet.

4 de Diciembre, 2015

»Roland Radio · Desde Abril de este año Roland Radio lleva emitiendo 7x24 las mejores melodias del Amstrad CPC; incluyendo demos además de la banda sonora de gran cantidad de juegos. Es curioso como muchos de esos juegos eran bastante malos, pero no se puede negar que sonaban bastante bien ;).

Hay 0 comentarios, anotación clasificada en: cpc.

28 de Noviembre, 2015

Return of Traxtor para CPC

Anoche publiqué The Return of Traxtor para CPC, tras algo menos de un mes de desarrollo.

Pantalla de juego

Es una conversión del mismo juego para Spectrum, y se juega igual, aunque prácticamente he tenido que reescribir el juego (salvo algunas funciones en C que son portables).

Las principales diferencias son:

  • Uso de modo 0 del CPC, que tiene una resolución de 160x200 (los pixeles son rectangulares, más anchos que altos), comparado con 256x192 del Spectrum. Además tengo 16 colores a elegir entre una paleta de 26, guardados en memoria usando 4bits por pixel, con lo que no se usan atributos y no hay color clash.
  • El CPC viene con un chip AY-3-8910 (como el ZX Spectrum 128K y posteriores), con lo que el audio no usa el mismo código para el beeper usado en la versión para Spectrum 48K. Tener este chip dedicado permite tener música de fondo durante todo el juego.
  • Gracias a tener un chip dedicado para el audio, no es necesario intercalar el audio con la acción, con lo que el juego se puede mover más rápido. Esta versión se dibuja a 25 FPS comparados con los 12 FPS de la versión de Spectrum.

Por lo demás el funcionamiento del juego es el mismo. Como el CPC tiene al menos 64K de memoria y en este caso los gráficos no son muy exigentes, no he tenido que calentarme mucho la cabeza y he podido añadir algunos extras ¡porque me sobraba memoria!

Por ejemplo, quería que gente con problemas para distinguir los colores (daltonismo) pudieran jugar bien al juego. En la versión de Spectrum eso se consigue gracias a las formas de los bloques, pero el modo 0 del CPC tiene menos resolución y el diseño de los bloques incluye diferentes tonalidades del mismo color en lugar de usar el color negro.

Esto hace que los bloques no se vean bien, con lo que tuve que incluir un juego de bloques alternativo que, aunque es algo más feo, no tiene ese problema. Como extra, esos bloques se ven mucho mejor en pantallas que no son en color (recordemos que el CPC se vendió también con pantallas monocromo).

Estoy muy contento con el resultado. El juego funciona muy bien en el CPC y es tan divertido como la versión de Spectrum, y por ahora ha tenido buena recepción :).

Dos juegos del mismo tema el mismo año, aunque sean para plataformas distintas, ya es más que suficiente. No me planteo hacer más conversiones (aunque me han sugerido que el juego encajaría muy bien en el Commodore 64 :P).

Hay 0 comentarios, anotación clasificada en: cpc, programming.

23 de Noviembre, 2015

»Return of Traxtor CPC casi listo · El proyecto sigue adelante a buen ritmo. Se puede ver una beta de cómo se mueve el juego, y estoy terminando la banda sonora. Imagino que el juego tendrá una recepción algo tibia, porque a fin de cuentas es un juego tipo puzzle match-3, pero a mi me está gustando mucho cómo va quedando. Sin duda va a ser la mejor versión de la serie Traxtor.

Hay 1 comentario, anotación clasificada en: cpc, programming.

Entradas antiguas