Faq 096

From DeSmuME
Jump to: navigation, search


This FAQ holds a list of many commonly asked questions about DeSmuME, circa release 0.9.6

If the FAQ is unable to answer any questions you have, then please make sure that you also consult the manual. If this doesn't help, either, post your question on the forums. If it seems that the forum functions according to arbitrary or subtle rules, then it is because it does, and it you may get an inkling of them here: How To Ask Questions The Smart Way

Also keep in mind that DeSmuME is a powerful tool and can't work by magic; it requires some careful operational skills. Think of a cross between a dental drill, a helicopter, and a swiss army knife.

If you really must use an old version of the emulator, check the Faq_094 or Faq_095 ; check these also if you have been playing a game in one of those versions and are trying to upgrade your DeSmuME version, as there may still be some useful advice in there for you.

Much of the advice in this document will implicitly assume that you are running Windows. Users of other operating systems should try to apply the advice as best they can, but beware that it may not make any sense for their particular platform, since the DeSmuMEs for operating systems other than Windows tend to be crippled in comparison.


Pokemon questions

We put these at the top, hoping that it will cover 90% of questions and cut down noise in the forum.

How to get to the menu in pokemon

You may remember these screens, which you skipped? [1] [2]

For extra credit, contemplate why this might have changed.

The main game graphics are missing! The screen is black!

Make sure you are using the latest version of the emulator. Delete your ini file and re-run the emulator. Quit using patched roms. Remove the AP (Anti-piracy) patch from the rom. Quit using cheats. Use/dump external firmware/BIOS.

Why can't I play Pokemon Diamond / Pearl / HeartGold / SoulSilver / Black / White ? Why aren't they supported ?

We are not going to support these games. Don't waste time asking, it will only make us angry. If you can't make it work, then give up and go buy the cart. gbatemp.net and ds-scene.net may be more interested in this topic.

If you create new threads in our forum about these games, don't be surprised if they get closed or deleted depending on how obnoxious they are.

When I beat the Pokemon league, I can't save the game because a save already exists and it can't possibly save another.

Next time, try saving earlier and dont ignore this warning: [3]

When I beat the elite four, the game saves and resets and it tries to start a new game!

Next time, try saving earlier, and if it doesnt work, think hard about whats going to happen, and try the suggestions under "I am having any problem whatsoever!" which used to be at the top of this file, but we had to put other pokemon questions even higher.

Big Questions

*I am having any problem whatsoever! For instance, files aren't being created, but this also includes every other problem! What should I try first?*

  • Try deleting your ini file.
  • Run DeSmuME out of a folder in your documents directory, and put all roms etc. in there as well. Don't run it out of the archive, from the program files, or from a flash drive. if you don't know how to do that, then ask someone near you that knows the first thing about using computers.
  • Change display method to DirectDraw SW. Change 3d renderers. Quit using frameskip.
  • Do not use patched roms. Never use patched roms.
  • Turn off your laptop's power management or set its performance profile to performance, or max speed. This solves weird issues where games slow to a crawl over time.

The emulator crashes / freezes

DeSmuME is not perfect yet. Sometimes nothing will work and you're just out of luck. Here are some things you can try:

  • Reboot.
  • Go to desmume.org and make sure you are using the latest version. The latest version is 0.9.8. (DeSmuME 0.8 and 0.3.4 are old and unsupported)
  • Turn off your virus scanner.
  • Config > Emulation Settings > Enable Advanced Bus-Level Timing - this will slow down emulation, but fix some games.
  • Use external BIOS images; try it with and without "Emulate SWIs with BIOS images"
  • Delete your .ini file which may have options that are breaking your DeSmuME.
  • Using cheat codes modifies the game and can make it crash/freeze if it comes to an unexpected situation, delete the game's .dct if necessary

If it really doesn't boot up no matter what you try, you can submit a bug report for the game on the Sourceforge bugtracker. You might also 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.

My computer overheats and freezes or reboots while using desmume!

This is not desmume's fault. Check for dusty fans, malfunctioning power control software, and update your video drivers.

Graphics / screens are missing, corrupted, swapped, switched, or black!

  • Manipulate View > LCDs Layout tools to fix swapped/switched screens
  • You must be using an old ini or config file. Delete it and re-run the emulator.
  • Try switching between OpenGL Renderer and Software Rasterizer.
  • Try the above troubleshooting steps for freezing games. Oftentimes the problems are similar.

Every button I press is shown on the screen! Or, a counter that keeps going up is displayed!

View > HUD > Uncheck display input

DeSmuME runs too slow!

Yeah, for you and everyone else. New releases may always be a step backwards in some (or many) cases from earlier releases in terms of speed. There is a delicate balance between compatibility and speed and sometimes one advances further than the other.

I will be frank: DeSmuME focuses more on compatibility and perks than on speed. Our philosophy is, you can always mow some extra lawns or babysit some more rugrats to buy upgrades for your computer; but there's nothing you can do to fix compatibility and perks. We take care of our side of things, so you should take care of yours.

At any rate, here is the master list of tricks to speed things up:

  • Don't use external BIOS images.
  • If you ARE using external BIOS images, (or must for some reason) try enabling Patch DelayLoop SWI
  • Try switching between OpenGL Renderer and Software Rasterizer. You may not like the results, but it may get you more speed.
  • Disable this option: Config > Emulation Settings > Enable Bus-Level Timing.
  • Use Dual SPU in the Sound Settings, and don't use Advanced SPU Logic.
  • In the Sound Settings, set interpolation to none.
  • If you can handle it, turn off the sound altogether. Try listening to a shoutcast instead; I recommend happyday new age or ah.fm!
  • Don't use the NOSSE2 build.
  • Don't use 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.
  • Use frame skip. Even frameskipping by 1 will help and many games will stay playable. Frameskipping is continually tweaked in each release to get more bang for the buck, but beware that dual screen 3d games still may not work well under frameskip. If screens seem stuck, pick a different frameskip value.
  • 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. NOTE: View > LCDs Layout > One LCD *WILL NOT* increase your speed. This merely hides the lcd, but it is still rendered. This is important for dual screen games and other weird cases.
  • Don't scale the window anything different than 1x and don't use resize filters.
  • If you are using the software rasterizer, disable edge marking and fog if you feel like they aren't needed. If the game isn't using those features then this won't help.
  • Buying a newer, faster computer is somewhat more expensive, but it has other side benefits.
  • Don't use a netbook.
  • If you're using a laptop/notebook, try disabling power management or setting the system to run in maximum performance. Desktop users should consider investigating this too, just in case. Additionally, desktop users should investigate whether their system is clogged with dust, or a fan is malfunctioning, or a heatsink has fallen off of a chip. Tons of people run into these problems, believe it or not. Finally, all AMD users should disable Cool'n'quiet which doesn't work worth a crap.
  • Your graphics card is irrelevant. Upgrade your CPU.

For Linux/OSX users:

  • Try making a build with SSE and SSE2 extensions enabled because the code is ready to handle it. Someone should provide details on how to do this.

What is the turbo button / speed up button / magic fast-forward button?

Try disabling the speed limiter and crank up the frameskip setting. They are both found in the config menu. Don't expect any miracles, more than 1.5 the base speed is unlikely.

I got to the end of pokemon and now I can't reset and load my save file!

Too bad. Next time if you're going to play a game that requires that you make in-game saves consider making sure it works before you invest that much time in it.

Savegames and Savestates

Every time I run DeSmuME, my save files are gone and I have to start over

See #Every_time_I_run_the_program_my_settings_are_gone.21_I_have_to_keep_entering_them_over_and_over.21

My saved games are gone when I upgraded!

