Hola,
ya han pasado casi seis meses desde que empecé a convertir rutinas del motor AGD para ZX-Spectrum, cosa que arrancó a finales de Junio.
Ahora que todo el código ZX-Spectrum ha sido convertido, a excepción de las rutinas dedicadas al sonido (chip AY), creo que ya es hora de
ir pensando en cerrar este proyecto!
Con la ayuda de Kees van Oss empezamos la tediosa tarea de pruebas y una vez solucionados los errores encontrados, nos decidimos a añadir
algunas nuevas funcionalidades que se están añadiendo en la actualidad al estandar AGD.
Por ejemplo además de los sprites 16x16 ahora podemos manejar los de 16x24
Como los sprites se mueven dos pixels a la vez, implica que debe haber cuatro 'imágenes' desplazadas desde la izquierda 0,2,4,6 pixels
para mostrar una secuencia competa.
Por ahora, AGD lo solventa creando cuatro bloques de datos para cada sprite, uno para caga imágen. Estas imágenes adicionales las genera el compilador de forma que el fichero ASM final contiene 128 bytes en lugar de 32 por sprite.
Existe un desarrollo muy ingenioso que, usando cuatro tablas de solo 256 bytes, es capaz de pintar las cuatro imágenes partiendo
de solamente la principal. Ello implica mas código y las tablas en si mismo, pero como muchos juegos usan
muchos sprites, el resultado global es muy positivo.
De este modo, algunos juegos que NO cabían en las 32K bajas, ahora SI caben!
Posteriormente, estas tablas las he enviado a la parte alta de RAM, liberando otros 1024 bytes de forma que ahora todos los juegos
funcionan en CoCo-Dragon. Además, el código tiene varios indicadores de compilación condicional, que permiten evitar partes
que no hacen falta para un juego.
*** Solo recordaros que los juegos AGD *requieren* máquinas con 64K de RAM (obligatoriamente) ***
Bien, el 'motor' ha sido la primera parte que debía ser convertida. Contiene las funciones que se ofrecen al creador de juegos que puede
llamarlas desde el script que genera la aplicación AGD en el Spectrum.
A continuación, con Kees nos dedicamos a modificar el compilador que lee este script y genera un fichero ASM con código 6809 y los datos del programa. Es un programa en C que se ejecuta bajo Windows y se compila bajo MinGW
La suite se completa con otra herramienta importante, el conversor que, también es un programa en C que lee un fichero .sna de Spectrum
(creado con AGD) y es capaz de extraer un fichero de scripts y datos para su posterior compilacion.
Con el conversor, el compilador y el motor podríamos convertir unos 150 juegos aprox.
Para hacernos la vida mas fácil, he creado una colección de ficheros .bat que permiten probar ficheros AGD en XRoar emulando CoCo o Dragon,
crear los discos (VDK, DSK) e incluso crear una carpeta para cada juego con todos los ficheros intermedios utilizados
puede hacerse de forma individual o masiva.
Para todo ello, estamos utilizando algunas heramientas de otros programadores (listados alfabéticamente)
- ASM6809 de Ciaran Anscomb (Sixxie)
- DragonDos de Rolf Michelsen
- ImgTool de MAME/MESS
- XRoar de Ciaran Anscomb (Sixxie)
AGD es el acrónimo de Arcade Game Designer y fué creado en 2008 por Jonathan Cauldwell
Que esperamos ahora de todo esto?
Bien, la guinda en el pastel sería que la aplicación WinAGD sea capaz de dar soporte a los esquemas de colores del 6847 (Pmode3 y Pmode 4).
Este es un punto importante para cualquiera que desee hacer una versión en colores de cualquier juego que vayamos
liberando a partir de ahora ...
Y mas importante, nos permitiría crear juegos desde cero!
La imaginación al poder!!
saludos
pere
Ps Podéis ver mas datos sobre el proyecto AGD en estas páginas
https://jonathan-cauldwell.itch.io/arcade-game-designerhttp://www.worldofspectrum.org/infoseek ... id=0020176