Desde hace tiempo que tengo en mente crear un juego para máquinas #MSX. Obviamente, un juego con “funny cartoon animals”, esto es, “furries”. Y después de más de 90 días encerrado en casa (update: ahora ya más de 130), al final me he puesto a aprender cómo funciona la arquitectura de tal computador antiguo, y las cosas empiezan a funcionar.

(NOTA: Voy a volcar ahora todo lo que he ido publicando en Twitter, para que quede noticia y constancia fuera de la vorágine de contenido de esa red social, y que esto lo reciban la gente que me sigue por RSS)

“Concept Art” de principios de Enero

Todo empieza en la última Reunión de Usuarios de MSX en Barcelona (RUMSX de Enero 2020), donde conocí gente increíble desarrollando juegos para esa máquina, que aún ser antigua y tener más años que yo, siguen creando contenido con sus limitados recursos de CPU, memoria y sonido. Así que decidí empezar a crear un juego también. A partir de manuales de referencia, lo primero fue crear una biblioteca de funciones básica (la “core library”) en Ensamblador y en C, y a partir de ahí empezar a construir el juego. Mencionar que @PresidentFubu está detrás de esto, dándome enlaces a ejemplos de MSX y más cosas.

Aquí algunos ejemplos de la creación de personajes, usando una paleta de 16 colores, con 4 bits por pixel en modo “Screen 5” (o “Graphics 4”). Solo tengo 32KBytes para almacenar código, gráficos y música (update: he conseguido ampliarlo a 48KB), por tanto se deben comprimir las imágenes como “tiles”, incluso aunque el modo de pantalla 5 esté orientado a mapas de bits (Bit Map Picture).

Primeros avances: Jugando con la VideoRAM, ya puedo subir diseños codificados no como BMP, sino como composición de “tiles”, que ocupa menos pero requiere un tiempo para procesar y subir a VRAM. Para ello tengo que hacer pruebas de mover los datos a RAM, montar las imágenes, y subirlas a VRAM, usando una extensión que he preparado para la “core library” con “tile functions” y “memory heap”.

Segundo avance: Poner escenarios de fondo, que serán mayores que los BMPs de personaje, pero que pueden ser más simples. Para ello uso máximo 3 tipos de “tile”, cada una con 1 color + transparencia, que simplifica los bits necesarios para codificar la imagen entera. Y también permite que usando compresión Huffman y simetría, un fondo ocupe máximo 150 Bytes (si fuera un bitmap ocuparía 450Bytes).

Además, en otro orden de cosas, estoy creando más personajes. Aquí intenté crear una chinchilla, pero me salió un hámster… Y estoy probando diferentes paletas de colores para el personaje, y que la diferencien bien del resto.

Image
Versiones de paleta para el mismo personaje

Tercer avance: He estado ocupado con expandir la “core library” para poder usar una tercera página de ROM (+16KB), y ahora la ROM permite 48KB definitivamente, donde puedo usar 16KB enteros para imágenes y sonido!

Iré informando de más avances, a medida que el desarrollo avance.

¡Hasta pronto!