Skip to content

0xNikilite/oboromi

Repository files navigation

oboromi logo

License Discord

(◕‿◕)  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 it fails it's probably your problem, since it should work

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.