Tuesday, June 25, 2013

Adventure of the Week: Dark Mage (1997)

This week, we're looking at Dark Mage, an adventure game running on perhaps the least likely platform imaginable: the Atari 2600.  This text adventure was coded by Greg Troutman in 1997, as a homebrew project long after the 2600's heyday, and made available for distribution via the Internet as a Public Domain title (a good source for downloading it is Atari Age). 

In a brief text intro, the player is cast as a court jester, recently ousted by King Roland after a bout of excess drinking, which also led to the loss of the Black Rose of the Realm to the Dark Mage, Neonore.  Presumably, we will be attempting to earn our way back into the good graces of the Court.

Without a keyboard to work with, player interaction is limited to a few choices -- in the standard mode, the joystick is used to access the four cardinal directions for navigation, with LOOK occupying the center position and the 2600 controller's single button used to commit the selection.  LOOK also switches control modes to make verbs available by moving the joystick left and right -- TAKE, GIVE, USE, TALK, and INVENTORY

The game's most impressive feature, given the 2600's limited graphics hardware, is its ability to render text onscreen without relying on flicker or interlacing tricks -- the uppercase-only text here is much clearer than the 2600's only contemporary text-based example, the Sears-exclusive Stellar Track adapted from the old mainframe Star Trek games.  I'm playing the 8 KB version of Dark Mage here, which allows some room for descriptive text, though the map is necessarily small and the puzzles simple; an even tighter 4K version also exists.

Interested readers are of course encouraged to try Dark Mage out -- the ROM image runs fine on the MESS Atari 2600 emulator, and a limited run of production cartridges was made available at one time, which you may be able to track down if you prefer to use real hardware.  For the historical record, I'm going to document my entire playthrough here -- so there are certain to be...


We begin on a hilltop, where we can LOOK to see a GREAT VOID TO THE WEST and trails leading elsewhere.  Trying to go west indicates that this is the edge of the world, and YOU ARE NOT UP TO TAKING A LEAP OF FAITH, JUST YET.  We have a HAMMER in inventory.

To the east is an old house in the woods; LOOK performs a search and discovers a loaf of bread.  To the south is a grassy knoll, where a snake seems to be shadowing our progress and blocking our way east; WHAT DOES IT WANT?, the game suggests.

South of the hilltop is a PEACEFUL VALLEY, where AN OLD HERMIT SITS NEAR A SHACK; north is a clearing, where A BROOK BABBLES BY, and LOOK espies a TINY FISH FLOPPING ABOUT IN A SHALLOW PART OF THE BROOK.  North of the brook is a wide river, and the game suggests we might need fins to cross it.  On the banks of the great river to the east is a bridge further east; it is blocked by the traditional troll, who asks, "WHERE IS YOUR MONEY?"
So we've explored the accessible map, and so far we have three puzzles to deal with.  The snake doesn't want the hammer or the bread.  The hermit just sighs if we try to TALK to him, the troll growls and the snake hisses.

We can't seem to USE any of our inventory objects anywhere yet, either, at least not in the obvious ways.  Hmmm.  Except -- if we USE the fish in the location with the snake, it turns out to be something like Douglas Adams' Babel fish -- we can understand the snake's hissing now, and it says: "RETURN THE ROSE... THERE IS A SECRET PASSAGE TO THE EAST." 

