Welcome to the home page for my port of NetHack to the Nintendo DS. The goal of this project is to create a port of NetHack for the DS utilizing the unique features of the DS to create an easy-to-use NetHacking experience. I think I’ve succeeded in that goal. I’m probably wrong.


October 17, 2009

No, this isn’t a real update, in that I haven’t made any recent changes to the NetHackDS codebase. That said, I wanted to announce that I’ve moved the code to GitHub. You can find the repository here:

From there you can grab the latest version of the codebase, and any changes I do get around to making will be published there. Enjoy!

October 19, 2008

Well, long time no see! I can’t say I have an excuse for no updates, but, well… so it goes, eh? Anyway, this is an announcement for an initial, very alpha release of both a SporkHack and Slash'EM port, built using NetHackDS as the underlying base.

Now, I need to repeat, these are alpha releases. I’ve done only the most basic of playtesting on them, and haven’t even exited the main dungeon in Slash’EM. But if you’re interested in trying out some fairly preliminary code, you can download them here:

January 24, 2008

Version 1.17 Released.

January 7, 2008

No, this isn’t an update. Well, not exactly, anyway. Rather than hacking more on the game, I decided to hack up a new manual instead. It’s even a nice, fancy PDF! Oooh, ahhh! Anyway, it’s linked below.

January 4, 2008

Version 1.16 Released.

Regarding the keymapping code, the new cmdkey option adds interesting new possibilities. For example, by switching the cmdkey to ‘start’, you can free up both shoulder buttons for chording:


It’s interesting to note that the ‘lefthanded’ option is somewhat unnecessary now, as the same thing can be achieved with cmdkey and CHORDKEYS. However, I’ve left it in for backward compatibility, and it results in the L and R keys being swapped.

Note, make sure you copy over kbd.pal and minimap.pal from the distribution archive to your /NetHackDS directory (assuming you don’t just unzip straight over the old copy).

December 31, 2007

Version 1.15a Released.

Yes, already. Fixed a map rendering bug in graphics mode caused by wall tile substitution in the NetHack core (this was evident when going from the regular dungeons to Sokoban, where the wall colours are supposed to change, but didn’t).

Version 1.15 Released.

Now, you may ask, “why did you remove triggermode?!?”. Well the answer is simple: CHORDKEYS allows the same functionality, only moar betar! Specifically, if you set CHORDKEYS as follows:


You can then bind Up+B to Up, Up+Right+B to Up-Right, Right+B to Right, and so on. And this happens to be identical to triggermode. BUT, it also allows one to bind Up+X, Up+Y, and so forth, which is basically triggermode on steriods (and allows one to duplicate other key arrangements, such as that found in DSCrawl).

But note! If you change CHORDKEYS, your keybindings are reset! This is necessary, as there’s no clean way to migrate an old keyset forward if the CHORDKEYS setting changes.

And yes, this modification is backward compatible with the old keybinding file, so your settings won’t be lost (again, unless you change CHORDKEYS).

Lastly, in CHORDKEYS, the free shoulder button is always “r”, whether or not lefthanded mode is enabled. Call me lazy.



Image-a1b11d7c21af092c Image-71d1497cb11a2897 Image-91646e33517f69cf


To build, you’ll need:

Of course, the last two are only used when debugging remotely via GDB, but they’re necessary for the build to complete (yeah, I know, I need to make them optional depending on the build type… some day).

And please… don’t look too closely at the source. It’s… really really ugly. :)

Installation Instructions

Simply extract the NetHackDS archive into the root of your flash card. Feel free to move the .nds file if you like, but the NetHack directory must be in the root of the flash card. You may also have to apply the appropriate DLDI patch to the NetHackDS.nds file, if your card doesn’t support auto-patching.


See the [[download:NetHackDS Manual.pdf?]]


NetHackDS comes with the stock 16x16 NetHack tileset. However, there are, of course, alternate sets available, which can be used with NetHackDS.

To install these tiles, copy them to the NetHack folder on your flash cart, then edit /NetHack/defaults.nh, and change the first OPTIONS line to contain the name of the tileset, and the correct width and height for those tiles.

Additionally, NetHackDS is known to work with rltiles.

If you want to create a new tileset, NetHackDS requires a 16- or 256-colour indexed, non-RLE-encoded BMP file, and the tile dimensions must be a multiple of 8.


The default NetHackDS font is a 5x10 font called ProFont. However, NetHackDS will happily work with other fonts, and so I’ve provided a couple others snagged from X11.

And, of course, you can always use the included 8x16 map font.

Text Mode

Of course, there are purists out there (and, let’s face it, I count myself among them), who would say NetHack ain’t NetHack if you’re playing it with tiles. Luckily, NetHackDS also supports text mode. The default font is from Stumpy's collection, and is fully ANSI compatible, meaning ibmgraphics mode works perfectly. Meanwhile, the palette was swiped from gnome-terminal’s idea of the default xterm colour palette.

To enable text mode, simply remove any tile configuration from /NetHack/defaults.nh, as it falls back to text mode in the absence of a tile specification.

Of course, you should be able to use any fixed-width, BDF-2 compatible font as a replacement, though understand that the characters will be padded out to multiples of 8 (ie, a 7x10 font will become an 8x16 font with extra space around each character). Of course, Stumpy’s font is already 8x16, which is rather convenient. You can also replace the palette, which is stored as a plain text set of 16 RGB hex values. The default set should match the xterm palette.

The data files are located in the /NetHack directory, and are called map.bdf and map.pal, respectively.

Planned Features


Of course, this port wasn’t written in a vacuum, and builds on the efforts of a number of individuals: