mirror of
https://github.com/0xNikilite/oboromi.git
synced 2026-01-31 01:15:22 +01:00
16040431a10f39ec51ed62ac31a215c3bd756df5
(◕‿◕) 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
BRKinstructions - 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.
Description
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-01-31T05:25:22.048Z
Languages
Rust
100%