NetHackDS

From GameBrew
NetHackDS
Nethackdsfan.png
General
Authorfancypantalons (brettk)
TypeRole playing
Version3.6.7-2
LicenseMixed
Last Updated2024/03/21
Links
Download
Website
Source

NetHackDS is a port of NetHack for the Nintendo DS that tries to make the best use of the DS hardware to provide an easy-to-use, ergonomic NetHacking experience. This is not simply a port with a software keyboard. It uses the keypad, touchscreen, and multiple displays to optimize presentation of information and simplify input as best as possible on the DS.

While the original project was based on the Nethack DS port by Stuart, the more recent updates have included support for Status Hilites, and strips the port down to be a much cleaner straight overlay atop of NetHack vanilla 3.6.

Features

  • Support for 16- and 256-colour BMP tilesets, including non-rectangular tiles (tiles must have dimensions which are a multiple of 8, e.g. 8x8, 8x16, etc).
  • Support for text mode, with optional full colour and IBM graphics.
  • Support for multiple font sizes for menus, status, and message displays.
  • Popup command window for easy access to the full command set.
  • On-screen keyboard for text input.
  • Flexible key bindings, supports binding keys to both regular and extended commands, and toggleable options.
  • Support for both left- and right-handed modes.
  • Save and restore.
  • Sleep mode.
  • Optional walk mode, inspired by iRogue.
  • Incorporates the following patches to vanilla NetHack:

Installation

Download and extract file.

DLDI patch .nds file if needed (if your card does not have auto-patching) and copy it along with the files to the root directory of the card.

User guide

A roguelike typically involves a protagonist exploring a virtual world, acquiring equipment, items, and money, with the aim of achieving a specific goal or completing a quest. In NetHack, the objective is to retrieve the Amulet of Yendor from the dungeon depths and then return to sacrifice it to your god.

It sounds simple on the surface, but the path to ascension is a long and arduous one, fought with many perils. Not the least of which is the destructive nature the game often has on grades, job performance, and so forth.

The NetHackDS release includes a manual for reference.

Controls

D-Pad - Move

R+D-Pad - Scroll map

A - Pick up

B - Search

X - Open

Y - Kick

L - Display command window

Start - herecmdmenu (show a menu of possible actions in your current location)

You may also interact with the game map using the Stylus.

Screenshots

nethackdsfan2.pngnethackdsfan3.png

nethackdsfan5.pngnethackdsfan4.png

Changelog

3.6.7-2 2024/03/21

  • Improve menu handling so that, in menus where a single item is being picked, A or X both work, and in menus where multiple selections are allowed, A does nothing until at least one item is selected. These changes make the in-game menus a lot more intuitive to navigate.
  • Enable 'force_invmenu' by default. This doesn't have a huge effect on the port, since it already converted the text prompt into a menu, but it does eliminate some noise in the message window.
  • Improve direction prompting by making it impossible to enter anything but a direction character (previously you could enter any bound key, which meant you'd often get greeted with cmdassist window). The prompt also now properly supports pressing B to cancel the command.
  • Enable 'herecmd_menu' by default (which triggers on tap), and by default bind Start to pop up the menu as well. This greatly streamlines certain command sequences without needing to bind additional keys (e.g. eating corpses on the floor; just press Start and select the appropriate option).
  • Enable 'clicklook' by default (which triggers on a tap-and-hold on a game tile).
  • Fix bug where the inventory window can get clipped.

3.6.7-1 2024/03/18

  • Added support for additional data directory locations (see the README for more details). This makes it possible to run multiple major NHDS versions side-by-side. As part of this change, I also made it possible to place the NHDS directory in the 'data/' subdirectory, following the pattern of some other homebrew.
  • Improved error reporting if the data directory is missing. This should hopefully reduce incidences of black screens or other silent errors if NHDS isn't installed correctly.
  • Added support for recognizing and binding diagonal presses on the d-pad. This isn't perfect. Far from it. But it works. I've tried to find a good tradeoff between accuracy and responsiveness, here, but it could require extra tuning.
  • Disabled 'autodescribe' in the default configuration file. This is a new feature in NetHack 3.6 and unfortunately it doesn't play well with my not-exactly-efficient rendering loop (to be clear, it works, it's just janky). For users with existing configurations, make this change if you're finding the 'whatis' command isn't working well for you.
  • Improved BDF font compatibility so more fonts should work off-the-shelf.
  • Substantially refactored graphics tile handling to use less memory. This makes large tilesets usable (before, the game would mysteriously die due to an OOM condition) while also correcting some caching issues. Note, this isn't too optimized yet, but it seems to play well on hardware so I'm not going deep on improving performance just yet.
  • Fixed the cursor in graphics tile mode, which, it seems, has been broken for quite a while now.
  • We now render the version number on the splash screen so you know which version you're running.

