Tanuki3DS is a 3DS emulator for MacOS, Linux, and Windows written in C which aims to be simple, fast, and compatible.
If you want to ask questions or discuss the emulator, join our discord:
You can download a stable release from the releases tab, or the latest build below:
| Platform | Download (x86_64) | Download (arm64) |
|---|---|---|
| Linux | Binary AppImage |
Binary AppImage |
| MacOS | App Bundle | App Bundle |
| Windows | Executable | Executable |
On launching the app you can use the UI to open a game or drop its file onto the window. The supported formats are:
- .cci/.3ds
- .cxi/.app
- .elf/.axf
- .3dsx
All games must be decrypted.
The settings and save data are stored by default in the application data path of your OS, but you can optionally create a file called portable.txt in the same directory as the executable to have them be created there. You can open the directory containing the settings and savedata using the UI.
Certain files needed by games that provided by the OS (shared font, mii resource) use open replacements by default. If you want to load the originals you can do so using the UI. You can obtain the originals from a real 3DS using the dumper.3dsx program.
You can also run the executable in the command line with the rom file as the argument or pass -h to see other options.
Default keyboard controls are as follows:
| Control | Key |
|---|---|
A |
L |
B |
K |
X |
O |
Y |
I |
L |
Q |
R |
P |
Circlepad |
WASD |
Dpad |
Arrow keys |
Start |
Return |
Select |
RShift |
| Pause/Resume | F5 |
| Mute/Unmute | F6 |
| Toggle fast-forward | Tab |
| Reset | F1 |
| Switch game | F2 |
| Toggle freecam | F7 |
| Change Screen Layout | F10 |
The touch screen can be used with the mouse.
You can also connect a controller to use controller input. When using the controller clicking the right stick can be used to tap the touch screen at the current mouse location.
Freecam controls (regular keyboard input is disabled):
- WASD: move
- RF: move vertically
- arrow keys: look
- QE: roll
- Left Shift (hold): move slower
- Right Shift (hold): move faster
Both keyboard input and freecam input can be remapped in the input settings menu.
You need the following dependencies installed to build:
- sdl3
- xxhash
- cglm
- fdk-aac
- capstone
To build use make. You can pass some options to make, USER=1 to compile a user build with lto, and DEBUG=1 for unoptimized build with debug symbols. You need a compiler which supports C23. You can configure compilers by running ./configure.sh CC=... CXX=... before running make. To compile on Windows, you need to compile within msys2.
Many games work, but many will suffer from a range of bugs from graphical glitches to crashes. We are always looking to improve the emulator and would appreciate any bugs to reported as a github issue so they can be fixed. When reporting an issue, please always include the generated ctremu.log file which is located in the application data folder of your system.
- 3DBrew is the main source of documentation on the 3DS
- GBATEK is used for low level hardware documentation
- libctru and citro3d are libraries for developing homebrew software on the 3DS and are useful as documentation on the operating system and GPU respectively
- Panda3DS, Citra, and 3dmoo are HLE 3DS emulators which served as a reference at various points, as well as inspiration for this project
- citra_system_archives is used for generating system file replacements





