He pasado más tiempo del que me gustaría sin publicar, dado que he estado un poco ocupado, así que permíteme que te muestre el motivo.

El mes pasado la primera versión estable del editor de imágenes GIMP 3 (gratuito y de código abierto) fue liberada. Resulta que yo había escrito un plug-in (extensión) para GIMP hace tiempo, llamado Image2GB, que me permitía exportar una imagen al formato usado por el SDK (kit de desarrollo) en C de la Game Boy, GBDK (el cual actualmente es mantenido por la comunidad como GBDK-2020). Esto fue hace unos 5 años y, aunque lo he ido actualizando algunas veces, no dejaba de ser un proyecto sólo para GIMP 2. Así que hace un par de semanas reuní el valor necesario para comenzar la tarea de portarlo a la nueva versión del programa.

Pensé que sería pan comido, dos o tres días picando código. No fue así, y finalmente pude terminarlo ayer, tras maldecir al equipo de desarrollo de GIMP varias veces debido a los importantes cambios en la API (interfaz de programación) que la hacían incompatible con la anterior.

¡Pero bueno, ya está hecho! Y aproveché la oportunidad para añadir algunas mejoras aquí y allá. Puedes encontrar la última versión y las instrucciones de uso en el enlace de arriba.

Para mostrarte un ejemplo rápido de cómo funciona, vamos a elegir una aparentemente aleatoria imagen de la web:

Solid Snake, tal y como aparece en Super Smash Bros. Ultimate (Nintendo Switch).

Ahora, la abrimos en GIMP y la convertimos usando la paleta de 4 colores de la GB:

Interfaz principal de GIMP, con la imagen de Solid Snake convertida usando la paleta de Game Boy.

La exportamos usando la interfaz gráfica de mi plug-in:

La interfaz del plug-in permite elegir el nombre del recurso, la carpeta de destino y el banco de ROM.

Y la cargamos en un programa de ejemplo para la Game Boy, compilando una ROM con GBDK-2020. ¡Bastan muy pocas líneas de código!

Con una ROM de prueba, la imagen exportada puede visualizarse en la Game Boy.

Aquí puedes ver los contenidos de la memoria de vídeo (con los "bloques" de 8x8 píxeles con los que se componen los gráficos de GB), cortesía del emulador BGB:

El plug-in se asegura de que no haya "bloques" duplicados.

Si tienes curiosidad, aquí están los archivos de código fuente generados, con y sin soporte para banking (una técnica que permite crear ROM mayores de 32 kB):

Si no tienes una plantilla de proyecto de GBDK por ahí disponible para probarlos, puedes usar esto (compilarlo ya es cosa tuya):