Nintendo DS notes

From Helpful
Jump to navigation Jump to search
📃 These are primarily notes, intended to be a collection of useful fragments, that will probably never be complete in any sense.


Games

The DS accepts both its own type of game card (top) and GBA games (bottom). (No support for gameboy color or the original gameboy, though)

DS games tend to have some flash ram to store savegames


Multiplayer

You can play with someone that has a game inserted, downloading a game from them to do so. The rules of what and when vary. Various games are simply one-player, while e.g. tetris can be played with ten people from a single game card.

Many games support up to four, or just two players, usually from a single game card, but sometimes requiring each player to have it (This is relatively rare as this would detract from impulse buying for multiplayer).

Note that some games offer a simpler versus mode or just minigames, particularly when the full game multiplayer doesn't really make sense, or when a multiplayer game doesn't make sense with more than two players.


Networking

The DS is a 802.11b device, which is how DSes talk to the world. For nintendo-specific use it will use a slightly different version dubbed Ni-Fi (its own level 3 protocol). It will also talk to regular Wifi hotspots, home routers, and so on.

The DS supports basic WEP encryption, but not WPA. If you prefer WPA for your general WiFi access, you could get the proprietary (Ni-Fi) USB stick (XP only(verify) to support just your DSes (apparently up to five of them).

An access points will give you access to the 'Nintendo Wi-Fi Connection' (for DS and Wii) service over the internet for free multiplayer.



In the below:


Network errors

The error message the DS gives you is usually ambiguous and often reports only symptoms at best. You can look up the code on nintendo.com, which generally gives some more usueful suggestions.


General details (may apply to many problems):

  • It is known that some specific routers don't play well with DSes, and some of those can be tweaked a little to work better. Check this list on nintendo.com, this general nintendo wireless support, and/or try googling the router's name and 'DS' to see whether other people have figured out the details.
    • for example, it should be set to B/G mixed mode (DS only speaks B, while G is preferable for faster wifi devices. (some routers are by default set to do only G)
  • If your access point is using MAC filtering, disable it or add the DS's MAC to be allowed.
  • many hotspots are hacked in a way that force you to pay via a browser first. This is incompatible with the DS.


The code has some parts. For example, the first two digits indicate the general type. For example, 51 seems to indicate general and 52 more specific networking trouble.

The other three digits specify the specific problem. They may encode additional information. For example, 52100, 52101 and 52102 are the same error, where the last digit indicates the connection slot in the configuration (0, 1, and 2 are the three general connection slots, and 3 refers to the Nintendo USB dongle).


Common errors include:

52100/52101/52102/52103, "unable to connect to the Nintendo Wi-Fi Connection"

You are connected to the access point, but can't reach the internet (more specifically: the DS can't contact the nintendo connection test server).


This is often a problem with your internet access, no the DS's configuration.

Check that your wireless works on other devices. If it does, check whether there are known specifics for your your router to work with the DS (e.g. the mixed mode setting; see 'general' above).


Causes include:

  • A firewall on the router/gateway prevents the traffic from getting out
    • ...possibly specifically MAC filtering (If so, add the DS's MAC to the allowed list. TODO: describe where to find this)
  • The DHCP server didn't give out an IP address often because it only hands these out to known devices (if so, add it), or soemtimes because DHCP never sends out all required data (DNS server, gateway, etc.) to any device. Configure DHCP properly, or enter the missing details on the DS manually.
  • Some wifi setting on the wireless router doesn't play well with the DS (look at the related links above and/or google this)
52000/52001/52002, "unable to obtain an IP address"

Could not reach DHCP server (the service that gives you an IP address), or it did not give you an address. Possible causes include:

  • DHCP server (and/or firewall) is configured to allow only specific devices (by MAC), and this DS is not known on this network yet.
  • DHCP server not enabled/running in the first place. Manual configuration will work, but only if you know settings that should work.


51100, 51101, 51102

The WEP key you have set is incorrect. Consider this could be caused by it having been changed on the access point.

Check that the WEP key is the same as the one on your AP. WEP keys are hexadecimal (0-9 and a-f), and are either 10 or 26 characters long (for 64-bit and 128-bit WEP, respectively). String-based WEP keys are not (directly) supported.

51300

Can mean various network-related problems, including

  • incorrect WEP key or other WEP-related problems
  • router setting problem
  • firewall problems


51099, "unable to find a compatible access point"

Usually means one of:

  • an AP search yielded no useful access points (e.g. all WPA-based). If your own access point is visible and used by other devices of yours, you probably have to reconfigure it before it turns up as a usable access point on your DS.
  • the access point that a the connection profile you currently use has changed its configuration. For example, it may have previously been open but is now WEP based. Change the WEP key, and/or clear the slot and search again.


Carts

Battery use

At the least, a flash cart is an adapter for a memory card, which takes power. It may cut the battery life in half.

(Probably not when you're not using the cartridge(verify))

Slowdowns

To respond to special key combinations, a flash cart needs to regularly check this. I believe the most common way is to add a proxy function in the video refresh interrupt. This means a small piece of extra code gets called at least thirty times a second, which in games that were calculatedly using all CPU power already will mean slowdowns.

Disabling the key response - if that option is there - helps.


Saving

With a DS (or GBA) game cartridge, saving means using game code to save to the game cartridge itself (small piece of flash ram? (verify)).


It works a little differently in carts - and how exacly depends on how advanced it is.

Flash carts can add two other methods to that. One is redirecting that save to the memory card. It becomes a file that you can back up, change with others, potentially cheat with, etc. If you don't do this, the save state will disappear once you power off.

Another is Real time save - saving the NDSs state (I'm not sure how much), which means you can save anything's current state. You can arbitrarily save and restore whatever you're running, regardless of whether the game/application had saving capabilities. (people that use emulators are probably familiar with this) This is saved on the memory card, and apparently takes about(/exactly?) 256K.


Patches

Depending on the cart, special-key reactions, save redirection, real time save and such depend on having these patched into the game code.

Hacking/Homebrew

DS games are signed, so your homebrew cards would not work without help (this doesn't apply to homebrew GBA, though).


What you want depends on what you want:

  • Run unsigned code from WMB?
  • Run homebrew (from the GBA cartridge)
  • Run copies of games (note: illegal)

WMB, Wireless MultiBoot, is a DS feature that allows it to accept programs from e.g. kiosks or other wifi, and is something you can imitate - when you have the Nintendo wifi stick or another wifi card that uses one of a few RaLink chipsets. See [1].

You will almost surely require some type of flash cart (memory cards that go into the GBA or DS slots, writeable by you or fixed) to run your own code on the DS - to have code to run and/or to be able to start it, or to save things.


General options:

  • NoPass type
    • All DS versions
    • DS-slot device
    • Runs GBA-slot flash (doesn't require SRAM on it)
  • PassMe2 type
    • See PassMe, but applies to all DS versions


Only for older DS models:

  • PassMe type
    • DS-slot device, and requires original DS game card (uses its cartridge encryption protocol)
    • requires GBA-slot flash with SRAM
    • Power hungry
    • DS versions 3 or earlier only (but upgradable to PassMe2)
  • WifiMe
    • No hardware on the DS side
    • requires specific wifi card on your PC
    • DS versions 3 or earlier only (exploits bug in WMB bug in versions 1 to 3 of the DS to)
    • (e.g. runs unsigned code from the GBA flash cartridge)


More permanent:

  • FlashMe[2] is a hack of the DS firmware
    • can be applied after one of the above options works.
    • Allows you to run unsigned WMB code, flash carts
    • applying isn't entirely without risk (but nearly none if you know what can go wrong, and avoid it), and voids your warranty.
    • can recover your DS if you manage to brick it


FlashMe recovery:

  • Nothing can write to the first 64K of memory without physical intervention,
  • ...which is what you need to do to flash the DS in the first place.
  • The firmware and flashme take more than this 64k, which is why bricking is actually semi-bricking - part is destroyed, part can't be.
  • FlashMe has recovery code in the first 64K that enable you to install the full Flashme again.
  • Assumes you have a working flash cart, which may have been bricked too (separately, and this is usually not fixable)
  • Procedure: Remove anything from the DS slot, put flashme.nds on the flash cart. Boot up while pressing Select+Start+A+B (which seems to be a flashme shortcut for 'boot directly from GBA')


DS version check: see [3] or [4].

Emulators, frameworks and an OS

There are various programs that can emulate a DS - useful for development.

There are also emulators that run on the DS, emulating e.g. a NES or SNES, ScummVM, and there is DSLinux.


Programming details

Hardware:

  • ARM 9 at 67 MHz
  • ARM 7 at 33 MHz
  • 4MB RAM
  • 656K video ram
  • 8 KB instruction cache, 4 KB data cache
  • Speakers, microphone
  • Touchscreen
  • Wifi is relatively custom. Range ~30m?


Libraries exist for various parts of the hardware, including the wifi.

The DS itself stores certain details you may want to retrieve, such as WiFi configuration and touchscreen calibration.


Unsorted