The Zaurus port uses Qtopia (an application platform used in some PDAs, based on Qt), so it's probably not a particularly good candidate for porting either. There are a couple of SDL frontends for NetHack though - there's a Debian package of the Slash'EM SDL interface (packages.debian.org is down at the moment, so I can't say if it has an ARM binary available or not), and Clive Crous works on a few different SDL interfaces. I've been taking a look at N.e.W.T.,
NetHack
With
Tiles, which aims to create an interface using the graphical tiles that closely follows the console version. It's got some pretty nice features, like smooth zooming in and out (we could map that to the volume control buttons).
Here's a couple of screenshots of N.e.W.T. running on my machine:
I altered it to run in a 320x240 window, and had to adjust the font size accordingly (those fonts are point size 6). In order to use larger font sizes, we'd need to alter the drawing code to wrap overlong lines of text. I've been trying to compile N.e.W.T. for the GP2X, just as a test, but I've yet to get it to link successfully. Perhaps someone with a modicum of cross-compiling experience should have a go.
You can get the source code of N.e.W.T.
here. The NetHack source is a little awkward to cross-compile, as it builds a utility program called 'makedefs' which gets run on the host machine during compilation. As it was an early sticking point for me, I've put the script I used to work around this
here.
How the interface should work is another matter. The PSP port's bindings seems suboptimal to say the least. However, using an SDL interface (as opposed to say, working with ncurses) we basically have free rein over how we design a menu system. The way Phantasy Star Online dealt with an abundance of possible actions and too few buttons wasn't too bad. You could call up menus of extra actions with R, each of which had three actions accessible with the normal buttons. Pressing the uppermost button takes you to a different block of three actions. It remembers the block you were last using after you release R, so it's easy to repeat an action multiple times. Here's a screenshot of the menu system (sort of):
Having two of those mapped to L and R might be better than just using normal scroll up/down menus, but we'd still need an onscreen keyboard for certain things (entering numbers, wishing, genocide, etc.). It's just an idea that came to me, and maybe isn't the best.