3Beans transcends simple game simulation by treating the entire OS as a preservation-worthy artifact rather than a hurdle to be bypassed. It is a masterclass in technical rigor that prioritizes architectural truth over mere convenience.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
Emulating the Entire 3DS - Introducing 3BeansAdded:
Let's go.
>> This is three beans, a new low-level 3DS emulator that I've been working on for a while.
If you're wondering what makes it different from a typical 3DS emulator, it basically boils down to this.
Yep. That's the entire 3DS OS running on there.
But, let me try to explain it better.
Usually when it comes to 3DS emulation, the approach is more or less to make a custom operating system within the emulator.
When a game calls an OS function, the emulator intercepts that and runs its own version, avoiding the overhead of stepping through machine code and mimicking the hardware it uses.
To put it more abstractly, instead of emulating a game and an OS, it's only emulating the game, which is much better for performance.
This technique is known as high-level emulation, and it's used for pretty much any modern system.
While high-level is cool and all, it kind of skips over a lot of the 3DS hardware and experience.
And personally, I'm more interested in making hardware out of code rather than writing my own OS.
So, three beans starts right at the boot ROMs and does everything a real console would do to set itself up and load into the home menu. Or maybe something else.
If you've got bare-metal homebrew like GodMode9 installed, that's the nice thing about low-level emulation. It can support anything that runs on original hardware, not just programs designed to run within the 3DS OS. You can even use things like Luma3DS, a custom firmware with all sorts of goodies like built-in screenshots, cheat code support, game modding with layered FS, and more. And if you want to run userland homebrew, you can inject the launcher into any app or use a dedicated forwarder.
Now, you might be wondering how to set all of this up. It's not quite as simple as a high-level emulator since you need to provide dumps of the OS [music] stuff as well, but I hope it's not too bad.
To start, you need a physical modded 3DS, which I'm sure you already have because how else would you dump your games?
I should stress that old 3DS works best here. New 3DS has some issues and even once those are fixed, it'll still be slower than old 3DS.
I'm not going to go into detail about 3DS modding here, so I'll assume you know how to load firmware files and probably already have GodMode9 installed. If not, you can find a download link in the description.
Anyway, load up GodMode9 on the 3DS you want to dump and navigate to sysnand virtual.
You'll find a file here called nand.bin.
Select it and then copy to gm9/out.
Now back out of that and go to memory virtual.
Do the same thing as before, but with the files boot11.bin and boot9.bin.
That's everything you need, so connect your 3DS SD card to your computer and copy over those files from the gm9/out folder.
It's also not a bad idea to keep an extra copy of the NAND somewhere in case it gets corrupted. 3 beans does write data back to it just like the 3DS does.
Now, if you haven't already, grab a build of the emulator from the description link and start it up.
So, the first thing you'll want to do when the emulator opens is go to settings in the top bar and then click path settings.
This is where you'll set up the files that you just dumped.
Use the browse buttons and select boot11.bin for the boot11.rom, boot9.bin for the boot9.rom, and nand.bin for the NAND dump.
The SD image isn't required, but I should probably mention some things about it.
To be blunt, there's no user-friendly way to set up an SD [music] card right now.
The best way is to dump your 3DS's physical SD to a file using the DD command on Linux or Mac.
There's also this old version of DD for Windows, but who knows if that still works.
Another option is to use [music] the pre-made images linked in the description.
In that case, you might need a way to transfer files to the SD.
On Linux or Mac, you can simply mount the image as a drive, and on [music] Windows, I've heard that you can use a tool called OSFMount.
Sorry, Windows users. I haven't used your OS in ages, so I really don't know how to do stuff there.
Anyway, with the file set up, the emulator should be good to go. But before that, let's take a quick look at the input bindings.
These are the default keyboard controls, but you can remap them and even use a controller if one is connected.
Once you're happy with that, you can start the emulator. There are two ways to do this. The first is in the system menu, where you can simply start without a cartridge.
If you have a cart ROM, you can load it through the file menu, which will also start emulation.
It's important that your ROMs are encrypted, since that's what the OS expects.
I think high-level emulators prefer decrypted, so you might have to redump your games.
I'm going to boot with Ocarina of Time 3D inserted, since it's a classic for 3DS emulation.
You might get the Luma settings menu popping up if you have a newer version installed. That's not an issue on your end. You can just select save and exit.
Now, if everything went well, you should eventually be greeted with the home menu of your dumped 3DS.
You'll probably find that it's pretty slow with the default settings, though.
These defaults are the most accurate and compatible.
At least, that's the idea.
In practice, there are cases where the opposite is true, or a mix of settings works best. You know how it is.
So, let's take a look at the GPU settings.
The first thing you can do is turn on threading. This might cause issues in a few cases, but usually it's free performance. Next, you can switch the renderer to OpenGL if your hardware supports it. This can be a huge boost over software, and it gets even better if you also switch the shader to GLSL jit.
The jit can cause stutters when it's first re-compiling, but that's usually only a handful of times per game, and it should be fine after that.
That's all the GPU settings for now, but you might still be struggling for performance.
On the main emulator thread, it's still interpreting two to four ARM11 CPUs, an ARM9 CPU, and a cursed DSP with an architecture called teak. The DSP is hard to emulate efficiently, so it's usually better to use a high-level implementation.
Now, I know what you're thinking.
I thought this was a low-level emulator.
And it is, but if you need performance, the high-level DSP is pretty compatible, and doesn't really take away any OS functionality.
Honestly, it's more compatible in some ways.
The interpreter has a nasty bug affecting audio streams that I still haven't pinned down.
You can switch between interpreter and HLE with the DSP back end setting.
Unlike the GPU settings, it can't be swapped on the fly.
It's best to reset the emulator when changing it.
Hopefully, with all of that, you're starting to get somewhat usable frame rates.
If not, don't be too surprised.
Low-level 3DS emulation is incredibly intensive, and there's still plenty of optimization I can do.
Even though some things run well enough on my M4 MacBook, that's a very powerful machine.
There are also still a bunch of issues that need fixing, some of which you've probably noticed in this video.
Regardless, I'm pretty happy with how far it's come, and I figured I'd throw something together to show it off.
Maybe three beans can be genuinely useful to someone, or even just a fun toy to mess with.
You can follow development more closely on my Discord if you want. I'll link that below as well. I'm not always active there, but every time I push a code update, there's an automatic notification.
I think that's everything for now.
Thanks for your interest, and happy three beans-ing.
Related Videos
Agentforce NOW AMA: Build with React and Salesforce Multi-Framework
SalesforceDevs
490 viewsโข2026-05-28
How agent o11y differs from traditional o11y โ Phil Hetzel, Braintrust
aiDotEngineer
450 viewsโข2026-05-28
WEB TECHNOLOGIES UNIT-2 | Degree 4th sem BCOM Computers web technologies unit-2 full explanation๐ฏโ
LearnwithSahera
1K viewsโข2026-05-29
More tests are always better? How to use AI to identify tests that bring little value
Alliance4Qualification
335 viewsโข2026-05-29
Search Algorithms Explained in 60 Seconds! ๐ค๐จ
samarthtuliofficial
218 viewsโข2026-06-01
People of Game of Thrones using JavaScript DOM
AltCampus
296 viewsโข2026-05-30
Introduction to Problem Solving Part - 1 | Lecture 1 | Intermediate DSA
ascensionix
107 viewsโข2026-05-29
So What's Odin Lang Even Good For
TechOverTea
131 viewsโข2026-06-01











