Nikilite c96ead17bf Add MMU with TLB and paging; integrate with Memory
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.
2025-07-09 00:20:19 +02:00
2025-06-09 21:42:37 +02:00
2025-06-09 21:42:37 +02:00
2025-06-09 20:27:23 +02:00
2025-06-30 10:17:37 +02:00
2025-06-09 20:11:08 +02:00
2025-06-26 02:28:53 +02:00

oboromi logo

License Discord

(◕‿◕)  join the discord server 🢰

oboromi

A proof-of-concept Nintendo Switch 2 emulator written in Rust

Very WIP — nothing works yet, dont 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 (X0X30 + 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
    • Extensive main.rs harness 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
Readme 7.3 MiB
Languages
Rust 100%