plus4emu – an open source, portable emulator of the Commodore 264 family of computers (C16, C116, and Plus/4), written in C++, and supporting Windows and POSIX platforms (32 bit Windows, 32 and 64 bit Linux, and MacOS X have been tested). It implements accurate, high quality hardware emulation, however, the system requirements are higher than that of most other emulators.
– 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 blurredness 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.
– The debugger also includes a TEDMON-like monitor with support for all the commands, as well as some improvements and additional features (assemble/disassemble offset, saving disassembly to a file, physical (22 bit) memory addressing mode, undocumented CPU opcodes in the assembler and disassembler, trace, search/replace pattern in memory, and more).
– It is also possible to debug the 6502 compatible CPUs in floppy drives and printers.
– The debugger supports scripting in the Lua language, to allow for advanced uses like breakpoints with custom defined, complex set of conditions.
– 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; see the plus4lib/plus4emu.h header file for details, and also plus4lib/sample.c for a simple example of using the interface
– 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.
– There is also 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