General
- Graphical user interface using the FLTK library.
- Software (FLTK based) or OpenGL video, with resizable emulator window, fullscreen mode, brightness, contrast, gamma, hue, and color saturation control; additional features in OpenGL mode only:
- single or double buffered (with synchronization to vertical refresh) mode
- linear texture filtering
- resampling video output to the monitor refresh rate
- some display effects: motion blur, scanline shading, and (if OpenGL 2.0 shaders are available) PAL TV emulation
- Real time audio output uses the PortAudio library (v18 or v19), with support for many native audio APIs (MME/DirectSound/WDM-KS/WASAPI 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 768x576 RLE8 or 384x288 uncompressed YV12 video at 24 to 60 frames per second, and 48000 Hz stereo 16-bit PCM audio.
- Saving screenshots as 768x576 8-bit RLE compressed BMP 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 tape editor utility for copying Enterprise files from/to ep128emu tape images.
- GUI debugger with support for breakpoints/watchpoints, viewing the current state of CPU and I/O registers and memory paging, displaying memory dump and searching for a pattern of bytes, and disassembler with support for all documented and some undocumented Z80 opcodes.
A simple monitor is also included, with commands like assemble, disassemble (also to a file), trace, memory and I/O port dump and modify, printing and changing CPU registers, memory compare, copy, fill, search, load and save, and more.
For most operations, addresses can be 16 bit CPU (affected by current paging) or 22 bit physical (all ROM and RAM data can be accessed, regardless of memory paging) addresses. Watchpoints can also be set on I/O ports and physical addresses.
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.
Enterprise emulation
- Instruction based emulation of the Z80 CPU, supports all documented and some undocumented opcodes, and memory wait states (including synchronization with the NICK chip when accessing video memory).
- RAM size can be set in 16 kilobyte steps in the range 64 to 3712.
- ROM can be loaded from external image files to segments 00h to 07h, 10h to 13h, 20h to 23h, 30h to 33h, and 40h to 43h.
- Using external configuration files, it is also possible to define any memory configuration without the above limitations.
- NICK chip emulation, supporting all documented and undocumented video modes.
- DAVE emulation, including timers, interrupts, external ports for tape and keyboard/joystick, memory paging, and sound output (all effects are supported, and the polynomial counters generate the same pseudo-random “noise” pattern as on the real machine).
- 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 EPTE format tape files, as well as read-write (although without markers) support for sound files like WAV, AIFF, etc.
- WD177x (floppy drive controller) emulation for EXDOS.
- IDE hard disk emulation; supports up to 4 2 GB disks, image files can be in raw or VHD format.
- Optional extension ROM (epfileio.rom) that implements a FILE: device for direct access to files on the host system in a single user selectable directory.
- Spectrum emulator card emulation.
- Real time clock (at ports 7Eh, 7Fh).
- External 4-channel 8-bit DAC at ports F0h to F3h.
Spectrum emulation
- Instruction based emulation of the Z80 CPU, supports all documented and undocumented opcodes, and cycle accurate synchronization with the ULA chip when accessing video memory and I/O ports.
- RAM size can be 16, 48, or 128 kilobytes.
- ROM can be loaded from external image files.
- ULA, AY-3-8912, keyboard, and Kempston joystick emulation.
- 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 read-write (although without markers) support for sound files like WAV, AIFF, etc.
- Spectrum tape files in .tap format can be used as tape images for read-only hardware level tape emulation, or loaded directly to memory if the “Enable virtual file I/O” option is checked in the machine configuration.
- It is also possible to load .tzx format tape images, although the support for these is not complete yet.
- Loading SNA and Z80 format snapshot files created by other emulators is supported; however, snapshot saving and demo recording are only possible in the native ep128emu format.
Amstrad CPC emulation
- Instruction based emulation of the Z80 CPU, supports all documented and undocumented opcodes, and cycle accurate synchronization with the CRTC and gate array when accessing video memory and I/O ports.
- RAM size can be 64, 128, 192, 320, or 576 kilobytes.
- ROM can be loaded from external image files to the lower ROM and expansion ROMs 0 to 7.
- 6845 CRTC (currently type 0 only), gate array, AY-3-8912, 8255 PPI (modes 1 and 2 are not supported yet), keyboard, and joystick emulation.
- 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 read-write (although without markers) support for sound files like WAV, AIFF, etc.
- CPC tape files in .cdt (same as Spectrum .tzx) format can be used as tape images for read-only hardware level tape emulation, although the support for this format is not complete yet.
- uPD765 (floppy drive controller) emulation; it supports standard and extended .DSK files, and also access to real disks (not very useful in practice, since only PC format disks can be used this way), as well as limited emulation of the timing of disk rotation, stepping, and data transfers. The FORMAT TRACK (0x0D) command is not implemented yet, and some copy protected games and .DSK files with unusual track formats may not work correctly.
- Loading SNA snapshot files (v1 or v2; v3 is loaded, but the extra information about the internal state of the hardware is currently ignored) created by other emulators is supported; however, snapshot saving and demo recording are only possible in the native ep128emu format.