nds4droid FAQ

This contains the most frequently asked questions regarding nds4droid. Please read this before rating the application one star and getting in a tizzy!

Where do I download ROMs?

I have no idea, please don’t ask this.

When I launch it, all I see is a list of files.

Yes, you must pick a ROM to load. The list of files is (by default) the root of your SD card. Navigate to where you put your ROMs (try the Downloads folder if you downloaded them on your phone) and select one!

nds4droid is way too slow!

Well here’s the thing: you’re emulating two discrete CPUs in software on a device whose primary purpose is to make phone calls. The recommended hardware for full speed DS emulation on the desktop is a 3 GHz Core 2 Duo processor.

When it comes to game speed, the biggest factor is the CPU load of the main ARM9 processor of the DS. If you have FPS drawing enabled, it is the first percentage that appears in parenthesis. Games that don’t consume much CPU will run much faster.

As time goes on nds4droid will become more fine tuned, so expect things to only get better (but not magically, astronomically better).


The Pokemon games contain many sneaky things in them designed to make the ROMs not run on emulators. As far as Pokemon goes, things will be a work in progress for the foreseeable future. In the meantime, try branching out. The Nintendo DS has many many games and only a few feature the word “Pokemon” anywhere in them!

How do I get ROMs on my device?

The best way is simply to use the USB mass storage option on your phone. Plug it into your computer and a folder should pop up. Copy your ROMs here. Take note of the path in the title bar, this is where you’ll need to navigate to in the file browser that pops up immediately upon opening nds4droid.

What file formats does nds4droid support?

The only ROM format supported is .nds. However, nds4droid has built in support for extracting .zip, .7z, and .rar files. nds4droid will search these compressed archives looking for a .nds file and will open the first one that it finds.

Can I move progress between my computer and my phone?

The save states are located at /mnt/sdcard/nds4droid/States on your device (that is, in the nds4droid folder on your SD card). From here, you can move them back and forth from your computer; they are binary compatible with DeSmuME so you should have no problem continuing from where you left off.

What settings do you recommend for the best performance?

Sound off, vsync off, software rendering, threaded interpreter, no screen filter, and frame skip as high as you can tolerate (3+).

Why don’t you make a fast forward option?

Fast forward features work by running the emulator faster than the normal device (running it at 120 FPS when it normally runs at 60 FPS for example). Until you can run the game at full speed normally a fast forward feature won’t work.


Why are you so sure so-called “dynarecs” are faster? Dynamic recompaliation is not some sort of magical pixie dust. The current interpreter nds4droid uses is very efficient — in fact in many ways more efficient than a dynamic recompiler, since on ARM targets we have to flush the instruction when performing the recompilation, a very costly operation.

I’d like nds4droid translated to <insert language here>

All of the translations are done by regular nds4droid users. If you can translate to a language that isn’t already done, or have some changes for an existing translation, feel free to submit them to me. Here is the file that should be translated: http://sourceforge.net/p/nds4droid/code/ci/master/tree/res/values/strings.xml

I have a question not answered here.

Well aren’t you just a precious little snowflake… post a topic on the forums.

nds4droid release 7

nds4droid release 7 is out. The obligatory sourceforge link or wait for Google Play to do it’s thing. Changes:

  • Much lower RAM usage via mapping the ROM directly from the SD Card instead of first loading into RAM. This should fix problems where loading particularly large games on lower end phones causes the program to crash/exit to home screen. Note however that for compressed ROMs we must decompress every time and this may take time. In general, avoid compressed ROMs 🙂
  • Added a partial German translation.

Hopefully this will help everyone who’s been having trouble loading certain games on their devices. As far as what’s in the pipeline, I did some research for speeding things up and it looks like I can get a nice increase via drawing directly to Android’s Surface object in native mode rather than drawing to a Bitmap and then drawing it to the screen in Java. This will take some work though dealing with all of the different pixel formats that the native surface might be in, so it may be a few days before this appears though.

Anyone have any recommendations for some games I should actually play? It occurred to me I should actually enjoy this thing and play some games :D. Any good lesser known adventure games I should try out?

nds4droid release 6

Another day, another nds4droid release. You know the drill! Sourceforge or Google Play. The changes this time:

  • Better multi-threading model for screen compositing. Games should feel smoother and devices with multiple cores should now be able to use screen filters with little performance cost.
  • The “touch” mode button should now behave better.
  • Fixed a bug where presses on the DS touch screen only registered their initial press.
  • Disabled some rarely used graphical effects in the software renderer for better performance.

PayPal - The safer, easier way to pay online!

nds4droid release 5

Here it is, yet another nds4droid release. This one has a bunch of changes. As usual you can always get it from Google Play or on sourceforge. What you can expect:

  • Support for sound. User will be prompted on first run to enable/disable as it can have a performance impact.
  • New software based rendering that gets 3-8 better FPS on average. You can enable the old renderer in the Settings menu. This also has better game compatibility.
  • Better emulator/screen synching that should result in a smoother gameplay experience.
  • Support for older devices with the ARMv6 chip (such as the LG Optimus)

PayPal - The safer, easier way to pay online!

nds4droid release 4

nds4droid release 4 is out! Grab it directly from sourceforge or wait a few hours until Google Play pushes out the update. The changelog:

  • Much improved multitouch detection
  • Added several filters to smooth out the screen. Access them via the Settings menu option
  • Fixed a bug where leaving the app from the ROM picking window and then coming back (much later) would cause a crash

I hate to be *that guy* but if you’re enjoying the updates consider supporting nds4droid:

PayPal - The safer, easier way to pay online!

nds4droid release 2

I have pushed release 2 of nds4droid to Google Play. You can get it directly from sourceforge here. Changes in this release:

  • Added settings menu option to configure various options
  • Fixed bug where returning to app after exiting via the back button would cause the screen to not refresh
  • Added a partial Korean translation
  • Disabled FPS drawing by default. Option added to the Settings screen
  • Added popup window explaining how to switch to touch mode

Introducing nds4droid

I’m proud to announce the first release of nds4droid, a free, open source Nintendo DS emulator for Android smartphones. I was disappointed with the state of Nintendo DS emulation on Android, especially the fact that all the emulators on Google Play were paid apps that shamelessly ripped off open source projects. I decided to fix that and here’s the result :D. Some highlights from release 1:

  • Support for save states
  • OpenGL rendering for 3D graphics
  • Enhanced to use special ARM NEON instructions, where available

You can get nds4droid from Google Play or download the APK directly.The source code is available on sourceforge. I intended to update this often to add new features and speed improvements!

snes4nacl — SNES emulation in the browser

I was at Google I/O in San Francisco last week and went to a great talk about Google Native Client, which is a new technology that allows direct execution of x86 code in the browser via some clever sandboxing. While in the talk about Gaming in the Cloud I got the idea of porting a SNES emulator to Native Client and started working on it right then and there. Well, here’s the result 🙂

Continue reading “snes4nacl — SNES emulation in the browser”

The Student Loan Debt Debacle

The total amount of credit card debt owed by all Americans is around $800 billion dollars according to the Federal Reserve’s G.19 Consumer Credit data release. The New York Federal Reserve’s quarterly report on household debt and credit shows outstanding student loan debt at $867 billion dollars. To the learned mind, these numbers should frighten to near hysteria. Continue reading “The Student Loan Debt Debacle”