Nethack?


remowilliams

Member
Joined
Dec 17, 2005
Messages
273
The GP2X has proven itself (with the help of many talented coders :)) a super little machine for me.

But my ONE all time killer app is Nethack. Any chance of it getting ported? - I see someone did a PSP port lately.

Somebody please take up the task, my donation is waiting! ;)
 
It'd certainly be quite possible, as it's been ported to PDA's before - but the interface would be quite an issue. I guess if you can represent all of the actions that one can do in Nethack as icons (ie, wear armor, wield weapon, eat, quaff, etc) it'd be doable, but my god would it be unwieldy. There's just so many commands, and if you used a virtual keyboard it would be just as painful.

Do you know how on earth the PSP port works?

Allan.

EDIT: Never mind, here's the layout (on psp)

This game is playable with three levels of button input (31 keys) and .nethackrc is read from the memory stick. They also are looking for graphic artists to have nicer graphics for this great game. In the readme it talks about the game:

“The game is playable up to a certain extend. You cannot select
items if asked to and we have mapped some important keys to
buttons. The game can be saved and restored but the game exit
is not clean yet, so you have to press HOME and select exit.”

== Button Configuration ==
-- default buttons
UP - north
DOWN - south
LEFT - west
RIGHT - east
UP+LEFT - northwest
UP+RIGHT - northeast
DOWN+LEFT - southwest
DOWN+RIGHT - southeast
CROSS - n (no)
CIRCLE - y (yes)
TRIANGLE - space (more)
SQUARE - o (open)
SELECT - s (search)
START - S (save and exit)
TOP RIGHT - i (inventory)

-- when TOP LEFT is pressed
UP - K (north until next wall)
DOWN - J (south until next wall)
LEFT - H (west until next wall)
RIGHT - L (east until next wall)
UP+LEFT - Y (northwest until next wall)
UP+RIGHT - U (northeast until next wall)
DOWN+LEFT - B (southwest until next wall)
DOWN+RIGHT - N (southeast until next wall)
CROSS - e (eat)
CIRCLE - O (show options)
TRIANGLE - , (pick up)
SQUARE - ^D (kick)
SELECT - X (enter explore mode)
START - ^X (show attributes)

-- when TOP LEFT and TOP RIGHT are pressed
UP - < (go stairs up)
DOWN - > (go stairs down)
LEFT -
RIGHT -
UP+LEFT -
UP+RIGHT -
DOWN+LEFT -
DOWN+RIGHT -
CROSS -
CIRCLE -
TRIANGLE -
SQUARE - ^D (kick)
SELECT - ^I (tab key, switch to text mode)
START - ? (display help)

Hmm. This seems very awkward, and appears to be missing some very important keyboard shortcuts (for instance, I noticed a lack of the (w)ield command, or (T)ake off Armor). Seriously, if you could perhaps have a button which switches between using your character and a little button menu system (say every time you push (L) it brings up the menu, and push it again to exit it if not needed) and then a seperate one which brings up a virtual keyboard (For entering in things like wishes) you could have a significantly more playable game.

Allan.
 
Bit of work, but:

I'd suggest context-sensitive L and R buttons. For a potion, pick-up, for a wall, dig or search. For a door, open and kick, and so on. Then have four menus, A B X Y, for Spells, Items, Weapons, Armour that simplifies the wielding/take off/put on process. Other less used actions (like engrave) could be accessed with Select, while Start is used for system stuff like saving and loading. The Items menu, as well as showing your inventory, would allow you to do actions on the items (probably with L and R) for example quaffing or throwing potions, reading spellbooks, and eating.
 
I hear that Thomas Biskup(or something,) creator of ADOM, was releasing source code for... ADOM. His website for last 20 months or so was not updated, even though he stops by and says work is in progress.

I found that game fun. Someone should teh port it, or die trying.
 
I hear that Thomas Biskup(or something,) creator of ADOM, was releasing source code for... ADOM. His website for last 20 months or so was not updated, even though he stops by and says work is in progress.

I found that game fun. Someone should teh port it, or die trying.
ADOM is pretty neat. But Nethack still wins in my book ;)

Though Omega was fun as well, and I believe those sources are available as well.
 
Last edited by a moderator:
I agree with the sentiment for a port, I loved Rogue on the GP32. I might consider an occasional bump on this thread.
 
I've found a few promising candidates for porting (notably the nethack-qt arm port and the zaurus port) but unfortunately they all seem to have server issues or just plain not be accessible. This is a pain - any suggestions (as far as versions for ports go, I need one that has already been written with ARM in mind)? With my coding experience I suspect I will only be able to get it as far as booting, but maybe if I get it that far some kind dev will be able to baby-step me through the process of making a gui like the Rogue port for gp32.

Allan.
 
Hmm, I forgot about nethack-qt and the Zaurus port.

I remember the Zaurus one looking pretty nice on that expensive little machine ;)
 
It's so damned frustrating, I can't seem to find the sources for these guys ANYWHERE. Well, that's actually a lie - but we'd have to build Qt for the 2x before we could port the Qt port.. but the zaurus port's code is no-where to be found.

Say Remo, you wouldn't have any coding experience, would you?

Allan.
 
I do, but not enough to tackle something like this unfortunately. The Nethack source scares me! :lol:
 
Hmm, how did I miss that thread? :blink:

Anyhow I have tried Falcon's Eye and just didn't care for it. Though any progress towards Nethack running on the GP2X would be good ;)

I've tried so many Rogue branches and variants, but in the end it comes back to Nethack. With tiles :)
 
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:

newt-1.png
newt-2.png


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):

pso-menu.png


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.
 
First of all, I want you to know that I want to have your babies. Are you sure you're not up to the challenge? You seem to have gotten pretty far so far (ie, you managed to find a source code that would more easily wrap around the gp2x, I had no luck). I'd be willing to donate to this cause.

About the menus, have you seen Rogue for GP32?

rogue.gif


It's fairly ugly, but I'd be happy to contribute pretty menu art. I've never played it, but the theory seems fairly simple. We could have something like this, with one shoulder button toggling another menu, and another toggling a virtual keyboad like you suggested.

Someone please help our plight! We have money! JOIN US...

Allan.
 
First of all, I want you to know that I want to have your babies. Are you sure you're not up to the challenge? You seem to have gotten pretty far so far (ie, you managed to find a source code that would more easily wrap around the gp2x, I had no luck). I'd be willing to donate to this cause.

About the menus, have you seen Rogue for GP32?

rogue.gif


It's fairly ugly, but I'd be happy to contribute pretty menu art. I've never played it, but the theory seems fairly simple. We could have something like this, with one shoulder button toggling another menu, and another toggling a virtual keyboad like you suggested.

Someone please help our plight! We have money! JOIN US...

Allan.
Ugly?! How dare ye! Rogue was one of the best things on the GP32.
 
Last edited by a moderator:
I was talking about the interface art, nothing more. I personally prefer the ANSI characters over any tiles... until they come up with a fully animated front end, it's ansi all the way. :)

Allan.
 
Back
Top