martes, 12 de abril de 2016

Cómo escribir juegos para el ZX Spectrum. Introducción

Índice de entradas

Esta serie de artículos han sido traducidos a partir del documento "How to Write ZX Spectrum Games" con permiso de su autor, Jonathan Cauldwell, un gran desarrollador de juegos para el Spectrum, os recomiendo visitar su Web donde está el texto original. El documento original, y por tanto esta traducción, tiene © Jonathan Cauldwell y solo puede duplicarse con permiso expreso por escrito de su autor.


Introducción

Introducción

Ya has leído la documentación sobre el Z80, ya sabes cómo las operaciones afectan a los registros, y ahora quieres poner este conocimiento en práctica. A juzgar por el número de correos electrónicos que he recibido preguntando cómo leer el teclado, como calcular direcciones de la pantalla o como se emite ruido blanco por el altavoz, es evidente que en realidad no hay mucha información sobre recursos para el nuevo programador de Spectrum. Este documento, espero, crecerá para llenar este vacío en el momento oportuno. En su estado actual está claramente lejos de su finalización, pero con la publicación de los capítulos básicos que existen hasta la fecha espero que sea de ayuda para otros programadores.

El ZX Spectrum fue lanzado en abril de 1982, y para los estándares de hoy en día es una máquina primitiva. En el Reino Unido y otros países fue la máquina de juegos más popular de la década de 1980, y usando emuladores muchas personas están disfrutando de un viaje nostálgico en el tiempo a los juegos de su infancia. Otros ahora están descubriendo la máquina por primera vez, y algunos incluso están asumiendo el reto de escribir juegos para este pequeño y sencillo ordenador. Después de todo, si puedes escribir un juego decente en código de máquina para un equipo de 1980, probablemente no hay ninguno para el que no lo puedas escribir.

Los puristas odian este documento, pero escribir un juego no se trata de escribir "perfecto" código máquina del Z80 - como si existiera tal cosa. Un juego de Spectrum es una empresa importante, y no lo vas a terminar si estás demasiado obsesionado con la escritura de los mejores algoritmos para los marcadores o para la lectura del teclado. Una vez que has escrito una rutina que funciona y que no causa problemas en otros lugares, pasar a la siguiente rutina. No importa si está un poco desordenada o es ineficiente, ya que la parte importante es conseguir que funcione el juego. Nadie en su sano juicio va a desmontar el código y encontrarte los fallos.

Los capítulos de este documento se han ordenado para que el lector pueda empezar a escribir un simple juego tan pronto como sea posible. Nada es mejor que la emoción de la escritura de tu primer juego completo en código máquina, y he establecido este manual de tal manera que se cubran los requisitos mínimos muy básicos para esto en los primeros capítulos. A partir de ahí se pasa a métodos más avanzados que han de permitir al lector mejorar la calidad de los juegos que es capaz de escribir.

A lo largo de este documento se ha realizado una serie de supuestos. Para empezar, se supone que el lector está familiarizado con la mayoría de los códigos de operación del Z80 y lo que hacen. Si no es así, hay un montón de guías que explican esto mucho mejor de lo que yo lo podía hacer. Aprender instrucciones de código máquina no es difícil, pero saber cómo ponerlos juntos de manera significativa puede serlo. Familiarizarse con las instrucciones de carga (ld), comparación (cp), y salto condicional (jp z / jp c / jp nc) es un buen sitio para comenzar. El resto irán a su lugar una vez que estas se aprenden.

Herramientas

Hoy en día tienes el beneficio del hardware más sofisticado, ya no hay necesidad de desarrollar software en la máquina para la que está destinado. Hay un montón de ensambladores cruzados adecuados que te permitirán desarrollar el software del Spectrum en un PC y el archivo binario producido puede ser importado en un emulador - SPIN es un emulador popular que tiene soporte para esta función.

Para los gráficos hay una herramienta que yo uso llamada SevenUp, y lo recomiendo encarecidamente. Puede convertir mapas de bits en imágenes del Spectrum, y permite al programador especificar el orden en que se clasifican los sprites u otros gráficos. La salida puede ser en forma de una imagen binaria, o con código fuente en ensamblador. Otro programa popular es TommyGun.

Para la música recomiendo SoundTracker, utilidad que se puede descargar de los archivos de World of Spectrum. También necesitará un programa compilador por separado. Hay que tener en cuenta que estos son programas de Spectrum, no herramientas de PC y necesitan ser ejecutados en un emulador. Beepola es una excelente herramienta para producir música por el altavós de los 48K, y funciona en un PC con Windows.

Como editores y compiladores cruzados no estoy en condiciones de recomendar el mejor disponible, ya que uso un editor arcaico y un macro ensamblador cruzado para Z80 escrito en 1985, que se ejecuta en una ventana MS.DOS. Ninguno de los dos son herramientas que recomendaría a otros. Si necesita asesoramiento sobre herramientas que podrían ser adecuados para ti, te sugiero que acudas a los foros de desarrollo de World of Spectrum. Esta comunidad amigable tiene una amplia gama de niveles de experiencia y siempre está dispuesta a ayudar (NDT: en castellano puedes pasarte por Va de Retro y te ayudaremos).

Peculiaridades personales

Durante los muchos años que he estado escribiendo software para Spectrum he adquirido una serie de hábitos que pueden parecer extraños. La forma en que ordeno mis coordenadas, por ejemplo, no sigue las convenciones de las matemáticas. Mis programas en código máquina siguen la convención del BASIC de Sinclair PRINT AT x,y; donde x se refiere al número de celdas de caracteres o píxeles desde la parte superior de la pantalla, e y es el número de caracteres o píxeles desde el borde izquierdo. Si esto parece complicado al principio me disculpo, pero siempre parecía una manera más lógica de ordenar las cosas que se me quedó grabada. Algo de mi metodología puede parecer inusual en otros lugares, así que donde se puedes concebir una manera mejor de hacer algo en su lugar.

Otra cosa importante, comentar tu código a medida que avanzas es importante, si no esencial. Puede ser infernalmente difícil tratar de encontrar un error en una rutina sin comentar que escribiste hace tan sólo unas semanas. Puede parecer tedioso tener que documentar cada subrutina que escribes, pero ahorrarás tiempo de desarrollo a  largo plazo. Además, si deseas volver a utilizar una rutina en otro juego en algún momento en el futuro, será muy fácil extraer la sección requerida y adaptarla para tu próximo proyecto.

Aparte de eso, simplemente diviértete. Si tienes alguna sugerencia o informar de errores, por favor ponte en contacto.

Jonathan Cauldwell, enero de 2007.

No hay comentarios:

Publicar un comentario