El código de un juego clásico puede esconder muchos secretos, desde la ubicación de sus gráficos hasta la forma en que gestiona la memoria o reproduce la música. Para investigar estos detalles llega dsk2jumphp, un proyecto de David Nurdin que reúne herramientas de análisis, extracción de recursos y emulación para estudiar juegos de Amstrad CPC distribuidos en formato DSK.
Disponible en GitHub, esta iniciativa permite examinar el contenido de una imagen de disco y recopilar información útil para reconstruir un juego utilizando PHP y el entorno de desarrollo JumPHP.
Un Amstrad CPC 6128 emulado sin interfaz gráfica
Uno de los componentes principales es un emulador del Amstrad CPC 6128 con 128 KB de memoria, que funciona sin necesidad de mostrar una pantalla durante la ejecución. Esta característica permite automatizar pruebas y registrar información interna del juego mientras se está ejecutando.
El emulador reproduce elementos fundamentales del hardware original, como el procesador Z80, el Gate Array, el CRTC, el controlador de disquetes y el chip de sonido AY.
A partir de esa información, las herramientas incluidas permiten examinar volcados de memoria, comparar diferentes estados de ejecución y localizar elementos concretos del programa. También es posible extraer sprites y otros gráficos, identificar textos y recuperar datos relacionados con la música.
Rainbow Islands, el ejemplo práctico
Para demostrar las posibilidades del sistema, David Nurdin incluye un caso de estudio basado en Rainbow Islands, el conocido juego de Taito que llegó a los ordenadores Amstrad CPC en 1989.
El repositorio contiene ejemplos de extracción, direcciones de memoria identificadas, scripts y comandos utilizados para investigar sus recursos. Se trata de una referencia práctica para comprender el procedimiento y aplicarlo a otros títulos.
Entre las herramientas disponibles encontramos utilidades para inspeccionar discos DSK, analizar volcados de memoria, desensamblar instrucciones del Z80 y procesar los datos del chip de sonido AY. También se pueden generar imágenes PNG a partir de los gráficos recuperados y renderizar la música en formato OGG.
Inteligencia artificial aplicada a la ingeniería inversa
Otro aspecto interesante es su integración con agentes de inteligencia artificial, como Claude Code. El proyecto incorpora instrucciones y una habilidad específica para que un agente pueda utilizar las herramientas disponibles sin tener que desarrollar un emulador desde cero.
El objetivo es facilitar el análisis de un juego existente y aprovechar los datos obtenidos para reconstruirlo mediante JumPHP. Eso sí, no se trata de un conversor automático que transforme cualquier DSK en un juego nuevo con un solo clic: el procedimiento requiere investigación, análisis de memoria y trabajo de reconstrucción.
Un proyecto abierto para desarrolladores
dsk2jumphp está escrito principalmente en PHP en lo referente al entorno de reconstrucción, pero también incluye componentes en C y herramientas auxiliares en Python. Para compilar el emulador se necesita un compilador de C, mientras que las pruebas utilizan Python 3 y bibliotecas como Pillow y NumPy. Para trabajar con determinados archivos de audio también se requiere FFmpeg.
El proyecto se distribuye bajo licencia MIT, aunque hay una cuestión importante: no incluye las imágenes de los juegos originales ni las ROM del Amstrad CPC. Además, los gráficos, la música y el resto de recursos extraídos continúan perteneciendo a sus respectivos autores.
En definitiva, dsk2jumphp abre una vía interesante para estudiar cómo están construidos los juegos de Amstrad CPC y experimentar con su reconstrucción, combinando emulación, ingeniería inversa y herramientas de inteligencia artificial. Una propuesta especialmente útil para desarrolladores que quieran profundizar en las entrañas técnicas del catálogo de nuestra máquina favorita.
Más información y código fuente: Repositorio dsk2jumphp en GitHub

