Jump to content

Nintendo DS homebrew

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Monsterfrog (talk | contribs) at 18:03, 13 September 2007 (→‎Notable homebrew: moved dictionaries). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Nintendo DS homebrew is software written for the Nintendo DS handheld games console by hobbyist programmers, as opposed to a software/game production company. Software is typically written using unofficial development kits such as devkitPro, and is used on the DS via third-party rewritable game cartridges. However, homebrewing enjoys a dubious status since the rewritable cartridges required to run homebrew software could also be used for software piracy.

Storage devices

Since the Nintendo DS is not sold with a storage medium, a 3rd party storage solution is required to store homebrew.

SLOT-1 and SLOT-2 devices

The earliest solutions, and many still today, employed a storage device in SLOT-2 (the GBA cartridge slot) and a booting tool in SLOT-1 (the DS cartridge slot). These are commonly referred to as "SLOT-2" or "1st generation" devices, as opposed to more recently developed "SLOT-1" or "2nd generation" devices, which put the storage directly in SLOT-1.

This results in several differences between the two technologies:

  • SLOT-1 devices do not require the user to select and purchase a separate booting tool in addition to a storage device.
  • Most SLOT-2 devices can also be used to run GBA homebrew, since they fit into the GBA slot, but no SLOT-1 device currently supports this because there is no known way to make the DS run GBA code from SLOT-1.
  • Homebrew compatibility has typically been better on SLOT-2 cards because they have been around longer, and thus many early programs were written for them specifically. This is changing with increasing adoption of SLOT-1 devices by developers and with the introduction of Dynamically Linked Device Interface (DLDI) drivers, which can make a program storage-agnostic,[1] but not all developers have adopted this technology yet, and many programs older than January 2007 have been abandoned and may never be updated.

SLOT-2 devices include GBA flash cartridges, GBA Movie Player (M2 and M3), Max Media Dock, and SuperCard.

SLOT-1 devices include R4DS, M3 DS Simply, Supercard DS One, CycloDS Evolution, AceKard, DS Linker, DS-X, X9, EZ-Flash V, and Games n' Music

Within a given category, different brands of storage device differ in their support for homebrew programs, capability to play commercial DS and GBA ROMs, special features, physical size, availability in different regions and languages, and cost.

Regardless of which slot they go into, all storage devices contain either built-in flash memory or a slot for a memory card, on which the homebrew is stored. Consumers should note that devices with built-in flash memory usually follow the convention set by Nintendo's official cartridges of measuring capacity in megabits (Mb) and gigabits (Gb) while memory cards usually follow the PC hard drive convention of measuring their capacity in megabytes (MB) and gigabytes (GB). Eight megabits is the same as one megabyte, thus an eight gigabit device has the same storage space as a device that has a one gigabyte memory card in it.

Wireless Multiboot

Strictly speaking, a storage device is not an absolute necessity for users who have installed a modified firmware, such as FlashMe, on their DS. For such systems, homebrew can be sent to the DS over Wi-Fi by using Wireless Multiboot. This can be somewhat inconvenient since the homebrew will be lost when the DS is powered off and the system needs to be within range of a suitable Wi-Fi card with the appropriate chipset and hacked firmware to upload a program. Finding a suitable Wi-Fi card can be difficult, since later board revisions of the same make and model of Wi-Fi card may become unsuitable. Furthermore, homebrew loaded with WMB is limited to the size of the DS's RAM, as opposed to being able to load data from storage after startup.

Booting tools

Running DS homebrew using a SLOT-2 storage device requires a booting tool. A booting tool is a device that sends the DS' program counter to an address in the GBA slot, allowing programs to be run from storage there. A booting tool is not required for SLOT-1 devices, nor is a booting tool required to use GBA homebrew on the DS.

FlashMe

One of the most prevalent booting tools is the program FlashMe. This is a modified firmware for the DS. Once it is installed over the existing firmware on the DS, homebrew can be booted directly from SLOT-2. In addition to being a booting tool, it also protects the DS from trojan horse viruses and enables the user to use Wireless Multiboot to download homebrew. Many users of SLOT-1 devices still install FlashMe because of these extra features.

Since the FlashMe installation program is itself a homebrew program, another homebrew booting tool is required for its installation. The other homebrew booting tool is only needed once, at install time, and therefore can either be borrowed for this occasion or sold after use. Upgrades to FlashMe can be booted from the existing FlashMe installation. In some places, shops will help customers install FlashMe for a nominal fee.

