This video recounts over a decade of Nintendo 3DS emulation, highlighting the technical and social challenges faced during the development of the Citra emulator and introducing a new project, Mikage, focused on high-accuracy, low-level emulation. The speaker, a co-founder of Citra, details the arduous process of reverse-engineering the 3DS's unique hardware, including its custom GPU, dedicated audio DSP, and complex file system, and how crucial breakthroughs led to playable commercial titles. However, the presentation also exposes the internal struggles within the Citra community, such as developer burnout due to demanding users, the adoption of "shortcuts" in development, and the negative impact of unauthorized forks. Following Nintendo's legal actions against a related emulator, the speaker emphasizes the "chilling effect" on the emulation scene and pivots to current community-driven preservation efforts like Pretendo (online service replacement) and eShop archiving. The new Mikage project is presented as a paradigm shift, aiming for perfect hardware emulation to run native 3DS system software and offer a complete platform experience, positioning itself as a more accurate and robust alternative built on lessons learned.
Summarizing the Nintendo 3DS Emulation Journey: From Citra's Challenges to Mikage's Low-Level Accuracy
0:00 Introduction to 3DS Emulation: The speaker shares a 10-year journey in Nintendo 3DS emulation, starting with Dolphin (GameCube) and moving to Citra (3DS) in 2013, driven by the challenge of emulating complex hardware.
2:22 Nintendo 3DS Hardware Overview: The 3DS (released 2011) is described as a complex console with four ARM11 cores, a unique custom GPU (an academic project, already outdated in 2011), a dedicated audio processor, and 256MB of RAM.
4:00 3DS Software Environment: The system features a home menu, a browser (notorious for Webkit attacks), social functions, and a "micro-cell" (service layer) handling communication between games and hardware, split into ~50 modules for security.
6:20 Early Citra Development (2013-2014): Initial efforts used existing ARM emulator cores to run simple homebrew applications like Pong. The first challenge was emulating the GPU, which was not used by early homebrew, requiring a custom program to activate it.
8:59 Reverse Engineering the GPU: Debug tools were developed to analyze binary graphics data. This led to understanding command structures, creating disassemblies, and decoding textures, progressing from simple rotating cubes to running homebrew Minecraft within 8 months.
10:24 Community Reception & Initial Progress: While developers were excited by small steps (like running Minecraft homebrew), public reaction was initially dismissive due to slow progress and lack of commercial game support.
11:10 Decrypting Commercial Games (2014): Obtaining decrypted commercial game titles (after homebrew exploits) was a major hurdle. Initially, games only showed black screens, requiring significant debugging.
11:37 First Commercial Game Graphics: Gradual progress led to displaying graphics from Zelda intro and eventually running full games like Retro Rampage and Cave Story 3D.
12:43 Major Breakthrough - First Playable Commercial Game: The team achieved a significant milestone by getting a super complex commercial game (later revealed to be Pokémon X/Y) to run, albeit slowly, by loading a save file from a real 3DS.
14:08 The Hard Part of Emulation: The most challenging aspect was resolving black screens and games not starting, as the root cause (CPU, GPU, memory, implementation bugs) was unknown beforehand.
Lighting: The 3DS GPU used a specific, complex academic lighting model (Patterson) which was implemented via lookup tables for performance. This was crucial for characters not appearing black.
Audio DSP: The audio processor uses dedicated firmware. Instead of emulating the DSP's complex instruction set directly, the team reverse-engineered its communication protocol and re-implemented its functionality in C++ code. Later, full DSP emulation with a recompiler was achieved for better performance.
Shared Libraries/File System: Decrypting and unpacking complex shared libraries (similar to .so or .dll files) required 3000 lines of C++ code, making loading games very difficult.
23:29 Pokémon X/Y Runs: A demonstration of Pokémon X/Y running (with audio turned off for the presentation due to slowness at the time).
23:53 Additional Features: Citra also implemented camera/microphone support, decryption, cheats, snapshots, and performance optimizations (ARM to x86 code translation, host GPU utilization).
24:58 Decline of Citra & Community Issues: Developer participation in Citra declined from 2018-2021, attributed to:
Hype-driven development leading to "shortcuts" and technical debt.
Negative user expectations and attacks on developers, causing burnout.
30:23 Nintendo's Legal Action & Chilling Effect: In 2023, Nintendo sued a major emulator manufacturer (Yuzu/Citra's lead developer was involved), leading to its shutdown and a "chilling effect" on the wider emulation community due to fear of legal consequences.
32:00 Digital Preservation Efforts: The community is actively preserving digital content:
Archivists: Archiving 3DS Miiverse posts and content.
Pretendo: A community-led replacement for Nintendo's shut-down online services, allowing games like Pokémon and Smash Bros. to continue online play. Developers of Colors! 3D even officially integrated Pretendo into their 3DS app.
eShop Scraper: A tool to archive the now-defunct 3DS eShop, including videos and game listings, for future restoration.
35:46 Homebrew Community & Full Control: The homebrew scene has gained full control over the 3DS hardware, including access to crypto keys, allowing custom firmware and running any file.
36:31 Mikage - A New Emulation Paradigm: The speaker, having left Citra in 2016, started Mikage, a new emulator focused on "low-level" accurate hardware emulation.
Core Principle: Avoids "shortcuts" and leverages deeper hardware understanding.
Benefits: Can run native 3DS system software (e.g., the original setup screen, home menu), as opposed to reimplementing services. This leads to significantly less code (e.g., 80 lines for the file system vs. Citra's 3000).
Accuracy: Aims for "perfect emulation" of what the game expects, including bit-accurate graphics and fully functional audio.
Testing: Implements automated test APIs and graphics tests to ensure long-term accuracy.
51:19 Mikage's Vision: To bring low-level, accurate emulation to as many people as possible, focusing on the entire 3DS experience (system apps, online services, eShop restoration) not just games.
53:08 Current Status & Call to Action: Mikage is not yet released and is still under development. The speaker seeks collaborators to contribute to this project.