DeSmuME Manual for the Windows port

From DeSmuME
Jump to: navigation, search

NOTE: This refers to the 0.9.5 revision of desmume, and may or may not accurately reflect any other revision.


Quick Getting Started Guide

When you start the emulator for the first time, you probably just want to play a certain game. You can do this by going to 'File' in the menu, and selecting 'Open Rom'. This will open up an explorer window, within which you can browse to the rom (nds file) that you wish to play. Once the game has finished loading (and this should only take a few seconds at most), your game will automatically start running. But if you want, you can also compile from source. See the article Installing DeSmuME from source on Windows for details.

Menu Layout

The rest of this manual will be spend on explaining all the other options in the menu.

File Menu

File | Open ROM

This option is for loading games. A game is typically called a rom file. Just use the explorer window to browse to the file, and click on open. The game should just load and start. The desmume windows port is also able to load some compressed formats, like zip, rar, and 7z. Just as long as there is a valid game (rom) file in the compressed archive ending with an .nds extension, it should load fine.

File | Recent ROM

This menu option contains a list of the roms that you have most recently loaded. You can quickly access a game that way, without having browse to the right directory with the 'Open Rom' option.

File | ROM Info

This option offers some information about the internals of the rom file, like name, code, manufacturer, and size. This should not concern the casual gamer, but may come in handy for developers.

File | Close ROM

Just ends the current game and leaves the emulator more or less how it was when you first launched it.

File | Save State As...

Imagine you have gotten to a certian point in a game, and you need to do something else. The emulator let's you save the current state of the game, so that you can continue the game later at precisely the same point somewhere in the future.

Please note that 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.

File | Load State As...

Once you have saved a game's position, or 'state', you can load it again with this option.

File | Save State

This option works fairly similair to the 'Save As' option, altough it let's you save numbers instead os specifying a chosen name. Also, All the states saved via this option end up with a pre-determined name of 'game (rom) name'.dsx. So if the game is called MyGame, the first savefile will be called MyGame.ds0, the second one MyGame.ds1, etc.

File | Load State

This option let's you load the states that you saved via the 'File | Save State' option

File | Import Backup Memory

Backup Memory is the data the game uses to remember its own state. It is stored on the cart in a normal game. Desmume uses the .dsv extension and file format; other formats which can be imported are .duc and raw .sav, as well as no$gba savefiles (also using the .sav extension). People use pro action replays to capture duc files from their card and post it online without using emulators. These are frequently found on See the faq for details on how to use this function, where it has been documented better.

File | Export Backup Memory

This lets you export the game's state for use in other Nintendo DS Emulators. It will write a 'raw' sav file or a no$gba savefile.

File | Save Screenshot As...

This lets you take a screenshot of the current view of the emulator, and specify it's name to save as a bitmap (.bmp) file.

File | Quick Screenshot

This option also dumps a screencapture, but it has a pre-determined filename and location. The name will be based on the name of the rom and somehow sequentially numbered, and placed in the directory specified in the Path Settings.

File | Record AVI

This option lets you capture what's going on in the emulator, and save it in an avi file.

File | Stop AVI

The 'Record AVI' option continues to record the game, untill you press the 'Stop Avi' option.

File | Record WAV

This option lets you capture the sound played in the emulator, and save it in a wav file. In contrast to the other option, this records, as faithfully as possible, the exact emulated audio output (which is not necessarily what you hear), although it will use the interpolation you have specified in the sound config.

File | Record Movie

This option lets you record the gameplay in TAS format, see for details on TAS (tool-assisted speedruns).

File | Play Movie

This option lets you playback a pre-recorded TAS movie.

File | Stop Movie

This options lets you stop a movie which is playing or recording.

File | Lua Scripting | New Lua Script Window

Launches a lua scripting dashboard. Reference the FAQ for more information on lua in emulators.

File | Lua Scripting | Close All Script Windows

Closes all the lua dashboards.

File | Quit

Choosing this option exits the emulator.

Emulation Menu

Emulation | Pause

This option will pause the emulation, freezing it at the current moment of execution. Selecting it again will resume the execution of the ROM at the exact moment where you paused it.

Emulation | Reset

This option will reset the ROM that is currently loaded to the very start of the ROM, just as if you chose 'File | Open Rom' again.

Emulation | Shut Up

This option turns off all the currently-running sounds, effectively killing streams and decoded music and voiceovers. Sequenced music and sound effects will continue to play, and when you enter a new area in the game or someone else speaks, the sounds will play again. Use this to Shut Up an annoying sound.

Emulation | GBA Slot

