1986: Batman y ZX Spectrum +2

Creado: Miércoles, 16 Enero 2013 Escrito por karmany Visto: 8019
Tamaño de letra:

ZX Spectrum y Batman

Hace unos días, al ir a guardar un libro de VB6 en el rincón de los objetos que van quedando obsoletos, desvié la mirada y mis manos hicieron lo mismo hacia una revista llamada Microhobby que me hizo recordar con añoranza mi ZX Spectrum +2. Hojeando la revista, y aunque esto ya lo comenté hace años, me llamó la atención que se hablara de un juego llamado Batman. Quise volver a recordar ese momento, así que busqué un emulador, le puse al juego vidas infinitas con un sencillo poke y a disfrutar...

 

Un poquito sobre ZX Spectrum +2

El ordenador ZX Spectrum +2 fue mi primer ordenador, y nos conformábamos con sus ¡128K de memoria RAM! Este modelo apareció sobre el año 1986, con un procesador Z80A a 3,54MHz. Para los más jóvenes que no lo conocen, al iniciarlo mostraba lo siguiente:

ZX Spectrum, pantalla inicio

Si pulsabas la opción 128 BASIC entrabas en un entorno de programación usando el intérprete BASIC (Beginners All-purpose Symbolic Instruction Code) que traducido viene a ser algo así como "código de instrucciones simbólicas de propósito general para principiantes". Llama la atención que muchas instrucciones se han mantenido iguales incluso en los Visual Basic .NET actuales.

Desde este entorno y con BASIC podías programar tus propias aplicaciones. Lo primero que hice fue un sencillo adivinador de números del 1 al 100, hasta que practicando diariamente empezabas a "medio dominarlo" y te planteabas proyectos más avanzados como una aventura conversacional (con la ayuda de un amigo, ¡un saludo Fernando!) que tuvimos que guardarla en varias cintas porque llenaba toda la memoria, o la creación de agendas (imagina donde guardabas los datos). ¡Qué pena me da haber perdido el código de aquellos programas que hice! ¡Cuántas horas delante del Spectrum!

El BASIC se quedaba pequeño

Si en la imagen anterior pulsabas la opción "Tape Loader", el ordenador esperaba que pulsaras la tecla play del casete para cargar un programa o juego que tuvieses en el reproductor. Así, de este modo, podías jugar a juegos como "El crimen de la Abadía" que si no recuerdo mal tardaba ¡más de media hora en cargarse! o Batman, que es al que vamos a jugar hoy.

Sin embargo, con el tiempo, los usuarios más avezados planteaban una gran e importante duda:

Preguntando a mucha gente por esta gran duda que tenía, -y después de mucho tiempo- uno de ellos me respondió que los programas como "Batman" no se hacían en BASIC sino que se programaban directamente en lenguaje ensamblador y posteriormente con un programa, ensamblados a código máquina (entendiendo el funcionamiento del microprocesador Z-80). Incluso en el manual de usuario había un apartado sobre este tema. ¿Y cómo conseguir entonces información sobre código máquina en el ZX Spectrum? - En la biblioteca no existían libros, ni tampoco existía el Internet que hoy conocemos. Finalmente conseguí unos apuntes del padre de un amigo, pero eran muy difíciles de digerir. Mi primer código fue dibujar un rectángulo en la pantalla y moverlo. ¡Qué diferencia con la programación en BASIC y qué difícil era! No creas que avancé mucho más con la poca información que tenía, además como no disponía de un programa ensamblador, hice todo directamente en ¡código máquina!...

Libros sobre código máquina Z-80
Diversos libros sobre código máquina en el Spectrum

La programación a día de hoy

Aunque he hablado en pasado, realmente me sorprendo al ver la cantidad de sitios web y personas que actualmente luchan por no perder lo que antaño era nuestro compañero inseparable. Incluso en alguna web, hoy día se hacen competiciones de programación. Hay miles de fans.

¡Qué lástima no haber conocido entonces toda la información que hoy se brinda sobre el procesador Z-80!

Actualmente para usar un ZX Spectrum pues seguramente lo puedas comprar, pero si no existen muchísimos emuladores -y de código abierto- de Spectrum para ejecutar en tu PC o dispositivo. Aquí hice un completo artículo en el que se testearon varios emuladores. Elige el que más te guste, yo voy a utilizar WinZ80.

Accediendo al código máquina desde BASIC

Para modificar la memoria, desde BASIC se recurría a las conocidísimas instrucciones POKE, que tienen el siguiente formato:

