Bump cc from 1.2.34 to 1.2.36
(◕‿◕) Join our Discord here 🢰
oboromi
a proof-of-concept Nintendo Switch 2 emulator written in Rust
Overview
oboromi is a modular and work-in-progress emulator for the upcoming 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 CPU core, a memory management unit (MMU) with basic paging, and a custom memory subsystem.
Important
oboromi is not yet playable and does not emulate any commercial firmware or games.
Features
JIT Backend (Dynarmic)
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.
these core features below are not used, wait for next updates
Memory Management Unit (MMU)
- Virtual to physical address translation via simple page table
- 4 KiB paging with TLB support (64 entries)
- Page faults and access violations are logged
- Mapping utility functions for identity and custom regions
Memory Subsystem
- Custom memory backend with:
- Region registration
- Bounds-checked access
- Load/store abstraction for 32-bit and 64-bit values
- Endianness-aware access
end of features not used
Testing & Examples
- Instruction-level test framework embedded in the project
- Tests cover:
- NOP
- ADD (immediate and register)
- SUB
- MOV
- Branching
- RET (using X30 as LR)
- Each test is run via
DynarmicCPU::step()and results are shown in the GUI (and in the terminal) - Example:
✅ NOP - PASS (65.4881ms)
❌ ADD X1, X1, #2 - FAIL: Verification failed (12.6993ms)
...
Note
If a test fails, it’s likely due to changes in the code or an unusual environment.
The test framework is designed to work reliably: if you run the program without modifying the code, you should see the ✅ marks for passing tests.
Any failures should prompt you to double-check recent changes or system configuration that might affect execution.
GUI (via eframe)
- Built-in GUI based on
egui - Always included and launched by default
- Provides:
- Partial memory viewer
- Manual test runner (via GUI button)
- Live output of instruction test results and stats
How to Run
git clone --recurse-submodules https://github.com/0xNikilite/oboromi
cd oboromi
cargo run
Contributing
Pull requests are welcome! Feel free to fork the repo, open issues, or suggest improvements.
📜 License
This project is licensed under the Mozilla Public License 2.0.
See LICENSE for details.
Useful Links
[!WARNING] oboromi is not affiliated with Nintendo. This project does not contain any copyrighted firmware or ROMs.