NoPass

The other method commonly seen is a device called a NoPass. This is a physical card, sold under brand names such as SuperKey and MAX Media Launcher, that resembles a DS Game Card. The program inside contains instructions that immediately send the program counter to the GBA slot. Some newer slot 1 cards such as the R4DS or M3 DS Simply have this built into their firmware so they can act as a slot 2 booting device.

Older methods

Before the encryption on SLOT-1 was reverse-engineered, which allowed the creation of SLOT-1 storage and NoPass devices, booting tools had to exploit flaws in early versions of the Nintendo DS' firmware or in specific games. Booting tools under this category include PassMe, PassMe2, and WiFiMe. Because they require a DS with older firmware, must be programmed to work with a specific game, or leave chunky dongles hanging off the back of the DS, these booting tools have seen decreasing popularity recently.

Notable homebrew

Homebrew applications for GBA or DS add many features to the DS. There are many internet related tools like web browsers, instant messengers and email clients. Multimedia programs allow users to enjoy movies, music, ebooks, comics and pictures on the DS. Emulators let people play games designed for an older system.

Applications

Multipurpose Tools

Media players

  • MoonShell plays movies and several music formats, views images and text files, and launches other homebrew. [1]
  • DSOrganize plays several music formats and allows you to view images, text and stream audio.
Video Players
  • Moonshell can play DPGs.
  • DSM Play can play DSMs (a higher quality format than DPG)
  • MPEG-4 videos can be played on ds using this demo, sound is currently unsupported.
Music Players
Image Viewers
  • ComicBookDS, a comic books (or image based documents) viewer.
  • Infantile Paralysiser's Image Viewer works by converting the pictures into a special format using the PC end of the application and viewing them in an iPhoto-like environment on DS.
Text Readers
  • TextViewer supports a variety of file formats, a touch screen interface, low power mode, and persistent text bookmarking.
  • Flip is an as-yet unreleased ebook reader and manager.
  • DSReader is another highly aesthetic text reader.

Internet

Web Browsers
  • DSLinux includes a web browser.
  • OKIWI is a web browser for the DS in alpha stages.
  • DSOrganize includes a browser with support for forms and limited support for pictures.
  • DSHobro 0.3 is somewhat like Opera Mini, consisting of a PC based proxy server that processes the page and a DS client program that views the page through the proxy.
Instant messaging
  • HelloDS is known for its lack of compatibilty. Development has ceased.
  • DSiP requires a VoIP account.
  • Infantile Paralysiser's Wifivoicechatclient allows you to draw as well as chat.
  • SvSIP is a VoIP application based on pjsip.
Other Internet Based applications

Drawing Applications

  • Phidias is a Photoshop like application for ds.
  • Colors! is a pressure sensitive drawing application focusing on simplicity and ease-of-use.
  • DS Notes is a note application, which is similiar an offline pictochat.
  • Smoove is a pixel editor for ds.
  • FlickBook is an animation creator.
  • Animanatee is another animation creator featuring 32 levels of undo and onion skinning.

Dictionaries

  • NewDictS is a dictionary interpreter of the StarDict .dic dictionaries, with Voice capabilities. Initially released by phillips, which released his NewDict 7 source code, now being improved and currently edited by Sesa. A translation page can be found here.

Other Applications

Emulators

* signifies GBA homebrew, which can be used with most slot 2 DS homebrew tools.

Games

Programming on the DS

Programming

Homebrew DS applications are generally programmed using C/C++. A popular toolchain is devkitARM. A few libraries that make programming easier include libnds and PAlib. libfat helps developers write to a FAT file system on the homebrew storage device while DSWiFi allows developers use WiFi on the DS. Several tutorials have been written about the various aspects of the system.

One of the biggest issues of programming homebrew on the DS is accessing a card's file system. This is due to each homebrew device using a different interface to access an inserted media card. This has been solved by the introduction of DLDI (Dynamically Linked Disc Interface) drivers, which superseded the use of drivers statically linked into the homebrew application during compilation. The current FAT library, libfat, is provided with the ability to use these drivers. Its predecessor, GBA NDS FAT, can be modified to use these drivers too.

Popular development packages:

Tools and libraries:

  • GBA NDS FAT Library for using the Filesystem (outdated)
  • libfat Library for using the Filesystem (successor of GBA NDS FAT)

References

Community