Aardvark for Atari VCS/2600

Anteater was a game created in 1982 by Chris Oberth (1953-2012) while working at Stern Electronics, Inc. though it was published at the end by Tago Electronics, Inc.
The game is about an anteater eating so many ants and egg larvae as possible. The anteater doesn't move, but the tongue does, and it can block itself. The tongue should avoid worms, and caterpillars. At the bottom of the hill (or level), there are bonus queen ants, and eating one of these removes all enemies from the screen. While the game runs, the sun moves slowly to the right until the night comes, and the indestructible spider appears!
Basically this game is a dot-eater from top to bottom, and the enemies attack from the sides. Anteater was a pretty successful game for its time, and it has been recreated several times with different names. For example: Ardy the Aardvark, and Oil's Well by Sierra On-line.
Anteater arcade screenshot
Anteater arcade screenshot

The Atari VCS/2600 prototype

The game was popular enough to warrant a conversion for the Atari VCS/2600. This port was made by Stephen Tatsumi, with graphics by Joe King, and sound and music by Patricia Lewis.
Unfortunately it was being developed by Mattel Electronics, Inc. at the time of the video game crash, so the project was shelved even when apparently it was so near of completion.
The game resurfaced and it was demonstrated during the Classic Gaming Expo 1999 at Las Vegas, Nevada by the Blue Sky Rangers (an association of Mattel's ex-programmers). Because of murky copyright waters, it wasn't sold, nor released as ROM file.
Anteater prototype for Atari VCS/2600
Anteater prototype for Atari VCS/2600, picture from Atarimania.com

It was only curiosity

I read a thread about the missing prototype of Anteater, and from watching carefully the screenshots at Atariprotos.com it looked like something easily done.
Three days after the thread was posted, I wrote that it would be interesting to learn some things about the playfield graphics, myself thinking it was a nice challenge to learn more TIA programming (the TIA is the graphics chip of Atari 2600).
It is well-known that the Atari VCS console is based around a 6507 processor. It is the same as a 6502 processor but limited to a 8 kilobyte address space and no interruption lines. Also it only has 128 bytes of RAM. For more details on the hardware, give a look to the development of my previous game Space Raid for Atari VCS/2600.
It took me more than one month to draw a big anteater walking on the screen from left to right, just as a first baby step to create a similar game.
Aardvark ROM v1
Aardvark ROM v1
My next step was to draw the egg larvae using a single wide pixel (the minimum allowable by the playfield graphics), same size as the points appearing in the Atari's Pac-Man game, while drawing also the tongue, and having two moving sprites at each tunnel. Notice this wasn't still a playable game, but only a technical demo of feasibility, and it took me 3 months!!!
Aardvark ROM v2
Aardvark ROM v2
The next day I was able to polish the bugs in my display kernel, and give a different shape and color to each enemy. The technical demo was now complete.
Aardvark ROM v3
Aardvark ROM v3
Probably I got euphoric about the results because the next day I re-integrated the egg larvae onto the display kernel, made the tongue able to be controlled with the joystick (yet very hard to handle), and able to retract by pressing the fire button. I started my own thread on Aardvark for this and this was aard4.rom.
Aardvark ROM v4
Aardvark ROM v4
Two days latter enhanced the tongue movement to be less strict, added the flashing queen ants, and the score indicator at the bottom. Then Thomas Jentzsch brought to my attention that the dots in tunnels were already an advance over the original prototype, I never noticed it! It just seemed logical to have them.

Display kernel

The following is a fragment of the display kernel for drawing a tunnel (called section here). It uses several screen rows to clear the playfield, setup the right missile to draw tongue through a floor, setup the new bitmaps for the enemies inside the tunnel, and their color. Finally the main loop draws the tongue using the playfield in a very careful way while loading two rows of bitmap for each enemy. The main loop is repeated eight times. The position setup for enemies was done before at same time that drawing the terrain as a separator between tunnels.

	MAC draw_section
	sta WSYNC
	sta HMOVE
	lda #$20
	lda #$00
	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
	adc #enemy_bitmaps&255
	sta en0
	lda {6}
	and #$f8
	adc #enemy_bitmaps&255
	sta en1
	lda #enemy_bitmaps>>8
	sta en0+1
	sta en1+1
	ldy #7
	sta WSYNC


	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
The display kernel was programmed as macros, and then the big structure emerges in a simple way that made me very proud at the time:

    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

Nothing of this code survived in the final version.
A part of the structure that went unchanged until the final release is the fact that are used 10 bytes for each tunnel to represent the tongue blocks and the remaining eggs. These bytes are directly loaded into the playfield to represent the tongue and eggs.

Getting to the playable state

It took me almost a week to make it playable, with enemy waves of ants and worms. The collisions of these against the tongue, making the tongue to flash, and restarting the level. Hitting the queen ants but without effect. Completing the level still didn't made it to advance. At this point it looked like the prototype, but probably we'll never know about the music or sound effects!
Another five weeks passed to implement the music and sound effects taking the arcade as reference. I did it so well, than in fact this code never changed until the final release because it sounds amazing! Also made the aardvark to exit the screen when completing a level.
Aardvark ROM v7
Aardvark ROM v7
I took a break there (a pretty long one: 4 months!) and one of my friends Don Switzer, sent me an Atari Flashback Portable wondering if I could make Aardvark to run on it. For some reason the version 7 crashed on this little machine, apparently the Flashback cannot support bank switching inside the display kernel, so this was version 8 of Aardvark.
Again a break there, and Albert Yarusso offered me to publish the game in the Atariage store. So I went to implement other missing features from the arcade like the bonus calculation, the sun moving on the top of screen, difficulty increasing, the tongue retrain sound effect, random configuration for levels, and counting lives. This ROM revision 9 was demonstrated at the Portland Retro Game Expo 2017, and uploaded to the Atariage Forums in November 1, 2017.
Thomas Jentzsch integrated to the team along Nathan Strum, and both made Aardvark to look even more amazing. Thomas polished the display kernel and reimplemented several parts to allow for more detailed graphics, while Nathan (a professional animator!) made an incredible title screen, and redesigned completely the aardvark to make it to look like a cartoon! It moves ears, head, stomach, feets, and you can see the aardvark trunk sucking the ants! Also a great animation when the aardvark dies.
Aardvark for Atari 2600 final title screen
Aardvark final title screen
On my side I coded the bonus screen, polished the enemies algorithms, added a background music for the title screen, and another one for the hidden bonus level. Jentzsch also added subpixel movement code to account for different speeds of enemies (and fine tuning of difficulty), also suggested and added special game variations like one with rocks being obstacles in the tunnels.
Aardvark for Atari 2600 final appearance
Aardvark final appearance
At the end the released game really shines over the original arcade game, and doesn't look like an Atari 2600 game, but instead like an Atari 8-bit or Commodore 64 game.
Aardvark went to win the Best WIP Homebrew of Atari 2018 Awards.
And finally in December 8, 2019 (three years and four months since I started coding), Aardvark is available at the Atariage Store, getting very favorable reviews.
One year and a half later, Aardvark has been released as a ROM file, but without the Savekey feature for saving scores. You can download Aardvark at the Atariage Forums.
Aardvark for Atari 2600 box and cartridge
Aardvark box and cartridge
I feel really honored of creating this game, and then getting into a team that made it to look like I never thought it could look!
Here is a video by root42 of the game unboxing, and final game in action (time 5:57):

Atari Awards 2018

Aardvark for Atari 2600 and the trophy from the Atari Awards 2018
Aardvark and the trophy from the Atari Awards 2018

Intellivision version

After the success of the Atari version, Intellivision Revolution got interested in publishing a physical version for the Intellivision console.
It was pretty natural to port it, and I also asked for authorization from Nathan Strum to reuse his amazing graphics, and from Thomas Jentzsch to reuse his wild game modes.
The game is currently sold out. Although you can get it on ROM file from my digital store.
Here is a video of the game in action. The Intellivision cannot handle the Atari rainbows, but I compensate with graphics in other parts of the game:

Related links

Last modified: Jul/10/2023