/melonDS

DS emulator, sorta

Primary LanguageC++GNU General Public License v3.0GPL-3.0

melonDS

DS emulator, sorta

The goal is to do things right and fast, akin to blargSNES (but hopefully better). But also to, you know, have a fun challenge :)


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!

How to build

Linux:

  • Install dependencies:
sudo apt-get install libpcap0.8-dev libcurl4-gnutls-dev libsdl2-dev gtk+-3.0
  • Compile:
mkdir -p build
cd build
cmake ..
make

Windows:

  • use CodeBlocks

MSYS2 and CMake

  1. Install MSYS2
  2. Open the MSYS2 MinGW 64-bit terminal
  3. Update the packages using pacman -Syu and reopen the terminal if it asks you to
  4. Install dependencies: pacman -S mingw-w64-x86_64-{toolchain,SDL2,cmake} make git
  5. Run the following commands
    git clone https://github.com/Arisotura/melonDS.git
    cd melonDS
    mkdir build
    cd build
    cmake .. -G "MSYS Makefiles"
    make -j5
    ../msys-dist.sh

If everything went well, melonDS and the libraries it needs should now be in the dist folder.

TODO LIST

  • improve libui and the emulator UI
  • hardware renderer for 3D (w/ upscaling and fancy shit)
  • 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

Credits

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

License

GNU GPLv3 Image

melonDS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.