poke dirección, valor

donde dirección es una determinada dirección de memoria y valor es el nuevo valor. Por ejemplo, imagina (todo en valores decimales) que en la dirección 40000 está el byte 99, tras ejecutar:

poke 40000, 100

El valor 99 será modificado a 100. Sencillo.

La instrucción poke permitía, por lo tanto, modificar la memoria. Esto llegó a ser muy interesante sobre todo en los juegos para conseguir vidas extra, vidas infinitas y todo tipo de inmunidad. Por ejemplo, imagina que en un juego cualquiera en la dirección de memoria 40000 se guarda un 3 que es el número de vidas. Si hacemos un:

poke 40000, 255

puedes conseguir lógica y supuestamente 255 vidas. De ahí que en muchas revistas de la época se hablase de los conocidos pokes. La instrucción peek te permitía leer la memoria y para ejecutar código máquina desde BASIC se recurría a:

RANDOMIZE USR dirección

y para retornar desde el código máquina a BASIC se utilizaba RET.

Jugando a Batman

El juego de Batman para Spectrum tuvo algo especial que me enganchó, posiblemente por la facilidad de manejo o por los gráficos en 3 dimensiones con esa proyección isométrica. Es un juego que data del año 1986, realizado por Jon Ritman (posteriormente será muy conocido por el juego Match Day) y Bernie Drummond.

Argumento

A Batman le han robado su Batcraft y lo han dividido en 7 partes que han sido escondidas en una cueva de 150 habitaciones:

7 partes del Batcraft

Las 7 partes del Batcraft

Hay que encontrar esas 7 partes. No es necesario visitar todas las habitaciones y cada una supone un nuevo reto. Por el camino encontrarás también 4  distintos objetos:

Además de estos objetos, podrás encontrar repartidos, 3 tipos de super poderes de duración limitada:

Dispones de 8 vidas que puedes ir incrementando. Antes de comenzar debes seleccionar las teclas para mover a Batman: izquierda, derecha, arriba, abajo, salto y coger. Es útil que pongas la opción coger y saltar a la vez. Como no pude resistirme a la tentación del juego, me vi obligado a recorrer de nuevo las estancias de la Bat-cueva.

Cómo jugar

Habiendo tantas alternativas para emular un ZX Spectrum, me propuse utilizar un programa llamado WinZ80 (ver enlace anterior sobre emuladores), que actualmente es gratuito. Por supuesto, necesitarás también bajar el juego, hay muchísimas páginas de descarga. Te dejo, por ejemplo, este enlace:

http://www.worldofspectrum.org/infoseekid.cgi?id=0000438

Mira unas instantáneas que fui capturando del juego:

Batman imágenes

Como puedes observar en la imagen, he perdido ¡50 vidas!... Para esto he usado un cargador de vidas infinitas, que encontré en la revista Microhobby de la que he hablado en el primer párrafo.

Usando un poke de vidas infinitas

No te voy a dejar con las ganas, pero tampoco te lo voy a dar hecho. Si observas el enlace sobre emuladores, verás que muchos ya tienen incluidos distintos pokes para todo esto, así que puedes usarlos.

Si usas WinZ80 te muestro dos comandos en el debugger para modificar un byte en memoria. Voy a inventarme una dirección... por ejemplo 8fba (hexadecimal). Para ir a esa dirección debes teclear lo siguiente:

view 8fba

Y pulsas enter. Ahora imagina (por ejemplo, me lo vuelvo a inventar) que hubiese una instrucción sub 01:

...
214 001 SUB 01
...

Y se me ocurre simplemente modificar el byte 001 por 000 para que la instrucción sea: SUB 0. Esto se hace así:

ld 8fba,0

Me has enganchado, háblame de más cosas

El ZX Spectrum, para los que lo llegamos a acariciar, fue un ordenador especial del que aprendimos muchísimo. Este artículo es solamente mi pequeño granito de arena para darlo a conocer, seguro que sentirás curiosidad pero ten cuidado que "engancha" :-P.

Sobre el juego de Batman y el ZX Spectrum se podría estar hablando mucho más tiempo; cosas e información curiosas, explicación y emulación hoy día de un cargador de la revista Microhobby, el remake, emuladores etc. pero este artículo quedaría -tal vez- demasiado largo.

Si estás interesad@ en saber más cosas, coméntanoslo y comparte para que otros puedan disfrutar, conocer y "engancharse" a nuestro/vuestro ZX Spectrum...

Batman

Última actualización: Miércoles, 16 Enero 2013