Página 1 de 1

Mined-Out para LASER-200

Publicado: 21 Mar 2013, 13:18
por dancresp
colage.jpg
colage.jpg (42.51 KiB) Visto 4387 veces


EL JUEGO
EL juego original fue publicado por la compañía QUICKSILVA en el año 1983 para el ordenador DRAGON-32.

El objetivo del juego consiste en ayudar a un gusano a atravesar un campo minado, cruzando desde la parte inferior a la parte superior.

Las minas están ocultas bajo el suelo, pero al movernos nos avisa si hay alguna mina cerca del gusano, para ir con cuidado y tratar de sortearla.

Cada nivel superado supondrá cruzar un nuevo campo con más minas, consiguiendo puntos de BONUS extra si lo hacemos en el menor tiempo posible.

Descargar el juego en formato ".vz":
Mined-Out.rar
(1.27 KiB) Descargado 272 veces


BLOQUES
He dividido el listado en 7 bloques:

- Declaración de la matriz y llamada a las rutinas principales.
- Nudo principal de desarrollo.
- Final de juego.
- Pasar Nivel.
- Pantalla de presentación.
- Pantalla de juego.
- Poner las minas en la zona de juego.


COMO FUNCIONA
Todo el programa ocupa 65 líneas.

A continuación indicio el principio de las distintas partes del programa:

10 – Definimos la matriz donde guardamos la posición de las minas. Tiene el tamaño de la zona de juego.
20 – Muestra la presentación del juego.
30 – Presenta la zona de juego y coloca las minas.
100 – Leemos el teclado y movemos la posición del gusano, si podemos.
170 – Si ha llegado arriba va a 600 y pasa de nivel.
180 – Comprueba si el gusano está encima de una mina. En caso afirmativo salta a 500 y acaba el juego.
190 – Mira si tiene minas a derecha, izquierda y debajo cuando estamos por encima de la zona de seguridad.
195 – Mira si hay una mina encima cuando estamos por debajo de la zona de seguridad.
200 – Si no hay minas (M=0) muestra el mensaje “SAFE”.
210 – Si hay minas indica cuantas hay (M).
220 – Cuando avanzamos nos da 5 puntos (P).
230 – Descuenta el tiempo que se usa para calcular los puntos del BONUS (B).
500 – Rutina de muerte. Hace un sonido, muestra la posición de las minas, imprime el gusano muerto y espera que pulsemos una tecla.
600 – Rutina de pasar nivel. Hace un sonido, una pausa, suma los puntos del bonus, aumenta el número de minas (L) y vuelve a jugar.
1000 – Borra la pantalla y muestra la presentación. Inicializa los puntos (P) y número de minas extras (L).
2000 – Dibuja los bordes de la zona de juego.
2040 – Pone los bordes inferiores pokeando directamente en la memoria de video para evitar el SCROLL automático del sistema.
2050 – Dibuja la zona minada.
3000 –Rutina que coloca las minas en la zona de juego.
3010 – Dibuja las puertas de entrada y salida.
3020 – Inicializa la matriz de las minas.
3030 – Bucle que coloca las minas en la zona de juego.
3040 – Se calcula una posición aleatoria.
3050 – Si esta libre (=0) marca la posición como ocupada (=1), sino busca una nueva posición.
3080 – Inicializa la posición horizontal (X) y vertical (Y) del gusano, altura máxima alcanzada (T), cantidad de Bonus (B) y el Flip-Flop del tiempo (C).


EL LISTADO

listado.gif
listado.gif (35.64 KiB) Visto 4387 veces


APUNTES FINALES
Había jugado a este programa en el DRAGON-32, y me hizo gracia porque para estar programado en BASIC era un juego entretenido y tenía su gracia. Como el DRAGON 32 y el LASER 200 tienen el mismo chip de video, me planteé la posibilidad de hacer una adaptación.

El principal problema que me encontré fue la diferencia de memoria, ya que el LASER 200 solo tiene 6 KB de RAM (más 2 KB para video), así que debía optimizar el código al máximo. Como se ve en el listado, he eliminado todos los espacios que hay. Menos claro, pero el programa cabe. Por otro lado, aquí todos los niveles son iguales y solo cambia el número de minas (creciente en cada nivel). La mecánica es idéntica, eso si.

