Difference between revisions of "DeSmuME"

From Emulation General Wiki
Jump to navigation Jump to search
(Undo revision 13835 by 90.58.115.162 (talk) Minus Reddit this time.)
(Attempt to clean out ridiculous passive-aggressive commentary and repetition without sacrificing actual information.)
(70 intermediate revisions by 30 users not shown)
Line 1: Line 1:
{{Infobox
+
{{Infobox emulator
|image = Desmume.png
+
|logo = Desmume.png
|imagewidth = 100
+
|logowidth = 100
|first = 0.9.11
+
|version = {{DeSmuMEVer}}
|second = Yes
+
|active = Yes
|third = Multi-platform
+
|platform = Multi-platform
|fourth = YopYop156, [http://wiki.desmume.org/index.php?title=DeSmuME:About#DeSmuME_current_team DeSmuME team]
+
|target = [[Nintendo DS emulators|Nintendo DS]]
|fifth = [https://desmume.org/ DeSmuME.org]
+
|developer = YopYop156<br/>[http://wiki.desmume.org/index.php?title=DeSmuME:About#DeSmuME_current_team DeSmuME Team]
|sixth = [https://github.com/TASVideos/desmume GitHub]}}'''DeSmuME''' is a [[Nintendo DS emulator]]. It is the most accurate NDS emulator and is actively developed. It can be run from the command line directly or as a graphical program.
+
|website = [https://desmume.org/ DeSmuME.org]
 +
|source = [https://github.com/TASVideos/desmume GitHub]
 +
}}
 +
'''DeSmuME''' is an open-source [[Nintendo DS emulators|Nintendo DS emulator]]. It is the most accurate Nintendo DS emulator and is actively developed by YopYop156. It can be run from the command line directly or as a graphical program.
  
The regular version now allows for upscaling 3D models. The "DeSmuME X432R" fork's implementation is outdated.
+
The regular version now allows for increasing internal resolution.
  
 
It is also available as a libretro core for [[RetroArch]].
 
It is also available as a libretro core for [[RetroArch]].
  
 
==Download==
 
==Download==
*[https://desmume.org/download/ DeSmuME Dev Builds]
+
*[https://desmume.org/download/ Stable & Nightly releases]
*[http://shikaver01.webcrow.jp/ DeSmuME X432R Builds] (High-resolution rendering)
+
*[https://ci.appveyor.com/project/zeromus/desmume/build/artifacts Latest Dev build]
 +
:''Click “Jobs”, pick a platform, then click Artifacts and download the executable.''
 +
:''For the autobuild, you will need  [https://www.microsoft.com/en-us/download/details.aspx?id=52685  Microsoft Visual C++ Runtime]''
 +
 
 +
==Issues==
 +
DeSmuME uses [[Wikipedia:DirectInput|DirectInput]] if an [[Xbox 360 emulators|Xbox 360]] controller is being used. No support for [[Wikipedia:DirectInput#XInput|XInput]] exists. This will be noticeable if an Xbox 360 controller's LT and RT inputs are mapped to emulate the DS's L and R buttons respectively.
 +
 
 +
Several features aren't supported by DeSmuME and aren't parts of its future as per the emulator's current design philosophy. They include:
 +
*DS Download Play
 +
*DS Local Play (local multiplayer)
 +
*DS Wi-Fi Play (online multiplayer)
 +
*DSi emulation (DSi-enhanced retail, DSi-exclusive retail, DSiWare)
 +
*DS/Wii Connectivity
 +
 
 +
Arisotura (formely StapleButter) was working on some of these features and left the project due to ''creative differences'' directly related to these features to eventually start his own Nintendo DS emulator, [[melonDS]]. A DeSmuME fork with online multiplayer, which includes functional code that made it to official version 0.9.7 before being removed, is available and has been improved to allow for limited dumping of online data prior to the server shutdown in 2014, as well as a version allowing for using online play for a select few games and downloading DLC data from alternative servers with the backed-up data.
 +
 
 +
At some point in 2010, development on these features was permanently discontinued and the developers distanced themselves from the above-mentioned fork. The official team stance on this is as follows, and is as clear as it can get:
 +
 
 +
::''As you may have come to find, Release versions and WIP builds distributed by DeSmuME developers do not have the Wi-Fi menu enabled, while builds provided by dodgy scener sites or the one your best friend in the whole wide world has handed to you on a USB key does.''
 +
::''Officially, DeSmuME DOES NOT support the use of builds with Wi-Fi support.''
 +
::''As such, though it may come as a shock to you, requests for help or information about it are thus NOT likely to obtain a response to your satisfaction.''
 +
::''The developers have no current interest for furthering the development of the EXPERIMENTAL_WIFI, and the current state of the DeSmuME source code might have even completely broken it.''
 +
 
 +
It was also deemed that the Dynamic JIT recompiler was a poor fit for the DeSmuME project and as such a fork called "DeSmuME 0.9.9 JIT" including it was made, and some used to recommend it over the mainline project. Much later, like with the internal resolution feature, a compromise was reached and a slightly different implementation was since included in the main project after 0.9.11.
  
 
==Troubleshooting==
 
==Troubleshooting==
For some reason, when no game is loaded or when the emulation is paused, DeSmuME will continue to utilize the CPU heavily (50-60% utilization), at least for Windows builds when viewing it in [[Wikipedia:Task Manager (Windows)|Task Manager]].{{cite}} The reason for this is unknown.{{cite}}
 
 
 
If the game is slow:
 
If the game is slow:
 
*Enable the '''dynamic recompiler''' in '''Emulation Settings'''.
 
*Enable the '''dynamic recompiler''' in '''Emulation Settings'''.
 
*If it's still slow, you must be running on a toaster. It can't be helped. But try tinkering with things for the fastest settings you can find.
 
*If it's still slow, you must be running on a toaster. It can't be helped. But try tinkering with things for the fastest settings you can find.
 
*Use frameskip as the absolute last resort.
 
*Use frameskip as the absolute last resort.
*If you have an Nvidia card and the OpenGL Display Method (useful for its filter) is stuttering despite reporting good framerate, open the Nvidia Control Panel and turn off Threaded Optimization for this program. What's happening is sequential OpenGL code is being put on different processors running at different speeds, forcing them to wait for each other repeatedly.
+
*If your graphics card was designed by Nvidia and the OpenGL Display Method (useful for its filter) is stuttering despite reporting good framerate, open the Nvidia Control Panel and turn off Threaded Optimization for this program. What's happening is sequential OpenGL code is being put on different processors running at different speeds, forcing them to wait for each other repeatedly.
 
If the sound is distorted.
 
If the sound is distorted.
 
*'''Synchronous''' mode is far less buggy. '''Method Z''' seems to work the best in most cases.
 
*'''Synchronous''' mode is far less buggy. '''Method Z''' seems to work the best in most cases.
Line 33: Line 57:
 
==Graphical Enhancement==
 
==Graphical Enhancement==
 
*In 3D games, you can use '''DeSmuME X432R''' as linked below or any recent official build to increase the internal resolution. It can be surprising how detailed DS textures actually are despite the tiny resolution they were made to be played at. This disables the Magnification Filter option, so if you want to use those post-processing effects for 2D games, you have to set it back to native resolution.
 
*In 3D games, you can use '''DeSmuME X432R''' as linked below or any recent official build to increase the internal resolution. It can be surprising how detailed DS textures actually are despite the tiny resolution they were made to be played at. This disables the Magnification Filter option, so if you want to use those post-processing effects for 2D games, you have to set it back to native resolution.
*The OpenGL 3.2 renderer option in 3D Settings supports '''Multisampling Anti-Aliasing (MSAA)'''. Turning it on helps the edges of ultra low-res DS polygons and lines smooth out, appear to wobble less during movement, and retain their shape better when viewed from distance. Unlike post-processing effects that modify the still frame after completion and essentially try to guess at the shapes they are smoothing, this effect knows the actual shapes of the polygons themselves.
+
*The OpenGL 3.2 renderer option in 3D Settings supports '''Multisampling Anti-Aliasing (MSAA)'''. Turning it on helps the edges of ultra low-res DS polygons and lines smooth out appear to wobble less during movement, and retain their shape better when viewed from distance. Unlike post-processing effects that modify the still frame after completion and essentially try to guess at the shapes they are smoothing, this effect knows the actual shapes of the polygons themselves.
 
**Versions before r5032 had this option for a long time, but it was only put in the GUI at r5032. To turn it on in older versions you needed to change a value from false to true in the source code and recompile it.
 
**Versions before r5032 had this option for a long time, but it was only put in the GUI at r5032. To turn it on in older versions you needed to change a value from false to true in the source code and recompile it.
 
*Another thing you can do is filter it. Make sure '''OpenGL''' and '''Filter''' are checked under '''Display Method'''.
 
*Another thing you can do is filter it. Make sure '''OpenGL''' and '''Filter''' are checked under '''Display Method'''.
 
*Finally, there are a variety of post-processing shaders that can be selected under '''Magnification Filter'''. Whether that is simple Nearest 2x or some pixel art scaling filter like HQx or xBRZ is up to you. No post-processing smoothing is perfect, but if you want to use one the xBRZ options are generally the most high-end among smoothing filters present.
 
*Finally, there are a variety of post-processing shaders that can be selected under '''Magnification Filter'''. Whether that is simple Nearest 2x or some pixel art scaling filter like HQx or xBRZ is up to you. No post-processing smoothing is perfect, but if you want to use one the xBRZ options are generally the most high-end among smoothing filters present.
*OS X version of DeSmuME also has support for multi-pass post-processing shaders and filters which Windows version currently doesn't have.
+
*macOS version of DeSmuME also has support for multi-pass post-processing shaders and filters which Windows version currently doesn't have.
 
*Leaving it native and aligning it to a CRT (Set to a 384 high resolution) is also an option, if you feel like going through the effort.
 
*Leaving it native and aligning it to a CRT (Set to a 384 high resolution) is also an option, if you feel like going through the effort.
 
*Recent DeSmuME revisions now add support for texture filtering, greatly reducing pixelation albeit at the cost of blurrier visuals. Some may find this rather jarring or too N64-esque, so it's a matter of individual preference as there's an option to turn it on or off.  
 
*Recent DeSmuME revisions now add support for texture filtering, greatly reducing pixelation albeit at the cost of blurrier visuals. Some may find this rather jarring or too N64-esque, so it's a matter of individual preference as there's an option to turn it on or off.  
  
 
===Internal Resolution and DeSmuME X432R===
 
===Internal Resolution and DeSmuME X432R===
'''Note: This is outdated. Official dev builds now have the option to render at a higher resolution as well, and filter textures to boot.'''
+
====X432R Fork====
 +
Mainline DeSmuME didn't offer any options for higher than native internal resolutions at first. DeSmuME X432R is a fork with the option to increase internal resolution. Be warned that this option is very system-intensive. There have been reports of people who can run [[Dolphin]] and [[PCSX2]] at a perfect pace but can't run this at full speed using increased internal resolution, however newer versions are much faster.
  
Mainline DeSmuME does not offer any options for higher internal resolution than native. However, DeSmuME X432R is DeSmuME fork with the option to increase internal resolution. Be warned that this option is very system-intensive. There have been reports of people who can run Dolphin and PCSX2 at a perfect pace but can't run this at full speed using increased internal resolution, however newest versions are much faster.
+
While generally more accurate, the SoftRasterizer is massively CPU-intensive in this mode, whereas the OpenGL renderer shares the load with your GPU. This can be considered a '''speedup''' option, but it also boasts an MSAA option unavailable to SoftRasterizer.
  
While generally more accurate, the SoftRasterizer is massively CPU-intensive in this mode, whereas the OpenGL renderer shares the load with your GPU. This can be considered a speedup option, but it also boasts an MSAA option unavailable to SoftRasterizer.
+
This fork also has some options for configuring sub-screens. This fork is no longer active, and its last version is dated 19-04-2015.
  
 
*http://shikaver01.webcrow.jp
 
*http://shikaver01.webcrow.jp
Line 52: Line 77:
 
*http://www.geocities.jp/gponys/desmume_aa.html
 
*http://www.geocities.jp/gponys/desmume_aa.html
  
The latest development version of RetroArch DeSmuME core also has an option to increase internal resolution which can be set using '''desmume_internal_resolution''' in Core Options. This option was added in [https://github.com/libretro/desmume/commit/5e430dfbc22f9d54c77f291304a38352ee1e5a63 August 8, 2015 commit]. This is massively CPU-intensive because only SoftRasterizer exists in RetroArch core.
+
====Official Implementation====
 +
After the increased internal resolutions were implemented in the X432 fork, as well as in [[DraStic]] and even the barebones official Nintendo Virtual Console DS emulator on Wii U, the mainline DeSmuME project developers decided to reconsider and include their own implementation for higher internal resolution.
  
==Controversy==
+
Official dev builds now have the option to render at a higher resolution as well, and filter textures to boot. Overall, it's more hardware intensive than X432R's implementation.
The lead developer has shown contempt for fellow developers and users of the emulator. In short, don't expect certain features be implemented and games affected by these missing features to run correctly, or at all.
 
  
*The lead developer has sabotaged code implemented by other developers for the emulator.<ref>https://sourceforge.net/p/desmume/code/5345/log/?path=/trunk/desmume/src/windows/winpcap.h</ref> As a result, this makes implementing highly requested features harder to implement and debug. Affected developers felt alienated and left the project.<ref>http://forums.desmume.org/viewtopic.php?id=10738</ref>
+
The latest development version of [[RetroArch]] DeSmuME core also has an option to increase internal resolution which can be set using '''desmume_internal_resolution''' in Core Options. This option was added in [https://github.com/libretro/desmume/commit/5e430dfbc22f9d54c77f291304a38352ee1e5a63 August 8, 2015 commit]. This is massively CPU-intensive because only SoftRasterizer exists in RetroArch core.
*There is an unusual amount of disdain providing support for the DS Pokémon games.<ref>https://wiki.desmume.org/index.php?title=Faq#Pokemon_questions</ref>
 
*Unwillingness to implement missing features, such as ''DS Download Play'', ''DS Local Play'', and ''DS Wi-Fi Play''.
 
*No desire to implement DSi features.{{cite}}
 
  
 
==Review==
 
==Review==
DeSmuME is currently the best Nintendo DS emulator out there. It is far better than [[No$|No$GBA]] when it comes to accuracy.
+
DeSmuME is currently the best available [[Nintendo DS emulators|Nintendo DS emulator]] on PCs. It is far better than [[No$|No$GBA]] when it comes to accuracy, though not flawless. However, it's more hardware intensive than any other DS emulator (either No$GBA or emulated DraStic) and many features are not supported.
  
 
==Gallery==
 
==Gallery==
Line 73: Line 95:
  
 
==Guides and Info==
 
==Guides and Info==
[https://wiki.desmume.org/index.php?title=Main_Page DeSmuME Wiki]
+
*[https://wiki.desmume.org/index.php?title=Main_Page DeSmuME Wiki]
  
 
==References==
 
==References==
 
<references/>
 
<references/>
 
[[Category:Emulators]]
 
[[Category:Emulators]]
 +
[[Category:Nintendo DS emulators]]
 +
[[Category:Windows emulation software]]
 
[[Category:Linux emulation software]]
 
[[Category:Linux emulation software]]
[[Category:OS X emulation software]]
+
[[Category:macOS emulation software]]
[[Category:Nintendo DS emulators]]
 

Revision as of 00:29, 22 April 2019

DeSmuME
Desmume.png
Developer(s) YopYop156
DeSmuME Team
Latest version 0.9.13
Active Yes
Platform(s) Multi-platform
Emulates Nintendo DS
Website DeSmuME.org
Source code GitHub

DeSmuME is an open-source Nintendo DS emulator. It is the most accurate Nintendo DS emulator and is actively developed by YopYop156. It can be run from the command line directly or as a graphical program.

The regular version now allows for increasing internal resolution.

It is also available as a libretro core for RetroArch.

Download

Click “Jobs”, pick a platform, then click Artifacts and download the executable.
For the autobuild, you will need Microsoft Visual C++ Runtime

Issues

DeSmuME uses DirectInput if an Xbox 360 controller is being used. No support for XInput exists. This will be noticeable if an Xbox 360 controller's LT and RT inputs are mapped to emulate the DS's L and R buttons respectively.

Several features aren't supported by DeSmuME and aren't parts of its future as per the emulator's current design philosophy. They include:

  • DS Download Play
  • DS Local Play (local multiplayer)
  • DS Wi-Fi Play (online multiplayer)
  • DSi emulation (DSi-enhanced retail, DSi-exclusive retail, DSiWare)
  • DS/Wii Connectivity

Arisotura (formely StapleButter) was working on some of these features and left the project due to creative differences directly related to these features to eventually start his own Nintendo DS emulator, melonDS. A DeSmuME fork with online multiplayer, which includes functional code that made it to official version 0.9.7 before being removed, is available and has been improved to allow for limited dumping of online data prior to the server shutdown in 2014, as well as a version allowing for using online play for a select few games and downloading DLC data from alternative servers with the backed-up data.

At some point in 2010, development on these features was permanently discontinued and the developers distanced themselves from the above-mentioned fork. The official team stance on this is as follows, and is as clear as it can get:

As you may have come to find, Release versions and WIP builds distributed by DeSmuME developers do not have the Wi-Fi menu enabled, while builds provided by dodgy scener sites or the one your best friend in the whole wide world has handed to you on a USB key does.
Officially, DeSmuME DOES NOT support the use of builds with Wi-Fi support.
As such, though it may come as a shock to you, requests for help or information about it are thus NOT likely to obtain a response to your satisfaction.
The developers have no current interest for furthering the development of the EXPERIMENTAL_WIFI, and the current state of the DeSmuME source code might have even completely broken it.

It was also deemed that the Dynamic JIT recompiler was a poor fit for the DeSmuME project and as such a fork called "DeSmuME 0.9.9 JIT" including it was made, and some used to recommend it over the mainline project. Much later, like with the internal resolution feature, a compromise was reached and a slightly different implementation was since included in the main project after 0.9.11.

Troubleshooting

If the game is slow:

  • Enable the dynamic recompiler in Emulation Settings.
  • If it's still slow, you must be running on a toaster. It can't be helped. But try tinkering with things for the fastest settings you can find.
  • Use frameskip as the absolute last resort.
  • If your graphics card was designed by Nvidia and the OpenGL Display Method (useful for its filter) is stuttering despite reporting good framerate, open the Nvidia Control Panel and turn off Threaded Optimization for this program. What's happening is sequential OpenGL code is being put on different processors running at different speeds, forcing them to wait for each other repeatedly.

If the sound is distorted.

  • Synchronous mode is far less buggy. Method Z seems to work the best in most cases.

If the 3D is messed up.

  • Set it to OpenGL 3.2. Old OpenGL had problems with 3D itself, while SoftRasterizer had alignment issues with 2D. But 3.2 seems to fix most of both.
  • SoftRasterizer's texture alignment issues are supposedly fixed on a per game basis with the newer TXT hack. It now seems to be more compatible and showing more effects than GL3.2. Etrian Odyssey and Dragon Quest V seem to work best with it over GL3.2.

Graphical Enhancement

  • In 3D games, you can use DeSmuME X432R as linked below or any recent official build to increase the internal resolution. It can be surprising how detailed DS textures actually are despite the tiny resolution they were made to be played at. This disables the Magnification Filter option, so if you want to use those post-processing effects for 2D games, you have to set it back to native resolution.
  • The OpenGL 3.2 renderer option in 3D Settings supports Multisampling Anti-Aliasing (MSAA). Turning it on helps the edges of ultra low-res DS polygons and lines smooth out appear to wobble less during movement, and retain their shape better when viewed from distance. Unlike post-processing effects that modify the still frame after completion and essentially try to guess at the shapes they are smoothing, this effect knows the actual shapes of the polygons themselves.
    • Versions before r5032 had this option for a long time, but it was only put in the GUI at r5032. To turn it on in older versions you needed to change a value from false to true in the source code and recompile it.
  • Another thing you can do is filter it. Make sure OpenGL and Filter are checked under Display Method.
  • Finally, there are a variety of post-processing shaders that can be selected under Magnification Filter. Whether that is simple Nearest 2x or some pixel art scaling filter like HQx or xBRZ is up to you. No post-processing smoothing is perfect, but if you want to use one the xBRZ options are generally the most high-end among smoothing filters present.
  • macOS version of DeSmuME also has support for multi-pass post-processing shaders and filters which Windows version currently doesn't have.
  • Leaving it native and aligning it to a CRT (Set to a 384 high resolution) is also an option, if you feel like going through the effort.
  • Recent DeSmuME revisions now add support for texture filtering, greatly reducing pixelation albeit at the cost of blurrier visuals. Some may find this rather jarring or too N64-esque, so it's a matter of individual preference as there's an option to turn it on or off.

Internal Resolution and DeSmuME X432R

X432R Fork

Mainline DeSmuME didn't offer any options for higher than native internal resolutions at first. DeSmuME X432R is a fork with the option to increase internal resolution. Be warned that this option is very system-intensive. There have been reports of people who can run Dolphin and PCSX2 at a perfect pace but can't run this at full speed using increased internal resolution, however newer versions are much faster.

While generally more accurate, the SoftRasterizer is massively CPU-intensive in this mode, whereas the OpenGL renderer shares the load with your GPU. This can be considered a speedup option, but it also boasts an MSAA option unavailable to SoftRasterizer.

This fork also has some options for configuring sub-screens. This fork is no longer active, and its last version is dated 19-04-2015.

Official Implementation

After the increased internal resolutions were implemented in the X432 fork, as well as in DraStic and even the barebones official Nintendo Virtual Console DS emulator on Wii U, the mainline DeSmuME project developers decided to reconsider and include their own implementation for higher internal resolution.

Official dev builds now have the option to render at a higher resolution as well, and filter textures to boot. Overall, it's more hardware intensive than X432R's implementation.

The latest development version of RetroArch DeSmuME core also has an option to increase internal resolution which can be set using desmume_internal_resolution in Core Options. This option was added in August 8, 2015 commit. This is massively CPU-intensive because only SoftRasterizer exists in RetroArch core.

Review

DeSmuME is currently the best available Nintendo DS emulator on PCs. It is far better than No$GBA when it comes to accuracy, though not flawless. However, it's more hardware intensive than any other DS emulator (either No$GBA or emulated DraStic) and many features are not supported.

Gallery

Guides and Info

References