$ account 100thCoin
AccuracyCoin is a comprehensive NES ROM-based test suite designed to verify the accuracy of NES emulators and hardware implementations. Containing 141 individual tests covering CPU instructions, PPU rendering, APU sound, timing behaviors, and hardware quirks, it serves as a valuable tool for emulator developers seeking to ensure their implementations match the behavior of original NES hardware (specifically targeting RP2A03G CPU and RP2C02G PPU revisions). The application features a navigable test menu accessible via standard NES controller inputs, allowing users to select and run specific tests, skip problematic tests, and view detailed pass/fail results with error codes. A distinctive debug menu, activated by the Select button, provides real-time inspection of memory contents including CPU registers and specific RAM regions, facilitating troubleshooting without external debugging tools. Each test is meticulously crafted to isolate specific hardware behaviors, often employing cycle-accurate timing techniques to probe edge cases and timing-dependent phenomena. What sets AccuracyCoin apart is its sophisticated approach to handling hardware variations - many tests acknowledge multiple valid behaviors that different NES revisions or implementations might exhibit, assigning success codes rather than simple pass/fail outcomes. This nuanced verification approach, combined with the comprehensive coverage of NES subsystems and the thoughtful design of the test harness and debug utilities, makes it a standout resource in the NES homebrew and emulator development communities.
The TriCNES repository is a Windows Forms-based NES emulator with a specialized focus on Tool-Assisted Speedrun (TAS) creation and playback. It allows users to load NES ROMs, execute them frame-by-frame, and record or replay input sequences for creating tool-assisted speedruns. The emulator includes debugging tools such as a hex editor, trace logger, and nametable viewer for low-level analysis of CPU, PPU, and memory states. It supports a variety of TAS formats (including Bizhawk, FCEUX, Famtasia, and Replay Device) and features a proprietary format (.3ct) designed for experimenting with intercycle cartridge swapping. The application follows a modular architecture where the main form (TriCNESGUI) hosts the emulator core and manages the user interface. Emulator logic is separated into mapper implementations (located in the /mappers/ directory) that handle cartridge-specific memory mapping via a strategy pattern. Tool windows (hex editor, trace logger, etc.) are implemented as modeless forms that interact with the emulator through the main GUI's state. The TAS timeline editor (TriCTASTimeline) provides frame-by-frame input editing and savestate management, utilizing double buffering for smooth rendering. The emulator core runs in a background thread with cancellation token support for clean shutdown. Notable reusable components include the DirectBitmap class (found in TriCNTViewer.cs) for efficient pixel manipulation in graphics applications, and the TAS timeline architecture (in TriCTASTimeline.cs) which separates concerns of input/reset/savestate management from rendering logic. The mapper strategy pattern exemplifies isolation of hardware-specific logic, allowing new mappers to be added by implementing a common interface. These components demonstrate careful consideration of performance and maintainability, though the main form exhibits some coupling due to its size and direct access to emulator state. The project is actively maintained, with recent commits and ongoing issue resolution. It targets the .NET Framework 4.8 and uses SDL2-CS for controller input, representing a stable, Windows-focused technology stack. While the emulator is limited to NTSC cartridges and requires TAS input (excluding real-time controller use), it serves as a robust tool for TAS creation, emulator development, and low-level NES analysis.