Oboromi v0.0.1-dynarmic is released. oboromi is a modular and work-in-progress emulator for the Nintendo Switch 2. It's built in Rust and focuses on correctness, clarity, and traceability rather than performance at this stage. The current implementation includes a functioning CPU core, a memory management unit (MMU) with basic paging, and a custom memory subsystem. oboromi is not yet playable and does not emulate any commercial firmware or games.Oboromi Features:
JIT Backend (Dynarmic)
oboromi uses Dynarmic as a JIT backend for AArch64 instruction translation.
The included version is a fork with custom modifications designed to integrate directly with DynarmicCPU in oboromi.
Comprehensive Instruction Testing
Reliable test framework using breakpoints and run() instead of single-stepping
10+ instruction tests covering core ARM64 operations:
NOP, ADD, SUB, MOV operations
Register and immediate arithmetic
Control flow (branches, returns)
Multi-instruction sequences
Memory Management
32-bit and 64-bit load/store operations with proper alignment handling
Endianness-aware memory access using little-endian byte ordering
Virtual address translation support via MMU with 4KB paging and 64-entry TLB
Key Components:
Memory Backend (memory.rs)
8MB RAM allocation with bounds checking on all accesses (dynarmic_interface.rs)
Atomic operations support (compare-and-swap, atomic add)
Exclusive monitor for ARM load/store exclusive instructions
Direct C interface for Dynarmic integration
Memory Management Unit (mmu/)
Virtual to physical address translation
Sparse page table implementation with permission flags
Translation Lookaside Buffer (TLB) with FIFO replacement
Oboromi Changelog:
Now we use Dynarmic as a JIT backend for AArch64 instruction translation. macOS support has been greatly improved, including x86_64 and ARM64 builds. Build scripts and CI workflows were refactored for cross-platform consistency.
Added x86_64 support for macOS in CMake build script
Refactored macOS build environment setup and ARM64 handling
Improved macOS ARM64 build and CI workflow
Refactored test harness for more flexible instruction execution
Various build fixes for case-sensitive library paths and cross-platform support
Updated dependencies (serde, cc, eframe, egui, bitflags, criterion, thiserror, fern, log)
Dynarmic CPU interface and FFI bindings refactored
Added some atomic operations and FFI interface to memory system
Improved Boost patching and unified build flags
Added JIT warmup phase to prevent compilation timeouts on slower hardware
PRs (without @dependabot[bot] ones)
Major fix for linux. by @PersonFromLatvia in #9
Fix build on Linux by @mlaadd in #31
fix(build): Update the way to build app by @twde49 in #33
Download: Oboromi v0.0.1-dynarmic
Source: Here
0 Comments
Post a Comment