a proof-of-concept Nintendo Switch 2 emulator.
Find a file
Nikilite d171d3934b
Some checks failed
Security Audit / security (push) Has been cancelled
Update README.md
2025-12-20 15:46:28 +01:00
.github [workflows] Simplify conditional checks in CI workflow 2025-12-16 00:41:29 +01:00
assets [cosmetic] Add a splash screen 2025-11-10 23:47:37 +01:00
benchmarks add .gitkeep to root-level folders 2025-06-09 21:42:37 +02:00
core [core] Add register handling and SPIR-V pointer ops to GPU backend 2025-12-16 23:06:57 +01:00
docs [*] add contribution docs and refactor core modules 2025-11-18 23:52:55 +01:00
examples track project folders with .gitkeep 2025-06-09 21:46:42 +02:00
gui [*] fix CI/Windows build and optimize SPIR-V emission 2025-12-16 00:58:25 +01:00
scripts track project folders with .gitkeep 2025-06-09 21:46:42 +02:00
.gitignore [*] move oboromi-core to core, oboromi-gui to gui, crates names kept as-is 2025-11-17 22:31:15 +01:00
.gitmodules Update .gitmodules 2025-08-02 22:55:50 +02:00
Cargo.lock [*] fix CI/Windows build and optimize SPIR-V emission 2025-12-16 00:58:25 +01:00
Cargo.toml [*] move oboromi-core to core, oboromi-gui to gui, crates names kept as-is 2025-11-17 22:31:15 +01:00
CONTRIBUTING.md changed license to GPLv3 2025-11-21 23:42:21 +01:00
license.txt changed license to GPLv3 2025-11-21 23:42:21 +01:00
README.md Update README.md 2025-12-20 15:46:28 +01:00

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. It currently emulates an 8-core ARM64 CPU with 12GB of shared memory.

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 and CpuManager provide:

  • 8-Core CPU Architecture: Orchestrated via CpuManager with shared memory access.
  • Full ARM64 register access (X0-X30, SP, PC) per core.
  • 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

  • 12GB Combined Emulated RAM (Lazily allocated)
  • 32-bit and 64-bit load/store operations with little-endian byte ordering
  • Direct memory read/write primitives for testing

GPU Emulation (Work in Progress)

  • SM86 Instruction Decoding: Implementation of NVIDIA SM86 shader instruction decoding (128-bit instructions).
  • SPIR-V Generation: translating decoded instructions (like al2p) into SPIR-V intermediate representation.
  • Foundation for future compute and graphics shader translation.

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

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 GNU General Public License v3.

See LICENSE for details.



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