Aardvark para Atari VCS/2600

Anteater fue un juego creado en 1982 por Chris Oberth (1953-2012) mientras trabajaba en Stern Electronics, Inc. a pesar de que al final fue publicado por Tago Electronics, Inc.
El juego es sobre un oso hormiguero comiendo todos las hormigas y huevos de hormiga posibles. El oso no se mueve, pero su lengua sí, y puede bloquearse a si misma. La lengua debe evitar los gusanos y orugas. Al fondo de la colina (o nivel), hay reinas de bonificación, y comerse una de estas elimina a todos los enemigos de la pantalla. Mientras el juego corre, el sol se mueve lentamente a la derecha hasta que llega la noche ¡y entonces aparece la indestructible araña!
Básicamente el juego es un comecocos de arriba hacia abajo, donde los enemigos atacan de los lados. Anteater fue un juego bastante exitoso para su tiempo, y ha sido clonado varias veces con diferentes nombres. Por ejemplo: Ardy the Aardvark, y Oil's Well por Sierra On-line.
Captura de pantalla de Anteater arcade
Captura de pantalla de Anteater arcade

El prototipo Atari VCS/2600

El juego fue suficientemente popular para garantizar una conversión a Atari VCS/2600. El port fue realizado por Stephen Tatsumi, con gráficos de Joe King, y sonido y música de Patricia Lewis.
Para su mala suerte fue desarrollado por Mattel Electronics, Inc. justo en el momento del crash de los videojuegos, así que el proyecto fue archivado cuando en apariencia estaba tan cerca de estar terminado.
El juego resurgió y fue demostrado durante la Classic Gaming Expo 1999 en Las Vegas, Nevada por los Blue Sky Rangers (una asociación de ex-programadores de Mattel). Debido a lagunas legales, no fue vendido, ni liberado como archivo ROM.
Anteater prototype for Atari VCS/2600
Prototipo de Anteater para Atari VCS/2600, imagen de Atarimania.com

Solo era curiosidad

Leí un hilo acerca del prototipo extraviado de Anteater, y al observar cuidadosamente las capturas de pantalla de Atariprotos.com parecía como algo fácil de hacer.
Tres días después de que se publicó el hilo, abrí mi bocota y escribí que sería interesante aprender algunas cosas acerca de los gráficos de playfield. Yo pensé que sería un bonito desafío aprender más programación del TIA (el TIA es el chip gráfico del Atari 2600).
Es bien sabido que la consola Atari VCS esta basada en un procesador 6507. Es el mismo que el procesador 6502 pero limitado a 8 kilobytes de espacio de direccionamiento y sin líneas de interrupción. También tiene solo 128 bytes de RAM. Para más detalles del hardware, puedes dar un vistazo al desarrollo de mi juego previo Space Raid para Atari VCS/2600.
Me tomó más de un mes dibujar un enorme oso hormiguero caminando en la pantalla de izquierda a derecha, apenas un paso de bebé para crear un juego similar.
Aardvark ROM v1
Aardvark ROM v1
Mi próximo paso fue dibujar los huevos de hormiga usando un solo pixel ancho (el mínimo permitido por los gráficos playfield), del mimo tamaño que los puntos que aparecen en el juego del Pac-Man de Atari, y también dibujaba la lengua, y dos sprites movibles en cada tunel. Notese que este no era un juego que se pudiera jugar, sino solo una demo de la posibilidad ¡y me tomó 3 meses!
Aardvark ROM v2
Aardvark ROM v2
Al siguiente día puede eliminar los defectos en mi kernel de visualización, y darle una forma diferente y color a cada enemigo. La demo técnica ahora estaba completa.
Aardvark ROM v3
Aardvark ROM v3
Es probable que estuviera eufórico por los resultados porque al siguiente día re-integré los huevos de hormiga en el kernel, hice que la lengua pudiera ser controlada con el joystick (pero muy difícil de manejar), y capaz de retraerse al oprimir el botón de disparo. Comencé mi propio hilo de Aardvark para esto y este fue aard4.rom.
Aardvark ROM v4
Aardvark ROM v4
Dos días después mejoré el movimiento de la lengua para ser menos estricto, agregué las reinas parpadeantes, y el indicador de puntuación en la parte inferior. Entonces Thomas Jentzsch me dijo que los puntos en los túneles ya eran un avance sobre el prototipo original ¡y no me había dado cuenta! Me pareció lógico tenerlos.

