README.md 6.34 KB
Newer Older
1
2
3
4
<p align="center"><img src="https://raw.githubusercontent.com/StapleButter/melonDS/master/icon/melon_128x128.png"></p>
<h2 align="center"><b>melonDS</b></h2>
<p align="center">
<a href="http://melonds.kuribo64.net/" alt="melonDS website"><img src="https://img.shields.io/badge/website-melonds.kuribo64.net-%2331352e.svg"></a>
Arisotura's avatar
Arisotura committed
5
<a href="http://melonds.kuribo64.net/downloads.php" alt="Release: 0.9.2"><img src="https://img.shields.io/badge/release-0.9.2-%235c913b.svg"></a>
6
7
<a href="https://www.gnu.org/licenses/gpl-3.0" alt="License: GPLv3"><img src="https://img.shields.io/badge/License-GPL%20v3-%23ff554d.svg"></a>
<a href="https://kiwiirc.com/client/irc.badnik.net/?nick=IRC-Source_?#melonds" alt="IRC channel: #melonds"><img src="https://img.shields.io/badge/IRC%20chat-%23melonds-%23dd2e44.svg"></a>
WaluigiWare64's avatar
WaluigiWare64 committed
8
9
10
11
<br>
<a href="https://github.com/Arisotura/melonDS/actions?query=workflow%3A%22CMake+Build+%28Windows+x86-64%29%22+event%3Apush"><img src="https://img.shields.io/github/workflow/status/Arisotura/melonDS/CMake%20Build%20(Windows%20x86-64)?label=Windows%20x86-64&logo=GitHub"></img></a>
<a href="https://github.com/Arisotura/melonDS/actions?query=workflow%3A%22CMake+Build+%28Ubuntu+x86-64%29%22+event%3Apush"><img src="https://img.shields.io/github/workflow/status/Arisotura/melonDS/CMake%20Build%20(Ubuntu%20x86-64)?label=Linux%20x86-64&logo=GitHub"></img></a>
<a href="https://github.com/Arisotura/melonDS/actions?query=workflow%3A%22CMake+Build+%28Ubuntu+aarch64%29%22+event%3Apush"><img src="https://img.shields.io/github/workflow/status/Arisotura/melonDS/CMake%20Build%20(Ubuntu%20aarch64)?label=Linux%20ARM64&logo=GitHub"></img></a>
WaluigiWare64's avatar
WaluigiWare64 committed
12
13
<a href="https://dev.azure.com/melonDS/melonDS/_build?definitionId=1&repositoryFilter=1&branchFilter=2%2C2%2C2%2C2%2C2%2C2%2C2%2C2%2C2%2C2%2C2%2C2%2C2"><img src="https://img.shields.io/azure-devops/build/melonDS/7c9c08a1-669f-42a4-bef4-a6c74eadf723/1/master?label=macOS%20x86-64&logo=Azure%20Pipelines"></img></a>
<a href="https://dev.azure.com/melonDS/melonDS/_build?definitionId=2&_a=summary&repositoryFilter=1&branchFilter=2%2C2%2C2%2C2%2C2"><img src="https://img.shields.io/azure-devops/build/melonDS/7c9c08a1-669f-42a4-bef4-a6c74eadf723/2/master?label=macOS%20ARM64&logo=Azure%20Pipelines"></img></a>
14
</p>
Roger's avatar
Roger committed
15
DS emulator, sorta
16

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

Roger's avatar
Roger committed
20
## How to use
StapleButter's avatar
StapleButter committed
21
22
23
24

melonDS requires BIOS/firmware copies from a DS. Files required:
 * bios7.bin, 16KB: ARM7 BIOS
 * bios9.bin, 4KB: ARM9 BIOS
25
 * firmware.bin, 128/256/512KB: firmware
26

27
28
29
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.

Roger's avatar
Roger committed
30
31
### Possible firmware sizes

32
33
34
35
 * 128KB: DSi/3DS DS-mode firmware (reduced size due to lacking bootcode)
 * 256KB: regular DS firmware
 * 512KB: iQue DS firmware

36
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.
StapleButter's avatar
StapleButter committed
37

38
As for the rest, the interface should be pretty straightforward. If you have a question, don't hesitate to ask, though!
39

Roger's avatar
Roger committed
40
## How to build
StapleButter's avatar
StapleButter committed
41

Roger's avatar
Roger committed
42
### Linux:
43

WaluigiWare64's avatar
WaluigiWare64 committed
44
45
46
47
48
49
50
51
52
53
54
55
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:
  ```bash
  git clone https://github.com/Arisotura/melonDS
  cd melonDS
  mkdir build && cd build
  ```
