If the FAQ is unable to answer your question(s), then please make sure that you also consult the manual.
Release 0.9.4 Topics
Using old DeSmuME save files in 0.9.4
DeSmuME will first try to load a dsv file. If the dsv is missing, it will try to load a sav and then it will immediately dump the dsv. The conversion process is supposed to be seamless.
Whats this nosse and dev stuff? Why does desmume.exe crash when it loads? Which exe do I use?
Use dev if you are a developer and want the gdb stub. Use nosse if the regular exe crashes for you because you are on an old computer. desmume.exe uses some SSE2 optimizations for 3D matrix calculations which have been disabled in desmume_nosse.exe. Any modern Intel CPU (AMD or intel) will support SSE2.
Savegames and Savestates
Why does this game fail to save? or, I get the error: "Data could not be accessed. Turn off the power and reinsert the DS card."
Until version 0.9.4 DeSmuME's save size autodetection was poor. With 0.9.4, autodetection should work almost all the time. In fact, here is the entire list of games we know of that fail to autodetect correctly:
- Spider-Man 3
If you find any other game for which automatic savetype detection does not work, please let the developers know by posting on the forum or submitting a bug. If you want to fix it yourself, you may need to manually specify the correct save type for your game. Consult the manual for details on how to do this for your platform. You may also consult http://www.advanscene.com/ to easily identify the save type for your game.
I get the error: "Unable to write data. Please turn off the power and reinsert the game card."
Same problem and resolution as the previous question.
Why did you change the save file format and extension from .sav to .dsv ?
Because it is better now. These raw save files that everyone uses aren't good enough and were causing problems with autodetection. See our bug tracker or forum for more details; the dsv format has been documented in the svn source tree as dsv.txt and if you don't like the degree of interoperability with other emulators, then go tell the other emulators to support our format.
Can I use my save states across versions ?
Maybe, maybe not. Due to constant internal changes in DeSmuME, it is possible that a save state created with one version may not work with another version of DeSmuME. Savestate compatibility is preserved wherever possible, but it is not always possible. Please note that for easily confused gamers, the use of SAVESTATES is discouraged, as these are likely to break between emulator versions. Instead use SAVE FILES. These are likely to survive between emulator versions. This means that you will have to use save points within the game. SAVE FILES are stored in .dsv files. Also, see this article for further details : Savefile or savestate
Can I convert an ideas or no$gba nocash .sav savefile to DeSmuME .dsv ?
1. Convert the save file using http://shunyweb.info/convert.php ; the target format should be "Acekard RPG | EZFlash V | RAW Format [Autodetection] (.sav)" 2. Load the game. Let it get to the main menu 3. Select the correct backup size*, as specified by advanscene.com (which is not always right, by the way) 4. Use File > Import Backup Memory and pick the converted save file 5. Reset the game
- Step 3 is not always necessary, if you are smart, however, it will never hurt to do it.
How do I make pokemon save?
Use 0.9.4 where the savetype is detected automatically and correctly.
Wi-Fi and WFC
Does DeSmuME support wifi ?
Wifi is not supported. It is currently under slow and incomplete development. Therefore, you may find this option missing, or simply 'greyed-out' for now. Also, since WIFI support does not work yet, don't ask any questions about it's functioning because it still is unfinished and does not work yet. Furthermore, current development activities focus mainly on the Windows build.
Why do I get an assert in wifi.cpp which keeps me from playing a game?
This was a glitch in 0.9.2 release which was fixed in 0.9.4.
OK, then why does it make my firewall alert since 0.9.2 ?
Your firewall is stupid, or winsock is stupid, (I am not sure which yet) for alerting just when winsock gets initialized. The emulator hasnt actually tried to connect to the internet yet. How could it? There isn't any wifi. All we are doing is some network initialization code. For those of you who are still not satisfied, then I will admit that there is actually some wifi code--but it doesn't actually do anything yet! Except alert your firewall. Sorry. Also, maybe that is actually a good, unobtrusive time for firewalls to alert. But I am not sorry for calling them stupid. They are hyperactive crybabies.
OK, so then why did my build come with winpcap.dll? Or why do I get crashes when I run DeSmuME on vista which mumble something about winpcap?
Because you are running an unofficial build, from dubious origins, made by unknown people. The DeSmuME team cannot support builds it did not create itself. Therefore, you are advised to stop using unofficial builds, as you can expect no support from the DeSmuME team or on the DeSmuME forums. Only use builds you downloaded from the DeSmuME website.
What is WFC / WIFI Connection
See the article Nintendo wifi config utility
Troubleshooting and Errors
Please check a site like http://www.gamefaqs.com, and don't post gameplay related questions on the forum or IRC *unless* you believe there is a bug in the emulation of DeSmuME.
Why doesn't my DeSmuME play this game?
Go to desmume.org and make sure you are using the latest version. The latest version is 0.9.4. Hint: DeSmuME 0.8 and 0.3.4 are very old, being numbers smaller than the latest version. Older versions will not be supported, under any circumstances. You might also check the incompatibility list at http://groups.google.com/group/desmume/web/desmume---games-compatibility-list for clues about how to solve your problem.
Why doesn't my game boot or progress into the main game engine?
DeSmuME is not perfect yet. Some games may fail due to wifi emulation. You might find ways to patch the games to work better on emulators by searching on the internet, but that is not something you should seek help with on the DeSmuME forums. If it really doesn't boot up, you can submit a bug report for the game on the sourceforge bugtracker.
Why does the emulator take a long time to start up and/or devastate my system or unarchiver when I run it?
This is a problem with the DeSmuME 0.9.2 that some people impolitely distribute themselves. Redownload 0.9.2 from sourceforge.net or get a newer version. It isn't a virus or anything, it is a bug in the application that can just bring a system to its knees. It tries to allocate 1GB of virtual memory. This also crashes or freezes some virus scanners (I've seen it on AVG).
Why doesn't my openGL 3d work in linux?
Blame nvidia and ati for putting out shoddy and/or closed source drivers. Then switch to software rasterizer.
Why doesn't my openGL 3d work in windows?
You are probably using an ATI video card. ATI driver support of OpenGL is known to be poor. nvidia cards have a much more robust support of OpenGL, so getting one of those will help. Alternatively you can switch to software rasterizer.
My display is incorrect or corrupted
Try switching the 3D Renderer from opengl or SoftRasterizer, or vice versa, to see if that resolves the bug. In windows, the default hotkey to do this quickly is numpad minus.
My display has flickering graphics in a certain game
In the Windows port, you can choose 'Alternate Flush Mode' in the 'Config | 3D Settings' menu. This fixes some games with flickering graphics.
Why does music and FMV sound bad sometimes?
Most DS music is sequenced music, loaded from the cart entirely when the level loads. This works fine. Your music that doesn't work is probably streaming music, which loads from the cart on the fly and goes straight to the speakers, and possibly decoded along the way. This includes FMVs. This is much harder to emulate as it requires correct timing, which is not one of DeSmuME's strengths right now. This may not be fixed for a while.
Why is the emulator slow?
Because nobody pays us to work on it full time and it runs fast enough for us to be happy. Well, almost.
0.9.4 May be a step backwards in some (or many) cases from 0.9.2 in terms of speed. The development between these versions focused on compatibility and bugfixes. Once we better understand how some things need to be emulated, then some speed can return. However, in order to mitigate some of this backsliding, we have introduced a few speed hacks which you may find helpful.
- If you are in Windows, make sure you're not using the NOSSE build. That one is slower.
- If you are using someone else's unofficial "svn" build it probably is not fully optimized since we make our Windows releases using some profiler-guided optimization which helps by several FPS. For all I know they are also carriers of viruses, and lately they tend to crash on vista.
- If you can handle it, turn off the sound.
- Use frame skip. Even frameskipping 1 will help and many games will stay playable. Frameskipping was improved in 0.9.4 to get more bang for the buck, but beware that dual screen 3d games may not work well under frameskip.
- (0.9.4+) In the sound options, set interpolation to none which should help a little bit.
- (0.9.4+) Turn on the sound option "ADPCM Caching"; this is new and experimental, and will break some things, but it should offer a substantial speedup in some cases.
- (0.9.4+) There is now the option of disabling an entire screen. (Tools > View Layers > Main GPU, etc) Consider disabling a screen which is useless in the game you are playing.
- Try the software rasterizer. In many cases, especially games which make only light use of the 3d hardware, this will actually run faster, by as many as 10 FPS. But it might also run slower, again, by as many as 10 FPS.
- Buying a newer, faster computer is somewhat more expensive, but it has other side benefits.
- A faster CPU is more helpful than a bleeding edge graphics card. DeSmuME is more CPU intensive than it is GPU intensive. It just needs a graphics card that is glitch-free, and currently the nvidia cards have a better track record. A newer graphics card has a slim possibility of increasing speed.
- The cheapest way to get 60fps is to buy the cart. You may find that this is not enough, and you need to buy a console as well. Here are some steps that have worked well for me in the past:
- Look for neighbors that are mowing their own lawns. Ask them if they would like for you to do it instead.
- Borrow your daddy's lawn mower and mow the neighbor's lawn.
- After this, they will generally give you cash. As you repeat the above steps, this cash can accumulate to large values.
- Once the accumulated cash is sufficient, it can be taken to a merchant where it can be exchanged for games and consoles.
Does DeSmuME make use of multiple CPU's or multiple cores ?
Currently, the Windows port has one particular multicore optimization (in 0.9.5+): the display logic runs in its own thread independent from the emulator. This is used to make the OSD run frame-rate independent from emulation. This thread performs color conversion, filtering, and directdraw presentation. The net result is a few FPS speedup. This codepath is disabled on single core systems, and may be disabled by the user by the --single-core commandline argument. Still, in this emulator, you benefit MUCH more from a single greater Ghz cpu than from multiple cores or from multiple CPUs. We are considering using one thread for each GPU, but this only creates a net speedup when the extra GPU thread can wait in a spinlock, since it needs to wake up 11520 times per second, meaning that it makes the emulator bog down a dualcore system. We are currently pondering the best way to approach this.
What does the number/percentage in the DeSmuME title bar mean ?
- For the windows port, the percentage is the emulated arm9 CPU load average. The CPU in an actual Nintendo DS is an ARM9 CPU. The percentage shows us how busy the emulated CPU is. This number isnt really for you. We really ought to just take it out.
- For the Linux GTK and Glade ports, it's frames per second (fps).
Using The Emulator
What are the minimum hardware requirements for DeSmuME ?
From a purely technical viewpoint, there are no minimum requirements. However, for 'real-world' playable speeds, you would need at least the following :
- Windows OS: Windows XP or Vista
- Linux OS: Any recent Linux distribution with a 2.6 kernel.
- 2 GHz Processor
- 512 MB Available System Memory
- Available Hard Drive Space: A few MB for the emulator
- 128 MB 3D Video Card (Nvidia GeForce 6800 or better), ATI cards are not recommended.
- Optional: Sound Card, if you want sound support
- Optional: Microphone, if you wish to make use the Windows Microphone feature
What are the recommended hardware requirements for DeSmuME ?
From a purely technical viewpoint, there are no recommended requirements. However, for 'real-world' playable speeds, the following gives you good performance:
- Windows OS: Windows XP or Vista
- Linux OS: Any recent Linux distribution with a 2.6 kernel.
- 3 GHz Processor
- 1 GB Available System Memory
- Available Hard Drive Space: A few MB for DeSmuME, 100MB or so for a bunch of savestates and savefiles.
- 512 MB 3D Video Card (Nvidia GeForce), ATI cards are not recommended.
- Sound Card.
In general, the more Ghz, the better. The faster memory, the better. DeSmuME currently won't benefit from multiple cores (except on SVN builds). DeSmuME currently is, unfortunately, slower than no$gba.
It is hard to zoom in on a widescreen display due to the weird aspect ratio of the DS.
In fact it is hard to zoom in on a 4:3 screen, too. Proposals involve tearing apart windows and floating them side by side or separately or something. This may happen one day, in the form of side by side windows.
How do I enter 'cheat codes' in DeSmuME ?
Action Replay and 'raw' or 'internal' cheats work as of 0.9.4. There are also cheat-finding facilities where you may manually search for and alter the memory positions which work to your advantage. There's an excellent article in the wiki on Using Cheats in DeSmuMe .
Does DeSmuME support the microphone ?
Yes, but only on the Windows and GNU/Linux ports. You do have to have an actual microphone attached to your PC, though. In 0.9.2 the microphone in windows really only works for noise, but this was fixed in 0.9.4; it still hasn't been tested very well. Linux support has been added after 0.9.4 release so you need a recent subversion checkout, it requires libasound.
Does the 'GBA slot' option let me play GBA games ?
No. A 'real' DS can use the gba slot to play gba games, but DeSmuME does not emulate this. But a 'real' DS can also use the gba slot to access gba roms and sram so that ds games can import savefiles, and that part is emulated by DeSmuME. (please note that this is reportedly buggy for some games, including pokemon) If you are looking for a Game Boy Advance (GBA) emulator, perhaps you can try mednafen or visualboy advance.
How do I "Close the DS" ?
We call this the 'lid' command or key. You can do so with the key BACKSPACE (you can change the mapping on the control configuration)
How do I use the stylus (pen) to 'touch' the screen ?
You can use your mouse to emulate the stylus. Move the mouse cursor to the desired position, and then press the left mouse button in order to 'touch' the screen at the position the mouse cursor is located.
What does DeSmuME emulate and on what systems?
DeSmuME attempts to emulate, as faithfully as possible, the Nintendo DS and Nintendo DS Lite handheld game consoles (nds). It currently runs on Windows, Linux, and mac OSX. DSi is not supported.
What does DeSmuME mean?
DeSmuME is a Nintendo DS emulator and the name is a play of words - DS Emu + ME (like FlashMe - firmware hack and PassMe mod-chip for DS) The name DeSmuME derives from the popular use of ME in Nintendo DS products by homebrew developers. So DeSmuME would equal DSemuMe. Other popular uses of ME include:
- LoadMe - a generic patcher for commercial DS roms that works with any GBA Flash Card
- PassMe - "mod-chip" using which takes authentication from an original DS card an allows execution of unauthenticated DS rom code - from the GBA cartridge slot / GBA flash card.
- FlashMe - a hacked firmware for DS that allows you to start code in DS mode from a flash card in the GBA slot.
- WifiMe - are a set of a custom drivers and software by FireFly for RALink based wireless network cards enabling to boot homebrew code on DS via Nintendo Wireless Multiboot method.
Its name is derived from emu which is short for emulator, DS and me. It's possibly supposed to mean "DS emulator for me".
Under what license is DeSmuME distributed ?
DeSmuME is distributed under the Gnu General Public License, or GPL: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
Can I freely copy DeSmuME ?
Yes you can, as long as you adhere to the license as specified in the GNU GPL.
Where can I report bugs?
In the official bug tracker. Feel free to post to the bug tracker as long as you are willing to take ownership of testing that bug and letting the developers know when it is resolved to your satisfaction. Just don't submit a bug report and run. You may also request features around the same location, too, but in the other trackers.
Can I attach files to bug reports I did not create myself ?
SourceForge likes for folks to only respond on items they submit. If you see a ticket that represents something you are encountering, SourceForge doesn't necessarily want you commenting on that. The reasoning for this given by SourceForge is that they feel it is best to open your own ticket, which helps appreciate the extent of issues in many cases. The authors of DeSmuME may or may not agree with this point of view from SourceForge.
What is 'TAS' ?
TAS lets you record the gameplay in TAS format, see http://tasvideos.org for details on TAS (tool-assisted speedruns).
What hardware features are emulated?
- All known 2d graphics features are correct. Mosaics work but are imperfect. There may be small issues with colors as the correct color bit depths are not used at all points in the pipeline.
- All 3d features are emulated, except for: tests, wireframes, edge marking, fog, and antialising. The opengl engine is near its limit and renders some things incorrectly. Eventually the software rasterizer (will support more features and be far more precise in the basic features. Both engines have trouble with some shadows, but software rasterizer is better. Software rasterizer has some noticeable texturing issues right now, especially in 2d games. Software rasterizer supports more correct lighting interpolation than opengl ever will (e.g. glitches at the edge of the screen while scrolling.) In software rasterizer, there are issues similar to 2d with incorrect bit depth being used in the pipeline. There are inaccurate edge conditions in each renderer; in opengl, textures tend to get overdrawn; in software rasterizer, edges of textures tend to be jittery.
One last thing -- if buttons and labels and menus rendering on the 3d screen are obscured (for example, a button but no label is on it) then you may need to use the software rasterizer. Or you may need to use openGL instead. Each renderer has strengths and weaknesses, which is why both are provided.
- All sound features are emulated. The microphone support is new and the manual should be consulted, where you will find out, among other things, that it is only supported in windows right now.
- Wifi is not supported. It is currently under slow and incomplete development. Therefore, you may find this option missing, or simply 'greyed-out' for now. Also, since WIFI support does not work yet, don't ask any questions about it's functioning because it still is unfinished and does not work yet.
- We are unaware of any outstanding issues in the core system hardware (cpu, dma, mmu) but there are certainly still some. The instruction and memory timings are quite incorrect; however, this seems not to hurt most softwares.
- DLDI (does anybody know if this still works?)
Dynamically Linked Driver Interface, commonly known as DLDI, is a driver framework that allows NDS and GBA homebrew to easily read and write to any number of different devices, just by substituting a driver file.
- RTC (real-time clock) works; If it didnt, then the time in your games stays at 00:00:00, and your random number values always come up the same.
Does the GDB stub still work?
It seems as if it works in 0.9.4, tested with the Insight GDB variant on windows with a recent devkitpro. This support has been compiled into the dev+ build.
How do I enable the GDB stub on the Windows port ?
Add #define GDB_STUB to src/windows/userconfig/userconfig.h which you have created according to the instructions in src/windows/defaultconfig/userconfig.h ; sorry for this confusing system, but that's how it is for now.
Does compact flash works?
In 0.9.2+ it works, somewhat buggily, at least for directory scanning (i.e. not fat16 image) in windows via the gba slot. There is a bug that breaks it in linux, which has been fixed for 0.9.5+ along with some other work on that system.
Where/what is IRC?
IRC is an on-line communication system.
data you need:
- server: irc.freenode.net
- port: 6667
- channel: #desmume
what to use:
- mIRC - windows
- ChatZilla - FireFox add-on
- xchat - X
- plenty other, see wikipedia
- Most of the people on the channel speak, or try to speak the English language.
Where is the manual?
A manual for DeSmuME is over at http://wiki.desmume.org/index.php?title=Manual. It may not have the information that other entries in this FAQ promised that it would.
Where is release 0.9.3 ?
Who cares? 0.9.4 is out now. DeSmuME 0.9.3 does not exist. It was sneaked out of our staging area. It has bugs, which is why we hadn't released it yet. So we decided not to release it at all. Any release claiming to be 0.9.3 wont be supported.
What is DLDI ?
let me give you an overview on DLDI. You should know that there are many various flash cartridges for DS. They use different file allocation systems, different storage's, etc. They are used for launching homebrew. So to make one program run on all cards. You’d have to write support for each and every card so that it worked for everyone. But none needs support for other cards than their own. And then a genial solution was found. There was an universal IO unit made that’s just interface to IO operations. And compiled program does not know how to handle file system etc. And then user can append IO routines for his own card. “DLDI patch”. So, now when I have an M3 cart, I download rom, patch it with m3 DLDI patch, and it works on my cart. Say you had Supercard instead. You’d have to download very same rom and apply Supercart DLDI patch to it. DLDI patch is the same for all roms. So it’s easy for both developer and end user.
How can I post a savefile or avi capture on the DeSmuME forum ?
After you created it, you can upload it to a free external service provider like MediaFire (http://www.mediafire.com/), and then put the provided links to the page in the message you post on the forum.
How can I post a large log or other text file on the DeSmuME IRC chat room ?
Make use of an external text storage site, such as 'pastebin' (http://pastebin.com/), and post the url to it on the IRC channel.
What are the origins of DeSmuME ?
DeSmuME is a freeware emulator for the Nintendo DS originally created by YopYop156. The original website was http://yopyop156.ifrance.com
Due to change in French laws regarding emulation YopYop decided to stop development of DeSmuME. However, he released the source under the GPL, and other programmers have picked it up and kept it under active development.
- It’s release under GPL. I have just removed the new 3D engine because it’s too much bugged. Hopefully it will be helpful for some of you.
The latest statement heard from yopyop was :
- DeSmuME project is over.
- You may don’t know but there are a new law in France that could put me in big trouble.
- With DeSmuME, I have closed the doors of game company but I can not offer to pay for it.
- The worst thing is that I have found the bad coded instructions.
- For those how have download the sources you have to look in sbc, rsbc instructions the Carry flag updating is wrong.
- Sorry for the home brew programmers.
- For the illegality the demonstration seemed to me convincing thus without proof clarify I prefer to stick to this decision.
- It is also the fact that few people seem interested by the project. Put besides some people who sent demonstrations to me which did not go, I received only malls to wonder to make function such or such plays or to ask me why moved is in French .
- Thus I will not do something of useless and illegal.
- For the site it would not obstruct me if there were not the bond on the left which does nothing but add to confusion on the goal of the project.
- And for the sources it is the same problem as for the project.
- good week end
- edit the law relates to the royalties and the rights close, not?
SVN and Compiling
How do I get the latest svn code and build DeSmuME myself?
Please check out the instructions related to your platform, over at Installing DeSmuME from source
Whats 'svn' ?
svn is a developers tool. It's used to let multiple developers work on the same codebase without conflicts. If youre an end-user, don't worry about it. And if you're a developer, see the question on how to get the latest svn code and build DeSmuME yourself. See wikipedia for more info
What compilers are supported for building DeSmuME from source ?
- At the moment, for Windows Microsoft Visual C++ 2005 and 2008 are the only supported compilers. Dev-c++ is not supported. Why won't you just download visual c++ express?
- For Linux, any recent version of GCC and toolchain should work.
Im Compiling using MSVC Express On Windows, and I get the error : "ml.exe" not found.
ml.exe was not included in earlier downloads of MSVC++ 2008 Express Edition. Uninstall, redownload and install again. See http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=326875 for details. ml.exe shoud be located in the "Microsoft Visual Studio 9.0\VC\bin" directory.
Developering and Technical Questions
I have a patch, modification or other code addition
Please add them to the appropriate sourceforge tracker. Patches go to the 'Patches' tracker : http://sourceforge.net/tracker/?group_id=164579&atid=832293
I'm a developer, and would like to contribute to the codebase. What can I do ?
To start you off in the right direction, the best thing you can do is join the developer team on IRC and discuss your intentions with the developers.
Im not a developer, but would like to help out anyway. What can I do ?
The most helpful thing you can do is use DeSmuME, learn its ins and outs, and learn how to compile svn builds. Then monitor it for regressions and report bugs. You can patrol the bug tracker for bugs which could use elucidation or which, based on your awareness of how the emulator is changing, might be fixed without us having specifically addressed the bug. Basically, be a super user. And hang out on irc. Also, adding to or perfecting the documentation in the wiki is useful. You could also watch for and answer questions placed on the DeSmuME forum.
What is this Lua stuff I see?
It is sort of a macro language for interacting with the running game software. Here is an example of it working with an NES game in another emulator, and youtubing for "fceux lua" should suffice to explain it if you don't get the picture from this url: http://www.youtube.com/watch?v=1XNTjVScm_8
How do I easily capture the ASM code for troubleshooting purposes ?
Savestate during the problem or just before your problem occurs, and #define WANTASMLISTING in armcpu.cpp. Recompile. Then redirect stdout to a file. I know it aint easy but its what we got for now.
A newer, and possibly better way, is to search for LOG_ARM9 in ndssystem.cpp and uncomment it. You will also need to trigger the condition for logging by setting dolog=true. Beware that this is very verbose, on the order of 100MBytes per frame.
Where can I find technical details on the Nintendo DS and GBA ?
Why can't I find a mac binary?
Maybe we haven't made it yet. There arent a lot of people willing to compile mac software. Just to be sure, go to https://sourceforge.net/project/showfiles.php?group_id=164579&package_id=186413
Why does my mac binary say something about being unsupported?
You have probably downloaded the i386 version of DeSmuME for MAC, and are running on the PPC platform (or the other way around). Please verify if you're running on Intel (i386) hardware, or on PPC (G4, G5) hardware, and download the appropriate binary.
Because making portable tools and platform harnesses are not our cup of tea and so a developer puts a feature into whichever ports he cares about. This policy is never going to change, although some features might migrate to other platforms over time. Better check the manual.