The acidulous CPC/CPC+ emulator
by Philippe 'OffseT' Rimauro
For the latest version, check
An Amstrad CPC emulator? Again?
Yes! Yet another CPC emulator! Anyway, ACE is different.
ACE is not based on any existing emulator and was coded from scratch, using a
real CPC as reference in order to provide the best Amstrad CPC emulator ever.
The current version of ACE does not offer all the expected features yet.
Nevertheless, almost all of the Amstrad CPC and Amstrad Plus games and demos are
working perfectly; actually, the quality of the emulation is already superior to
what the best CPC emulators on PC/Windows can produce (sorry guys, only Amiga
makes it possible! Again...).
In addition to the high quality emulation, ACE features full screen and overlay
display, editor and analyzer windows for all emulated CPU and chipsets,
video recording, advanced breakpoints management, a very powerful set of AREXX
commands for cross-development, a plugin interface... and much more...
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
- Removed one remaining call to CPC+ ASIC stuff in CRTC 4 emulation
- 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
- Added support of symbols import from files containing a list of EQUs in the
- 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
- Reworked CPC+ DMA wait state management to better match actual internal
- 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
- 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 info bubbles.
- Added support for video recording (fast hard disk I/O and lot of space
- Added a control button to start or stop video recording.
- Added "RECORDPATH" tooltype to change the video recording path (defaults to
- 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
- 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 video).
- Fixed non-localized short keys in requesters (reported by Stefan 'polluks'
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
- 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
- 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
- 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
- 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
- Fixed an internal VSync trigger lock to be reset when CRTC register 7 is
- 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
Version 1.13 (07.11.2016)
- Fixed file notification that was not cancelled when a DSK file could not be
- 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
- 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
- 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
- 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
- Reworked CRTC editor window layout.
- Reworked program arguments internal decoding and dispatching to ease
- 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
- 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
- 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
- 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
- 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 optional 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
- 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
- Fixed a bug in catalog version handling.
- Slightly changed tape configuration menu.
- Fixed snapshot loader to support multiple additional chunks including
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
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 frameskip mode and MS=MAXFRAMESKIP
tooltype (disabled by default).
- Added screen grabbing feature and related GRABSPATH tooltype and GRAB
- Added shortcut key F11 to save snapshot at will.
- Added pixel modes and changed buffer management scheme of the display
- 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
- 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
- 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 (read only 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
- 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
- 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
- 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
- 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
- Fixed a bug in CASOutChar implementation of the Tape2HD wrapper
- Improved compatibility 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'Tronics
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 64Kio 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
- Added STEP switch to the START AREXX command to control the step by step
- 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
- 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
- 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
- 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
- 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, 2 and 3 emulation.
- Activated access to all CRTC types (CRTC 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
- 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)
- Internal improvements.
- Added emulation of the different Gate Array versions
(ACE is the first and only CPC emulator to propose this!).
- Fixed a potential issues in the emulation speed regulation.
- Remove useless FRAMESKIP option.
- Added a MANUFACTURER option to choose the brand of the CPC to emulate.
- 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).
- HexEdit.mcc MUI class is now optional.
- Fixed a bug 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.,
- 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
- 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
- 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 gcc2 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
- 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 argument OFFSCREENCOLOR or SCANLINECOLOR generated a hit in $0
- 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.
MorphOS 2.5 or better (not tested with MorphOS 1.x),
2MB of free hard disk space,
10MB of free RAM,
G4 at 700MHz.
Just copy the ACE drawer where you want and execute it.
See documentation in the Help drawer for more information.
See documentation in the Help drawer.
No tips yet!
OffseT of Futurs' <offsetcpcscene.net>