Commodore manía

Otros sistemas de Commodore => Commodore 16 / Plus 4 => Mensaje iniciado por: josepzin en Junio 09, 2013, 09:40:39

Título: Lunar Rescue [juego Basic]
Publicado por: josepzin en Junio 09, 2013, 09:40:39
Otro juego programado por Danycresp, publicado en Zonadepruebas: http://www.zonadepruebas.com/viewtopic.php?f=15&t=3660 (http://www.zonadepruebas.com/viewtopic.php?f=15&t=3660)

(http://retroinvaders.com/commodoremania/foro/index.php?action=dlattach;topic=1001.0;attach=467;image)

EL JUEGO
Este 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=2269


BLOQUES
Se 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 FUNCIONA
Todo 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 LISTADO
Ver en ZonadePruebas: http://www.zonadepruebas.com/posting.php?mode=quote&f=15&p=23571 (http://www.zonadepruebas.com/posting.php?mode=quote&f=15&p=23571)


APUNTES FINALES
A 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 equipo
Este 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.
Título: Re:Lunar Rescue [juego Basic]
Publicado por: marcos64 en Junio 09, 2013, 11:02:21
@ josepzin: ese primer link???
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Junio 09, 2013, 11:12:39
Ops... es lo que tiene hacer las cosas a los apuros!!!! :D
Título: Re:Lunar Rescue [juego Basic]
Publicado por: marcos64 en Junio 09, 2013, 20:14:56
A ver si pongo un dia de estos el C16 y pruebo todo lo nuevo que hay para el  ;D
Título: Re:Lunar Rescue [juego Basic]
Publicado por: Borrocop en Agosto 26, 2016, 22:11:15
He intentado bajarme el juego y me da un error cuando intento abrir el zip  :-\

No es un refloting, soy un recién llegado y he intentado bajarme el juego.

Un saludo Gracias

-Borrocop.-
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 26, 2016, 22:19:48
Este es el enlace de descarga: http://www.zonadepruebas.com/download/file.php?id=1197

Me has hecho recordar estos juegos de Danycrest...
Título: Re:Lunar Rescue [juego Basic]
Publicado por: Borrocop en Agosto 26, 2016, 22:33:59
Este es el enlace de descarga: http://www.zonadepruebas.com/download/file.php?id=1197

Me has hecho recordar estos juegos de Danycrest...

!   C:\Users\Borrocop\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\W12L9V6I\LunarRescue.rar: Error de CRC en LunarRescue.d64. El fichero está dañado
!   C:\Users\Borrocop\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\W12L9V6I\LunarRescue.rar: Final inesperado del archivo

Esto es lo que dice si intentas abrirlo después de descargarlo Jose....  :'(

Saludetes
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 27, 2016, 00:56:45
Anda, está corrupto el RAR!
Título: Re:Lunar Rescue [juego Basic]
Publicado por: Borrocop en Agosto 27, 2016, 02:17:48
Anda, está corrupto el RAR!

Anda que no es suerte la mía, pillo un único juego y resulta que está frito  :o :o

Bueno me quedo con las ganas de ver lo parecido que pudiera estar con la recreativa  :-\

Saludos
-Borrocop-
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 27, 2016, 16:23:52
Ya le he escrito a Dancresp, a ver si lo puede volver a subir.
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 27, 2016, 16:39:03
Ya lo he encontrado en otra parte y además lo he subido a IND: http://ind.commodoremania.com/1169
Título: Re:Lunar Rescue [juego Basic]
Publicado por: Borrocop en Agosto 27, 2016, 18:37:33
Ya lo he encontrado en otra parte y además lo he subido a IND: http://ind.commodoremania.com/1169

Bueno ya lo estoy probando ahora sólo me queda ver como hago funcionar el joystick !!!

Gracias un saludo
Borrocop.-

EDITADO....
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 27, 2016, 22:34:09
Tendrás que arreglartelas con las infames teclas, como tu infame ordenador favorito :P

Citar
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.
Título: Re:Lunar Rescue [juego Basic]
Publicado por: Borrocop en Agosto 28, 2016, 00:00:44
Tendrás que arreglartelas con las infames teclas, como tu infame ordenador favorito :P

Te equivocas yo soy CPCero... pero no hago ascos a ninguno ya que lo más importante no es la máquina, si no disfrutar jugando  ;D

Salud compi
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 28, 2016, 00:03:56
El CPC también es infame... :P
Título: Re:Lunar Rescue [juego Basic]
Publicado por: Borrocop en Agosto 28, 2016, 00:08:26
El CPC también es infame... :P

Estoy de acuerdo, todos infames menos la panera y los Amigas....  :)

Pero a mi me gustan los juegos, las carcasas como que me da igual... por cierto esto de cargar juegos del C=64 es más difícil que en los otros... incluso el MSX me parece más fácil.  :(

Salud camarada
Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Agosto 30, 2016, 14:43:40
¿Te refieres a un C64 real o desde emulador?

Título: Re:Lunar Rescue [juego Basic]
Publicado por: dancresp en Septiembre 09, 2016, 13:42:37
Pues si, parece que el RAR está corrupto, como todo lo que he subido a Zonadepruebas...  :'(
Suerte que en Retrowiki sigue todo en perfecto estado.

Pongo aquí el RAR correcto y a ver si josepzin puede actualizar el primer post.

Título: Re:Lunar Rescue [juego Basic]
Publicado por: josepzin en Septiembre 09, 2016, 14:03:47
Hecho!
Título: Re:Lunar Rescue [juego Basic]
Publicado por: SirArthur en Septiembre 14, 2016, 10:43:44
Desconocía tu trabajo dancresp. Ya veo que aún tengo mucho que aprender y conocer . EL Plus4 para mi es un sistema que cada dia descubro cosas nuevas y algunas realmente asombrosas para lo que era posible hacer con el. Por cierto repasando parece que ya solo te falta hacer algo para Commodore PET y 128 ;) (Bueno, y Amiga, pero imagino que tiras a solo 8bit :) )
Título: Re:Lunar Rescue [juego Basic]
Publicado por: dancresp en Septiembre 14, 2016, 12:26:55
EL Plus4 para mi es un sistema que cada dia descubro cosas nuevas y algunas realmente asombrosas para lo que era posible hacer con el.
Personalmente es mi sistema Commodore favorito.
Siempre lo había tenido como un sistema muy básico, pero cuando ves lo que se puede llegar a hacer... te cambia el concepto.


Por cierto repasando parece que ya solo te falta hacer algo para Commodore PET y 128 ;) (Bueno, y Amiga, pero imagino que tiras a solo 8bit :) )
Todo se andará.

Para el PET tendré que tirar de emulador, y para los otros lo podré hacer con la máquina original, que es como me gusta. Así las uso...