-
-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture Decision Records
DoubleGate edited this page Jun 29, 2026
·
1 revision
RustyNES uses Architecture Decision Records (ADRs) to document major structural changes, library additions, and architectural shifts. These records follow the Michael Nygard format and are located in the docs/adr/ directory.
Below is an index of key decisions that shaped the emulator:
-
ADR 0001: Mapper Dispatch - Choosing the
Box<dyn Mapper>pattern for cartridge dispatch over giant enums to optimize compilation and isolation. - ADR 0002: IRQ Timing Coordination - The roadmap plan for the v2.0.0 fractional master-clock timebase refactor.
- ADR 0007: DMC Get/Put Scheduler - Implementing the get/put cycle alternation model for DMC DMA conflicts.
-
ADR 0008: TAS Movie Format - Establishing the deterministic
.rnmspecification for recording and playback. -
ADR 0010: Lua Scripting Engine - Standardizing on
mluafor native script execution. - ADR 0011: Mapper Tiering - The categorization of mappers into Core, Curated, and BestEffort to maintain the 100% AccuracyCoin guarantee.
- ADR 0024: Mobile Bridge - Standardizing on UniFFI for a platform-agnostic bridge between the core and Android/iOS hosts.
- ADR 0025: FOSS vs Play Flavors - The Android split separating proprietary SDKs from open-source builds.
These ADRs provide the why behind the what, preserving the historical rationale for long-term maintainability.
RustyNES is a cycle-accurate Nintendo Entertainment System emulator written in pure Rust. Licensed under MIT OR Apache-2.0. | GitHub Repository | Web Demo