-
Notifications
You must be signed in to change notification settings - Fork 0
Deferred Features
An honest running list of what Rusty2600 explicitly does not do — either permanently, by scope decision, or temporarily, pending a specific real-world blocker clearing. Distinguishing these two categories matters: some items on this page will never close no matter how many future releases ship; others are waiting on one concrete thing (a Mac toolchain, an upstream crate publishing a real release, live cloud credentials).
These are scope decisions, not gaps waiting to be closed by more engineering effort:
- Cheat-code (Game Genie-equivalent) system — no meaningful historical Atari 2600 analog existed, unlike consoles that had real commercial Game Genie products.
- Zapper / light-gun peripheral modeling — extremely rare historical peripherals with negligible real-world software support.
- Four-Score-style 4-player multitap — 2600 hardware itself never supported more than 2 controller ports; there's no analog to build.
-
Cart header/info parsing in the iNES style — 2600
.bin/.a26images have no header structure analogous to iNES; cart/mapper metadata display is scoped to whatdetect()itself resolves, not header parsing that doesn't exist for this console. - Chasing an open-ended mapper-number count — the Cart-Catalogue is a small, closed, fully-known set, already complete at 26/26. There is no larger number to chase the way an open mapper registry would require.
- 2600 keyboard controller / Trak-Ball peripherals — researched as a real question, not skipped by assumption. Concluded not worth modeling: genuinely obscure historical peripherals with a vanishingly small commercial-software footprint.
- Full TIA/RIOT test-ROM corpus conformance. No freely-redistributable 2600-specific TIA/RIOT test-ROM corpus exists anywhere — researched twice, confirmed by Gopher2600's own README making the identical admission. See Testing-Strategy for how accuracy work continues anyway, via differential-oracle cross-checking against known-hard commercial titles.
- HBLANK-region collision detection. Real hardware's collision-detection logic runs continuously regardless of HBLANK blanking; Rusty2600's collision evaluation is currently scoped to the visible 0–159 pixel window only. A real, if obscure, hardware behavior some advanced homebrew reportedly exploits as an invisible timing signal — deliberately deferred rather than rushed, since fixing it risks the already-verified visible-window positioning logic. See TIA.
- The 2600's exact TIA audio-clocking model for AUDC modes 0xA/0xB. Investigation found the classic simplified 16-entry lookup table (the model most emulators, including this one, historically use) doesn't match what Stella's current source actually implements for two of the sixteen distortion modes — the real hardware splits AUDC's bits into two independent phase-clocked counters at four fixed color-clock positions per scanline, not a simple per-tick lookup. Fixing this needs a dedicated audio-clocking rearchitecture, not a two-entry patch — tracked as real future work, not silently ignored.
-
In-browser Lua scripting.
mlua's native backend cannot targetwasm32-unknown-unknownat all (a hard wall in its vendored C build). The intended pure-Rust fallback,piccolo, was investigated for real and found not yet workable: its only published release is missing most of Lua'sstring/tablestandard library, and itsgc-arena-based architecture is a genuine mismatch for this project's current VM-embedding shape. Revisit oncepiccolopublishes a release with real stdlib coverage — an upstream milestone this project doesn't control the timing of. See Scripting-Engine. - Native (non-browser) WebRTC netplay. Browser-to-browser was always the primary target; a native path stays explicitly deferred. See Netplay-and-Rollback and Architecture-Decision-Records ADR 0008.
- iOS Xcode/Simulator/device verification. The iOS app is source-complete but has never been compiled or run — this development environment has no Mac toolchain at all. Not closeable by more release planning; needs a real Mac session. See Mobile-and-Cross-Platform.
- Real physical Android hardware verification. Only an Android emulator has been available so far; genuine physical-device or cloud-device-farm verification remains open.
- Cloud save-state sync (Android/iOS). The concrete reference implementations (CloudKit on iOS, Google Play Games Services v2 Snapshots on Android) are documented, but both need live backend credentials this development environment doesn't have.
- Cross-machine / cross-NAT netplay verification. STUN's request/response round trip and WebRTC's connection-establishment code path are both proven against real infrastructure, but full traversal between two independently-NATed peers on two different real networks has not been verified end-to-end — a single-host sandbox structurally cannot provide that test.
- The PAL visible-line budget (192 vs. 228 lines) is flagged pending a PAL test ROM to confirm definitively.
Testing-Strategy · TIA · Scripting-Engine · Netplay-and-Rollback · Mobile-and-Cross-Platform · Roadmap
Rusty2600 is a cycle-accurate Atari 2600 (VCS) emulator written in pure Rust. Licensed under MIT OR Apache-2.0. | GitHub Repository | Web Demo