Releases: SapphireRhodonite/WatermelonDS
Release list
WatermelonDS 0.7.0 is finally here!
This is a very special release.
After several release candidates under the melonDualDS name, the project is now officially renamed to:
WatermelonDS
This is the final 0.7.0 release and the first public release with the new WatermelonDS identity.
WatermelonDS keeps the same goal as before: providing a powerful Nintendo DS emulator experience on Android, with modern Android features, RetroAchievements support, Vulkan rendering, shader support, and a lot of customization.
This release includes a new name, a refreshed visual identity, a much improved interface, RetroArch shader preset support across renderers, and a new experimental Vulkan feature called FastPath.
What’s New
1. The project is now WatermelonDS
The emulator has now fully moved from the old melonDualDS name to WatermelonDS.
This includes:
- New project identity!!!
- New app name
- New launcher icon
- Updated splash screen
- Updated app visuals
- Updated UI style
This is more than a simple name change. The goal is to give the project its own identity while continuing to build on top of the melonDS Android foundation.
2. New user interface
WatermelonDS 0.7.0 includes a major UI refresh.
The new interface is designed to feel cleaner, more modern, and more consistent across the app.
This includes improvements such as:
- New WatermelonDS visual style
- Updated theme
- New design tokens
- Better visual consistency
- Updated icons and branding
- Improved ROM list presentation
- Better box art usage in the continue shelf
- ROM icons scaled to fill their cards more naturally
- Updated RetroAchievements presentation
- Improved account and score display in settings
The goal is to make WatermelonDS feel more polished and easier to use without losing the advanced options that make the emulator flexible.
3. RetroArch shader presets for all renderers
This is one of the biggest improvements in this release.
WatermelonDS now supports RetroArch shader presets across all renderers.
This means shader preset support is no longer limited to only one rendering path.
You can now use RetroArch-style shader presets with the available renderers, making it easier to customize the final image and get the visual style you prefer.
This is great news for users who like:
- CRT-style filters
- LCD-style shaders
- Pixel smoothing
- Color correction
- Handheld-style presentation
- Custom visual presets
Shader support is an important part of making DS games look better on modern Android screens, especially on high-resolution handhelds and external displays.
4. Experimental Vulkan FastPath
WatermelonDS 0.7.0 introduces a new Vulkan feature called:
FastPath
FastPath is designed to improve performance, especially when using higher internal resolutions.
In some cases, this can help games run much faster at resolutions such as:
- 4x
- 6x
- 8x
This can be especially useful for users who want higher-resolution rendering, better performance on less powerful chips, or improved battery efficiency by reducing rendering overhead.
However, please read this carefully:
FastPath is extremely experimental.
FastPath is still in a very early beta state.
There are many known and unknown bugs, and some games may show visual issues, broken effects, missing elements, or other rendering problems while using it.
If you want the most stable and accurate Nintendo DS experience, I recommend using the normal rendering path for now.
FastPath is available for testing, feedback, and performance experimentation.
FastPath recommendation
Use the normal rendering path if you want:
- The most stable experience
- Better compatibility
- Fewer graphical issues
- Behavior closer to a real Nintendo DS
- The safest option for general gameplay
Try FastPath if you want:
- Better performance
- Higher internal resolution testing
- Lower GPU overhead in some cases
- Better battery efficiency in some situations
- To help test and report rendering issues
FastPath is not meant to fully replace the normal path yet.
Starting from this release, one of my main goals will be to fix bugs in both the normal rendering path and FastPath, with the long-term goal of making them converge into one stable and high-performance solution.
Your feedback will be very important for this.
What I need from testers
Since this release includes major UI changes, shader support improvements, and the new FastPath renderer path, feedback is extremely useful.
Please report issues with as much detail as possible.
Useful feedback includes:
- Games that work better with FastPath
- Games that have bugs with FastPath
- Visual differences between normal Vulkan and FastPath
- Shader preset problems
- UI layout problems
- ROM list problems
- Performance differences
- Battery or thermal behavior
- Device-specific Vulkan issues
- Crashes or freezes
- Screenshots or videos showing the issue
If you are testing FastPath, please mention clearly that FastPath was enabled.
RetroAchievements notes
This release keeps the RetroAchievements improvements from the RC5 cycle, including the stability work around achievements, leaderboards, sessions, and offline provider options.
WatermelonDS continues to support:
- RetroAchievements login
- Achievement unlocks
- Hardcore Mode through the normal online flow
- Leaderboards
- Offline achievement provider selection
- RAOfflineProxy support for casual offline achievements
- Better synchronization information after temporary disconnections
As before, Hardcore Mode is not available while using RAOfflineProxy.
Important Notes
- This is the first final release using the WatermelonDS name.
- The old melonDualDS name is no longer used for new releases.
- FastPath is extremely beta and may have many bugs.
- For the most stable experience, use the normal rendering path.
- RetroArch shader presets are now available across renderers.
- Some shader presets may behave differently depending on renderer and device.
- Vulkan behavior can vary depending on GPU, driver, and Android version.
- Feedback is very welcome, especially for FastPath and shader support.
Next Development Focus
After this release, development will focus heavily on bug fixing.
The main goals are:
- Improve the normal rendering path
- Improve FastPath stability
- Fix FastPath graphical bugs
- Improve shader preset compatibility
- Resolve open GitHub issues
- Continue polishing the new UI
- Improve overall emulator reliability across Android devices
The long-term goal is to make the normal path and FastPath converge into a single stable, fast, and reliable rendering experience.
Every bug report helps.
Reporting Issues
When reporting issues, please include:
- Device model
- Android version
- GPU if known
- Game title
- Renderer used
- Internal resolution
- Whether FastPath was enabled
- Shader preset used, if any
- Whether RetroAchievements was enabled
- Steps to reproduce the issue
- Screenshots or video, if possible
- Logs, if available
For FastPath bugs, please compare the same game with FastPath disabled if possible.
This makes it much easier to identify whether the issue is specific to FastPath or part of the normal rendering path.
Thank You
Thank you to everyone who tested the 0.7.0 release candidates, reported issues, tested RetroAchievements, tried Vulkan builds, and gave feedback during the melonDualDS phase.
This release marks the beginning of the next stage of the project.
WatermelonDS is finally here.
Thank you for testing and supporting WatermelonDS.
melonDualDS 0.7.0 RC5: RetroAchievements Stability Update!
Next release will be WatermelonDS!
This release is focused on RetroAchievements stability, Hardcore achievement reliability, leaderboards, and new offline achievement provider options.
This will also be the last release using the current melonDualDS name.
The next release will introduce a new interface, a new icon, and a new experimental Vulkan feature called FastPath. FastPath is designed to significantly improve performance at high internal resolutions, even up to 8x in some cases.
However, FastPath will be experimental. If you want the most stable and accurate experience, closer to real Nintendo DS behavior, it is recommended to keep FastPath disabled when it becomes available. It will be especially useful for devices with slightly weaker chipsets, or for users who want to get the most performance and battery efficiency possible.
For RC5, the focus is not Vulkan, UI changes, or general emulator fixes. This release is mainly about making RetroAchievements more stable, more reliable, and more flexible.

