From GameBrew

Last Updated2014/08/09
Version1.3a & 2014
1.2 & 1.3a & 2014 Download

An open-source Nintendo Entertainment System/NES emulator for the Nintendo DS. It can be compiled with GCC (devkitPRO/devkitARM, the version supported) or ADS (the original version, no update).


  • FDS supported, with FDS sound.
  • .ini supported.
  • Multi-players supported
  • DPCM added. The sound is nearly perfect.
  • Short-cuts added.
  • Almost no graphic mess on a lot of games.
  • Cheat added.
  • .gz .zip supported.
  • Double Screen Show.
  • VCR6 added.
  • NSF supported.


Download nesDS.nds.

Patch nesDS.nds with DLDI if your card needs it.

Copy nesDS.nds to the apps folder of your card.

Create a folder called nes in the root of your card.

Put your legally held .NES files in that folder.

User guide

Run nesDS from the Apps menu of your card, then select which nes rom you would like to run.


Q. What can I do if some pics had been crashed?

You can try the sprite per-line type under the Display menu bar.


X/A - Autofire for Y/B

L/R - Can be mapped


nesds2.png nesds3.png

Known issues

Run the nesDS EX Edition on iDeaS may cause a crush, because iDeaS does not support swi.

Notes: All other functionality should be identical to the original. nesDS inputs now work properly on emulators. You can run the nesDS on ideas by DLDI patching it with the R4 dldi patch usingdlditool. You must then enable DLDI support for R4 under File->Properties. You can also run nesDS on desmume but you will need to create a filesystem image from some files and embed the files to the emulator (you need to use fcsr for this).



  • Mapper5 update.
  • FDS and vcr6 sound are enabled in NSF mode.
  • Sprite0y is updated in sp-pertile mode.

