# Overview
The New Nintendo 3DS stands as the final form of Nintendo's multi-generational "handheld-only" line of consoles. It sports the **most refined** iteration of the **dual-screen layout **that exists in the company's history today, coupled with a **vast collection of games** across **multiple generations** that run natively, thanks to the console's **triple CPU design**. As such, has yet to be replaced by other offerings on the marketplace.
> [!INFO] Regarding model names
> When I refer to "New Nintendo 3DS", I am always referring to the collective of the following 3 models, for brevity:
>
> - New Nintendo 3DS
> - New Nintendo 3DS XL
> - New Nintendo 2DS XL
The New Nintendo 3DS can run games from the following consoles natively, thanks to the backwards compatibility features of the hardware, **TWiLight Menu++** and **open_agb_firm** (more on those later):
- New Nintendo 3DS
- Nintendo 3DS
- Nintendo DSi
- Nintendo DS
- Gameboy Advance
It can also emulate games from the following consoles flawlessly, thanks to the Virtual Console software features and, more specifically, **Virtual Console injects** (more on that later, too):
- Nintendo Entertainment System
- Super Nintendo Entertainment System
- Nintendo Gameboy
- Nintendo Gameboy Color
- Sega Game Gear
- WonderSwan Color
This extensive compatibility, refined dual-screen form factor, and affordable second-hand price of console models (with lots of unique designs!) makes the New Nintendo 3DS a preferable option to emulation on a Steam Deck or PC for many of these consoles.
> [!TIP] [Nintendo 3DS System Architecture by Rodrigo Copetti](https://www.copetti.org/writings/consoles/nintendo-3ds/)
> If you are interested in a deep-dive on the hardware architecture of the Nintendo 3DS, check out this in-depth article by Rodrigo Copetti.
___
# Modding
The guides written over on [3ds.hacks.guide](https://3ds.hacks.guide/) have been the gold standard for onboarding to the modded 3DS scene for years. I only have a few considerations to add below.
## SD Card Considerations
For storage of all your games, I highly recommend purchasing a [SanDisk 128GB Extreme microSDXC UHS-I Memory Card](https://www.amazon.com/SanDisk-Extreme-microSDXC-Memory-Adapter/dp/B09X7BK27V/ref=sr_1_4?keywords=128%2Bgb%2Bmicro%2Bsd%2Bcard&th=1), in particular, as this size SD card is the best when it comes to size vs performance. Any larger, and loading times start to increase dramatically. In addition, I recommend you format the card following my advice below, instead of the guide's advice, to optimize performance of the card as much as possible.
> [!NOTE] Formatting the Micro SD Card as FAT32 with 64K clusters (macOS)
> Plug in the SD Card, then identify the SD card by using the following command:
>
> ```bash
> $ diskutil list
> ```
>
> It should output something like this (with "X" being some number):
>
> ```bash
> /dev/diskX (external, physical):
> #: TYPE NAME SIZE IDENTIFIER
> 0: FDisk_partition_scheme *127.9 GB diskX
> 1: Windows_NTFS 127.8 GB diskXs1
> ```
>
> Unmount the disk (replace X with the number above):
>
> ```bash
> $ diskutil unmount /dev/diskX || diskutil unmountDisk /dev/diskX
> ```
>
> Format the SD card now (replace X with the number above):
>
> ```bash
> $ sudo newfs_msdos -F 32 -c 128 -v 3DS /dev/diskX
> ```
>
> Unplug the SD Card, then plug it back in.
#### References
> [!QUOTE] [SolanQ on Reddit](https://www.reddit.com/r/3dspiracy/comments/e3yckt/comment/f9655ba/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button) (Nov 2019)
> I use a 128gb microSD card (class 10) and I originally formatted it with a 32kb cluster size, because [3ds.hacks.guide](https://3ds.hacks.guide) recommends it.
>
> However when I tried to play certain VC injected GBA games I ran into the issue where the image on the top screen is misaligned. I found some posts on GBAtemp that suggest changing the cluster size if this problem occurs. So I reformatted my SD card to FAT32 with 64kb cluster size and that completely fixed the issue.
>
> I think the reason why this works is because the GBA screen misalignment problem seems to be linked to long loading times, something that large SD cards are particularly prone to cause on the 3DS. Increasing the cluster size has helped to reduce GBA load times down to a more reasonable level, where the GBA VC screen glitch doesn't occur. It's also improved the load times of most of my other games, as well as the 3DS Home screen & icons.
>
> I'd say it's definitely worth experimenting and not just taking the 32kb instruction from the guide as gospel. My impression is that they chose one cluster size to keep things simple, and it's a safe enough starting point, but it doesn't feel like the most efficient choice for 128gb SD cards and higher. I'm kind of glad I ran into the graphical glitch in VC games, otherwise I'd have never considered changing the cluster size.
> [!QUOTE] [Lexaraj on Reddit](https://www.reddit.com/r/3dspiracy/comments/cqfk49/comment/ewwiws7/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button) (Aug 2019)
> I've used both a 256 and a 400gb microSD in my 3DS and they worked 'fine' but GBA games load up _**extremely**_ slow no matter what cluster size you format them with. It took a solid 45 seconds to boot a GBA inject with my 256gb card. Custom themes also do not work very well. They only show up after loading a title and exiting to the home screen, they do not automatically load on system boot.
>
> 128gb is the best size verses performance card, really. Formatted at 64k clusters, a 128gb card loads GBA Injects very fast and everything else works perfectly.
>
> TLDR: If you care about custom themes and GBA inject boot time, 128gb is hands down the way to go. If you don't care about custom themes and don't play GBA injects, than get 256gb or 400gb.
> [!QUOTE] [Liudas Šumskas on Super User](https://superuser.com/a/981616) (Oct 2015)
> For example to format FAT32 with 64kb allocation unit size:
> ```bash
> sudo newfs_msdos -F 32 -c 128 -v VOLUMEID /dev/yourdiskdevice
> ```
> with 32kb allocation unit size should be use 64 cluster size:
> ```bash
> sudo newfs_msdos -F 32 -c 64 -v VOLUMEID /dev/yourdiskdevice
> ```
## Acquiring Games
The 3DS has a vibrant preservation community, all cumulating into one piece of easy-to-use software called hShop, which is a complete replacement for the now-defunct 3DS eShop. For games not natively released on the 3DS eShop, there is a complimentary service to hShop called Myrient. For legal reasons, both of these offerings are things you'll have to find for yourself.
## Playing Games
### Playing DS & DSi Games with **TWiLight Menu++** and **YANBF**
**TWiLight Menu++** allows you to **run DS and DSi games** on their native processor built-in to all 3DS models using a custom launcher. For further reference, see the [3DS Hacks Wiki](https://wiki.hacks.guide/wiki/3DS:DS_games#TwilightMenu++). You can even enhance these games with analog controls and widescreen support! See [here](https://www.youtube.com/watch?v=l_d3H2bkZHM&t=218s) for details.
> [!TIP] Pixel-Perfect Mode
> Holding the "Start" or "Select" buttons while booting any DS Game (including TWiLight Menu++ itself) game will run the game in "Pixel-Perfect Mode", which disables display scaling of the game image to fit the 3DS Screen, and instead runs it at the native DS resolution.
To launch games directly from the 3DS Home Screen, consider using [YANBF](https://github.com/YANBForwarder/YANBF) to generate forwarder CIAs to install to your Home Screen.
> [!NOTE] YANBF Configuration
> Be sure to set the "Generator Directory" to the folder named "generator" that came with the YANBF application download. If the generator directory does not contain the "makerom", "bannertool", and "generator" binaries, the application will not work.
>
> ROMs must be dragged over the YANBF application window from the location on the 3DS SD Card that the DS ROM is stored. If the ROM is moved from this location, the forwarder will no longer work.
>
> On macOS, each of these binaries, along with the application itself, must be opened once from Finder in order for the macOS security scans not to block its execution.
> [!WARNING] Lack of Pixel-Perfect Mode Support
> Pixel-Perfect Mode is not supported with forwarders generated using YANBF.
### Playing GBA Games with **open_agb_firm** and **mGBA**
**open_agb_firm** allows you to run **GBA games** on their native processor built-in to all 3DS models using a simple menu. For further reference, see the [3DS Hacks Wiki](https://wiki.hacks.guide/wiki/3DS:GBA_games).
> [!TIP] Pixel-Perfect Mode
> Holding the "Start" or "Select" buttons while booting a GBA game will run the game in "Pixel-Perfect Mode", which disables display scaling of the game image to fit the 3DS Screen, and instead runs it at the native GBA resolution.
> [!WARNING] Lack of Sleep Mode Support
> GBA games that are run natively on the 3DS do not support the 3DS Sleep Mode functionality.
For **unofficial games** that do not work via **open_agb_firm** (such as ROM hacks), consider **mGBA** as an alternative, either on official hardware, or on separate hardware such as the Steam Deck.
> [!TIP] Emulator Enhanced Functionality
> Running GBA games via mGBA allows for common emulator enhancements like save states, display filters, and fast-forwarding.
### Playing Retro Games via **Virtual Console Injects**
There are 2 options here:
- You could make your own VC injects using [this guide](https://gbatemp.net/threads/how-to-create-official-looking-virtual-console-injects.437592/) by CheatFreak47 on GBATemp.
- Alternatively, you could **seek out your own copies** of custom VC Injects, such as those **made by Mumpmander or Max904yt**. For legal reasons, I will not provide a link to these.