oboromi is an experimental Nintendo Switch 2 emulator foundation. It currently cannot run commercial games or firmware and focuses on CPU instruction emulation and testing.
Prerequisites
Before you begin, ensure you have the following installed:Rust Toolchain
Latest stable version required
CMake
Version 3.16 or higher
Ninja
Build system for compilation
C++ Compiler
MSVC (Windows) or Clang (macOS/Linux)
Installation
Build and run
The emulator uses a Cargo workspace with two main components: This will:
core (emulator library) and gui (frontend).- Download and compile all Rust dependencies
- Build the
oboromi-corelibrary (CPU, GPU, filesystem, and system services) - Build the
oboromi-guifrontend using eframe/egui - Launch the GUI application
What’s Included
oboromi is structured as a Cargo workspace with the following components:oboromi-core
oboromi-core
The core emulation library located in
core/:- CPU: 8-core ARMv8 CPU emulation using Unicorn Engine
- GPU: SM86 (NVIDIA Ampere) stub GPU with Vulkan backend
- Memory: 12GB shared memory emulation
- Filesystem: VFS implementation for 32GB UFS/eMMC
- System Services: HLE (High-Level Emulation) of 150+ Nintendo Switch 2 firmware services
oboromi-gui
oboromi-gui
The GUI frontend located in
gui/:- Built with eframe/egui for cross-platform support
- CPU test runner interface
- Real-time test result display
- Logging system with file output to
oboromi.log
Scripts & Documentation
Scripts & Documentation
Additional tools in
scripts/:decoder_generator.rs: Generates GPU instruction parser codesm_86_instructions.txt: SM86 instruction dump from DocumentSASSsm_86_latencies.txt: Instruction timing informationdocs/sm86.pdf: Auto-generated instruction set documentation
First Steps
Once the GUI is running:- Run CPU Tests: Click the “Run CPU Tests” button to verify the ARM64 emulation is working correctly
- View Logs: Test results appear in the scrollable results panel with color-coded output:
- Green for passing tests
- Red for failing tests
- Check Log File: Detailed logs are written to
oboromi.login the project directory
Enable Tracing
For detailed execution tracing, build with thetrace feature:
oboromi-core and oboromi-gui.
Troubleshooting
Build fails with missing CMake
Build fails with missing CMake
Install CMake 3.16 or higher:Ubuntu/Debian:macOS:Windows:
Download from cmake.org or use
choco install cmake ninjaC++ compiler errors
C++ compiler errors
oboromi requires a modern C++ compiler for the Unicorn Engine dependency.Linux:Windows:
Install Visual Studio 2019 or later with C++ development tools
GUI doesn't launch
GUI doesn't launch
Ensure you have the required graphics drivers:
- Linux: Install Vulkan drivers and
libvulkan1 - Windows: Update your GPU drivers
- macOS: MoltenVK should be installed automatically
Next Steps
Detailed Building
Learn about the build system and dependencies
Running the Emulator
Explore all runtime options and features
Contributing
Help improve oboromi development
Architecture
Understand the emulator’s design
Community
Join the oboromi community:- Discord: discord.gg/g9sehj8bPz
- GitHub: github.com/0xNikilite/oboromi
- License: GNU General Public License v3.0