This menu option pop-ups a new window, which lets you specirfy what to do with the GBA slot of the Nintendo DS. It has the following choices : NONE, Compact Flash, Rumble Pack, GBA Game, Guitar Grip. Rumble pack allows some games to use vibration. Memory extension... Extends memory, as introduced by the NDS Opera browser. And some DS games can have bonuses, unlockable by GBA cart. For example in Megaman ZX you can fight some Megaman Zero Bosses when correct cartridge is inserted. This is also commonly used by pokemon players for finding some pokemons from older GBA games. There are some GBA slot extensions which are not yet emulated by desmume. Compact Flash is is used for homebrew software emulation, for example that uses DLDI (Dynamically Linked Device Interface). As usual, see the FAQ for more up-to-date information on that.

Emulation | Cheats

This option pulls down a drop-down menu, and presents the options list and search. Be aware though, that cheats are sort of half baked right now. If you are not having luck, wait for some news on an improved cheat system. Also, it is impossible yet to use "commercial" codes, such as Action Replay and Codebreaker, so what you'll have to do is manually search for, and alter the memory positions to your advantage. They are called 'raw' or 'internal' cheats. There's an excellent article in the wiki on Using Cheats in DeSmuMe . In post-0.9.2 development builds, there is also the support for Action Replay cheat codes.

Emulation | Cheats | List

Choosing 'list' will list all the currently known cheats. Please refer to the article Using Cheats in DeSmuMe for further details on how to use the cheat mechanism in desmume.

Emulation | Cheats | Search

Choosing 'search' will let you search for cheats. Please refer to the article Using Cheats in DeSmuMe for further details on how to use the cheat mechanism in desmume.

Emulation | Cheats | Disable

Disables the cheat engine, and all active cheats.

View Menu

View | LCDs layout

This powerful menu controls how the NDS screens will be arranged into the window. Vertical and Horizontal will choose to stack them in the specified manner (vertical being traditional and default and horizontal being wide-screen). One LCD shows just one screen--whichever one is "first" (top) as described below. "Top First" means that the top screen is First and will be displayed on top. "Bottom first" means that the bottom screen is First and will be displayed on top (effectively switching the usual ordering of the screens for this game). "Main screen first" selects the main graphics engine (the one with 3d on it) to consider as first. This option will help you track the action and discard the useless status screen in many games. "Sub screen first" is added for the sake of completeness and you may occasionally find it helpful. Please note that these last two options may not work well in the case of dual screen 3d games, as the screens are always toggling around.

View | Rotation

This option will let you rotate the screen a pre-determined amount of degrees clockwise in order to adjust the angle of the display. Some programs require that you normally turn the DS on its side. You can set it up in that manner using this. The options are 0 (no rotation), 90, 180, and 270.

View | Window size

This option will let you enlarge the windows a pre-determined size. The resize options are: 1x, 1.5x, 2x, 3x, and 4x the default size. You can also adjust the window size by resizing the window as usual in Windows apps.

View | Window size | Always On Top

As featured in media players and IM programs and other emulators, etc., this will prevent other apps from displaying on top of desmume.

View | Screen Separation

This option controls how far the two windows should be apart of each other, in other words: how big the border between them should be. Valid choices are: None (which is the default), narrow border (which is slightly larger), DS (which is about the same amount of room there is on a real Nintendo DS).

View | Screen Separation | White,Gray,Black

Changes the colour of the gap. Savvy users may discover that they can edit this in the ini file to be any color they want.

View | Screen Separation | Editable via border dragging

When enabled, you can pick any gap size you want by dragging the bottom edge (not a corner) of the main window.

View | Render

These options will apply different resizing filters to the emulator screen display.

View | Force Maintain Ratio

Here you can choose, when re-sizing the windows, if you want to maintain the ratio of the windows. Sometimes when the window size is changed it doesn't look correct on the screen. This option forces the window to maintain a correct aspect ratio so it looks correct.

View | Display Frame Counter

Selecting this option will display the emulation frame number. This way you can tell how long you have been playing the game. It is also useful for timestamping emulation events (for example, you can tell if you made it out of a level faster than last time)

View | Display FPS

Selecting this option causes the 'frames-per-second' (or 'fps', for short) to be displayed. It also displays an additional '3D' counter, which tells how frequently the game is updating its 3d graphics. But unlike the fps counter, the 3d counter has nothing to do with the power of your system. If it is low, then the game is running slow on a retail cart, and so it runs slow in an emulator. The last number in parentheses is the arm9 load average, which indicates how hard the emulated CPU is working. This has nothing to do with the power of your system either.

View | Display Input

Selecting this option displays the emulated input that the emulator is recognizing and sending to the game software. Note that if the input displayed is green, that means the emulator recognized it but did not send it to the game (this will happen if you are not running a game yet, for example).

View | Display Graphical Input

Same as Display Input but it is a super-spiffy graphical version.

View | Display Lag Counter

This option displays the lag counter, which records frames where the game does not poll input.

View | Display Microphone

