dependabot[bot] c1806b825f Bump criterion from 0.5.1 to 0.7.0
Bumps [criterion](https://github.com/bheisler/criterion.rs) from 0.5.1 to 0.7.0.
- [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bheisler/criterion.rs/compare/0.5.1...0.7.0)

---
updated-dependencies:
- dependency-name: criterion
  dependency-version: 0.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 12:54:19 +00:00
2025-07-22 15:41:52 +02:00
2025-06-09 21:42:37 +02:00
2025-06-09 21:42:37 +02:00
2025-08-02 22:55:50 +02:00
2025-08-04 12:54:19 +00:00
2025-06-09 20:11:08 +02:00
2025-08-03 14:13:12 +02:00

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
  • 4KiB 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.



[!WARNING] oboromi is not affiliated with Nintendo. This project does not contain any copyrighted firmware or ROMs.

Description
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-01-31T05:25:22.048Z
Readme 7.3 MiB
Languages
Rust 100%