Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MelonDS Switch: Difference between revisions

From GameBrew
(Created page with "{{#seo: |title=Switch Homebrew Emulators (Handheld) - GameBrew |title_mode=append |image=melondsswitch.png |image_alt=MelonDS }} {{Infobox Switch Homebrews |title=MelonDS |image=melondsswitch.png |description=DS emulator, sorta |author=RSDuck |lastupdated=2021/07/17 |type=Handheld |version=release6fix1 |license=GPL-3.0 |download=https://dlhb.gamebrew.org/switchhomebrews/melondsswitch.7z |website=https://gbatemp.net/threads/melonds-for-switch-continuation.570021/ |source=...")
 
m (Text replacement - " the the " to " the ")
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{#seo:
|title=Switch Homebrew Emulators (Handheld) - GameBrew
|title_mode=append
|image=melondsswitch.png
|image_alt=MelonDS
}}
{{Infobox Switch Homebrews
{{Infobox Switch Homebrews
|title=MelonDS
|title=MelonDS
|image=melondsswitch.png
|image=melondsnx.png
|description=DS emulator, sorta
|description=DS emulator, sorta.
|author=RSDuck
|author=Hydr8gon, RSDuck
|lastupdated=2021/07/17
|lastupdated=2021/07/17
|type=Handheld
|type=Handheld
|version=release6fix1
|version=release6fix1
|license=GPL-3.0
|license=GPL-3.0
|download=https://dlhb.gamebrew.org/switchhomebrews/melondsswitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/melondsnx.7z
|website=https://gbatemp.net/threads/melonds-for-switch-continuation.570021/
|website=https://gbatemp.net/threads/melonds-for-switch-continuation.570021/
|source=https://github.com/RSDuck/melonDS
|source=https://github.com/RSDuck/melonDS
|donation=
}}
}}
MelonDS is a Nintendo DS emulator primarily developed by Arisotura, who is also known as @StapleButter. The emulator was initially ported to the Switch by @Hydr8gon. The current port and various optimizations have been implemented by RSDuck. The emulator's performance is highly dependent on a game's utilization of the DS's 3D hardware. Many games can achieve full speed without overclocking.
melonDS is a Nintendo DS emulator mainly developed by Arisotura (StapleButter). It was first ported to the Switch by Hydr8gon.  
 
The goal is to do things right and fast, akin to [[BlargSnes 3DS|blargSNES]] (but hopefully better).
 
This was submitted to the GBAtemp Switch Homebrew Bounty 2018 (Emulators, 2nd place).
 
