Faq

From DeSmuME
Jump to: navigation, search

DeSmuME FAQ 0.9.10

This FAQ holds a list of many commonly asked questions about DeSmuME.

If you need information about an older version, refer to one of the older FAQs for that version:


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.

Contents

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.

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.

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?*

  • Read the KnowledgeBase
  • 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.
  • Stop using savestates. Use in-game saves.

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.9. (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:

  • Use the Dynamic Recompiler (JIT) option.
  • 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.

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.

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.

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

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:

[Video]
Window Size=0
Window width=0
Window height=0
WindowPosX=-32000
WindowPosY=-32000

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.

Using The Emulator

What are the minimum hardware requirements for DeSmuME?

From a purely technical standpoint, 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 SP2 or later
  • Mac OS: OS X v10.5.8 Leopard or later
  • Linux OS: Any recent Linux distribution with a 2.6 kernel
  • CPU: 2.0 GHz Intel Core 2 Duo or equivalent
  • RAM: 1 GB

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 later
  • Mac OS: OS X v10.6.8 Snow Leopard or later
  • Linux OS: Any recent Linux distribution with a 2.6 kernel.
  • CPU: 3.0 GHz Intel Core 2 Duo or equivalent
  • RAM: 2 GB

There are several different DeSmuME executables available. Which EXE do I use?

[Windows] For most users, the best version to use is the 64-bit build. Most modern setups will support the 64-bit build, and it should always be your first choice in DeSmuME EXEs. However, if the 64-bit build doesn't work out for you, there are also the standard 32-bit and 32-bit non-SSE2 builds to choose from. Also, if you are a developer, you can use the dev build.

  • If you have a 32-bit CPU (or are running 32-bit Windows), use the standard 32-bit build. Note that this build is SSE2-enabled, and therefore requires an Intel Pentium 4, AMD Opteron, or AMD Athlon 64 CPU or newer in order to run.
  • If you have an older CPU, use the 32-bit non-SSE2 build. However, the non-SSE2 build has lower performance than the standard 32-bit build, so only use it if your CPU does not support SSE2.
  • If you want to use the developer features, use the dev build. It includes extra debugging code and logging, as well as gdb_stub.

Does DeSmuME make use of multiple CPUs or multiple CPU cores?

[Windows / Mac / Linux] Yes, DeSmuME takes advantage of multiple CPUs/cores. However, multiple CPU support varies with each port, so some ports may have different performance than others. Also note that, in general, DeSmuME benefits more from few fast CPUs than from many slow CPUs. For example, a dual-core 3.4GHz CPU will run DeSmuME much faster than an 8-core 1.7GHz CPU.

Can I force DeSmuME to "detect" an arbitrary number of CPUs?

[Windows / Mac / Linux] Yes, you can configure DeSmuME's CPU core detection. By default, DeSmuME automatically detects the number of CPU cores in your system, but it might be useful to force DeSmuME to detect one core and run it like you were using a single-core CPU system. It might also be useful to force DeSmuME to detect more cores than what your CPU actually has. In any case, there is a limit to how many CPU cores any given feature will take advantage of. For example, SoftRasterizer has a maximum limit of 32 threads it can use for processing 3D graphics.

  • Windows: Use the command line argument, "--num-cores=n", where n is the number of cores to detect.
  • Mac: Choose View > Show 3D Rendering Settings. Then in the 3D Rendering Settings panel, under Rendering Threads, select the number of threads you want to use.
  • Linux: Use the command line argument, "--num-cores=n", where n is the number of cores to detect.

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

[Windows] The first is your actual FPS which is how fast the emulator is running on your system. If it is less than 60 then you need speed hacks or 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 there's 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.

How can I make the DS screens better fill my widescreen monitor?

[Windows / Mac / Linux] By default, the two DS screens are arranged in a vertical layout, which is ill-suited for filling a widescreen monitor. However, DeSmuME allows you to arrange the DS screens in a horizontal layout. Alternatively, you can choose to display a single DS screen on your monitor.

Does DeSmuME support full-screen mode?

[Windows / Mac] Yes, you can display the DS screens in full-screen mode.

  • Windows: Click the DeSmuME window and press Alt-Enter.
  • Mac: Click the display window that you want to make full screen. Then choose View > Enter Full Screen.

Is it possible to display each DS screen in separate windows?

[Mac] Yes, you can display each DS screen in separate windows. In Mac DeSmuME, choose File > New Display Window so that you have two display windows. Then for the first window, choose View > Display Mode > Main, and for the second window, choose View > Display Mode > Touch.

Is it possible to display each DS screen at different sizes within a single window?

No, you cannot display each DS screen at different sizes within a single window. Do note that there is a very strong chance that this particular feature will never be implemented in any future version of DeSmuME.

How do I customize the appearance of the emulated DS video output?

[Windows / Mac / Linux] Each port supports most or all of the video output settings, but have different user interfaces for changing these settings.

  • Windows: To change the video filter, choose View > Magnification Filters. To toggle bilinear filtering, choose Config > Display Method.
  • Mac: To show all video settings, choose View > Show Display Video Settings. You can then change any video setting from the Display Video Settings panel.
  • Linux: To change the video filter, choose Config > Primary Interpolation. To change the final video output, choose Config > Secondary Interpolation.

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.

Can DeSmuME emulate the DS microphone?

[Windows / Mac / Linux] Yes, DeSmuME can emulate the DS microphone. However, microphone emulation may not be fully supported in all DeSmuME versions.

  • Windows: Has full microphone support. If you want to use a physical microphone, you must configure it through your Windows Control Panel and set it up as the default audio input device. Be sure to set your mic gain to an appropriate level to avoid too much clipping.
  • Mac: Does not support using a physical microphone. Instead, you are limited to using one of the simulated microphone commands.
  • Linux: Requires libasound in order to use a physical microphone.

If you are using a simulated microphone, you will have to experiment with the microphone hotkey timing. Each press of the hotkey simulates audio running through the DS microphone. Some games like quick tapping, others like longer presses. Learning the hotkey timings for your particular game is not an exact science, so you may need to experiment for a while until you finally get it to work.

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

How do I "Close the DS" like in Zelda when you have to draw the crest and then mash it into the map?

[Windows / Mac / Linux] This can be done by using the 'Lid' control. By default, the Lid control is Backspace on your keyboard.

How do I use the stylus (pen) to 'touch' the screen?

[Windows / Mac / Linux] By default, your left mouse button is configured to control the DS stylus. Simply left-click the DS touch screen to emulate touching the DS stylus at that touch screen location.

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 OS X. DSi is not supported.

Will DeSmuME ever support Nintendo 3DS/2DS emulation in the future?

Most likely, DeSmuME will not support the emulation of the Nintendo 3DS or Nintendo 2DS in the future. The hardware of both a 3DS and a 2DS are very different from an NDS, so emulating a 3DS/2DS would require making a whole new emulator.

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 is an acronym for "Tool-Assisted Speedrun." You can use DeSmuME to record your gameplay in TAS format. See http://tasvideos.org for more details on TAS.

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?

[Windows] It is present in the dev build.

How do I enable the GDB stub?

[Windows] 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

Language:

  • 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:

####configuration####
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:

http://tasvideos.org/forum/viewtopic.php?t=7715

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
yopyop
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?

http://nocash.emubase.de/gbatek.htm

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

Can DeSmuME be used on a PowerPC Mac?

You can use DeSmuME on a PowerPC G4 or G5, but it is officially unsupported due to certain critical bugs with the binary. In practice, running DeSmuME on a G4 will result in very poor performance. Even a Power Mac G5 2.5GHz Quad will struggle to run any games that are more complicated than Phoenix Wright: Ace Attorney.

Are DeSmuME files created on my Mac compatible with DeSmuME files created on Windows?

Yes, all files created with DeSmuME files are cross-compatible between Mac and Windows.

Where are DeSmuME's file directories located in OS X?

Use the menu option "File > Reveal Game Data Folder in Finder" if you want to access DeSmuME's file directories. Currently, Mac DeSmuME stores all of its files in "~/Library/Application Support/DeSmuME", but this location may change in future versions.

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