DS emulator, sorta
Go to file
2024-10-31 22:51:18 +01:00
.github Add an About dialog with build info (#2138) 2024-10-24 22:05:30 +02:00
cmake vcpkg 2024.10.21 2024-10-24 19:55:41 +02:00
freebios FreeBIOS: Ensure upper 16 bits are cleared in the initial crc16 value. 2023-12-06 16:51:22 +01:00
res add splashscreen 2024-10-31 19:26:41 +01:00
src lock framebuffer stuff to prevent conflicts when reiniting the core or changing the renderer 2024-10-31 22:51:18 +01:00
tools mac-libs.rb: Make bundling a bit smarter 2024-08-13 07:53:09 +02:00
.gitattributes Fix invalid .gitattributes entries 2024-07-28 03:23:07 +02:00
.gitignore Generalize a path in .gitignore (#1862) 2023-10-24 21:49:36 +02:00
CMakeLists.txt cmake: Add easy sanitizers option 2024-10-19 18:30:30 +02:00
CMakePresets.json Build Windows CI builds with vcpkg and Qt 6 (#2112) 2024-07-27 17:22:35 +02:00
CONTRIBUTING.md Rename contributing.md to CONTRIBUTING.md 2021-09-03 15:16:09 +00:00
flake.lock nix: update inputs 2024-10-24 21:02:41 +02:00
flake.nix flake: shell should also use qt6's stdenv 2024-10-27 21:22:49 +01:00
LICENSE reorganize repo, move shit around 2017-03-16 23:01:22 +01:00
README.md README: Update build instructions to include enet and qtsvg 2024-08-13 08:40:10 +02:00
vcpkg.json vcpkg: support building on Linux 2024-09-06 22:50:12 +02:00

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
  2. Download the melonDS repository and prepare:

    git clone https://github.com/melonDS-emu/melonDS
    cd melonDS
    
  3. Compile:

    cmake -B build
    cmake --build build -j$(nproc --all)
    

Windows

  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 git to clone the repository
    pacman -S git
    
  5. Download the melonDS repository and prepare:
    git clone https://github.com/melonDS-emu/melonDS
    cd melonDS
    

Dynamic builds (with DLLs)

  1. Install dependencies: pacman -S mingw-w64-x86_64-{cmake,SDL2,toolchain,qt5-base,qt5-svg,qt5-multimedia,qt5-svg,qt5-tools,libarchive,enet,zstd}
  2. Compile:
    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)

  1. Install dependencies: pacman -S mingw-w64-x86_64-{cmake,SDL2,toolchain,qt5-static,libarchive,enet,zstd}
  2. Compile:
    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
  2. Install dependencies: brew install git pkg-config cmake sdl2 qt@6 libarchive enet zstd
  3. Download the melonDS repository and prepare:
    git clone https://github.com/melonDS-emu/melonDS
    cd melonDS
    
  4. Compile:
    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

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