oboromi is a modular and work-in-progress emulator for the Nintendo Switch 2. It's built in Rust and focuses on correctness, clarity, and traceability rather than performance at this stage. The current implementation includes a functioning ARM64 CPU core using Dynarmic JIT compilation, comprehensive instruction testing, and cross-platform compatibility.
Important
oboromi is not yet playable and does not emulate any commercial firmware or games.
oboromi uses Dynarmic as a JIT backend for AArch64 instruction translation.
The included version is a fork with custom modifications designed to integrate directly with DynarmicCPU in oboromi.
- Reliable test framework using breakpoints and
run()instead of single-stepping - 10+ instruction tests covering core ARM64 operations:
- NOP, ADD, SUB, MOV operations
- Register and immediate arithmetic
- Control flow (branches, returns)
- Multi-instruction sequences
- 32-bit and 64-bit load/store operations with proper alignment handling
- Endianness-aware memory access using little-endian byte ordering
- Virtual address translation support via MMU with 4KB paging and 64-entry TLB
Memory Backend (memory.rs)
- 8MB RAM allocation with bounds checking on all accesses (
dynarmic_interface.rs) - Atomic operations support (compare-and-swap, atomic add)
- Exclusive monitor for ARM load/store exclusive instructions
- Direct C interface for Dynarmic integration
Memory Management Unit (mmu/)
- Virtual to physical address translation
- Sparse page table implementation with permission flags
- Translation Lookaside Buffer (TLB) with FIFO replacement
🧪 Starting Dynarmic JIT Instruction Tests...
Base address: 0x0000000000001000
Using run() with breakpoints for reliable execution
✅ NOP - PASS (24.3ms)
✅ ADD X1, X1, #2 - PASS (22.9ms)
✅ SUB X2, X2, #1 - PASS (23.4ms)
✅ ADD X0, X0, X1 - PASS (23.2ms)
✅ MOV X3, X4 - PASS (23.8ms)
✅ B +8 - PASS (24.1ms)
✅ RET - PASS (23.0ms)
✅ Atomic ADD Test - PASS (23.0ms)
✅ Memory Access Pattern - PASS (23.7ms)
✅ Multiple Arithmetic Ops - PASS (22.2ms)
📊 Test Summary:
Total tests: 10
Passed: 10 ✅
Failed: 0 ❌
Total time: 254.8ms
- Built-in GUI based on
egui - Provides:
- Test result display
- Real-time execution statistics
git clone --recurse-submodules https://github.com/0xNikilite/oboromi
cd oboromi
cargo runThe build system will automatically:
- Handle architecture-specific linking (Zydis/Zycore on x86_64 only)
- Compile the C++ interface
- Run the test suite when clicked on the main button
- Supports both MSVC and MinGW toolchains
- Automatic library linking for Windows APIs
- First test run may be slower due to JIT compilation
- Native support for both Intel and Apple Silicon
- nothing to note
Pull requests are welcome! Feel free to fork the repo, open issues, or suggest improvements.
This project is licensed under the Mozilla Public License 2.0.
See LICENSE for details.
Warning
oboromi is not affiliated with Nintendo. This project does not contain any copyrighted firmware or ROMs.