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
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.
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, 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.
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.
Descargue nanochess_space_raid.zip (25K), contiene manual del usuario y el
juego en seis versiones: 4K/8K y NTSC, PAL y PAL60.