miércoles, 12 de junio de 2019

aMazeing. Programa para generar juegos (1)

Después de copiar el listado del juego Cuarta Dimensión (que ya comenté en esta entrada del blog) me quedé con ganas de ver cómo funcionaba originalmente. Faltaba la parte en ensamblador, y los movimientos de los sprites eran muy burdos. Me decidí entonces a hacer una revisión del mismo y hacer un juego simple pero jugable. Sin embargo, me daba mucha pereza hacerlo al estilo ochentero.

La solución que se me ha ocurrido es programar la herramienta aMazeing, para generar automáticamente juegos con scroll horizontal a partir de la definición de los elementos más importantes: pantalla base, juegos de caracteres, y mapa del laberinto o cueva. Para ello he ido desarrollando una aplicación sencilla que está escrita en el leguaje de programación Java.

La aplicación está en un estado muy preliminar, por lo que iré describiendo los avances de la misma en otras entradas del blog. Y cuando esté terminada la subiré a GitHub.

De momento sólo permite especificar la aplicación en SCREEN 1, y podemos definir el juego de caracteres (patrones) así como los colores de los patrones, y definir el mapa del juego, estableciendo los patrones que aparecerán en las distintas posiciones del mapa. Ahora mismo sólo se puede generar código en BASIC.

Lo primero que se hace es ir editando la tabla de patrones, que en el modo de pantalla SCREEN1 tiene 256 caracteres diferentes, cada uno con dos colores: uno para la tinta y otro para el papel. Y los colores de los caracteres se agrupan en bloques de 8, por lo que tenemos como máximo 32 combinaciones de color diferentes. Se puede modificar la paleta estándar de MSX, que está formada por 16 colores distintos.



La edición de cada patrón es muy sencilla. Por un lado se modifican los pixels, indicando si son papel ("0") o tinta ("1"). Después se especifican los colores para la tinta y el papel.


Una vez que tenemos definidos los patrones, editamos el mapa, y situamos en el mismo los patrones que queremos que aparezcan. Todas estas tareas eran muy muy tediosas en su día, y contar con una herramienta para poderlo hacer de forma gráfica es muy conveniente.


Finalmente, generamos el código del juego. Ahora mismo sólo genera código BASIC, bastante optimizado, pero como se puede apreciar, con desplazamiento muy lento.



El código del programa generado está disponible en GitHub:
 https://github.com/humbertomb/mymsx/tree/master/amazeing/DIMENS41.BAS

Cuarta Dimensión. Juego de scroll horizontal

Mi tercer programa con cierta complejidad (1987), Cuarta Dimensión, juego tipo scroll horizontal programado en BASIC y ensamblador Z80 para ordenadores MSX1. No se publicó, y no tuvo ninguna distribución. Fue más que nada una prueba de concepto.

Como el resto de los programas de la época, no lo conservo en forma digital. Sólo he encontrado un listado apergaminado con la parte del programa en BASIC. Y no he encontrado nada de la parte en ensamblador, que es la que realiza los movimientos. Con paciencia lo he ido tecleando en mi Sony HB-700S y he conseguido recuperarlo algunas cosas. La versión del listado no es muy estable, y he te nido que reprogramar el desplazamiento en BASIC.

Pasemos a hablar del juego. Es el típico juego de scroll en una cueva/laberinto, muy sencillo de aspecto y sin un argumento de juego desarrollado, ya que la idea era aprender la técnica para hacer desplazamientos en ensamblador con manejo directo del VDP en el modo SCREEN 1. No tiene música, y el único efecto sonoro son las explosiones. Este juego lo hice con 17 años, cuando estaba aprendiendo a programar en ensamblador, y toda la parte gráfica la hacía pintando primero en una libreta con hojas cuadriculadas.



El código está disponible en GitHub:
 https://github.com/humbertomb/mymsx/tree/master/dimens4