This option is somewhat less exciting than it sounds, but it displays some numbers which may help you diagnose whether your microphone is hooked up correctly.

View | HUD Editing Mode

This option will let you drag around hud elements to pick their position.

Config Menu

Config | Save Type

This option lets you specify the save type of a particular game. The default is 'automatic'. However, this is not fail-safe in all cases, so you might need to manually select one of the other savetypes. You may also need to set this before importing a savefile from some other source, as they do not always contain sufficient information to guess the correct size.

Config | 3D Settings

This option lets you select the method that is used to draw the screen. You can choose between OpenGL (hardware accelerated) or SoftRasterizer (desmume's custom-crafted software renderer). Note that however hardware accelerated it may be, oftentimes SoftRasterizer will run faster.

Furthermore, you have three toggles for SoftRasterizer:

  • Unrealistically High-Precision Color Interpolation - this affects how material colors get handled when polygons are clipped.
  • Enable Edge Marking / Enable Fog - Using these you can prohibit emulation of these hardware features to gain a minor speedup.

Desmume 0.9.4 had an option called "Alternate Flush Mode" which fixed some games with flickering graphics, but this was removed in 0.9.5.

Config | Control Config

This option lets you configure keyboard keys or a joystick. The joystick support is implemented using a DirectInput control interface.

Here are the default control mappings (they may be subject to change):

 Up arrow             - Up
 Left arrow           - Left
 Down arrow           - Down
 Right arrow          - Right
 x                    - A button
 z                    - B button
 s                    - X button
 a                    - Y button
 q                    - Left Trigger
 w                    - Right Trigger
 Enter                - Start button
 Right Shift          - Select button
 Backspace            - Lid fold/unfold

Config | Control Config | Allow Left+Rt/Up+Dn

It is nearly impossible on an actual console to press left and right at the same time. You may accidentally (or on purpose!) be glitching games by sending input they did not expect if you enable this option. Most casual users can emulate the hardware better by leaving this unchecked.

Config | Hotkey Config

This menu option lets you define keys, that can be used to quickly select other options without having to go through the entire menu structure. Some examples are a hotkey for 'pause', or a hotkey for loading a specific savestate.

Here are the default hotkey mappings (they may be subject to change):

 n                    - Frame advance
 Space                - Pause/Unpause 
 p                    - Load current state
 1,2,3,4,5,6,7,8,9,0  - Select current state
 F1-F10               - Load relevant state
 Shift+F1-F10         - Save relevant state

Config | Sound Settings

This option lets you configure the way sound is generated.
The sync/async modes and sync methods give you different output:

  • Dual sync/async: the traditional mode, which generates more sound when the game slows down. Gives clear sound in most cases but can cause streamed sounds to be garbled sometimes.
  • Sync: always generates the same amount of sound, and uses one of the three available methods to compensate for too low or too high framerates. This mode shouldn't make streamed sounds garbled.
    • Sync method 'N': created by Nitsuja. Basically stretches the sound. Sounds like No$GBA (without the crackling).
    • Sync method 'Z': created by Zeromus. Stretches the sound to compensate for slowdowns, and resamples it to compensate for too high framerates. That resampling causes latency and can behave weird sometimes.
    • Sync method 'P': taken from SPU2-X, an SPU2 plugin for PCSX2. Stretches the sound intelligently, giving clear sound in most cases, but also latency.

The sound core setting allows you to choose between the DirectX sound core and the dummy one which produces no sound. The WAV write core has been removed since the new "Record WAV" option made it useless.
The buffer size setting should be kept to its original value. However, if your sound isn't clear even at 60 fps, you can try increasing it.
The interpolation setting allows you to choose between three interpolation methods:

  • None: Fast, but may sound bad.
  • Linear: typical, sounds good
  • Cosine: maybe slower than linear, but doesn't sound much better

Note that the DS has no interpolation method. While sometimes interpolation can make a noticeable improvement, it can also be unnoticeable or distort some sounds.

The ADPCM caching has been removed. It was needed due to a bug in ADPCM decoding which has been fixed. If you are still using 0.9.4, then enabling this can speed up some games while breaking the sound in others.

Config | WIFI Settings

WIFI support is currently under heavy development, but it is not useful yet. Therefore, you may find this option missing, or simply 'greyed-out' for now. Even if you can fiddle with it, it won't do anything useful.

Config | Firmware Settings

This option provides you with the same set of options that a real Nintendo DS firmware does. The most important here is the language, because multi-lingual games will often look at how this option is set.

Config | Emulation Settings

These options let you boot from the extracted BIOS and Firmware of a real Nintendo DS. unless you have extracted/downloaded the firmware or bios from a Nintendo DS that you actually own yourself, these settings have no value for you as desmume does not generally require them to run correctly. Occasionally, however, a game may require them in order to work.

Config | Microphone Settings

You can choose one of four modes. The first will attempt to use the windows default recording device (it is up to you to make your microphone take this role) and feed its input to the emulator. This works, but not perfectly, and it suffers from some unresolved conceptual issues, similar in nature to the emulator audio synchronization problem. The remainder of the options are triggered when using the mic hotkey. You can "Use internal noise sample" which works for many games that want you to blow on the mic; you can "Use rand() whitenoise" which will work for games that require blowing, but which don't work with the internal noise sample (note that this is NONDETERMINISTIC and not tas-safe); and finally you can supply your own microphone sample, which may be noise, or your nintendog's name, or any other thing. It has even been tested with bangai-o spirits level loading. This must be an 8bit mono pcm wav file.

Config | Path Settings

Use this dialog to configure the default paths for roms, savestates, screenshots, etc. Some people like everything in one directory and some people like using 50 directories; you can have it your way.

Config | Frame Skip

The first option, "Limit framerate" engages the throttler and prohibits the emulator from running more than 60fps. With this disabled, a fast computer may run the game doubly or triply fast.

The fixed skip options allow you to specify how many frames should be skipped, constantly. It is generally safe to choose 1 or 2 if you don't mind a slightly choppier game, in order to get a speedup. You may get accustomed to the degraded game performance and not notice. Note, however, that frameskipping can sometimes entirely fail in dual-screen 3d games or games that use capture.

The auto skip options will try engaging the frameskipping when the emulator is running slow, to keep the game from slowing down, but render all the frames when possible to maintain 60fps. This can make a game look sort of like a modern console 3d game which slows down when the action gets intense or too much of the world is visible.

Note that you can use the fast-forward hotkey to engage a special mode which disables the throttler and skips some large number of frames in order to run the game as quickly as possible. This may help you speed through cutscenes or other slow grinding in games and is easier to use than constantly fiddling with these menu options.

Config | Language

This lets you set the language the emulator displays its menus and options in. This won't change everything in the emulator, as due to the way it is coded, some things aren't translateable through this system, and it may very well be the case that your desired translation is incomplete.

Config | Background Pause

Selecting this option will pause the emulation whenever you put desmume in the background, or the window loses focus.

Config | Enable State Rewinding

This is a bit of an experimental option which will suck up a ton of your cpu power taking secret savestates every 0.25 seconds or so. With this enabled, the use of a rewind hotkey will permit you to rewind time a little bit in case you die.

Tools Menu

Tools | Disassembler

This option displays the ARM9 and ARM7 disassembler. Be aware though, that the windows are drawn exactly on top of each other, so that you have to move (drag n drop) the first windows before the second window shows.

Tools | View Memory

This tool displays the ARM7 and ARM9 memory. Be aware though, that the windows are drawn exactly on top of each other, so that you have to move (drag n drop) the first windows before the second window shows.

The "View mode" radio buttons allow you to choose how the memory will be shown:

  • 8-bit : shows the memory as bytes
  • 16-bit : shows the memory as words
  • 32-bit : shows the memory as dwords

The "View address" textbox and button allow you to jump to a different address:

  • Enter an hexadecimal address without 0x prefix, with up to 8 digits
  • Click "Go" to jump to the entered address

The "View dump" buttons allow you to dump the current view:

  • Text dump : dumps the view to a text file, in an human-readable form
  • Raw dump : dumps the memory directly to a binary file which can be read with an hex editor

Note that if you dump memory to a file already containing (a) dump(s), the new dump will be appended to the existing one(s).

The scrollbar... well, you surely know how a scrollbar works.

The viewers additionally allow to edit the memory. For it, click on the value you want to edit, then type the new value. The new value is applied only once you've entirely entered it.

Tools | View Registers

This option lets you view the ARM7 and ARM9 I/O registers.

Tools | View Palette

This option lets you view the palette in detail.

Tools | View Tiles

This option lets you view the tiles in detail.

Tools | View Maps

This option lets you view the maps in detail.

Tools | View OAM

This option lets you view the OAM layer in detail.

Tools | View Matrices

This option lets you view the matrices in detail.

Tools | View Lights

This option lets you view the lights in detail.

Tools | View Sound State

This option displays the sound output.

View | RAM Watch

This option will pop-up a new window, with extensive and advanced features to watch the emulated RAM memory.

View | RAM Search

This option will pop-up a new window, with extensive and advanced features to search through the emulated RAM memory.

Tools | View Layers

This option lets you toggle BG layer visibility one by one. You can also toggle the rendering for an entire GPU engine, which can help your framerate in games where one screen is pointless.

Help Menu

Help | Website

This option directs your browser to the desmume homepage.

Help | Forums

This option directs your browser to the desmume forums.

Help | Submit a bug report

This option directs your browser to the SourceForge bugtracker for desmume.

Help | About

This option displays the authors of the emulator.

Personal tools