3. Compile:
  ```bash
  cmake ..
  make -j$(nproc --all)
  ```
Roger's avatar
Roger committed
56
57

### Windows:
s1nka's avatar
s1nka committed
58

59
1. Install [MSYS2](https://www.msys2.org/)
Nadia Pedersen's avatar
Nadia Pedersen committed
60
2. Open the **MSYS2 MinGW 64-bit** terminal
61
3. Update the packages using `pacman -Syu` and reopen the terminal if it asks you to
WaluigiWare64's avatar
WaluigiWare64 committed
62
63
64
65
66
67
4. Download the melonDS repository and prepare:
  ```bash
  git clone https://github.com/Arisotura/melonDS
  cd melonDS
  mkdir build && cd build
  ```
68
#### Dynamic builds (with DLLs)
WaluigiWare64's avatar
WaluigiWare64 committed
69
70
5. Install dependencies: `pacman -S git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5,libslirp,libarchive,libepoxy}`
6. Compile:
71
72
   ```bash
   cmake .. -G "MSYS Makefiles"
Jon Pacheco's avatar
Jon Pacheco committed
73
   make -j$(nproc --all)
74
   ../tools/msys-dist.sh
75
76
   ```
If everything went well, melonDS and the libraries it needs should now be in the `dist` folder.
StapleButter's avatar
StapleButter committed
77

78
#### Static builds (without DLLs, standalone executable)
WaluigiWare64's avatar
WaluigiWare64 committed
79
80
5. Install dependencies: `pacman -S git make mingw-w64-x86_64-{cmake,mesa,SDL2,toolchain,qt5-static,libslirp,libarchive,libepoxy}`
6. Compile:
81
82
83
84
85
86
87
   ```bash
   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.

WaluigiWare64's avatar
WaluigiWare64 committed
88
89
### macOS:
1. Install the [Homebrew Package Manager](https://brew.sh)
90
2. Install dependencies: `brew install git pkg-config cmake sdl2 qt@6 libslirp libarchive libepoxy`
WaluigiWare64's avatar
WaluigiWare64 committed
91
92
93
94
95
96
97
3. Download the melonDS repository and prepare:
  ```zsh
  git clone https://github.com/Arisotura/melonDS
  cd melonDS
  mkdir build && cd build
  ```
4. Compile:
WaluigiWare64's avatar
WaluigiWare64 committed
98
   ```zsh
WaluigiWare64's avatar
WaluigiWare64 committed
99
   cmake .. -DCMAKE_PREFIX_PATH="$(brew --prefix qt@6);$(brew --prefix libarchive)" -DUSE_QT6=ON -DMACOS_BUNDLE_LIBS=ON
100
   make -j$(sysctl -n hw.logicalcpu)
WaluigiWare64's avatar
WaluigiWare64 committed
101
   ```
techmuse's avatar
techmuse committed
102
If everything went well, melonDS.app should now be in the current directory.
WaluigiWare64's avatar
WaluigiWare64 committed
103
104

   
Roger's avatar
Roger committed
105
## TODO LIST
106

StapleButter's avatar
StapleButter committed
107
108
 * DSi emulation
 * the impossible quest of pixel-perfect 3D graphics
109
110
 * improve libui and the emulator UI
 * support for rendering screens to separate windows
StapleButter's avatar
StapleButter committed
111
 * emulating some fancy addons
StapleButter's avatar
StapleButter committed
112
 * other non-core shit (debugger, graphics viewers, cheat crapo, etc)
113

Roger's avatar
Roger committed
114
### TODO LIST FOR LATER
StapleButter's avatar
StapleButter committed
115

StapleButter's avatar
StapleButter committed
116
 * better wifi
StapleButter's avatar
StapleButter committed
117
 * maybe emulate flashcarts or other fancy hardware
118
119
 * big-endian compatibility (Wii, etc)
 * LCD refresh time (used by some games for blending effects)
120
 * any feature you can eventually ask for that isn't outright stupid
121

Roger's avatar
Roger committed
122
## Credits
StapleButter's avatar
StapleButter committed
123
124
125

 * Martin for GBAtek, a good piece of documentation
 * Cydrak for the extra 3D GPU research
Arisotura's avatar
Arisotura committed
126
 * limittox for the icon
StapleButter's avatar
StapleButter committed
127
 * All of you comrades who have been testing melonDS, reporting issues, suggesting shit, etc
128
129
130
131
132
133
134

## License
[![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
135
(at your option) any later version.