|
| 1 | +# Nintendo - DS (melonDS DS) |
| 2 | + |
| 3 | +## Background |
| 4 | + |
| 5 | +A Nintendo DS emulator (with DSi support) by Arisotura and friends, |
| 6 | +ported to libretro by Jesse Talavera. |
| 7 | + |
| 8 | +!!! info "This is the newer version!" |
| 9 | + This version of the melonDS core is based on a newer version of the original emulator, |
| 10 | + and has more features than the older [melonDS core](melonds.md). |
| 11 | + Use this one unless you're not ready to migrate. |
| 12 | + |
| 13 | + |
| 14 | +### Author/License |
| 15 | + |
| 16 | +The melonDS DS core has been authored by |
| 17 | + |
| 18 | +- Jesse Talavera |
| 19 | + |
| 20 | +The melonDS DS core is licensed under |
| 21 | + |
| 22 | +- [GPLv3](https://github.com/JesseTG/melonds-ds/blob/main/LICENSE) |
| 23 | + |
| 24 | +A summary of the licenses behind RetroArch and its cores can be found [here](../development/licenses.md). |
| 25 | + |
| 26 | +## Extensions |
| 27 | + |
| 28 | +Content that can be loaded by the melonDS core has one of the following file extensions: |
| 29 | + |
| 30 | +- .nds |
| 31 | +- .dsi |
| 32 | +- .ids |
| 33 | + |
| 34 | +## Databases |
| 35 | + |
| 36 | +RetroArch database(s) that are associated with the melonDS DS core: |
| 37 | + |
| 38 | +- [Nintendo - Nintendo DS](https://github.com/libretro/libretro-database/blob/master/rdb/Nintendo%20-%20Nintendo%20DS.rdb) |
| 39 | +- [Nintendo - Nintendo DSi](https://github.com/libretro/libretro-database/blob/master/rdb/Nintendo%20-%20Nintendo%20DSi.rdb) |
| 40 | + |
| 41 | +## BIOS |
| 42 | + |
| 43 | +Required or optional firmware files go in the frontend's `system` directory. |
| 44 | + |
| 45 | +| Filename | Description | md5sum | |
| 46 | +|:----------------:|:------------------------------------:|:--------------------------------:| |
| 47 | +| bios7.bin | NDS ARM7 BIOS - Optional | df692a80a5b1bc90728bc3dfc76cd948 | |
| 48 | +| bios9.bin | NDS ARM9 BIOS - Optional | a392174eb3e572fed6447e956bde4b25 | |
| 49 | +| firmware.bin | NDS Firmware - Optional | Varies | |
| 50 | +| dsi_bios7.bin | DSi ARM7 BIOS - Required in DSi mode | | |
| 51 | +| dsi_bios9.bin | DSi ARM9 BIOS - Required in DSi mode | | |
| 52 | +| dsi_firmware.bin | DSi Firmware - Required in DSi mode | Varies | |
| 53 | +| dsi_nand.bin | DSi NAND - Required in DSi mode | Varies | |
| 54 | + |
| 55 | +## Features |
| 56 | + |
| 57 | +Frontend-level settings or features that melonDS DS respects. |
| 58 | + |
| 59 | +| Feature | Supported | |
| 60 | +|-------------------|:---------:| |
| 61 | +| Restart | ✔ | |
| 62 | +| Screenshots | ✔ | |
| 63 | +| Saves | ✔ | |
| 64 | +| States | ✔[^1] | |
| 65 | +| Rewind | ✔[^1] | |
| 66 | +| Netplay | ✔[^2] | |
| 67 | +| Core Options | ✔ | |
| 68 | +| RetroAchievements | ✔ | |
| 69 | +| RetroArch Cheats | ✔ | |
| 70 | +| Native Cheats | ✔ | |
| 71 | +| Controls | ✔ | |
| 72 | +| Remapping | ✔ | |
| 73 | +| Multi-Mouse | ✕ | |
| 74 | +| Rumble | ✔ | |
| 75 | +| Sensors | ✔ | |
| 76 | +| Camera | ✕ | |
| 77 | +| Location | ✕ | |
| 78 | +| Subsystem | ✔ | |
| 79 | +| [Softpatching](../guides/softpatching.md) | ✔ | |
| 80 | +| Disk Control | ✕ | |
| 81 | +| Username | ✔ | |
| 82 | +| Language | ✔ | |
| 83 | +| Crop Overscan | ✕ | |
| 84 | +| LEDs | ✕ | |
| 85 | + |
| 86 | +### Directories |
| 87 | + |
| 88 | +The melonDS DS core's library name is 'melonDS DS' |
| 89 | + |
| 90 | +The melonDS DS core saves/loads to/from these directories. |
| 91 | + |
| 92 | +#### Frontend's Save directory |
| 93 | + |
| 94 | +| File | Description | |
| 95 | +|:--------------------:|:---------------------------:| |
| 96 | +| *.srm | Cartridge battery save | |
| 97 | +| dldi_sd_card.bin | Homebrew SD card image | |
| 98 | +| dldi_sd_card.bin.idx | Homebrew SD card file index | |
| 99 | +| dsi_sd_card.bin | DSi SD card image | |
| 100 | +| dsi_sd_card.bin.idx | DSi SD card file index | |
| 101 | +| *.public.sav | DSiWare public save data | |
| 102 | +| *.private.sav | DSiWare private save data | |
| 103 | +| *.banner.sav | DSiWare icon save data | |
| 104 | + |
| 105 | +#### Frontend's System directory |
| 106 | + |
| 107 | +| File | Description | |
| 108 | +|:--------------------:|:--------------------------------------:| |
| 109 | +| melonDS DS/tmd/*.tmd | DSiWare title ID file | |
| 110 | +| wfcsettings.bin | DS Wi-Fi settings (built-in BIOS only) | |
| 111 | + |
| 112 | +#### Frontend's State directory |
| 113 | + |
| 114 | +| File | Description | |
| 115 | +|:--------:|:-----------:| |
| 116 | +| *.state# | State | |
| 117 | + |
| 118 | +### Geometry and timing |
| 119 | + |
| 120 | +- The melonDS DS core's core provided FPS is 59.898307800293 FPS. |
| 121 | +- The melonDS DS core's core provided sample rate is 32768 Hz. |
| 122 | +- The melonDS DS core's base width depends on the screen layout and configured renderer. |
| 123 | +- The melonDS DS core's base height depends on the screen layout and configured renderer. |
| 124 | +- The melonDS DS core's max width depends on the screen layout and configured renderer. |
| 125 | +- The melonDS DS core's max height depends on the screen layout and configured renderer. |
| 126 | +- The melonDS DS core's core-provided aspect ratio depends on the screen layout and configured renderer. |
| 127 | + |
| 128 | +## Subsystems |
| 129 | + |
| 130 | +melonDS DS uses subsystems to enable inserting GBA ROMs into the emulated Slot-2. |
| 131 | +GBA save data (if any) must be loaded explicitly. |
| 132 | +Subsystems are not used for DSi mode. |
| 133 | + |
| 134 | +| Subsystem | Description | |
| 135 | +|:---------:|--------------------------------------------------------------| |
| 136 | +| gba | NDS ROM in Slot-1, GBA ROM in Slot-2 with optional save data | |
| 137 | +| gbanosav | NDS ROM in Slot-1, GBA ROM in Slot-2 with no GBA save data | |
| 138 | + |
| 139 | +!!! info "Not for playing GBA games." |
| 140 | + melonDS can load Game Boy Advance ROMs and save data for the purpose of Slot-2 connectivity, |
| 141 | + but it cannot actually play GBA games. |
| 142 | + Use a GBA core instead. |
| 143 | + |
| 144 | +Additional BIOS images are not required. |
| 145 | + |
| 146 | +## Wi-Fi |
| 147 | + |
| 148 | +melonDS DS fully supports emulating Nintendo WFC services on all platforms. |
| 149 | +You can choose from one of several preconfigured servers in the core options menu, |
| 150 | +with [Kaeru WFC](https://kaeru.world/projects/wfc) being the default. |
| 151 | + |
| 152 | +If there's another server you'd like to use, you can set its DNS address from within the emulated console's Wi-Fi settings menu. |
| 153 | + |
| 154 | +!!! info "Not related to netplay!" |
| 155 | + Wi-fi emulation is not related to LAN-based netplay. |
| 156 | + |
| 157 | +## LAN Netplay |
| 158 | + |
| 159 | +Coming soon... |
| 160 | + |
| 161 | +## DSi |
| 162 | + |
| 163 | +melonDS DS supports DSi mode, which allows you to play DSi-enhanced games and DSiWare. |
| 164 | +**There is no need to prepare a NAND image externally;** |
| 165 | +when selecting a DSiWare game from RetroArch, |
| 166 | +it (and its previously-exported save data) will be |
| 167 | +temporarily installed on the configured NAND image. |
| 168 | +At the end of the session, |
| 169 | +the save data will be exported to the frontend's save directory |
| 170 | +and the DSiWare will be uninstalled. |
| 171 | + |
| 172 | +## Screen Layouts |
| 173 | + |
| 174 | +melonDS DS supports a variety of screen layouts, including sideways rotation; |
| 175 | +you can configure a particular sequence of available layouts in the core options, |
| 176 | +and cycle through them with the `Next Screen Layout` button. |
| 177 | +Best used with per-game core option overrides. |
| 178 | + |
| 179 | +## Controllers |
| 180 | + |
| 181 | +The melonDS DS core supports the following device type(s) in the controls menu, bolded device types are the default for the specified user(s): |
| 182 | + |
| 183 | +### User 1 device types |
| 184 | + |
| 185 | +- None - Doesn't disable input. There's no reason to switch to this. |
| 186 | +- **Nintendo DS** - Joypad - Stay on this. |
| 187 | + |
| 188 | +Future device types may be added |
| 189 | +to include peripherals that provided additional inputs. |
| 190 | + |
| 191 | +### Device tables |
| 192 | + |
| 193 | +#### Joypad |
| 194 | + |
| 195 | + |
| 196 | + |
| 197 | +| User 1 input descriptors | RetroPad Inputs | |
| 198 | +|--------------------------|---------------------------------------------| |
| 199 | +| B |  | |
| 200 | +| Y |  | |
| 201 | +| Select |  | |
| 202 | +| Start |  | |
| 203 | +| Up |  | |
| 204 | +| Down |  | |
| 205 | +| Left |  | |
| 206 | +| Right |  | |
| 207 | +| A |  | |
| 208 | +| X |  | |
| 209 | +| L |  | |
| 210 | +| R |  | |
| 211 | +| Microphone |  | |
| 212 | +| Next Screen Layout |  | |
| 213 | +| Move Virtual Cursor |  | |
| 214 | +| Close Lid |  | |
| 215 | +| Touch Virtual Cursor |  | |
| 216 | + |
| 217 | +## Migrating from melonDS 2021 |
| 218 | + |
| 219 | +melonDS DS is intended to replace the [legacy melonDS core](melonds.md). |
| 220 | +If you have existing data you'd like to migrate, follow these steps. |
| 221 | + |
| 222 | +### Save Files |
| 223 | + |
| 224 | +The save data format is unchanged between the legacy core and melonDS DS. |
| 225 | +However, the method used to save game data internally has changed. |
| 226 | + |
| 227 | +You'll need to do two things: |
| 228 | + |
| 229 | +1. Go to the RetroArch save directory and rename the "melonDS" folder to "melonDS DS" (if it exists) |
| 230 | +2. Rename the save files from `.sav` to `.srm`. |
| 231 | + |
| 232 | +### Savestates |
| 233 | + |
| 234 | +**Savestates taken in the legacy core cannot be migrated to melonDS DS.** |
| 235 | +In the time since the last release of the legacy core, |
| 236 | +the savestate format has changed upstream. |
| 237 | +_Save your game normally before migrating your data to melonDS DS._ |
| 238 | + |
| 239 | +### Config Files |
| 240 | + |
| 241 | +Rename the following directories to `melonDS DS`: |
| 242 | + |
| 243 | +- `$RETROARCH_ROOT/config/melonDS` to `melonDS DS`. |
| 244 | +- `$RETROARCH_ROOT/config/remaps/melonDS` to `melonDS DS`. |
| 245 | +- Rename any files inside these directories named `melonDS.opt` to `melonDS DS.opt`. |
| 246 | + |
| 247 | +### Cheats |
| 248 | + |
| 249 | +Rename `$RETROARCH_ROOT/cheats/melonDS` to `melonDS DS`. |
| 250 | +Cheat support is unchanged. |
| 251 | + |
| 252 | +### System Files |
| 253 | + |
| 254 | +melonDS DS will detect system files (BIOS, firmware, NAND) in the system directory, |
| 255 | +so no action is required from you. |
| 256 | +However, melonDS DS will prefer system files in the "melonDS DS" subdirectory. |
| 257 | + |
| 258 | +## Compatibility |
| 259 | + |
| 260 | +- [Upstream melonDS Forums Compatibility section](http://melonds.kuribo64.net/board/forum.php?id=3) |
| 261 | + |
| 262 | +## External Links |
| 263 | + |
| 264 | +- [Official melonDS Website](http://melonds.kuribo64.net/) |
| 265 | +- [Official melonDS GitHub Repository](https://github.com/melonDS-emu/melonDS) |
| 266 | +- [Libretro melonDS DS Core info file](https://github.com/libretro/libretro-super/blob/master/dist/info/melondsds_libretro.info) |
| 267 | +- [Libretro melonDS DS Github Repository](https://github.com/JesseTG/melonds-ds) |
| 268 | +- [Report Libretro melonDS DS Core Issues Here](https://github.com/JesseTG/melonds-ds/issues) |
| 269 | + |
| 270 | +### See also |
| 271 | + |
| 272 | +#### Nintendo - Nintendo DS + Decrypted + (Download Play) |
| 273 | + |
| 274 | +- [Nintendo - DS (DeSmuME 2015)](desmume_2015.md) |
| 275 | +- [Nintendo - DS (DeSmuME)](desmume.md) |
| 276 | +- [Nintendo - DS (melonDS 2021)](melonds.md) |
| 277 | + |
| 278 | +[^1]: Not available in DSi mode. |
| 279 | +[^2]: LAN only. (No, VPNs won't work.) |
0 commit comments