Kernel de visualización

Lo que sigue es un fragmento del kernel de visualización para dibujar un tunel (llamado sección aquí). Utiliza varias líneas de la pantalla para limpiar el playfield, poner el misil correcto para dibujar la lengua a través de un piso, poner los nuevos bitmaps para los enemigos del tunel y su color. Finalmente el bucle principal dibuja la lengua usando el playfield en una forma muy cuidadosa mientras lee una línea de bitmap para cada enemigo. El bucle principal es repetido ocho veces. La posición inicial se pone antes al dibujar el separador entre túneles.

	MAC draw_section
	sta WSYNC
	sta HMOVE
	lda #$20
	sta CTRLPF
	lda #$00
	sta COLUBK
	sta PF0
	sta PF1
	sta PF2
	sta ENAM0+{7}
	sta WSYNC
	lda {1}
	beq .3
	lda #$02
.3:	sta ENAM0+{7}
	ldx #tongue_color
	stx COLUP0
	sta WSYNC
	stx COLUPF	; 3:11

	sta WSYNC
	lda {5}
	and #$f8
	clc
	adc #enemy_bitmaps&255
	sta en0
	lda {6}
	and #$f8
	clc
	adc #enemy_bitmaps&255
	sta en1
	lda #enemy_bitmaps>>8
	sta en0+1
	sta en1+1
	ldy #7
	sta WSYNC

	REPEAT 31
	nop
	REPEND

	lda (en0),y	; 5:0

	ldx #$00
	stx ENAM0+{7}

	sta WSYNC
	sta COLUP0	; 3:0
	lda (en1),y	; 5:3
	sta COLUP1	; 3:8
	lda {2}		; 3:11
	sta PF0		; 3:14  <24 
	lda {2}+1	; 3:17
	sta PF1		; 3:20 <28
	lda {2}+2	; 3:23
	sta PF2		; 3:26 <38
	lda {2}		; 3:29
	asl		; 2:32
	asl		; 2:34
	asl		; 2:36
	asl		; 2:38
	sta PF0		; 3:40 >=28 <49
	lda {2}+3	; 3:43
	sta PF1		; 3:46 >=38 <54
	lda {2}+4	; 3:49
	sta PF2		; 3:52 >=49 <65
	dey		; 2:55
El kernel de visualización fue programado como macros, y entonces la gran estructura emerge en una forma simple que me hizo sentir muy orgulloso en su momento:

    echo *
	draw_floor hole_setup+0,0,holes2,enemy0_x,enemy1_x
	echo *
	draw_section holes1,tongue1,eggs1,holes2,enemy0_t,enemy1_t,0

	jmp $f300
	org $f300
	echo *
	draw_floor hole_setup+3,1,holes3,enemy2_x,enemy3_x
	echo *
	draw_section holes2,tongue2,eggs2,holes3,enemy2_t,enemy3_t,1

	echo *
	draw_floor hole_setup+6,0,holes4,enemy4_x,enemy5_x
	echo *
	draw_section holes3,tongue3,eggs3,holes4,enemy4_t,enemy5_t,0

	echo *
	draw_floor hole_setup+9,1,holes5,enemy6_x,enemy7_x
	echo *
	draw_section holes4,tongue4,eggs4,holes5,enemy6_t,enemy7_t,1

	jmp $f800
	org $f800
	echo *
	draw_floor hole_setup+12,0,hole_setup+0,enemy8_x,enemy9_x
	echo *
	draw_section holes5,tongue5,eggs5,hole_setup+0,enemy8_t,enemy9_t,0

	draw_solid_floor
Nada de este código sobrevivió en la versión final.
Una parte de la estructura que nunca cambió hasta la versión final es el hecho de que se usan 10 bytes para cada tunel para representar los bloques de la lengua y los huevos restantes. Estos bytes son cargados directamente en el playfield para representar la lengua y los huevos (hmmm, esto no sonó muy bien).

Alcanzado un estado jugable

