Skip to content

RustyNES v2.2.5 — "Colophon" (provenance, licensing, and documentation integrity)

Choose a tag to compare

@github-actions github-actions released this 04 Aug 03:05
0265b3b

RustyNES v2.2.5 — "Colophon" (provenance, licensing, and documentation integrity)

A provenance, licensing, and documentation-integrity release. It was prompted
by community review (NESdev forums) of the project's licensing and AI-assisted
origins, and it corrects how RustyNES describes its own provenance — in source
comments, in NOTICE, and in the docs — so the record matches what the code
actually is.

Zero emulation-core behavior changes. The deterministic #![no_std] chip stack,
save-state / TAS / netplay formats, and every golden vector are byte-identical to
v2.2.4 by construction, so AccuracyCoin holds 141/141 (100.00%) and nestest is
0-diff. This was re-verified after every change (AccuracyCoin full + run-ahead,
the nestest golden log, the dual-path differential net, and the snapshot-schema
audit), and the whole tree passes cargo fmt, clippy -D warnings (workspace +
feature combos), rustdoc -D warnings, markdownlint, and the no_std
cross-compile.

Why this release exists

A reviewer pointed out — correctly — that a number of in-source comments described
implementations as "ports" of other emulators, including GPL-licensed ones, and
that the project's AI-assisted nature was not disclosed. Rather than argue the
point, we audited the entire tree and fixed it. The short version:

  • The chip, mapper, and peripheral behaviors are implemented from public
    hardware documentation (the NESdev wiki, published datasheets, the documented
    6502 unofficial-opcode behavior) and pinned to public test ROMs. Where a
    reference emulator was consulted, it was used as a behavioral oracle — to
    observe and cross-check documented behavior — not as a source of copied code.
  • Some comments had mischaracterized that relationship as "ported from X." Those
    were reworded to state what actually happened. No GPL-licensed emulator source
    is incorporated into RustyNES.

Licensing & provenance

  • In-source "port" comments corrected across the CPU (unstable-store opcodes),
    PPU (sprite-evaluation and OAM models), APU, and numerous mapper register
    decoders — reframed from "ported from Mesen2 / puNES" (GPLv3 / GPLv2) to
    independent implementations of publicly-documented hardware behavior,
    cross-checked against reference emulators as oracles.
  • NOTICE rewritten to:
    • disclose the behavioral-oracle use of GPL-licensed emulators
      (Mesen2/MesenCE, higan, GeraNES, ares, FCEUX, Nestopia UE, puNES) with no
      code incorporated
      ;
    • attribute the genuinely incorporated permissive components — emu2413
      (Mitsutaka Okazaki, MIT), TriCNES (Chris Siebert, MIT), and rcheevos
      (RetroAchievements.org, MIT) — with their copyright notices and the MIT text;
    • attribute the bundled fonts (Font Awesome; Press Start 2P / OFL) and
      the bundled test ROMs (AccuracyCoin MIT, Damian Yerrick Holy Mapperel zlib,
      blargg / kevtris public domain);
    • credit the CRT-shader / NTSC-filter visual influences as independent
      reimplementations.
  • GeraNES (GPL-3.0-only) disclosed — it was cited as a reference across ~58
    files but was previously absent from NOTICE.
  • CRT shaders and NTSC filters (crt_royale, crt_guest, megatron, the
    Bisqwit and EMMIR NTSC filters) were reviewed at source level. Each is a
    single-pass shader built on RustyNES's own uniform/pipeline conventions and is
    structurally incompatible with being a translation of the upstream multi-pass
    shader source; copyright protects code expression, not a visual look or a
    rendering technique, so these are independent reimplementations. Comments were
    reworded from "port / condensation of X" accordingly, and the one comment
    claiming tables were "ported verbatim from Bisqwit's C" was corrected — those
    tables encode the two-level NES composite signal documented at the NESdev wiki.
  • blip.rs no longer mislabels blip_buf as BSD/MIT (it is LGPL-2.1+); the
    file is an independent band-limited-step (BLEP) implementation and now says so.

Documentation

  • New docs/originality-and-provenance.md — a candid account of where RustyNES
    advances, diverges from, or independently re-derives NES emulation technique
    (the one-clock timebase, the transistor-literal octal-latch fetch, the
    machine-checked accuracy-honesty gates, the determinism contract, measured-and-
    rejected optimizations), the development timeline, an oracle-versus-port
    classification of every reference, and the full license posture — written to be
    honest rather than triumphal, including that the project is heavily AI-assisted.
  • README — added an AI-assistance disclosure; removed a comparison graphic that
    contained inaccurate details; corrected a mislabeled "sub-cycle accuracy in
    action" screenshot caption (it was an early-development image); toned down
    overstated language; and synced the Acknowledgments with NOTICE.
  • tests/roms/LICENSES.md — fixed a false exclusion claim (four Holy Mapperel
    mapper ROMs stated as excluded are in fact committed), a stale crate path, and
    the AccuracyCoin sub-test count, and added blanket coverage for the committed
    directories not individually tabulated (328 committed .nes total, none
    commercial).

Assets

  • Press Start 2P OFL text added to the Android app assets. The font shipped in
    the Android app without the SIL Open Font License text that OFL 1.1 requires
    travel with the font; the desktop and iOS builds already carried it.

Compatibility

No format, save-state, or behavior changes. .rns save-states, .rnm movies, and
netplay replays are byte-identical to v2.2.4. The libretro core's
display_version advances to v2.2.5; there are no other functional changes to
the RetroArch integration.

Verification

  • AccuracyCoin: 141/141 (100.00%) — full suite and through run-ahead.
  • nestest: 0-diff against the Nintendulator golden log.
  • Dual-path differential net and snapshot-schema audit green.
  • cargo fmt --check, cargo clippy --workspace --all-targets -- -D warnings
    (plus the retroachievements / scripting / hd-pack feature combos),
    RUSTDOCFLAGS="-D warnings" cargo doc, markdownlint, and the no_std
    thumbv7em-none-eabihf cross-compile all pass.