La siguiente dificultad consistía en como implementar la parte gráfica. Este ordenador tiene dos modos de video: texto de 32x16 y gráfico de 128x64. El modo texto no permite colorear las letras, pero si mostrar unos bloques gráficos predefinidos en 8 colores. Tras darle unas vueltas al tema, encontré la forma de hacerlo.

El juego original incluye instrucciones, memoriza el recorrido que has hecho y alguna cosa más. Aquí he tenido que prescindir. En la pantalla de presentación he intentado explicar lo más básico, respetando el formato original.

Los bloques negros que aparecen en el listado (210, 2010, 2040 y 3010) corresponden al bloque gráfico de la tecla “J”, el resto de textos en inverso se han introducido activando el “INVERSE” de la tecla “:*”.

Para un mayor control del gusano, he ideado un sistema para anular la auto-repetición de las teclas de control (línea 100 y 230), usando las variables A$ y B$. Hasta que no sueltas la tecla no puedes volver a mover. Básico en este juego.

He usado una matriz para guardar la posición de las minas. En otro sistema podría haber puesto las minas en pantalla con igual color de tinta y fondo para ocultarlas, y acceder a la memoria de video para saber si tocaba una, pero aquí no se puede. Esta matriz ha consumido más del 25% de la RAM.

Al programar el LASER 200 tienes la sensación de estar con un DRAGON, ya que en modo texto son idénticos. De todas formas, la edición de programas es mucho más cómoda, con teclas como “INSERT”, “RUBOUT”, y libertad de mover el cursor por pantalla. Las teclas tienen auto-repetición y el teclado es agradable al tacto y realmente fiable.

Las capacidades sonoras son muy limitadas, ya que solo permite hacer 32 pitidos distintos con duración variable.

Para terminar, por fin he programado mi DICK SMITH VZ-200 (clon de LASER 200). Este ordenador estaba en una tienda cerca de mi casa en los tiempos que tenía mi ZX-81, y me quedaba embobado viéndolo a través del escaparate. Hasta hace pocos años no me pude hacer con uno. El resultado creo que es un juego más que digno.

Y como siempre…

Os invito a probarlo.

DSC_0556.jpg
DSC_0556.jpg (96.77 KiB) Visto 4387 veces

DSC_0550.jpg
DSC_0550.jpg (73.95 KiB) Visto 4387 veces

DSC_0553.jpg
DSC_0553.jpg (68.06 KiB) Visto 4387 veces

DSC_0554.jpg
DSC_0554.jpg (78.3 KiB) Visto 4387 veces

Re: Mined-Out para LASER-200

Publicado: 21 Mar 2013, 15:29
por radastan
Pero como me está gustando tu iniciativa de hacer jueguecillos sencillos en BASIC para los 8 bit... \:D/

Re: Mined-Out para LASER-200

Publicado: 21 Mar 2013, 17:35
por dancresp
radastan escribió:Pero como me está gustando tu iniciativa de hacer jueguecillos sencillos en BASIC para los 8 bit... \:D/

Hombre, llevo una temporadita con ello, pero desde luego es la mejor forma de dar uso a un equipo y aprender cosas de él.

Ahora mismo ya he programado uno o más programas en 22 sistemas distintos:
- MSX
- Sinclair ZX-81
- Sinclair Spectrum
- Amstrad CPC
- Commodore VIC-20
- Oric-1 y Atmos
- Acorn Electron
- Dragon 32 y 64
- Atari XL
- Dick Smith VZ-200
- Mattel Aquarius
- Thomson MO
- Sharp MZ-700
- Triumph-Adler Alphatronic PC
- Osborne-1 (M-BASIC)
- IBM PC
- Casio PB
- Casio FX
- Casio FX-G
- HP 11C y 12C
- Sharp Pocket PC
- Psion Organiser

y ya tengo otros en el punto de mira... :espia:

Re: Mined-Out para LASER-200

Publicado: 03 Ene 2014, 13:49
por dancresp
Refloto el hilo con enlace al fichero en formato ".vz" para poder ejecutarlo en un emulador.