Roguelike column thumbnail ['@ Play' is a bi-weekly column by John Harris which discusses the history, present and future of the Roguelike dungeon exploring genre.]

Ah, this one took a while to put together! It's been a month since the last installment of @Play, but in the meantime I've put together not only a selection of DS homebrew roguelikes for you to seek your teeth into, but even a tutorial on getting them to run on your own unit!

I'm sorry to say we're light on pictures this time, due to the difficulty of taking acceptable screenshots on the DS. If anyone out there has any ideas let me know and maybe I can amend this later.

Following is a tutorial for getting homebrew software running on a DS if you're using something like Datel's Games 'n Music, which should be enough for you if you want to play these games yourself. It's a little off the usual stomping grounds for @Play, so if you're just interested in the roguelike reviews feel free to skip down a bit.

STEP 1
The first thing you'll need to run homebrew software on your DS is a way to get the code past Nintendo's lockout system. Surprisingly there are now multiple ways to do this, although fewer work on the DS Lite hardware revision than the old model.

One of the options requires no special hardware at all on the DS end; it uses special drivers for specific models of PC wireless card to upload playable binaries to the DS, which then downloads the code through its Download Play feature. This method, however, makes the card unavailable for normal use while the new drivers are in place, and doesn't allow players to save data in those homebrew games that support it.

The best solution at the moment for casual homebrew experimentation is probably Datel's Games 'n Music, a surprisingly inexpensive piece of hardware (I got mine for $20) that nevertheless contains everything you need, provided you have a computer with a USB port, to run amateur code on your DS or DS Lite. There are certainly cards, for both slots on a DS, that are faster and more customizable, but for just playing around this is perfectly adequate, and carries the advantage of being widely available in department stores. Often, if your store carries Datel's Action Replay device for the DS, they will also carry Games 'n Music.

STEP 2
Once you've obtained the device, the next step is to get the necessary files onto it. This is actually pretty easy with Datel's device; it comes complete with a 128MB MicroSD card and a USB adaptor to use with it. Take the MicroSD card out of the Games 'n Music card, pop it into the adaptor, then plug that into an available USB port and Windows (or Mac OS/X, I presume) will recognize it as a standard flash drive, accessible from either My Computer or the Desktop depending on your OS.

Once mounted, you can go ahead and delete everything that starts out on the card. Most of it is older homebrew that authors gave Datel the permission to include. Earlier releases of the Games 'n Music had some more interesting games on them, but rights issues and the inadvertent inclusion of some R-rated artwork in some of the games caused Datel to recall that version. This matters to us not at all, and neither do we care about the Shrek 3 trailer in the Video directory. In fact, delete the directories too.

As for the disk that came with the Games 'n Music, keep it around if you want to encode video to display on the DS, but if you don't care about that you might as well use it as a tiny Frisbee. We won't be needing it at all.

STEP 3
There are two very important programs you're going to want to have to make good use of this device.

The first isn't really so much a program as a little piece of code. Homebrew coders were having trouble with the fact that all the various flash cards available for running programs on a DS used different interfaces to read from and write to the flash memory. This led prominent homebrew coder Chishm to create a system by which binaries could be modified by the user to reflect whatever device he might have. The system he came up with is called DLDI (for Dynamic Linked Device Interface), and it sets aside a 32k portion of the .nds binary image to be overwritten by a standardized implementation of the FAT filesystem code. The result: coders (or manufacturers) must only create a customized driver for a given device, which is then patched after the user obtains it. Although the device didn't come with such drivers (and Datel still fails to respond to requests that they supply one), Chishm himself created the necessary driver to give homebrew full access to the device's capabilities.

This means, whatever homebrew you run on the Games 'n Music, it'll need to be DLDI compatible, and you'll need to patch it yourself to run it. The first requirement is much less of a stopper than it used to be, as most hobbyist software made for the DS these days supports it. The second is merely an extra step, and will become moot anyway once you have the second program ready to go. But you'll still need to patch your first binaries with it.

So first, Windows users go here: http://psychowood.altervista.org/getDLDIrc.html I have no experience in using DLDI patchers on OS/X, but Mac users should be able to use DLDI Drop, available at http://www.blogadresse.de/2007/01/29/dldi-drop-dldi-patcher-the-mac-way/, to get it working.

