
Save The Humor es nuestra pequeña contribución al concurso que acaba de nacer: la #bitbitjam. Durante una semana dedicamos nuestros ratos a conocer la librería CPCRSLIB de Artaburu / ESP-Soft y utilizarla para crear este pequeño jueguecito que ahora os presentamos. Os dejamos disponible tanto el juego en DSK como su código fuente, por si queréis ver cómo lo hemos hecho.
Save The Humor
En el año 2014, algo extraño está sucediendo: las personas están dejando de reirse, cada vez hay menos chistes y el humor parece estar desapareciendo. Charlie, un pequeño científico que estudiaba los mecanismos cerebrales del humor, llevaba años encerrado en un bunker haciendo experimentos. Un día, recibió la visita de un compañero que había descubierto el origen del problema.

En la época romana, los extraterrestres estaban estudiando a los humanos. Lo que más les interesaba de los humanos era aquello que los extraterrestres no poseían: sentido del humor. Así pues, construyeron una máquina para absorver el humor y conspiraron con el emperador romano: ellos proveerían al imperio con armas y, a cambio, el imperio escondería y protegería la máquina.
El proceso no puede revertirse. Sólo hay una solución: alguien debe viajar al pasado y destruir la máquina justo después de ser instalada por los extraterrestres. Charlie es el elegido y tú serás quien le guíe en su aventura contra el imperio romano.
Así se hizo

Al comenzar la #bitbitjam disponíamos de 1 semana para realizar un videojuego bajo el tema «conspiración». Por un lado nos pusimos a elucubrar ideas de la temática, mientras por otro decidíamos la mecánica del juego. Tenía que ser una mecánica sencilla que nos diera tiempo a desarrollarla en 1 semana (teniendo en cuenta que sólo disponemos de los ratos libres). Entonces nos vino a la cabeza una que nos gustaba mucho: la mecánica del Bubble Bobble.
Inmediatamente nos pusimos a trabajar en un argumento y en un juego estilo Bubble Bobble. Decidimos hacer una pantalla de sprites tamaño 8×8 píxeles en modo 0 (160×200 píxeles en pantalla), lo que nos da 20×20 sprites (tiles) para dibujar cada nivel. Para dibujar los sprites, tiles y demás, utilizamos el Retro Game Asset Studio (RGAS). La ventaja de este editor es la de contar directamente con la paleta de colores del CPC y de poder exportar los datos de los sprites en formato de código ensamblador que podemos incluir directamente en nuestro programa.

Por su parte, para el tema musical, utilizamos el WYZTracker de Augusto Ruiz / Retroworks. Se trata de un tracker muy sencillito que exporta a ficheros .MUS, junto con la definición en ensamblador de los instrumentos y efectos. Los ficheros .MUS, por su parte, se pueden abrir con un editor hexadecimal para copiar su contenido directamente en nuestro programa como datos en ensamblador.
Finalmente, para la programación utilizamos el compilador Small Device C Compiler (SDCC), que es software libre y que genera un código muy optimizado para Z80, además de dar mucha información sobre el proceso de compilación y linkado y tener muy buena documentación. Compilar con SDCC es muy fácil, pero el resultado es un fichero en formato hexadecimal de intel que todavía no podemos usar directamente en un CPC. Necesitamos utilizar también hex2bin para transformar el fichero .HEX en binario con cabecera AMSDOS, que es lo que entiende nuestro CPC. Por último, necesitamos una herramienta como iDSK para insertar el fichero binario dentro de un .DSK que podamos cargar directamente en un CPC.

Organizar todas estas utilidades para que podamos compilar, convertir a binario y generar un DSK con una sóla orden no es fácil. Sin embargo, existe un framework para Linux (que se puede usar en Windows con Cygwin) que nos simplifica esta tarea. El framework es CPC-DEV-TOOLCHAIN de Cpcitor. Este framework se ocupa de crearnos proyectos de programación en C para Amstrad, automatizando el proceso de descargar, compilar y configurar todas las utilidades que hemos nombrado para que sólo tengamos que preocuparnos de programar y compilar.