Skip to content

burhanr13/Tanuki3DS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tanuki3DS

Tanuki3DS is a 3DS emulator for MacOS, Linux and Windows written in C which aims to be simple, fast, and compatible. Currently it can play a decent number of games with reasonable graphics and audio at full speed. It also supports some nice features like controller input, fast-forward, video upscaling, and free camera.

If you want to ask questions or discuss the emulator, join our discord:

Download

You can download a stable release from the releases tab, or the latest build below:

Platform Download
Linux Binary
AppImage
MacOS x86_64 App
arm64 App
Windows Windows Download

Usage

Launching the app should give you a prompt to select the game file. You can also start a game by dropping its file onto the window. The supported formats are:

  • .cci/.3ds
  • .cxi/.app
  • .elf/.axf
  • .3dsx

All games must be decrypted.

You can modify emulator settings in the generated config file.

You can also run the executable in the command line with the rom file as the argument or pass -h to see other options.

The 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

The touch screen can be used with the mouse.

You can also connect a controller to use controller input. When using the controller the right shoulder button 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

Note that the freecam only works when hw shaders are enabled.

Building

You need the following dependencies installed to build and run:

  • sdl3
  • glew
  • capstone
  • xxhash
  • confuse
  • cglm
  • fdk-aac
  • xbyak (x86_64 only)
  • xbyak_aarch64 (arm64 only)

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 such as clang-19. To compile on Windows, you need to install Msys2 and mingw-w64 and compile within the mingw64 shell.

Compatibility

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.

Acknowledgements

  • 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