This is a port of the MiST VIC20 core to the Turbo Chameleon 64 cartridge.

This is not the same as the official Chameleon VIC20 core which, as I understand it, was developed mostly as an exercise in debugging the VIA chip implementation (needed for 1541 disk drive emulation in the C64 core). Turning that core into a polished end-user product was never the main goal, or a high priority – which is why I felt it worthwhile to bring the MiST VIC20 core to Turbo Chameleon 64.

This is an experimental core, and while I do my utmost to make sure it works for everyone and will try to help solve any problems that arise, you run this core entirely at your own risk.

If you’d like to show your appreciation for this core, or motivate me to work on this and other cores in future, donations are welcome at or Anyone donating £20 or more via PayPal or sponsoring on Patreon at the second tier will be thanked by name in a “Core Supporters” shout-out page in subsequent releases.

Please note: it’s vitally important that you download the correct version of the core for your Chameleon.

VIC20 for Chameleon V1 hardware: If you have a single mini-DIN socket on the left hand side of your Chameleon, to which a breakout cable attaches for the keyboard and mouse, then you have V1 hardware and need this version:

VIC20 for Chameleon V2 hardware:  If you have three mini-DIN sockets on the left-hand side, with the keyboard and mouse plugging in directly, you have V2 hardware, and need this version:

Currently supported:

  • .PRG files
  • .TAP files
  • .D64 disk images
  • C64 keyboard / joystick
  • Real disk drives on the IEC port
  • CDTV joypad
  • Megacart emulation

Known problems:

  • The core doesn’t currently work correctly in NTSC mode. Disk loading seems to be OK, but neither tape nor cartridge loading works correctly. Loading a game and then switching to NTSC mode does appear to work, however.
  • After loading a .prg file you may have to type “RUN” to make the program run.
  • Occasionally the VIC will freeze after a program is loaded and will need to be reset.


The core requires a ROM file in the root of the SD card, called VIC20.ROM An example ROM file can be found at or you can create your own by joining together ROMS found in, for example, the VICE package. The ROMs should be concatenated in the order:

  • C1541 (16k)
  • Kernal PAL (8k)
  • Kernal NTSC (8k)
  • Basic (8k)
  • Char (4k)


A Megacart ROM image is now supported, along with a supporting NVRAM file.

The Megacart ROM is 2 megabytes in size and should be named “MEGACART.ROM”, while the NVRAM file is 8k, and should be named “MEGACART.NV”. If these are either in the root of the SD card, or in a directory named “CHAM20” they will be loaded at boot and the Megacart automatically activated. If they’re stored elsewhere on the SD card then they can still be loaded and activated manually through the menus.

The contents of the non-volatile memory will not be saved automatically – to save it you must select the “Write NVRAM” menu option from the Megacart menu.

Please note: while the Megacart is active, the memory configuration options in the menu will have no effect.


The VIC20 keyboard is emulated via the PS/2 keyboard, and the C64 keyboard is mapped directly.

There is now a keyboard-based joystick emulation – press the numlock key to toggle this. While the joystick emulation is enabled, the rest of the PS/2 keyboard is disabled.

Other keys:

FunctionPS/2 keyboardC64 keyboardCDTV controller
Reset / Cart unloadShift-F10
Play/Pause tapeF9Play/Pause

The tape play/pause function can also be accessed via the menu.

Hold the menu button for 1 second or longer to toggle the scandoubler on or off.

Source code for this core can be found at

The core is based on the FPGAArcade Replay VIC20 core by Mike Johnson and others. MiST port by Gyorgy Szombathelyi with contributions by Nino-porcino.

The Turbo Chameleon 64 port wraps the MiST core in a compatibility layer (DeMiSTify, by Alastair M. Robinson), and makes very few material changes to the core itself. It does, however, include the newer SID implementation from the MiSTer C64 core, by Alexey Melnikov, with the lookup tables’ representation adjusted to be more space efficient by Alastair M. Robinson.