In 0.9.5, the default location for .dsv files changed. Older versions would use the rom directory; and now in Windows it is the directory that the emulator runs from; and in O SX/Linux it is ~/.config/desmume. In Windows, use the path configuration to point to wherever your .dsv files are or copy them to the new spot. If you've been running into problems with this you can probably verify it by searching for *.dsv on your hard disk and finding duplicates. Be careful when copying files around that you don't overwrite files unintentionally.

OS X users will have problems because finder won't show you the ~/.config/desmume directory and spotlight may not search them. You're going to have to learn how to use finder to access a folder directly, or use a console.

In 0.9.6 some save files are invalidated due a change in emulation. There is really nothing you can do about this. What's worse, the game will detect that its save data is invalid and wipe it when it boots up. So if you're reading this, it's too late for you. You should have heeded the warning we put on our press release.

The only known game which does this is Dawn of Sorrow, but there may be others.

Why does this game fail to save? / I get the error "Data could not be accessed. Turn off the power and reinsert the DS card."

You may have data laying around from older versions of DeSmuME. If you can cope with starting over, try deleting all relevant .dsv and .sav files. Recovering that data for use in new emulators is an advanced, and older topic: check old versions of the FAQ.

A few games save files fail to autodetect. Here is a list of the cases we know:

  • Spider-Man 3 (should be autodetect_size=1, detected as 3)
  • Over The Hedge (should be autodetect_size=1, detected as 3; same failure mechanism)

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.

Additionally games using flash memory wont save due to that save type simply not being implemented fully. Here is a partial list of those:

  • Warioware D.I.I.

Can I use my save states across versions?

Mileage may vary. 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

Savestates from 0.9.5 loaded in 0.9.6 may suffer from silenced audio or flipped screens. Try playing the game for a while to see if it fixes, but you probably should have heeded the advice above.

Can I convert a save file from ideas or no$gba nocash or my flash cart to DeSmuME .dsv? or from a .duc or any other save file format?

  1. first, try importing the save file:
    1. close the emulator and delete any existing .DSV and .SAV file for that game
    2. open the emulator and the game. wait for the game to settle down on the title screen
    3. import the save file. reset the rom.
    4. now, if your save files appear, you have succeeded. otherwise, you need to take other measures.
  2. Convert the save file using [4] or [5]

Target format should be DeSmuME or RAW

  1. Load the game. Let it get to the main menu
  2. Select the correct backup size*, as specified by advanscene.com (which is not always right, by the way)
  3. Use File > Import Backup Memory and pick the converted save file
  4. Reset the emulator

(* Step 3 is not always necessary, if you are smart and lucky, however, it will never hurt to do it, unless you pick the wrong size)

Can I convert a DeSmuME .dsv to No$gba or Nocash .sav savefile?

  1. Use File > Export Backup Memory
  2. Name the save file
  3. Import the battery into the emulator you are using.

Troubleshooting and Errors

Every time I run the program my settings are gone! I have to keep entering them over and over!

Don't run DeSmuME from the zip file you received it in. Extract it to your desktop and run it from there.

My DeSmume window disappeared! / I can hear sound and it is in the taskbar but I can't see the window!

Delete your ini file. This is caused by exiting the app while you have executed win+d show desktop mode. Desmume tries to remember the window position, but windows implements show desktop by setting the window position to something like x=-32000 and so that gets saved. There is supposed to be some code to handle that case, but I guess it is not working well. This is a problem in many windows apps and this solution will usually fix it. If you don't want to lose all the other settings in your ini file, poke around in it and find the offending items which should look like this:

Window Size=0
Window width=0
Window height=0

Delete the -32000 items

Why does my touch screen not work? Oh yes you did read my mind, I was using external firmware

It's a bug. It is not a high priority since nobody yet has proven that they actually need the external firmware. If there was a way around it, I would've just told you. You may observe this error as incorrect touch screen coordinates, or totally failing touch screen.

I have a gameplay related question

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 OpenGL 3D work in Linux?

Blame NVIDIA and AMD for putting out shoddy and/or closed source drivers. Then switch to software rasterizer.

Why doesn't OpenGL 3D work in windows?

