Skip to content

Architecture Decision Records

DoubleGate edited this page Jun 29, 2026 · 1 revision

Architecture Decision Records (ADRs)

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 .rnm specification for recording and playback.
  • ADR 0010: Lua Scripting Engine - Standardizing on mlua for 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.

Clone this wiki locally