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 Firmware boot (not direct boot) requires a BIOS/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 1. Install dependencies: * Ubuntu 22.04: `sudo apt install cmake extra-cmake-modules libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev qtbase5-dev qtbase5-private-dev qtmultimedia5-dev libqt5svg5-dev libarchive-dev libenet-dev libzstd-dev` * Older Ubuntu: `sudo apt install cmake extra-cmake-modules libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev qt5-default qtbase5-private-dev qtmultimedia5-dev libqt5svg5-dev libarchive-dev libenet-dev libzstd-dev` * Arch Linux: `sudo pacman -S base-devel cmake extra-cmake-modules git libpcap sdl2 qt5-base qt5-multimedia qt5-svg libarchive enet zstd` 3. Download the melonDS repository and prepare: ```bash git clone https://github.com/melonDS-emu/melonDS cd melonDS ``` 3. Compile: ```bash cmake -B build cmake --build build -j$(nproc --all) ``` ### Windows 1. Install [MSYS2](https://www.msys2.org/) 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 git to clone the repository ```bash pacman -S git ``` 5. Download the melonDS repository and prepare: ```bash git clone https://github.com/melonDS-emu/melonDS cd melonDS ``` #### Dynamic builds (with DLLs) 5. Install dependencies: `pacman -S mingw-w64-x86_64-{cmake,SDL2,toolchain,qt5-base,qt5-svg,qt5-multimedia,qt5-svg,qt5-tools,libarchive,enet,zstd}` 6. Compile: ```bash cmake -B build cmake --build build cd build ../tools/msys-dist.sh ``` If everything went well, melonDS and the libraries it needs should now be in the `dist` folder. #### Static builds (without DLLs, standalone executable) 5. Install dependencies: `pacman -S mingw-w64-x86_64-{cmake,SDL2,toolchain,qt5-static,libarchive,enet,zstd}` 6. Compile: ```bash cmake -B build -DBUILD_STATIC=ON -DCMAKE_PREFIX_PATH=/mingw64/qt5-static cmake --build build ``` If everything went well, melonDS should now be in the `build` folder. ### macOS 1. Install the [Homebrew Package Manager](https://brew.sh) 2. Install dependencies: `brew install git pkg-config cmake sdl2 qt@6 libarchive enet zstd` 3. Download the melonDS repository and prepare: ```zsh git clone https://github.com/melonDS-emu/melonDS cd melonDS ``` 4. Compile: ```zsh cmake -B build -DCMAKE_PREFIX_PATH="$(brew --prefix qt@6);$(brew --prefix libarchive)" cmake --build build -j$(sysctl -n hw.logicalcpu) ``` If everything went well, melonDS.app should now be in the `build` directory. #### Self-contained app bundle If you want an app bundle that can be distributed to other computers without needing to install dependencies through Homebrew, you can additionally run ` ../tools/mac-libs.rb .` after the build is completed, or add `-DMACOS_BUNDLE_LIBS=ON` to the first CMake command. ## TODO LIST * better DSi emulation * better OpenGL rendering * netplay * the impossible quest of pixel-perfect 3D graphics * support for rendering screens to separate windows * emulating some fancy addons * other non-core shit (debugger, graphics viewers, etc) ### TODO LIST FOR LATER (low priority) * 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 * limittox for the icon * All of you comrades who have been testing melonDS, reporting issues, suggesting shit, etc ## Licenses [![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html) 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. ### External * Images used in the Input Config Dialog - see `src/frontend/qt_sdl/InputConfig/resources/LICENSE.md`