VICE started with a question that sounds impossible for 1993: could a Unix workstation pretend to be a Commodore 64? Jarkko Sonninen, a Finnish programmer, thought it could, and his X64 became “the first Commodore 64 emulator for the X Window System”, in the words of the VICE manual. More than thirty years later the project he founded still ships new releases, now covering nearly every 8-bit computer Commodore made and modelling the C64’s video chip one clock cycle at a time.
Fast facts
- Started: 1993, as X64, by Jarkko Sonninen
- Machines: Commodore 64 (and C64DTV and SuperCPU), C128, VIC-20, most PET models, Plus/4, CBM-II
- Licence: GNU General Public License, from at least 1996
- Current version: 3.10, released 24 December 2025
- Runs on: Windows, macOS, Linux and other Unix systems; older releases also for MS-DOS, OS/2, BeOS, Amiga and others
From X64 to VICE
The project’s own acknowledgments tell its early history through who wrote what. Sonninen wrote the first 6502 processor emulation and a debugger, then left after X64 version 0.2.1, around 1994. Teemu Rantanen wrote the SID sound emulation and the first disk drive support. Jouko Valta wrote the petcat and c1541 utilities and did most of the work on X64 0.3.
By 1996 Ettore Perazzoli was the maintainer. He wrote the 6510, VIC-II, VIC-I and CRTC video emulations and built “the event-driven cycle-exact engine”. André Fachat wrote the PET and CBM-II emulators and the CIA and VIA timer chips. By version 0.11.0, entered in the Linux software map in July 1996, the package had its new name, VICE, The Versatile Commodore Emulator, and carried C64, C128, PET and VIC-20 emulators for the X Window System. Its copying policy was already the GPL. Commodore’s ROMs were not included “for copyright reasons”; later releases do bundle them.
That 0.11.0 release shows what the team was chasing. Its change list says the VIC-II now “steals the correct number of cycles for bad lines and sprites”, so that FLD and other tricks involving bad lines, which depend on exactly when the VIC-II takes the bus from the processor, “are now emulated correctly”. According to the manual, the C64 emulator has been “fully cycle-accurate” since version 0.13.0.
By the end of the decade VICE ran on Windows as well. In February 2001 the German magazine PC Player described VICE as freeware that ran on Windows 9x, Linux, MS-DOS, OS/2, BeOS and RISC OS. It told readers to fetch games as .d64 disk and .t64 tape images, and showed off warp mode, which started games “much faster than back then”. Its rival, CCS64, was “just as strong” but “not as child’s-play to use as VICE” (the magazine’s words, in translation). Retro Gamer’s 2004 cover-disc list called WinVICE “the ultimate Commodore emulator”.
The machines
VICE is really a family of emulators, one program per machine:
| Program | Machine |
|---|---|
x64sc |
Commodore 64, accurate model |
x64 |
Commodore 64, older fast model (no longer built by default) |
xscpu64 |
C64 with the CMD SuperCPU accelerator |
x64dtv |
C64 Direct-to-TV |
x128 |
Commodore 128, including its Z80 and 80-column VDC |
xvic |
VIC-20 |
xpet |
PET and SuperPET |
xplus4 |
Plus/4 and its TED chip |
xcbm2, xcbm5x0 |
CBM-II business machines |
vsid |
a player for SID music files |
The package also includes command-line tools: c1541 for disk images, petcat for turning tokenised BASIC programs into text and back, and cartconv for cartridge images.
x64sc and cycle accuracy
Cycle-accurate timing was not the end of the job. Demo and game programmers change VIC-II registers partway along a line of the screen, and an emulator has to know which pixels come out before the change and which after. VICE 2.3, whose source archive is dated February 2011, added a second C64 emulator for this, x64sc. Its VIC-II was “rewritten from scratch using results from extensive testing with newly written test programs on real hardware”. It runs “on a cycle by cycle basis combined with pixel exact dot clock domain handling”, handles “all possible in-line splits of VIC-II registers”, and lets the user choose the C64 model and even individual chip revisions. “We believe x64sc is one of the most accurate C64 emulators at the moment,” the release notes said.
The accuracy costs processing power; the manual warns that x64sc “requires a much faster machine than the old x64”. Computers caught up, and since version 3.4 the old x64 is no longer built by default.
Sound got the same treatment. Dag Lem’s reSID engine, part of VICE since the late 1990s, models the SID chip’s waveforms, filters and ring modulation, and lets the user pick the 6581 or the later 8580. The 2.3 release gave reSID “emulation of all known pipeline delays for full cycle accuracy”. The CIA timer chips can be switched between the “old” 6526 and the “new” 8521 or 6526A, because cycle-exact programs can tell them apart.
Disk drives get the same care. Commodore’s drives have their own 6502 processor, RAM and ROM, and VICE’s “true drive” emulation runs all of it, with the serial cable between computer and drive “fully emulated”. The manual admits the cost: the emulator “has to emulate two CPUs instead of one”. It reads D64 and G64 images for the 1541, D71 for the 1571 and D81 for the 1581, T64 and TAP tape images, and CRT cartridge images.
For programmers
VICE has a built-in machine-language monitor, which the X64 of 1996 already had in an early form. Today it can set breakpoints on addresses and conditions, load symbol labels, disassemble, trace and inspect memory in the C64’s own banking arrangement. A remote monitor protocol lets outside tools, such as cross-development environments, drive it. Snapshots save the whole machine at any moment, and an event history records keyboard and joystick input for replay.
Still going
The VICE team has changed many times over three decades, and the manual lists the current core team and a long roll of former members. Version 3.0 arrived on 24 December 2016 and 3.10 on 24 December 2025. The home page lists modern builds for Windows, macOS and Linux, with older builds for many retired systems.
Released source code
VICE has always been distributed as source code under the GNU General Public License. The current source is on SourceForge, with a Git mirror on GitHub.
Sources
- VICE 3.10 manual (
doc/vice.texi), title page and Acknowledgments chapter (web, secondary): X64 as “the first Commodore 64 emulator for the X Window System”; the roles of Jarkko Sonninen, Teemu Rantanen, Jouko Valta, Ettore Perazzoli, André Fachat, Andreas Boose and Dag Lem; the C64 emulator “fully cycle-accurate since version 0.13.0”;x64andx64sc, and the dropping ofx64from default builds in 3.4; reSID, the 6581 and 8580, CIA models, drive and image formats, the monitor, snapshots and event history. https://vice-emu.sourceforge.io/vice_toc.html - VICE 3.10
README(web, secondary): the list of programs and utilities. - VICE
NEWSfile, “Changes in VICE-0.11.0” (bad lines and sprites, FLD) and “Changes in VICE 2.3” (the newx64scand the reSID overhaul) (web, secondary). https://vice-emu.sourceforge.io/NEWS - Linux Software Map entries for VICE 0.11.0 (entered 31 July 1996) and 0.14.1 (entered 21 March 1998) (web, secondary): the title “VICE, The Versatile Commodore Emulator”, the authors, the maintainer, “Copying-policy: GPL” and the ROMs “not included for copyright reasons”. http://www.zimmers.net/anonftp/pub/cbm/crossplatform/emulators/VICE/old/
- zimmers.net VICE archive listing (web, secondary): the 2.3 source tarball dated February 2011, and the 3.0 release dated 24 December 2016. http://www.zimmers.net/anonftp/pub/cbm/crossplatform/emulators/VICE/
- VICE home page (web, secondary): version 3.10 “released” on 24 December 2025, machines covered, GPL licence, current ports. https://vice-emu.sourceforge.io/
- PC Player (Germany), February 2001, p. 176: VICE as freeware on Windows 9x, Linux, MS-DOS, OS/2, BeOS and RISC OS;
.d64and.t64; warp mode; CCS64 as its rival. - Retro Gamer issue 5, 2004, cover-disc listing: “WinVICE … The ultimate Commodore emulator”.