Contra regresa al Amstrad CPC 6128 con desplazamiento continuo

Implicación de código y lógica

Código hecho enteramente por IA (la IA generó casi todo el código del juego)

Implicación de assets y pipeline

Herramientas de compilación / Scripts de conversión de assets

Notas del proyecto y prompts

Claude

Gryzor (Ocean / Konami, 1987) es la adaptación para Amstrad CPC de Contra. El juego tiene un aspecto excelente, pero el fondo nunca se desplazaba de forma fluida; en su lugar, avanzaba a saltos de media pantalla, haciendo una breve pausa en cada uno.

CONTRA 6128 es una versión reelaborada del juego original para el Amstrad CPC 6128, que cuenta con un desplazamiento de fondo (scroll) suave y continuo.

Lo que ha cambiado

Scroll continuo en la selva y en el nivel final: el fondo sigue al jugador en lugar de dar saltos de media pantalla.
Ascenso suave en la cascada: el salto de un tercio de pantalla del original se ha sustituido por un movimiento ascendente animado.
Se acabaron las pausas en las transiciones de pantalla.
Visualización limpia: cada fotograma se prepara fuera de la pantalla y se muestra al instante.
Nueva pantalla de título y nombre: CONTRA.

Lo que se mantiene igual

Los gráficos, los enemigos, las reglas y el ritmo de juego son idénticos al original.
Los niveles de pantalla fija (los pasillos de la base) son exactamente iguales a los del juego de 1987.
Se incluye la música original de la versión de 128KB: pulsa ESC en la pantalla de título para cambiar entre los efectos de sonido y la música.

5 Me gusta

¡Vaya! Gryzor es todo un hito en el mundo del CPC. Que una IA lo modifique usando solo prompts es una demostración enorme de su avance.

Se acabaron las pausas en las transiciones de pantalla.

Obviamente había grandes saltos, pero en mi opinión nunca hubo una “pausa” real: la jugabilidad seguía siendo “fluida” para mí (en el sentido de que no había espera). Es cierto que el gran salto en cada cambio de pantalla significaba que tenías que saber de antemano más o menos dónde ibas a caer, pero aun así había superposición y ese es el tipo de limitación que aceptábamos en aquella época, sobre todo teniendo en cuenta que, por lo demás, el juego era casi perfecto.

Una proeza impresionante por parte de Claude Fable. ¡Gracias al Sr. Louvet por probar esto y compartirlo con todo el mundo!

2 Me gusta

¡Madre mía, eso sí que es impresionante!

¿Qué pasó con aquella vieja demostración técnica de Gryzor que apareció hace ya tanto tiempo?

Te refieres a Gryzor Reloaded ?

Mm, ¿creo que sí?

Novedades de la versión 1.1

Esta actualización soluciona algunos problemas de juego detectados al jugar a la versión 1.0 y añade un botón de salto.

Correcciones en el juego

  • Los enemigos aparecen a tiempo. En la versión 1.0, algunos enemigos aparecían demasiado tarde con el nuevo desplazamiento suave (smooth scrolling), especialmente las torretas integradas en el escenario y las cápsulas de bonificación que hay que destruir. Ahora todos los enemigos aparecen en el momento exacto en que su parte del escenario entra en pantalla, en el mismo lugar que en el juego original.
  • La cápsula de armas voladora está de vuelta. La cápsula que vuela desde atrás al principio de la primera fase y que lleva la ametralladora múltiple (spread gun) desaparecía por el desplazamiento antes de llegar a la pantalla. Ahora cruza la pantalla como lo hacía en 1987.
  • La entrada de la base vuelve a abrirse. Al final de la primera fase, la puerta destruida ahora se sustituye correctamente por el hueco, en lugar de volver a aparecer cerrada.
  • No más enemigos desaparecidos. El juego solo tiene espacio para siete enemigos a la vez. En la última fase, la versión 1.0 podía perder a uno de ellos cuando ese espacio estaba lleno; ahora los enemigos esperan a que haya un hueco libre en lugar de descartarse.

Novedades

  • Salto en el segundo botón. El segundo botón de disparo del joystick ahora hace que el jugador salte, incluso mientras dispara. Pulsar hacia arriba sigue haciendo saltar como antes, y hacia arriba + disparo sigue apuntando hacia arriba.
  • Número de versión visible en la parte inferior izquierda de la pantalla del título.
1 me gusta

¿el qué cosa? :smiley:

Siii… ese desplazamiento NO es fluido, más bien todo lo contrario. Es un desplazamiento terrible.

Y cuando la pantalla se llena de sprites y balas (especialmente cuando disparas el arma de ráfaga), la tasa de fotogramas cae en picado. A diferencia de la versión original, donde los FPS estaban bloqueados.