==Installation==
===How to install===
*Download the [https://github.com/RSDuck/melonDS/releases latest release].
*Extract the release onto your SD card, so that there's /switch/melonds/ folder melonds.nro and some other files inside it.
*NAND, BIOS and firmware files go into /switch/melonds/ as well.
*ROM files can be placed anywhere on the SD card.
 
For DS mode the following files are necessary (in parantheses is how they should be named for melonDS to recognises them):
*ARM9 BIOS (bios9.bin)
*ARM7 BIOS (bios7.bin)
*DS mode firmware (firmware.bin)
 
For DSi mode the following files are necessary (in parantheses is how they should be named for melonDS to recognises them):
* DSi ARM9 BIOS (biosdsi9.rom)
* DSi ARM7 BIOS (biosdsi7.rom)
* DSi mode firmware (firmware_dsi.bin)
* NAND dump (nand.bin)
 
For information on how to dump those files from your own DS or DSi [http://melonds.kuribo64.net/faq.php see here].
 
===Notes===
*Atmosphere title replacement to launch the hbmenu is the only supported method of running melonDS. To do so, press R while starting any game from the Switch's main menu to enter the hbmenu. Don't use the album.
*If you are using an older versions of this port, using the /melonds directory located at the SD card root is still possible.
*Since Release 5 the JIT recompiler isn't enabled by default, so make sure to enable (under Emulation Settings), since the interpreter is pretty slow.
 
==User guide==
===FAQ===
'''Q. How can I pause the emulation?'''
 
To pause the emulation, simultaneously press the ZL and ZR buttons.
 
'''Q. How can I fast forward?'''
 
To fast forward, press either the ZL or ZR button depending on which button is set to do a touchscreen click.
 
This, however, is not applicable in gyro mode because it is utilized for recalibration.
 
'''Q. What are the functions of Block Size, Branch Optimisations, Literal Optimisations, and Fast Memory settings?'''
 
It is recommended to keep these settings enabled or set to maximum at all times since they enhance performance. In case of issues with the JIT recompiler, modifying these settings can aid in identifying the problem faster.
 
Only adjust them when unexpected issues arise, and specify which setting, if any, affects the bug reports.
 
'''Q. Which settings should I use if I want to play with a Flip Grip?'''
 
To play with a Flip Grip, use the Global Rotation option, which rotates the entire GUI.
 
Shoutout to @uzimakiuchiha for providing me with a Flip Grip.
 
'''Q. What should I do if I want to play a game that requires holding the DS sideways (like Dr. Kawashima's Brain Training)?'''
 
To play a game that necessitates holding the DS sideways (like Dr. Kawashima's Brain Training), use the Screen rotation in the Display settings once the game has started.
 
It will also rotate the buttons, giving the impression that you are holding the DS that way.
 
'''Q. What is the shortcut to switch between focused screens quickly?'''
 
To switch between focused screens quickly, press down the right stick.
 
There is also an automatic mode available in the Display settings where the main screen is identified.
 
'''Q. How can I display only one screen at a time (even if it means stretching the screen to fit the whole display)?'''
 
Go to Display settings and set the Top aspect ratio and Bottom aspect ratio to 16:9, then select either Top only or Bottom only for Screen sizing.
 
'''Q. How do I use gyro control?'''
 
Enable gyro control in the Input settings, and press either ZL or ZR (depending on Left handed mode) to calibrate rotation.
 
As it utilizes gyroscopes and not IR like the Wiimote, it requires recentering if you change how you hold the Switch/Joy-Con.
 
'''Q. How can I access the DS menu to change system language?'''
 
Press Boot Firmware or disable Direct boot in the Emulation settings.
 
'''Q. Why won't a DSiWare dumped as a NDS file start?'''
 
DSiWare needs to be installed on the NAND to run properly.
 
If started from the file browser, it will load as a cartridge and fail to start.
 
'''Q. How can I provide microphone input (e.g., for games that require blowing into the microphone)?'''


==How to use==
To simulate blowing into the microphone, press down on the left stick.  
melonDS requires BIOS/firmware copies from a DS. Files required:


* bios7.bin, 16KB: ARM7 BIOS
Currently, proper microphone input via an external microphone is not supported.
* bios9.bin, 4KB: ARM9 BIOS
* firmware.bin, 128/256/512KB: firmware
Firmware boot requires a firmware dump from an original DS or DS Lite. DS firmwares dumped from a DSi or 3DS aren't bootable and only contain configuration data, thus they are only suitable when booting games directly.


===Possible firmware sizes===
==Screenshots==
* 128KB: DSi/3DS DS-mode firmware (reduced size due to lacking bootcode)
https://dlhb.gamebrew.org/switchhomebrews/melondsnx2.png
* 256KB: regular DS firmware
https://dlhb.gamebrew.org/switchhomebrews/melondsnx3.png
* 512KB: iQue DS firmware
DS BIOS dumps from a DSi or 3DS can be used with no compatibility issues. DSi BIOS dumps (in DSi mode) are not compatible. Or maybe they are. I don't know.


As for the rest, the interface should be pretty straightforward. If you have a question, don't hesitate to ask, though!
https://dlhb.gamebrew.org/switchhomebrews/melondsnx4.png
https://dlhb.gamebrew.org/switchhomebrews/melondsnx5.png


==Media==
==Media==
'''How To Fully Play Nintendo DS Games on a Nintendo Switch (A Complete Guide) - ([https://www.youtube.com/watch?v=8GLKnSSdOD0 Lil_Kunall])'''<br>
'''How To Fully Play Nintendo DS Games on a Nintendo Switch (A Complete Guide) ([https://www.youtube.com/watch?v=8GLKnSSdOD0 Lil_Kunall])'''<br>
<youtube>8GLKnSSdOD0</youtube>
<youtube>8GLKnSSdOD0</youtube>


==Screenshots==
==Compatibility==
https://dlhb.gamebrew.org/switchhomebrews/melondsswitch-01.pnga
Tested on FW 11.0.1 on Atmosphere 0.17.1.
https://dlhb.gamebrew.org/switchhomebrews/melondsswitch-02.pnga
https://dlhb.gamebrew.org/switchhomebrews/melondsswitch-03.pnga
https://dlhb.gamebrew.org/switchhomebrews/melondsswitch-04.pnga
 
==TODO LIST==
* DSi emulation
* the impossible quest of pixel-perfect 3D graphics
* improve libui and the emulator UI
* support for rendering screens to separate windows
* emulating some fancy addons
* other non-core shit (debugger, graphics viewers, cheat crapo, etc)
===TODO LIST FOR LATER===
* better wifi
* maybe emulate flashcarts or other fancy hardware
* big-endian compatibility (Wii, etc)
* LCD refresh time (used by some games for blending effects)
* any feature you can eventually ask for that isn't outright stupid


==Changelog==  
==Changelog==  
Line 66: Line 124:


'''Release 6'''
'''Release 6'''
* This release is a big one, because we finally hit fullspeed in most games including 3d ones! This is all thanks to the new 2D and 3D renderers which run on your Switch's GPU (which previously was only used for the GUI and putting the video output onto the screen) instead of CPU.
*This release is a big one, because we finally hit fullspeed in most games including 3d ones! This is all thanks to the new 2D and 3D renderers which run on your Switch's GPU (which previously was only used for the GUI and putting the video output onto the screen) instead of CPU.
* The 3D renderer doesn't use the builtin triangle drawing functionality melonDS's OpenGL renderer does, thus it doesn't have issues like it (https://github.com/Arisotura/melonDS/issues?q=is:open+is:issue+label:OpenGL). Instead it's basically the good old software rasteriser but translated to run on GPUs thus ideally it should have the same pretty amazing compability.
*The 3D renderer doesn't use the builtin triangle drawing functionality melonDS's OpenGL renderer does, thus it doesn't have issues like it (https://github.com/Arisotura/melonDS/issues?q=is:open+is:issue+label:OpenGL). Instead it's basically the good old software rasteriser but translated to run on GPUs thus ideally it should have the same pretty amazing compability.
* Both the new 2D and the new 3D renderer are implemented using deko3D for minimal CPU usage compared to OpenGL, though I want to port both of them back to OpenGL for desktop melonDS. In the future there's the possibility for some enhancements like high resolution rendering with less issues than the OpenGL renderer currently has (I'm sure yet whether Switch can handle this, so don't get your hopes too high on this).
*Both the new 2D and the new 3D renderer are implemented using deko3D for minimal CPU usage compared to OpenGL, though I want to port both of them back to OpenGL for desktop melonDS. In the future there's the possibility for some enhancements like high resolution rendering with less issues than the OpenGL renderer currently has (I'm sure yet whether Switch can handle this, so don't get your hopes too high on this).


'''Release 5, fix 1'''
'''Release 5, fix 1'''
Line 77: Line 135:


'''Release 4'''
'''Release 4'''
* I wanted to make this release already multiple months ago, though always something came into my way, whether it was some feature I wanted to finish or later me loosing seeing it as pointless when a Drastic port will happen sooner or later. Thus a lot of smaller things have been accumulating:
*I wanted to make this release already multiple months ago, though always something came into my way, whether it was some feature I wanted to finish or later me loosing seeing it as pointless when a Drastic port will happen sooner or later. Thus a lot of smaller things have been accumulating:
* Fast memory emulation by mirroring virtual memory so that it has the same layout as on the DS. This also should resolve all previous issues with Literal Optimisations
**Fast memory emulation by mirroring virtual memory so that it has the same layout as on the DS. This also should resolve all previous issues with Literal Optimisations.
* Start at making geometry submission faster
**Start at making geometry submission faster.
* The GUI is now rendered using deko3d instead of OpenGL (using mesa). Deko3d not only has less overhead, but this also reduced the binary size significantly. Special thanks go to fincs and where we're at it also to the the other devkitpro and libnx people like yellows8 and Wintermute!
**The GUI is now rendered using deko3d instead of OpenGL (using mesa). Deko3d not only has less overhead, but this also reduced the binary size significantly. Special thanks go to fincs and where we're at it also to the other devkitpro and libnx people like yellows8 and Wintermute.
* Misc improvements to the GUI (the rom directory isn't hardcoded anymore, a melony color scheme, ...)
**Misc improvements to the GUI (the rom directory isn't hardcoded anymore, a melony color scheme, ...).
* Better screen layout options
**Better screen layout options.
* Alternative ways to give touchscreen inputs, including my (unironically besides using the real touchscreen) favourite mode: motion control. See the FAQ for more info
**Alternative ways to give touchscreen inputs, including my (unironically besides using the real touchscreen) favourite mode: motion control. See the FAQ for more info.
* This isn't really that noteworthy, but in 30 FPS games every second (3D) frame is now skipped automatically
**This isn't really that noteworthy, but in 30 FPS games every second (3D) frame is now skipped automatically.
* A bunch of fixes, optimisations and features I can't remember because I'm too unorganised
**A bunch of fixes, optimisations and features I can't remember because I'm too unorganised.
* As I've already described in the old thread, sooner or later DSi and wifi support will be added to this port (the first was recently merged into master, the latter is thanks to the improved indirect wifi mode now possible on switch as well). Optimizations to make 3D rendering faster are together with a new GUI on my list as well, but one step at at time.
*As I've already described in the old thread, sooner or later DSi and wifi support will be added to this port (the first was recently merged into master, the latter is thanks to the improved indirect wifi mode now possible on switch as well). Optimizations to make 3D rendering faster are together with a new GUI on my list as well, but one step at at time.


==Credits==
==Credits==
* Martin for GBAtek, a good piece of documentation
* Martin for GBAtek, a good piece of documentation.
* Cydrak for the extra 3D GPU research
* Cydrak for the extra 3D GPU research.
* limittox for the icon
* limittox for the icon.
* All of you comrades who have been testing melonDS, reporting issues, suggesting shit, etc
* All of you comrades who have been testing melonDS, reporting issues, suggestion, etc.


== External links ==
== External links ==
* Gbatemp - https://gbatemp.net/threads/melonds-for-switch-continuation.570021/
* GitHub - https://github.com/RSDuck/melonDS
* Github - https://github.com/RSDuck/melonDS
* GBAtemp - https://gbatemp.net/threads/melonds-for-switch-continuation.570021/
* ForTheUsers - https://apps.fortheusers.org/switch/melonDS
 
[[Category:GBAtemp Homebrew Bounty 2018]]

Latest revision as of 23:38, 27 Haziran 2024

MelonDS
Melondsnx.png
General
AuthorHydr8gon, RSDuck
TypeHandheld
Versionrelease6fix1
LicenseGPL-3.0
Last Updated2021/07/17
Links
Download
Website
Source

melonDS is a Nintendo DS emulator mainly developed by Arisotura (StapleButter). It was first ported to the Switch by Hydr8gon.

The goal is to do things right and fast, akin to blargSNES (but hopefully better).

This was submitted to the GBAtemp Switch Homebrew Bounty 2018 (Emulators, 2nd place).

Installation

How to install

  • Download the latest release.
  • Extract the release onto your SD card, so that there's /switch/melonds/ folder melonds.nro and some other files inside it.
  • NAND, BIOS and firmware files go into /switch/melonds/ as well.
  • ROM files can be placed anywhere on the SD card.

For DS mode the following files are necessary (in parantheses is how they should be named for melonDS to recognises them):

  • ARM9 BIOS (bios9.bin)
  • ARM7 BIOS (bios7.bin)
  • DS mode firmware (firmware.bin)

For DSi mode the following files are necessary (in parantheses is how they should be named for melonDS to recognises them):

  • DSi ARM9 BIOS (biosdsi9.rom)
  • DSi ARM7 BIOS (biosdsi7.rom)
  • DSi mode firmware (firmware_dsi.bin)
  • NAND dump (nand.bin)

For information on how to dump those files from your own DS or DSi see here.

Notes

  • Atmosphere title replacement to launch the hbmenu is the only supported method of running melonDS. To do so, press R while starting any game from the Switch's main menu to enter the hbmenu. Don't use the album.
  • If you are using an older versions of this port, using the /melonds directory located at the SD card root is still possible.
  • Since Release 5 the JIT recompiler isn't enabled by default, so make sure to enable (under Emulation Settings), since the interpreter is pretty slow.

User guide

FAQ

Q. How can I pause the emulation?

To pause the emulation, simultaneously press the ZL and ZR buttons.

Q. How can I fast forward?

To fast forward, press either the ZL or ZR button depending on which button is set to do a touchscreen click.

This, however, is not applicable in gyro mode because it is utilized for recalibration.

Q. What are the functions of Block Size, Branch Optimisations, Literal Optimisations, and Fast Memory settings?

It is recommended to keep these settings enabled or set to maximum at all times since they enhance performance. In case of issues with the JIT recompiler, modifying these settings can aid in identifying the problem faster.

Only adjust them when unexpected issues arise, and specify which setting, if any, affects the bug reports.

Q. Which settings should I use if I want to play with a Flip Grip?

To play with a Flip Grip, use the Global Rotation option, which rotates the entire GUI.

Shoutout to @uzimakiuchiha for providing me with a Flip Grip.

Q. What should I do if I want to play a game that requires holding the DS sideways (like Dr. Kawashima's Brain Training)?

To play a game that necessitates holding the DS sideways (like Dr. Kawashima's Brain Training), use the Screen rotation in the Display settings once the game has started.

It will also rotate the buttons, giving the impression that you are holding the DS that way.

Q. What is the shortcut to switch between focused screens quickly?

To switch between focused screens quickly, press down the right stick.

There is also an automatic mode available in the Display settings where the main screen is identified.

Q. How can I display only one screen at a time (even if it means stretching the screen to fit the whole display)?

Go to Display settings and set the Top aspect ratio and Bottom aspect ratio to 16:9, then select either Top only or Bottom only for Screen sizing.

Q. How do I use gyro control?

Enable gyro control in the Input settings, and press either ZL or ZR (depending on Left handed mode) to calibrate rotation.

As it utilizes gyroscopes and not IR like the Wiimote, it requires recentering if you change how you hold the Switch/Joy-Con.

Q. How can I access the DS menu to change system language?

Press Boot Firmware or disable Direct boot in the Emulation settings.

Q. Why won't a DSiWare dumped as a NDS file start?

DSiWare needs to be installed on the NAND to run properly.

If started from the file browser, it will load as a cartridge and fail to start.

Q. How can I provide microphone input (e.g., for games that require blowing into the microphone)?

To simulate blowing into the microphone, press down on the left stick.

Currently, proper microphone input via an external microphone is not supported.

Screenshots

melondsnx2.png melondsnx3.png

melondsnx4.png melondsnx5.png

Media

How To Fully Play Nintendo DS Games on a Nintendo Switch (A Complete Guide) (Lil_Kunall)

Compatibility

Tested on FW 11.0.1 on Atmosphere 0.17.1.

Changelog

Release 6, fix 1

  • Just a few bug fixes (the pendulum on the title screen in Chrono Trigger, several things in Mortal Kombat and a freeze in Pokemon Platinum, likely also in Diamond/Perl).

Release 6

  • This release is a big one, because we finally hit fullspeed in most games including 3d ones! This is all thanks to the new 2D and 3D renderers which run on your Switch's GPU (which previously was only used for the GUI and putting the video output onto the screen) instead of CPU.
  • The 3D renderer doesn't use the builtin triangle drawing functionality melonDS's OpenGL renderer does, thus it doesn't have issues like it (https://github.com/Arisotura/melonDS/issues?q=is:open+is:issue+label:OpenGL). Instead it's basically the good old software rasteriser but translated to run on GPUs thus ideally it should have the same pretty amazing compability.
  • Both the new 2D and the new 3D renderer are implemented using deko3D for minimal CPU usage compared to OpenGL, though I want to port both of them back to OpenGL for desktop melonDS. In the future there's the possibility for some enhancements like high resolution rendering with less issues than the OpenGL renderer currently has (I'm sure yet whether Switch can handle this, so don't get your hopes too high on this).

Release 5, fix 1

  • Bug fixes, also the overclocking option was readded.

Release 5

  • It's been a long while since the last release, but we're finally here! It has a completely new GUI, DSi support and of course a bunch of bug fixes and smaller additions. Since a lot of work went into the GUI there aren't many new optimisations in this release, but this will change for the next one! The controls have been changed, pausing is now done by pressing ZL and ZR at the same time.

Release 4

  • I wanted to make this release already multiple months ago, though always something came into my way, whether it was some feature I wanted to finish or later me loosing seeing it as pointless when a Drastic port will happen sooner or later. Thus a lot of smaller things have been accumulating:
    • Fast memory emulation by mirroring virtual memory so that it has the same layout as on the DS. This also should resolve all previous issues with Literal Optimisations.
    • Start at making geometry submission faster.
    • The GUI is now rendered using deko3d instead of OpenGL (using mesa). Deko3d not only has less overhead, but this also reduced the binary size significantly. Special thanks go to fincs and where we're at it also to the other devkitpro and libnx people like yellows8 and Wintermute.
    • Misc improvements to the GUI (the rom directory isn't hardcoded anymore, a melony color scheme, ...).
    • Better screen layout options.
    • Alternative ways to give touchscreen inputs, including my (unironically besides using the real touchscreen) favourite mode: motion control. See the FAQ for more info.
    • This isn't really that noteworthy, but in 30 FPS games every second (3D) frame is now skipped automatically.
    • A bunch of fixes, optimisations and features I can't remember because I'm too unorganised.
  • As I've already described in the old thread, sooner or later DSi and wifi support will be added to this port (the first was recently merged into master, the latter is thanks to the improved indirect wifi mode now possible on switch as well). Optimizations to make 3D rendering faster are together with a new GUI on my list as well, but one step at at time.

Credits

  • Martin for GBAtek, a good piece of documentation.
  • Cydrak for the extra 3D GPU research.
  • limittox for the icon.
  • All of you comrades who have been testing melonDS, reporting issues, suggestion, etc.

External links

Advertising: