Thanks to visit codestin.com
Credit goes to github.com

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 foundation written in Rust

Overview

oboromi is a modular and work-in-progress emulator foundation for the Nintendo Switch 2. It's built in Rust and focuses on correctness, clarity, and traceability rather than performance at this stage.

Important

oboromi is not (yet) a full Switch 2 emulator. It does not run any Nintendo firmware or games.

Current Features

ARM64 CPU Emulation (Unicorn Engine)

oboromi uses Unicorn Engine for ARM64 instruction emulation. The UnicornCPU wrapper provides:

  • Full ARM64 register access (X0-X30, SP, PC)
  • Memory mapping with permission control
  • Breakpoint handling via BRK instructions
  • Safe Rust interface with proper error handling

Comprehensive Instruction Testing

  • Reliable test framework using breakpoints and run() for stable execution
  • 10/10 instruction tests passing covering core ARM64 operations:
    • NOP, ADD (immediate/register), SUB (immediate)
    • MOV (register), RET, B (branch)
    • Multi-instruction sequences and memory access patterns
  • Fast execution

Memory Management

  • 8MB emulated RAM with bounds-checked access
  • 32-bit and 64-bit load/store operations with little-endian byte ordering
  • Direct memory read/write primitives for testing

GUI (via eframe)

  • Built-in GUI based on egui
  • Provides:
    • Real-time test result display with pass/fail indicators
    • Execution timing statistics
    • Clean, responsive interface

Testing & Verification

Starting Unicorn Instruction Tests...
  Base address: 0x0000000000001000
  Breakpoint address: 0x0000000000002000

Warming up Unicorn emulator...
  JIT warmup completed in 199.4µs

  Running test: NOP
  Running test: ADD X1, X1, #2
  Running test: SUB X2, X2, #1
  Running test: ADD X0, X0, X1
  Running test: MOV X3, X4
  Running test: B +8
  Running test: RET
  Running test: Atomic ADD Test
  Running test: Memory Access Pattern (3 instructions)
  Running test: Multiple Arithmetic Ops (3 instructions)

📊 Test Summary:
  Total tests: 10
  Passed: 10 ✅
  Failed: 0 ❌
  Total time: 18.7ms

How to Run

git clone https://github.com/0xNikilite/oboromi
cd oboromi

# Build and run (requires CMake and Ninja)
cargo run

The build system will automatically:

  • Compile the Unicorn Engine C++ bindings
  • Link required libraries
  • Launch the GUI with integrated test suite

Prerequisites

  • Rust (latest stable)
  • CMake (3.16+)
  • Ninja build system
  • C++ compiler: MSVC (Windows), Clang (macOS/Linux)

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.

About

a proof-of-concept project for a possible Nintendo Switch 2 emulator.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages