KuroganeNES: A cycle-accurate NES/FDS emulator in a single HTML file (Help from Claude)
I've spent the last few months building a NES / Famicom Disk System emulator that runs entirely in the browser as a single, completely self-contained HTML file in Javascript. There is no installation, no build steps, and no external network requests. You just drop a ROM and play.
Live Web App: https://dzoberg.github.io/KuroganeNES/
GitHub Repository: https://github.com/dzoberg/KuroganeNES
Full disclosure: This project was built using heavy AI assistance. I handled the core architecture, directed the low-level hardware mapping, and did all the manual verification and debugging against test-ROM suites myself. I'm being transparent about it because I want real technical feedback rather than pretending I wrote all 50k lines by hand.
Features & Scope
I tried to cram as much hardware coverage into this single file as possible. It currently supports:
~328 Mappers: Including basic boards up to the weirder pirate and unlicensed clone mappers.
Famicom Disk System: Includes full RP2C33 audio and an embedded, clean-room reverse-engineered BIOS so it's legally distributable out of the box.
Nintendo Vs. System: Properly handles the unique arcade 2C04 color palettes and coin-door IRQs.
Audio: NSF/NSFe player alongside expansion audio support (VRC6/7, MMC5, N163, 5B, EPSM).
Peripherals: Zapper (mouse/touch), Power Pad, Oeka Kids Tablet, Family BASIC & Subor keyboards, and Datach/Barcode Battler emulation.
Tools: A built-in TAS Studio with frame-advance, recording, and rewind, plus a deep debugger suite covering nametables, patterns, OAM tracking, execution heatmaps, and a live NMI/IRQ/DMA timeline.
Netplay: Lockstep multiplayer over a tiny, zero-dependency Node.js WebSocket relay. Guest players don't even need the ROM file; the host streams the session payload directly on connection.
The entire thing sits at roughly 50,000 lines inside a single nes.html file. Third-party dependencies like pako and RomPatcher are completely inlined, and the retro fonts are embedded directly as base64 WOFF2 data URIs.
It's open-source under the MIT license. Let me know what you think.
Posted Jun 8, 2026, 4:54 AM UTC