Update your video card drivers.

Does DeSmuME make use of multiple CPU's or multiple cores?

The Windows port has two particular multicore optimizations: first, 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 speedup by a few FPS. This codepath is disabled on single core systems, and may be disabled forcefully by the user with the --num-cores=1 command line argument. Second, the software rasterizer will run in a SLI mode using as many cores as you have specified (or have been detected) up to four. Still, DeSmuMe benefits MUCH more from a single CPU with a higher GHz than from multiple cores or from multiple CPUs.

What do the three numbers or the percentage in the FPS display mean

The first is your actual FPS which is how fast the emu is running on your system. If it is less than 60 then you need speed hacks or more a more powerful CPU. The second is the 3d FPS, which is a rough gauge of how fast the game is supposed to be running. If you are seeing 60/15 then the game will feel slow because it is sloppily coded but theres NOTHING YOU CAN DO ABOUT IT short of turning off speed throttling and playing at 100fps. The final number is the ARM9 load average, and for your purposes, it is the same as the second number. Don't start bragging about how your DeSmuME runs at 99% or you will be laughed at.

The ARM9 load average became imprecise at some point. In 0.9.7 it will be more precise, and be accompanied by an ARM7 load average.

Using The Emulator

What are the minimum hardware requirements for DeSmuME?

From a purely technical viewpoint, there are no real minimum requirements. However, for bearable speeds in most games (with a few exceptions), you would need at least the following:

  • Windows OS: Windows XP or newer
  • Linux OS: Any recent Linux distribution with a 2.6 kernel
  • 2 GHz Core2Duo or equivalent
  • 512 MB RAM
  • 100 MB HDD space for files
  • GPU (SoftRasterizer): Anything that displays an image
  • A brain

What are the recommended hardware requirements for DeSmuME?

The following configuration should assure that almost every game can be played at full speed:

  • Windows OS: Windows Vista SP2 or newer
  • Linux OS: Any recent Linux distribution with a 2.6 kernel.
  • 3 GHz Core2Duo processor / 3 GHz Phenom II or better
  • 1GB RAM
  • Microphone

In general, the better a CPU, the better the performance. DeSmuME benefits from additional cores but not as much as it does individual cores being faster. Also remember to update all drivers.

What is this NOSSE2 and dev stuff? / Which EXE do I use?

Use dev if you are a developer and want the gdb stub. desmume.exe uses some SSE2 optimizations which are disabled in desmume_nosse2.exe ; Intel Pentium 4 / AMD *64 variants and later support SSE2.

It is hard to zoom in on a widescreen display due to the unusual aspect ratio of the DS

In fact it is hard to zoom in on a 4:3 screen, too. In the Windows DeSmuME , you can configure the screens to be side-by-side, so maybe this will make you happy. Additionally you can choose to display only one screen. I don't think anyone wants to add tear-apart windows, though.

Will you please add screen splitting / window tearing apart and fullscreen modes?

Fullscreen is already built-in: hold the ALT key and press ENTER. As for screen splitting / window tearing apart, you think you're the first person to have thought of this? The answer is no. Of all the things in the world to code, we hate this the most.

My window is blurry or filtered (or not blurry, or not filtered) and I want it to be different

Change: Config > Display Method or View > Magnification Filters

How do I enter 'cheat codes' in DeSmuME?

There are two types of cheat codes: Action Replay and 'raw' or 'internal' cheats. The 'raw' or 'internal' cheats include cheat-finding facilities where you may manually search for and alter the memory positions which work to your advantage. There's an excellent article on 'raw' or 'internal' cheats in the wiki on Using Cheats in DeSmuMe . For Action Replay Cheats, You can find codes for the NTSC games at http://us.codejunkies.com/Departments/DS-and-GBA.aspx and for the PAL at http://uk.codejunkies.com/Departments/DS-and-GBA.aspx.

Does DeSmuME support the microphone?

Yes, but not in OS X. You do need to have an actual microphone attached to your PC, though. Linux support requires libasound.

