Space Raid: juego isométrico para Atari VCS/2600

Hace muchos años, Sega tuvo gran éxito con un juego completamente nuevo: Zaxxon, que representaba una perspectiva 3D utilizando una vista isométrica, ahora largamente olvidado.
Como sucedió con la mayoría de los juegos arcade exitosos de los ochenta, fue adaptado a varias consolas de juegos caseras, como el Atari VCS, Colecovision y MSX.
Captura de pantalla de Zaxxon arcade
Captura de pantalla de Zaxxon arcade
Desafortunadamente el Atari VCS o 2600 está muy limitado en su visualización gráfica y los programadores hicieron una conversión que apenas se parecía al original. En particular la perspectiva isométrica fue cambiada a una vista frontal.
Captura de pantalla de Zaxxon para Atari VCS
Zaxxon para Atari VCS/2600
Por muchos años los jugadores se hicieron la Pregunta (con P mayúscula), ¿es esta conversión todo lo que la consola podía hacer? ¿o simplemente los programadores se sacaron algo de la manga? (vea el hilo de Zaxxon en Atariage o un artículo sobre Zaxxon en Ataritimes)
Yo mismo me hice esta pregunta y viendo que nadie hacía algo al respecto, tomé el asunto en mis manos :) y comencé a escribir Space Raid

Escribiendo 6502

La consola Atari VCS está basada alrededor de un procesador 6507, es el mismo que el procesador 6502 pero con un bus de direcciones limitado a 13 bits y sin líneas de interrupción. Así que los cartuchos de juegos están limitados a 4K de ROM o a usar un mapper para ROM mayores, decidí mantenerme en los 4K. Y sólo se dispone de 128 bytes de RAM.
Ya tenía alguna experiencia con el procesador 6502 y escogí el ensamblador DASM, pero estaba a obscuras con los periféricos del Atari como el TIA 6526 y el PIA 6532, afortunadamente encontré amplia documentación en Internet, como los documentos Stella (nombre clave del TIA 6526) y las especificaciones Nocash 2k6.
El chip de video es muy primitivo para los estándares actuales, genera por si mismo una línea de video pero ¡todo lo demás debe ser realizado por el software!
El software debe escribir registros para cada una de las 262 líneas de video (frecuencia NTSC) o 312 líneas de video (frecuencia PAL), además sólo se dispone de siete elementos gráficos: color de fondo, playfield (20 bits escalados), dos players (8 bits de graficos cada uno), dos misiles (un pixel) y un ball (un pixel).
Además el procesador sólo tiene 76 ciclos de reloj para calcular cada línea de video y permanecer en sincronía. El programador debe contar los ciclos para cada instrucción y asegurarse de no exceder el límite.
Obvio un juego espacial como este necesita más de dos sprites, así que tuve que codificar un núcleo de visualización capaz de mostrar varios sprites utilizando los dos players. El truco aquí es que no más de dos sprites pueden estar en una línea al mismo tiempo.
La arquitectura hace que el programador tenga que pensar completamente diferente para desarrollar un juego: la visualización ES el núcleo, sus limitaciones dan forma al juego que se construye alrededor de este. Por 200 líneas visuales el procesador está ocupado al 100% haciendo la visualización y en las otras 62 líneas es cuando hay tiempo para la lógica del juego. Un pequeño error en la sincronización y la pantalla empieza a rolar en el hardware real.
Captura de pantalla de Space Raid para Atari VCS
Captura de pantalla de Space Raid, dentro de la fortaleza.
Observe como se generan 4 sprites usando sólo los 2 "players".
La programación comenzó el 24 de septiembre del 2013, el mismo día hice los dibujos para todos los elementos. Lo primero fue hacer que la nave del jugador se moviera por la pantalla, el resultado fue tan bueno que me convenció de estar en el camino correcto.
¿Podían existir tres aviones enemigos en la pantalla? hice pruebas y fue posible, la vista isométrica hizo posible poner sprites sin exceder más de dos por línea :), la parte más difícil fue conmutar los gráficos en el núcleo (recuerde: ¡sólo 76 ciclos por línea! apenas 38 instrucciones del procesador)
Con el núcleo de visualización operativo por completo, comencé a codificar el scroll de la fortaleza, una representación optimizada para los niveles, olas de enemigos, disparos de los enemigos, pantalla de Game Over, bala del jugador, puntos por destruir enemigos, campos de fuerza, jefe final, misiles normales y teledirigidos.
Incluso dediqué varias horas de la noche para pulir los efectos de sonido hasta lograr los mejores posibles usando los dos canales de sonido disponibles.
Estaba tan contento que publiqué la versión incompleta en Atariage para que todos pudieran probarla, puede seguir el progreso en el hilo original en Atariage para Space Raid y el buen recibimiento que tuvo.
Después hice que el jugador fuera destruido cuando lo tocaran las balas de los enemigos o cuando chocara con el escenario, selección de dificultad, y muchas mejoras y correcciones. Incluso una versión PAL y PAL60 :).
En cada paso del desarrollo tuve que volver a optimizar mis rutinas para recuperar preciosos bytes y realizar más mejoras. El desarrollo principal dio fin el 6 de octubre del 2013.
Al final quedé satisfecho de que mi muy pequeño juego de 4K resultara en un juego muchísimo mejor que el de los ochentas que además sub-utilizó 8K de ROM.
Así, después de todos estos años creo que dejé clara la conclusión: sí, Zaxxon para Atari pudo ser muchísimo mejor.
Después continué con el desarrollo de una versión de 8K que incluye muchísimas mejoras ;)
Recientemente Collectorvision se interesó en publicar Space Raid en una edición para Atari e Intellivision. Esta versión fisica se agotó hace tiempo.

Versión Intellivision

Coleco también publicó una versión traducida al Intellivision con la misma perspectiva extraña de primera persona.
Así que fue casi natural para mi intentar llevar Space Raid a Intellivision, tuve que aprender un nuevo procesador, numerado CP1610, un nuevo ensamblador y un nuevo procesador de video. Me tomó algunos meses lograr un comienzo.
Al final cuando el juego comenzó a funcionar lo anuncié en los foros de Atariage :)
El juego se agotó hace tiempo.
Demo de Space Raid para Intellivision
Space Raid corriendo en emulación Intellivision.
Animación ampliada por cortesía de GroovyBee

Descargas

Aquí puede descargar el juego para probarlo con un emulador de Atari como Z26 o Stella, también sobre un Atari de verdad si utiliza un cartucho Harmony.
Este es un video de una versión anterior del juego en acción hecho por Kiwi de los foros de Atariage:

Hechos curiosos

Existen otros juegos Atari que usan el nombre Space Raid, se trata de copias (o bootlegs) del juego original Megamania.
Licencié Space Raid para su aparición en el Atari Flashback 9 Gold, Legends Flashback Blast y Atari Flashback Portable de 80 juegos.

Ligas relacionadas

Zaxxon es una marca registrada de Sega.
Última modificación: 03-dic-2018