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.
Config | 3D Settings
This option lets you select the method that is used to draw the screen. You can choose between OpenGL (an open standard) or SoftRasterizer (a desmume specific method).
Furthermore, you have two checkboxes that you can either enable or disable:
- Unrealistically High-Precision Color Interpolation. Presently only effective for SoftRasterizer.
- Alternate Flush Mode. This fixes some games with flickering graphics. This is apllicable to both the OpenGl and the SoftRasterizer.
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 key 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 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 | 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.
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.
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 qas desmume does not require them to run correctly.
Config | Frame Skip
This option lets you select how many frames should not be displayed, in order to gain speed improvements. The default is 'Auto'. If you have speed problems, you could decide to skip (not display) one or more frames in order to improve the speed. 'Limit Frameskip' let's you limit the frame rate to 60fps maximum. 60fps is essentially the speed that the game plays at on the actual console itself. So by selecting this option, you're limiting the framerate to the actual speed of the actual console.
Config | Language
This lets you set the langguage the emulator displays it's menu's and options in.
Config | Background Pause
Selecting this oiption will pause the emulation whenever you put desmume in the background, or the window loses focus.
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 view the Layers one by one.
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.