Now we can access A NARROW PATH SKIRTING A RIVER that leads to SOME ROLLING HILLS.  (The 2600's tiny 128 bytes of working memory appears to be responsible for another constraint here -- LOOKing on the grassy knoll will continue to tell us that the snake blocks our path, even though we can travel freely past it now.)

A LITTLE DOG FOLLOWS YOU here; a large hole blocks progress to the north, and the narrow canyon to the south is blocked by AN AXE WIELDING OGRE who advises us to "TURN BACK!" if we talk to him.  We can GIVE BREAD to the dog, and now YOU'VE MADE A FRIEND; we can TAKE him along on our journey.

The hermit's sighing gives the impression that he's lonely -- perhaps this occupation was not his best choice -- and we can GIVE him the dog to earn a gold coin in exchange.

Now we can pay the toll at the troll bridge (or vice-versa) and cross the bridge to discover a POOR VILLAGE that seems deserted.  A small shed on the southern edge of the village contains a CAN OF BLACK PAINT.

So now we have some paint, and a hammer, and the tiny fish.  Hmmm.  The ogre still blocks the way south, and doesn't seem tempted by or vulnerable to any of the objects we have.  There's no save game facility here, but we're not too far along so it's reasonable to restart.

Exploring alternate possibilities, we learn that we can USE the little dog to scare the ogre into letting us pass before we give him to the hermit.  Except it seems he still won't let us pass?  Ah, we have to TALK to the ogre before we can actually get past him, to reach a barren wasteland (so why does it need a guard?)

The wasteland is a bit of a maze, though some exits are blocked, and differently so in each room, so it isn't too hard to figure out (very good, considering there is no DROP verb supported to help with mapping!)  The wasteland maze leads to a FIELD OF WHITE FLOWERS, where an artist silently paints.  TALKing to the artist reveals that his/her works are not for sale.

A VAST PLAIN further west is a dead end, except we can see TWO JACKELOPES [sic] ARGUING; they tell us to "BUTT OUT!" if we try to talk to them.

Giving the black paint to the artist has an unexpected result -- THE ARTIST PICKS A WHITE ROSE AND PAINTS IT BLACK FOR YOU.  So we have a Black Rose... of sorts.

I'm stuck at this point -- there seems to be nobody who wants or cares about the Black Rose, now that we have it or a reasonable facsimile thereof.  But thanks to the walkthrough at the always-useful CASA Solution Archive I learn that we have to restart and USE the COIN to settle the arguing jackalopes' dispute, before we pay the troll.  TALKing to the animals now reveals a northern trail out of the plains.

The exit path leads through a marshland and a sandy beach, where THE CASTLE IS IN YOUR SIGHT TO THE NORTH!  The castle guard won't let us in, of course, per standard banishment procedure, but if we GIVE him the fake Black Rose, THE GUARD ACCEPTS THE THE [sic] PAINTED ROSE, AND RAISES THE GATE! 

One more step north, and thanks to the Royal lack of familiarity with the genuine article, victory is ours!


Though we are advised that this is not really the end of the journey:

That's it as far as this installment of the game is concerned, even though we never used the hammer or ran into the titular Dark Mage, Neonore.  As far as I can determine, a Dark Mage Part Two has not been forthcoming, even though this final display appears to provide a password for the next section.

There is also a 4K version of Dark Mage, which is considerably shorter -- it starts in the field of white flowers, with an unused chisel in inventory instead of the unused hammer, and a substantially different and smaller map layout.  The snake/fish, dog/hermit and artist/rose puzzles are the same, but the ogre and the jackalopes are nowhere to be seen, so each item has only one use, which makes the 4K edition a lot easier to play through.  There's no end code given for a Part Two, and the text is also cut down a bit, so it appears that the original 4K version was followed by an expanded 8K edition, but that's as far as the experiment went.  (The 2600 could only address 4 KB of ROM, so a bank-switching technique has to be used to accommodate larger cartridges, swapping two 4K blocks of data back and forth -- this approach still has limitations, so this is probably as much of a text adventure as the system can accommodate.)

I enjoyed playing Dark Mage -- I was expecting a text adventure on the Atari 2600 to be a bit of a singing dog, but it's actually not a bad game given the constraints of the platform.  The joystick interface takes some getting used to, but it works, in large part because the death-free design never penalizes the player for accidentally picking inapplicable verbs or movements with the joystick.  And I appreciate that it's an original game -- so many homebrew projects focus on porting an existing design to different hardware that it's nice to play through a story that only exists in this form.  While text adventures might never have worked commercially on the 2600, Mr. Troutman's project demonstrates that it can be done.  Good stuff!


  1. Wow. I remember reading about how games had to be programmed on the Atari 2600. Apparently, there was only enough video memory to store one scan line at a time, so any 2600 program had to devote enough cycles to write a new line of pixels to video memory 14,400 times per second.

    How in heavens name they did text is beyond me.

  2. Even trickier is that there were only a couple of sprites available -- so Greg Troutman must have had to switch the bitmaps multiple times PER SCAN LINE to pull this off. (The old Atari-produced-for-Sears Stellar Track cartridge cheated a bit by interlacing the text -- so only half as much drawing had to be done on each scan line, with black lines cutting through the text on every other line.)

    The room descriptions appear to be static, the only dynamic text is at the bottom where verbs and inventory items are displayed, so the text display for each screen might have been hardcoded to allow optimization and line-breaks conveniently set up to make the code work. Pretty impressive however it was pulled off!

  3. Was he using sprites for the text? I thought there were ways other than sprites to draw things to the screen. (E.g., there were one or two shooting gallery games that I believe came BUILT IN with the Atari 2600 -- in those games, the player 1 and player 2 cannons were sprites, and their shots were 1-pixel "missile sprites", but the targets drifting across the background were done differently.)

  4. I'm speculating and no expert, but my recollection is that there were two sprites (each a bitmap of 8 pixels) and one ball/missile (a single-pixel dot which could be placed at any position on the line). So I think it would have been easier to use bitmaps for the text and change them up several times a line, than to move the ball many more times per line. Backgrounds were difficult because you could only control half the screen at a very low resolution, and then either mirror or copy it to the other side of the screen (right/left). The resolution of the 2600's background register would not have been usable for text, so it's likely just set to a red backdrop with sprites and/or the ball used to render the text.

  5. Ah the good old days! You haven't lived until you've been an assembly language programmer!