Code Monkey home page Code Monkey logo

melonds-wasm's Introduction

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:

  1. Install dependencies: sudo apt install cmake libcurl4-gnutls-dev libpcap0.8-dev libsdl2-dev qt5-default libslirp-dev libarchive-dev libepoxy-dev
  2. Download the melonDS repository and prepare:
git clone https://github.com/Arisotura/melonDS
cd melonDS
mkdir build && cd build
  1. Compile:
mkdir -p build
cd build
cmake ..
make -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. Download the melonDS repository and prepare:
git clone https://github.com/Arisotura/melonDS
cd melonDS
mkdir build && cd build

Dynamic builds (with DLLs)

  1. Install dependencies: pacman -S git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5,libslirp,libarchive,libepoxy}
  2. Compile:
    cmake .. -G "MSYS Makefiles"
    make -j$(nproc --all)
    ../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 git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5-static,libslirp,libarchive,libepoxy}
  2. Compile:
    cmake .. -G 'MSYS Makefiles' -DBUILD_STATIC=ON -DQT5_STATIC_DIR=/mingw64/qt5-static
    make -j$(nproc --all)
    mkdir dist && cp melonDS.exe dist

If everything went well, melonDS should now be in the dist folder.

macOS:

  1. Install the Homebrew Package Manager
  2. Install dependencies: brew install git pkg-config cmake sdl2 qt@6 libslirp libarchive libepoxy
  3. Download the melonDS repository and prepare:
git clone https://github.com/Arisotura/melonDS
cd melonDS
mkdir build && cd build
  1. Compile:
    cmake .. -DCMAKE_PREFIX_PATH="$(brew --prefix qt@6);$(brew --prefix libarchive)" -DUSE_QT6=ON -DMACOS_BUNDLE_LIBS=ON
    make -j$(sysctl -n hw.logicalcpu)

If everything went well, melonDS.app should now be in the curent directory.

TODO LIST

  • DSi emulation
  • the impossible quest of pixel-perfect 3D graphics
  • improve libui and the emulator UI
  • 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
  • limittox for the icon
  • 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.

melonds-wasm's People

Contributors

arisotura avatar rsduck avatar rayyanansari avatar nadiaholmquist avatar rzumer avatar i404788 avatar bentley avatar abcdjdj avatar dirbaio avatar gal20 avatar zapeth avatar suuperw avatar nadia-h avatar zettymaster avatar ace4896 avatar swordfish90 avatar superusercode avatar v1993 avatar fuel-pcbox avatar aqueminivan avatar 44670 avatar pedrovelho avatar dogtopus avatar tatsh avatar wunkolo avatar hcorion avatar kwkam avatar kyandora avatar lucasjome avatar alarixnia avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.