MelonDS Switch

From GameBrew
Revision as of 10:50, 31 March 2023 by HydeWing (talk | contribs)
MelonDS
File:Melondsswitch.png
General
AuthorRSDuck
TypeHandheld
Versionrelease6fix1
LicenseGPL-3.0
Last Updated2021/07/17
Links
Download
Website
Source

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.

How to use

melonDS requires BIOS/firmware copies from a DS. Files required:

  • bios7.bin, 16KB: ARM7 BIOS
  • 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

  • 128KB: DSi/3DS DS-mode firmware (reduced size due to lacking bootcode)
  • 256KB: regular DS firmware
  • 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!

Media

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

Screenshots

melondsswitch-01.pngmelondsswitch-02.png

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

FAQ

Q. How can I pause the emulation?
A. To pause the emulation, simultaneously press the ZL and ZR buttons.

Q. How can I fast forward?
A. 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?
A. 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?
A. 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)?
A. 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?
A. 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)?
A. 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?
A. 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?
A. Press Boot Firmware or disable Direct boot in the Emulation settings.

Q. Why won't a DSiWare dumped as a NDS file start?
A. 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)?
A. To simulate blowing into the microphone, press down on the left stick. Currently, proper microphone input via an external microphone is not supported.

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 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, suggesting shit, etc

External links

Advertising: