MCPcopy Create free account
hub / github.com/Hydr8gon/3Beans

github.com/Hydr8gon/3Beans @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,766 symbols 2,567 edges 93 files 3 documented · 0% updated 9d agorelease · 2026-07-05★ 63110 open issues

Browse by type

Functions 1,633 Types & classes 133
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

3Beans

A low-level 3DS emulator.

Overview

3Beans emulates the 3DS at a low level, which means that it runs the entire OS as if it were on real hardware. It can boot the home menu and launch some games, but it's still young and has plenty of issues. It has both software and hardware GPU rendering, but CPUs are still fully interpreted. My goal for this project is to achieve viable speeds with full low-level emulation, and maybe explore some high-level elements down the road.

Downloads

3Beans is available for Windows, macOS, and Linux. The latest builds are automatically provided via GitHub Actions, and can be downloaded from the releases page.

Setup

To function, 3Beans requires files dumped from a physical 3DS with homebrew access. Old 3DS is preferable for the best experience; new 3DS has more issues and is much slower. At minimum, you'll need boot9.bin, boot11.bin, and nand.bin, all of which can be obtained using GodMode9. You might also want to create sd.img, which can be any FAT-formatted image file to serve as an SD card. These files can be configured in the path settings.

Usage

Once the necessary files are present, 3Beans should function like the system they were dumped from. Controls can be viewed and changed in the Settings menu. You can boot without a cartridge through the System menu, or select one through the File menu. If you want to skip the home menu and load directly into a game, you can use the Cart Auto-Boot setting. Note that 3Beans requires encrypted cartridge dumps, unlike high-level emulators which typically expect decrypted ones. GodMode9 can dump both encrypted and decrypted ROMs, so make sure you get the right one.

Contributing

This is a personal project, and I've decided to not review or accept pull requests for it. If you want to help, you can test things and report issues or provide feedback. If you can afford it, you can also donate to motivate me and allow me to spend more time on things like this. Nothing is mandatory, and I appreciate any interest in my projects, even if you're just a user!

Building

Windows: Install MSYS2 and run the command pacman -Syu mingw-w64-ucrt-x86_64-{gcc,pkg-config,wxwidgets3.3-msw,portaudio,libepoxy,jbigkit} make to get dependencies. Navigate to the project root directory and run make -j$(nproc) to start building.

macOS/Linux: On the target system, install wxWidgets (v3.3.2 or higher), PortAudio, and Epoxy. This can be done with a package manager like Homebrew on macOS, or a built-in one on Linux. Run make in the project root directory to start building.

References

  • GBATEK - Incomplete but great reference for the 3DS hardware
  • 3DBrew - Comprehensive wiki covering high- and low-level details
  • libctru - A homebrew library that shows how to interact with the OS
  • Teakra - The only source for newer aspects of the Teak architecture
  • Corgi3DS - The first LLE 3DS emulator, whose logs helped me debug

Other Links

Core symbols most depended-on inside this repo

Shape

Method 1,632
Class 100
Enum 33
Function 1

Languages

C++100%

Modules by API surface

src/core/arm/arm_interp_alu.cpp138 symbols
src/core/gpu/gpu.h125 symbols
src/core/arm/arm_interp_transfer.cpp116 symbols
src/core/gpu/gpu_cmd.cpp112 symbols
src/core/dsp/dsp_lle.cpp67 symbols
src/core/gpu/gpu_render_ogl.cpp65 symbols
src/core/gpu/gpu_shader_interp.cpp53 symbols
src/core/dsp/teak_interp.cpp51 symbols
src/core/gpu/gpu_shader_glsl.cpp50 symbols
src/core/gpu/gpu_render_soft.cpp49 symbols
src/core/io/wifi.cpp48 symbols
src/core/io/sd_mmc.cpp38 symbols

For agents

$ claude mcp add 3Beans \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page