WatermelonDS 0.8.0.rc2 is here!!!
This release focuses on smoother high-resolution Vulkan performance, audio and graphics fixes reported by the community, and quality-of-life improvements for libraries, saves, and RetroAchievements.
Vulkan performance improvements
Vulkan has received major performance and stability improvements in this release.
Repeated calculations and redundant reads were reduced, and rendering work is now grouped more efficiently. These improvements benefit different internal resolutions and are not exclusive to a single chipset or device family.
Tested results include:
| Device / SoC | Internal Resolution | Result in tested sections |
|---|---|---|
| T820 | 6x | Close to 60 FPS in the tested sections of Spirit Tracks, Phantom Hourglass, and Dragon Ball Origins. Smoothness was also confirmed in user testing. |
| Snapdragon 865 | 8x | Close to 60 FPS. Spirit Tracks and the reviewed sections of Golden Sun now hold pacing better, with both technical and user validation. |
| Snapdragon 8 Gen 2 | 16x | Close to 60 FPS in the measured Spirit Tracks section, without DRS or frameskip. |
These results depend on the game, scene, device, driver, and configuration. They are not a guarantee of 60 FPS across the full catalog.
Game-specific Vulkan improvements
- Spirit Tracks and Golden Sun: reduced stutter in demanding tested scenes.
- Golden Sun: reduced waiting during startup and battles.
- Pokémon Black 2: smoother performance in heavy tested scenes.
- Pokémon Black 2: fixed a memory growth issue that could eventually close the game.
- Vulkan startup: graphical preparation is reused between sessions.
- Vulkan startup: loading is now shown while graphics are prepared, avoiding long black-screen waits after loading a ROM.
- Custom drivers: reduced stalls that were slowing performance with Turnip on tested devices.
- Graphics fidelity: improved dual-screen composition, fog effects, transparency, and scenes that combine 2D and 3D elements at high resolution.
New options and usability improvements
DRS, Dynamic Internal Resolution
Vulkan now includes optional DRS, or dynamic internal resolution.
When enabled, Vulkan can temporarily lower the internal resolution in demanding scenes and raise it again when there is enough headroom, prioritizing smoother gameplay.
DRS is optional and disabled by default.
Vulkan frameskip
Vulkan now supports frameskip modes:
- Off
- Manual
- Auto
Frameskip allows the emulator to draw fewer frames when needed to help maintain game speed.
If DRS is enabled, frameskip is disabled. You choose one strategy or the other.
New internal resolutions
New internal resolution options are available:
- 12x
- 16x
These are available in both global settings and per-game settings.
On capable devices, this can reach up to 4096×3072 per DS screen.
Visible resolution indicator
- A new optional visible resolution indicator can show the internal resolution currently being used compared to the configured one.
Mute during fast-forward
- A new option allows audio to be muted while using fast-forward.
NDZ ROM support
- WatermelonDS can now open compatible
ndz-studioROM files from the library without extracting them manually. - Older or unsupported variants now show the reason why they cannot be opened.
Custom driver controls
- Custom driver controls now only appear when an Adreno GPU is identified.
- Other GPUs continue using the system Vulkan driver.
Fixed: audio and RetroAchievements
| Source | Fixed issue |
|---|---|
| #142 | Periodic RetroAchievements communication no longer causes the brief hitch that stopped emulation. |
| Sonic Rush and Spirit Tracks | Fixed audio slowdown and pitch changes in the reported scenarios. |
| Pokémon Black 2 | Fixed in Black 2. Audio no longer accumulates delay when increasing internal resolution in the tested case. |
| scrcpy and DualCPY | Fixed crackling and audio cuts while capturing or streaming audio in the reproduced path. |
| Internal testing | Audio returns when increasing volume from zero, without needing to re-enter settings. |
| Internal testing | Large sets such as Black 2 with 419 achievements can now load. Oversized response failures now show an explanation. |
| #201 | The missable achievements filter now recognizes both modern and legacy types when updating game data. |
Fixed: graphics
| Game | What changed |
|---|---|
| Rhythm Paradise / Rhythm Heaven | Restored the initial screen text and fixed hand and texture corruption when reaching the minigame through normal gameplay, without needing to reload a savestate. |
| Golden Sun: Dark Dawn | The sun now blends correctly with the background during the moving scene, without the black box. |
| Sonic Rush | Fixed the reproduced image vibration when accelerating and going through the ramp. |
| Super Princess Peach | Objects and blocks that Vulkan omitted are visible again. |
| Pokémon Black 2 | Fixed the flash when entering and leaving buildings, and fixed the memory growth that could eventually close the game. |
| Spirit Tracks | Selector text and cursor are no longer hidden behind other elements. |
| Vulkan at native resolution | Fixed black screens and crossed content between screens in the identified cases. |
| Startup with custom driver | Fixed the crash attributed to startup with Turnip. |
Additionally, Phantom Hourglass now has Link and Navi shadows restored in Vulkan.
This fixes that part of GitHub #94. The full issue remains open because it contains other cases.
Fixed: library and saves
| Source | BUG |
|---|---|
| GitHub #206 / Rewind | Larger thumbnails now show both full screens and use the available space better when selecting the moment to rewind to. |
| GitHub #128 / Per-game icons | Each game can now use the native icon, the RetroAchievements icon, or inherit the global setting. |
| GitHub #186 / Relaunching | Opening the same already-running ROM from a frontend now resumes gameplay without asking to reload it. |
| GitHub #173 / Box art | Regional box art is prioritized when the full ROM name matches the catalog. |
| GitHub #209 / Save import | Importing your own save through another path no longer empties the file. |
| ROMs with matching names | The selected game opens correctly even if another ROM has the same name and size. |
| Patreon and Discord | Scanning is much faster for libraries with thousands of games. Recoverable information is preserved, and per-game options are saved correctly with save directories based on file path. |
| Patreon | Files compatible with the available memory now load. Files that exceed memory limits show a reason. Removing them no longer leaves ghost entries. |
What to test
Please test and report feedback about:
- Vulkan performance at high internal resolutions
- DRS behavior
- Vulkan frameskip behavior
- 12x and 16x internal resolution options
- Audio stability
- RetroAchievements hitching or synchronization issues
- Large achievement sets
- Phantom Hourglass shadows in Vulkan
- Native-resolution Vulkan behavior
- Custom drivers on Adreno devices
- ROM scanning on large libraries
- Save importing
- 7z loading and removal
- Frontend relaunch behavior
Reporting issues
When reporting issues, please include:
- Device model
- Android version
- GPU if known
- Game title
- Renderer used
- Internal resolution used
- Whether DRS was enabled
- Whether frameskip was enabled
- Whether shaders were enabled
- Whether RetroAchievements was enabled
- Whether a custom driver was used
- Steps to reproduce the issue
- Screenshots or video, if possible
- Logs, if available
Special Thanks
A special thank you to the people who helped test and improve this release:
- Devin on Discord for testing RetroAchievements over long play sessions and helping confirm that the periodic RA hitch was fixed.
- Yumi on Discord for testing audio capture software and helping confirm that captured and streamed audio behaves correctly.
- Jow on Discord for helping improve the audio system. You can find Jow on GitHub here: jojodogm-ctrl
Thank you for taking the time to test, report, and help validate these fixes.
Thank you for testing and supporting WatermelonDS.
