mirror of
https://github.com/0xNikilite/oboromi.git
synced 2026-01-31 01:15:22 +01:00
c96ead17bfe0dd5d91cf2e7e92a2909a7fb4b12c
Introduces a new MMU module with TLB and page table support, and integrates it into the Memory abstraction. All memory accesses now go through the MMU, enabling address translation and basic virtual memory functionality. Includes identity mapping setup and a test for MMU functionality in main.
(◕‿◕) join the discord server 🢰
oboromi
A proof-of-concept Nintendo Switch 2 emulator written in Rust
Very WIP — nothing works yet, don’t expect miracles.
Overview
oboromi is a clean and modular emulator framework targeting the Nintendo Switch 2, written in Rust for maximum maintainability and performance.
Its goal is to simulate the new hardware step-by-step, following real architectural assumptions (when available) and clean software design.
Features (so far)
- ✅ Memory subsystem
• Bounds-checked byte and word reads
• 32-bit and 64-bit little-endian access (read_u32/write_u32,read_u64/write_u64) - ✅ CPU core
• Full ARM64 register file (X0–X30 + SP, PC)
• NZCV flag support (Negative, Zero, Carry, Overflow) - ✅ Implemented instructions
- NOP
- MOV Xd, #imm (ORR Xd, XZR, #imm)
- ADDI / SUBI: immediate arithmetic with flags
- ADD / SUB: register-form arithmetic with flags
- AND / ORR / EOR: logical register-form
- CMP (SUBS XZR, Xn, Xm) and TST (ANDS XZR, Xn, Xm)
- LDR / STR immediate 64-bit loads/stores
- B (unconditional branch) and RET (return)
- ✅ Integration tests
• Extensivemain.rsharness exercises each instruction path - 🧱 Modular architecture
• Ready for rapid addition of more instructions, subsystems, and peripherals
🧪 Try It
git clone https://github.com/0xNikilite/oboromi
cd oboromi
cargo run
You should see:
✅ Memory OK
✅ NOP OK
✅ ADDI OK
✅ SUBI OK
✅ ADDR OK
✅ SUBR OK
✅ AND OK
✅ CMP OK
✅ LDR/STR OK
✅ B OK
✅ RET OK
🔍 Current Target Hardware (Known)
| Component | Details |
|---|---|
| SoC | NVIDIA GMLX30-A1 |
| RAM | 12 GB LPDDR5X (2 × 6 GB SK hynix) |
| Storage | UFS 3.1 (Kioxia or SK hynix) |
| WiFi/BT | MediaTek MT3681AEN |
| Audio | Realtek ALC5658 |
| Voice | Intelligo IG2200 |
| Power | MAX77851 + DA9092 |
| USB | Genesys GL852G + Cypress CYPD6228 |
| GC ASIC | B2349 GCBRG HAC STD T2010423 |
[!NOTE] Only the comments are “vibe-written” — the code itself is fucking handcrafted in Rust.
[!WARNING] This project does not include any proprietary firmware, keys, or dumps. Everything is clean-room.
📜 License
This project is licensed under MPL-2.0 — see LICENSE for details.
Description
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-01-31T05:25:22.048Z
Languages
Rust
100%