The Windows program given will put a right-click option on .nds files offering to patch them with a DLDI driver. When installing it, you'll be asked which device you use. This is important: there are two supplied drivers for the Games 'n Music. Be sure to pick the first, not the "v2" version! The different drivers do not correspond to different hardware revisions, they are just subtly different ways of accessing the flash memory. The v2 version is faster, but rather less reliable, and I have found that some software does not work with it, and it may also be less compatible with different makes of MicroSD card. It is much safer to stick with the basic patch.

STEP 4
The other program is a piece of homebrew called DSorganize. By itself it's quite a capable program, containing a scribble program, a text reader and editor, a simple web browser, and even an interface by which additional software can be downloaded through a wireless connection all by itself! It can do lots more besides; it's probably the most fully-realized hobbyist program for the DS.

But best of all for our purposes, it also contains a file browser which can be used to inspect and modify the contents of the flash card on the DS itself, it can be used to boot other homebrew software, and it can even automatically patch that software in the process! Once this is installed you usually won't need to mess around with the previous tool to patch downloaded homebrew games, but you will need to patch it to begin with, both to get it running and because it gets the patch it applies to other software from its own code.

First, obtain the distribution of DSorganize from here: http://www.dragonminded.com/?loc=ndsdev/DSOrganize

Once it's downloaded and extracted, you can delete the two files ending with .gba and .sc.nds, those are for other cards. Afterwards, right-click the file DSorganize.nds, and the top-most option will probably read "DLDIrc Datel Games 'n' Music (MicroSD)". Select that and then follow the instructions on the terminal window that appears, which should amount to just pressing a key. Just like that, you're done with the patch.

Finally, copy first the DSorganize.nds file, then the DSorganize folder, to the flash card. The reason for the order is because the built-in menu in the Games 'n Music displays files in the order they appear. By copying the DSorganize file first, you'll help to keep it on the initial screen in its file browser. This is important because the browser sucks, there is no way to put it, it's frustrating to navigate around and can only be controlled by fiddly touchscreen controls. It is quite intolerant of filesystem corruption, some of which is a fact of life at this point in the driver's development life. It even does a poor job of running DS homebrew; many programs refuse to work from it, including some of the roguelikes we'll be looking at. It can't be removed at this point in time, but it can be used to start DSorganize, and that is all we'll be using it for.

STEP 5
Once you've got DSorganize onto the card we're almost done with the setup. You just have one more thing to configure, and it'll be on the DS itself.

Unmount the flash chip from Windows. (You do know to left-click the tray icon and choose to "Safely remove USB Mass Storage Device", don't you? It'll help to keep filesystem corruption to a minimum.) Put it into the Games 'n Music, then put that into the DS card slot on your game system. It should boot up in a few seconds. On the file browser, double-tap the DSORGANIZE.NDS icon. It's frustrating to get just the timing it expects down, but keep trying, it does work, it's just a little hateful. Hey, I told you the built-in shell sucks. Be grateful you don't have to do anything else using it.

Once it's started and ready, tap the "Configuration" button at the bottom of the lower screen on the DS, and then tap the Folder tab in the dialog that opens. Change the option named Default Boot Method to "Chishm," and chance Alternate Boot Method to "Mighty Max." Save out of the options by pressing A and you're ready to go!

On DSorganize's Home screen, the option named "Browser" is the most important. It'll bring up a browseable file listing of the contents of the flash card's filesystem. All the files on the card, including some that may be missing on the default shell due to crappy FAT implementation, will be visible. If the file has an NDS extension you can boot it by selecting it, with either the stylus or control pad, and pressing A.

At this point, the flash card is set up admirably to run nearly any DLDI program you throw onto it. The FAT drivers for the GnM are a little iffy it seems, but it should be okay so long as you do a chkdsk on the flash card from Windows once in a while. To do that from Windows, when the card is in your computer, go to My Computer, right-click its icon, and select Properties. Then go to the Tools tab of the dialog and choose to check it for errors. Be sure to select the box

Make sure to use DSorganize to launch any programs you put on the card. It's a lot less annoying to live with a Games 'n Music if you don't have to drag around the default shell's fiddly scroll bar, DSorganize's autopatcher means you don't have to keep track of which files you've patched, and again, some programs just don't seem to work from the built-in shell. Hopefully Datel will release a firmware update for the device eventually, but I wouldn't count on it.


And now, the reviews. Note that screenshots are all scavenged from different sources and versions, and may not necessarily reflect this version of the game.

ds1.pngDUNGEON CRAWL
Get it from: A DLDI version can be found at http://errabes.free.fr/pogo2/ The link you want to download is "dscrawl_dldi-b 1".

