Skip to content
This is a screenshot of a classic Commodore 64 game Gangbusters
This is a screenshot of a classic Commodore 64 game Gangbusters Image by Prickly Pear Software, via Wikimedia Commons (Public domain).

viciious

COMMODORE 64 AMIGA EMULATOR

viciious

Viciious is a JavaScript Commodore 64 emulator that runs in desktop web browsers and under Node.js. It is distributed as a single self-contained HTML build for browser use and a Node-targeted JS bundle for terminal use, and includes realtime visualization tools and a small set of bundled demo files and tests.

commodore 64 amigaPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why Viciious exists

Viciious was written for tinkering and exploration of C64 hardware and software. It emphasizes runtime introspection (visual ‘scopes’ that show internal machine state), an integrated ‘half-assembler’, and the ability to run in both browser and Node.js terminal environments. The author aims for a self-contained, serverless single-file distribution for ease of experimentation.

BEST FOR

What Viciious does well

Runs a PAL Commodore 64 in real time in modern browsers; provides developer-friendly visualizations and tools to inspect VIC-II, memory access and other internals; supports drag-and-drop loading of common C64 file formats (.t64, .d64, .tap, .prg, .sid), snapshot saving, and a Node.js host mode for command-line use and automated testing.

Maniac Mansion gameplay on Commodore 64
Gameplay from Maniac Mansion on Commodore 64.

The people behind viciious

History & status

The project is hosted on GitHub (luxocrates/viciious) and the repository contains source, build instructions, a limitations document and a live demo served from the project's GitHub Pages. The repo describes Viciious as a PAL C64 emulator that attempts some cycle-accurate behaviours but is not fully cycle-accurate; it emulates the CPU, VIC-II, SID and CIAs to varying degrees and intentionally omits some features (for example no disk drive emulation; tape emulation exists). The distribution is provided as a single-file HTML build for browser use and as a Node.js bundle for terminal runs. Licensing information in the repository places the emulator code and UI assets in the public domain while noting that some bundled ROM/test/demo files are derived from other authors and are not covered by that declaration. The repository shows active development history, issues and pull requests on GitHub (repository activity and number of commits visible in the project page).

What viciious supports

  • Web browsers (desktop; single-file HTML build)
  • Node.js terminal host (command-line run)
  • Drag-and-drop of C64 program and image files: .t64, .d64, .tap, .prg, .sid
  • Snapshot save/load (browser UI)

Download and availability

OFFICIAL DOWNLOADS

Get viciious

Official builds and source are available from the project's GitHub repository and Releases page. The live demo (single-file HTML build) is hosted on the project's GitHub Pages site; source and build scripts are in the repo for those who want to build custom bundles.

Get viciious ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

viciious setup guide

Setup note: This setup guide covers using the live browser build, building locally, and running the Node.js host. It focuses on verified, repo-documented steps and practical notes about file formats, input mapping and limitations.

  1. Try the live demo (quickest): Open the project's GitHub Pages demo (the repository README links to the live demo). In the browser build you can drag-and-drop .t64, .d64, .tap, .prg or .sid files onto the page to run them. Click the page to open the emulator menus; cursor keys and Shift map by default to joystick on Control Port 2. Use the UI to save snapshots (right-click the provided snapshot link to save).
  2. Download an official build or the source: Visit the project's GitHub repository and Releases page to obtain released single-file builds or the source archive. The repository contains a dist/web-prod/viciious.html output path description for the production browser bundle.
  3. Build from source (browser single-file production bundle): Prerequisite: install Node.js (as referenced in the repo). Clone the repo, then run npm ci to install dependencies. To create the single-file production HTML bundle run npm run build-web-prod. The built file will be created under dist/web-prod/viciious.html. Serve that file locally by opening it in a desktop browser (no server required) or host it as static HTML.
  4. Run in development (local webhost): After npm ci, run npm start to start the development server; open http://localhost:8080 in a desktop browser. The dev build boots faster (it patches the Kernal to skip the startup RAM test) and supports live recompilation during source edits.
  5. Build and run the Node.js host: Create the Node bundle with npm run build-node. That produces dist/node/viciious.js. Run it from the repo root as: node dist/node/viciious.js <someprogram> where <someprogram> is a path to a .t64, .tap, .prg or .sid file (the Node mode does not produce audio for .sid files). If you omit the program argument the emulator will boot to BASIC.
  6. Loading disks, tapes and programs: The browser build supports drag-and-drop of .t64, .d64, .tap, .prg and .sid. The emulator includes tape emulation but does not emulate a disk drive; the README notes it offers direct-injection of program files into memory for quick loading (including from disk images). Use the UI menus to change input mapping or to load snapshots.
  7. Controls, input mapping and joystick: By default, cursor keys map to the C64 cursor behaviour and also act as a virtual joystick on Control Port 2; Shift is mapped as the fire button. The menus allow switching to a more direct mapping for compatibility with some software (some games may require disabling the cursor-as-joystick mapping).
  8. Testing and known limitations: The repo includes Wolfgang Lorenz’s emulator test suite and npm run test-lorenz runs it; many CPU opcode tests pass but a number of hardware tests (CIAs, VIC, SID filter) are incomplete. The project README and LIMITATIONS.md document current gaps: PAL C64 focus, imperfect cycle-accuracy, lack of disk drive emulation, and absent SID filtering. Expect compatibility issues with some titles and non‑interchangeable snapshots across major versions pre-1.0.0.

Software reminder: You must provide any commercial ROMs, firmware, BIOS files or copyrighted game images yourself; the project does not include or claim to include commercial C64 ROM images.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for viciious as they are published.