VICE is a program that runs on a Unix, MS-DOS, Win32, OS/2, BeOS, QNX 4.x, QNX 6.x, Amiga, Syllable or Mac OS X machine and executes programs intended for the old 8-bit computers. The current version emulates the C64, the C64DTV, the C128, the VIC20, practically all PET models, the PLUS4 and the CBM-II (aka C610/C510). An extra emulator is provided for C64 expanded with the CMD SuperCPU.

Version 3.4 released on Dec 24th, 2019.


If you run into trouble please try removing any VICE configuration files left from previous installs.
(vice.ini / .vicerc / vice2.cfg / vice-sdl.ini depending on platform)

Before reporting bugs, always try with a clean config (run emulator with -default or use “restore default config” in the UI).

Changes in Vice 3.4

We are still looking for dedicated maintainers for the Windows port, if you want to help improving these and/or want to provide binaries, please get in touch.

We also needs support in fixing the various keyboard mappings, please test the keyboard in your favourite OS and port and report any problems.

We welcome dqh in the team, who will take care of the macOS port.


– Remove support for Syllable OS, SCO, QNX4, QNX6, SGI, AIX, OpenStep/NextStep/ Rhapsody, Solaris/OpenIndiana and remaining traces of Minix, NeXT, SKYOS, UNIXWARE, Sortix

– Remove remaining traces of support for WATCOM, MSVC, OpenWatcom

– Remove aRts support

– Remove YUV rendering

– Remove generation of .chm, .hlp and .info files. Please use the .pdf or .html

– skip building x64 unless –enable-x64 is passed to configure

– do not use the new/experimental 8580 filters unless –enable-new8580filter is passed to configure

– update pattern generator for uninitialized ram. changed defaults so all raminitpattern tests pass.

– remove block device disk image (rawdrive) “support”. in linux it was never needed (just use the device file) and on windows it was never implemented.

– added support for the IP232 protocol that was used by the long lost VICE1.19 hack, and which is supported by tcpser for emulating DTR/DCD (carrier detect)

– various userport rs232 fixes

– always save gifs as gif89

– added a couple shift flags to keyboard maps to support virtual cbm/ctrl and mandatory pressed host modifiers. not all keymaps have been updated yet.

– ACIA IRQ fix

– create empty half tracks when mounting d64. fixes skew.d64

– new headless port that can be enabled by passing –enable-headlessui to configure. this can be used to build an emulator without video output, which may be useful for scripting.

Autostart fixes

– Implemented autostart for tapecart images (.tcrt)

– Automatically change drive type when autostarting disk images that do not work with the currently active drive.

– Make AutostartRunWithColon default

– fixed autostart when memory hacks are enabled (plus60k, plus256k, plus4)

– make auto-starting from tape also respect the ‘basicload’ option, loading absolute by default

– when using a disk image to autostart .prg files, remove the .prg extension from the temporary file name

– many detail fixes that make autostart work as expected in all emulators and in all configurations (eg C128 in 80 columns or C64 mode)

Snapshot fixes

– More strict checking and more explizit error reporting

6510 fixes

– Accurate emulation of ANE#imm and LAX#imm “magic constant” dependency on RDY. All occurrences of unstable use are being logged now. LAX#imm “magic constant” changed to 0xEF, which makes the problem cases “spectipede” and “turrican 3” work.

– fix: reset should set the I flag

VIC-II fixes

– Accurate emulation of the “VSP bug”. Warnings about possible VSP related memory corruption are always logged, actual memory corruption is still optional.

– Fixed changing more than one colour register via monitor

VIC fixes

– new noise LFSR as reverse engineered by Lance Ewing.

SID fixes

– use model dependent floating output ttl values like in residfp


– Support full expressions in the monitor conditional breakpoints.

– When deleting checkpoints, reset the index to 1 when there are no more checkpoints left

– Added ‘RL’ for rasterline and ‘CY’ for cycle in line to list of conditionals that can be used for breakpoints.

– in mc/ms commands show asterisk for 1s and dots for 0s, not the other way around

– adjust number of disassembled lines so the top line does not scroll out of the window when labels are used.

– Added “log” and “logname” commands to control logging to a file


– added rudimentary support for CMD-style reading of the RTC

– respect error info in disk images (only when reading right now). Should trick some simple protections.

– report 65535 blocks free rather than 0 so that applications that query available disk space before saving work as expected, e.g. some BBSs

C-64 fixes

– added support for MAX Basic cartridge, new CRTID 61

– added clockport device for rrnet mk3

– fixed reading of ‘open’ clockport, fixed io dump for clockport devices

– implemented support for cartridge hardware revision in the crt format

– When attaching an Easyflash cartridge image, replace the EAPI driver with the one for the flash chip VICE supports. This way EF images that contain a different driver (for whatever reason) will still work.

– various keymaps added and/or fixed/updated.

C-128 fixes

– added proper C128D model type.

– various MMU fixes

– fixed broken memory mapping in C64 mode

– Completely rewritten VDC vertical handling code. VDC101 demo with it’s vdc-split technique is now fully emulated. This rewrite attempts to emulate more how the VDC works internally, and how the video signal/screen react, so the border height etc is now more naturally handled.

– Various misc VDC fixes, e.g. show blank lines with certain register combinations

Gtk3 UI

– Implemented “restore display” (Alt+r). Resets the active window to its minimal/natural size. Handy when stretching the window and then not knowing you can make the window smaller again with resizing that same window until it doesn’t get smaller.

– Change double-clicking images in smart/diskattach dialogs to ‘open’ instead of autostarting

– added options to select rendering backend and filter

– fixed opening files with UTF8 encoded filenames

– Make the (VTE) monitor display on top of the emulated machine window when in fullscreen

– copy only used icons into the distribution, which drastically reduced its size

– Added keyboard debugging to the statusbar

– Added * (all files) filter to the fliplist attach dialog. This will allow people to use Pi1541 *.lst files at their own peril.

– Add proper statusbar messages when using the fliplist.

– Add howto about creating a Gtk3-Windows cross-compiler on Debian with Fedora packages (aka FrankenVICE)

– only show the host keyboard mappings in the list for which we have a valid mapping, grey out symbolic/positional depending on what keymaps are actually available

– Move joystick settings to the joystick widget on the statusbar.

– Windows: add icons to binaries

– allow better control of the filter settings by removing tick marks of the sliders and adding spinboxes (6581+ReSID only)

– Fix the ‘media recording’ dialog to not show empty widgets when FFMPEG support is missing, show hint on compiling in FFMPEG instead.

SDL fixes

– make hotkeys only check left alt, which makes right alt (alt-gr) work in keyboard mappings.

macOS fixes

– make open-gl work

– binary distributions, font support, GTK3 dock icon

– fix missing icon theme, fixed pdf manual generation, improved build instructions

– fixed macOS make bindist when building out of tree

– Added instructions for building and debugging using Xcode


Notify of
Inline Feedbacks
View all comments