Otro juego programado por Danycresp, publicado en Zonadepruebas:
http://www.zonadepruebas.com/viewtopic.php?f=15&t=3660EL JUEGOEste videojuego arcade fue desarrollado por Taito en 1979.
El objetivo del juego consiste en rescatar a los hombrecitos que están en la superficie del planeta controlando un módulo de aterrizaje. Primero hay que desengancharse de la nave nodriza, sortear el cinturón de asteroides durante el descenso y alunizar en las plataformas. Durante el ascenso deberemos sortear o destruir las naves enemigas y volver a ensamblar en la nave nodriza.
Controles:
Pulsa Z o X para mover el módulo de aterrizaje a izquierda o derecha.
Pulsa la barra espaciadora para desengancharte, frenar o disparar.
Obtenemos puntos por aterrizar en las plataformas y destruir las naves enemigas.
Al finalizar el nivel recibimos puntos por cada hombre rescatado y un bonus de 500 puntos si los rescatamos todos.
Descargar el juego en formato ".D64":http://retroinvaders.com/commodoremania/foro/index.php?action=dlattach;topic=1001.0;attach=2269BLOQUESSe ha dividido el listado en 13 bloques:
- Declaración de las matrices. Llamada a rutinas principales.
- Controlar los distintos movimientos de nuestra nave.
- Control de los invasores y asteroides.
- Detección de las colisiones de nuestra nave. Toca suelo, asteroide, nave enemiga, nave nodriza o estrellas.
- Perder una vida.
- La nave aluniza en una plataforma.
- La nave se ensambla a la nave nodriza.
- Pantalla de Presentación.
- Inicio de la partida.
- Rutinas varias.
- DATA con rutina en código máquina que duplica el juego de caracteres en otra posición.
- DATA con los gráficos del juego.
- DATA con los datos de los enemigos y la posición y tipos de plataformas de aterrizaje.
COMO FUNCIONATodo el programa ocupa 142 líneas.
A continuación indico el principio de las distintas partes del programa:
10 - Definimos las matrices del juego.
30 – Saltar a la rutina que redefine los gráficos.
50 – Vamos a la presentación del juego.
100 – Si la nave esta enganchada (T=0) salta a 180.
110 – Leer el teclado y mover nuestra nave en descenso o ascenso.
130 – Control de la nave durante el descenso (T=1).
150 – Control de la nave durante el ascenso (T=2).
160 – Control de nuestro disparo durante el ascenso.
180 – Movimiento de la nave nodriza si estamos enganchados (T=0).
200 – Movemos una de las 5 filas de asteroides o naves enemigas en la dirección correspondiente.
230 – Revisamos si hay algo encima de nuestra nave. Si hay salta a 500.
400 – Si la posición Y está en la zona de los asteroides o naves enemigas salta a 500.
410 – Si es estamos descendiendo mira que hay a los pies de nuestra nave. Salta a 600 si hay una plataforma.
420 – Si estamos ascendiendo mira si encajamos con la zona central de la nave nodriza. Salta a 700 si nos enganchamos.
450 – Si nuestro disparo toca una nave enemiga ponemos la explosión, sumamos puntos y la hacemos desaparecer.
500 – Ponemos una explosión en la posición de nuestra nave y reproducimos un sonido.
505 – Miramos si hemos colisionado con la nave nodriza y hacemos la animación del hombrecito cayendo.
520 – Actualizamos el marcador de vidas, y si hay más hombres a rescatar seguimos la partida.
550 – Si no hay más vidas finaliza la partida.
600 – La nave a alunizado sobre una plataforma. Calculamos en que plataforma lo hemos hecho.
625 – Borramos uno de los hombrecitos de la superficie del planeta, y sumamos y mostramos los puntos.
630 – Activamos el ascenso, contador de hombres pendientes de rescatar y borramos la plataforma de aterrizaje.
700 – La nave ha ensamblado con la nave nodriza. Actualizamos hombres rescatados y lo ponemos en la parte superior.
720 – Si hay más hombres a rescatar (HP) la partida sigue.
730 – Si hemos rescatado los 6 hombres recibimos 500 puntos de bonificación.
750 – Recibimos puntos por cada hombre rescatado.
780 – Incrementamos el nivel de dificultad.
2000 – Pantalla de presentación del juego.
2050 – Al pulsar una tecla borramos la pantalla (5400) y actualizamos el marcador del jugador 1.
2180 – Mostramos el mensaje de puntos por hombre rescatado.
2190 – Inicialización de las variables principales de la partida.
2200 – Mostrar la zona de juego.
2580 – Inicializar parte de las variables del juego.
5000 – Rutina para redefinir el juego de caracteres. Aquí se baja el RAMTOP 1KB.
5010 – Se carga la rutina en ensamblador desde los DATA en memoria y se ejecuta.
5020 – Copiamos los DATA de los gráficos en la nueva posición y cambiamos los colores de pantalla.
5050 – Guardamos en una matriz las posiciones de los hombres en la superficie del planeta.
5060 – Guardamos en una matriz las posiciones de las plataformas de aterrizaje.
5100 – Rutina que activa el juego de caracteres redefinido.
5200 – Rutina que activa el juego de caracteres original. El nuestro queda residente en memoria.
5300 – Rutina que activa los colores por defecto del C-16 cuando está en BASIC.
5400 – Rutina de borrado de pantalla.
5500 – Rutina de PAUSA. Valor en (J).
5600 – Rutina que muestra las 5 filas de enemigos (según corresponde) en su posición y con el color correspondiente.
5700 – Rutina que genera las tiras de los enemigos en una matriz de dos dimensiones (E).
5800 - Rutina para vaciar el buffer del teclado.
8000 – Valores DATA de la rutina en código máquina que duplica el juego de caracteres en otra posición de memoria.
9000 – Línea DATA con los gráficos del juego.
9500 – DATA con los gráficos de los 5 enemigos distintos (2 asteroides y 3 naves).
9510 – Posición de los distintos hombrecitos.
9520 – Posición y gráficos de las distintas plataformas de aterrizaje.
EL LISTADOVer en ZonadePruebas:
http://www.zonadepruebas.com/posting.php?mode=quote&f=15&p=23571APUNTES FINALESA principios de los 90 programé en ensamblador con un MSX una versión más simple de este juego, y llevaba tiempo deseando hacer una versión más completa y fiel al original.
Como tenía fresca la programación del C-16 y había sido una experiencia satisfactoria, me decidí a hacer una versión con el Commodore Plus/4.
Principales descartes respecto al original:- Esta versión es un poco más ancha y menos alta porque el formato del original es vertical.
- Hay algunas filas de asteroides y naves menos debido al tema del tamaño.
- Durante el descenso no frenamos la nave. La paramos completamente mientras hay fuel.
- Durante el ascenso no podemos acelerar.§ Los invasores no disparan y no se aceleran al avanzar en el juego.
- La nave nodriza no se mueve cuando descendemos o ascendemos.
- No aparecen las bolas de fuego que cruzan la pantalla durante el ascenso.
Por el resto, el juego tiene un aspecto y una mecánica casi idéntica al original.
El programa no es todo lo rápido que me gustaría pero se deja jugar perfectamente y es difícil. El programa es más complejo y largo que otros realizados previamente.
Para redefinir los gráficos he usado la misma rutina que con el “Galaxy Wars”, pero aquí hay muchos más gráficos.
El control de los enemigos es muy simple. Hay 5 tiras con los enemigos en su posición correspondiente. Las filas pares rotan a la izquierda y las impares a la derecha. Con LEFT$ y RIGHT$ muevo un carácter de un extremo al otro e imprimo la fila con el color correspondiente. Todo muy rápido y sencillo gracias al comando CHAR. Estas tiras están almacenadas en una matriz de dos dimensiones. El primer índice marca la tira a visualizar según descendamos o ascendamos.
El control de colisiones es más completo y complejo. Para detectarlas accedo directamente a la zona de memoria reservada al video. Hay 1 KB para los caracteres y otro para los atributos de color.
Durante el ascenso he reducido la velocidad a la mitad del descenso para facilitar la destrucción de naves enemigas.
He tenido que guardar el estado de las plataformas y los hombrecitos en unas matrices ya que al colisionar podemos borrar parte del escenario y al redibujarlo perdía el estado.
He respetado las puntuaciones y bonus del original, y he incluido la caída del hombrecito al chocar con nuestra nave nodriza durante el ascenso.
Respecto al equipoEste es mi primer programa con un Plus/4 y la verdad es que es prácticamente igual al C-16. La única pega que he encontrado ha sido el tamaño y forma de las teclas de los cursores. Pequeñas y poco cómodas.
Para poder pasar el programa al PC he usado una placa 1541-III. Como el conector del casete es distinto la he tenido que alimentar con una fuente de alimentación de 5V externa. En el emulador de PC funciona “casi” exactamente igual. He aprovechado para retocar algún gráfico que en la TV no se apreciaba que tuviera algún pequeño fallo.
Respecto al BASIC es bastante completo y rápido. Adaptaré el juego a otros sistemas pero dudo que tengan tan buen rendimiento.
Pues nada más, solo me queda esperar que os guste.
Os invito a probarlo.