ACE · Index

Index | Browse >




    ACE 1.26
    The acidulous CPC/CPC+ emulator.

    Copyright © 2011-2024 Philippe Rimauro
    All rights reserved.

     Introduction     - Why and how?
     Requirements     - What do you need?
     Installation     - Installation process

     Features         - What's possible?

     Usage            - How to use?
     Configuration    - ACE at your command
     Scripts & tools  - Going further...

     FAQ              - Useful advice
     Known bugs       - Known problems

     Future           - What to expect next?
     History          - What's news?

     Credits          - Who did it?

    The official homepage: http://ace.cpcscene.net.

    You could also:
      * Read our fanzine in form of a wiki (French): http://quasar.cpcscene.net.
      * Download CPC/CPC+ games, demos and tools   : http://www.cpc-power.com  .

    Please note that the English version is a translation of the original French
    version and might not be always accurate or complete yet.
    You can then refer to the French documentation.
    Sorry for the inconvenience.


ACE · Introduction

Contents | Index | < Browse | Browse >




    Introduction


    While PC freaks were playing around with many Amstrad CPC emulator, none was
    available for MorphOS!

    This could not be!

    Then, I started my work... and here it is: ACE CPC Emulator.

    Moreover, as MorphOS deserves what is best, ACE is not just a small little
    CPC emulator; it expects to become the best CPC emulator on any platform
    ever!

    ACE is not based on an existing emulator and was coded from scratch, using
    a real CPC as reference; it is written in C language and its GUI is based on
    the famous MUI (Magic User Interface) for an optimal look and feel.

    ACE let you use almost the entire CPC and CPC+ softwares without any
    compatibility issue, and with a higher quality than the best CPC emulators
    available on PC these days!


ACE · Requirements

Contents | Index | < Browse | Browse >




    Requirements


    Minimal configuration:
    (for ACE to be one frame using hardware video overlay)

    * MorphOS 3.18 or better.
    * 4 MiB of free hard disk space.
    * 16 MiB of free RAM.
    * A 700 MHz CPU for CPC emulation (1 GHz for CPC+ emulation).

    You will need a more powerful processor if you disable the hardware video
    overlay (not a good choice!).


ACE · Installation

Contents | Index | < Browse | Browse >




    Installation


    No real installation is needed.
    Just copy the ACE drawer where you want.

    Optional installs:

    * ACE takes advantage of the fresample.library from Dietrich Epp to enhance
      the audio output quality. If not installed, it will fall back to the
      builtin audio filter which is slightly faster but triggers AHI flaws
      regarding resampling.

    * ACE uses the MCC_HexEdit MUI class from Miloslaw Smyk to display
      some advanced informations in the secondary windows. If it is not
      installed, you will not be able to use then. Anyway it will not affect
      the basic usage of ACE.

    * To use the REXX scripts bundled with ACE you need to have the
      rexxsyslib.library installed in your LIBS: drawer (if not, the AREXX
      commands can be used standalone with the help of RxCmd shell command or
      using Lua).

    * To encode the videos recorded with ACE into standard video files,
      you need to install the ffmpeg MorphOS port from BeWorld. It should be in
      your path to be able to directly use the encoding script generated by ACE
      for each recorded video.

    * To integrate ACE with Ambient, you can also install the icons
      and file descriptors provided in the "Bonus" drawer. They will add
      recongnition of disc images, cartridges, snapshots, and ACE video records
      (arec files).


ACE · Features

Contents | Index | < Browse | Browse >




    Features


    Almost all of the games and demos for both CPC and CPC+ are working
    perfectly with ACE; actually, the quality of the emulation is often superior
    to what the existing CPC emulators on PC/Windows can produce (enjoy!).
    Furthermore, ACE is a clean application with a polished user interface which
    is totally integrated with the MorphOS operating system.

    Emulator:

    * System:
      · Handling of the entire CPC and CPC+ range (including the GX4000).
      · Full Z80 emulation.
      · Up to 256 expansion ROMs.
      · Up to 4160 KiB of extended memory.

    * Video:
      · Accurate CRTC emulation of the various CRTC types.
      · Gate Array full emulation of all variants (perfect split rasters
        management).
      · CPC+ ASIC full emulation (unique 250 ns precision).
      · CTM644, GT65 and MM12 monitors emulation (including dynamic analog
        behaviours and a special mode to analyse off-screen display).

    * Audio:
      · Full and very accurate PSG emulation (AY-3-8912).
      · Latency garanteed to be less than one video frame.
      · Extremely accurate audio DMA emulation on CPC+.

    * Devices:
      · Accurate but incomplete FDC emulation ("format" and "scan" instructions
        are missing).
      · Accurate emulation of both floppy disc drives (real rotation speed
        computation, drive & side manual switches support).
      · CPC+ cartridge port emulation.
      · 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 depending on the keyboard layout used on
        the host computer.

    Graphical interface:

    * Simple and modular configuration of the CPC to emulate using tool types
      (from Ambient) or arguments (from CLI).
    * Ability to change the CRTC type, the Gate Array version 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 new extended
      cartridges).
    * Hardware video overlay support with real pixel aspect ratio.
    * Full screen support with the ability to choose the graphic mode
      to use in order to ensure native 50 Hz smoothness (if your screen monitor
      can handle it).
    * Maskable interface in both windowed and full screen modes.
    * OSD for floppy disc drives activity and other useful information 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); also with
      the option to execute scripts on each breakpoint.
    * Rich symbols handling in all parts if the GUI dealing with
      addresses.
    * Memory editor, in unlimited number, management of all RAM and ROM
      switching, automatic detection of the character code page depending on
      the installed firmware ROM.
    * Z80 disassembler, in unlimited number, with highlight on opcodes, smart
      symbols detection and display, and fast jump buttons on branch
      instructions.
    * Memory map (intuitive visualization of current memory map).
    * Graphic palette (current graphic mode and color palette).
    * 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 (interrupt internal counter, current video address
      and pixel type).
    * PSG analyzer (detection of played notes, tuning, and a bunch of rich
      information from the current PSG settings).
    * ASIC analyzer (main ASIC registers).
    * Hard sprites analyzer (palette and content).
    * DMA analyzer (full real time state and instructions being executed).
    * Video information window (frequencies, beam ray position...).
    * Option to use some keyboard mapping instead of a real joystick when none
      is available.
    * Memory preferences window (amount and type, including specific buggy RAM
      emulation).
    * Screen monitor settings window (type, brightness, vertical hold).
    * Sound volume control using stereo or mono (internal speaker emulation).
    * Screen grabbing with high quality rendering.
    * Video recording modular and customizable at will.
    * Quick help integrated everywhere to help the beginners.
    * Localized in French, German, Spanish and English (including the quick
      help).

    Programmable interface:

    * Handling of expansion plugins that allow anybody with some C language
      knowledges to add support for expansions connected to joystick, printer or
      expansion CPC port (including memory and interrupt management).
      By default are provided:
      · A plugin to support both joysticks (up to three fire buttons) using real
        devices plugged on the host machine (using USB or whatever), with a
        unique combined mode which let you control both CPC joysticks with one
        single device.
      · A Plugin to support for Digiblaster/Soundplayer.
      · A Plugin to redirect CPC printer port to a file.
      · A Plugin to support the Kempston mouse.
      · A Plugin to support the AMX mouse.
      · A Plugin to support the Multiface Two.
      Numerous additional plugins are available on the official web site.

    * Support of an AREXX interface which allows to fully control the emulator
      and to manipulate its memory, in order to automate things and more, or to
      use ACE as a powerful cross development station by integrating it into any
      existing IDE.

    * Scriptable events to execute script or programs on various events to
      customize ACE behavior.


ACE · Configuration

Contents | Index | < Browse | Browse >




    Configuration


    ACE configuration can be modified using the icon's tool types (when launched
    through Ambient), or by using simple arguments (when launched from a CLI).

    Once launched, most of the main configuration options remain accessible
    using the "Preferences" menu.

    Usually, you won't need to manually update the tool types; saving the
    preferences from the "Preferences" menu will automatically update the tool
    types of the icon accordingly to your current settings.

    Tool types/Arguments:

    * RS=RAMSIZE/K/N: choose the size of the CPC memory. 64 KiB is the minimum
      and 4160 KiB the maximum (64 KiB of main memory plus 4096 KiB of expansion
      memory). Up to 576 KiB the expansion memory follows Amstrad standard
      (DK'Tronics compatible), further it follows Ram7's Memcard expansion
      scheme and is compatible with both Memcard 2MB and CPC4MB. The size of the
      memory can be changed at anytime while ACE is running.
      Only value which are multiple of 64 are allowed.
      Default value is 128 KiB (just like a stock Amstrad CPC6128).

    * OS=OSVERSION/K: choose the operating system ROMs version to use. Four
      versions are existing: version 1 was integrated to CPC464, version 2 to
      CPC664, version 3 to CPC6128 and version 4 was embedded in the system
      cartridge of 464plus and 6128plus. Practically, any operating system
      version is compatible with any CPC model.
      Some of the operating system versions are available for different
      countries in order to adapt keyboard layout and charset; ACE will load
      to one corresponding to your hosting system locale setting if possible.
      Versions 1 to 3 are existing for French, Spanish, Danish and English,
      version 4 is existing for French, Spanish and English, version 2 is
      only available in English.
      The operating system is composed of three ROMs:
        - the firmware which is the boot ROM,
        - the BASIC which is the applicative default ROM,
        - the AMSDOS which is the disc ROM (only used on systems equipped with
          a floppy disc drive interface).
      All the operating system ROMs can be found in the drawer "System" of ACE.
      Alternatively, you can compose the operating system by hand using the
      tooltypes FIRMWARE/K, BASIC/K and AMSDOS/K.
      By default the version 3 of the operating will be used; it's the one which
      is compatible with most of the CPC softwares.

    * FW=FIRMWARE/K: choose the firmware ROM to use. It must point to a binary
      ROM file of 16384 bytes max (or 16512 bytes if the AMSDOS header is
      included).
      If the tooltype is not specified then the firmware ROM matching both the
      selected version of the CPC operating system (see OSVERSION/K tooltype)
      and the locale setting of your host system is used.
      By default "ROMs/Firmware_?x.rom" will be loaded (where x is the version
      number of the operating system and ? a letter for the country).

    * BAS=BASIC/K: choose the BASIC ROM to use. It must point to a binary ROM
      file of 16384 bytes max (or 16512 bytes if the AMSDOS header is included).
      Warning: not any BASIC ROM is compatible with any firmware ROM! You must
      use BASIC 1.0 for v1 firmware, BASIC 1.1 for v2 and BASIC 1.2x or 1.4 for
      v3 or v4 (please note that BASIC 1.2x and 1.4 are hiding their real
      version number and are announcing themselves as being BASIC 1.1 at boot up).
      By default "ROMs/Basic_v1.2x.rom" is used (where x is a revision number
      which depends on the country: 3 for France, 1 for Spain and 0
      for any other country).

    * CPM=AMSDOS/K: choose the AMSDOS ROM to use. It must point to a binary ROM
      file of 16384 bytes max (or 16512 bytes if the AMSDOS header is included).
      The AMSDOS is the default ROM 7 which will be replaced by any installed
      external ROM 7 (configurable through ROM7/K tooltype).
      Warning: not any AMSDOS version is compatible with any firmware ROM! Use
      AMSDOS 0.5 for firmware versions 1 to 3 and AMSDOS 0.7 for firmware
      version 4. You could alternatively use the excellent PARADOS (of Richard
      Wilson) which is compatible with all firmware versions.
      By default "System/CPM05.rom" will be used for firmware versions 1 to 3
      and "System/CPM07.rom" for version 4.

    * ROM<x>/K: choose the extension ROM number <x> to use (x must be between 0
      and 255).
      For number 0, this ROM must be background ROM (such as another BASIC,
      a CP/M or a Hacker) and it will replace the default builtin BASIC at
      boot time.
      For number 7, this ROM is historically the disc ROM of the CPC (the
      AMSDOS). To avoid compatibility problems with some softwares you should
      always configure a disc ROM at this slot (the bundled CP/M ROM or the
      PARADOS replacement ROM). When provided the internal AMSDOS ROM will be
      invalidated and this ROM 7 will be used instead.
      By default no extension ROM is installed.

    * A=DRIVEA/K: choose the disc image file to preload in drive A.

    * B=DRIVEB/K: choose the disc image file to preload in drive B.

    * TAPE/K: choose the tape audio file to preload in tape reader.

    * SNA=SNAPSHOT/K: choose the snapshot file to preload into the CPC.

    * CPR=CARTRIDGE/K: choose the cartridge file to preload into the CPC+
      Note: CPC+ emulation mode is forced at startup when a cartridge to preload
      is specified.

    * FILES/K/M: give a list of files to preload into ACE.. The list can
      contain any type of file, disc image, audio file, snapshot file or
      cartridge file ; ACE will load them together depending on their type.
      Si several disc image files are given in the list, the first one will be
      loaded in the drive A and the second one in the drive B, all other disc
      image files will be ignored. For other file types, only the first one of
      each type will be used, the other ones are ignored.

    * PLUS=CPC+=AMSTRADPLUS/S: activate the CPC+ emulation at startup.
      CRTC type 3 will be automatically selected and CRTC option is ignored.

    * CRTC/K/N: choose the type of CRTC to use at startup. Please note that
      you can change the type of CRTC at anytime while the emulator is running.
      By default CRTC 1 is used.

    * BRAND=MANUFACTURER/K: choose the brand of the CPC to emulate. All the
      manufacturers planed by Amstrad are possible (ISP, Triumph, Saisho,
      Solavox, Awa, Schneider, Orion and Amstrad).
      By default Amstrad is used, except for German speaking countries where
      Schneider is used.

    * 64K=64KEXPMEMSCHEME/S: activate the emulation of a 64 KiB based model
      (basically a CPC464, CPC664 or 464 plus). On these models the main RAM is
      switched rather than the extension RAM when using non existing memory
      pages.

    * NDI=NODISCINTERFACE/S: totally disable the emulation of the floppy disc
      drive interface. This way you are able to emulate a stock CPC464 or
      464plus. The disc interface car be enabled/disabled at anytime while ACE
      is running.

    * DKB=DKTRONICSBUGS/K: activate the emulation of the DK'Tronics bugs.
      When using a DK'Tronics the upper ROM is visible in the area &4000-&7FFF
      instead of &C000-&FFFF if it is switched on while RAM pages &4000-&7FFF
      and &C000-&FFFF are swapped (&C3 mode of the Gate Array) and the shadowing
      of the RAM by I/O ASIC page of the Amstrad Plus is not handled.

    * TAP=TAPEAUTOPLAY/S: activate the autoplay feature of the tape reader. You
      will no longer have to press play after having inserted a tape. This
      option can be enabled ou disabled at anytime while ACE is running.

    * NTS=NOTAPESOUND/S: disable the tape audio feedback that is usually
      listened in the CPC speaker. This option can be enabled or disabled at
      anytime while ACE is running.

    * <plugin name>.ACEPANSION/S : activate the related plugin at ACE
      startup. For instance JOYSTICKS.ACEPANSION will activate the plugin which
      is emulating joysticks at ACE startup.

    * MHP=MOUSEHANDLERPRIORITY/K/N: change the priority of the input handler
      used by the plugins dealing with mouse emulation (between -128 and +128).
      By default a priority of 120 is used.

    * AV=AUDIOVOLUME/K/N: choose the startup sound volume. The volume can be
      changed at anytime while ACE is running.
      By default the volume is at 100%.

    * AU=AHIUNIT/K/N: choose the AHI unit to use.
      By default ACE uses unit 0.

    * AF=AUDIOFILTER: select the audio filter to use for output. Valid values
      are: Resample, HiCut and None. Resample is activated by default when the
      fresample.library is found on your system. It is an advanced filtering
      which resamples audio output to the native frequency of the host machine
      to avoid AHI flaws in that regard. It makes ACE about 1% slower but
      provides a better audio quality. HiCut is the filter which is used by
      default when the fresample.library was not found. With this filter ACE
      adapts the PSG emulation to exclude frequencies which are not in the
      audible audio spectrum. Such sounds cannot be sampled by the audio sound
      card that might produce bad artefacts (because of aliasing). It is really
      fast and provides intermediate audio quality. Finally, if you have some
      professional sound card with huge sample rate or if you prefer to rely on
      the AHI driver filters (sic), you can disable all the embedded filter with
      the value None (it is not recommended, there is no speed benefit against
      HiCut filter, only quality loss on most hardwares).

    * NS=NOSOUND/S: by default ACE plays sounds. This option disable the sound
      at start-up. You can change the sound state at anytime while ACE is
      running.

    * FULL=FULLSCREEN/S: switch ACE to full screen mode at startup. Full
      screen mode can also be switched on/off at anytime while ACE is running.

    * ID=SCREENMODE/K/N: by default ACE clones Ambient screen to open its
      own screen in full screen mode; it is generally what you expect. Anyway,
      you can specify a mode ID to use instead. It can be useful if your screen
      supports 50 Hz (or 100 Hz) frame rate that you want ACE to use in order to
      have a smoother display (most CPC games and demo are running at 50 Hz).

    * NO=NOOVERLAY/S: by default ACE tries to use overlay mode. This option
      tells ACE not to do so. Generally overlay should always be preferred
      because it is faster and it looks better. Moreover, the software rendering
      (without overlay) is limited and should only be used as a last chance. The
      overlay mode can also be activated/disabled at anytime while ACE is
      running.

    * NW=NOWARN=NOWARNINGS/S: by default ACE displays warning messages when bad
      DSK or SNA files are loaded. This option disable these messages.

    * NSC=NOSNAPSHOTCOMPRESSION/S: by default ACE saves compressed snapshots.
      With this option, compression is disabled to keep compatibility with old
      programs.

    * SSE=SNAPSHOTEXTENSIVE/S: activate the snapshot extensive mode where all
      possible additional data will be embedded. At the moment it will only
      affect saving of used ROMs (when enabled) by storing full ROMs contents
      in addition to ROMs files references.

    * SSR=SNAPSHOTSTOREROMS/S: also store and retrieve information about used
      ROMs to/from snapshots

    * SSDA=SNAPSHOTSTOREDISCA/S: also store and retrieve information about used
      disc image in drive A to/from snapshots

    * SSDB=SNAPSHOTSTOREDISCB/S: also store and retrieve information about used
      disc image in drive B to/from snapshots

    * SST=SNAPSHOTSTORETAPE/S: also store and retrieve information about used
      tape to/from snapshots

    * SSC=SNAPSHOTSTORECARTRIDGE/S: also store and retrieve information about
      used cartridge to/from snapshots

    * SSP=SNAPSHOTSTOREPLUGINS/S: also store and retrieve information about used
      plugins list to/from snapshots

    * SAC=SNAPSHOTADJUSTCRTC/S: reconfigure the CRTC to match the loaded snapshot
      requirements.

    * SAMS=SNAPSHOTADJUSTMEMORYSIZE/S: reconfigure the memory size to match the
      loaded snapshot requirements.

    * SACP=SNAPSHOTADJUSTCOMPUTERMODEL/S: reconfigure the CPC model to match the
      loaded snapshot requirements.

    * NSI=NOSNAPSHOTICONS/S: by default ACE saves the snapshots with an icon
      (an .info file) representing what is on the display. With this option
      these icons will ont be saved anymore.

    * NAG=NOANTIALIASEDGRABS/S: by default, ACE saves antialiased screen grabs
      using a filter that mimics the actual rendering on a CPC color screen
      monitor. With this options no filter will be applied to the grabs.

    * OSC=OFFSCREENCOLOR/K/N: when ACE is running windowed or in full screen
      mode with a ratio different from the real CPC screen, some margins are
      automatically added at the top/bottom or left/right of the display to
      ensure the original CPC pixel ratio. With this option you can choose the
      color of this border in the form of a 24 bit RGB value.
      By default it is a dark grey (0x181820).

    * KJ=KEYJOY/S: set this option to use the keyboard instead of a real
      joystick 0; "up", "down", "left", "right", "control" (fire 2), "left alt"
      (fire 1), and "left shift" (fire 3, not on Amstrad Plus) are used. This
      option can be activated/disabled at anytime while ACE is running.

    * AKM=ADAPTKEYMAP/S: set this option to automatically reconfigure the
      CPC firmare ROM to better match the key map used on your host machine. Of
      course this options will only work if you are using a standard firmware
      ROM; it might not work properly with custom ones. This option could be
      very useful if ACE is running on a computer using a key map that was never
      supported on CPC, but it could be incompatible with some bad written CPC
      softwares. This option can be activated/disabled at anytime while ACE is
      running.

    * HI=HIDEINTERFACE/S: do not show user interface gadgets; only the CPC
      display will be visible in the main window. This option can also be
      activated/disabled from the preferences menu at anytime while ACE is
      running.

    * NBC=NOBEAMCURSOR/S: do not show the beam cursor position while emulation
      is paused. This option can also be activated/disabled from the preferences
      menu at anytime while ACE is
      running.

    * AP=AUTOPAUSE/S: active automatic emulation pause and then start
      when the main window becomes inactive or active again. This option can
      also be switched on/off at anytime while ACE is running.

    * WS=WILDSPEED/S: disable the accurate speed emulation limit for a real
      CPC. In this wild mode, the emulator runs at the maximum possible speed on
      your computer. However, the relative speed of the emulated CPC chipsets
      remains accurate and the emulation quality is not altered. This mode can
      be activated/disabled at anytime while ACE is running.

    * MS=MAXFRAMESKIP/K/N: specify the maximum number of frames allowed to be
      skipped in a row to maintain a full speed emulation. You should not
      usually activate this option but it might be interesting on low end
      configurations.
      By default it is 0; which means that frame skipping is forbidden.

    * MR=MAXFRAMERATE/K/N: specify the maximum frame per second to display in
      wild speed mode. The greater is this value the slower the wild speed
      will be because the display update is very CPU consuming. Also, note that
      values greater than the refresh frequency of your monitor (generally
      60 Hz) are useless.
      The default value is 10.
      This option has no effect if the wild speed mode is not activated.

    * FD=FASTDRIVES/S: active the fast drive emulation mode of the floppy disc
      drives. Track and sector access are done with no delay which makes the
      disc read/write operation faster. Warning: this option must be used with
      care because it is not compatible with some protected softwares and
      demos. This fast drive mode can also be activated/disabled at anytime
      while ACE is running.

    * NDA=NODRIVEA/S: do not plug the primary floppy disc drive. This option can
      also be activated/disabled from the preferences menu at anytime while ACE
      is running.

    * NDB=NODRIVEB/S: do not plug the secondary floppy disc drive. This option
      can also be activated/disabled from the preferences menu at anytime while
      ACE is running.

    * FSB=FORCESIDEB/S: force side B on all floppy disc drive (simulate the
      "side B" hack switch). This option can also be activated/disabled from the
      preferences menu at anytime while ACE is running.

    * FDA=FORCEDRIVEA/S: force floppy disc drive A access. This option can also
      be activated/disabled from the preferences menu at anytime while ACE is
      running.

    * RST=DECODESYSTEMRST/S: in disassembler, decode RST opcodes as extended
      system RST. This option can also be activated/disabled from the
      preferences menu at anytime while ACE is running.

    * BRK=DECODEBRK/S: in disassembler, decode BRK opcodes from Maxam and
      WinAPE. This option can also be activated/disabled from the preferences
      menu at anytime while ACE is running.

    * SCREEN=MONITOR=SCREENMONITOR/K: select the screen monitor type. Valid
      values are: Color, Green, and Grey or Gray. This option can also be
      changed from the screen monitor preferences window at anytime while ACE is
      running.

    * BRIGHTNESS/K/N: set the screen monitor brightness from -100 to +100. This
      option can also be changed from the screen monitor preferences window at
      anytime while ACE is running.

    * VHOLD/K/N: set the screen monitor vertical hold setting from -100 to +100.
      This option can also be changed from the screen monitor preferences window
      at anytime while ACE is running.

    * HHOLD/K/N: set the screen monitor horizontal hold setting from -100 to
      +100. This option can also be changed from the screen monitor preferences
      window at anytime while ACE is running.

    * CKR=CARTRIDGESKEEPEXTROM/S: disable the automatic deactivation of the
      extension ROMs when a CPC+ cartridge is inserted. This deactivation
      prevents problems with cartridges incompatible with extension ROMs. For
      some reason you might need to disable this behavior (i.e. when using the
      original system cartridge instead of the one simulated by ACE). This
      option can also be changed from the ROMs preferences window at anytime
      while ACE is running.

    * NPU=NOPLUSUNSTABLEHIZ: disable emulation of the unstable Hi-Z when
      reading invalid addresses in the Amstrad Plus ASIC I/O page. It will then
      always return 0 (like on most stock Amstrad Plus) instead of some random
      values (like when expansions handling memory such as the Ramcard or the
      Multiface Two are plugged).

    * OVER=OVERSCAN/S: by default ACE uses the regular CTM borders to define
      the visible display area. This option tells ACE to also display parts of
      video output which are normally not visible. The overscan mode can also be
      activated/disabled at anytime while ACE is running through the screen
      monitor preferences window.

    * LM=LAUNCHMODE/K: choose the launch mode of ACE executable. By
      default ACE will ask the user to decide what to do if an instance of ACE
      is already running. If the value SINGLE is specified only one instance is
      allowed and any new launch attempt will put to front the already running
      instance and insert optional media given in parameter. If the value
      MULTIPLE is given, a new instance of ACE is started every time.

    * UAIC=USERDRIVEAINSERTCOMMAND/K:
    * UAEC=USERDRIVEAEJECTCOMMAND/K:
    * UBIC=USERDRIVEBINSERTCOMMAND/K:
    * UBEC=USERDRIVEBEJECTCOMMAND/K:
    * UTIC=USERTAPEINSERTCOMMAND/K:
    * UTEC=USERTAPEEJECTCOMMAND/K:
    * UCPC=USERCARTRIDGEPLUGCOMMAND/K:
    * UCUC=USERCARTRIDGEUNPLUGCOMMAND/K:
    * USLC=USERSNAPSHOTLOADCOMMAND/K:
    * USSC=USERSNAPSHOTSAVECOMMAND/K:
    * UGC=USERGRABCOMMAND/K:
    * UVSC=USERVIDEOSTARTCOMMAND/K:
    * UVTC=USERVIDEOSTOPCOMMAND/K:
    * UNFC=USERNEWFRAMECOMMAND/K:
    * UBC=USERBREAKPOINTCOMMAND/K: choose a command to execute when the related
      event occurs. The place holder "%s" can be used to get the AREXX port name
      of the ACE's instance.
      By default no command is launched on events.

    * DISCSPATH/K: choose the default path to the image disc files for the
      file requesters.
      By default the drawer "Discs" of ACE is used.

    * TAPESPATH/K: choose the default path to the tape audio files for the
      file requesters.
      By default the drawer "Tapes" of ACE is used.

    * ROMSPATH/K: choose the default path to the expansion ROMs files for the
      file requesters.
      By default the drawer "ROMs" of ACE is used.

    * CARTRIDGESPATH/K: choose the default path to the cartridges files for
      the file requesters.
      By default the drawer "Cartridges" of ACE is used.

    * SNAPSHOTSPATH/K: choose the default path to the snapshot files for the
      file requesters.
      By default the drawer "Snapshots" of ACE is used.

    * GRABSPATH/K: choose the path where to save the screen grabs.
      By default the drawer "Grabs" of ACE is used.

    * RECORDPATH/K: choose the path where to put video recording raw files.
      By default the drawer "Records" of ACE is used.

    * D=DEBUG/S: no effect in ACE public version.


ACE · Usage

Contents | Index | < Browse | Browse >




    Usage


    In addition to the main window, ACE offers some secondary windows to watch
    and alter in real time the emulation behavior. Also, ACE has an AREXX
    interface to make your dreams come true.

     Main window                           - The emulator
     'About the emulated CPC' window       - We know who you are!

     Memory editor                         - Let's peek and poke!
     Z80 disassembler                      - One more step!

    ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­

     Memory map                            - We know where you are!
     Graphic palette                       - Picasso working around?

     Z80 editor                            - Beating heart
     CRTC editor                           - Control the display

     PSG analyzer                          - Sounds and musics
     Gate Array analyzer                   - Colorful CPC!
     Video information                     - Watch the monitor

     ASIC analyzer (Amstrad Plus)          - Please don't watch!
     Hard sprites analyzer (Amstrad Plus)  - Pixels beyond pixels
     DMA analyzer (Amstrad Plus)           - Instructions beyond instructions

     Keyboard layout                       - Who is the key?
     Joysticks status                      - Click to shoot!
     Keyboard matrix                       - Blue pill or red pill?

    ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­

     Memory preferences                    - Amount and type of memory
     ROMs preferences                      - All about builtin and extended ROMs

     Screen monitor preferences            - Brightness and darkness

     Breakpoints manager                   - Pay its right of way
     Symbols manager                       - Do you have your ID?

     Advanced controls                     - May the force be with you!
     User counters                         - Counting ways over ten!

     Events preferences                    - At your command!

    ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­

     Video recording                       - Make your buzz on YouTube!

     Expansion plugins                     - No limits!
     AREXX interface                       - The area of gurus


ACE · Usage of the main window

Contents | Index | < Browse | Browse >




    Main window


    ACE is really simple to use; it just acts like a real CPC. Anyway, some tips
    are good to know.

    Gadgets:

    On the top and the bottom of the CPC screen display lie two groups of
    gadgets.

    The ones on the top let you handle disc, tape and cartridge images using the
    different tabs, as well as loading/saving snapshot files using the buttons
    on the right. Some of the tabs might be disabled depending on the CPC
    configuration (single floppy disc drive, old generation CPC...). Moreover,
    some LED and icons let you know about the disc drives activity and
    configuration (forced side B, fast drives mode...).

    At the bottom the gadgets let you set the state of the CPC. On the first row
    you will find:

        - The volume setting.
        - The choice of the screen model.
        - The choice of the Amstrad CPC type (it will automatically select a
          proper CRTC).
        - The choice of the CRTC type.
        - The different buttons to control the emulator (speed, play/pause,
          reset).
        - Buttons to save grabs and start video recording.

    Keyboard:

    The host's keyboard mainly matches the CPC's keyboard. To improve the
    comfort, I advise you to use the firmware ROM which matches your keyboard
    (that should be the default because ACE chooses the firmware ROM according
    to your system's locale configuration):

        - Firmware_fx.ROM: French version, good to use with azerty
          keyboards, preferably Amiga, Mac or PC Belgium version (azerty PC
          French versions unfortunately differs from all others azerty
          keyboards).
        - Firmware_vx.ROM: English version, good to used with qwerty
          keyboards, preferably UK.
        - Firmware_sx.ROM: Spanish version.
        - Firmware_dx.ROM: Danish version.

    Furthermore, an option is available to automatically adapt the CPC keyboard
    mapping (through the menu "Preferences/Adapt the CPC keyboard mapping" or
    the tooltype AKM=ADAPTKEYMAP/S) to the one used on your host machine.

    It should also be noticed that in addition to the "f0-f9", "." and "ENTER"
    keys (which are available from the numeric pad), some other keys have a
    specific mapping:

        - DEL is on "<-" ("backspace").
        - CLR is on "delete".
        - COPY is on "left alt".

    Moreover, some keyboards cannot handle a large number of keys pressed at
    the same time. It can be a problem in some particular cases; eg. to activate
    the cheat codes (for example, in Batman The Movie, you must press the keys
    "E", "D", "2", "0" and "9" simultaneously to jump to the next level). That's
    when the "right alt" key comes into play. As long as you keep it pressed,
    all the other keys you might press (and release) will be kept pressed in the
    emulated CPC. To use the previous example, if your keyboard doesn't allow
    you to press five keys simultaneously, just keep the "right alt" pressed and
    then press the keys "E", "D", "2", "0" and "9" one by one, et voila! All the
    keys will of course be released when the "right alt" key is released.

    In addition to this, some other keys can be used:

        - Home has same effect than "control" + "left" (start of line on CPC).
        - End has same effect than "control" + "right" (end of line on CPC).
        - Page up has same effect than "control" + "up" (start of a BASIC line,
          page up under Protext, ...).
        - Page down same effect than "control" + "down" (end of a BASIC line,
          page down under Protext, ...).
        - F1 let you insert a disc image in the drive A.
        - F2 let you insert a disc image in the drive B.
        - F3 let you insert a tape.
        - F4 insert a cartridge (Amstrad Plus only).
        - Shift + F1 eject the disc image from the drive A.
        - Shift + F2 eject the disc image from the drive A.
        - Shift + F3 eject the tape.
        - Shift + F4 eject the cartridge (Amstrad Plus only).
        - F9 let you load a snapshot file.
        - F10 let you save a snapshot file.
        - F11 save a screen grab (in the grab drawer).
        - F12 has same effect than "enter" from the numeric pad (just in case
          of this key would be missing; like on PowerBook G4 keyboards).

    Finally, when activating the option "Joystick 0 on keyboard" (or the tool type
    KEYJOY) the following can be used:

        - Up arrow for joystick up.
        - Down arrow for joystick down.
        - Left arrow for joystick left.
        - Right arrow for joystick right.
        - Left alt for joystick fire button 1.
        - Control for joystick fire button 2.
        - Left shift for joystick fire button 3 (not available on Amstrad Plus).

    The other keyboard shortcuts are just the ones from the Intuition menu.

    Please note that you can also paste into the emulator any text that was
    copied on the host machine (moreover, charset translation is automatically
    done so that non ASCII characters will also be printed correcly).

    Joysticks:

    Joysticks are emulated through the "Joysticks" plugin embedded with ACE
    (see the expansion plugins chapter for more details).

    Mouse:

    Unless the mouse event are being captured by some plugins, the middle mouse
    button allows you to mask/unmask the controls and a double-click on the
    display area switches from windowed to full screen and vice versa.

    More over, if the light gun emulation is activated by some plugins, the
    mouse pointer is replaced by a cross in order to be used as a target, and
    the click is the fire button.

    Also, note that the mouse pointer will be automatically hidden when not
    moving in full screen.


ACE · Usage of the window 'About the emulated CPC'

Contents | Index | < Browse | Browse >




    "About the emulator CPC" window


    This window will give you various information about the CPC that ACE is
    currently emulating depending on your settings.

    A nice picture of the corresponding CPC model is also displayed.

    Computer

    Nothing complicated here, the brand, the model and the locale of the CPC
    are displayed.

    Devices

    Here is some indications about the floppy disc drive interface, the tape
    interface and the cartridge port.

    Floppy and tape interfaces might be absent, internal or external depending
    on the CPC model while the cartridge port is obviously only available on
    Amstrad Plus.

    System

    The firmware version, the internal disc ROM used and the total amount of
    available memory are displayed in this section.

    Note: the type of the internal disc ROM will be displayed in italic if it is
    overridden by an external ROM 7.


ACE · Usage of the memory editor

Contents | Index | < Browse | Browse >




    Memory editor


    This window allows you to manipulate the emulated CPC memory. You can open
    as many memory editor window as you want.

    Refresh

    For usability and performance reasons, the informations from this window are
    not updated in real time by default, but it can be activated through the
    contextual menu.

    The window content is automatically updated every time the emulator is
    paused (manually or because of a breakpoint), or manually whenever you want
    by pressing the "Refresh view" button.

    Some advances features for search, copy and paste can be accessed from the
    contextual menu.

    Configuration

    By default, the memory editor matches the current memory layout from the
    emulation. But if you uncheck the mark "Match the emulator's mappings",
    you will be able to choose any desired memory layout.

    Some memory configuration selection gadgets are then becoming available
    to customize everything (warning: theses have actually no effect on the
    memory state of the emulator itself; just the editor's view is affected).
    Some of them are only active when emulating an Amstrad Plus.

    Content

    The main part of the window displays the content of the memory depending on
    the above memory configuration. The left side is the hexadecimal view while
    the right part is in ASCII. The ASCII is automatically converted to the CPC
    charset code page.

    The address to display can be selected manually or directly from the content
    of a Z80 register.

    At the bottom, a small text displays the current address position of the
    cursor within the editor. The "Disassemble..." button will open the
    disassembler window at the cursor address.

    Also, if the memory editor cursor is set on an address matching some
    symbols, they will be displayed at the bottom of the window.

    Note: the read only accessible memory areas and displayed with
    their address into parenthesis.


ACE · Usage of the disassembler

Contents | Index | < Browse | Browse >




    Disassembler


    With this window you can disassemble any memory zone of the emulated CPC.

    Refresh

    For usability and performance reasons, the informations from this window are
    not updated in real time by default, but it can be activated through the
    contextual menu.

    The window content is automatically updated every time the emulator is
    paused (manually or because of a breakpoint), or manually whenever you want
    by pressing the "Refresh disassembly" button.

    Configuration

    By default, the memory editor matches the current memory layout from the
    emulation. But if you uncheck the mark "Match the emulator's mappings",
    you will be able to choose any desired memory layout.

    Some memory configuration selection gadgets are then becoming available
    to customize everything (warning: theses have actually no effect on the
    memory state of the emulator itself; just the editor's view is affected).
    Some of them are only active when emulating an Amstrad Plus.

    Content

    The main area of this window just display the disassembly code. The origin
    address can be set manually or by catching the current PC value. It is also
    possible to lock it to PC (of course, free navigation within the memory will
    then be disabled).

    Be aware of the fact that the Z80 opcodes are of variable size. They can be
    from one to four bytes long, the origin address is then highly important.
    Actually, if you set it to an address that would cut a instruction into
    two parts, the disassembly code will not be reliable for the next two or
    three opcodes.

    For anything else, this disassembler features advanced navigation
    capabilities. First, a bookmark of preferred addresses is available to jump
    easily into huge or expanded code. A bookmark can be set by selecting it
    (using the small toggle buttons at the bottom of the bookmark address
    buttons) and then by clicking on a address on the left column of the
    disassembler view.

    You can also set some execution breakpoints by using the checkbox gadgets
    while the small lamps tell you about the activation state in a more direct
    way than the breakpoints management window (this feature is only
    available when the breakpoint support is enabled).

    Then, the last column on the right side let you directly set the origin
    address to a branch instruction target (JP, JR, CALL, ...).

    At the bottom, a small text recalls the current address position of the
    first address of the window. You can also here disable usage of symbols
    in the disassembly part. And the "Dump..." button will open the
    memory editor window with the cursor set at this
    address.

    Symbols

    The disassembler is using a smart dectection system of symbols. Depending
    on their type and memory map, it will automatically which address or scalar
    value within the disassembly code should be replaced by a symbol.

    Basically the main detection rules are:

        CALL address
        JP address
        JR address
        DJNZ address
        LD reg,(address)
            Symbols matching the address must be of type absolute, and are
            considered only if the memory map is compatible for reading.

        LD (address),reg
            Symbols matching the address must be of type absolute, and are
            considered only if the memory map is compatible for writing.

        LD reg,value
            Symbols matching the value can be either of type absolute or
            relative, and are considered for any memory map.

        LD reg,(IX+delta)
        LD reg,(IY+delta)
            Symbols matching the delta must be of type relative, and are
            considered only if the memory map is compatible for reading.

        LD (IX+delta),reg
        LD (IY+delta),reg
            Symbols matching the delta must be of type relative, and are
            considered only if the memory map is compatible for writing.

    If several symbols are matching, only the best fit is inlined inside the
    assembly code, and like with all GUI elements interacting with symbols, the
    list of all the matching ones can be opened by clicking on the button
    "label" which is automatically integrated after the symbol name (best fit
    symbol is then displayed in bold in this list).


ACE · Memory map

Contents | Index | < Browse | Browse >




    Memory map


    This window will display the current memory map with all the paged in banks
    and ROMS.

    Refresh

    The information are updated in real time and are always valid.

    Content

    Informations from this window are numerous and smart, the quick help will
    inform you about their exact signification.


ACE · Graphic palette

Contents | Index | < Browse | Browse >




    Graphic palette


    This window will display the current graphic palette being used on the
    screen.

    Refresh

    The information are updated in real time and are always valid.

    Content

    Informations from this window are numerous and smart, the quick help will
    inform you about their exact signification.


ACE · Usage of the Z80 editor

Contents | Index | < Browse | Browse >




    Z80 editor


    This editor allows you to visualize and modify the Z80 state of the emulated
    CPC at any time.

    Refresh

    The information are updated in real time and are always valid.

    Content

    Anything else is something anybody knowing the Z80 will be able to manage.

    Each Z80 register can be edited and some specific informations are also
    displayed such as the pointed addresses or the related flags.

    In addition, the state of the stack is displayed.

    Finally, the list of all the symbols matching a given address within a
    register value or a stack element can be opened by clicking on the
    related label button.


ACE · Usage of the CRTC editor

Contents | Index | < Browse | Browse >




    CRTC editor


    This editor allows you to visualize and modify the CRTC state of the
    emulated CPC at any time.

    Refresh

    The information are updated in real time and are always valid.

    Content

    Anything else is something anybody knowing the CRTC will be able to
    understand.


ACE · Usage of the PSG analyzer

Contents | Index | < Browse | Browse >




    PSG analyzer


    This editor allows you to visualize the PSG state of the emulated CPC at any
    time.

    Refresh

    The information are updated in real time and are always valid.

    Content

    Informations from this window are numerous and smart, the quick help will
    inform you about their exact signification.


ACE · Usage of the Gate Array analyzer

Contents | Index | < Browse | Browse >




    Gate Array analyzer


    This editor allows you to visualize the Gate Array state of the emulated CPC
    at any time.

    Refresh

    The information are updated in real time and are always valid.

    Content

    Informations from this window are easy to understand and the quick help will
    give you any additional description about them.


ACE · Usage of the video information

Contents | Index | < Browse | Browse >




    Video information


    This window allows you to get informations about the video synchronization
    and beam ray.

    Refresh

    The information are updated in real time and are always valid.

    Content

    The quick help will inform you about the exact signification of each field
    of this window.


ACE · Usage of the ASIC analyzer

Contents | Index | < Browse | Browse >




    ASIC analyzer (Amstrad Plus only)


    This window allows you to visualize the main ASIC registers contents.

    Refresh

    The information are updated in real time and are always valid.

    Content

    The quick help will inform you about the exact signification of each field
    of this window.


ACE · Usage of the hard sprites analyzer

Contents | Index | < Browse | Browse >




    Hard sprites analyzer (Amstrad Plus only)


    This window allows you to visualize the hard sprites palette and contents.

    Refresh

    The information are updated in real time and are always valid.

    Content

    The quick help will inform you about the exact signification of each field
    of this window.

    You also have some options to choose the best background color to visualize
    the sprites, and also to force the display of the sprites which are
    currently disabled on the Amstrad Plus (forced sprites are displayed ghosted
    and with the maxumum magnification).


ACE · Usage of the DMA analyzer

Contents | Index | < Browse | Browse >




    DMA analyzer (Amstrad Plus only)


    This window allows you to follow the state of the three DMA and the
    instructions which are being executed.

    Refresh

    The information are updated in real time and are always valid.

    Content

    The quick help will inform you about the exact signification of each field
    of this window.


ACE · Usage of the keyboard layout window

Contents | Index | < Browse | Browse >




    Keyboard layout


    This window let you know about the current layout of the CPC keyboard. You
    can see which keys are currently pressed, and also use it to press (RMB) or
    lock (LMB) keys.

    Refresh

    The information are updated in real time and are always valid. Any
    key pressed will be shown.

    Content

    The quick help will inform you about the code of each key.


ACE · Usage of the joysticks status

Contents | Index | < Browse | Browse >




    Joysticks status


    This window let you know about the currently activated directions and fire
    buttons of the joysticks. You can also use it to activate (click with main
    mouse button) or lock (click with with secondary mouse button) the
    directions and fire buttons.

    Refresh

    The information are updated in real time and are always valid.

    Content

    The quick help will inform you about the code of each direction/fire button.


ACE · Keyboard matrix

Contents | Index | < Browse | Browse >




    Keyboard matrix


    This window let you know about the current state of the matrix which is used
    internally by the CPC hardware to handle the keyboard and the joysticks. You
    can see which keys are currently pressed, and also use it to press (RMB) or
    lock (LMB) keys.

    Refresh

    The information are updated in real time and are always valid. Any
    key pressed will be shown.

    Content

    The quick help will inform you about the code of each key.


ACE · Memory preferences

Contents | Index | < Browse | Browse >




    Memory preferences


    This window allows you to choose the type and amount of memory installed.
    Unlike the other secondary windows, it is not accessible from the "Windows"
    menu but from the "Preferences" one.


ACE · ROMs preferences

Contents | Index | < Browse | Browse >




    ROMs preferences


    This window allow you to choose internal ROMs (the ones defining the
    operating system) and extended ROMs (usually provided through a ROMBoard
    or similar expansion). Unlike the other secondary windows, it is not
    accessible from the "Windows" menu but from the "Preferences" one.


ACE · Screen monitor preferences

Contents | Index | < Browse | Browse >




    Screen monitor preferences


    This window allows you to choose the type of monitor to use and to set it
    just like with a real monitor. Unlike the other secondary windows, it is not
    accessible from the "Windows" menu but from the "Preferences" one.


ACE · Usage of the breakpoints manager

Contents | Index | < Browse | Browse >




    Breakpoints manager


    This is the main control window of the configurable breakpoints. Unlike the
    other secondary windows, it is not accessible from the "Windows" menu but
    from the "Monitoring" one (or by clicking on the "More..." button of the
    breakpoints toolbar from the Z80 window.

    Moreover it is only accessible when the breakpoints feature is enabled
    (using the menu or the breakpoint on/off button from the Z80 window).

    It is composed of three pages.

    Execution breakpoints

    With this page you can show, add, modify or delete execution breakpoints.
    They are addresses on which the emulator pause when the Z80 tries to execute
    an instruction from there.

    The condition allow you to describe an expression that must be true to
    consider the breakpoint (detailed information about condition are provided
    through the related quick help).

    The mode allow you to choose between the "Stopper" and the "Watcher" modes.
    The "Stopper" mode is a standard breakpoint while the "Watcher" mode will
    just update the match count without breaking.

    The step information let you choose if it must break every time (step of 0)
    or every "step" times.

    The name allow you to give a name to a breakpoint in order to make everything
    more readable when a lot of breakpoints are used. You can also use this name
    from scripts in order not to rely on hardcoded addresses.

    This type of breakpoint can also be directly set by using the checkbox
    gadgets from the disassembler window.

    Memory breakpoints

    With this page you can show, add, modify or delete memory breakpoints. They
    are addresses on which the emulator pause when the Z80 have read and/or
    written something from/to them.

    The address mask filters the actual bit from the full address to match.
    As an example a mask of &FF00 for an address at &9D00 will match all
    addresses &9Dxx.

    The size let you configure the size of the area to match from the address.

    The value let you select a specific value to match. Like with the address
    a mask can be set on the value. By default the mask is zero which means
    that any value matches (no relevant bit to test).

    Other parameters are the same than for the execution breakpoints.

    I/O ports breakpoints

    This page is very much like the previous one but acts on the I/O ports.

    A contextual menu will help you to set breakpoints on most commun I/O ports.


    Note 1: on any of these pages double clicking on an already set breakpoint
    let you reset the related match count.

    Note 2: you can set 64 breakpoints of each type.


ACE · Usage of the symbols manager

Contents | Index | < Browse | Browse >




    Symbols manager


    This window let you edit the symbols which will be used is the disassembly
    window and also everywhere a 16-bit address can be input.

    Each symbol can be of type absolute or relative. Absolute symbols are
    regular symbols associated to an absolute address while relative ones are
    undefined scalar values or indexes (for instance, to be used for IX or IY
    register indexing values).

    Each symbol can also be attached (or not) to a specific memory mapping:
    central memory (linear or remapped), extension memory (on a selected bank),
    firmware ROM, extension ROM (on a selected slot), cartridge ROM (on a
    selected bank) or ASIC I/O page.

    Of course, several symbols can point to the same address.

    A filter let you search easily through the symbols list by typing a matching
    string. It is also possible to filter the symbols by types using the "A" and
    "R" buttons related to absolute and relative types. By default, all the
    symbols are displayed.

    Symbols are limited to 255 characters, cannot begin with a number, cannot
    contain special characters except underscore (_) and dot (.), and are case
    insensitive.

    The contextual menu let you add automatically symbols related to firmware's
    system vectors, AMSDOS BIOS entries and ASIC registers. From this menu, you
    can also export all set symbols in a file.

    Please note that, by default, several columns of the symbol list are not
    displayed. You can make then visible thru the list title context menu. These
    additional columns will show you different representations of the memory
    contents pointed by each symbol depending on the current memory layout.


ACE · Advanced controls

Contents | Index | < Browse | Browse >




    Advanced controls


    This window let you finely control Z80 (step by step and more).


ACE · User counters controls

Contents | Index | < Browse | Browse >




    User counters


    This window let you watch and reset user counters for CPU cycles and video
    scan lines and frames.


ACE · Events preferences

Contents | Index | < Browse | Browse >




    Events preferences


    This window let you configure commands to be executed depending on various
    events. These commands are executed asynchronously. Unlike the other
    secondary windows, it is not accessible from the "Windows"  menu but from
    the "Preferences" one.


ACE · Scripts & tools

Contents | Index | < Browse | Browse >




    Scripts & tools


    ACE comes with a set of basic tools that will hopefully evolve with the time
    to become a full featured toolkit.

    Most of these tools are based on the AREXX interface.
    If you create your own REXX or Lua scripts do not hesitate to send them
    back to me so that I could add them to the next versions of ACE.

    CLI tools:

    arec2raw is a small tool to be used to convert AREC files created by ACE
    when recording video. It will generated raw audio and raw video files, plus
    a dedicated shell script that will encode these files into standard video by
    using ffmpeg (of course ffmpeg should be installed on your system).
    Arguments of this tool are:
        * FROM/A: name of the AREC file to be converted. If several AREC files with
          numbered suffix exist, the main one must be provided (the one with no
          suffix) and the additional ones will be automatically handled.
        * TO: by default raw files (and the dedicated encoding script) are generated
          at the same location than the provided AREC file. If this argument is
          provided, this file name will be used instead.

    REXX scripts:

    JoyFury.rexx will let you win with no effort in the games that expect you to
    quickly move your joystick from left to right to progress (typically the
    sport games). It takes one input parameter to set the left to right speed
    (default value is 20000 microseconds).

    ACE.AmIRx is a small REXX script of no use that you can install in the
    "Rexx" drawer of AmIRC. Once installed, it can be executed through the
    "ARexx" menu of AmIRC (or by typing "/rx ACE") in order to send informations
    about the current ACE usage into the active IRC window. It can also be used
    as a standalone script (it will then address the first found instance of
    AmIRC to send the messages).

    ImportSymbols.rexx this script takes a vasm listing file generated by vasm,
    a symbol file from rasm or a file containing a list of EQUs, and imports all
    the found symbols into ACE.

    ImportBreakpoint.rexx this script takes a breakpoint file generated by rasm,
    and imports all the found breakpoints into ACE.

    CrossDevExample.rexx is a more complex script design to demonstrate the
    cross-development capabilities of ACE (by generating a small classic demo
    effect from nothing installed into the CPC side).
    It performs:
      * An ACE reboot.
      * An appropriate MEMORY into the BASIC.
      * An ACE pause.
      * Some tables calculation and poking directly into ACE memory.
      * The example code source assembling using vasm (Z80 assembler),
      * The loading of the generated binary into ACE memory.
      * An ACE restart.
      * An appropriate CALL into the BASIC to launch the created program.

    This script is an adaptation of the program available on our Quasar Net:
    http://quasar.cpcscene.net/doku.php?id=coding:aurore_boreale.
    The table generator program in BASIC was converted to REXX (trivial) and the
    assembler code is almost the same (just a few adaptations to have it work
    with vasm instead of Maxam).

    It could be improved by passing some parameters from REXX to vasm instead
    of relying on fixed EQUs for the computed tables. Anyway, it is a good base
    to guess what could be done with the ACE's AREXX port!

    Note: to work this script requires:
      * rexxmathlib.library from Thomas Richter,
      * vasm from Volker Barthelmann (must be in your "Path").

    Lua scripts:

    CrossDevExample.lua is equivalent to CrossDevExample.rexx.


ACE · Frequently asked questions

Contents | Index | < Browse | Browse >




    Frequently asked questions


    What about the quality of the various CRTC types regarding demos?

    CRTC 0 and 1 emulation should be fully accurate.

    CRTC 2 emulation might need additional work but it is not a big deal since
    no demo is specifically requiring this CRTC to work.

    CRTC 3 and 4 emulation is also quite good, all the tested demos are working
    as expected.

    I often have warning messages when opening DSK files!

    The DSK format is really awful and the tools used to generate them from the
    real physical discs are often bugged. Practically, the informations
    contained into the DSK files are not sufficient (when they are not simply
    wrong) to permit a really accurate FDC and floppy disc drive emulation.

    A complex on the fly fixing mechanism is built into ACE in order to try to
    rebuild the missing or altered informations; the warning messages are
    related to this behavior. You can disable them with the option "NOWARNINGS"
    or by using the "Preferences" menu (fixes are always applied but you will no
    longer be informed about them).

    In a next version of ACE, a brand new disc image format will be introduced
    to avoid all the FDC emulation problems related to the DSK format. Import
    or export to DSK will remain possible when applicable.

    Why an inserted DSK is not modified when I write into it from ACE?

    It is, but not in real time.

    ACE does not manage directly the DSK files. Instead they are loaded and
    converted into an internal structure. When you update the content of
    an image disc from ACE, only this internal structure is modified. The DSK
    file will be modified from this internal structure when it is ejected from
    ACE or if you quit ACE.

    Moreover, ACE will try to keep the original format when it updates the DSK
    file. Standard DSK remain standard and Extended DSK remain extended. If a
    Standard DSK was altered in a way in cannot be saved in this format anymore,
    ACE will ask you to confirm that you want to convert it to Extended DSK.

    What is the difference between "Reset" and "Cold reset"?

    A reset simply emulates a CPC hard reset. It means that all the chipsets and
    the microprocessor are initialized but not the memory. It is just the very
    same behavior you would have on a real CPC with a hard reset button (like
    the one on the Multiface Two or the Hacker).

    A cold reset is like if the CPC was just on powered, everything including
    the memory is reset.

    By default, ACE emulates a CPC6128, how can I configure it to emulate another
    model?

    Emulation configuration:

    ACE's default installation comes with an icon for each CPC model. Use them
    to directly launch it directly configured to emulate a CPC464, CPC664,
    CPC6128, 464plus, 6128plus or GX4000 depending on our choice.

    The default icon simply named "ACE" should be used for your own custom
    preferences, but feel free to create as much icons as you want for each
    desired emulation configuration.

    Icon's tool types can be edited by hand, but it is usually most convenient
    to let ACE create them automatically when saving preferences thru the
    "Preferences" menu.

    ROMs configuration:

    The main difference between the CPC models is related to the version of the
    firmware and BASIC ROMs installed. The CPC6128 uses version 3 of the
    firmware while the CPC664 uses a version 2 and CPC464 a version 1. The CPC+
    range uses a firmware version 4 with a BASIC 1.40.

    You should take care of the BASIC ROM installed:

    - BASIC 1.0 is only compatible with firmware ROM version 1,
    - BASIC 1.1 is only compatible with firmware ROM version 2,
    - BASIC 1.2x and 1.4 are only compatible with firmware ROM version 3 or 4.

    Memory configuration:

    Another difference between the CPC models is related to the memory. The
    CPC6128 and 6128+ do have 64 KiB on expansion memory integrated on the
    motherboard while CPC464/664 and 464+ do not.

    In case you really don't want to emulate a CPC6128 but an older CPC model
    you can use the 64KEXPMEMSCHEME tooltype to fit the way 64Kio based models
    are handling expansion RAM. You can also make use of DKTRONICSBUGS tooltype
    to simulate a DK'Tronics expansion RAM (which have some flaws regarding
    internal expansion RAM of the 128Kio base models).

    Eventually, you can configure any amount of memory.

    Drives configuration:

    If you want to emulate a stock CPC464 ou 464plus you can disable the floppy
    disc drive interface though the NODISCINTERFACE tooltype (or using the
    menu).

    If you want to emulate a stock CPC664/6128 or 6128plus with no external disc
    drive, you can disable the B drive through the menu.

    How to have a smooth 50 Hz display like on CPC?

    CPC games and demos are running at 50 Hz. To have a perfectly smooth display
    like on a real CPC, you must then have the very same frame rate frequency
    (or a multiple of it) on your system.

    Generally, you will not have a 50 Hz graphic mode available by default.
    However it is really easy to create one from MorphOS monitor preferences
    (just be sure that you create a 16, 24 or 32 bits color depth screen).

    If your screen monitor supports 50 Hz frame rate (you may need to alter its
    default auto-detected capabilities), just create a new screen mode at
    exactly 50.0801 Hz. Then, get the mode ID, and put it into the tool type
    SCREENMODE of ACE (eg. SCREENMODE=0x40920058).

    Till now, each time ACE uses the full screen mode, it will be at 50 Hz and
    everything is smooth like on a real CPC!

    Unfortunately, a lot of games and demos do not match the default 50 Hz
    frequency... and they will not be smooth again... There is no real
    solution (because the screen frequency can change at any time). Anyway, you
    can get the program's frame rate from the video information window and then
    create a new screen mode at this frequency.

    When doing step by step, after the Z80 accessed some ASIC register through
    a 16-bit load, the ASIC register is only partially updated, is it a display
    update bug?

    No. It is actually what happens. CPC+ ASIC is quite slow at registers
    fetching, and if you are updating some registers in a 16 bit manner,
    only the low significant byte will be actually fetched by the ASIC at the
    end of the Z80 instruction. The most significant byte will be fetched
    within the next 250 ns (during the next Z80 step).


ACE · Known bugs

Contents | Index | < Browse | Browse >




    Known bugs


    * Writing on weak sectors only alter the first version of the sector. This
      is a crappy side effect of the awful DSK format. This issue will disappear
      as soon as a new file image format is implemented.

    * On PowerBook G4 the arrow keys sometimes hold some other ghost keys when
      pressed at a fast rate and/or at the same time. It obviously occurs while
      playing games. You can restore the keyboard state by pressing RALT (which
      releases all the pressed keys including the ghost ones) but it is not very
      usable during a game. The best solution to avoid this problem is either to
      use an external USB keyboard or a joystick.

    * The emulation sutters while recording videos. This is because some
      MorphOS able computers are too slow to assume this task in real time.
      Anyway, the recording quality will not be affected.


ACE · Future

Contents | Index | < Browse | Browse >




    Future


    Lot of things are planed!

    * Improved CRTC 2 emulation which is still very limited.
    * Create new expansion plugins and improve existing ones.
    * Implementation of some raw disk support instead of DSK.
    * New AREXX commands and new REXX and Lua scripts.
    * VirtualNet96 support.
    * New rendering engine simulating actual CTM pitch.
    * Time machine emulation.
    * And more...


ACE · Credits

Contents | Index | < Browse | Browse >




    Credits


    Architecture and coding:
        * Philippe 'OffseT' Rimauro - mailto:offset@cpcscene.net

    Icons:
        * David 'Davebraco' Braconnier - mailto:info@davebraco.be
        * Mathieu 'Hwikaa' Delaruelle - mailto:hwikaa@gmail.com
        * Christophe 'Highlander' Delorme - mailto:chris.highlander@free.fr

    Documentation:
        * Philippe 'OffseT' Rimauro - mailto:offset@cpcscene.net

    Translations:
        * Juan Carlos Herran Martin - mailto:juancarlos@morguesoft.eu
          (Spanish)
        * Stefan 'polluks' Haubenthal - mailto:polluks@sdf.lonestar.org
          (German)
        * Philippe 'OffseT' Rimauro - mailto:offset@cpcscene.net
          (French and English)

    Tests:
        * Romain 'Krusty' Giot - mailto:krusty@cpcscene.net
        * Antoine 'Tony' Reneaut - mailto:tony@cpcscene.net
        * Gilles 'Zik' Rimauro - mailto:zik@cpcscene.net

    Ports:
        * Adrien 'PulkoMandy' Destugues - mailto:pulkomandy@pulkomandy.tk
          (ACE for Haiku, full featured port)
        * Edouard 'roudoudou' Berge - mailto:edouard.berge@gmail.com
          (ACE-DL for Windows, macOS and Linux, emulation core port only)

    Thanks to:
        * 'RickD' for some fixes in Z80 emulation.
        * Julien 'Targhan' Nevo for his support on PSG emulation.
        * Matthieu 'Grim' Gauzentes for his accurate electronic measures from
          the real CPC chips for color and audio balance.
        * Gilles 'Zik' Rimauro for his accurate electronic measures from the
          the real CPC for synchronizations signals, and his advice on ACE look
          and feel.
        * Reloaded development team; their source code helped me to see how to
          do some things, but also how not to do some others.
        * Amstrad, to kindly have given their permission for the redistribution
          of their copyrighted system ROMs with CPC emulator.

    Tools:
        * MorphOS SDK and its numerous examples.
        * Cubic IDE from Dietmar Eilert.
        * SimpleCat from Guido 'Geit' Mersmann.
        * DT2Raw from Christian 'tokai' Rosentreter.
        * Bin2C from Guido 'Geit' Mersmann.
        * Dt2RawImage from Ilkka 'itix' Lehtoranta.
        * lzmaLoader from Harry 'Piru' Sintonen.
        * LibMaker from Grzegorz 'krashan' Kraszewski.


ACE · AREXX interface

Contents | Index | < Browse | Browse >




    AREXX interface 


    ACE exposes an extended AREXX interface that will allow you to do almost
    everything you want! With the help of REXX, everything is possible,
    everything can be automated! Your creativity will have no limits!

    Here is the list of the available commands on the ACE's AREXX port.

    Application commands:

    * VERSION: Return the ACE version number.

    * HIDE: Iconify ACE.

    * SHOW: Show ACE if it was iconified.

    * QUIT: Quit ACE.

    * FULLSCREEN ACTIVATE/N,TOGGLE/S: Return the full screen status. If ACTIVATE
      is set, TOGGLE is ignored. Setting ACTIVATE at 1 activates the full screen,
      0 go back to the windowed mode. TOGGLE switches the current mode.

    * ICONIFY ACTIVATE/N,TOGGLE/S: Return the full screen status. If ACTIVATE
      is set, TOGGLE is ignored. Setting ACTIVATE at 1 iconifies ACE,
      0 go back to the windowed mode. TOGGLE switches the current mode.

    * SCREENTOFRONT: Put the screen ACE is opened on to front.

    * SCREENTOBACK: Put the screen ACE is opened of to back.

    * WINDOWTOFRONT: Put ACE's main window to front.

    * WINDOWTOBACK: Put ACE's main window to back.

    * WARNINGS ACTIVATE/N,TOGGLE/S: Return or change the warnings display
      preference (warnings are about the DSK or SNA loading).

    * KEYJOY ACTIVATE/N,TOGGLE/S: Return or change the keyboard mapping of
      joystick 0 preference.

    Emulator commands:

    * RESET HARD/S: Reset or reboot the emulator.

    * PAUSE: Pause the emulator.

    * START STEP: Restart the emulator. If STEP is specified then only one
      Z80 execution step will by performed according to the provided mode (OVER,
      INTO or OUT) ; the emulation will then pause again.

    * CRTC CRTC=TYPE/N: If TYPE is specified, select the CRTC type to
      emulate (0 to 4, 3 is Amstrad Plus). If not, return the current emulated
      CRTC type.

    * MONITOR TYPE: If TYPE is specified, select the monitor to
      emulate ("Color", "Green", or "Grey"). If not, return the current emulated
      monitor type.

    * BRIGHTNESS LEVEL/N: If LEVEL is specified, set the monitor brightness
      to the provided level (from -100 to 100). If not, return the current
      brightness level.

    * VOLUME LEVEL/N: If LEVEL is specified, set the audio volume to the
      provided level (from 0 to 100). If not, return the current volume level.

    * WILDSPEED ACTIVATE/N,TOGGLE/S: Return or change the wild speed
      preference.

    * AUDIO=SOUND ACTIVATE/N,TOGGLE/S: Return or change the audio preference.

    * INSERTDISC FILE/A,DRIVE: Insert a disc image FILE in to the drive DRIVE
      (0/1 or A/B, drive A is the default one).

    * EJECTDISC DRIVE: Eject the disc image from the drive DRIVE.

    * GETDISCNAME DRIVE: Return the file name of the disc image inserted in the
      drive DRIVE.

    * INSERTTAPE FILE/A TAP=TAPEAUTOPLAY/S: Insert the audio file FILE in the tape
      reader and go to play if TAPEAUTOPLAY is specified.

    * EJECTTAPE: Eject the audio file from the tape reader.

    * PLAYTAPE: Press play on the tape reader.

    * STOPTAPE: Press stop on the tape reader.

    * GETTAPENAME: Return the name of the audio file inserted in the tape reader.

    * INSERTCARTRIDGE FILE/A FORCE/S: Insert a cartridge CPR FILE in the
      cartridge port (Amstrad Plus only). FORCE will switch the ACE in Amstrad
      Plus mode if it was not the case.

    * EJECTCARTRIDGE: Eject the cartridge image file inserted (Amstrad Plus only).

    * GETCARTRIDGENAME: Return the file name of the cartridge image inserted in
      the cartridge port (Amstrad Plus only).

    * LOADSNA FILE/A: Load a snapshot file named FILE.

    * SAVESNA FILE/A: Save a snapshot of the current emulator state into a file
      named FILE.

    * GRAB FILE RAW/S: Save a screen grab corresponding to what is currently
      displayed by the emulated CPC. If FILE is omitted then the grab
      is automatically saved in the default directory and the used file name is
      returned. If RAW is specified, then a non antialiased grab is saved
      (aspect ratio will not be handled either).

    * FLASHROM FILE/A,ROM/A/N: Load a file named FILE as an upper ROM number
      ROM.

    * REMOVEROM ROM/A/N: Remove the upper ROM number ROM.

    * FLASHFIRMWARE FILE/A: Load a file named FILE as a lower ROM.

    * RAWKEYPRESS KEY=CODE/A/N: Simulate a key press of the key CODE (being the
      physical key number from the CPC keyboard layout).

    * RAWKEYRELEASE KEY=CODE/A/N: Simulate a key release of the key CODE.

    * RAWKEYSTROKE KEY=CODE/A/N,DELAY/N: Simulate a key press then release of
      the key CODE (physical key number of the CPC keyboard) by waiting a
      DELAY (in microseconds) between the actions. The default DELAY is around
      40,000 microseconds (two frames), the max value is 1,000,000
      microseconds (one second).

    * KEYBOARDSTROKE NOENTER/S,WAIT/S,STR=STRING/A/F: simulate keyboard
      entering of the string contained in STRING and validate it by pressing
      RETURN unless the NOENTER/S is provided. It is different from RAWKEYPRESS,
      RAWKEYRELEASE and RAWKEYSTROKE because it does not depend on any
      keyboard variant (the installed firmware ROM is used to perform
      transalation). The keyboard events associated to the string will be
      injected in a synchronous manner, frame by frame (while raw key commands
      are fully asynchronous). Also,if WAIT/S is provided then the command will
      wait for all the keys to be injected into the emulated CPC, otherwise it
      will return immediately.
      Warning: this command requires a standard firmware ROM to perform
      properly; it might fail with custom firmwares.

    Cross-development commands:

    * POKE ADR=ADDRESS/A/N,VAL=VALUE/A/N,LINEAR/S: Poke a byte VALUE at the
      address ADDRESS in the emulated CPC memory. If LINEAR is set, the address
      will be considered as linear to the full CPC memory (0x0000-0xFFFF = main
      RAM, 0x10000-0x1FFFF = first 64 KiB page of the extension RAM, ..).

    * PEEK ADR=ADDRESS/A/N,LINEAR/S: Peek a byte.

    * LOAD FILE/A,ADR=ADDRESS/N,OFT=OFFSET/N,LEN=LENGTH/N,LINEAR/S,RAW/S:
      Load the content FILE from OFFSET, with a maximal LENGTH, at ADDRESS. If
      RAW is set, then any binary header will be ignored. ADDRESS is mandatory
      if no header is present.

    * SAVE FILE/A,ADR=ADDRESS/A/N,LEN=LENGTH/A/N,EXE=EXECUTION/N,LINEAR/S,RAW/S:
      Save a part of the CPC memory into a FILE.

    * OUT PORT/A/N,VAL=VALUE/A/N: Put a byte VALUE on the CPC port address
      PORT.

    * INP PORT/A/N : Read a byte from the CPC port address PORT.

    * BREAKPOINTS ACTIVATE/N,TOGGLE/S: Return or set the breakpoints
      preference.

    * SETBREAKCONDITIONS VBL/S,HBL/S,OPCODE/S,INT=INTERRUPT/S,DISC=DISCACCESS/S,
      BADVBL/S,BADHBL/S,MAXAM/S,WINAPE/S: Set or unset a break condition.

    * ADDBREAKPOINT TYPE/A,ADR=ADDRESS/A/N,ADRMASK=ADDRESSMASK/N,MAP=MAPTYPE,BANK/N,
      PAGE/N,SIZE/N,ACCESS,VAL=VALUE/N,VALMASK=VALUEMASK/N,CONDITION,STEP/N,NAME,
      WATCHER/S: Set a breakpoint of type TYPE (EXECUTE, MEMORY or PORTS) named
      NAME for an area of size SIZE, an access ACCESS (READ-ONLY, WRITE-ONLY or
      READ-WRITE), at the address ADDRESS, depending on a mask ADDRESSMASK,
      matching a memory map type MAPTYPE (UNDEFINED, RAM-MAIN, RAM-EXTENSION,
      ROM-EXTENSION, ROM-FIRMWARE, ROM-CARTRIDGE or RAM-ASIC) related to a 16 KiB
      bank BANK (applicable for map type RAM-MAIN, RAM-EXTENSION, ROM-EXTENSION
      and ROM-CARTRIDGE) within a 64 KiB page PAGE (applicable for RAM-EXTENSION
      only), for a value VALUE with a mask VALUEMASK every STEP under the condition
      CONDITION.
      Note 1: If WATCHER is specified the breakpoint will not stop and will just
      update the match count.
      Note 2: If a breakpoint with the same options exists, then the
      CONDITION, STEP, NAME and mode (WATCHER) are updated.
      Note 3: Value and mask are ignored  for execution breakpoints.
      Note 4; Default address mask value is 0xFFFF (it means "exact match").
      Note 5: Default value mask is 0x00 (it mean "any value match").
      Note 6: BANK and PAGE are ignored when not applicable.

    * REMOVEBREAKPOINT TYPE/A,ADR=ADDRESS/N,ADRMASK=ADDRESSMASK/N,MAP=MAPTYPE,
      BANK/N,PAGE/N,SIZE/N,ACCESS,VAL=VALUE/N,VALMASK=VALUEMASK/N,ALL/S: Remove
      a breakpoint of type TYPE
      (EXECUTE, MEMORY or PORTS) for an area of size SIZE an access ACCESS
      (READ-ONLY, WRITE-ONLY or READ-WRITE), at the address ADDRESS, with a
      mask ADDRESSMASK, matching a memory map type MAPTYPE (UNDEFINED,
      RAM-MAIN, RAM-EXTENSION, ROM-EXTENSION, ROM-FIRMWARE, ROM-CARTRIDGE or
      RAM-ASIC) related to a 16 KiB bank BANK (applicable for map type RAM-MAIN,
      RAM-EXTENSION, ROM-EXTENSION and ROM-CARTRIDGE) within a 64 KiB page PAGE
      (applicable for RAM-EXTENSION only), for a value VALUE using a mask VALUEMASK.
      If ALL is specified then all the breakpoints of provided type TYPE and
      map type MAPTYPE are deleted (other parameters are then ignored).

    * EXPORTBREAKPOINTS FILE/A,LFORMAT: export the configurable breakpoints
      currently set in file named FILE. If no LFORMAT is provided, then the
      exported file is an AREXX script. This script could be launched directly
      to re-set the breakpoints later on. It takes one optional parameter which
      is the AREXX port name to be used. By default the one which was used by
      the ACE's instance that generated the export will be used. If LFORMAT is
      provided, then the provided string is used as a pattern to format each
      line of the generated file. In this pattern:
        . %t will be replaced by the breakpoint type name.
        . %T will be replaced by the breakpoint type name inside double quotes.
        . %a will be replaced by the breakpoint address in decimal format.
        . %A will be replaced by the breakpoint address in hexadecimal format.
        . %m will be replaced by the breakpoint address mask in decimal format.
        . %M will be replaced by the breakpoint address mask in hexadecimal
          format.
        . %y will be replaced by the breakpoint map type.
        . %Y will be replaced by the breakpoint map type inside double quotes.
        . %b will be replaced by the breakpoint map 16 KiB bank in decimal
          format.
        . %B will be replaced by the breakpoint map 16 KiB bank in hexadecimal
          format.
        . %e will be replaced by the breakpoint map 64 KiB page in decimal
          format.
        . %E will be replaced by the breakpoint map 64 KiB page in hexadecimal
          format.
        . %s will be replaced by the breakpoint area size in decimal format.
        . %S will be replaced by the breakpoint area size in hexadecimal format.
        . %c will be replaced by the breakpoint access mode.
        . %v will be replaced by the breakpoint match value in decimal format.
        . %V will be replaced by the breakpoint match value in hexadecimal
          format.
        . %k will be replaced by the breakpoint match value mask in decimal
          format.
        . %K will be replaced by the breakpoint match value mask in hexadecimal
          format.
        . %p will be replaced by the breakpoint step value in decimal format.
        . %P will be replaced by the breakpoint step value in hexadecimal
          format.
        . %n will be replaced by the breakpoint name.
        . %N will be replaced by the breakpoint name inside double quotes.
        . %q will be replaced by the breakpoint condition.
        . %Q will be replaced by the breakpoint condition inside double quotes.
        . %w will be replaced by the token "WATCHER" if it is a watcher and not
          a stopper.
      For instance, the pattern "%A (%t)" would simply output a file where each
      line contains the address of a breakpoint followed by its type.

    * ADDSYMBOL NAME/A,ADR=ADDRESS/A/N,MAP=MAPTYPE,BANK/N,PAGE/N,RELATIVE/S:
      Add a symbol with the name NAME at the address ADDRESS, matching a
      memory map type MAPTYPE (UNDEFINED, RAM-MAIN, RAM-EXTENSION,
      ROM-EXTENSION, ROM-FIRMWARE, ROM-CARTRIDGE or RAM-ASIC) related to a
      16 KiB bank BANK (applicable for map type RAM-MAIN, RAM-EXTENSION,
      ROM-EXTENSION and ROM-CARTRIDGE) within a 64 KiB page PAGE (applicable for
      RAM-EXTENSION only). If RELATIVE is set, then the symbol will be a
      relative (i.e.: to be used with IX/IX indexes) one instead of absolute.

    * REMOVESYMBOL NAME,MAP=MAPTYPE,BANK/N,PAGE/N,ALL/S: Remove symbol.
      If ALL is specified then all the symbols (of map type MAPTYPE) are
      deleted.

    * FINDSYMBOL NAME/A,MAP=MAPTYPE,BANK/N,PAGE/N: Return the address
      corresponding to the symbol with the name NAME.

    * ADDSYSTEMSYMBOLS OS=FIRMWARE/S,DOS=AMSDOS/S,ASIC/S: Add system symbols.
      If no switch is specified then both firmware and AMSDOS symbols are added.
      If FIRMWARE is specified then firmware related symbols are added
      (the one corresponding to the proper firmware version). If AMSDOS is
      specified then AMSDOS related symbols will be added. This command may fail
      if the installed firmware or AMSDOS are non standard ones.

    * EXPORTSYMBOLS FILE/A,LFORMAT: export the symbols currently set in a
      file named FILE. If no LFORMAT is provided, then the exported file is an
      AREXX script. This script could be launched directly to re-set the symbols
      later on. It takes one optional parameter which is the AREXX port name to
      be used. By default the one which was used by the ACE's instance that
      generated the export will be used. If LFORMAT is provided, then
      the provided string is used as a pattern to format each line of the
      generated file. In this pattern:
        . %n will be replaced by the symbol name.
        . %N will be replaced by the symbol name inside double quotes.
        . %a will be replaced by the symbol value in decimal format.
        . %A will be replaced by the symbol value in hexadecimal format.
        . %y will be replaced by the symbol map type.
        . %Y will be replaced by the symbol map type inside double quotes.
        . %b will be replaced by the symbol map 16KiB bank in decimal format.
        . %B will be replaced by the symbol map 16KiB bank in hexadecimal format.
        . %e will be replaced by the symbol map 64KiB page in decimal format.
        . %E will be replaced by the symbol map 64KiB page in hexadecimal format.
        . %t will be replacer by the token "RELATIVE" when applicable.
      For instance, the pattern "%n EQU &%A" would output an assembly file
      defining all the symbols as constants.

    * IMPORTRASM FILE/A: import symbols and breakpoints from a FILE with RASM
      format.

    * AF VAL=VALUE/N: Get or set the AF register of the Z80.
    * BC VAL=VALUE/N: See AF.
    * DE VAL=VALUE/N: See AF.
    * HL VAL=VALUE/N: See AF.
    * SP VAL=VALUE/N: See AF.
    * PC VAL=VALUE/N: See AF.
    * AFx VAL=VALUE/N: Secondary register; see AF.
    * BCx VAL=VALUE/N: Secondary register; see AF.
    * DEx VAL=VALUE/N: Secondary register; see AF.
    * HLx VAL=VALUE/N: Secondary register; see AF.
    * IX VAL=VALUE/N: See AF.
    * IY VAL=VALUE/N: See AF.
    * I VAL=VALUE/N: 8 bit register; see AF.

    * PSGREGISTER NUMBER/N/A,VALUE/N: Get of set a PSG register.

    * CRTCREGISTER NUMBER/N/A,VALUE/N: Get of set a CRTC register.

    * GETUSERCOUNTER TYPE/A: return the current value of the user counter of
      type TYPE.
      Theses counters counters are associated to the ones from the Z80 window and the
      possible values are:
        . MICROSECONDS for the microseconds counter.
        . LINES for the line counter.
        . FRAMES for the frame counter.

    * RESETUSERCOUNTER TYPE/A: reset remet the user counter specified with
      TYPE.
      The possible values are the same than from GETUSERCOUNTER.

    * GETLASTBREAKTYPE: return the status for the last activated
      breakpoint(s). This option is very useful inside scripts executed at
      breakpoints activation because it allows you to know in which conditions
      the break occurred. The status is returned in the form of a string formated
      as followed:

      [Execution][I/O Port][Memory][Interrupt][HBL][VBL][Bad HBL][Bad VBL][Disc access][Step by step][On screen break][Maxam break opcode][WinAPE break opcode]

      Each section under brackets is related to a type of breakpoint and will
      contain "-" if the associated type of breakpoint was not active during the
      last break. If it was active, then the related section will contain its
      name if it was named or a string with the name of the type of breakpoint
      if it was not.

    * ONSCREENBREAK X/A/N,Y/A/N: set a breakpoint for the display position
      X,Y. This position are related to the video frame fly
      and do not depend of graphic resolution.
      Note: this breakpoint is related to the breakpoint "Break on the
      mouse clicked position" available from the "Monitoring" menu and only one
      can be set at once.

    * RECORDSTART FILE: start recording a video. It may fail if a video is
      already being recorded or if the video file could not be created for some
      reason. If FILE is omitted then the record is automatically done in
      the default directory and the used file name is returned.

    * RECORDSTOP: stop recording a video.

    * ACTIVATEPLUGIN NAME/A: activate a plugin providing its name (for
      instance "joysticks.acepansion"). An error is returned if the operation
      failed, which can be the case if the plugin did not exist or if another
      conflicting plugin refused to be disabled.

    * DEACTIVATEPLUGIN NAME/A: deactivate a plugin providing its name.
      An error is returned if the operation failed.


ACE · Video recording

Contents | Index | < Browse | Browse >




    Video recording


    ACE can record a video of what is played inside the emulator. Both the sound
    and the image are recorded. All the recording files are created in the drawer
    "Records" (you can change this default drawer with the tool type
    RECORDSPATH).

    As video recording requires a lot of power and bandwidth, ACE will not
    directly produce a usable video. Instead, recording is split in three
    phases.

    Please note that even is recording in slowing down emulation on your machine
    all frames and all sounds will be recorded correctly.

    Phase 1:

    Once a recording is started, ACE will make a fast record of the sound and
    the image in files using a private format (AREC file format).

    Please note that if the recording is long, several AREC files will be
    generated in order to avoid the 2 Gb file limit of 32-bit file systems.
    This is done because 64-bit file systems are usually very slow and it is a
    good idea to record on 32-bit ones such as SFS or PFS3. Additional files
    will have a numbered suffix (<filename>.arec followed by
    <filename>.arec.00001 then <filename>.arec.00002...).

    Important: if the display mode of ACE is changed during this phase (switch
    to full screen or overscan mode, overlay setting changed, iconified...)
    record will stop immediatly.

    Phase 2:

    You need to use the tool arec2raw located in ACE "Tools" drawer to convert AREC
    files into usable raw files.

    Please check scripts & tools section for more information about this tool.

    After arec2raw has been executed, you will find three files:
    * One rawaudio file.
    * One rawvideo file.
    * One encoding script.

    Important: generated raw files can be very large and you might have to use a
    64-bit file system to store them. IceFS is a native 64-bit file system but
    you could also use ext2/3 or ntfs.

    Phase 3:

    Simply launch the script generated in phase 2 in order to encode your video
    into regular mpeg4 avi file. You might want to modify it to customize
    encoding parameters.

    Please note that the tool ffmpeg must be installed in your path in order to
    use this script.


ACE · Expansion plugins

Contents | Index | < Browse | Browse >




    Expansion plugins


    ACE is expandable through shared libraries that are loaded and initialized
    at statup time. These libraries are called "ACEpansions" and must be
    installed in the "Plugins" drawer of ACE.

    Each plugin loaded will add an item to the "Expansions" menu of the emulator
    so that it could be enabled or disabled. Some plugins could also add a
    preferences window to this menu, and a help guide to the "Help" menu.

    Plugins are configurable through their dedicated preferences window or using
    tooltypes of their icon; please refer to the documentation of each plugin to
    know about them.

    By default ACE comes with some expansion plugins:

    Joysticks (joysticks.acepansion) emulates the CPC joysticks using the plugged
    ones on the host machine (thru USB or whatever).

    Printer (printer.acepansion) allow you to redirect the CPC printer port to a
    file.

    Multiface Two (multiface2.acepansion) emulates the famous Multiface Two.

    Light guns (gunstick.acepansion, magnumlightphaser.acepansion,
    trojanlightphaser.acepansion and westphaser.acepansion) provide emulation
    of the most popular light guns.

    Digiblaster (digiblaster.acepansion) emulates the Digiblaster and the
    Soundplayer.

    Kemptson mouse (kempstonmouse.acepansion) emulates... well... the Kempston
    mouse.

    AMX mouse (amxmouse.acepansion) emulates... erm... the AMX mouse (not very
    accurate but the AMX mouse isn't either!).

    Additional plugins for a bunch of various extentions are available on
    ACE web site.

    If you whish to develop your own expansion plugin, the source code of all
    these plugins are provided as examples in the "Bonus" drawer. You will also
    find there the dedicated SDK and all the required related documentation.


ACE · History

Contents | Index | < Browse | Browse >




    History

    * Version 1.26 (01.01.2024):
      - Added some missing default symbols for firmware routines.
      - Fixed FDC status register to also allow to write data.
      - Simplified code related to graphic mode handling in Gate Array
        emulation.
      - Fixed video memory address handling in a specific case related to ASIC
        SSCR update (fixes Golem13's Ghost'n Goblins remake).
      - Added options to automatically adjust CRTC type and/or memory size
        and/or computer model at snapshot loading.
      - Added ability to load and save activated plugins in snapshots.
      - Added ability to automatically add symbols related to ASIC registers
        (available thru symbols list context menu or with ADDSYSTEMSYMBOLS AREXX
        command).
      - Fixed an issue in ASIC I/O page management when Y position of hard
        sprites was set to an invalid values.
      - Fixed disassembler window to use Unicode (like keyboard one).
      - Optimized charset conversion speed.
      - Fixed a potential inconsistency in ASCII display between disassembler
        and memory editor windows.
      - Improved ACEpansion plugins SDK files to generated faster and smaller
        code.
      - Upgraded all default ACEpansion to take advantage of the improved SDK.
      - Added display of ACEpansion icon into their configuration window.
      - Reenabled and fixed CRTC 1 sick mode emulation (fixes DSC4 demo from
        Logon System).
      - Added plug/unplug toggle button in ACEpansion plugin windows.
      - Added load and store support for LOWR and RM?? chunks in snapshots (as
        defined by RASM). When such integrated ROMs are found in a snapshot to
        load, they are automatically exported as separated files in the
        temporary drawer T: (in case you want to get them).
      - Fixed update of symbols window when it was opened while symbols were
        imported from a snapshot.
      - Added load and store support for new CART chunk in snapshots so that
        Amstrad Plus cartridge ROMs could also be integrated. Like for LOWR
        and RM?? chunks, a cartridge file is automatically exported for later
        usage (in XPR format, since extended cartridge are also supported).
      - Added an option to decide if the ROMs data should be embedded or not
        in snapshots (in addition to ROMs files references).
      - Added new chunks for Basic and AMSDOS ROMs storage in snapshots.
      - Extended and unified memory mapping support for symbols and
        breakpoints for any memory type and with a fine matching depending on
        read or write accesses. Updated all GUI elements and AREXX commands
        accordingly.
      - Added support for WinAPE's BRKS et RASM's REMU chunks in snapshots
        (import only).
      - Plugins configuration is now read directly from ACE's icons tooltypes
        so that each icon can now define specific plugins settings.
      - Added an AREXX command IMPORTRASM to import symbols and breakpoints
        from a RASM log file.
      - Upgraded provided "ImportSymbols.rexx" AREXX script to take advantage
        of the new memory mapping support when importing a symbol file from
        vasm, rasm or a simple EQU list. Also added support for relative
        symbols when importing a rasm symbol file (".sym" file).
      - Upgraded provided "Breakpoints.rexx" AREXX script to also take
        advantage of the new memory mapping support.
      - Updated arec2raw tool to use the new ffmpeg command line style.

    * Version 1.25 (04.09.2022):
      - GRAB AREXX command fixed to return full path to the created file instead
        of only the file name.
      - Added MagicBeacon support to send system notification when a grab is
        done (to be configured using "ACE.ScreenShot" notification type in
        MagicBeacon preferences).
      - Added ability to catch hosts' mouse events from plugins without relying
        on Operating System dependant code (v7 API).
      - Updated AMX mouse and Kempston mouse emulation plugins to take advantage
        of the new generic mouse events management.
      - Added MHP=MOUSEHANDLERPRIORITY/K/N option to change the priority of the
        input handler used for plugins dealing with mouse emulation (defaults to
        120).
      - Added automatic mouse catching by emulation plugins (API v7) when the
        CPC screen is clicked, and automatic release when ACE main window is
        loosing focus, or manual by pressing rigth "alt" key.
      - Added host's mouse pointer to be hidden while mouse is cougth by
        emulation plugin.
      - Added ability to catch host's gamepad events from plugins without
        relying on Operating System dependant code (v7 API).
      - Renamed light device APIs of plugins to be compliant with the new
        gamepad and mouse ones.
      - Updated joysticks emulation plugin to take advantage of the new generic
        gamepad events management.
      - Added support of analog joysticks of Amstrad Plus from plugins (v7 API).
      - Added analog and combined modes in joysticks emulation plugin.
      - Minor reworks and clean up in plugins SDK.
      - Fixed emulation of CRTC 0 and 2 to allow the border byte between
        horizontal split screens to be disabled.
      - Added a loader window which displays a progress about plugins which are
        slow to activate.
      - Added a wait window which pops when a plugin activation or deactivation
        lasts for more than one second.
      - Added a request to ask the user to reset the CPC when a plugin which is
        connected to the expansion port is activated or deactivated.
      - Fixed Gate Array graphic mode switch at end of short CRTC hsync (fixes
        Scroll Factory demo from AsT).
      - Added an on screen info quick help to inform the user about mouse
        catching behavior.
      - Added handling of built-in profiles for the main gamepads so that
        buttons order is always the same ; supports gamepads of type Playstation
        3 (thru adapter), Playstation 4 and 5, Xbox (all versions) and generic
        (Logitech compatible).
      - Fixed plugins' mouse event catching to also work with PowerBooks'
        trackpads.
      - Added a dedicated icon for the plugin emulating the Multiface Two (icon
        by Christophe 'Highlander' Delorme).
      - Added deactivation of all plugins but joysticks when a preset is
        selected from the quick preferences menu.

    * Version 1.24 (30.08.2021):
      - Added support for memory expansions from plugins (v6 API).
      - Added capability to cold reset the CPC from plugins thru /BUS_RESET
        signal (v6 API).
      - Added a plugin which is emulating the Multiface Two as an example of v6
        API usage.
      - Simplified and improved PSG noise emulation (thanks to Zik and Targhan).
      - Improved mice and joyticks plugins to allocate signals only when they
        are active.
      - Internal fixes to use less signals.
      - Fixed a bug in plugins sorting in menu.
      - Added "A" and "B" shortkeys in drive choose request at drag and drop.
      - Added ability to alter expansion port's READY signal from plugins (v6
        API).
      - Fixed a crash when trying to load invalid snapshots.
      - Removed NAF=NOAUDIOFILTER/S option and replacement by the option
        AF=AUDIOFILTER which accepts several values.
      - Added an audio filter which allows resampling at the host machine native
        frequency through the fresample.library (if installed on your system);
        this new filter avoids AHI flaws regarding resampling. In short: better
        audio quality at cost of CPU (ACE is around 1% slower). You can disable
        this new high filter by setting the option AF=AUDIOFILTER to the value
        HiCut to restore the old filter.
      - Fixed a display issue in CRTC window.
      - Fixed breakpoint matching to be reset when a breakpoint is modified.
      - Cartridge related option from ROM configuration window is now ghosted
        when ACE is not emulating an Amstrad Plus.
      - Added a new window to visualize the internal keyboard matrix.
      - Added a flag to let plugins know about the expansion port being an
        Amstrad CPC or an Amstrad Plus one (v6 API).
      - Fixed plugin SDK to free plugins' specific resources before generic
        ones.
      - Fixed plugin SDK to properly close the locale.library.

    * Version 1.23 (25.04.2021):
      - Now compiles and runs on AmigaOS 3.x (no public version planned yet).
      - Fixed a memory leak in case of video overlay buffer allocation failure.
      - Added support of Picasso96 PiP.
      - Added workaround Picasso96 ScalePixelArray() API bug.
      - Fixed version tag to be at the beginning of the executable.
      - Fixed graphic mode in saved snapshots.
      - Changed load/save snapshot not to alter pause/run state anymore.
      - Moved quick preférences from "Preferences" to "Project" menu.
      - Added more events on which user commands can be executed.
      - Added preference window for events configuration.
      - Updated guide with new features and added some others older ones which
        were missing.
      - Fixed argument parsing buffer which could be too small to handle complex
        configurations.
      - Fixed PPI port A emulation on Amstrad Plus to work at the same time in
        read and write (greetings to AsT for this discovery).
      - Added PSGREGISTER and CRTCREGISTER AREXX commands to get or set PSG and
        CRTC registers.
      - Added support for DSCA and DSCB chunks in snapshots.
      - Added support for ROMS chunks in snapshots while extending it to 256
        ROMs instead of only 32.
      - Added new chunk TAPE in snapshots.
      - Added preferences related to new chunks in snapshots.
      - Plugins preferences window content is now automatically disabled when
        the plugin is disabled.
      - Fixed various symbol pop-up lists to be displayed with a fixed size.
      - Fixed maximum size of strings containing file paths.
      - Changed symbol's pattern filtering to be a simple matching instead of
        a DOS pattern.
      - DMA disassembler window is now resizable.
      - Fixed a bug when loading non-standard ROMs.
      - Fixed a bug in Z80 disassembler when dealing with negative IX and IY
        offsets.
      - Fixed a bug which made the memory map embedded in memory editor or
        disassembler opened from another editor in custom mapping mode to keep
        up on updating automatically (it was only a visual bug).
      - Optimised real time symbol lists update in address gadgets to save CPU.
      - "K" character was refused in breakpoint condition string field.
      - Fixed memory map layout which was truncated with some MUI preferences.
      - Fixed PSG null hard enveloppe emulation.

    * Version 1.22 (19.10.2020):
      - Improved help guide workaround MorphOS 3.10+ Multiview bug to fallback
        to english when help for the current language is not available.
      - Updated ACE plugins SDK to be easier to use and more idiot proof.
      - Cleaned up ACEpansion plugins code examples taking advantage of the new
        plugins SDK.
      - Fixed a possible crash in AMX mouse and Kemptson mouse plugins
        initialization when running out of memory (very unlikely to happen).
      - Added Spanish translation thanks to Juan Carlos Herran Martin.
      - Fixed fire 1 vs fire 2 mismatch introduced in version 1.19 which made
        some light gun plugins not to work anymore.
      - Added a preferences window to the printer plugin.
      - Fixed handling of empty strings from catalogs.
      - Fixed symbol names handling to accept "." character.
      - Fixed a bug in several menus where items of checkit type where using
        wrong toggle and/or exclude flags (harmless on MorphOS).
      - Fixed a bug in keyboard window which prevented ghost keys to be
        displayed.
      - Added Unicode support to keyboard window.
      - Added support of control, extended and special characters display in
        keyboard window.
      - Fixed a bug in disassembler view class where the layout could be broken
        when long labels exist.
      - Added a new script to import breakpoints from raw files generated by
        rasm.
      - Added a configurable pattern to AREXX commands EXPORTBREAKPOINTS and
        EXPORTSYMBOLS (by default both commands now export AREXX scripts).
      - Fixed missing documentation of SIZE parameter for ADDBREAKPOINT and
        REMOVEBREAKPOINT AREXX commands.
      - Fixed a bug where non-active execute breakpoints could be displayed as
        active.
      - Fixed a possible invalid memory access when removing breakpoints or
        symbols from AREXX interface.
      - Fixed a bug with JR opcode display in disassembler.
      - Made symbols list sortable by name or by address.
      - Added a contextual menu entry in the symbols window to directly export
        symbols from into an AREXX script.
      - Fixed a bug which prevented update of the "Remove" button for ROMs
        installed in a slot with an id greater that 15.
      - Fixed a bug in AMSTRADPLUS and CRTC options interaction which made an
        invalid warning message about wrong configuration to be displayed at
        startup.
      - Initial memory contents is now initialized differently depending on the
        CPC model (previously it was always initialized with &AA/&55 common
        scheme).
      - Added new plugin API to retrieve current configuration (v5 API).
      - Added ability to save plugins default configuration from their
        preferences window.
      - Updated printer acepansion plugin to v5 API so that ACE can now save
        its preferences.
      - Fixed the devices and ROM history of the last used files (from related
        string input context menu) to also contain the initial value (from
        tooltypes) and further values set from AREXX.
      - Removed the tape to hard disc wrapper interface (TAPE2HD option). You
        should now take advantage of the Albireo plugin with its AlbiDOS ROM
        which is compatible AMSDOS.
      - Added ability to configure ACE to emulate a plain GX4000 (added
        NTI=NOTAPEINTERFACE/S argument and related menu item).
      - Added 39.90 MHz ASIC emulation in GX4000 mode (instead of 40.00 MHz).
      - Added a quick preference menu to directly switch between the main stock
        CPC presets.
      - Added support for extended cartridges (up to hundreds of megabytes).
      - Added ACTIVATEPLUGIN and DEACTIVATEPLUGIN AREXX commands so that plugins
        activation can be controlled from scripts.
      - Improved virtual keyboard layout (it is smaller and do not suffer from
        truncated characters depending on MUI settings).
      - Fixed the small CPC model image display glitch of "About emulated CPC"
        window when CPC model was switched while the window was closed.

    * Version 1.21 (22.05.2020):
      - Implemented full Z80 interrupt mode 0 emulation, including when handled
        from plugins.
      - Fixed illegal memory access in ROMs management.
      - Fixed ROM icon transparency in configuration window.

    * Version 1.20 (10.05.2020):
      - Disabled irrelevant spellchecking in various text inputs.
      - Changed auto adaptative keymap to rely on Unicode instead of the local
        8-bit charset.
      - Workaround to get rid of a MorphOS 3.10+ Multiview bug which prevents
        help guide to be opened properly from MUI applications.
      - Added a history of the last 10 used files in devices context menus.
      - Added ROMSPATH tooltype to choose the ROM files default path.
      - Added a preferences window to edit ROMs configuration (in addition to
        tooltypes and AREXX interface).
      - Added columns in symbols window to show contents of memory pointed by
        a symbol in disassembled, hexadecimal and ASCII forms. Columns are
        hidden by default.
      - Replaced tooltype DECODESYSTEMRST by DONTDECODESYSTEMRST (default is
        now to decode system RST).
      - Fixed x,y hard sprites positionning range (which is respectively
        -128,+895 and -128,+383 instead of -256,+767 and -256,+255 as stated by
        ASIC registers actual values).
      - Fixed hard sprites bitmap update delay (was 250ns to early).
      - Implemented emulation of ASIC bug where hard sprites' pixels are not
        displayed right after a bitmap read of write access.
      - Added a "Save preferences as..." menu item.
      - Added currently inserted floppy discs, tape and cartridge in saved
        preferences.
      - Added display on the current address symbol(s) in memory editor
        windows.
      - Fixed a few Z80 vs memory access timings with illegal instructions.
      - Added preferences for screen geometry settings depending on the CPC
        model.
      - Remove NOPLUSSCREEN tooltype.
      - Added SCREENGEOMETRY tooltype.

    * Version 1.19 (17.09.2019):
      - Integrated plugins configuration into ACE arguments/tooltypes. ACTIVATE
        tooltype from plugins icon was removed, instead ACE automatically adds
        a switch to its arguments/tooltypes for each found plugin in order to
        decide if it should be enabled or not directly from ACE icon/command
        line (i.e.: JOYSTICK.ACEPANSION/S for joystick plugin). You can not have
        different plugins activated by default for each ACE icon.
      - Removed PLUGINSPATH tooltype.
      - Changed some plugins internal API to avoid MUI dependencies in core to
        ease portability.
      - Fixed potential issues in internal plugins handling which was introduced
        in v1.18.
      - Changed internals of MUI GUI code to remove some more direct accesses to
        emulator data structure and API.
      - Fixed detection of column counter overflow (register 0) in CRTC editor
        window.
      - Sending CTRL_C signal to ACE Emulator subtask now makes the application
        to exit.
      - Fixed GUI to ensure that the main window is always opened when returning
        from iconfication.
      - Removed option to disable tape relay noise emulation (it was not
        functional and is totally useless).
      - Fixed some copyright strings in default plugins.
      - Fixed wrong timing of OUT (0),A opcode when putting data on bus.
      - Replaced "MMR" keyword of breakpoints condition by "MemPage" and
        "MemBankMode" which are respectively returning the selected 64K
        expansion memory page (from 0 to 7 for 512KiB expansion) and the
        16K bank mapping mode (as well known from MMR: 0 for no mapping, 1-3 for
        special modes and 4-7 for 16K bank 0 to 3).
      - Added support for up to 4096K expansion RAM (4160K total memory,
        compatible with MemCard 2M and CPC4MB).
      - Added support for new snapshot chunks MX?? (where ?? is hexadecimal
        value from 09 to 40) in extension to the existing MEM? chunks (where ?
        goes from 0 to 8), so that up to 4160K can be stored.
      - Moved all existing memory preferences to a new preferences window, and
        added ability to change the memory size of the emulated CPC while ACE
        is running.
      - Fixed some duplicated shortcut keys from menus.
      - Smarter handling of multiple memory editor and disassembly windows
        positionning/sizing history.
      - Added tooltypes HIDEINTERFACE,NOBEAMCURSOR, NODRIVEA, NODRIVEB,
        FORCESIDEB, FORCEDRIVEA, DECODESYSTEMRST, DECODEBRK, SCREENMONITOR,
        BRIGHTNESS, VHOLD et HHOLD to configure at startup features that were
        only available at run time.
      - Added preferences save from the menu (resynchronize the icon's tooltypes
        with run time settings). Of course, this option is only available when
        ACE is launched from an icon.
      - Fixed FlushLib call in plugins makefiles.
      - Removed "Logs" drawer (printer plugin now default to
        "T:ACE_printer.log").
      - Relabeled fire buttons of virtual joysticks to match numbering original
        specification from Amstrad rather than usage.
      - Fixed swapped value for ACE_IODATAB_JOYSTICK_FIRE2 and
        ACE_IODATAB_JOYSTICK_FIRE2 in the plugin header file
        "acepansion_plugin.h", and recompilation of the joyticks emulation
        plugin with the fixed header.
      - Improved joysticks plugin to make use on the sensors.library instead of
        the lowlevel.library (thanks to Szilárd Biró for his code examples).
      - Fixed the last kwown emulation issue of CRTC 3 (fixes Tennis Cup 2
        intro).
      - Fixed a very bad memory trash at exit when a memory editor or
        disassembler window was opened.

    * Version 1.18 (18.03.2019):
      - Removed a few direct accesses to private emulator's data structure from
        the AREXX hook; it is now dealing nicely with the emulator's engine MUI
        object everytimes.
      - Added missing AREXX command R to get/set Z80 R register.
      - Split Gate Array analyzer into two windows: one dedicated to the graphic
        palette and the other one for advanced information (interrupt counter,
        display address and type, graphic mode and programmed graphic mode).
      - Added handling of DK'Tronics mirror write bug in memory map window (it
        was correctly emulated but not displayed in the memory map window).
      - Added new panels to load and save files directly from the memory editor
        window (to be activated from the context menu, like other panels).
      - Added ability to add system symbols (firmware and Amsdos) from the
        symbols manager windows, through a contextual menu on symbols list.
      - Added a new AREXX command ADDSYSTEMSYMBOLS to also be able to add the
        system symbols from scripts.
      - Relabeled fire buttons of virtual joysticks to match numbering usage
        rather than original specification from Amstrad.
      - Added an indicator on breakpoints management window tabs to show if
        a breakpoint is active within a tab or not.
      - Added information about memory access breakpoint end address in
        breakpoints management window (computed from start address and size).
      - Added symbols management in stack view of Z80 editor window.
      - Fixed a bug in NMI handling when triggered from a plugin.
      - Added new plugin API to handle light pens and light guns (v4 API).
      - Removed Magnum Light Phaser and Trojan Light Phazer emulation from ACE.
      - Added new plugins for Magnum Light Phaser and Trojan Light Phazer.
      - Optimized internal plugins handling to save some CPU time (ACE is now 5%
        faster).
      - Added new flags so that a plugin can declare itself not being available
        on Amstrad CPC or Amstrad Plus (v4 API).
      - Optimized some internal MUI triggers.
      - Fixed a bug were several exclusive plugins could be activated at the
        same time when configured from tooltypes.
      - Drag and drop now puts ACE main window to front and makes it active.
      - Added new plugins for Gun-Stick and West Phaser.
      - Improved plugins automatic sort in "Expansions" and "Help" menus.
      - Added AREXX commands to set and get monitor type, monitor brightness
        and audio volume.
      - Added menu shortcuts for the first nine plugins of the expansion menu.
      - Fixed Tape2HD wrapper symbolic link management (for both directories and
        files).
      - Reworked a bit emulator's triggers dispatching through MUI.
      - Added ACEpansion autodoc in plugins SDK.
      - Fixed version tag which was missing a part in detailled mode (it was
        lost during ACE executable compression process).
      - Fixed wrong quick helps in breakpoints window.
      - Changed internal of breakpoints window to use a dedicated list class
        instead of hooks over standard MUI list.
      - Fixed symbols pop-up button activation status that where not displayed
        properly when a symbol was remove/added while gadget was disabled, or
        when gadget was enabled while no symbols were configured.
      - Added a column to display matching symbols in breakpoints lists.
      - Duplicated symbols are now inserted sorted for each address.
      - Added a contextual menu on the list of I/O ports breakpoints which
        allows to add predefined breakpoints on internal CPC ports.
      - Fixed swapped breakpoint tab trigger LED between I/O ports and memory
        access breakpoints.
      - Fixed pick symbol pop-up to be closed when switching tabs in breakpoints
        window.
      - Fixed ImportSymbols.rexx script to exclude symbols related to data
        structures declared in vasm.
      - Added icons for phaser plugins thanks to Mathieu 'Hwikaa' Delaruelle.
      - Cleaned makefile which is given with ACEpansion plugins examples.

    * Version 1.17 (18.08.2018):
      - Reworked OSD management to better take advantage of hardware
        acceleration and to avoid useless additional updates which were
        triggered (OSD is now 4 times faster).
      - Fixed a bug where record status was not updated after a display mode
        change.
      - Improved WPA-based rendering mode by adding double buffering.
      - Added outline around OSD floppy leds so that they are still visible on
        red backgrounds when using video overlay rendering mode.
      - Updated german catalog thanks to Stefan 'polluks' Haubenthal.
      - Changed shortcut keys for step-by-step management and made them
        accessible from menu.
      - Removed controls and user counters from Z80 window and created separated
        windows instead.
      - Removed disassembler view from Z80 window and made it more compact.
      - Added a delayed GUI update mechanism when breakpoints, symbols, memory,
        i/o ports or chip registers are programmed from the AREXX interface to
        avoid slowed down operations due to massive display updates. Also works
        on file load through AREXX.
      - Fixed a layout issue in CRTC editor window.
      - Fixed missing french translation for "bank" (reported by Longshot).
      - Added a separated memory map window.
      - Added memory map information to memory editor and disassembler windows.
      - Optmized memory map display speed.
      - Fixed all known bugs when memory map was displaing wrong information
        (map building routine was rewritten from scratch and is much better).
      - Fixed quick help text of memory map (red and green colors explanations
        were swapped).
      - Using a button to follow a branch in disassembly window now
        automatically updates the address bookmark history.
      - Prevented switch to full screen from AREXX script while ACE is
        iconified.
      - Reworked handling of secondary windows auto-jump to new screen when
        switching to full screen mode (it works like previously but it is much
        nicer internally!).
      - Memory editor and disassembler windows can now be opened several times
        (each one with its own memory mapping context).
      - Memory mapping customization gadgets are now only visible when manual
        configuration is selected in memory editor and disassembler windows.
      - Changed a bit the application menu and some keyboard shortcuts.
      - Added a new analyzer window with additional information about some ASIC
        video and interrupt registers.
      - Altivec is no longer required (ACE should work again on computers
        without G4 or G5 CPU).

    * Version 1.16 (18.03.2018):
      - Fixed a FDC timing when starting a reading/writing operation (some
        abnormally slow track loaders should now be as fast as expected).
      - Fixed a potential crash (at least a memory hit) when attempting to reach
        a non-existing track of a disc.
      - Added a FILE argument to RECORDSTART AREXX command to be able to provide
        a specific file name (similar to GRAB AREXX command; if not given,
        automatic naming in the default drawer is still used).
      - Added an Ambient filetype for ACE video recordings (AREC files), located
        in the "Bonus" drawer.
      - Added a new tooltype AP=AUTOPAUSE and a related preference menu item to
        automatically pause or start the emulation when the main window becomes
        inactive or active again.
      - Improved internal APIs regarding CPC memory handling from MUI windows.
      - Added an update shifter shared between CPU consuming real time windows
        (Z80, Memory, DMA) to better distribute display time over the frames.
      - Reworked code of memory and disassembler windows to share a new private
        MUI custom class to handle user defined memory mapping (much better MUI
        code!).
      - Added a contextual menu to both editor and disassembler areas to
        activate the real time update on them (everything else in ACE is of
        course still real time; it was not the case for these windows because of
        heavy CPU load but it now works better thanks to various optimizations).
      - Added MMR, RMR and RMR2 raw values display corresponding to the selected
        mappings in both the memory editor window and the disassembler window.
      - Video recording now waits for 10 seconds and then updates the associated
        icon so that it has a better chance to be relevant.
      - Fixed broken keyboard cycle chain in Z80 editor, CTM preferences and
        joystick acepansion plugin preferences.
      - Fixed video recording to disable any allowed frame skip while
        processing.
      - Improved CPC+ ASIC IVR bug emulation (CRTC³ of Flower Corp. do not
        detect ACE anymore).
      - Removed one remaining call to CPC+ ASIC stuff in CRTC 4 emulation
        (harmless).
      - Disabled warning message on non-interlacted sectors when loading a DSK
        file (now most DSK files around which are using non-interlaced sectors
        are doing that on purpose and are no longer the result of some poor DSK
        creator tools).
      - Added support of symbols import from files containing a list of EQUs in
        the ImportSymbols.rexx script.
      - Fixed CPC+ ASIC timings regarding fine updates of hard sprites
        magnification and position registers (they are now matching the required
        250ns precision like it was already the case for palette updates).
      - Fixed a bug in CPC+ ASIC raster interrupt management; it could be
        cleared before being processed.
      - Improved management of duplicated CPC+ ASIC raster interrupts (should
        now just be perfect!).
      - Optimized again a bit the code, specifically for CPC+ DMA emulation
        (quite a hard task to keep full featured Plus emulation running one
        frame on a little G4).
      - Reworked CPC+ DMA wait state management to better match actual internal
        behavior.
      - Fixed a few minor CPC+ DMA timings.
      - Fixed bit 7 of DCSR CPC+ ASIC register which was not set after a raster
        interrupt if bit 0 of IVR was 0.
      - Fixed a nasty hit at startup (reported by Michal 'rzookol' Zukowski).
      - Fixed add button of symbol management window to be disabled when symbol
        name is empty.
      - Fixed ASICPageOn condition token which was not working.
      - Fixed a bug in CPC+ handling of raster interrupt when enabled while a
        standard Gate Array interrupt was pending (prevented Eerie Forest of
        Logon System from working properly).
      - Added a combined build mode of the core source files to improve GCC
        optimization process (ACE is now 14% faster!).

    * Version 1.15 (18.02.2018):
      - Fixed typos in french translation.
      - Fixed decoding of BIT/RES/SET opcodes over IX/IY on disassembler views.
      - Added new plugin API to inform about RETI execution (v3 API)
      - Added support for non-maskable interrupts issued from plugins (v3 API).
      - Added a tooltype "NOPLUSUNSTABLEHIZ" to disable emulation of the
        unstable Hi-Z when reading invalid addresses in the ASIC I/O page (let
        you run some buggy demos such as BarBar of Eliot/Benediction; anyway
        these demos are still not working properly on real CPC+ when expanded
        with Ramcard or Mulficace Two but there is nothing I can do about it!).
      - Added an item in menu preference to disable/enable the emulation of the
        Amstrad Plus unstable Hi-Z (related to NOPLUSUNSTABLEHIZ tooltype).
      - Fixed some badly mapped quick help.
      - Added support for video recording (fast hard disk I/O and lot of space
        required!).
      - Added a control button to start or stop video recording.
      - Added "RECORDPATH" tooltype to change the video recording path (defaults
        to "Records/" drawer).
      - Added an option to show parts of the display which are usually not
        visible because of being off-screen (mainly useful as a debug option for
        demomakers). A new related "OVERSCAN" tooltype was added as well as an
        checkbox to switch this mode on or off from the screen monitor
        preferences window (requested by NoRecess, and might partially match
        Grimmy request too).
      - Added keywords to check about RAM and ROM paging in breakpoints
        condition.
      - Added a field "size" to memory access breakpoints in addition to the
        already existing "address mask" (now all types of break based on memory
        areas are possible). ADDBREAKPOINT, REMOVEBREAKPOINT and
        EXPORTBREAKPOINTS AREXX commands where updated accordingly, as well as
        the field was added to the breakpoint chunk on snapshots (in a backward
        compatible manner).
      - Changed breakpoints editor window layout to make it slightly more
        compact.
      - Fixed CRTC 4 emulation which was using CPC+ specific stuff for some
        computations (it triggered weird behavior when switching from CRTC 3 to
        CRTC 4 while ASIC hard scrolling feature was in use).
      - Fixed a horrible memory leak which was introduced in version 1.13.
      - Added symbol management through AREXX commands ADDSYMBOL, REMOVESYMBOL,
        FINDSYMBOL and EXPORTSYMBOLS.
      - Added support for symbols in disassembly window (can be disabled).
      - Added support for MEM0-8 chunks of snapshots (can be disabled).
      - Added a workaround to deal with WinAPE wrong snapshots using CPC+ chunk
        (RMR2 is not stored at the expected location).
      - Added support for clipboard paste in emulator (similar to AREXX command
        KEYBOARDSTROKE with input injected from clipboard).
      - Added a symbols manager window with pattern filtering feature.
      - Added support for symbols in relevant 16-bit values inputs (for both
        matching and picking address).
      - Slightly optimized GUI task regarding notifications (about 5% faster).
      - Added direct support for cut and paste from clipboard in the memory
        editor to ease fast and one-shot manipulations (AREXX should always be
        preferred for complex or iterative copies).
      - Added support for a new snapshot chunk in order to store symbols.
      - Added string and hexadecimal sequence search feature in memory editor.
      - Increased reset handler delay to 3 seconds (instead of 1).
      - Added OSD indication for recording.
      - Added AREXX commands RECORDSTART and RECORDSTOP to control video
        recording.
      - Added an AREXX script which is able to import into ACE all the symbols
        found in a listing file generated by vasm or a symbol file generated by
        rasm.
      - Added a small command line tool named arec2raw which is able to convert
        AREC video files recorded by ACE into rawaudio and rawvideo files, and
        also to generate a dedicated script capable of encoding these raw files
        into a standard video format using ffmpeg tool (a 64-bit filesystem
        might be required for large videos).
      - Fixed non-localized short keys in requesters (reported by Stefan
        'polluks' Haubenthal).
      - Updated german catalog thanks to Stefan 'polluks' Haubenthal.

    * Version 1.14 (09.03.2017):
      - Fixed potential issue in Tape2HD wrapper directory detection.
      - Reworked Z80 editor memory layout and added a memory read/write map
        observer.
      - Removed bold display on labels in some windows to better match classic
        MUI applications graphic charter.
      - Updated german catalog thanks to Stefan 'polluks' Haubenthal.
      - Added shortcut access to video memory in memory editor window (requested
        by Krusty).
      - Changed layout of breakpoints window.
      - Re-optimized speed of CRTC emulation that had deteriorated in version
        1.13 (ACE is now 5% faster).
      - Fixed some limit conditions on CRTC 0 when register 4 is set during end
        of screen (Kevin Thacker test suite).
      - Reworked internal AREXX interface installation.
      - Fixed plugins installation internal API to work properly when several
        emulation objects are created within the same application.
      - Added a tooltype "PLUGINSPATH" to configure the path of the directory
        containing the ACEpansion plugins to load.
      - Fixed (harmless) typo in a tooltype from CPC464, CPC664 and 464plus
        icons.
      - Simplified internal management of one-shot timers.
      - Fixed a possible race condition when using on-screen break.
      - Fixed a long standing bug where the beam cursor could be shortly (one
        frame long) displayed at a wrong position.
      - Speed up a bit the input stream of the key press injected from the
        "KEYBOARDSTROKE" AREXX command.
      - Fixed some timings on CRTC 0 when register 6 is reprogrammed during the
        last line of the screen (Kevin Thacker test suite).
      - Fixed timing of VSync immediate triggering on CRTC 0 when reprogramming
        register 7 (Kevin Thacker test suite).
      - Improved startup and exit sequences.
      - Added extensive check and warning reporting is case of mistakes in the
        tooltypes/arguments.
      - Changed declaration of internal hooks and MUI custom classes dispatchers
        to fix portability for AmigaOS and AROS.
      - Simplified a bit the reset handler.
      - Made hard sprites window resizable.
      - Reworked rendering MUI custom class internals to make it more modular
        regarding portability.
      - Reworked CRTC 0 emulation in several points (fixes Longshot's part of
        the Amazing Demo and might fix a bunch of other demos on CRTC 0).
      - Fixed several issues regarding vertical adjust handling on CRTC 0 (Kevin
        Thacker Test Suite).
      - Fixed bad 3" floppy disc drive seek speed capability which was
        introduced in version 1.13 (fixes some loaders that did not work anymore
        like the one used in Sappy of Semilanceata).
      - Fixed an issue in memory address handling on CRTC 3 and 4 when register
        1 was greater than register 0 (Kevin Thacker Test Suite).
      - Changed internal timers management for AmigaOS and AROS portability.
      - Added charsets conversion support through codesets.library for AmigaOS
        and AROS portability (still using native charsets.library on MorphOS
        because it is *much* faster).
      - Added support for breakpoints on Maxam and WinAPE BRK opcodes.
      - Added an option in the windows menu to display the BRK opcodes as
        regular Z80 ones or as BRKM (Maxam BRK) and BRKW (WinAPE BRK) in the
        disassembly views.
      - Fixed an internal VSync trigger lock to be reset when CRTC register 7 is
        reprogrammed.
      - Added a "WAIT" switch to the AREXX command "KEYBOARDSTROKE" in order to
        wait for all the keys to be injected.
      - Updated the cross-development examples to use vasmz80_oldstyle Z80
        assembler instead of pasmo.
      - Moved all the scripts (both AREXX and Lua) into one single "Scripts"
        drawer.
      - Added new icons for GUI, drawers, plugins and filetypes thanks to
        Mathieu 'Hwikaa' Delaruelle.

    * Version 1.13 (07.11.2016):
      - Fixed file notification that was not cancelled when a DSK file could not
        be inserted.
      - Fixed a bug when locking ASIC and trying to unlock it again in a row
        (Kevin Thacker test suite).
      - Implemented CRTC and Gate Array write artefact while trying to read on
        its port (Kevin Thacker test suite).
      - Fixed some minor wrong behaviors on both PPI and ASIC PPI emulation
        (Kevin Thacker test suite).
      - Fixed a nasty bug when reading PSG data while no register is selected
        (some innocent memory was returned instead of doing nothing).
      - Fixed IFF1/IFF2 internal Z80 flags being updated too late after EI
        opcode (Kevin Thacker test suite).
      - Fixed some minor CRTCs issues (Kevin Thacker test suite).
      - Reworked internal border handling on CRTC 0 and 2 (no visible changes
        should occur).
      - Added a context menu on the input mode toggle button of the editable
        numbers to select between hexadecimal and decimal (requested by Krusty).
      - Cosmetic changes in memory mapping section of memory editor and
        disassembly windows.
      - Fixed a dead lock when using the disassembly window on addresses at the
        end of the memory.
      - Changed KEYBOARDSTROKE AREXX command to work in a frame-synchronized
        manner and to automatically simulate a press on [RETURN] after each
        input string (RAWKEYPRESS, RAWKEYRELEASE, RAWKEYSTROKE are still fully
        asynchronous).
        Some changes to your AREXX scripts might be required if you used this
        command.
      - Added a hyperlink in the "no HexEdit MUI custom class" message which
        points to the archive on Aminet in order to ease installation of this
        optional library (instructions and link was already provided in ACE
        guide though).
      - Removed numeric pad shortcuts on signs to let the keymap auto adapt
        feature use them like normal additional keys.
      - Added a menu shortcut for the "show/hide interface" feature in order to
        replace the removed one from the numeric pad (the other removed
        shortcuts already had equivalent menu shortcuts).
      - Added step over and step out features with related controls Z80 edit
        window.
      - Added keyboard shortcuts in Z80 edit window to play with step into, step
        over, step out and continue (control + arrows/return).
      - Reverted fix to have the VSync trigger not to start when displaying
        additional lines which was introduced in version 1.12.
      - Fixed endianess issue and added 64-bits support in localization code.
      - Slightly changed the START AREXX command (all stepping modes are now
        accessible).
      - Reworked CRTC editor window layout.
      - Reworked program arguments internal decoding and dispatching to ease
        portability.
      - Fixed Tape2HD wrapper potential issue if disabled during some
        operations.
      - Fixed a data access protection issue between the main task and the
        emulator subtask (no known related bugs).
      - Fixed a MUI event handler that was never removed before disposing the
        application.
      - Removed manual setting of Gate Array version in tooltypes, AREXX
        commands and GUI settings (it was useless since it is automatically
        resynchronized with the selected CRTC type).
      - Joystick plugin is now activated by default.

    * Version 1.12 (16.07.2016):
      - Migration from gcc4 to gcc5 (slightly improved performance).
      - Fixed a bug in CRTC 0 emulation that prevented The Other World 3 Intro
        and Preview #3 from Overflow to work properly (indirectly reported by
        Megachur).
      - Replaced a fix from ACE 1.9 related to border management because it
        fixed Voyage 93 Intro but broke Welcome X 2 Part 1. Now both are working
        on the CRTC 0.
      - Fixed a CRTC 1 timing issue when register 4 was reprogrammed while it
        was evaluated internally at end of screen; it fixes Chany intro of
        Demoniak 5 (reported by Megachur).
      - Fixed reset of CRTC register 9 related counter to 0 when register 9 is
        reprogrammed while the register 4 is equal to 0; it fixes Chany's
        cracktro of Double Dragon (reported by Megachur).
      - Fixed VSync trigger not to start when displaying additional lines; it
        fixes Cuddly - Budbrain (reported by Megachur).
      - Fixed a bug in video address offset management during vertical adjust
        on CRTC 0, 2, 3 and 4.
      - Improved overflow detection in CRTC emulation depending on the CRTC type
        (used by CRTC information window).
      - Added a missing semaphore protection on some internal light pen API
        accesses that might have caused some weird behavior with phasers
        emulation.
      - Added a plugin to emulate the Kempston mouse.
      - Reworked internal design to allow injection of joystick events from
        plugins and bumped plugin API to v2 with a new Joystick() API for
        joystick port I/O emulation.
      - Removed build-in joysticks support and added a joystick plugin (which is
        loosely using the lowlevel.library for now; feel free to create a nice
        one from the new sensors.library!).
      - Added a plugin to emulate the AMX mouse.
      - Finally activated Z80 quantum-based internal context switching (set to
        1/300 seconds).
      - Fixed broken version tag in ACE executable.
      - Fixed Tape2HD wrapper to return a binary file empty file instead of an
        ASCII empty file when opening a folder in order to avoid the firmware
        message "File not opened".
      - Fixed a bug that prevented loading of snapshots using additional chunks
        if they were saved from a CPC using more memory than the configured
        one in ACE.
      - Fixed some internals for 64-bit systems compatibility.
      - Disc drives are now automatically fitting the inserted disc image to
        select between 40/80 tracks drive and single/double side drive (it
        prevents some weak loaders from failing).
      - PNG files for screen grabs and snapshot icons are now saved directly
        using the png.library instead of Reggae.
      - Fixed ASIC border mask that was never stopped if bit 7 of SSCR register
        was cleared during the mask display (fixes BarBar/Benediction blinking
        logo).

    * Version 1.11 (13.09.2015):
      - Fixed mode 2 pixel shift on CPC with CRTC type 4 (AMS40226).
      - Fixed a bug in drawing the blank part on the display which was
        introduced in v1.10.
      - Fixed a (by chance harmless) memory trash in frame buffer management.
      - Reworked internal frame buffer management to simplify the code and make
        compilation faster (because GCC is insanely slow!).
      - Added emulation of mixed border/display words bug at screen start when
        register 6 is set to 0 on CRTC 0 and 2.
      - Added emulation of half-border at end of line on CRTC 0 and 2 (can be
        seen in OUT(Dated)/Semilanceata).
      - Fixed a bug in catalog version handling.
      - Slightly changed tape configuration menu.
      - Fixed snapshot loader to support multiple additional chunks including
        unknown ones.
      - Added a AREXX command to export the current breakpoints in a REXX
        script.
      - Access to the configurable window is no longer forbidden while the
        breakpoint feature is disabled (the pages are just disabled).
      - Added support for a new "configurable breakpoints" chunk in saved/loaded
        snapshots.
      - Trying to load an invalid snapshot no longer resets the emulated CPC.
      - Added a warning on CRTC type mismatch when loading a snapshot.
      - Fixed a bug where the CRTC type stored in the snapshots was always the
        one set at startup and not the currently used one if it was changed at
        runtime.
      - Added a warning on firmware version mismatch when loading a snapshot.
      - Display warning option now works on snapshots warnings as well.

    * Version 1.10 (15/05/2015):
      - Added german catalog thanks to Stefan 'polluks' Haubenthal.
      - Fixed overlay support to avoid a alignment problem that was triggered by
        MorphOS 3.8 (Stefan Blixth and Charlie).
      - Changed internal frame buffer memory management to optimize memory
        usage.
      - Cleaned up PSG emulation code and removed some (unused) alternative
        audio mixing code.
      - Added setting for screen horizontal hold (the small screw behind your
        CTM).
      - Changed internal audio buffer management to be more modular and
        insulated.
      - Added plugin interface in a form of libraries that can add some hardware
        expansion emulation to ACE without requiring any modification into the
        emulator itself.
      - Removed built-in Digiblaster support and implemented it as a plugin.
      - Fixed a bug where the emulation could be frozen a few seconds just after
        having disabled the audio output.
      - Added a tooltype IS=INTERNALSPEAKER and a menu option to mix the audio
        output as if the internal speaker of the CPC was used (not applicable
        on Amstrad Plus).
      - Removed built-in printer support and implemented it as a plugin.
      - Removed DB=DIGIBLASTER, EP=EMULATEPRINTER, PF=PRINTERFILE and
        SLC=SCANLINECOLOR deprecated tooltypes.
      - Enhanced internal interrupt handling to better deal with interrupts
        coming from the new plugin interface.
      - Work-around for a weird reset of the CRTC register 9 related counter
        when register 9 reprogrammed just before the very beginning of a new
        screen.

    * Version 1.9 (30.03.2015):
      - Disabled fire 3 on Amstrad Plus since it is actually not available on
        its joystick port.
      - Changed ESC mapping to the real ESC key of the host keyboard instead of
        the one being at the same location than ESC on CPC.
      - Changed some menu shortcut keys.
      - Added keyboard layout and joystick windows.
      - Added an option to automatically adapt the keymap from the CPC firmware
        to the keyboard layout used on the host (available through a
        AKM=ADAPTKEYMAP tool type and at runtime using the preferences menu).
        This new feature is really nice but pay attention to the fact it could be
        incompatible with some CPC softwares. More over, additional keys which do
        exist on host's keyboard but not on CPC are then mapped in parallel to
        the joystick 0, and "alt" + key combinaison is replaced by "control" +
        key on CPC (there is no "alt" key on CPC). Please note that "shift" +
        "alt" + key combinaison is also not accessible from the CPC side
        (multiple qualifiers is not supported by the CPC firmware).
      - Fixed a small bug in main window device tabs; some buttons could be
        enabled while they should have been disabled.
      - Fixed a stupid bug in memory mapping init that prevented Blue Angel 69
        cartridge version to run (CraigsBar and TotO).
      - Fixed a bug in ASIC splt register handling on Amstrad Plus.
      - Fixed an issue in the emulation of the ASIC bug regarding DMA0 vs Raster
        interrupt mismatch, that prevented Allergy demo from Semilanceata to
        work.
      - Fixed a bug that was introduced in version 1.8 when using random values
        in ASIC and FDC emulation (max value was excluded).
      - Improved CRTC 3/4 emulation (fix several demos that were not properly
        running under CRTC 3/4 emulation; such as Glooms Demo, Camembert 4 and
        Black Sabbath).
      - Tuned some ASIC vs Z80 timings accordingly to the improved CRTC 3.
      - Added NPS=NOPLUSSCREEN tooltype to disable automatic switching to Amstrad
        Plus screen monitor horizontal position setting when Amstrad Plus
        emulation (or CRTC 4) is set.
      - Fixed scanline color option which was affecting overlay mode whereas it
        should be only application in WritePixelArray mode (broken since
        previous version).
      - Simplified internals related to beam management which were related to
        future features that won't come anytime soon.
      - Fixed double-click to toggle full screen that was not working before
        having moved the mouse.
      - Added a new window to view hard sprites palette and content.
      - Activated scale and aspect ratio support also in WritePixelArray mode
        (when no overlay is used). This mode (and some others ;) was already
        implemented in ACE v1.8 but it was not available in the public version
        yet. A side effect is that the (ugly and useless) SLC=SCANLINECOLOR/S
        option will not work anymore in WritePixelArray mode (since it never
        worked in overlay mode too, it's now a void option that will be removed
        later). Also, old not-resizable WritePixelArray rendering code was
        totally removed.
      - Fixed internals to output alpha channel with the proper value when ARGB
        or RGBA pixel mode is set.
      - Slightly changed overlay buffer update sequencing.
      - Fixed potential issues in memory window updates when the ROM/RAM
        configuration was changed from AREXX interface or application menu.
      - Added missing FLASHFIRMWARE AREXX command to change firmware ROM.
      - Fixed a bug in border activation on CRTC 0, 2, 3/4 when register 6 was
        changed to a matching value (fixes Voyage 93 intro on these CRTC).
      - Removed useless manual charset selection menu.
      - Improved conversion between CPC charset and local charset to be based on
        firmware's symbols recognition instead of hardcoded tables, and to work
        with any local charset instead on being limited to ISO-8859-1.
      - Added a window to analyze the DMA channels activity.
      - Added relay sound feedback emulation.
      - Fixed some (almost) harmless bugs in PPI emulation.
      - Fixed some minor issues in Z80 vs PPI vs PSG vs DMA bus accesses
        arbitration.
      - Implemented all possible combined (illegal) instructions within DMA.
      - Added a Lua version of the REXX script for cross-development example.
      - Added NTS=NOTAPESOUND and NTR=NOTAPERELAY tooltypes to disable related
        tape audio feedbacks.

    * Version 1.8 (19.11.2014):
      - Added a check on the screen mode to prevent ACE from being launched on
        an incompatible (8 bit) screen.
      - Added drag and drop support on main window and appicon for disc, tape,
        cartridge and snapshot files.
      - Re-introduced experimental automatic frame skip mode and MS=MAXFRAMESKIP
        tooltype (disabled by default).
      - Added screen grabbing feature and related GRABSPATH tooltype and GRAB
        AREXX command.
      - Added shortcut key F11 to save snapshot at will.
      - Added pixel modes and changed buffer management scheme of the display
        module.
      - Added NW alias for NW=NOWARN=NOWARNINGS tooltype.
      - Save an icon with a screen grab when creating a snapshot (can be
        disabled using the NSI=NOSNAPSHOTICONS tooltype or the preferences
        menu).
      - Minor improvements in the window to show information about the currently
        emulated CPC.
      - Fixed some internals regarding update triggers.
      - Fixed some potential memory trash at double start.
      - Added a NAG=NOANTIALIASEDGRABS tooltype to save raw grabs (also
        available from the preferences menu).
      - Changed catalog versioning which is now bumped to version 10.0 and will
        not change anytime soon; that way translators could provide some
        alternative catalog that will remain compatible with upcoming versions
        of ACE (only the newly introduced texts won't be translated using
        alternative catalogs).
      - Fixed an audio shift in sample computation that was introduced with tape
        integration.
      - Added automatic append ".sna" extension to snapshots saved through the
        file requester if missing.
      - Adjusted some compilation flags and removed some misleading casts in
        the code in order to ease AmigaOS 4.1 port.

    * Version 1.7 (15.06.2014):
      - Added tape emulation through audio files (readonly for now).
      - Added TAPESPATH tooltype to choose the tape audio files default path.
      - Added firmware ROM for French CPC464.
      - Replaced CP/M 0.7 ROM that was wrong in previous packages.
      - Added OS=OSVERSION tooltype to choose the operating system version
        number to use (from 1 to 4). Note that any version of the operating
        system is compatible with any CPC model; even version 4 that was used on
        Amstrad Plus is fully compatible with old generation CPC range. By
        default version 3 is used because most softwares are known to work with
        it.
      - Added NDI=NODISCINTERFACE tooltype to totally disable the floppy disc
        drive interface in order to emulate a stock CPC464 or 464plus.
      - Reworked the Preferences menu to make it easier regarding the new
        options.
      - Added a check to disable the Trojan Light Phazer if it was active when
        switching from Amstrad Plus to Amstrad CPC emulation (Trojan Light
        Phazer is only available on Amstrad Plus).
      - Fixed a bug in the Tape2HD wrapper that resulted in a corrupted
        firmware ROM when it was disabled at runtime.
      - Added TAPE tooltype to specify a tape audio file to be inserted at
        startup.
      - Added TAP=TAPEAUTOPLAY tooltype to activate automatic play when a tape
        is inserted.
      - Moved all system ROM used by default in a "System" drawer rather than
        the "ROMs" drawer which is supposed to be used for user's extension
        ROMs.
      - Fixed a small layout but in the disassembler window.
      - Added AREXX commands related to tape management.
      - Fixed a bug in event handling where the tab systems for the devices
        cought some key pressed prior to the emulator engine.
      - Changed some keyboard shortcuts.
      - Added a CPM=AMSDOS tooltype to configure the build-in disc ROM 7 (this
        is different from ROM7 which represents an external ROM 7).
      - Fixed bad help node reference in screen monitor preferences window.
      - Avoid any other brand than Amstrad when Plus emulation is activated.
      - Added a window to show information and picture about the currently
        emulated CPC.
      - Added some icons for ACE's main drawer and for discs, tapes, cartridges,
        snapshots and ROMs drawers.
      - Added some icons to devices tabs.
      - Added preconfigured project icons to emulate stock CPC464, CPC664,
        CPC6128, 464plus and 6128plus.
      - Added some preferences that were only available through tooltypes into
        the menu so that they can be changed at runtime.
      - Changed the way of obtaining the name of the screen to open in full
        screen mode to always match the application instance.
      - Added a sanity check on the breakpoint command at startup (invalid
        command templates are now ignored).
      - Reworked CLI start mode to better deal with PROGDIR:.
      - Fixed a long standing bug during startup that prevented ACE from being
        launched several times from shell or from project icons.
      - Added a request to let the user choose what to do when ACE in already
        running and a new one was launched.
      - Added AREXX command to control ACE iconification.
      - Added filetypes & icons for Ambient to recognize DSK, CPR and SNA files.
      - Added generic multi-parameter FILES tooltype that auto-recognize
        provided file types and load them in the proper way into ACE.
      - Added LM=LAUNCHMODE tooltype to change the default launch mode of ACE
        executable from "Ask user" to "Single" or "Multiple".
      - Added an access to the help guide through the menu (useful when no HELP
        key is available on the keyboard).

    * Version 1.6 (21.04.2014):
      - Fixed a bug in saved execution address in file header when using the
        Tape2HD wrapper.
      - Fixed start-up colors on Gate Array (PulkoMandy).
      - Fixed swapped grey and green color tables for screen monitor emulation
        in CPC emulation mode (Krashan & PulkoMandy).
      - Fixed light devices menu flags to avoid multi-selection.
      - Fixed a bug in the disassembler for block instructions.
      - Added a missing size field in the file headers created through the
        Tape2HD wrapper.
      - Fixed a bug in CASOutChar implementation of the Tape2HD wrapper
        (PulkoMandy).
      - Improved compability of CASInChar implementation of the Tape2HD wrapper.
      - Fixed inconsistencies in English translation.
      - Fixed vocabulary for some French translations.
      - Reworked main window layout to save space.
      - Added DKB=DKTRONICSBUGS tooltype to activate emulation of the DK'Tronic
        expansion memory bugs (DK'Tronics have trouble managing &C3 type memory
        commutation while an upper ROM is connected and does not handle the
        Amstrad Plus ASIC I/O page shadowing).
      - Added 64K=64KEXPMEMSCHEME tooltype to emulate 64Kio based CPC expansion
        memory scheme instead of common 128Kio based scheme (on 64K based CPC
        the main memory is switched when accessing non-existing memory pages
        instead of the build-in 64Kio expansion RAM of the 128Kio based CPC).
      - Slightly decreased the default size of the main window in overlay mode.
      - Added the current beam position to the video information window.
      - Reworked Z80 and CRTC windows.
      - Added user-resetable counters for microseconds, scanlines and frames.
      - Removed breakpoints from the main windows to put them into the Z80
        window.
      - Added breakpoints on bad HBL/VBL timings (Vanity-proof mode!).
      - Added a real step by step mode (no need to enable/disable it by hand
        anymore).
      - Added STEP switch to the START AREXX command to control the step by step
        mode easily.
      - Added missing notifications for some AREXX command to synchronize the
        GUI.
      - Added support of OSD LED in non-overlay mode.
      - Added a fast forward OSD which reflect the wild speed mode status.
      - Fixed again the last known issue with CRTC 1 emulation which was not
        properly fixed in version 1.5.
      - Added little endian CPUs compatibility (Pulkomandy).
      - Added AREXX command to get and reset the user-resetable counters.
      - Added AREXX command to get the type of the last activated breakpoint(s).
      - Added UBC=USERBREAKPOINTCOMMAND tooltype to provide a command that will
        be executed at each encountered breakpoint.
      - Added watcher mode to the configurable breakpoints.
      - Replaced breakpoints threshold condition by a step matching.
      - Moved video monitor preferences from main window to a separate window.
      - Added possibility to give an optional name to the configurable
        breakpoints.
      - Added possibility to provide a complex condition for breakpoint
        matching.
      - Optimized the breakpoints runtime.
      - Fixed several issues in CRTC 0/2/3/4 emulation.
      - Added on-screen break to request the emulator to pause at a pointed
        position on the screen.
      - Added AREXX command to control on-screen break feature.
      - Removed deprecated opcode breakpoint (replaced by the real step by step
        mode).
      - Moved CPC characters conversion from memory editor, Z80 editor and
        Disassembler windows to the menu (it is now global to any window
        displaying characters from the CPC memory).
      - Added access to all existing conversion tables (automatic, English,
        French, Spanish and Danish) instead of only automatic and English ones.
      - Added menu option to enable or disable the decoding of system RST in
        disassembly displays (it was always active till now).
      - Added Danish firmware ROM (CPC6128 version) to the ACE's package.
      - Added Danish language detection for automatic firmware ROM selection at
        start-up.
      - Improved built-in MUI Custom Class to handle the charset conversion in
        input mode when editing through the chars field.
      - Added possibility to retry when updating a DSK failed because of a
        shared lock.
      - Improved address input class in text mode.
      - Added alphabetic sort to Tape2HD catalog display.
      - Added OSD symbol when emulator is paused.
      - Changed default frame rate from 60 to 10 fps in wild speed mode to
        maximize speed-up.
      - Improved AREXX command KEYBOARDSTROKE to handle the charset conversion
        from local to CPC.
      - Added some safety delay in wild speed mode.
      - Added missing support for HSync cancelling while running on CRTC 0/1.

    * Version 1.5 (07.04.2013):
      - Fixed about box text.
      - Fixed minor bug in start-up error handling.
      - Internal disc image format improvements.
      - Z80 source code clean-up.
      - Added possibility to unplug the drive B (CP/M will detect a single drive
        system and will perform accordingly).
      - Fixed the last known issue with CRTC 1 emulation (CRTC 1 might be
        perfect!).
      - Slightly improved CRTC types 0, 3 and 4 emulation.
      - Activated access to all CRTC types (CRTC 0, 2, 3 and 4 are not accurate
        yet).
      - Activated access to all Gate Array variants except 40008.
      - Management of the color differences between the Gate Array variants.
      - Added controls to change brightness and vertical hold settings.
      - Added CPC+ ASIC full support (including all known bugs regarding DMA,
        interruption management and ASIC emulated PPI).
      - Changed some layouts in the memory editor and memory disassembler
        windows.
      - Added CPC+ ASIC MMU modes access to memory and disassembler windows.
      - Fixed a bug in memory editor and disassembler windows which could try to
        display no longer valid ROMs when using REXX ROM configuration commands
        and custom mappings.
      - Changed the way of allocating the emulator data structure to prevent
        potential stack overflow in the future.
      - Fixed a potential bug in emulator's memory initialization.
      - Optimized Z80 I/O port decoder.
      - Slightly increased the default size of the main window.
      - Improved color rendering of the Gate Array analyzer window (it now
        displays the color really used on the emulator side depending on the
        Gate Array version).
      - Added CPR cartridge image file support (a faked cartridge is smartly
        emulated from the CPC firmware & basic ROMs if none is inserted to ease
        switching between CPC & CPC+ at runtime without useless resets just
        because of different ROM configurations).
      - Added CARTRIDGESPATH tooltype to choose the default path of the
        cartridge image files (CPR). It defaults to "PROGDIR:Cartridges".
      - Added CPR=CARTRIDGE tooltypes to choose the cartridge (CPR) to plug at
        startup (only possible if the emulated CPC is an Amstrad Plus).
      - Added PLUS=CPC+=AMSTRADPLUS tooltype switch to force Amstrad Plus
        emulation at start-up (CRTC and Gate Array tooltypes are then ignored).
      - Fixed a bug that prevented AHI device from being released at exit.
      - Audio management in now handled by the emulator engine class just like
        everything else and any emulator object can now have its own audio
        feedback.
      - Fixed read values on CRTC 3 and 4.
      - Added F9 and F10 key shortcuts to plug/unplug a cartridge.
      - Added light gun emulation through the mouse at request (Trojan Light
        Phazer and Magnum Light Phaser are supported).
      - Added CPC+ ASIC register internal cycle timing management (one pixel
        width split raster update depending on the Z80 update instruction).
      - Added build-in tape to hard disk wrapper to grant access to a share
        directory from the emulated CPC itself (with full speed, long filenames,
        and directory navigation according to the CPC firmware capabilities).
        You can now use directly the content of your hard disk from the CPC tape
        interface and avoid DSK when applicable (only system-friendly softwares
        can be installed). The navigation through the folders is done using the
        OPENIN command (there is no CD command on CPC) in the Amiga way ("/" for
        parent and ":" for root directory). You can of course create files from
        the CPC side, but not directories. You can interrupt a directory
        listing using [ESC] and pause it pressing [CONTROL]. The shared folder
        defaults to "PROGDIR:Share" and can be configured using the TAPE2HDPATH
        tooltype.
      - Added TAPE2HD tooltype to activate the tape to hard disk wrapper by
        default.
      - Fixed some issues with the internal debug logging system.
      - Added error request when tooltypes are invalid.
      - Fixed an issue with flickering display in wild speed mode (this bug was
        introduced with version 1.4).
      - Fixed quit confirmation window that could lock when several instances of
        ACE were running simultaneously.
      - Added CPC+ support to snapshots (compatible with the standard CPC+ chunk
        of the snapshot format v3).
      - Added ACE signature in saved snapshots.
      - Added CARTRIDGESKEEPEXTROM tooltype to be able to disable the feature of
        ACE which automatically disable any external ROM when inserting a
        cartridge.
      - Added INSERTCARTRIDGE, EJECTCARTRIDGE, GETCARTRIDGDENAME, CRTC and
        GATEARRAY AREXX commands (RickD).
      - Added AMSDOS-like automatic extension fallback at files loading on the
        Tape2HD wrapper to ensure better compatibility with installed softwares.

    * Version 1.4 (18.07.2012):
      - Improved automatic frame skipping.
      - Improved internal events handling.
      - Optimization of the Gate Array emulation code.
      - Added specific emulation of the Gate Array 40007, 40008, 40010 and their
        reimplementations in form of ASIC 40226 and 40489 (only the 40007 &
        40010 are available in the public version at the moment).
      - Fixed a potential issue in the emulation speed regulation (PowerBook G4).
      - When applicable, the audio device is now used to regulate the emulation
        speed to prevent a synchronization issue (PowerBook G4).
      - Removed the audio task (audio management is now simply done in the
        emulation task).
      - Added a frame double buffering to avoid a rare race condition where the
        displayed frame could be damaged by the one in computation.
      - Video frame buffer memory is now directly handled by the emulation task
        instead of the GUI task.
      - Remove the FRAMESKIP option which was really never working properly and
        became useless with the new internal events handling mechanism
      - Added a MANUFACTURER option to choose the brand of the CPC to emulate
        within ISP, Triumph, Saisho, Solavox, Awa, Schneider, Orion and Amstrad
        (Amstrad is used by default, except for German speaking countries where
        Schneider is preferred).
      - Fixed the Gate Array analyzer window which could have a wrong size.
      - Added mapping of "enter" from the CPC numeric keypad on "F12" (useful
        for keyboards without this key on the keypad; for example the
        PowerBook G4).
      - HexEdit.mcc MUI class is now optional (advanced windows which require it
        will just suspend some of their displays if the class is missing).
      - Fixed a bug introduced while migrating from gcc 2 to gcc 4 which
        prevented multiple instances of ACE being in full screen mode at the
        same time.
      - New more user-friendly icon.
      - Fixed some typos in French and English catalogs (RickD).

    * Version 1.3 (14.05.2012):
      - Fixed default font when a custom full screen mode is configured.
      - Avoid opening of full screen larger than the screen resolution.
      - Added again key repeat for shortcuts.
      - Fixes in DSK extensions management.
      - Improved malformed DSK detection.
      - Removed on-the-fly GAP#3 and tracks size recalculation on complex cases.
      - Fixes in FDC read track, read data and write data commands.
      - Added a delay in case of disc swapping without a prior ejection (B.A.T.,
        Fugitif, Crime),
      - Added support of the DSK extension "Offset-info" from Simon Owen in
        read and write modes.
      - Added a confirmation request when a is disc containing modifications
        that cannot be written with the original DSK format/extensions.
      - Fixed a FileInfoBlock misusage in the import DSK routine.
      - Fixed a bug in the Gate Array line counter introduced with version 1.2.
      - Fixed a bug in CRTC vertical synchronization trigger (improves Madness
        Demo),
      - Fixed a bug in the Gate Array horizontal synchronization introduced with
        version 1.2 (The Demo).
      - Added a lock on the video display to avoid MUI push method overhead.
      - Slight improvement in automatic frame skipping mechanism.
      - Fixed a timing bug with OUTD and OUTI when addressing the Gate Array
        (Beb).
      - Added a tool type and a menu option to activate the fast disc emulation
        mode (warning: this option is not compatible with some softwares).
      - Changed the "Color" gadget by a "Lamp" gadget for the disc activity LED.
      - Improved internal MUI notifications.
      - Fixed a bug in I/O port breakpoints management.
      - Simplified CRTC emulation code.
      - Improved offset management on CRTC 1.
      - Added interlaced mode support (register 8).
      - Simplified Gate Array, PSG and video information windows.
      - Changed triggering of offset CRTC register updates within the CRTC
        emulation (Dream Demo End, Impossible).
      - Full management of partial pixels and display artefacts during
        horizontal and vertical synchronization start/end (Camembert 4, Dream
        Demo 6, Dream Demo End, Madness Demo).
      - Fixed a bug in vertical synchronization trigger when vertical total
        adjust is on-the-go (3D Scroll, Take It Easy).

    * Version 1.2 (29.01.2012):
      - Migration from gcc 2 to gcc 4.
      - Double-click support in the main window to toggle full screen mode.
      - Add of a disassembler based on the work of Cristian Dinu (support all
        opcodes including undocumented and custom Amstrad firmware RST).
      - Improved Z80 editor window (view of the code from PC and abstract of the
        stack from SP)
      - Improved memory editor window.
      - New fix in CRTC 1 emulation when registers 12 & 13 are modified while
        the additional lines (R5) are displayed (phi2x).
      - Fix of border disabling on CRTC 1 when register 6 is reset at a non-zero
        value during the first line of a split-screen (phi2x).
      - Fix VBL activation trigger while the additional lines (R5) are
        displayed.
      - Improved PSG analyzer, Gate Array analyzer and CRTC editor windows.
      - Add of a new full features disassembler window (easy navigation through
        the code branches, syntax highlight, breakpoints, ...).
      - Better internals between CRTC and Gate Array modules.
      - Better internal notification system between GUI and emulator.
      - Added an fast toolbar for breakpoints configuration in main window.
      - Disabled menu item not active when breakpoints a not enabled.
      - Added a breakpoint management window.
      - Added an AREXX command to configure advanced breakpoints.
      - Better keyboard management.
      - Added on-the-fly charset conversion between local and CPC code page.
      - Added Spanish and Danish v1.0 firmware ROMs in ACE archive.
      - Fix a bug in PSG register selection (phi2x).

    * Version 1.1 (18.09.2011):
      - Added Gate Array's half cycle support (synchronization between Gate
        Array, CRTC and Z80 is now perfect).
      - Fixed sync/display alignment for CRTC 0, 1 & 2 (it was right only for
        CRTC 3 & 4).
      - Fix in CRTC 1 emulation when registers 12 & 13 were modified while
        vertical adjust was managed (R5).
      - Slight improvement in CRTC 0, 2, 3 & 4 emulations (only CRTC 0 & 1 are
        actually activated in the public version).
      - Fix an interrupt management issue when a VSync started while a HSync was
        already running.
      - Fixes in the English translation (Stefan A. Haubenthal).
      - Improvements in the French version.
      - The Graph.mcc class from MorphOS 2.x is now optional (Stefan A.
        Haubenthal).

    * Version 1.0p1 (16.08.2011):
      - Omitting arguments OFFSCREENCOLOR or SCANLINECOLOR generated a hit in $0
        (Grzegorz Kraszewski).
      - Some bad hits occurred on foreign systems when no catalog was matching
        the locale (Grzegorz Kraszewski).

    * Version 1.0 (15.08.2011):
      - First public version.


Converted using GuideML 3.16