Blasto para MSX
Publicado: 04 Ene 2014, 20:11
EL JUEGO
Este videojuego para sistemas arcade fue desarrollado en 1977 por la empresa Gremlyn.
El objetivo del juego consiste en destruir todas las minas del campo minado antes de que acabe el tiempo. Para ello disponemos de una nave que podemos mover por las zonas vacías de la pantalla, y que pueden destruir todo lo que hay en ella. Hay que ir con cuidado porque al explotar las minas destruyen lo que hay a su alrededor.
Si conseguimos nuestro objetivo conseguiremos una partida gratis.
Controles:
Utiliza el joystick o los cursores para controlar la boca.
Pulsa el disparador/espacio para disparar.
Descargar el juego en formato CAS, para cargar con CLOAD: (Nuevamente gentileza de xgipe)
BLOQUES
Se ha dividido el listado en 10 bloques:
- Declaración de las matrices. Llamada a rutinas principales.
- Control de la nave.
- Control del disparo.
- Final de la partida.
- El disparo ha impactado con algo.
- Destruir una mina.
- Perder una vida.
- Presentación e inicio de la partida.
- Rutinas varias.
- DATA con los UDG del juego y el diseño de la zona de juego.
COMO FUNCIONA
Todo el programa ocupa 73 líneas.
A continuación indico el principio de las distintas partes del programa:
10 - Definimos las matrices del juego.
50 – Salto a la subrutina que lee los gráficos, redefine los caracteres y define variables globales y modo de vídeo.
100 – Si no se pulsa el disparador se mira si se ha de mover la nave en una dirección.
140 – Si hay alguna mina pendiente de explotar se va a la rutina correspondiente 350.
150 – Control del disparo.
190 – Se controla la velocidad del juego y se reduce el tiempo disponible para finalizar la partida.
200 – Si queda tiempo vuelve a 100.
205 – Final de partida donde se controla si se ha superado el récord y si se han destruido todas las minas.
300 – Control de que ha tocado el disparo.
350 – Rutina que controla la destrucción de minas en cadena.
400 – Una mina ha explotado cerca y nuestra nave se destruye.
2000 – Pantalla inicial del juego.
2100 – Espera a que seleccionemos el control (J) mientras controla la animación de los enemigos.
2500 – Inicializar variables para la partida y rutina que coloca las minas.
2600 – Posición inicial de nuestra nave.
2700 – Rutina que muestra el laberinto de puntos en pantalla, sin las minas.
3000 – Seleccionamos el modo de video, ocultamos teclas de función.
3010 – Lectura de los DATA de los UDG y de la zona de juego.
5000 – Rutina de vuelta al editor BASIC. Recupera los valores por defecto.
5100 – Rutina que muestra el marcador de puntos.
5200 – Rutina que espera que pulsemos disparo en el controlador que hemos seleccionado.
5300 – Rutina de PAUSA. Valor en (I).
5400 – Rutina que muestra el mensaje de fin de partida o partida gratis.
9000 – DATA con los gráficos de los UDG.
9100 – DATA con las distintas filas que forman la zona de juego.
EL LISTADO
APUNTES FINALES
El 6 de enero del 2014 hará 25 años que conseguí mi primer MSX, un SONY HB-20P.
Y para celebrar el aniversario que mejor que desarrollar algún juego con él.
Para la ocasión he decidido adaptar un juego corto y sencillo pero con el que es fácil picarse. Eso lo hace muy adictivo.
Principales descartes respecto al original:
- El juego original permite 2 jugadores simultáneos.
- La pantalla tiene 28 filas y aquí solo 22.
- En el juego original hay 84 minas y aquí 64, ya que la zona de juego es más pequeña.
Por el resto, la mecánica del juego se ha respetado en su totalidad.
En un principio contemplé la posibilidad de hacer el juego para dos jugadores, pero dudando por el rendimiento lo dejé para un único jugador.
El juego
Esta versión funciona tan rápido como el original. Para ello he accedido directamente a la memoria de video mediante VPOKE, y he tenido que frenar la velocidad con el uso de la variable de sistema TIME.
Reacción en cadena
El juego es técnicamente muy sencillo y la única dificultad ha consistido en saber como resolver el problema de las explosiones de minas en cadena, ya que fácilmente pueden haber 2 o más minas juntas. Para ello he creado una matriz de 68 elementos (uno por mina) con dos punteros: “M“ y “N”.
Cuando nuestro disparo detecta que hemos tocado una mina incrementa el puntero “N”, guarda su posición en la matriz y la borra de la pantalla. A continuación se revisan las posiciones que hay alrededor. Cada vez que se encuentra otra mina se realiza la misma acción.
En la línea 140 miramos si el puntero “M” es inferior a “N” y si es cierto, vamos a la rutina que las hace explotar, incrementando el puntero “M”.
Pues nada más, solo me queda esperar que os guste.
Os invito a probarlo.