Me tomó casi una semana hacerlo jugable, con ondas de ataque de enemigos y gusanos. Las colisiones de estos con la lengua, hacer que la lengua parpadeara, y reiniciar el nivel. Tocar las reinas pero sin efecto. Completar el nivel no hacía avanzar el juego. En este punto ya lucía como el prototipo ¡pero nunca sabremos de la música o efectos de sonido!
Pasaron otras cinco semanas para implementar la música y los efectos de sonido tomando el arcade como referencia. Lo hice tan bien, que de hecho este código nunca cambió hasta la versión final porque suena muy bien. También hice que el oso saliera de la pantalla cuando completara el nivel.
Aardvark ROM v7
Aardvark ROM v7
Me tomé un respiro aquí (bastante largo: ¡4 meses!) y uno de mis amigos, Don Switzer, me envió un Atari Flashback Portable preguntándose si podía hacer que Aardvark funcionara ahí. Por alguna razón la versión 7 hacia crashear la maquinita, en apariencia la Flashback no puede manejar switcheo de bancos dentro del kernel de visualización, así que esta fue la versión 8 de Aardvark.
Un respiro más, y Albert Yarusso me ofreció publicar el juego en la tienda de Atariage. Así que me puse a implementer otras características faltantes como el cálculo de bonificación, el sol moviéndose en la parte superior de la pantalla, el incremento de dificultad, el sonido de la lengua retrocediendo, configuraciones aleatorias para los niveles, y el conteo de vidas. Esta versión 9 de la ROM se demostró en la Portland Retro Game Expo 2017, y se subió a los foros de Atariage el 1º de noviembre de 2017.
Thomas Jentzsch se integró al equipo junto con Nathan Strum, y ambos hicieron que Aardvark luciera aún más asombroso. Thomas pulió el kernel de visualización y reimplementó varias partes para permitir gráficos más detallados, mientras que Nathan (animador profesional) hizo una pantalla de título increíble, y rediseñó completamente el oso hormiguero para darle una apariencia caricaturesca. Mueve las orejas, cabeza, estómago, patas ¡y puedes ver como succiona a las hormigas! También una fabulosa animación cuando se muere el oso.
Aardvark for Atari 2600: Pantalla final de título
Aardvark: Pantalla final de título
De mi lado codifiqué la pantalla de bonificación, pulí los algoritmos de los enemigos, añadí una música de fondo para la pantalla de título, y otra para el nivel oculto de premio. Jentzsch también añadió código para movimiento subpixel que permitía diferentes velocidades para los enemigos (y ajuste fino de la dificultad), también sugirió y añadió variaciones especiales del juego como una con las rocas estorbando en los túneles.
Aardvark para Atari 2600: Apariencia final
Aardvark: Apariencia final
Al final el juego liberado de verdad brilla sobre el arcade original, y no parece un simple juego de Atari 2600, es más como si fuera un juego de Atari 8-bit o Commodore 64.
Aardvark ganó el premio Best WIP Homebrew de Atari 2018 Awards.
Y finalmente el 8 de diciembre de 2019 (tres años y cuatro meses desde que comencé a programarlo), Aardvark esta disponible en la tienda de Atariage, donde consiguió opiniones muy favorables.
Un año y medio después, Aardvark fue liberado como archivo ROM, pero sin la característica Savekey para guardar tablas de puntuaciones. Puedes descargar Aardvark en los foros de Atariage.
Aardvark for Atari 2600 box and cartridge
Aardvark caja y cartucho
Me siento realmente honrado de haber creado este juego, y de haber estado en el equipo que lo hizo lucir como nunca pensé que luciría.
Aquí hay un video de root42 abriendo la caja del juego, y mostrando el juego en acción (tiempo 5:57):

Atari Awards 2018

Aardvark para Atari 2600 y el trofeo de Atari Awards 2018
Aardvark con el trofeo de Atari Awards 2018

Versión Intellivision

Después del éxito de la versión Atari, Intellivision Revolution se interesó en publicar una versión física para la consola Intellivision.
Fue muy natural portarlo, y también pedí autorización a Nathan Strum para reutilizar sus sorprendentes gráficos, y de Thomas Jentzsch para reutilizar sus ideas de modo del juego.
El juego ya está agotado, pero todavía puede conseguirse como archivo ROM en mi tienda digital.
Aquí hay un video del juego en acción. El Intellivision no puede representar los arcoiris típicos de Atari, pero lo compensé con gráficos en otras partes del juego:

Ligas relacionadas

Última modificación: 18-abr-2021