Agentic Commodore 64 Emulator

A Commodore 64 emulator that runs entirely in your browser, vibecoded with Claude. It emulates the real hardware from the ground up a cycle-stepped 6502/6510 CPU, the VIC-II graphics chip (text mode, sprites, raster interrupts), the SID sound chip, CIA timers, and a real datasette (tape) loader that feeds raw cassette signal pulses to the hardware exactly like a physical tape player, letting the actual KERNAL ROM do the loading.

Keyboard input is live: click the page, then type. Left Shift/Ctrl/arrow keys map to their C64 equivalents; Alt = the Commodore (C=) key, Escape = RUN/STOP, Home = CLR/HOME. SID audio is live too - any keypress starts it (your browser blocks sound until you interact with the page).

Load your own ROMs (optional)

Read entirely in your browser and never uploaded anywhere. You must supply your own legally obtained KERNAL/BASIC/character ROM dumps - none are bundled with this site. Loading none just keeps the demo boot running above.

Load a .prg

Machine-code programs only, loaded and run immediately - like a monitor's "G" (go) command. BASIC programs aren't supported yet.

Load a .d64

Fast loader only - reads the disk image's directory and file data directly, no real 1541 drive/IEC bus emulation. Machine-code programs only, same as the .prg loader above.

Load a .tap

Real datasette emulation, not a decoder: this delivers the tape's actual recorded signal to the C64 exactly like a real cassette player, and the tape's own loader code does the actual decoding - same as real hardware. That means loading a real KERNAL+BASIC ROM above and resetting to READY first is required; inserting a tape here just makes it available, typing LOAD (then RUN) is what actually starts reading it.

Load a .crt

Hardware type 0 ("Normal cartridge") only, 8K or 16K - bank-switching cartridge types (Action Replay, Ocean, etc.) aren't supported yet. Loading a real KERNAL+BASIC ROM above and resetting is what actually makes a cartridge autostart, exactly like real hardware (the cartridge's own signature is what the KERNAL boot code detects) - this zone alone just makes the ROM available.

Save state

Captures CPU, RAM, CIA and SID state to your browser's local storage. Restoring in this same tab needs nothing else; restoring after reloading the page needs the same ROM/tape/cartridge files loaded again first, same as a real C64 needs its ROMs plugged in before a freeze cartridge can resume anything.

Settings

SID model (6581 vs 8580) switch isn't implemented yet - everything below is real. NTSC only changes execution speed/audio pitch and raster-IRQ timing, not the rendered frame size (real NTSC has a visibly shorter frame - not reproduced here).

Joystick

On-screen touch controls, or plug in a gamepad - both map to port 2 by default, the port most single-joystick C64 software expects. Swap to port 1 in Settings below if a program needs that instead.