This one's a little tricky to learn how to use, so pay attention.
After entering your character name, race and class, which should be easy enough, you're thrown into the game. The developer made some strange control decisions that, in true roguelike fashion, take some getting used to but are okay once you figure them out. They're easier to figure out once you realize that the array of four icons to the left of the touchscreen represents the four buttons on the DS' face, and that they change when you use the control pad. Ignore the fact that the buttons change color when you move the control pad, that does not affect what the buttons do.

To move and fight, first hold the direction you want to go with the control pad then press 'A', which helps to prevent accidental diagonal motion when the player intends cardinal, a long-standing problem with roguelikes when controlled with a gamepad. If you press 'A' before moving the control pad you'll waste turns resting, so when moving don't hold it down then move the pad or you'll probably get slaughtered. Press 'B' when not moving the control pad to pick things up. Annoying the game comes with autopickup enabled, but you can disable that by modifying init.txt in the CRAWL directory. While there take a look at the other options. Some of them, like autospecifying character name, can make life in DS Crawl a lot easier. The shortcut buttons can also be changed from the defaults here. Pressing the Select button from within the game to bring up inventory, and Start shows what you know of the level map.

While the control takes some getting used to, the existence of the DS-specific options in the configuration file make it obvious that the developer of this port took the time to do it right. It is unfortunate that it doesn't appear to be looked after. The version ported is an older form of the game, not the cutting-edge Stone Soup version, and the only reason we have a DLDI version is another programmer hacked it into the source. Still, this is probably the version of the game that's most playable in its current form.


ds2.jpgNETHACK
Get it from: http://stuartp.commixus.com/nhds/

Yep, this venerable roguelike has a DS port. It's not as polished as the Crawl version, but there are some nice features included, including a subpixel font for text and full graphics turned on by default.

Another nice thing about this version is the presence of a full touchpad keyboard for controlling the game, which allows players more familiar with the PC versions of the game to get into it a lot sooner. Unfortunately, there are some annoying problems with it. Despite the wide area allowed for each key, sometimes it can be difficult to get the game to recognize the one you want to press. In a game like Nethack where some keys cause moves to be triggered instantly this can be fatal in a pinch. Better would have been to only trigger keypress events when the stylus is lifted, not pressed, so the player could use the helpful key highlighting to determine what the result will before picking it up.

A macro feature is included, and helpfully it saves commands defined in the game to a file, but it is buggy and attempting to use it more than once per sessions causes the instruction messages to be oddly clipped in a way that makes me suspect pointer errors. This also occurs from time to time in response to other game messages.

The game does support graphics, it must be noted, although the ones included are way too shrunken to be useful. The game can support tiles as large as 10x12, and with little effort one can cook up a better version of them that's loads better to see. The reason eludes me why the developer of the port didn't include such graphics in the distribution.

The graphics are nice, but the bugginess of this port makes it difficult for me to recommend this version of the game. If you do play it, I suggest saving often, even though the game forces the player to reset his DS after each game (to be fair, the DS port of Crawl does this too). Unfortunately, like Crawl, this port appears to have largely been abandoned. It is an unfortunate fact of the homebrew community that there are so many abandoned projects. Hopefully someone will come in and fix the problems, because there's a load of potential here considering Nethack's design is particularly suited for low-memory devices.

powder1.pngPOWDER
Get it from: http://www.zincland.com/powder/index.php?pagename=about

We mentioned this last time, if you can remember that far back. Turns out there's a DS native port as well. The game is little-changed from its Gameboy Advance adaptions. It still has "evil" and "holy" items, still has ultra-deadly kiwi birds, and it still has very random item generation that seems as likely to generate powerful leather armor as weak crystal plate, to judge by the game's armor display.

Last time I reviewed POWDER based off of a Windows port. The game's native form is for portable systems however, and is interesting for that. It gets around the diagonal movement problem by simply disallowing diagonals in the game, which requires the player to change his tactics a little but generally makes things easier. The most annoying thing about it, in fact, is that it makes it devilishly hard to enter your character name. The instructions themselves recommend just going with the default name, even though it ends up with a player called Lazy Adventurer.

Unmentioned but not neglected: the fairly recent DungeonS, which doesn't have a DLDI version so I could not test it out for this article. If you want to have a look at this potential up-and-comer, and happen to have hardware that can run it properly, check out the author's blog at http://blogs.moddz.com/outofrange/category/ds-game-dev/dungeons/