Home New Tutorials Programs
1-R4DS Setup 2-Software Space Invaders
Old Tutorials DSEmu
1-Setup 4-Sound 7-FIFO
2-Framebuffer 5-SRAM 8-Interrupts
3-Keys 6-Filesystems 9-Microphone
10-Extended Rotation Background

Nintendo DS Emulator - DSEmu

17 January 2006: DSEmu 0.4.10 is out with bugfixes and new functionality! Sprites and some 8 but pallette based bitmap modes are working! Many more demos run. Check out the working examples or download them from your favourite homebrew site. Keep an eye on my DS Developer weblog for more information.
21 December 2005: DSEmu 0.4.9 is out. This version contains mainly bug fixes and changes to get it working with devkitpro r17 and libnds dated 2005-12-12. I've also added a section to this page with links to some working examples to try with DSEmu. Keep an eye on my DS Developer weblog for more information.

Overview

DSEmu is an open source Nintendo DS Emulator written by Imran Nazar and released under the BSD License. Unfortunately Imran hasn't been able to continue development of it and on the DSEmu forums he welcomed other people adding to it.

Although DSEmu is not very complete it does have at least two things going for it. The first is the source is available. And the second is it has a debugger and stepper built in. So you can step through the ARM7 and ARM9 disassembly which is quite useful.

I got the latest source and made a few changes to get it working with some demo programs. It has quite a few limitations still but being able to step through the code, examine the ARM registers, etc has prove quite educational to me. I've made that release, with source, available here for anyone who wants to use it.

Other Nintendo DS emulators are Dualis and IDeaS.

Screenshots

WinDSRuby
WinDS
Screenshot Ruby
Screenshot
Tickle Girl 1Tickle Girl 2
Tickle Girl
Screenshot 1 Tickle Girl Screenshot 2
Space InvadersBattleships
Space Invaders
Screenshot Battleships
Screenshot
Python PowerYASFCave
Python Power
Screenshot YASFCave
Screenshot
Mode 5 Scrolling DemoTicTacToe
Mode5 Scrolling Demo
Screenshot TicTacToe
Screenshot

Binary Release

The binary release containing my modifications is available here:

DateVersionDownloadSource
17 January 20060.4.10dsemu-0.4.10.zipdsemu-src-0.4.10.tar.gz
21 December 20050.4.9dsemu-0.4.9.zipdsemu-src-0.4.9.tar.gz
28 September 20050.4.8dsemu-0.4.8.zipdsemu-src-0.4.8.tar.gz
15 September 20050.4.7dsemu-0.4.7.zipdsemu-src-0.4.7.tar.gz
22 August 20050.4.6dsemu-0.4.6.zipdsemu-src-0.4.6.tar.gz
11 July 20050.4.5dsemu-0.4.5.zipdsemu-src-0.4.5.tar.gz
04 July 20050.4.4dsemu-0.4.4.zipdsemu-src-0.4.4.tar.gz
27 June 20050.4.3dsemu-0.4.3.zipdsemu-src-0.4.3.tar.gz
25 June 20050.4.2dsemu-0.4.2.zipdsemu-src-0.4.2.tar.gz
21 June 20050.4.1dsemu-0.4.1.zipdsemu-src-0.4.1.tar.gz
20 June 20050.4.0dsemu-0.4.0.zipdsemu-src-0.4.0.tar.gz

Working examples

This is a list of some quick example homebrew programs that I've tested and work with DSEmu. This should give you something to quickly try. Other examples that may or may not work can be found on my tutorials pages or some of the Nintendo DS homebrew sites. Don't forget to unzip the file to extract the .nds which is what should be loaded into DSEmu.

0.4.10 has the following changes from 0.4.9:

0.4.9 has the following changes from 0.4.8:

0.4.8 has the following changes from 0.4.7:

0.4.7 has the following changes from 0.4.6:

0.4.6 has the following changes from 0.4.5:

0.4.5 has the following changes from 0.4.4:

0.4.4 has the following changes from 0.4.3:

0.4.3 has the following fixes from 0.4.2:

0.4.2 has the following changes from 0.4.1:

0.4.1 has the following changes from 0.4.0:

Source Release

The source for DSEmu is in a Darcs archive. Using Darcs you can retrieve the latest code with:

darcs get http://www.dsdeveloper.co.nz/repos/dsemu

This will create a 'dsemu' directory containing the latest code. Darcs is a great version control system. To get the latest changes to the repository use the 'pull' command:

darcs pull http://www.dsdeveloper.co.nz/repos/dsemu

Each local copy that you've retrieved is a fully fledged repository. You can record changes, pass them to other repositories or send them to me as patches. Here's some common commands:

; Record changes you've made to your local copy into a patch
darcs record

; See what changes you've made that haven't been recorded yet
darcs whatsnew

; See just a summary
darcs whatsnew --summary

; Add a new file
darcs add newfile.txt

; Create a patch file containing changes you've recorded to
; email to me.
darcs send -o patches.pat http://www.dsdeveloper.co.nz/repos/dsemu

Feel free to work on the source and send me patches using the 'darcs send' command shown above. I'll integrate them into the central repository.