What’s New
1. RetroAchievements Hardcore stability
This release brings complete stability improvements for:
- RetroAchievements login/session behavior
- Achievement unlocks
- Hardcore achievement tracking
- Leaderboards
- RetroAchievements UI state
- Pending achievement synchronization
This makes melonDualDS RC5 the only melonDualDS release currently approved by the RetroAchievements team for earning achievements in Hardcore Mode.
If you want to earn Hardcore achievements with melonDualDS, this is the recommended version to use.
2. RAOfflineProxy integration
melonDualDS now supports RAOfflineProxy as an offline achievements provider.
RAOfflineProxy can be used to earn casual RetroAchievements while offline and sync them later when you are back online.
RAOfflineProxy website:
Please note:
Hardcore Mode is disabled while using RAOfflineProxy.
This is expected behavior. RAOfflineProxy is intended for offline casual achievement use.
How to Switch to RAOfflineProxy
- Open Settings.
- Open RetroAchievements.
- Select Offline achievements provider.
- Choose RAOfflineProxy.
- Start RAOfflineProxy before launching a game.
- Restart the current game session if it was already running.
Hardcore is disabled while using RAOfflineProxy.
How to Switch Back to melonDualDS Offline
- Open Settings.
- Open RetroAchievements.
- Select Offline achievements provider.
- Choose Built into melonDualDS.
- Restart the current game session.
Existing melonDualDS offline progress and pending submissions are preserved when switching providers.
3. Better Hardcore disconnect recovery UI
This release improves the experience when playing in Hardcore Mode and the device temporarily loses connection.
If you start an online Hardcore session and then disconnect, the UI now shows exactly how much progress has not been synchronized yet.
You can also synchronize directly from that UI, helping avoid losing Hardcore achievements after a temporary connection issue.
This should make Hardcore sessions much safer when using unstable Wi-Fi, mobile hotspots, handheld devices, or any setup where the connection can drop for a short time.
About the Next Release
0.7.0 RC5 is the final release using the current melonDualDS name.
The next release will move to the new identity, including:
- A new name
- A new interface
- A new icon
- A new experimental Vulkan path called FastPath
FastPath is designed to improve performance significantly, especially at high internal resolutions such as 4x, 6x, or even 8x depending on the device and game.
FastPath may also help users with less powerful chipsets, or users who want to improve battery life by reducing GPU overhead.
However, FastPath will be experimental.
If you want the most stable and accurate Nintendo DS experience, it is recommended to keep using the regular rendering path when FastPath becomes available.
Next Development Focus
The next release will also focus on resolving the currently open issues in the repository.
The goal is to continue improving the overall Nintendo DS experience by addressing reported problems, polishing the new interface, and making the emulator more reliable across different Android devices.
Thank you to everyone reporting issues, testing RetroAchievements, and helping improve melonDualDS.
Reporting Issues
When reporting RetroAchievements issues, please include:
- Device model
- Android version
- Game title
- Whether Hardcore Mode was enabled
- Whether RAOfflineProxy was used
- Whether the issue happened online or offline
- Whether the issue involved achievements, leaderboards, login, pending submissions, or synchronization
- Steps to reproduce
- Screenshots or logs, if possible
Thank you for testing and supporting melonDualDS.
melonDualDS v0.7.0.rc4: Final Release Candidate, Vulkan Stability, RetroAchievements Fixes, Custom Adreno Drivers, and DSiWare Improvements
melonDualDS v0.7.0.rc4 is now available.
This is the biggest 0.7.0 release candidate so far.
RC4 focuses on fixing the remaining major Vulkan renderer issues, stabilizing RetroAchievements, improving DSi / DSiWare support, and adding custom Adreno Vulkan driver support through AdrenoTools.
This release fixes the major reported RetroAchievements problems, including offline unlock syncing, Softcore caching, leaderboard tracking, challenge state reliability, pending ledgers, and stale ROM configuration issues.
It also fixes most of the remaining reported Vulkan rendering problems across several games, including Super Mario 64 DS, Etrian Odyssey, Picross 3D, Soma Bringer, Plants vs. Zombies, Mario Kart DS, New Super Mario Bros., Sonic Rush, and Disgaea DS.
If no major regressions are found in this RC, this build will become the final melonDualDS 0.7.0 release.
Main Feature:
-
Custom Adreno Vulkan driver support
- Added support for custom Vulkan drivers on Adreno devices using AdrenoTools / libadrenotools.
- Vulkan users on supported Adreno devices can now install and select alternative Turnip drivers.
- Depending on the device and driver, this may improve Vulkan compatibility, stability, or performance.
- The system Vulkan driver is still available as the default option.
- This feature is intended for Adreno Vulkan users only.
Recommended driver source:
https://github.com/K11MCH1/AdrenoToolsDrivers/releases/
Highlights:
-
Major Vulkan compatibility pass
- Fixed multiple game-specific Vulkan rendering issues.
- Improved high-resolution Vulkan fallback behavior.
- Added more granular Vulkan failure tracking and diagnostics.
-
Major RetroAchievements stability pass
- Fixed the main reported RetroAchievements syncing and unlock reliability problems.
- Improved online/offline behavior, Softcore unlock caching, leaderboard tracking, and challenge state handling.
-
Improved DSi / DSiWare support
- Fixed DSi BIOS boot with JIT enabled.
- Fixed DSiWare
.ndsinstallation failures. - Added ROM list integration and shortcuts for installed DSiWare titles.
-
Improved ROM list, layouts, and UX
- Added hold-to-fast-forward input support.
- Fixed custom layout background orientation after backup/restore.
- Fixed 7z ROM scanner crashes caused by high memory usage.
-
Improved RetroArch / librashader support
- Fixed shader output sizing for presets that require native DS source resolution but display-sized output.
- Improved shader folder synchronization behavior.
Vulkan and Rendering Fixes:
-
Super Mario 64 DS
- Fixed Vulkan dual-screen minigame rendering issues.
- Fixed jumping minigame rendering behavior.
- Improved challenge reliability when used with RetroAchievements.
-
Etrian Odyssey
- Fixed flashing colors.
- Fixed menu and UI rendering problems with Vulkan.
-
Picross 3D
- Fixed slicer visual glitches with Vulkan.
-
Soma Bringer
- Fixed Vulkan display glitches.
-
Plants vs. Zombies
- Fixed sun rendering issues.
-
Mario Kart DS
- Fixed geometry rendering issues.
-
New Super Mario Bros.
- Fixed geometry rendering issues.
-
Sonic Rush
- Fixed Vulkan rendering regressions.
-
Disgaea DS
- Fixed intro text rendering.
-
High-resolution Vulkan rendering
- Improved fallback behavior when high-resolution rendering cannot safely be used.
- Added more detailed Vulkan failure tracking.
- Improved diagnostics for compatibility issues.
-
RetroArch / librashader
- Improved shader output sizing.
- Fixed behavior for presets that need native DS source resolution while still outputting at display size.
RetroAchievements:
This release includes a major RetroAchievements stability pass.
The goal of RC4 is to finally make RetroAchievements reliable across online play, offline Softcore unlocks, pending sync, leaderboards, challenges, savestates, and ROM launch configuration.
- Fixed multiple RetroAchievements unlock reliability issues.
- Improved offline achievement handling.
- Improved savestate reliability with RetroAchievements.
- Improved Softcore achievement caching.
- Improved online/offline sync behavior.
- Added submission offsets for offline unlock replay.
- Added a 14-day expiration policy for newly-created offline ledgers.
- Existing pending ledgers from older builds are left untouched.
- Added clearer UI around pending offline unlocks.
- Added clearer UI around ledger expiration.
- Improved leaderboard tracking indicators.
- Added leaderboard values and timers in-game when available from
rc_client. - Added leaderboard rankings in the in-game achievements menu.
- Added visual feedback for leaderboard and challenge success/failure.
- Added an option to disable RetroAchievements without logging out.
- Refreshed ROM configuration before RetroAchievements launch to avoid stale config behavior.
- Improved challenge startup reliability in supported games.
- Improved behavior when achievements are unlocked while offline and submitted later.
DSi / DSiWare:
- Fixed DSi BIOS boot when JIT is enabled.
- Fixed DSiWare
.ndsinstallation failures. - Improved DSiWare title entry handling.
- Raised/fixed the DSiWare title entry limit so more installed titles can work correctly.
- Added DSiWare titles to the ROM list through the DSiWare filter.
- Added support for launching installed DSiWare directly from ROM list shortcuts.
- Improved DSiWare metadata handling.
- Improved DSiWare title detection and launch behavior.
ROM List, Layouts, and UX:
- Added hold-to-fast-forward input support.
- Fixed custom layout background orientation after backup/restore.
- Simplified layout backup and restore behavior.
- Improved ROM configuration refresh before launch.
- Fixed patched Retro Game Challenge 2 ROM detection.
- Fixed 7z compressed ROM scanning crashes caused by memory pressure.
- Improved stability when scanning large ROM libraries.
- Improved behavior after backup/restore scenarios.
librashader Improvements:
- Improved RetroArch shader folder synchronization.
- Improved librashader output sizing.
- Fixed shader sizing behavior for presets that need native DS source resolution.
- Improved behavior when output needs to match the final display size.
- This should improve compatibility with more
.slangpshader presets.
Closed Issues:
- #126 Syncing issue with Pokémon Ranger
- #121 Import and export layouts
- #119 DSiWare
.ndsfiles fail to install - #118 Add hold-to-fast-forward control key
- #116 Achievements not triggering / no Softcore achievement caching
- #115 Add toggle to disable RetroAchievements without logging out
- #113 Vulkan screen flicker when toggling fast-forward
- #111 DSi BIOS boot issue and sound crackle
- #109 Custom layout background issue in RC3
- #105 Super Mario 64 DS RetroAchievement challenges not consistently starting
- #103 RetroAchievements not syncing
- #101 Vulkan issues on AYN Thor
- #99 Super Mario 64 DS Vulkan dual-screen minigame rendering issue
- #97 Could not find ROM
- #96 Etrian Odyssey menu issue and flashing
- #93 Picross 3D slicer visual glitches with Vulkan
- #92 Soma Bringer Vulkan display glitch
- #89 RetroAchievements not unlocking consistently
- #88
rc_clienterror - #83 Fullscreen / top notch layout issue
- #57 7z compressed games crash during ROM scanning
Final 0.7.0 Candidate:
This RC is intended to be the final release candidate before 0.7.0.
If no major regressions are reported, melonDualDS v0.7.0.rc4 will become the final melonDualDS v0.7.0 release.
Please test Vulkan, RetroAchievements, DSiWare, custom layouts, ROM scanning, shaders, and custom Adreno drivers as much as possible.
Reports are especially useful if they include:
- Device model
- Android version
- GPU
- Vulkan driver used
- Game name
- Renderer used
- Internal resolution
- Steps to reproduce
- Screenshots or videos if possible
Sneak Peek:
After 0.7.0, the next big feature I want to work on for melonDualDS is something very exciting:
A texture extractor and texture replacement system for Nintendo DS games.
The goal is to make it possible to extract textures from NDS games, replace them, and finally allow the creation of custom texture packs for Nintendo DS games inside melonDualDS.
This will open the door for HD texture packs, UI replacements, game-specific visual improvements, and community-made texture projects.
More details will come after the final 0.7.0 release.
Support:
This release took a lot of work, testing, debugging, and user reports.
If you want to support melonDualDS development, early builds, testing, and future features like texture extraction and texture replacement, you can support the project on Patreon.
Thank you so much to everyone testing the RC builds, reporting bugs, sending logs, and helping make Vulkan and RetroAchievements better
melonDualDS v0.7.0.rc3 Hotfix 2: Stability, BIOS, Audio, Controls, and RetroAchievements Fixes
melonDualDS v0.7.0.rc3 Hotfix 2 is now available.
This second RC3 hotfix focuses on stability and user-reported regressions found during the current release candidate testing cycle.
It fixes several issues related to BIOS / firmware booting, custom ROM settings, gamepad navigation, RetroAchievements menu crashes, layout editing, audio routing, external displays, and game launch stability.
This update also adds DLDI support for homebrew compatibility.
New Features:
-
DLDI support for homebrew
- Added an option to enable DLDI / Homebrew SD support.
- This is required by some homebrew software, including ZXDS.
- To use it:
- Open Settings > System.
- Enable DLDI / Homebrew SD.
- Select a DLDI SD folder.
- Choose the DLDI SD image size if needed, or leave it on Auto.
- Launch the homebrew ROM again.
- This should make it possible to run homebrew that requires DLDI SD access.
-
External display mode
- Added a new External display mode setting.
- Mirror lets Android handle the external screen normally.
- MelonDualDS lets melonDualDS use the external screen for top screen, bottom screen, custom layouts, or dual-screen presets.
- To change it:
- Open Settings > Video.
- Change External display mode to Mirror or MelonDualDS.
- Reconnect the external display or relaunch the game if needed.
-
Hybrid Screen layout component
- Added a new Hybrid Screen component to the layout editor.
- This component displays the top and bottom DS screens together, with top above bottom.
- Resizing or moving the component affects both screens as a single unit.
- The Hybrid Screen is not affected by screen swap.
- Related issue: #59
-
Layout editor Position and Size buttons
- Added dedicated Position and Size buttons to the layout editor.
- These make it easier to precisely edit components that are difficult to drag, resize, or double tap.
- To use them:
- Open the layout editor.
- Select a layout component.
- Tap Position to enter X/Y values.
- Tap Size to enter size, width, or height values.
- Tap OK to apply the change.
- Related issue: #98
-
Optional display cutout / notch layout support
- Added an option to let emulator layouts use the notch or camera cutout area.
- To use it:
- Open Settings > System.
- Enable Ignore display cutout in layouts.
- Restart the layout editor or relaunch the emulator.
- Related issue: #83
-
App log file for issue reports
- Added an option to write a debug log to the ROM folder.
- To use it:
- Open Settings > System.
- Enable Write app log to ROM folder.
- Reproduce the issue.
- Share the generated
melonDualLog.logfile.
- This should only be enabled while reproducing an issue.
Fixed:
-
Fixed BIOS / firmware boot crashes
- Fixed cases where booting with custom BIOS / firmware files could crash or return back to the ROM list.
- Fixed cases where entering the NDS / DSi BIOS menu was not possible in RC3.
- Improved BIOS / firmware file handling when files are selected through Android storage providers.
- Improved DSi NAND validation and loading.
- Related issues: #107, #104, #91
-
Fixed game launch crashes after loading
- Improved launch stability after the previous Android Backup hotfix.
- Fixed additional cases where games could still close after loading, even after reinstalling.
- Added safer guards when launch validation or native emulator setup fails.
- Related issue: #104
-
Fixed per-game custom control settings
- Fixed an issue where changing key mappings from ROM settings could show an error saying ROM options could not be read.
- Fixed a regression where ROMs could reload and per-game data could be lost, including favorites and custom ROM display names.
- Improved controller mapping serialization for per-ROM and global input settings.
- Related issue: #106
-
Fixed game list scrolling with gamepads
- Fixed gamepad navigation issues in the ROM list.
- Fixed a landscape mode issue where scrolling to the end of the game list with a gamepad could continue scrolling endlessly.
- Fixed a case where D-pad navigation could stop moving down after reaching the end of the list.
- Related issue: #102
-
Improved alphabet sidebar navigation
- Improved fast navigation through the ROM list using the alphabet sidebar.
- Late-list entries now scroll more consistently even when there are not enough ROMs after the selected letter to fill the screen.
-
Fixed RetroAchievements menu crashes
-
Improved RetroAchievements login and API diagnostics
- Improved error handling for RetroAchievements API failures.
- Login failures now clear stale auth state more safely.
- HTTP errors now provide clearer diagnostic information in logs.
- This should make it easier to diagnose account, network, or API errors when users share
melonDualLog.log.
-
Fixed layout editor usability issues
- Improved access to X/Y position and size adjustment for components that were difficult to double tap.
- Fixed cases where Position / Size dialogs could lose the selected component before applying changes.
- Fixed layout editing cases where controls could not be resized or moved correctly from the new dialogs.
- Fixed validation limits in the Size dialog.
- Fixed Aspect Ratio behavior so selecting it no longer incorrectly clears the current selected screen.
- Hidden Aspect Ratio controls for Hybrid Screen, since Hybrid Screen keeps top and bottom together.
- Related issues: #98, #91
-
Fixed audio routing on affected devices
- Fixed audio routing issues with Bluetooth earbuds and wired headphones on affected Android devices.
- This also helps avoid cases where the emulator could interfere with system-wide audio until reboot.
- Related issue: #86
-
Restored audio latency setting
- Restored the Audio latency option under Settings > Audio.
- The default is now Low.
- Users who experience crackling or instability can manually increase it.
- Related issue: #84
-
Fixed in-game menu access regression
- Fixed cases where the Android back button / gesture could stop opening the emulator menu after launching a game.
- Added an option to disable Android touch gestures over the DS touch screen area.
- To use it:
- Open Settings > System.
- Enable Disable touch gestures on touch screen area.
- Leave it disabled if you prefer using the Android back gesture to open the in-game menu.
- Related issue: #91
Other Changes:
- Updated README package name
- Fixed an incorrect package name reference in the README.
- Related issue: #72
Still Being Validated For RC4:
The following reports are still being investigated and validated for the next RC build:
-
Soma Bringer Vulkan display glitch
- Lower screen flashing and upper screen black during early boot / title sequence.
- Related issue: #92
-
Picross 3D Vulkan slicer rendering glitches
- Visual artifacts when using slicers with the Vulkan renderer.
- Related issue: #93
-
Phantom Hourglass shadow flicker
- Link's shadow flickers in both OpenGL and Vulkan.
- Related issue: #94
-
Specific patched ROM not detected
- Retro Game Challenge 2 Daily Challenge RetroAchievements patch may not appear in the game list and may show "Could not find ROM" when launched externally.
- Related issue: #97
-
Super Mario 64 DS dual-screen Vulkan rendering artifacts
- Flickering and smeared artifacts in minigames that use both screens for 3D visuals.
- Related issue: #99
-
Super Mario 64 DS RetroAchievements challenge start consistency
- Some challenges may not consistently activate after re-entering a stage.
- Related issue: #105
Support & Early Access
Thank you to everyone testing the RC builds and reporting issues.
These reports are helping stabilize melonDualDS before the final 0.7.0 release.
Patreon supporters continue to get priority on feature requests, builds, and help test features before they are promoted to the public release cycle.
melonDS-android v0.7.0.rc3 Hotfix: Android Backup ROM Launch Fix
melonDS-android v0.7.0.rc3 Hotfix is now available.
This hotfix fixes a ROM launch issue caused by Android/Google Backup restoring old app data without restoring the required ROM folder permissions.
On some devices, this could cause games to crash, return to the ROM list, or fail right after the Loading screen.
This version disables Android Auto Backup for the app and adds safer validation around restored ROM folders, cached ROM data, and auto-load savestates.
Important:
If games still fail to start after updating to this hotfix, please uninstall and reinstall the app once.
This version disables Android backup restore, so reinstalling should now correctly clear the stale restored data that caused the issue.
After reinstalling, re-authorize your ROM folder from Settings if needed.
Diagnostics:
-
New System setting: Write app log to ROM folder
- When enabled, the app writes
melonDualLog.loginto the ROM folder. - This log includes app, native, and core logs.
- It is intended to help debug rare launch, renderer, or device-specific issues.
- When enabled, the app writes
-
Safer RetroAchievements diagnostic logs
- RetroAchievements login now includes safer diagnostic logging.
- Logs do not write usernames, passwords, or session tokens.
Fixed:
-
Improved ROM folder permission validation
- If
rom_search_dirsexists but the app no longer has persistent read permission, the restored cache is no longer trusted. - The app now shows a dialog asking the user to re-authorize the ROM folder from Settings.
- This prevents broken restored state from blocking normal ROM launching.
- If
-
Improved auto-load savestate safety
auto_load_state_on_launchnow validates the savestate header before loading.- If the auto-load savestate is invalid or cannot be loaded, the ROM now continues booting normally.
- A warning toast is shown instead of blocking the game launch.
Please keep testing RC3 so we can make the final 0.7.0 release more stable for everyone.
Thank you for supporting the project and helping improve melonDS Android.
melonDS-android v0.7.0.rc3 Vulkan Full Stability, RetroAchievements Fixes & Much More!
melonDS-android v0.7.0.rc3 is now available with major Vulkan stability improvements, high-resolution 3D on both DS screens, per-ROM settings, and a large RetroAchievements bug-fix pass.
Main Focus of this Release:
This RC focuses on stabilizing the custom Vulkan renderer and fixing the RetroAchievements integration.
Vulkan is now the recommended renderer for high internal resolution rendering, especially for games that use 3D on both DS screens. Unlike OpenGL, Vulkan can now render high-resolution 3D correctly on both the top and bottom screens when games switch or share 3D output between them, or in specific games like Golden Sun.
Example:
Top Screen on The Legend of Zelda: Spirit Tracks Intro:
OpenGL Internal Resolution 8x:
Vulkan Internal Resolution 8x:
Bottom Screen on Golden Sun Dark Dawn battle:
OpenGL Internal Resolution 8x:
Vulkan Internal Resolution 8x:
Top Screen in Pokémon HeartGold without video hacks:
OpenGL Internal Resolution 1x:
Vulkan Internal resolution 1x:
Bottom Screen: Pokémon Ranger: Shadows of Almia
OpenGL Internal Resolution 8x:
Vulkan Internal Resolution 8x:
RetroAchievements also received a large bug-fix pass. Achievement unlocks, score submissions, leaderboards, session handling, offline behavior, and achievement list handling should now be much more reliable.
Please test RetroAchievements heavily in this RC:
- Unlock achievements
- Submit leaderboard scores
- Test Softcore behavior
- Test offline and reconnect flows
- Report anything that still behaves incorrectly
New Features:
-
Per-ROM settings:
- Each ROM can now have its own configuration.
- You can customize video, controls, filters, microphone behavior, and other settings per game.
- Internal resolution can now be adjusted per ROM, so you no longer need to constantly change the global configuration when one game works well at high resolution and another one does not.
-
In-game per-ROM settings menu:
- You can quickly change ROM-specific settings while the game is running.
- This makes testing internal resolution, filters, controls, and compatibility options much faster.
-
New ROM list screen:
- Added grid/list views.
- Added favorites.
- Added filters.
- Improved search.
- Added faster access to recently played games.
-
New emulation speed options:
- 1.0x
- 0.75x
- 0.5x
- 0.25x
-
Optional internal configuration backup:
- Added support for saving an internal copy of the configuration as an optional file.
- This can help recover settings, favorites, and customizations.
-
RetroArch shader support for Vulkan:
- Added support for RetroArch
.slangpshaders when using Vulkan.
- Added support for RetroArch
Vulkan Renderer Improvements:
-
Vulkan is now stable enough to be the recommended renderer.
- Vulkan now provides the best visual quality path for this fork.
- It is especially recommended for high internal resolution rendering.
-
High-resolution 3D now works on both DS screens.
- This is one of the most important improvements in RC3.
- Games that render 3D on the top and bottom screens can now benefit from internal resolution scaling in Vulkan.
- This is something OpenGL cannot currently provide in the same way.
-
The accelerated Vulkan pipeline was improved.
- The previous Vulkan Compute backend was removed.
- The old “Simple Pipeline” toggle was removed.
- Vulkan now uses a simpler and more stable accelerated path without exposing unstable backend choices to the user.
-
Better Vulkan frame presentation:
- Improved frame stability.
- Reduced stutter.
- Improved behavior in heavy 3D scenes.
- Improved behavior with high internal resolutions.
- Improved stability when 3D alternates between the top and bottom screens.
-
Major Vulkan visual fixes:
- Fixed many visual bugs related to Vulkan rendering.
- Fixed high internal resolution rendering issues.
- Fixed incorrect top/bottom screen mixing in several cases.
- Fixed flickering and black screen issues.
- Fixed corrupted textures in 3D scenes.
- Fixed 2D artifacts that appeared at certain Vulkan resolutions.
- Fixed visual issues in Pokémon Ranger: Shadows of Almia.
- Fixed many other Vulkan-related visual bugs.
OpenGL Renderer:
-
OpenGL was restored closer to upstream behavior.
- The OpenGL path is now more aligned with the original upstream renderer.
- This improves compatibility and keeps OpenGL useful as a fallback renderer.
-
OpenGL remains a compatibility option.
- Vulkan is recommended for high-resolution rendering and best visual quality.
- OpenGL is still available for devices or games where compatibility is preferred.
-
Legacy OpenGL msha filter support was removed.
- This was done to improve compatibility and keep behavior more consistent.
RetroAchievements:
This RC includes a large RetroAchievements bug-fix pass.
RetroAchievements should now be much more reliable, but I need help testing it across more games and accounts.
Please test:
- Unlocking achievements
- Submitting leaderboard scores
- Softcore mode
- Offline behavior
- Reconnect behavior
- Session expiration
- Games with empty achievement sets
- Username validation
- Achievement list loading
RetroAchievements fixes and improvements:
- Improved RetroAchievements events.
- Improved RetroAchievements notifications.
- Improved session and token expiration handling.
- Fixed multiple leaderboard issues.
- Improved username validation.
- Fixed achievement list behavior when a game set contains no achievements.
- Improved offline Softcore behavior.
- Improved reliability when submitting progress, unlocks, and scores.
Other Improvements:
- Better fast-forward behavior with lower latency and fewer jumps.
- Saving savestates should no longer leave emulation running at reduced FPS after the save finishes.
- More stable audio with fewer crackles and dropouts.
- Better screenshots for savestates, now taking captures only when needed.
- Better controller navigation in the ROM list.
- Better handling of external displays.
- Better screen recording behavior.
- Better layout handling on devices with cutouts or notches.
- Safer configuration writes to reduce the risk of data loss.
- Better recovery when ROM cache or configuration files become corrupted.
Bug Fixes:
- Fixed flickering in several games.
- Fixed black screen issues in several cases.
- Fixed incorrect mixing between top and bottom DS screens.
- Fixed Vulkan visual problems at high internal resolutions.
- Fixed visual artifacts in 2D elements when using Vulkan.
- Fixed corrupted textures in 3D scenes.
- Fixed Pokémon Ranger: Shadows of Almia visual issues.
- Fixed cheats that could not be selected.
- Fixed crashes when launching compressed ROMs if extraction fails.
- Fixed crashes when the real path of a URI cannot be resolved.
- Fixed a microphone-related crash.
- Improved recovery from corrupted ROM cache data.
- Improved recovery from corrupted configuration files.
- Removed the old Vulkan Compute backend.
- Removed the old “Simple Pipeline” toggle.
- Removed old OpenGL msha filter support.
Upstream Changes:
Several upstream changes from @rafaelvcaetano were integrated into this release.
Integrated upstream commits:
496cdc64feff05fa00279eaf245f14d31f7fa2140d9ddfdd73c55f6cacc042551e1d01a4d7183b4cb29ced5526c9e259db11661fd5f7adee001c03b7c93f341d610c47b7d0d8f6c75926b959ad16373c97417b974a97f06504c9fbde7c2055279961fcad7a026940008939cd038b5246e8996211950d2631d2f4066225de68352c9129b70af714ff3bf6a553cb35ae8f5477eec8f5c5a109225c1c980a52268301e656576c069a01da56469b9670e77502dea9e2
Notes:
- Vulkan is now the recommended renderer for the best visual quality and high internal resolution.
- OpenGL is still available as a compatibility renderer.
- Some options depend on the device and will only appear if the hardware supports them.
- RetroArch
.slangpshader support is available through Vulkan. - Per-ROM settings are recommended when testing games with different internal resolution requirements.
Testing Needed:
Please help test RC3 before the final 0.7.0 release.
The most important things to test are:
- Vulkan rendering in 3D games
- High internal resolution on both DS screens
- Games that move or display 3D between the top and bottom screens
- Pokémon Ranger: Shadows of Almia
- RetroAchievements unlocks
- RetroAchievements leaderboard score submissions
- Per-ROM internal resolution settings
- Savesta...
melonDS-android v0.7.0.rc2 Major Vulkan Performance Upgrade and support for Retroarch Shaders Presets!
A major Vulkan performance upgrade, new shader pipeline support, requested features, and broader device compatibility improvements.
New Features:
-
New Simple Vulkan Pipeline Path
Added a new simple Vulkan pipeline path focused on significantly improving performance for the Vulkan renderer profile.To use it:
- select Vulkan as the renderer
- go to Video Settings
- make sure Use simple pipeline is enabled
This mode is much more efficient and should provide a major performance improvement for Vulkan on many devices.
It still has some remaining bugs that are being worked on, and the goal for RC3 is to bring it closer to parity with the more complex compute-based Vulkan path.
-
librashader Support for Vulkan / RetroArch Shader Presets
Added support for librashader on Vulkan.This allows Vulkan to move away from the old
.mshashader format and instead use RetroArch shader presets (.slangp).Recommended setup:
- download and extract slang-shaders
- in settings, set RetroArch shader root to the extracted slang-shaders folder
- make sure that folder contains the full shader directory structure such as:
anamorphicborderhandheld- and the other shader folders
- then use Relative
.slangppath inside the selected shader root to browse to and select the shader preset you want
If you need to create new presets, it is recommended to do so using RetroArch or by editing the preset files manually.
-
Slot-2 Analog Input Support
Added support for Slot-2 analog input for games such as Super Mario 64 DS using the patched ROM workflow described here: PATCHES.mdTo use it:
- patch the ROM according to its region
- map the Slot-2 analog axes in input settings
- select Analog Input as the Slot-2 device in the per-game settings
-
Automatic Save/Load State Management
Added an option to configure automatic save/load state management.Load state behavior remains restricted when RetroAchievements Hardcore Mode is active.
-
Save File Extension Selection
Added support to choose the save file extension format as.savor.srm. -
Duplicate Layout / Save As New
Added the option to duplicate layouts or save them as new while editing a layout. -
Double Tap Layout Position Adjustment Popup
Added support for double tapping a layout component to open a popup that allows adjusting the X/Y position of buttons.
Vulkan Fixes & Compatibility:
-
Fixed crash on Snapdragon 865
Resolved a Vulkan-related crash affecting Snapdragon 865 devices. -
AndroidHardwareBuffer Extensions Made Optional
Vulkan no longer requires AndroidHardwareBuffer extensions unconditionally, improving compatibility across more devices. -
Fallbacks for Timeline Semaphores and Dynamic Indexing
Added Vulkan fallbacks for:- timeline semaphores
- dynamic indexing
This improves compatibility for devices that do not fully support the originally expected Vulkan feature set.
-
Additional Vulkan Performance Improvements
More Vulkan-side fixes and adjustments were also made to improve rendering performance and broaden compatibility.
Upstream Changes @rafaelvcaetano:
- RetroAchievements improvements
- Localization and string updates
- Screenshot pipeline improvements
- Performance and input/device behavior improvements
- ROM launch validation and file handling improvements
Testing Focus:
This release candidate is mainly focused on validating:
- the new simple Vulkan pipeline performance and stability
- comparison between the simple Vulkan path and the compute Vulkan path
- librashader support and
.slangppreset loading on Vulkan - Vulkan compatibility on a wider range of Android devices
- stability after the Snapdragon 865 crash fix
- Slot-2 analog input behavior with patched ROMs
- automatic save/load state behavior
- save format selection between
.savand.srm - layout duplication and save-as-new behavior
- double tap X/Y adjustment popup behavior
If you test this build, reports with:
- device model
- GPU / SoC
- game tested
- whether Vulkan works correctly
- whether performance improved or regressed
- whether the simple Vulkan path works correctly
- whether shader preset loading through
.slangpworks correctly - whether Slot-2 analog input behaves correctly
- whether the new layout tools behave correctly
would be especially helpful.
Known Issues Still Planned for RC3:
While RC2 addresses several Vulkan compatibility issues and adds major requested features, a few reported issues are still being tracked for follow-up in RC3:
-
Vulkan Internal Resolution / Upscaling Issues
There are still reported cases where Vulkan does not upscale correctly, especially affecting the top screen presentation path. -
Custom Layout Background Orientation
In some cases, custom layouts may still show the background image flipped incorrectly. -
RetroAchievements Sync / State Inconsistencies
Some RetroAchievements-related issues still need follow-up, including cases where achievements appear locked after boot and cases where already unlocked achievements can trigger duplicate unlock or desync-related behavior. -
Simple Vulkan Pipeline Remaining Bugs
The new simple Vulkan path already provides a major performance improvement, but some remaining bugs are still being worked on to bring it closer to the compute path in overall correctness and behavior.
RetroAchievements Follow-Up:
After this release candidate, I will open a new discussion thread and start initial follow-up work on some of the currently reported RetroAchievements issues, including:
- login failures that still happen intermittently
- Encore Mode behavior that in some cases appears to stay enabled incorrectly
This will be an initial pass, but it should help organize reports and guide the next fixes.
Support & Early Access
If you want to support development, early testing, and feature work like Vulkan, RetroAchievements improvements, shader support, and requested platform features, please consider joining Patreon.
Thank you to everyone helping test these release candidates and sending detailed reports.
melonDS-android v0.7.0.rc1 Vulkan Release!
Vulkan integration, Release Candidate testing flow, and upstream updates from melonDS.
New Features:
- Vulkan Integration
This release candidate introduces my Vulkan integration work for melonDS Android.
The integration covers both the Android/frontend side in the main project and the renderer/backend side in the subproject.
This includes:- Vulkan wired into the frontend flow
- renderer selection and configuration support
- validation and initialization flow
- JNI bridge integration
- Android presentation path support
- Vulkan renderer/backend integration in the subproject
- core backend pieces required for Vulkan rendering to function
New Workflow:
-
Release Candidate Testing Flow
Starting with 0.7.0.rc1, the project will now use Release Candidates before updating the main release.
This will allow broader public testing, better report organization, and earlier regression detection before changes are promoted to the main release. -
GitHub Discussions Based RC Testing
Testing for each Release Candidate will now be handled through GitHub Discussions.
A dedicated discussion thread will be opened for every RC so reports stay organized and easy to follow.
This will be the main place for feedback, bug reports, compatibility observations, and renderer comparisons. -
3D Renderer Comparison Testing Request
For this RC, the main testing goal is to compare Software, OpenGL, and Vulkan across as many 3D games as possible.
Reports are especially useful for:- visual differences
- missing effects
- broken geometry
- lighting or fog issues
- performance differences
- crashes
- black screens
- games that work correctly in one renderer but not in another
Upstream Changes @rafaelvcaetano
This RC also includes a set of upstream improvements merged into my fork.
- Renderer stability improvements
- Dual screen behavior improvements
- Layout editor fixes and usability work
- Audio related improvements
- RetroAchievements fixes and improvements
- Screenshot handling improvements
Testing Request
If you test this Release Candidate, please report your results in the dedicated GitHub Discussion thread for this RC:
https://github.com/SapphireRhodonite/melonDS-android/discussions
Please include when possible:
- game name
- device model
- Android version
- renderer used
- what looks correct (Image)
- what looks wrong (Image)
- comparison against another renderer
- screenshots or video if available
This RC is especially focused on 3D game testing on Vulkan and on comparing Software/OpenGL vs Vulkan.
Support & Early Access
If you'd like early access to upcoming builds, help shape development priorities, or participate in feature testing and feedback discussions, consider supporting the project on Patreon:
https://patreon.com/SapphireRhodonite
Early builds and work-in-progress features are released there before public GitHub releases, and community feedback directly influences what gets polished and shipped.
Thanks to everyone testing, reporting issues, and contributing.
melonDS-android v0.6.1
New customization features, RetroAchievements improvements, and upstream updates from melonDS.
New Features @SapphireRhodonite
-
Per-ROM Controller Mapping
You can now configure custom physical button mappings per ROM under individual ROM settings.
Perfect for games where you’d prefer a different control scheme. -
hg-engine Compatibility Fix
Added a fix for ROMs using hg-engine (e.g., Pokémon HeartGold Generations v2.0).
This ensures buttons continue working correctly during Pokémon battles.- Available as a per-ROM option: "Use hg-engine fix"
-
RetroAchievements Updates
- Updated rc_runtime to the latest version to match current emulator requirements
- Added support for Encore mode
- General improvements to achievement handling
- Improved unlock state handling for both online and offline modes
-
Package Name Change (MelonDualDS)
The app now uses a different package name, allowing it to be installed alongside @rafaelvcaetano’s version.
This change has been validated with the RetroAchievements team, and:- MelonDualDS is now officially a new standalone emulator with RetroAchievements support
Upstream Changes @rafaelvcaetano
- Updated core to melonDS 1.1
- Disabled audio latency preference
- Set frame presentation deadline for better behavior on low refresh rate displays
- Fixed emulator messages not being properly handled when sent in quick succession
Support & Early Access
If you'd like early access to upcoming builds, help shape development priorities, or participate in feature testing and feedback discussions, consider supporting the project on Patreon:
https://patreon.com/SapphireRhodonite
Early builds and work-in-progress features are released there before public GitHub releases, and community feedback directly influences what gets polished and shipped.
Thanks to everyone testing, reporting issues, and contributing.
melonDS-android v0.6.0
RetroAchievements Offline (Softcore) + Hardcore Reliability
Version 0.6.0 introduces full RetroAchievements offline support for Softcore, plus a much more reliable submission / retry flow for Hardcore unlocks online.
This is implemented entirely client-side and has been aproved by RA Team:
warm-start cache + tamper-evident ledger + smart sync replay.
Feature in this fork (by @SapphireRhodonite):
Offline Achievements: Softcore
You can now unlock achievements while offline in Softcore mode.
Requirement (first-time online)
To use Softcore offline, you must open the game at least once with internet so melonDS can fetch and cache the achievement set + conditions.
After that, you can go offline and achievements will still be evaluated and queued.
What you’ll see in the UI
- If you launch a game without internet, melonDS runs as Softcore Offline (Hardcore is disabled if there’s no internet at start).
- If you have pending Softcore unlocks, the game launch flow can show a prompt asking if you want to sync.
- Achievements that are queued offline are marked “In ledger” in the achievement UI (ROM details + in-game list).
Syncing offline unlocks (Softcore)
You can sync pending Softcore unlocks in two ways:
- Per-game settings → RetroAchievements tab → Sync now
- On game launch, melonDS will show a message if it detects pending sync work
Hardcore: Improved Online Retry Logic
Better online Hardcore retries
Hardcore submission now behaves much better under real-world conditions (temporary drops, flaky networks, transient errors). Unlocks are retried more intelligently instead of failing silently.
Hardcore offline (status)
Hardcore offline-from-start is not enabled yet.
It will be evaluated depending on how stability/testing goes with Softcore offline first and other conditions on the RA Team side.
Exit / crash behavior (Hardcore)
- If you try to exit a game with pending Hardcore unlocks, melonDS can warn you (continue playing or exit anyway and loss them).
- If the app closes unexpectedly with pending Hardcore unlocks, they are discarded on next launch and you’ll get a notification about the loss for that game.
Smart Sync
When syncing, melonDS does this:
- ordered replay (relative timing preserved)
- validates against the current RA set (skips achievements that changed or no longer exist)
Additional Improvements (by @rafaelvcaetano)
- Allow achievement progress to be visualized in the achievements list while emulator is running
- Add availability check to DSiCameraSource
- Fix RetroAchievements not working for 7z compressed ROMs
- Add RetroAchievements multi-set support
- Fix occasional crash when RetroAchievements progress updates are submitted very frequently
Support & Early Access
If you'd like early access to upcoming builds, help shape development priorities, or participate in feature testing and feedback discussions, consider supporting the project on Patreon:
https://patreon.com/SapphireRhodonite
Early builds and work-in-progress features are released there before public GitHub releases, and community feedback directly influences what gets polished and shipped.
Thanks to everyone testing, reporting issues, and contributing.