When in windows, if it seems that the microphone is not working, bear in mind that it has no idea what kind of how many microphones you have. You will need to use the windows control panel to specify the correct microphone as the default audio input device, and then make sure in the recording level properties (volume control) that it is selected and at an appropriate volume. This is sort of standard for Windows apps, so learn to love it.

Hold down the microphone hotkey, for a good long blowing simulation; don't just tap it.

TIP: Remove the 'wind deflector' that comes with most microphones these days for better results.

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. 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" like in Zelda when you have to draw the crest and then mash it into the map ?

This can be done using the 'lid' command or BACKSPACE key (this can be changed in the control configuration). But as usual this may only work in windows.

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. Yes, we have really been asked this question before.

Can I run 2 sessions of the emulator linked together as if two different NDSs linked ?

No. A real NDS uses WIFI for multiplayer, and that isn't emulated in DeSmuME yet. Also, look at the questions on WIFI Support

How can I touch two points on the screen at once, as required by Hotel Dusk or Phoenix Wright?

One user got past this by first switching on one of the switches, then pausing the game, and sort of switching on an imaginary switch in the middle of the two switches while manipulating the frame advance hotkey. See, gbatek says that when two points are touched, that the hardware appears as if the average of the two points is actually pressed. But the game expects you to touch them at not-exactly-the-same-time.

Here is a thread discussing it in Phoenix Wright where you may get a different description of this technique: Thread

How can I run homebrew games that require DLDI patching ?

Games will be automatically DLDI-patched, but to get file access working, you must activate the slot-2 CompactFlash add-on and specify either a directory to read from or a FAT image (see DLDI below). On Windows, click Emulation -> GBA slot, choose "MPCF Flash Card Device", and then specify a path or an image. The --cflash-image and --cflash-path command-line options are also available. Be warned that directories containing many files can take a long time to load.

Wi-Fi and WFC

Does DeSmuME support Wi-Fi?

Wifi is not supported. It isn't finished yet, it is experimental, and you're better off not wasting your time trying to use it. Don't bug us on the forums when you discover that it doesn't work; that's what "not supported" means.

What is WFC / Nintendo WiFi Connection?

See the article Nintendo wifi config utility for more information.

General Questions

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".

How is the name DeSmuME pronounced?

Try: phonetically. "dee-ess-emmyoo" isn't phonetic. Is it so hard? try "dezz-myoom" or "dezz-moom" or "dehs-moo-mee". You might also try the trick which enables us to pronounce the name of the director of the Sixth Sense as "shamma-lamma-ding-dong" and use "des-moomy-ding-dong-shaballa-smack"

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.
  • With the software rasterizer, all 3D features are emulated, except the following: wireframes and antialising. The OpenGL Renderer fails for some other features; it is near its limit and may never be fixed. Both engines have trouble with some shadows, but software rasterizer is better. The software rasterizer has some noticeable texturing issues right now, especially in 2d games. In software rasterizer, there are issues similar to 2d with incorrect bit depth being used in the pipeline.

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.
  • 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 titles.
  • DLDI - 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. The MPCF driver (GBA MoviePlayer CF-version) is the only one that is supported, so you may need to install it into your application before using it in DeSmuME, though as of r3665 the patching should be automatic. You will find that a directory or fat image must be mounted via the commandline or UI for the "gbaslot" configuration. Right now, our codebase really only has libfat support for SLOT-2 devices and CF devices so more thorough support for other DLDI drivers is unlikely at this time.

Warning - As of june 2010, it has become suspected that our compact flash emulation has bugs which sometimes prevent access to the first subdirectory in the FAT filesystem; and that causes FAT images which are written to, to become corrupted. We need a FAT expert to help us out, as I think both bugs are related. Warning - As of september 2010, FAT support has been rewritten and indeed it fixed the bugs mentioned above, but it doesn't support LFN yet.

Does the GDB stub still work?

It is present in 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.

Where/what is IRC?

IRC is an on-line communications system.

Information you'll need:

  • Server: irc.freenode.net
  • Port: 6667
  • Channel: #desmume

Programs you'll need:

  • mIRC - Windows
  • ChatZilla - Firefox add-on
  • XChat - Linux, Windows
  • plenty other, see wikipedia


  • Most of the people on the channel speak, or try to speak the English language.

Where is the manual?

Over here. It may not have the information that other entries in this FAQ promised that it would.

What is DLDI?

DLDI is a patching system for homebrew ROMs using libfat which makes DS homebrew much easier to write and much more user friendly. As you may know, there are many various flash cartridges for DS. These 'flashcarts' use different hardware, so to make a program run on all cards, you’d have to write support for each and every card into the program. But no-one needs support for any other cards than their own. So a libfat developer, chism, developed DLDI. The program itself knows nothing about the hardware. However, when a “DLDI patch” is applied, libfat can use this patch to know how to write to the flashcart. So, if one user has an M3 flashcart, and downloads a program, they could patch it with the M3 DLDI patch and the program would work with it. Then, another user with a Supercart could download it, apply the Supercard DLDI patch, and it would work on their flashcart, too. The same patch should let the flashcart work with any libfat based program.

How can I post a save file 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 record an AVI with a gap between the screens?

Learn how to use virtualdub and avisynth. Then use the following avisynth script which we have developed for this purpose:

gap = 64
#color = $aaaaaa
#color = $000000
color = $ffffff
A = AviSource("c:\ds.avi", pixel_type="RGB32")
B = AviSource("c:\ds.avi", pixel_type="RGB32")
C = blankclip(fps=A.FrameRate, width=256, height=192+gap+192, color=color, length=A.FrameCount)
A = A.crop(0,0,256,192)
B = B.crop(0,192,256,192)
D = overlay(C,A)
D = overlay(D,B,0,192+gap)
return AudioDub(D,A)

We really don't want to put any smarts into the DeSmuME avi dumper, preferring to do it with avisynth instead. It is a slippery slope, as there are about 50 things that people want avi dumpers to do and theyre better off learning how to do it outside the emu with other tools. To that end, if you have any particular needs regarding this do not hesitate to post in our forum and maybe we'll help you make a new avisynth script.

Here is a script that crops the movie down to just one of the screens

#aviysnth script for cropping a ds avi down to one screen
#uncomment one of the lines below depending on which screen you want
A = AviSource("c:\ds.avi", pixel_type="RGB32")
#if you want the top screen, uncomment this
#A = A.crop(0,0,256,192)
#if you want the bottom screen, uncomment this
#A = A.crop(0,192,256,192)
return A

Here is a rather unimaginative re-working of the first script which sets the two screens side by side

A = AviSource("c:\ds.avi", pixel_type="RGB32")
B = AviSource("c:\ds.avi", pixel_type="RGB32")
C = blankclip(fps=A.FrameRate, width=512, height=192, color=$000000, length=A.FrameCount)
A = A.crop(0,0,256,192)
B = B.crop(0,192,256,192)
D = overlay(C,A)
D = overlay(D,B,256,0)
return AudioDub(D,A)

There are more scripts and more pro users of avisynth for these purposes at this 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.

Yopyop said:

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?

However, when Guillaume later asked for permission to use the DeSmuME name, yopyop told a somewhat different story:

Pour la loi c’était juste un mauvais poisson d’Avril. En fait la loi et le 1 er Avril aussi proche étaient trop parfaits pour faire un petit poisson d’Avril. Mais bon avec des réactions comme celle de mon site préférait je préfère mettre un terme à ce projet perso qui est devait être amusant.

That can be translated to

The law thing was just a bad April's fool. In fact, the law and April 1st were so close that I thought it would be the perfect April's fool. But after feedback like what I got from my favorite site, I prefer to stop that hobby project that should have been fun.

You can get the full thread here: http://www.playeradvance.org/forum/showthread.php?t=385&page=9

SVN and Compiling

