plus4emu – emulator of the Commodore 264 family of computers

plus4emu is an open source, portable emulator of the Commodore 264 family of computers (C16, C116, and Plus/4), written in C++.

This emulator is developed with the aim of implementing the best hardware emulation accuracy, at the expense of relatively high system requirements.

In addition to a complete, cycle exact emulation of the basic components, such as the MOS 6502 compatible CPU and the MOS Technology TED video chip, various external devices like the Commodore 1541, Commodore 1551, and Commodore 1581 floppy drives, the MPS-802 printer, and MOS Technology SID expansion are implemented.

Features include:

  • Cycle exact emulation of the 7501/8501 CPU, with full support for all documented and undocumented opcodes.
  • Cycle exact TED 7360/8360 emulation with very high level of compatibility, implements all documented video modes, PAL/NTSC mode switching, accurate sound emulation, as well as all known display artifacts; all registers can be read and written, and the internal operation and timing is reproduced with very good accuracy.
  • RAM size can be 16, 32, 64, 256, or 1024 kilobytes (the latter two using the Hannes memory expansion).
  • Up to 8 16 kilobyte banks of ROM can be loaded from external image files; using custom ROM files for the emulated floppy drives and printer is also possible.
  • Limited emulation of the ACIA 6551 registers.
  • Tape emulation with playback, recording, and setting tape position; markers can be created for quick positioning to specific tape locations (useful for tapes with multiple files):
    • Uses custom file format which is PCM audio data with 1 to 8 bits of sample resolution and variable sample rate, and header including the table of markers.
    • Limited (read only) support for the commonly used MTAP file format, as well as read-write (although without markers) support for sound files like WAV, AIFF, etc.
  • Hardware level emulation of the 1541, 1551, and 1581 floppy disk drives, with support for D64 and D81 files; compatibility with 1541 and 1551 fast loaders is fairly good in recent versions of the emulator.
  • IEC level 1551 floppy drive emulation for accessing .PRG, .P00, .R00, .S00, and .U00 files on the PC filesystem; this also supports the C, I, N, P, R, S, and V DOS commands.
  • Light pen emulation (compatible with the Trojan Light Pen software).
  • IEC level MPS-801 printer emulation.
  • Hardware level 1526/MPS-802 printer emulation.
  • Load and automatically start .PRG, .P00, .D64, .D81, or .TAP file on start-up.
  • .PRG, .P00, .D64, and .D81 files can be associated with plus4emu on Windows.
  • SID chip (MOS 6581 and 8580) emulation using version 0.16 of the reSID library written by Dag Lem; the Digi-Blaster expansion by Solder is also supported.


  • Graphical user interface using the FLTK library.
  • Software (FLTK based) or OpenGL video, with resizable emulator window, fullscreen mode, brightness/contrast/gamma can be set globally or separately for red/green/blue channels, color saturation control. Additional features in OpenGL mode only: single or double buffered (with synchronization to vertical refresh) mode, linear texture filtering, and some display effects.
  • High quality television (PAL and NTSC) emulation; implements full horizontal and vertical synchronization, blanking, equalization, sync, and burst signals, interlace, and (if OpenGL 2.0 shaders are available) separate luma/chroma filtering to emulate the blurriness of the TV picture.
  • Real time audio output uses the PortAudio library (v18 or v19), with support for many native audio APIs (MME/DirectSound/ASIO on Windows, OSS/ALSA/JACK on Linux, and CoreAudio on MacOS X); high quality sample rate conversion with low aliasing; volume control, two first order highpass filters with configurable cutoff frequency, and an optional parametric equalizer can be applied to the audio signal.
  • Recording audio output to a WAV format sound file.
  • Recording video and sound output to an AVI format video file, with RLE8 or uncompressed YV12 video at 24 to 60 frames per second, and 48000 Hz 16-bit PCM audio.
  • Saving screenshots as 768×576 24-bit RLE compressed TGA files.
  • Saving and loading snapshots of the state of the emulated machine.
  • Demo recording (snapshot combined with stream of keyboard events which can be played back with accurate timing).
  • GUI debugger with support for breakpoints/watchpoints, viewing the current state of CPU registers and memory paging, displaying memory dump or loading from or saving to a file in ASCII or binary format, and disassembler with support for all undocumented 6502 opcodes.
  • Configurable keyboard map for the emulated machine; it is also possible to use external game controller devices like joysticks and gamepads.
  • mouse and clipboard support for setting the cursor position, copying, and pasting text in the emulated machine.
  • The Plus/4 emulation can be used in other programs as a shared library with a C interface.

Support: SourceForge
Developer: Istvan Varga
License: GNU GPL v2


plus4emu is written in C++. Learn C++ with our recommended free books and free tutorials.

Return to Home Computer Emulators Home Page

Read our complete collection of recommended free and open source software. The collection covers all categories of software.

The software collection forms part of our series of informative articles for Linux enthusiasts. There's tons of in-depth reviews, alternatives to Google, fun things to try, hardware, free programming books and tutorials, and much more.
Share this article

Share your Thoughts

This site uses Akismet to reduce spam. Learn how your comment data is processed.