DeSmuME Manual for the Windows port
NOTE: This refers to the 0.9.2 revision of desmume, and may or may not accurately reflect the current 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.
The rest of this manual will be spend on explaining all the other options in the 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 and gz. 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 .sav 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 gamefaqs.com. 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 User SPU WAV
This option records the actual audio which you hear from the emulator, including delays/reverbs/retempoes/glitches/etc of the spu resynchronization. Really only useful for diagnostics.
File | Record Movie
This option lets you record the gameplay in TAS format, see http://tasvideos.org 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 | 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 | 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 wan 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 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.
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 | 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 important 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.
- Sync method 'N': created by Nitsuja. Basically stretches the sound. Sounds like No$GBA (without the crackling).
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 | 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 | 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.