3.6.7 2024/02/28

  • Merge of upstream NetHack 3.6.7 release (plus a couple of extra commits after that).
  • A couple of key notes about this release:
    • NetHack 3.6.7 includes at least one major fix for builds on Linux environments, so older versions won't compile due to a gcc incompatibility when building 32-bit binaries on 64-bit systems (a necessity for this cross-compile to work).
    • I've also included, you know, all the Makefiles you need to actually compile this thing (though the build instructions still need some work, they don't currently mention the need for a 32-bit compiler environment, which is an important omission).

3.6.6 2020/03/14

  • Merge of upstream NetHack 3.6.6 release.

3.6.2 2019/06/15

  • Merge of the NetHack 3.6.2 vanilla codebase into NetHackDS. Otherwise all the same caveats apply to 3.6.1.

3.6.1 Alpha 1 2018/05/13

  • First alpha build of NetHackDS built on vanilla 3.6.1.

3.4.3r2 2016/05/04

  • Represents NetHackDS 1.17 with a few bug fixes that were identified and fixed, plus build fixes to work with the latest toolchange.
  • This code is based on NetHack 3.4.3. The version numbering scheme is switched for this release, dropping the old X.Y versioning, so it's clearer what the release represents.

1.17 2008/01/24

  • Added support for tapping menu section titles for selecting items in that section.
  • Changed menus in keyboard mode to show item accelerator characters.
  • After insisting I'd never do it, action menus (read, zap, eat, etc, etc) now display only relevant menu items (with an option to show all).
  • Made 'cursor' a compound option, which can take three values: 0 (always on), 1 (disabled over hero), and 2 (always off).
  • More refinements to touchscreen handling to ensure that stylus raises are promptly registered (fixes periodic hangs).
  • Fixed directional prompting when keyboard mode is enabled.
  • Fixed detection spells (such as "detect monsters"), etc, so they properly wait for user input.
  • Fixed key bound option toggling, after I completely broke it in the last release.
  • Fixed crasher triggered by popping up a menu immediately after resuming a saved game with the 'name' option set (yes, someone hit this).

1.16 2008/01/04

  • Allow users to bind commands to individual chordkey presses (note, you can't bind combination presses, and commands are activated when the key is released).
  • Added support for binding run and fight movements (movements prefixed with 'g' and 'F', respectively).
  • Added the 'cmdkey' option, which lets the user define the key used to open the command window.
  • Added 'keyhelp' option which controls whether the bindings are shown on the screen (default is now off).
  • Added HELPLINE1 and HELPLINE2 directives. These take key lists, which determine which keys appear in the key help, and in what order.
  • Moved minimap colours into a palette file (minimap.pal).
  • Properly ignore all input when in sleep mode.
  • Various commands which didn't show a prompt now do (eg, wear, take off, eat, etc).
  • Fixed a bug in the default X keymapping. ie, it actually works now (the default was mistakenly set to "o," instead of just "o").
  • Fixed a bug where dismissing the "Toggle Option" key binding submenu without selecting anything would cause a crash.
  • Fixed a bug where responding to the "Press A…" prompt would result in the action bound to A getting executed.
  • Fixed keyboard colours, and changed the palette to plain text.

1.15a 2007/12/31

  • 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).

1.15

  • Added the CHORDKEYS configuration option, which allows the user to define which keys may be used in combination of others for the purpose of key binding.
  • Removed triggermode (yes, after just two versions), in lieu of CHORDKEYS.
  • Display help for key bindings if a chord key is pressed.
  • Changed extended command input to use a menu, rather than the virtual keyboard.
  • Added the ability to bind keys for toggling boolean options (eg, holdmode, hpmon, etc).
  • Added "Show Keys" command, which pops up a window listing the current key bindings.
  • Added hilite_pet support.
  • Added new option "keyrepeat", which controls whether or not keys repeat in the game (default on). Doesn't affect menus, command window, etc.

Credits

  • This code has it's roots in the first NetHackDS port, created by Stuart Pernsteiner.
  • Of course, there's the Nethack DevTeam.
  • The Devkitpro folks, and all those who've contributed to the project. In particular libnds.
  • Chism for his work on libfat.
  • Masscat for his GDB stub.
  • The dswifi developers.
  • Oddly, the Foobillard developers.
  • Stumpy, for his ANSI fontsets.
  • Tobias Jung, for making ProFont available.
  • The authors of the portable PCRE.
  • Many users for providing feedback and feature suggestions.

External links

Advertising: