ACE (Emulator)

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
German GUI - Main window
ACE is a high quality Amstrad CPC/CPC+ emulator written by Philippe "OffseT" Rimauro.

It is developed exclusively for MorphOS as a user-friendly and fully OS-compliant application.
Also, PulkoMandy is maintaining a port for Haiku which tries to match the features of the original version as much as possible.

ACE was coded from scratch, using a real CPC as a reference in order to provide one of the best Amstrad CPC emulator ever. Most of the games and demos for both CPC and CPC+ are working perfectly; the quality of the emulation is often superior to what the existing CPC emulators on PC/Windows can produce.

In addition to the high quality emulation, ACE features full screen and overlay display (including 50Hz display), editor and analyzer windows for all emulated CPU and chipsets, advanced breakpoints management, a very powerful set of AREXX commands for cross-development, a plugin interface, scripting capabilities, and much more...

Moreover, ACE is fully translated in French, Spanish, German and English and is still under active development.

Also worth mentioning is ACE-DL, an emulator available for Windows, macOS and Linux, which uses the same emulation engine as ACE but with a minimalist GUI (SDL-based), no localization, no scripting capabilities, and no support for external plugins.

Emulator capabilities

ACE emulates most CPC hardwares and their variants.


  • Handling of the entire CPC and CPC+ range.
  • Full Z80 emulation.
  • Up to 256 expansion ROMs.
  • Up to 4 MiB of extended memory.


  • Accurate CRTC emulation of the various CRTC types.
  • Gate Array full emulation of all variants (perfect split rasters management).
  • CPC+ ASIC full emulation (unique quarter-cycle precision).
  • CTM644, GT65 and MM12 monitors emulation (including dynamic analog behaviors).


  • Full and very accurate PSG emulation (AY-3-8912).
  • Extremely accurate audio DMA emulation on CPC+.


  • Accurate but incomplete FDC emulation (Format and Scan instructions are missing).
  • Accurate emulation of both floppy disc drives (real rotation speed computation, manual drive & side switches support).
  • CPC+ Cartridge port emulation (including upcoming extended cartridges).
  • Emulation of the tape interface through audio files (read only).
  • Accurate emulation of the keyboard (including ghost keys when pressing more than three keys at once).
  • Automatic keyboard remapping can be activated if your are using ACE with a keyboard layout unknown by the original CPC firmwares.
  • Plugins interface to support virtually any external device.

Graphical interface

ACE MUI graphical interface is designed to be versatile and very easy to use, and everything is always updated in real time to match the actual emulator state.

  • Simple and modular configuration of the CPC profiles to emulate using tool types (from Ambient) or arguments (from CLI).
  • Ability to change the CRTC type or the screen monitor model on-the-fly without having to reset the running program.
  • SNA and DSK files management (all of them!) with automatic on-the-fly detection and fix of the corrupted DSK.
  • CPR files management for CPC+ cartridges (including support of extended cartridges up to several hundreds on megabytes).
  • Overlay support with real pixel aspect ratio.
  • Full screen support with the ability to choose the graphic mode to use in order to get back the 50Hz smoothness if your screen monitor can do this.
  • Maskable interface in both windowed & full screen modes.
  • Floppy disc drives LED activity OSD when the interface is not displayed.
  • Rich breakpoints management on predefined conditions (HBL, VBL, interrupt...), on graphical coordinates, on execution addresses, on memory accesses and on I/O ports accesses (with the ability to use complex conditions, masks on the break address and/or the break value) with the option to execute scripts.
  • Video beam cursor to see the cathode's ray position while on pause or in step by step mode.
  • Memory editor (management of all RAM and ROM switching, automatic detection of the character code page depending on the installed firmware ROM).
  • Z80 disassembler with highlight on opcodes and fast jump buttons on branch instructions.
  • CRTC editor (full real time read/write access to the registers).
  • Z80 editor (full real time read/write access to the registers).
  • Gate Array analyzer (palette display, graphic mode, interrupt internal counter).
  • PSG analyzer (played notes, tuning, and a bunch of rich information from the current PSG settings).
  • Hard sprites analyzer (palette and content).
  • DMA analyzer (full real time state and instructions being executed).
  • Video information window (frequencies, beam ray position...).
  • Virtual keyboard and joysticks.
  • Ability to map joystick to keyboard when in case real joystick is available.
  • Internal keyboard matrix state observer.
  • Screen monitor settings window (type, brightness, vertical hold).
  • Sound volume control.
  • Online help and MUI's bubbles help available everywhere to help the beginners.

Programmable interface

ACE is designed to be expandable and controllable. You are not limited to the core emulation and can you easily integrate it in any cross-development tool chain.


ACE support plugins that allow anybody with some C language knowledges to add support for expansions connected to joystick, printer or expansion CPC port.



  • Albireo (MicroSD, USB, and more).
  • X-Mass (IDE interface).
  • Dandanator (programmable game cartridge module)
  • Play2CPC (Amstrad Plus compatible game cartridge module, with embedded additional 3 voices PSG sound card)
  • Nova (NV-RAM and RTC).
  • MultiPlay (additional mice and joysticks ports).
  • Willy (18 channels FM synthetizer and MIDI sound cards).
  • PlayCity (6 voices PSG sound card).
  • Amdrum (8-bit mono sound card).
  • SSA-1 (English speaking speech synthesizer).
  • DK'Tronics Speech (English speaking speech synthesizer).
  • Techni-Musique Speech (multilingual speaking speech synthesizer).
  • Mirage Imager (hardware freeze and snapshot handling).
  • Cycle counter (developer helper).


Any scripting language (such as Python, Lua or of course AREXX) can be used to control ACE through its AREXX interface. It gives you full control on the emulator in order to automate things (and much more), or even to use ACE as a powerful cross-development station (including integration into an IDE).

Web links