Where do I get svn builds?

emucr. Please note that these builds are unofficial and unsupported.

Why doesn't the DeSmuME team release pre-build SVN binaries ?

The DeSmuME team doesn't have trusted people to make the builds, and don't want to get involved on builds that could include whatever the author wants. Every newbie coder could do a version that, after 10 minutes of gameplay, for example, starts corrupting stuff from the hard disk. Also, anyone incapable of building it's own builds, probably isn't very helpful for submitting bug reports or helping the development team on SVN releases, so there isn't much point on them getting a SVN build.

How do I get the latest svn code and build DeSmuME myself?

See: Installing DeSmuME from source.

What is 'SVN' ?

svn is a developers tool. It's used to let multiple developers work on the same codebase without conflicts. If you're an end-user, don't worry about it. 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++ and msys/cygwin are not supported. Microsoft's Visual C++ Express is free to install and use, so there's no reason not to use it.
  • Visual C++ 2010 may work, but we don't support it, since there are known issues with it. Tell it to build DeSmuME lots of times until it finally works, and beware that there may be other subtle bugs. You might also have to go into the windows > libs folder in the project tree and manually compile the .7z files.
  • Visual C++ Express 2010 doesn't include x64 compiler support; to get that, you need to install the platform SDK from http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=6B6C21D2-2006-4AFA-9702-529FA782D63B
  • For Linux, any recent version of GCC and toolchain should work.

I'm Compiling using MSVC Express On Windows, and I get the error : "ml.exe" not found.

For some reason known only to the Man at Microsoft Who Makes Arbitrary Soul-Crushingly Inconvenient Decisions (or possibly to the Department of Goofups), ml.exe was not included in earlier downloads of MSVC++ 2008 Express Edition. Uninstall, redownload and install again. 'ml.exe' shoud be located in the "Microsoft Visual Studio 9.0\VC\bin" directory.

Microsoft hid the visual c++ express 2008 installer and I can't find it.

It's there if you click around more. I'll save you time: http://download.microsoft.com/download/A/5/4/A54BADB6-9C3F-478D-8657-93B3FC9FE62D/vcsetup.exe

Homebrew, Development, 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?

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, and can dump around 100MBytes of logs per frame. Then redirect stdout to a file. I know it isn't easy but its what we have for now.

Where can I find technical details on the Nintendo DS and GBA?


How can I do a printf to the emulator console?

You may use Ideas-style printf by executing SWI 0xFC with the null terminated string address in R0. More info here: http://www.console-dev.de/2009/05/17/print-formatted-text-to-ideas-debug-console/ ; or you may use No$GBA debug message format. libnds supports No$GBA messages.

Tell me about nitroFS or libFAT or compact flash emulation

libFAT has been working for quite some time, via MPCF DLDI as mentioned earlier in the faq. libnds argv is supported. This enables nitroFS to use libFAT to mount the nds rom, but it expects the rom to exist within the filesystem at fat:/rom.nds; if you supply a compactflash root directory equal to /path/to/ where your rom is at /path/to/rom.nds, (and of course ensure that the MPCF patch is operational), nitroFS will be able to initialize. Alternatively, use gbaslot-rom=path/to/rom.nds which will also support nitroFS via its gba-mounting mode.

See this File:Empty 128M fat image for desmume.zip for help making a compact flash image

Mac Users

I have OSX 10.4.x and I can't use DeSmuME 0.9.5

It is unsupported.

Why does DeSmuME 0.9.5 and 0.9.6 look and act different than old OS X releases?

They are builds of the GTK port, which has been chosen since the cocoa port is abandoned by the Mac coders.

Why can't I find a Mac binary?

Maybe we haven't made it yet. There aren't 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. For 0.9.5 there is only an i386 binary, and PPC won't be supported unless someone makes a cocoa build.

Why doesn't a menu option or tool exist in my Mac build?

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.

Linux Users

Why doesn't a menu option or tool exist in my Linux build?

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.

Personal tools