1.3a 2012/09/21

  • Alpha blend fixed.
  • Touch the current menu item to hide menu.
  • Cheat list bug fixed. fix the flicking of cheat list.
  • All saving flushed.
  • Sound update, the volume = sin(original * pi / 2) ^ 0.7, like a linear to log conversion.
  • Load and save slot number merged to one.
  • NSF play supported, use <left/right> to select song, use <up/down> to play/stop, use 'debug' menu to see the details.


  • VCR6 sound channel for mapper24 and mapper26 is added.
  • A sound reset button is added to menu>settings>config, which is used when the sound goes bad.
  • When close and open the DS, this is probly needed.
  • Mapper253 is added.
  • FDS saving is disabled when the game is not a fds.
  • CRITICAL NOTE: the sound rendering has almost reached the ability of arm7, so the arm7 will auto detect the IF, by which to fix the mess of sound.


  • Every apu channel mirrored to a nds sound channel.


  • Sound update, fds sound works fine.
  • AutoFire config can be saved.
  • Game is more stable & sound goes bad.
  • Binary files converted to .c/.h, can be compiled by devkitARM r39.


  • Sound update, fds sound works fine.
  • AutoFire config can be saved.
  • Game is more stable & sound goes bad?
  • Binary files converted to .c/.h, can be compiled by devkitARM r39


  • Fds sound added, just works.
  • Mapper198 added, SRAM saving not supported.
  • Sound update.
  • Gesture update.


  • Rom patch database added, which can select a PAL/NTSC timing or fix the header of rom.
  • Nifi fixed.
  • 'About' flicking fixed.
  • Better flicker when PALTIMING is enabled.
  • dswifix(which is for nifi) src is added.


  • Mapper240 added.
  • Fixed the tmpfile.
  • DPCM weakened, sounds better?
  • A bug with ppustat fixed. e.g.'teenage mutant ninja turtles'
  • A bug with palette fixed.
  • Patch update. Battleloads (Europe) <Double Dragons> added.
  • SRAM can be saved whatever a game supports.


  • Code of .gz replaced with a new one, still works.
  • .zip supported. NOTE: Only one file is allowed in the .zip archive.
  • Code of ips been re-written.
  • 'Double Screen Show' is supported to show all the pixels at the same time. *Check 'About' for more info.
  • Sprites with SP-perframe updated.
  • Some bugs related to 'Scaling' are fixed.
  • Some other changes.
  • Thanks to avenir.


  • Short-Cuts updated. Fast forward & rewind can be changed.
  • Screen scaling can be saved to nesDS.ini
  • gzip file supported. only .gz could work. Thanks to dszip. The decompression of large files would take a while.
  • Compiled with latest libnds(as required).


  • Sound update.
  • Sprites update.
  • A bug of Memory fixed.
  • Palette sync added, click Menu > Game > Display > OnOrOff to change. More info, see the 'About'.
  • Pal sync needed:Fantastic Adventures of Dizzy, Micro Machines, Wizards & Warriors, Feng Shen Bang.


  • A bug with nesDS.ini fixed, works with latest devkitARM-r34
  • Saving for FDS added. Menu > Game > Extra > Save FDS.
  • Shows time on the top menu.
  • Mapper 216 189 added. e.g. Magic Jewelry 2, Master Fight 2, Street Fighter 4...
  • Some others..


  • Big nose freak out update.
  • Mapper225 226 227 229 230 231 255 added.
  • Sound enhanced.
  • Raw PCM update, nearly perfect.
  • Sprite0y update.
  • Nifi update.
  • NOTE: unstable with devkitARM r33, using r32 instead.


  • Mapper1 updated.
  • Auto-fire adjusting added.
  • Swap-Screens disabled if LIGHTGUN active.
  • Sprite0y for SP-pertile fixed.
  • Careful to use Swap-Screens, which may shutdown DS.


  • IPS supported. First, load a .ips file, then load the rom to start a patched game. The rom file won't be changed. The ips file should be smaller than 512kB.
  • Barcode supported. Click Menu>Game>Extra>Barcode
  • Gesture supported. Click Menu>Config>Short-Cuts to configure. When the menu is hidden or the LIGHTGUN is enabled, you can touch the sub-screen to draw a gesture.
  • Mapper245 added.
  • Mapper16 updated.
  • Raw PCM updated.
  • 'SP-Pertile' updated. E.g. The issue with Super Mario 3 is fixed.
  • Some others.


  • The 'menu' is re-designed.
  • Raw PCM supported, not perfect, can be switched off in menu>Settings>Config.
  • Settings of nesDS can be written to 'nesDS.ini' at runtime, done in menu>Settings.
  • Short-Cuts can be configured in menu>Settings.
  • 'LightGun' is placed in menu>Game>Extra, 'Micphone' and 'FDS disk' are also added there. 'Micphone' is not tested.
  • Nothing more.


  • Roll back some updates in 0.50b.
  • Mapper90 added. It works fine. You need to reload the nes rom to get a 'Soft-Reset'.
  • Light-Gun added. Under the 'Input' bar, click 'No LightGun' to active *Light-Gun. When shooting, hold L-button and touch the sub-screen. 'Swap screens' is recommended. R-button can be used to rewind game play.
  • Sprite0y calculation for SP-pertile corrected, better.
  • V-flip for SP-pertile corrected, better.
  • A patch file added, used to correct the header of rom or modify the settings of nesDS.
  • Below shows the games patched (PRGCRC - Name):
    • 0x33AA - Akumajou Densetsu
    • 0x0A62 - Joe & Mac
    • 0x49B3 - TMNT 1
    • 0xE91E - Duck Hunt(JUE)
    • 0x15CF - Wild Gunman
    • 0x15CF - Gum Shoe
    • 0x9F65 - Hogan's Alley (JU)
    • 0xB2B5 - Three Eyed ONE/Mitsume Ga Tooru
    • 0x8A35 - Feng Shen Bang(Chinese)
    • 0xD796 - Alien Syndrome (J)


  • nesDS.ini commented.
  • nesDS.ini: ScreenSwap added. If your DS' top-screen did not work well, set this value to 1.
  • Mapper 19, 71, 118 updated.
  • NES cycles-per-scanline modified to 121, to make the graphic more smooth. *E.g. tmnt, Akumajou Densetsu.... Also makes Joe&Mac work fine.
  • A sound bug fixed, which may cause a panic....
  • Sub-screen will be closed if there is a NES_RESET.
  • Cheat list can be loaded/saved from/to a file. EXTENTION:.cht
  • FrameSkip for Pure-Soft rendering can be adjusted. If you have a DSi, frameskip 1 would be OK; For DS/DSL, frameskip 2 is recommended.
    • Frameskip 1 means that the graphic is updated at 30fps. 2 for 20fps. On the older nesDS, frameskip 2 equals to 30fps.
    • Sprite0y changed, which makes the graphic better. e.g. Super Mario.
  • CRAM added.


  • All memory needed is pre-allocated, and all malloc() are deleted.. This is done for those who cannot run nesDS well.
  • The average length of roms' names MUST be lower than 64bytes, for saving memory.
  • MAX_ROM_SIZE is set to 3M.
  • Delay for multi-player is slightly lower.
  • Mapper4 is updated. e.g. tmnt3 works well now.
  • Path for nesDS.ini is updated. Available paths now are:"/","/_dstwoplug/","/ismartplug/","/moonshl2/extlink/","/_iMenu/_ini/","/_plugin_/"


  • Nifi/Multi-players supported.
  • Cheat re-added.
  • About/Help tip added.
  • NTSC/PAL timing supported.
  • Roms menu cached, which will speed up the rom menu when start another game.
  • Some bugs fixed.


  • Mapper68 updated. e.g. After Burner(U)
  • Some bugs fixed.
  • nesDS.ini updated.


  • Software-render re-added, to deal with the mappers 9, 10, 19, etc.


  • Sound update.
  • L+UP to show NES on top screen when playing.
  • L+DOWN for bottom screen.


  • Sound enhanced. MAX VOL x2.
  • Fds supported. Do NOT use realtime saving and loading.("save state" and "load state"). Safe to use KEY_R and KEY_L.
    • R+UP = disk A
    • R+LEFT = disk B
    • R+DOWN = disk C
    • R+RIGHT = disk D


  • Mapper163 added..
  • Sound updated.
  • MAX FILES enlarged.


  • The memory region of "NES" is relocated from 0x23f0000 to 0x23ec000. advised by avenir. Now the nesDS on my DS could return to the homebrew menu.
  • A software for sprite-scaling is added. Select 'Per-scanline' to active it.
  • Mid-frame BG pal refresh is supported. Some games like 'Wizards Warriors' work fine.
  • Some others not important.


  • Sound fixed.


  • avenir write a patch to nesDS, what's new? He said:
    • Extended the reset to "If not loaded from hbmenu/xenofile, returns DSi/3DS menu on DSi/3DS".
    • stringsort() is now a wrapper for qsort().
    • extlink now accepts multibyte filename thanks to Unicode support.
    • Directory listing is shown the same way as WinNT(8.3 lower case). <- If you name a file all lower case in 8.3...
    • /nesDS.ini is used for configuration(minIni).
  • Updates:
    • Add the shout-cuts for configuration.
    • Sound fixed.. better than 0.44b. Almost no noise(not the noise channel).
    • Sprite0y of 'per-scanline' fixed.
    • H-blank interrupt handler added, which was removed since 0.44b.
    • Some other chanegs.. No update for mappers.


  • Since the nesDS file is larger, this version is NOT recommended for those who just want to play nes games.
  • Port the whole project to devkitPro, using libnds, libfat....
  • Almost no update, but some figures may be worse. e.g. sound with the games that read reg4015. Some games' sounds work better... - -!
  • You guys can try 'Start+Select+R+L' to exit your nesDS and return to the main menu of flash-card. On mine, it just shotdown my DS(R4SDHC with kernel1.34, no help with moonshell2 either).
  • Since this version, the mem region cannot be accessed freely, be careful if anyone wants to write a patch.
  • The libnds and libfat are too big... 128k around. Shit that!


  • A bug of cartflags was fixed, which will definitely make the game unable to save..
  • something about 'fetch_c' was changed, which may cause some problem. the bug logged in 0.43 was related to this.
  • Set the nes ram reset value to 0x0, not 0xFFFFFFFF, which will cause the 'Super Mario' starting from world 0-1.
  • Supprised that karateka(j) works now.


  • Warning: A bug of SRAM was fixed. It may cause the games that use SRAM crashed.


  • DPCM/DMC suppoted. Should say that this is just for testing. DPCM causes a lot of sound crashes, busy fixing them. well, Mario 3 works fine, also 'Chan'.
  • No other updates.
  • Need to slow down this project.


  • No sound updates.
  • Short-cuts added.
  • extlink supported.
  • Some unused files of sound are removed. It is much clear now...
  • No more..


  • Mapper 9, 10, 118, 228 updated/fixed. Punch-Out, Action 52 IN 1, and some others games play well now.
  • The 'Flicker' function was slightly fixed. Our eyes will not be that hurt now.
  • A new bg render method was added, but not actived in this version, there are still alot work to do.


  • 'Roll back' fixed. Did not release this version because there is no need to.


  • Named as 'nesDS 0.40', not 'nesDS EX 0.40', because the two versions had been merged into one.
  • Some bugs fixed.


  • Mapper 23, 25 supported.
  • Rendering method changed.
  • Scaling supported.


  • All the rendering sections has been re-written. Uses the NDS hardware to emu the NES graphic.
  • Much better speed and sound.


  • Uses software to cal the CRC, same as Virtuanes.
  • Mapper074 updataed, supporting some special games.
  • Mapper0, 1, 4 updated.
  • Fixed some bugs.


  • Mappers supported: 0, 1, 2, 3, 4, 10, 16, 19, 74, 246 (EX's mapper files is very different from the original).
  • Function added: cheat.


Original nesDS team:

  • Coding - loopy, FluBBa.
  • More code - Dwedit, tepples, kuwanger, chishm.
  • Sound - Mamiya.

Ported to gcc by minitroopa.

EX Edition made by huiminghao.

0.4x Edition made by huiminghao.

Thanks to avenir.

External links