Buen intento, de todos modos.

3 Me gusta

En la siguiente versión seguro que da con la tecla jeje :laughing:

Más bien creo que el desplazamiento le sienta bien, el juego es mucho más jugable.

¡Bien hecho!

Lo más interesante de todo esto es lo rápido que han podido extraer y abstraer gran parte de la lógica del juego, así como sus elementos gráficos. Hacer que tuviera desplazamiento vertical/horizontal en un CPC probablemente siempre fue pedir demasiado (por algo no lo tenía el original), pero haber llegado a este punto tan rápido significa que podría ser más factible adaptarlo al hardware de los Plus, que es más que capaz, sin necesidad de realizar un enorme esfuerzo de reimplementación.

1 me gusta

El sprite del héroe parece temblar cuando se produce el desplazamiento. Esto me daría dolor de cabeza.
¿Quizás sería mejor un push scroll, como en Ghosts’n’Goblins? No estoy seguro.

En la CPC, la tasa de fotogramas sería lo que la limite (si es por software, la más rápida que he investigado es el método de Ocean utilizado en Batman: 2 píxeles horizontalmente y 2 líneas verticalmente), y eso tarda unos 2 fotogramas en dibujar las casillas (tiles). Los sprites y la jugabilidad añaden tiempo de CPU para cada actualización. El scroll de Shinobi es similar pero no tan rápido; Extreme es bueno pero tampoco tan rápido, y otros juegos suelen ser más lentos y/o eligen reducir la superficie para intentar mantener los FPS.

Los scrolls por software parecen hacerse todos byte por byte y algunos, como Golden Axe, incluso hacen un scroll basado en caracteres.

El de Ocean a menudo abarca más pantalla. El tamaño del panel también es el que es para limitar el tiempo de dibujado de las casillas y hacer que quepa dentro de 2 fotogramas :wink:

No voy a explicar aquí cómo lo hace Ocean porque la IA no sabe cómo se hace y no lo voy a revelar; es código humano ingenioso (aunque con la forma en que lo hacen no pueden tener un panel en un modo diferente al del área principal del juego…). Me refiero al propio equipo de Ocean, no a uno de terceros que contrataran.

Con el software puedes dibujar sprites sobre las casillas y no tienes que preocuparte por restaurar el fondo como sí ocurre con el scroll por hardware.

Parece que esta versión de Gryzor está usando scroll por hardware, pero a esa velocidad es demasiado rápido para el movimiento del sprite, que es píxel por píxel, así que siempre va a dar tirones/oscilar. Si no quieres que oscile así, puedes hacer como Ghosts and Goblins: cuando te acercas al lateral, hace un scroll de una sección grande para minimizar la frecuencia con la que la pantalla da saltos.

La respuesta clásica de la IA es «mueve píxel por píxel así y deja que oscile», y dice que es aceptable y no se nota, justo como tenemos aquí… En MSX1 y con scroll continuo como en Salamander, sí, está bien porque los sprites funcionan bien así, pero no de esta manera.

Con el scroll por software también podría dar pequeños saltos, porque a menudo es byte por byte en horizontal. Podrías hacer un scroll por software píxel por píxel, pero muy pocos juegos hacen eso y estoy seguro de que no sería rápido (la verdad es que no lo he intentado todavía, me lo aponto en la lista de cosas por probar).

Con el scroll horizontal por hardware, el registro R3 del CRTC te da la misma velocidad que por software (pero ahora tienes parpadeo en los laterales), y eso sigue sin ser lo suficientemente fluido cuando los sprites se mueven píxel por píxel. Puedes hacerlo píxel por píxel por hardware y con doble búfer (para evitar el parpadeo), pero necesitas reducir el tamaño de la pantalla para que quepan todas las pantallas en la memoria principal… a menos que lo hagas solo para la gama Plus.

Así que con Gryzor eligieron la mejor opción de la época para conseguir unos FPS razonables, movimiento píxel por píxel y un juego divertido.

(Sí, he probado muchísimas formas distintas de hacer scroll, tanto por software como por hardware. Si el movimiento del personaje va a la velocidad del scroll por hardware —incluido el R3—, no hay saltos y el scroll puede ser continuo sin ser como el de Ghosts and Goblins; pero en cuanto frena el personaje a una velocidad inferior a la del scroll por hardware, no queda otra que asumir sacrificios como hace el G&G).

9 Me gusta

Esto me dejó pensando: si la gente quiere, podríamos crear una categoría cerrada, inaccesible para los bots, para este tipo de debates.

1 me gusta

Madre mía lo que sabe @Arnoldemu , estoy impresionado , lo que aprende uno :distorted_face::distorted_face::distorted_face::distorted_face: